このFortranコードの意味:
IF (J1-3) 20, 20, 21
21 J1 = J1 - 3
20 IF (J2-3) 22, 22, 23
23 J2 = J2 - 3
22 CONTINUE
私は古いプロジェクトで見たことがありますが、数字(ラベル)が付いたこのIFが何を意味するのかわかりません。
これは、FORTRAN 77の算術if
ステートメントです。FORTRAN 77 仕様 (強調は私のもの) から適応:
算術
IF
ステートメントの形式は次のとおりです。
IF (e) s1 , s2 , s2
ここで:
e
は整数、実数、または倍精度の式です
s1
、s2
、およびs3
はそれぞれ、算術ステートメントと同じプログラム単位に現れる実行ステートメントのステートメント ラベルですIF
。同じ算術ステートメントに、同じステートメント ラベルが複数回出現する場合がありますIF
。算術
IF
ステートメントを実行すると、式が評価e
され、その後に制御が移ります。、、 またはで識別されるステートメントは、 の値がそれぞれ 0 未満、0 に等しい、または 0 より大きいため、次に実行されます。s1
s2
s3
e
あなたの質問の例では、上記の最後の文から、
J1-3 < 0
ステートメント 20 が実行される場合J1-3 = 0
文20も実行されるJ1-3 > 0
ステートメント 21 が実行される場合編集:これを書くための現代的ではるかに読みやすい方法は次のようになります:
if (J1-3 > 0) J1 = J1 - 3
if (J2-3 > 0) J2 = J2 - 3