2016-10-01 93 views
1

我试图编译一个很老的代码OPEN语句错误,但我得到这个错误而编译代码旧Fortran代码,并获得使用GNU

Error: Syntax error in OPEN statement at (1) 

代码:

 WRITE(LUTTO,'('' TYPE NAME OF FILE CONTAINING INPUT : '',$)') 
C  READ (LUTTI,'(Q,A)') NCHAR,FILNAM 
     READ (LUTTI,'(A)') FILNAM 
     NCHAR = len_trim(FILNAM) 
C            ----- OPEN DATA FILE ----- 
     print *, "NCHAR" 
     OPEN(UNIT   = LUINP, NAME = FILNAM(1:NCHAR), 
    $  STATUS   = 'OLD', RECL =    80 , 
    $  CARRIAGECONTROL= 'LIST', ERR =   9900) 
+0

我们不能帮助你,除非有一个最小的工作示例。来自gfortran docs的 – jlokimlin

+0

“一些Fortran编译器,包括g77,让用户声明OPEN(... NAME =)。这是无效的标准Fortran语法,不受gfortran支持。OPEN(... NAME =)应该替换为OPEN(... FILE =)。“ – agentp

+0

'CARRIAGECONTROL'也不是标准的。我相信“LIST”请求没有马车控制,这是现代编译器在默认情况下所做的,所以只是摆脱它。你的编译器不能提供更多信息错误信息。 FWIW车道控制系统会在每条线路的起点放置一个额外的空白区域,您可能甚至可能不会注意到这一点。 – agentp

回答

2

name = ...在公开声明中是无效的

尝试文件= ...而不是

+0

我刚才在GNU文档中看到了这一点。我认为它现在与马车控制或err – Hans

+0

有关,您应该删除“carriagecontrol = list”以及“recl = 80”,这些都不是必需的。关于err = 9900,你只需要检查你的程序中是否存在标签9900。 –