ナビゲーション:前へ 上へ 次へ
11.4 実行制御 [大部分 6.0]
-
[5.3]
BLOCK 構文 [5.3]は実行コード部分での宣言を利用可能とします。
例を以下に示します。
Do i=1,n Block Real tmp tmp = a(i)**3 If (tmp>b(i)) b(i) = tmp End Block End Doここで変数 tmp の有効範囲は BLOCK 構文内に限られ、その外側に影響を及ぼしません。 この機能は INCLUDE を利用する場合やマクロ処理で特に有用です。BLOCK 内では COMMON, EQUIVALENCE, IMPLICIT, INTENT, NAMELIST, OPTIONAL, VALUE, および文関数以外の全ての宣言が許されています。
BLOCK 構文はネストすることが可能です。 他の構文と同様に BLOCK 構文外部から内部への分岐は許されていません。 BLOCK 構文内から外部への分岐は、同構文の実行を完了させます。
BLOCK 構文内の言語要素で SAVE 属性を持たないものは、同構文が完了した時点で消滅します。 例えば、割付けされた ALLOCATABLE 変数は自動的に開放され、 FINAL 手続を持つ変数は最終化されます。
- EXIT文はDO構文だけではなくASSOCIATE、BLOCK、IF、SELECT CASE、SELECT TYPE の各名前付き構文でも利用可能です。(FORALLとWHERE以外の名前付き構文) 構文名を持たないEXIT文は名前付き構文の有るなしに係らず従来通り最も内側のDO構文より脱出します。
- STOP文で、stop-codeが整数型もしくは基本文字型のどのようなスカラ定数式も指定できるようになりました。 (この変更はPAUSE文にも適用されていますが、現在ではPAUSE文はFortran標準ではなくなっています) 更に整数を指定したSTOP文はプロセスの返却コードとしてその値を返します。 (多くのオペレーティングシステムでは返却コードの制限があるため、nAG Fortranコンパイラでは最下位8ビットの値を返します。)
-
ERROR STOP文が追加されました。
この文はSTOPと似ていますが、プログラムを(正常終了ではなく)異常終了させます。
書式は最初に記述する‘ERROR’部分を除きSTOP文と同等です。
正常終了時のデフォルトのプロセス終了ステータスはゼロですが異常終了の場合は非ゼロとなります。
例)
IF (x<=0) ERROR STOP 'x must be positive'
