回 帖 发 新 帖 刷新版面

主题:SYSTEMQQ

请问 SYSTEMQQ函数在Ivf 和Cvf里使用方法不同吗?
我在cvf下使用不出错,但在Ivf里面就报错:错误    
 error #6552: The CALL statement is invoking a function subprogram as a subroutine.   [SYSTEMQQ]

回复列表 (共5个回复)

沙发

call systemqq

不对

应该是

返回值 = systemqq

这样。

在 CVF 下和 IVF 都一样,只不过 CVF 允许放弃返回值,当做 call,而 IVF 不允许。

板凳


果然是

3 楼


请问下怎么用SYSTEMQQ查询某一类型如.dat文件的个数

4 楼

我没用 SystemQQ 实现过这个功能。

不知道能否做到,请其他学兄回答吧。

我是用自己写的另一个函数实现,需要在 VF 系列编译器上编译,其他编译器不保证能正常编译和使用。

[quote]
Program Main
  Implicit None
  integer N  
  Call DoWithWildcard( '*.dat' , N )[color=red] !//此处修改通配符[/color]
  write(*,*) '共有',N,'个dat文件!'  
  
contains

  Subroutine DoWithWildcard(cWildcard,iTotal,callback)
  !// 通配符循环程序 DoWithWildcard
  !// 在 Windows 编译器 Visual Fortran 系列上通过编译
  !// 臭石头雪球 2007 年 www.pfan.cn
    Use IFPort , only : GetFileInfoQQ , GetLastErrorQQ , FILE$INFO , FILE$LAST , FILE$ERROR , FILE$FIRST , ERR$NOMEM , ERR$NOENT , FILE$DIR
  [color=red]!//此处可能是 Use DFPort 或其他,视不同编译器而不同[/color]
    Implicit None
    optional callback
    Interface 
      Subroutine callback( cFile , iLoop )
        Character( Len = * ) , Intent( IN ) :: cFile
        Integer , Intent( IN ) :: iLoop
      End Subroutine callback
    End Interface
    Character( Len = * ) , Intent( IN ) :: cWildcard
    Integer , Intent( OUT ) :: iTotal
    Type (FILE$INFO) :: stInfo
    Integer(4) :: iWildhandle , iLength
    iWildhandle = FILE$FIRST
    iTotal = 0
    Do While (.TRUE.)
        iLength = GetFileInfoQQ( cWildCard , stInfo , iWildhandle )
        If (( iWildhandle == FILE$LAST) .OR.( iWildhandle == FILE$ERROR )) then
          Select Case (GetLastErrorQQ())
          Case (ERR$NOMEM)
            iTotal = - 1
            return
          Case (ERR$NOENT)
            return
          Case Default
            iTotal = 0
            return
          End Select
        End If
        If ( (stInfo%permit.AND.FILE$DIR) == 0 ) then
          If ( present(callback) ) call callback( Trim(stInfo%Name) , iTotal + 1 )
          iTotal = iTotal + 1
        End If
    End Do
  End Subroutine DoWithWildcard

End Program Main
[/quote]

5 楼

谢谢,你的函数在IVF11可以用

我来回复

您尚未登录,请登录后再回复。点此登录或注册