複数モジュールのバインド

この例では CRTPGM コマンドを使って 2 つの ILE RPG モジュールをプログラム TRPT にバインドする方法を 示します。このプログラムでは、以下のことを行います。
  • モジュール TRANSRPT がファイル TRNSDTA から各トランザクション・レコード を読み取る。
  • 次に 式中のバインド呼び出しを使ってモジュール TRANSSVC のプロシージャー Trans_Inc および Proc_Name を呼び出す。
  • Trans_Inc が各トランザクションに関係する収入を計算し、 その値を呼び出し元に戻す。
  • Proc_Name がプロダクト名を決定しそれを戻す。
  • 次に TRANSRPT がトランザクション・レコードを印刷する。
TRANSRPT、TRANSSVC、および TRNSDTA のソース・ステートメントは それぞれ、図 1図 1、および 図 2 に示されています。
  1. 最初にモジュール TRANSRPT を作成する。以下のとおり入力してください。
    CRTRPGMOD MODULE(MYLIB/TRANSRPT)
  2. 次に、以下のとおり入力して、モジュール TRANSSVC を作成する。
    CRTRPGMOD MODULE(MYLIB/TRANSSVC)
  3. プログラム・オブジェクトを作成するために、以下のとおり入力する。
    CRTPGM PGM(MYLIB/TRPT) MODULE(TRANSRPT TRANSSVC)
           ENTMOD(*FIRST) ACTGRP(TRPT)

CRTPGM コマンドは、ライブラリー MYLIB にプログラム・オブジェクト TRPT を作成します。

TRANSRPT が MODULE パラメーターに最初にリストされることに注意してくださ い。 ENTMOD(*FIRST) では、プログラム入力プロシージャーのある最初のモジュールを検索します。2 つのモジュールのうちプログラム入力プロシージャーを持っているのは 1 つだけですから、2 つのモジュールをいずれを先に入力しても構いません。

プログラム TRPT は指定の活動化グループ TRPT 内で実行します。 プログラムは、 他のプログラムがその資源に影響を与えないことを確実にするために指定の グループ内で実行します。

図 1 は、TRPT が実行される時に作成させる出力ファイルを示したものです。

図 1. TRPT のファイル QSYSPRT
Product name                    Quantity        Income
------------------------------  --------        ------------
Large                                245          330,750.00
Super                                 15           52,500.00
Super Large                            0                 .00
Super Jumbo                          123        2,952,000.00
Incredibly Large Super Jumbo          15          912,000.00
***Unknown***                         12                 .00
Total:         4,247,250.00