生成FORTRAN程序时出错

生成FORTRAN程序时出错,fortran,fortran90,Fortran,Fortran90,这是我在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,nMaxFile

这是我在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 非法使用常量“D Y N S I M” loc参数的数目或类型非法 非法使用常量“dat” 不匹配的ENDSUBROUTINE语句
loc()
函数是非标准的,但是短搜索告诉我它的参数不能是文字常量。
loc()
函数是非标准的,但是短搜索告诉我它的参数不能是文字常量