NOMAIN モジュールの作成

この例では、CRTRPGMOD コマンドおよびそのデフォルトの設定を使用して NOMAIN モジュール・ オブジェクト TRANSSVC を作成します。TRANSSVC には、他のモジュールのプロシージャーの トランザクション・サービスを実行するプロトタイプ・プロシージャーが入っています。 TRANSSVC のソースは 図 1 に示されています。 TRANSSVC におけるプロシージャーのプロトタイプは、図 2 に示すように /COPY メンバーに保管されます。
  1. モジュール・オブジェクトを作成するには、以下のとおり入力してください。
    CRTRPGMOD MODULE(MYLIB/TRANSSVC)  SRCFILE(MYLIB/QRPGLESRC)

    モジュールは、コマンドに指定された名前、TRANSSVC でライブラリー MYLIB に作成されます。 モジュールのソースは、ライブラリー MYLIB の ファイル QRPGLESRC のソース・メンバー TRANSSVC です。

    次のコマンドの 1 つを使用して NOMAIN の入ったモジュールを別のモジュールと バインドします。
    1. CRTPGM コマンド
    2. CRTSRVPGM コマンド
    3. CRTBNDRPG コマンド ここでは NOMAIN モジュールがバインディング・ディレクトリーに含まれます。
  2. いったんバインドされると、このモジュール・オブジェクトはステートメント・ビューを使用して デバッグすることができます。 このモジュールのコンパイラー・リストも生成されます。
  3. コンパイラー・リストを見るには、以下の CL コマンドのいずれか 1 つを 入力してください。
    • DSPJOB で、オプション 4 (スプール・ファイルの表示) を選択します。
    • WRKJOB
    • WRKOUTQ 待ち行列名
    • WRKSPLF
図 1. TRANSSVC メンバーのソース・ステートメント
      *=================================================================*
      * モジュール名:    TRANSSVC (トランザクション・サービス)
      * 関連ファイル:  なし
      * 関連ソース: TRANSRPT
      * エクスポート・プロシージャー:  Trans_Inc
      *     -- パラメーター・リストにあるフィールドのデータを使用して
      *        取引の収入を計算します。すべての計算が行なわれた後にそれを
      *        呼び出し元に戻します。
      *
      *     Prod_Name --  製品番号が入っている入力パラメーターに基づいて
      *                   製品名を検索します。
      *=================================================================*
      * このモジュールはサブプロシージャーのみを含んでいます。
      * つまりこれは NOMAIN モジュールです。
     H  NOMAIN
      *------------------------------------------------------------------
      * /COPY メンバーからプロトタイプを取り込みます。
      *------------------------------------------------------------------
      /COPY TRANSP
      *------------------------------------------------------------------
      * サブプロシージャー Trans_Inc
      *------------------------------------------------------------------
     P Trans_Inc       B                      EXPORT
     D  Trans_Inc      PI            11P 2
     D    ProdNum                    10P 0    VALUE
     D    Quantity                    5P 0    VALUE
     D    Discount                    2P 2    VALUE
     D  Factor         S              5P 0
      *
     C                   SELECT
     C                   WHEN      ProdNum = 1
     C                   EVAL      Factor = 1500
     C                   WHEN      ProdNum = 2
     C                   EVAL      Factor = 3500
     C                   WHEN      ProdNum = 5
     C                   EVAL      Factor = 20000
     C                   WHEN      ProdNum = 8
     C                   EVAL      Factor = 32000
     C                   WHEN      ProdNum = 12
     C                   EVAL      Factor = 64000
     C                   OTHER
     C                   EVAL      Factor = 0
     C                   ENDSL
     C                   RETURN    Factor * Quantity * (1 - Discount)
     P  Trans_Inc      E
      *------------------------------------------------------------------
      * サブプロシージャー Prod_Name
      *------------------------------------------------------------------
     P Prod_Name       B                      EXPORT
     D  Prod_Name      PI            40A
     D    ProdNum                    10P 0    VALUE
      *
     C                   SELECT
     C                   WHEN      ProdNum = 1
     C                   RETURN    'Large'
     C                   WHEN      ProdNum = 2
     C                   RETURN    'Super'
     C                   WHEN      ProdNum = 5
     C                   RETURN    'Super Large'
     C                   WHEN      ProdNum = 8
     C                   RETURN    'Super Jumbo'
     C                   WHEN      ProdNum = 12
     C                   RETURN    'Incredibly Large Super Jumbo'
     C                   OTHER
     C                   RETURN    '***Unknown***'
     C                   ENDSL
     P  Prod_Name      E
図 2. TRANSP /COPY メンバーのソース・ステートメント
      * Trans_Inc のプロトタイプ
     D  Trans_Inc      PR            11P 2
     D    Prod                       10P 0    VALUE
     D    Quantity                    5P 0    VALUE
     D    Discount                    2P 2    VALUE

      * Prod_Name のプロトタイプ
     D  Prod_Name      PR            40A
     D    Prod                       10P 0    VALUE