CRTBNDRPG を使った ILE プログラムの例

図 7 は、提供されるサービス・プログラムにバインドされる ILE RPG プログラムを ILE CL プログラムが呼び出すアプリケーションの実行時のビューです。このアプリケーション・プログラムは XYZ という名前の活動化グループ内で実行されます。

図 7. CRTBNDRPG を使う ILE プログラム
CRTBNDRPG を使う ILE プログラム

ILE の影響

以下に、ユーザーのプログラムが取り扱う ILE の影響について説明します。

プログラム呼び出し
システムは、アプリケーション・プログラムを開始するときに活動化グループがまだなければ、 それを自動的に作成します。

アプリケーション・プログラムには、動的プログラム呼び出しまたは静的プロシージャー 呼び出しを含めることができます。 バインドされたプログラム内のプロシージャーは、静的呼び出しを使用してお互 いに呼び出します。 プロシージャーは、動的呼び出しを使用して ILE および OPM プログラムを呼び出 します。

データ
プログラム記憶域の存続時間は活動化グループの存続時間と 同じです。記憶域は活動化グループが削除されるまで活動状態のままです。

ILE RPG は、プログラム終了およびデータ再初期化の意味が OPM RPG の場合と同じになるように、実行時にデータを管理します。ただし、実際の記憶域は、OPM RPG プログラムが終了した時に削除されたようには、削除されません。 プロシージャーへの前の呼び出しが LR オンで終了するか、あるいは異常終了し た場合には、データが再び初期設定されます。

エクスポートまたはインポート (それぞれ EXPORT または IMPORT キーワード を使用) として識別されるプログラム・データは、個々のモジュールにとって は外部データです。 このデータは、各モジュール間では 1 つのプログラムにバインドされるものと して認識されます。

ファイル
デフォルトでは、システムによるファイル処理 (オープン、共用、 一時変更、およびコミットメント制御を含む) は、活動化グループ・レベルに 有効範囲指定されます。 データ管理レベルでは、別の活動化グループ内のプログラムとファイルを共用 することができません。 活動化グループをまたがってファイルを共用したい場合には、一時変更コマン ドで SHARE(*YES) を指定してジョブ・レベルでファイルをオープンするか、あ るいは SHARE(*YES) でファイルを作成しなければなりません。
エラー
同一の活動化グループで ILE RPG プログラムまたはプロシージャーを呼び出す場合、 以前に照会メッセージを表示させるような例外があった場合には、ユーザーの呼び出し側プログラムは 最初にその例外を見ることになります。

ユーザーの呼び出し側プログラムにエラー標識または *PSSR があると、例外を起こしたプログラムまたは プロシージャーは照会メッセージを表示せずに異常終了することに なります。ユーザーの呼び出し側プログラムは同じ動きをします (エラー標識がオンに設定 されるか *PSSR が呼び出されます)。

OPM プログラムまたは別の活動化グループ内のプログラムまたは メイン・プロシージャーを呼び出す時には、 例外処理は、OPM RPG における場合と同様に、各プログラムが自身の例外を処 理することになります。 表示するメッセージは新しいメッセージ ID をもつことができるので、 特定のメッセージ ID を監視する場合には、ユーザーはその ID を変更する必 要がある場合があります。

各言語はそれ自身のエラーを処理し、別の ILE 言語で書かれたモジュール内で起こるエラーを処理することができます。 例えば、エラー標識がコーディングされている場合には、RPG で C 言語の エラーを処理します。 C で RPG エラーを処理することができます。