END

目的

直前の DO、PROCEDURE、SELECT、または BEGIN 文に続くブロックまたはグループを終了します。

構文

END [statement_label];

パラメーター

statement_label
対応する文のラベル プレフィックス。

説明

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 として記述することはできません。

P: PROCEDURE;
   DO K=1 TO 10;
      .
      .
      .
   END;
   END P;

反復 DO グループを暗黙的に閉じる END 文に制御が渡された場合、それ以上 DO グループが繰り返し実行されることはありません。これは DO グループから出る分岐に相当します。

制約事項

なし。