サイクル・メイン・プロシージャー内の例外処理プログラム
例外がサイクル・メイン・プロシージャーで起こると ILE RPG は次のことを行います。
- 演算仕様書にエラー標識が指定されていて、例外がその命令で予期される
ものである場合:
- 標識をオンに設定する。
- 例外を処理する。
- 制御は次の ILE RPG 命令で再開する。
- 'E' 命令コード拡張が演算仕様書上にあり、この例外がその命令で
予期される場合。
- 組み込み関数 %STATUS および %ERROR の戻り値が設定される。
注: 'E' 拡張が指定されていなくても何か例外が発生すると、%STATUS は 設定されます。
- 例外を処理する。
- 制御は次の ILE RPG 命令で再開する。
- 組み込み関数 %STATUS および %ERROR の戻り値が設定される。
- エラー標識も「E」拡張も存在せず、例外を生成するコードが MONITOR グループの MONITOR ブロック内にある場合、制御は MONITOR グループの ON-ERROR セクションに渡されます。
- エラー標識または 'E' 拡張がなく、例外を処理できる活動状態の
MONITOR グループがなく、かつ
- *PSSR エラー処理サブルーチンをコーディングしていて、例外が
プログラム例外である場合、
or
- ファイルの INFSR エラー処理サブルーチンをコーディングしていて、例外が入出力例外である 場合、
このときは、その例外が処理され、エラー処理サブルーチンの最初の ステートメントで制御が再開されます。
- *PSSR エラー処理サブルーチンをコーディングしていて、例外が
プログラム例外である場合、
- エラー標識、'E'
拡張、またはエラー処理サブルーチンがコーディングされておらず、かつ例外を処理できる活動状態の
MONITOR グループがない場合は、RPG のデフォルトのエラー処理プログラムが呼び出されます。
- 例外が機能チェックでない 場合には、例外はパーコレートされ ます。
- 例外が機能チェックである場合には、照会メッセージが 表示されます。 'G' または 'R' オプションを選択した場合には、機能チェックが処理され、プ ロシージャーの適切な時点 ('G' の場合には *GETIN あるいは 'R' の場合には 例外を受け取った同じ演算仕様書) で制御が再開されます。 そうでない場合には、機能チェックが パーコレートされ、プロシージャーが異常終了します。
RPG のデフォルト処理プログラムの詳細については、未処理例外を参照し てください。