AS/400 システムでは、プログラムが互いに状況を通信する方法がいくつかあります。 主な方法の 1 つは、i5/OS メッセージを送信することです。
i5/OS メッセージには複数のタイプがあります。 それには、照会、情報、完了、エスケープ、および通知メッセージがあります。 たとえば、コンパイルが成功した場合に ILE COBOL コンパイラーから送られる最後のメッセージは、次のような LNC0901 です。
プログラム program-name がライブラリー library-name に date の time に作成されました。
メッセージ LNC0901 は完了メッセージです。 コンパイルが失敗すると、次のようなメッセージ LNC9001 を受け取ります。
Compile failed. Program-name not created.
メッセージ LNC9001 はエスケープ・メッセージです。
ILE 条件と i5/OS メッセージはよく似ています。 エスケープ、状況、通知、および機能チェック・メッセージは条件であり、 各 ILE 条件には関連する i5/OS メッセージがあります。
i5/OS メッセージは、宣言してメッセージ・モニターを使用可能にすると処理できますが、 これと同様に ILE 条件も ILE 異常事態処理ルーチンを登録することによって処理できます。 ILE 異常事態処理ルーチンを使用すると、実行時に例外処理プロシージャーを登録でき、 例外が起こるとこの手順に制御が与えられます。 異常事態処理ルーチンを登録するには、 ユーザー作成異常事態処理ルーチン登録 (CEEHDLR) バインド可能 API を使用してください。
プログラム・オブジェクトまたは ILE プロシージャーが呼び出されると、新しい呼び出しスタック項目が作成されます。 各呼び出しスタック項目には、それぞれ呼び出しメッセージ待ち行列が対応しています。 この呼び出しメッセージ待ち行列は、 プログラム・オブジェクトが呼び出される場合はプログラム・メッセージ待ち行列であり、ILE プロシージャーが呼び出される場合はプロシージャー・メッセージ待ち行列です。 ILE では、呼び出しスタック項目にメッセージを送ると、 関連するプログラム・オブジェクトまたは ILE プロシージャーにメッセージを送ることができます。
同様に、呼び出しスタック項目に条件を通知すると、 関連するプログラム・オブジェクトまたは ILE プロシージャーに条件を通知できます。 プログラム・オブジェクトに条件を通知する際には、ILE バインド可能 API を使用します。 条件管理バインド可能 API のリストについては、「ILE 概念」の ILE バインド可能 API についての部分を参照してください。
各呼び出しスタック項目ごとに、複数の ILE 異常事態処理ルーチンを登録できます。 1 つの呼び出しスタック項目に対して複数の ILE 条件ハンドラーが登録されている場合、 システムは後入れ先出し (LIFO) の順にこれらのハンドラーを呼び出します。 ILE 異常事態処理ルーチンをさまざまな優先順位で登録することもできます。 ILE COBOL が使用するのは、これらの優先順位のうちのわずかなものだけです。 85〜225 の範囲で約 10 個の異なる優先順位があります。 ILE 異常事態処理ルーチンは、優先順位の数値が小さいものから順に呼び出されます。
ILE で、特定の呼び出しスタック項目で例外条件が処理されないなら、未処理の例外メッセージは、 直前の呼び出しスタック項目メッセージ待ち行列にパーコレートされます。 この状態が起きると、例外処理は直前の呼び出しスタック項目から続行します。 管理境界に達するか、または例外メッセージが処理されるまで、 未処理の例外条件のパーコレーションは続行します。 未処理の例外メッセージが管理境界にパーコレートされると、それは機能チェックに変換されます。
次に機能チェックが、元の例外条件を発行した呼び出しスタック項目に処理されるか、 または管理境界にパーコレートされます。 機能チェックが処理されると、通常の処理が継続して例外処理は終了します。 機能チェックが管理境界にパーコレートされると、ILE はアプリケーションが予期しないエラーで終了したと見なします。 総称障害例外メッセージ CEE9901 が、ILE から管理境界の呼び出し側に送られます。
プログラム・オブジェクトまたは ILE プロシージャーで例外条件が起きると、それは、 まずそのプログラム・オブジェクトまたは ILE プロシージャーの呼び出しスタック項目用に登録されている ILE 異常事態処理ルーチンによって処理されます。 呼び出しスタック項目用に ILE 異常事態処理ルーチンが登録されていない場合、 例外条件は HLL 固有のエラー・ハンドラーによって処理されます。 HLL 固有のエラー・ハンドラーは、エラーを処理するために定義される言語機能です。 ILE COBOL での HLL 固有エラー処理には、入出力エラー処理用の USE 宣言や、ON SIZE ERROR および INVALID KEY などの、有効範囲がステートメントである条件句の命令が含まれます。
例外条件が HHL 固有のエラー処理で処理されないなら、 前述のように未処理の例外条件が直前の呼び出しスタック項目メッセージ待ち行列にパーコレートされます。
ILE 条件処理についての詳細は、「ILE 概念」の、エラー処理についての部分、および例外と条件の管理についての部分を参照してください。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.