NOMAIN モジュールの作成
この例では、CRTRPGMOD コマンドおよびそのデフォルトの設定を使用して NOMAIN モジュール・
オブジェクト TRANSSVC を作成します。TRANSSVC には、他のモジュールのプロシージャーの
トランザクション・サービスを実行するプロトタイプ・プロシージャーが入っています。 TRANSSVC
のソースは 図 1 に示されています。 TRANSSVC におけるプロシージャーのプロトタイプは、図 2
に示すように /COPY メンバーに保管されます。
- モジュール・オブジェクトを作成するには、以下のとおり入力してください。
CRTRPGMOD MODULE(MYLIB/TRANSSVC) SRCFILE(MYLIB/QRPGLESRC)モジュールは、コマンドに指定された名前、TRANSSVC でライブラリー MYLIB に作成されます。 モジュールのソースは、ライブラリー MYLIB の ファイル QRPGLESRC のソース・メンバー TRANSSVC です。
次のコマンドの 1 つを使用して NOMAIN の入ったモジュールを別のモジュールと バインドします。- CRTPGM コマンド
- CRTSRVPGM コマンド
- CRTBNDRPG コマンド ここでは NOMAIN モジュールがバインディング・ディレクトリーに含まれます。
- いったんバインドされると、このモジュール・オブジェクトはステートメント・ビューを使用して デバッグすることができます。 このモジュールのコンパイラー・リストも生成されます。
- コンパイラー・リストを見るには、以下の 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