在我的fortran代碼中,我試圖包含一個DO循環,但最後我得到了「DO循環或BLOCK IF未關閉」。如果在INCLUDE語句之後的任何其他DO循環打開,它會將它們視爲嵌套循環,這表明包含的開放DO行被正確解釋,但不是END DO語句。我已經將包含的代碼簡化爲簡單的代碼,以確保它是循環,而不是循環中的語句給出問題。控制變量在DO循環之前聲明。在包含文件中使用Do-Loop
DO A = 1,3
END DO
Fortran77不允許INCLUDE文件中的DO循環?
我使用gfortran編譯器,如果它變化很大。
編輯:語法
EDIT2: 我使用GCC 4.6.2。現在要注意的是,如果這有所作爲,gfortran將從PSCAD生成的makefile運行。我可以提供有關該信息是否恰當的信息。
下面是遇到此問題的代碼:
TEST.F:
SUBROUTINE TESTFX()
INTEGER A
INCLUDE '../HDR.INC'
END
HDR.INC:
DO A = 1,3
END DO
EDIT3:在代碼編輯拼寫錯誤,並從子程序返回刪除。
我猜那些流浪引號結束和結束後做是無意的。包含實際上是在自己的路線上?我會做一個清理編輯,但也許東西是你的問題。 – agentp
什麼是您獲得的錯誤消息的完整和準確的文本?像喬治一樣,我認爲格式和引號不在您的原始來源中。 –
「TEST.f的第6行出錯:DO循環或BLOCK IF未關閉」是錯誤。另外,我做了一個假設PSCAD一直使用gfortran,這是不正確的。 PSCAD實際上是使用f2c編譯的,我不確定f2c是否使用g77,它與makefile所調用的f2c位於同一目錄中。這最終成爲編譯語句:「f2c.exe -r8 -w -Nn5000 -NL400 -Nx400 -I」C:\ PROGRA〜1 \ PSCAD42 \ emtdc \ gnu \ inc「-I」C:\ PROGRA〜1 \ PSCAD42 \ emtdc \ gnu \ windows「-g TEST.f」。 –