0

こんにちは、これは Chapman の著書 Fortran 95-2003 for Scientific and Engineer(3ed) の 195 ページに記載されているコードです。

WRITE (*,100) index, time, depth, amplitude, phase

100 FORMAT('1',t20,'results for the test number  ',i3,///,&
      1x,'time      = ',f7.0/, &
      1x,'depth     = ',f7.1,' meters',/, &
      1x,'amplitude = ',f8.2/ &,
      1x,'phase     = ',f7.1)

それを実行するために、残りのステートメントを完了しました

program test
implicit none

INTEGER :: index = 10
real:: time=300.0,depth=330.0,amplitude=850.65,phase=30.0
WRITE (*,100) index, time, depth, amplitude, phase

100 FORMAT('1',t20,'results for the test number  ',i3,///,&
      1x,'time      = ',f7.0/, &
      1x,'depth     = ',f7.1,' meters',/, &
      1x,'amplitude = ',f8.2/ &,
      1x,'phase     = ',f7.1)

end program test 

gfortran でコンパイルすると、次のエラーが発生します。

test.f90:12.31:

      1x,'amplitude = ',f8.2/ &,
                               1
Error: Unexpected element '&' in format string at (1)
test.f90:13.8:

      1x,'phase     = ',f7.1)
        1
Error: Non-numeric character in statement label at (1)
test.f90:13.9:

      1x,'phase     = ',f7.1)
         1
Error: Invalid character in name at (1)
test.f90:7.12:

WRITE (*,100) index, time, depth, amplitude, phase
            1
Error: FORMAT label 100 at (1) not defined

ここで何が起こっているのですか?ここで別のスレッドを見たことがあります。ここで、質問は fortran の制御文字に関するものでした。Chapman は、Fortran 2003 で制御文字の機能が削除されたことに言及せずに、彼の本の中でそれについて議論しています。

4

1 に答える 1

4

「アンパサンド = 」リテラルを含む書式指定の行のアンパサンドの後にカンマがあります。文字以外のコンテキストで継続文字として機能するには、アンパサンドは行の最後の非空白文字、非コメント文字でなければなりません。

コンマはおそらくアンパサンドの前にあるはずです。

(アンパサンドは継続文字として扱われないため、コンパイラはそれがフォーマット仕様の一部であると見なします。これが最初のエラーです。次の行が新しいステートメントの開始に使用されるため、後続のエラーが発生します。)

于 2012-09-14T05:51:25.953 に答える