2011-01-22 6 views
2

ご挨拶。 FortranのIF文が何をしているのか誰にでも分かりますか?Fortran - 古い(1972年)コードからの2分岐IF文

IF(IJJ-2) ,409,411 

同じプログラム内にいくつかの違いがあるので、誤植とは思われません。私はそれが単に "0より小さい"ブランチを次のexectutbaleステートメントにデフォルト設定した標準的な算術IFであると仮定しましたが、それについてはわかりません。私は、このコードは1970年から1972年頃にCDC 6600でホストされたと思います。私はFORTRAN 77のサブセット標準を調べましたが、3つのステートメント言語をすべて指定しなければならないことを指定しています。どんなアドバイスでも大歓迎です。

答えて

1

宛先の行番号が0より小さい、等しい、そしてより大きいと思います。 これは標準のfortranのようには見えませんが、欠落している行番号は になります。

5

これは算術IF文と呼ばれ、Fortran 90および95では廃止されています。しかし、私はインテルFortranコンパイラがそれをサポートしていることを知っています。かっこ内の式がゼロより小さい場合、実行は最初のラベルに移ります。 0の場合は2番目のラベル、0の場合は3番目のラベルに移動します。紛失したラベルの場合に何が起こるのか分かりません。ただ落ちると仮定しています。

IF (IJJ == 2) THEN 
    GOTO 409 
ELSEIF (IJJ > 2) THEN 
    GOTO 411 
ENDIF 
0

これは間違いである非標準のFortran:

だからあなたのIF文は、として、現代のFortranに変換します。私はチェックし、インテルとGFortranの両方のコンパイラはそれを受け入れません。多くのFortranコンパイラは、F90が非標準の拡張機能を持つ前に戻ってきました。 DECコンパイラには多くの拡張機能があったことを覚えています。そしてこれはセールスポイントに使われました!また、これらの拡張機能を使用したコードは別のコンパイラに移植することができなかったため、顧客ロイヤルティの確保にも役立ちました。あなたの最良の賭けは、コンパイラに付属しているマニュアルを見つけることができれば、これを記録するべきです。がんばろう!

歴史的なメモとして、当時の企業の中には、彼らの芝生に嫉妬を感じていたことと、非標準的な拡張が彼らに与えた利点は、意図的にFortranの次のバージョン(最終的にF90と呼ばれた)。これにより、他の言語が支配的になり、Fortranの崩壊を急いでしまった。

+0

拡張子は、このタイプのif文、または最初のラベルがないことを意味しますか?算術IFは依然としてFortran 2008に含まれているためです。 –

+0

この回答は、非標準の不足している最初のラベルを再確認しています。算術IFは標準ですが、現在は廃止されています。 – DavidS

関連する問題