这是我在fortran程序中的一个子程序
subroutine selfile(name)
! call Window dialog to select file
use dfwin
type T_OPENFILENAME
sequence
real lStructSize,hwndOwner,hInstance,lpstrFilter,lpstrCustomFilter,nMaxCustFilter,nFilterIndex,lpstrFile,nMaxFile,nMaxFileTitle
real lpstrInitialDir,lpstrTitle,Flags,lpstrDefExt,lpfnHook,lpTemplateName
end type T_OPENFILENAME
type(T_OPENFILENAME):: ofn
character*100 filter_spec
character*512 file_spec
integer status
character*(*)name
! set filter specification and string to return the file specification.
file_spec=''C
filter_spec = 'Data Files'C//'*.dat'C// &
'Text Files'C//'*.txt'C// &
'All files'C//'*'C//''C
ofn%lStructSize = SIZEOF(ofn)
ofn%hwndOwner = NULL
ofn%hInstance = NULL
ofn%lpstrFilter = loc(filter_spec)
ofn%lpstrCustomFilter = NULL
ofn%nMaxCustFilter = 0
ofn%nFilterIndex = 1
ofn%lpstrFile = loc(file_spec)
ofn%nMaxFile = sizeof(file_spec)
ofn%nMaxFileTitle = 0
ofn%lpstrInitialDir = NULL
ofn%lpstrTitle = loc('D Y N S I M'C)
ofn%Flags = OFN_PATHMUSTEXIST
ofn%lpstrDefExt = loc('dat'C)
ofn%lpfnHook = NULL
ofn%lpTemplateName = NULL
end
! Call GetOpenFileName and check status
status = GetOpenFileName(ofn)
if (status == 0) then
name=''
else
name=file_spec
endif
end subroutine selfile
但我得到的错误就像..
Illegal use of constant "D Y N S I M" Illegal number or type of arguments to loc Illegal use of constant "dat" Unmatched ENDSUBROUTINE statement
答案 0 :(得分:1)
loc()
函数是非标准的,但是短搜索告诉我它的参数不能是文字常量。