1

この単純な 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 

いくつかの疑問が生じます。

  1. 0.0 が 5 桁ではなく 4 桁で出力されるのはなぜG15.5ですか? これは仕様に準拠していますか?そして、なぜpgf77それを違うように書くのですか?

  2. 最後の 3 つのコンパイラの行の改行は、出力行の長さの制限によるものだと思い- - - - - -ます...この制限を増やす方法、またはコンパイル時に単一行の書き込みを強制する方法はありますか?

ちなみに希望出力は

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    0.10000         0.00000

上記のいずれにも一致しません。

4

1 に答える 1