0

非常に古い FORTRAN コードを調べようとしていたところ、次のステートメントに出くわしました。

IF (XKJ.GT.ACCY) THEN

コード全体を調べたところ、' ACCY 'の宣言が見つかりませんでした。組み込みの変数/定数/関数であると想定していますが、定義を見つけることができませんでした。私はそれを「ググって」、同様の表現を持つ他のFORTRANサンプルに出くわしました(ただし、ACCYの定義はありません)。

FORTRAN コードを調べてから 20 年が経ちました。「ACCY」とは何か知っている人はいますか?

4

2 に答える 2

7

これは間違いなく、浮動小数点計算を測定するために使用される「精度」を保持する変数です。これは、一部の浮動小数点数の不正確な表現のためにドリフトする可能性があります。Fortran では、コンパイラ オプション (または IMPLICIT ステートメント) を使用してこの機能を有効にしない限り、変数を宣言する必要はありません。AH と OZ で始まる変数は、自動的に REAL 変数と見なされます (IN は整数です)。問題のコンパイラは、変数のメモリをゼロにする場合としない場合があるため、どこかに割り当てられていない限り (通常は COMMON ブロック)、ゼロまたは任意の値になる可能性があります。

于 2009-05-01T14:24:05.027 に答える
3

技術的には、Fortran には予約語やキーワードはありません。ただし、キーワードを識別子として定義すると、非常に混乱します。暗黙的に定義されているように聞こえますが、これは ACCY が 0 になる最初の使用です。

このコード スニペットが定義されているサブルーチンには、IMPLICIT NONEが定義されていますか? そうでない場合は、オンにして、コンパイラが ACCY に定義されていないというフラグを立てるかどうかを確認します。フラグが付けられている場合は、他の場所で見つけられなかった理由がわかります:)

于 2009-05-01T14:21:50.853 に答える