0

私はいくつかのレガシーFortranコードを維持するという任務を負っていますが、gfortranでコンパイルするのに問題があります。私はかなりの量のFortran95を作成しましたが、これは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始まるすべての行がエラーになります(たとえば、25エラー制限に達するまでの後続の各行)。でコンパイルしましたが、警告を修正してもこの問題は修正されませんでした。commonError: Unexpected COMMON statement at (1)-Wall -pedantic

クレイジーなことは、で始まる4行すべてをコメントアウトするとIF='TEST.IN'、プログラムは期待どおりにコンパイルおよび動作しますが、すべてコメントアウトする必要があるということです。それらのいずれかをコメント化しないままにしておくと、commonステートメントから始まる同じエラーが発生します。ステートメントをコメントアウトするcommonと、次の行から始めて同じエラーが発生します。

私はOSXLeopard(Snow Leopardではない)を使用してgfortranいます。私はこのシステムをgfortranFortran95プログラムを作成するために広範囲に使用したので、理論的にはコンパイラー自体は正気です。このコードで何が起こっているのでしょうか?


編集: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)でどのような文脈が確立されていますか?

4

1 に答える 1

4

COMMONFORTRAN 77 では、実行可能なステートメントの下にステートメントを配置することはできないと思います。仕様のセクションを参照してください。3.5。COMMON実行可能なステートメントの前に、ステートメントをプロシージャの先頭近くに移動するだけです。

于 2010-05-16T20:56:50.970 に答える