2016-10-01 67 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。 –