我一直負責維護一些傳統的fortran代碼,並且在使用gfortran編譯時遇到了麻煩。我已經寫了Fortran 95的相當數量的,但是這是我與Fortran 77中第一次經歷的這段代碼是有問題的一個:這個Fortran '77代碼片段有什麼問題?
CHARACTER*22 IFILE, OFILE
IFILE='TEST.IN'
OFILE='TEST.OUT'
OPEN(5,FILE=IFILE,STATUS='NEW')
OPEN(6,FILE=OFILE,STATUS='NEW')
common/pabcde/nfghi
當我gfortran file.FOR
編譯,所有行開始與common
聲明都是錯誤的(例如,對於後面的每一行,如果是Error: Unexpected COMMON statement at (1)
,直到達到25的錯誤限制)。我編譯-Wall -pedantic
,但修復警告並沒有解決這個問題。
瘋狂的事情是,如果我註釋掉所有4條線開始IF='TEST.IN'
,程序編譯和按預期工作,但我必須註釋掉所有這些的。留下他們中的任何一個都不會給我帶來同樣的錯誤,從common
聲明開始。如果我註釋掉common
聲明,我會得到相同的錯誤,從下面一行開始。
我在使用gfortran
的OS X Leopard(不是Snow Leopard)。我用這個非常系統來編寫Fortran 95程序,所以理論上編譯器本身是理智的。這段代碼到底在做什麼?
編輯:與G77編譯給出:
test.FOR: In program `MAIN__':
test.FOR:154:
IFILE='TEST.IN'
1
test.FOR:158: (continued):
common/pabcde/nfghi
2
Statement at (2) invalid in context established by statement at (1)
爾,在(1)成立什麼情況下?
啊,當然。我想到了這一點,但我需要將可執行語句向外移動,並且最初並沒有將它們移動得足夠遠。閱讀規範幫助解讀了我也遇到的其他一些錯誤。 – notJim 2010-05-16 21:05:30