例外処理の概要
- 実行時エラーの結果として出された例外メッセージを調べる
- 例外が受け取られた (すなわち処理された) ことを示すために例外を任意 に修正する
- 例外情報をコードの一部に渡して必要な処理を取ることによって任意に例外 から回復する
- *ESCAPE
- 重大エラーが検出されたことを示します。
- *STATUS
- プログラムによって行われている処理の状況を説明します。
- *NOTIFY
- 呼び出し側プログラムからの訂正処置または応答を必要とする状態を説明しま す。
- 機能チェック
- 前記 3 つの状態の 1 つが起こったが、処理されていないことを 示します。
例外メッセージは呼び出しスタック項目と関連しています。 さらに各呼び出しスタック項目は その項目に定義されている例外処理プログラムのリストと 関連しています (呼び出しスタックについて詳しくは、呼び出しスタック を参照してください)。
図 1 は、OPM プログラムがいくつかのモジュール、 したがっていくつかのプロシージャーから構成される ILE プログラムを呼び出す、呼び出しスタックを示します。後に続く説明では、 この図を参照してください。
- 例外が機能チェックである場合には、その呼び出しスタック項目がスタック から取り除かれます。
- 例外が前の呼び出しスタック項目に移されます (パーコレートされます)。
- この呼び出しスタック項目で例外処理が再開されます。
前の呼び出しスタック項目で例外を処理できるようにする処置をパーコレーションといいます。パーコレーションは、例外が処理されるか、あるいは制御境界に達するまで続 けられます。制御境界は、直前の呼び出しスタック項目が別の活動化グループであ るか、あるいは OPM プログラムである呼び出しスタック項目です。 図 1 では、プロシージャー P1 が制御境界です。

OPM では、例外メッセージは呼び出しスタック上で活動状態の プログラム に関連しています。 例外が関連の例外処理プログラムによって処理されなかった場合には、例外を 受け取った同じ呼び出しスタック項目に機能チェックが送られます。 例外が処理不能のままである場合には、項目が除去され、機能チェックが パーコレートされます。 例外が処理されるまで、この処理が反復されます。
ILE では、例外メッセージは、呼び出しスタックで活動状態のプロシージャー と関連します。例外がパーコレートされる時には、例外は機能チェックに変換 されません。 各呼び出しスタック項目は、制御境界に達するまで元の例外を処理できるようになります。 制御境界に達して初めて、例外は機能チェックに変換され、その時点から例外 を受け取ったプロシージャーから例外処理がやり直されます。 この時、各呼び出しスタック項目が機能チェックを処理できるようになります。 制御境界に達し、例外がまだ未処理である場合には、一般障害例外メッセージ CEE9901 が制御境界でプロシージャーの呼び出し元に送られます。さらに、メッセージを処理しなかった呼び出しスタック項目はすべて除去されま す。