目的
直前の DO、PROCEDURE、SELECT、または BEGIN 文に続くブロックまたはグループを終了します。
構文
END [statement_label];
パラメーター
- statement_label
- 対応する文のラベル プレフィックス。
例
P: PROCEDURE;
DO K=1 TO 10;
.
.
.
END;
END P;
反復 DO グループを暗黙的に閉じる END 文に制御が渡された場合、それ以上 DO グループが繰り返し実行されることはありません。これは DO グループから出る分岐に相当します。
説明
END 文は、直前の DO、PROCEDURE、SELECT、または BEGIN 文に続くブロックまたはグループを終了します。
DO グループを閉じる END 文を実行すると、グループの先頭にある DO 文に応じて、グループが繰り返される場合があります(DO 文については、この章の前のセクションを参照してください)。
PROCEDURE 文を閉じる END 文の実行は、その PROCEDURE 文に RETURNS オプションが含まれていない場合にのみ有効です。Open PL/I または PL/I の別の実装では、この要件に対する違反が診断されない場合があります。END 文は、現在のブロックの有効化を終了し、プロシージャを呼び出した CALL 文に続く文に制御を戻します。
BEGIN ブロックを閉じる END 文を実行すると、現在のブロックの有効化が終了し、END 文に続く文で前のブロックの有効化の実行が再開されます。BEGIN ブロックが ON-unit の場合、制御は信号の発信元に戻されます。ON-unit が ERROR 条件に対して確立されている場合は、制御を戻すことはできません。ERROR 条件の発生元に制御を戻そうとすると、プログラムの実行が停止し、ランタイム エラー メッセージが生成されます。
END 文にはラベル プレフィックスを付けることができ、END 文で閉じられた DO グループまたはブロック内に含まれる GOTO 文を含む、GOTO 文で参照できます。
名前を指定する場合は、対応する DO、BEGIN、または PROCEDURE 文のラベル プレフィックスで出現する名前と同じある必要があります。名前が同じでない場合、コンパイラでエラー メッセージが表示されます。
END 文は、THEN、ELSE、WHEN、OTHERWISE 句または ON-unit として記述することはできません。