この単純な FORTRAN 77 プログラムをコンパイルして実行します。
program test
write(6,*) '- - - - - - - - - - - - - - - - - - - - - - - - - - ',
& '- - - - - - - - - - - - - - - - - - - - - - - - - -'
write(6,'(2G15.5)') 0.1,0.0
end
gfortran
またはf95
出力は次のとおりです。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
0.10000 0.0000
pgf77
それは次のとおりです。
- - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - -
0.10000 0.00000E+00
およびg77
またはifort
:
- - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - -
0.10000 0.0000
いくつかの疑問が生じます。
0.0 が 5 桁ではなく 4 桁で出力されるのはなぜ
G15.5
ですか? これは仕様に準拠していますか?そして、なぜpgf77
それを違うように書くのですか?最後の 3 つのコンパイラの行の改行は、出力行の長さの制限によるものだと思い
- - - - - -
ます...この制限を増やす方法、またはコンパイル時に単一行の書き込みを強制する方法はありますか?
ちなみに希望出力は
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
0.10000 0.00000
上記のいずれにも一致しません。