モジュール・オブジェクトの作成

モジュールとは、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 概念」を参照してください。