メイン・プロシージャーおよびサブプロシージャー
ILE RPG モジュールはゼロ以上のサブプロシージャーおよび メイン・プロシージャー (オプション) で構成されています。メイン・ プロシージャーとは、プログラム入力プロシージャーとして指定できる (したがって ILE プログラムが最初に 呼び出された時に制御を受け取る) プロシージャーです。 サイクル・メイン・プロシージャーは、モジュールを始める H、F、D、I、C、および O 仕様書のセットである、 メイン・ソース・セクションで定義できます。リニア・メイン・プロシージャーはサブプロシージャー・セクションで 指定でき、また制御仕様書の MAIN キーワードで特別に指定することができます。 プロシージャーおよびプログラム・ロジック・サイクル についての追加情報は、「WebSphere® Development Studio ILE RPG 解説書」を参照してください。
- サブプロシージャー内で定義された名前は、サブプロシージャーの外では アクセスすることができない。
- サブプロシージャー用にはサイクル・コードは生成されない。
- 呼び出しインターフェースはプロトタイプでなければならない。
- サブプロシージャーへの呼び出しはバインドされたプロシージャー呼び出しで なければならない。
- P、F、D、および C 仕様書しか使用することができない。
- バインドされた呼び出しではなく、プログラム呼び出しを介して呼び出される以外は、 リニア・メイン・プロシージャーは他のサブプロシージャーと同じです。
サブプロシージャーは、データ項目がローカルであるために、他のプロシージャーからの独立性を提供することが できます。 内部データ項目は通常、自動記憶域に保管されます。これは、ローカル変数の 値がプロシージャーへの呼び出し間で保存されないことを意味します。
サブプロシージャーは別の機能を提供します。 値によってサブプロシージャーにパラメーターを渡したり、 値を戻す式の中でサブプロシージャーを呼び出すことができます。 図 1 は、複数プロシージャーのあるモジュールがどのように見えるかを示しています。

図から分かるとおり、特定のタスクを処理するサブプロシージャーをコーディングすることが できます。 これらのタスクは、メイン・プロシージャーによって、またはアプリケーション・プログラム内の他の モジュールによって必要となる場合があります。 さらに、サブプロシージャー内で 一時データ項目を宣言することができますが、モジュール内のどこかで 宣言されている場合には、気にする必要はありません。