モジュール・オブジェクトの作成
モジュールとは、ILE コンパイラーの出力である実行不能なオブジェクト (タイプ *MODULE) のことです。これは ILE プログラムの基本的な構成単位のことです。
ILE RPG モジュールは 1 つ以上のプロシージャー、および
モジュールのすべてのプロシージャーによって使用される
ファイル制御ブロックと静的記憶域から構成されます。ILE RPG モジュールを構成するプロシージャーは次のとおりです。
- ソースを開始する H、F、D、I、C、および O 仕様書のセットで構成される任意指定 サイクル・メイン・プロシージャー。 サイクル・メイン・プロシージャーには、独自の LR 意味構造と論理サイクルがあります。 すなわち、どちらもプログラム中の他の ILE RPG モジュールの プロシージャーの影響は受けません。
- P、D、および C 仕様書でコーディングされたゼロまたは 1 つ以上の サブプロシージャー。 サブプロシージャーは RPG サイクルを使用しません。 サブプロシージャーそれ自体にのみには使用可能なローカル記憶域があります。サイクル・メイン・プロシージャーがコーディングされていない場合、 サブプロシージャーの 1 つは、リニア・メイン・プロシージャーとして指定される場合があります。
メイン・プロシージャー (コーディングされている場合) は常にプログラム中 の他のモジュールによって呼び出すことができます。 サブプロシージャーは、モジュールに対してローカルとすることも エクスポートとすることもできます。 ローカルの場合には、モジュールの別のプロシージャーだけがこれを呼び出すこと ができます。モジュールからエクスポートされた場合には、プログラムの任意の プロシージャーがこれを呼び出すことができます。
モジュールの作成は、ソース・メンバーのコンパイルと、それが正常 に実行された場合の *MODULE オブジェクトの作成から構成されます。 *MODULE オブジェクト にはモジュール内で参照されるインポートおよびエクスポートのリストが含まれます。 またこれには、コンパイル時に要求した場合には、デバッグ・データも含まれ ます。
モジュールはそれ自身で実行することはできません。 実行可能なプログラム・オブジェクト (タイプ *PGM) を作成するには 1 つ以上のモジュールを互いにバインドしなければなりません。 また、サービス・プログラム・オブジェクト (タイプ *SRVPGM) を作成するにも 1 つ以上のモジュールを 互いにバインドしなければなりません。 その後で、ユーザーは静的プロシージャー呼び出しによって バインド・モジュール内のプロシージャーをアクセスします。
各モジュールを結合するこの能力により、以下のことが可能になります。
- 一般的には、より小さいプログラムとなるコードの一部を再利用する。 より小さいプログラムは、パフォーマンスも高く、 デバッグが容易です。
- 全体のプログラムのその他の部分にエラーを持ち込む機会を最小にして、 共用のコードを保守する。
- 大きいプログラムをより効果的に管理する。 モジュールによって、旧プログラムを別々に管理できるパーツに分けることが できます。 プログラムを拡張する必要がある場合には、変更されたモジュールを コンパイルし直すだけですみます。
- 混合言語のプログラムを作成する。この場合には、必要な仕事に最適な言語で 書かれたモジュールを互いにバインドします。
モジュールの概念の詳細については、「ILE 概念」を参照してください。