メイン・プロシージャーおよびサブプロシージャー

ILE RPG モジュールはゼロ以上のサブプロシージャーおよび メイン・プロシージャー (オプション) で構成されています。メイン・ プロシージャーとは、プログラム入力プロシージャーとして指定できる (したがって ILE プログラムが最初に 呼び出された時に制御を受け取る) プロシージャーです。 サイクル・メイン・プロシージャーは、モジュールを始める H、F、D、I、C、および O 仕様書のセットである、 メイン・ソース・セクションで定義できます。リニア・メイン・プロシージャーはサブプロシージャー・セクションで 指定でき、また制御仕様書の MAIN キーワードで特別に指定することができます。 プロシージャーおよびプログラム・ロジック・サイクル についての追加情報は、「WebSphere® Development Studio ILE RPG 解説書」を参照してください。

サブプロシージャーは、メイン・ソース・セクションの後に 指定されるプロシージャーです。 サブプロシージャーは次の点で基本的にメイン・プロシージャーと異なります。
  • サブプロシージャー内で定義された名前は、サブプロシージャーの外では アクセスすることができない。
  • サブプロシージャー用にはサイクル・コードは生成されない。
  • 呼び出しインターフェースはプロトタイプでなければならない。
  • サブプロシージャーへの呼び出しはバインドされたプロシージャー呼び出しで なければならない。
  • P、F、D、および C 仕様書しか使用することができない。
  • バインドされた呼び出しではなく、プログラム呼び出しを介して呼び出される以外は、 リニア・メイン・プロシージャーは他のサブプロシージャーと同じです。

サブプロシージャーは、データ項目がローカルであるために、他のプロシージャーからの独立性を提供することが できます。 内部データ項目は通常、自動記憶域に保管されます。これは、ローカル変数の 値がプロシージャーへの呼び出し間で保存されないことを意味します。

サブプロシージャーは別の機能を提供します。 値によってサブプロシージャーにパラメーターを渡したり、 値を戻す式の中でサブプロシージャーを呼び出すことができます。 図 1 は、複数プロシージャーのあるモジュールがどのように見えるかを示しています。

図 1. 複数プロシージャーのある ILE RPG サイクル・モジュール

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