user991852
user991852

Reputation: 107

getting error on building a FORTRAN program

this is my one subroutine in fortran program

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

but i am getting error like..

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

Upvotes: 1

Views: 256

Answers (1)

eriktous
eriktous

Reputation: 6659

The loc() function is nonstandard, but a short search tells me that its argument can not be a literal constant.

Upvotes: 1

Related Questions