古い FORTRAN 77 プログラムを使用していて、奇妙なバグに遭遇しました。現状では、コードは正常に実行されているように見え、1 秒もかからずに終了します。しかし、それは私が興味のない無関係な出力を大量に生成します。そのため、ソースを調べて、余分な WRITE ステートメントをすべてコメントアウトしました。
いくつかの WRITE ステートメントをコメント アウトすると、コードの実行が少し遅くなるように見えます (それについてはよくわかりませんが、忙しくするためにスクロールするテキストの行数が少ないため、遅く見えるだけかもしれません)。 . そして、余分な WRITE ステートメントの最後の部分をコメント アウトすると、プログラムがハングするだけで、実行が終了しません。
さて、論理的には、WRITE ステートメントをコメントアウトしても、プログラムの残りの部分は完全に機能するはずですよね? これは、コードのどこかに別の問題が潜んでいて、WRITE ステートメントが何らかの形でそれを隠していることを意味していると思います (バッファをクリアしているのでしょうか?)。
Fortran を知っている同僚 (数少ない同僚の 1 人) は、私が文ラベルをうっかりコメントアウトしたのではないかと示唆しましたが、そうではありません。Fortran を知らないが、一般的なプログラミングに非常に熟練している別の同僚は、ポインターの問題のように聞こえると示唆しましたが、私が知る限り、範囲外のインデックスを関数に渡したことはありません。配列であり、このような問題が他にどのように発生するかはわかりません。
PowerPC Mac コンピュータで g77 を使用してプログラムをコンパイルしています。