ON ステートメントは、あるアクションを設定するためのステートメントです。この アクションは、引き続いて設定された条件の有効範囲内で割り込み可能な条件が引き続い て起こると実行されます。
|
SNAP と SYSTEM を指定すると、暗黙アクションが取られた直後に SNAP 情報が印刷されます。
ON ユニットは、ラベルなしの単一の単純ステートメント、またはラベルなしの開始ブロックのどちら でもかまいません。 単純ステートメントの場合は、BEGIN、DECLARE、DEFAULT、DO、END、ENTRY、FORMAT、ITERATE、 LEAVE、OTHERWISE、PROCEDURE、RETURN、SELECT、WHEN、 または % ステートメント以外の任意のステートメントとすることができます。 ON ユニットが開始ブロックの場合は、 RETURN ステートメントは開始ブロック内のネストされた プロシージャー内にのみ現れます。 LEAVE ステートメントは開始ブロック内の ネストされた DO グループ内にのみ現れます。
ただし、セミコロン (;) または RESIGNAL ステートメントのいずれかでのみ 形成されている ON ユニットを除き、ON ユニットは、それがあるブロックに対し て内部的なプロシージャー (パラメーターなしの) と見なされます。 ON ユニット内で参照された名前は、その条件が起こったときの環境で 知られている名前ではなく、その ON ユニットを指定した ON ステートメントが 実行されたときの環境で知られている名前です。
ON ユニットの実行が完了すると、通常は、その ON ユニットに制御を 渡したブロックに制御が戻されます。 プロシージャーの場合と同様に、GO TO ステートメントを使用して ON ユニットの外に制御を移すことができ、 その場合は、GO TO ステートメントで指定した場所に制御権が移され、正常な戻りは行われません。
ON ユニットからどこの場所に制御が戻されるかは、それぞれの条件によって異なります。 条件ごとの正常な戻りについては、条件で説明します。