CRTRPGMOD コマンドの使用

RPG モジュール作成 (CRTRPGMOD) コマンドを使用してモジュールを作成します。 コマンドは、対話式に使用することも、バッチ入力ストリームの一部 として使用することも、あるいはコマンド言語 (CL) プログラムから 使用することもできます。

コマンドを対話式に使用していて、プロンプトが必要な場合には、CRTRPGMOD を 入力して、F4 (プロンプト) を押してください。 ヘルプが必要な場合には、CRTRPGMOD を入力して、F1 (ヘルプ) を押 してください。

表 22 は CRTRPGMOD コマンドの パラメーター、およびシステム提供のそれらのデフォルトの値です。コマンドの構文図および パラメーターの説明は 付録C. 作成コマンドに入って います。

表 22. CRTRPGMOD パラメーターおよび機能ごとにグループ化されたデフォルト値
モ ジュールの指定
MODULE(*CURLIB/*CTLSPEC) 作成されるモジュールの名前およびライブラリーを決める。
SRCFILE(*LIBL/QRPGLESRC) 指定する場合は、ソース・ファイルおよびライブラリーを示す。
SRCMBR(*MODULE) 指定する場合は、ソースの仕様が入っているファイル・メンバーを示す。
SRCSTMF(path) 指定する場合は、IFS のソース・ファイルへのパスを示す。
INCDIR('path to directory 1:path to directory 2') /copy ファイルおよび /include ファイルを検索するモジュールのリストを示す。
TEXT(*SRCMBRTXT) モジュールの簡単な説明を用意する。
モ ジュールの作成
GENLVL(10) モジュール作成をエラーの重大度 (0 〜 20) に条件付ける。
OPTION(*DEBUGIO) *DEBUGIO/*NODEBUGIO は、入出力仕様書について停止点を生成するかどうか を決定する。
OPTION(*GEN) *GEN/*NOGEN は、モジュールを作成するかどうかを決める。
OPTION(*NOSRCSTMT) コンパイラーがデバッグ用にステートメント番号を生成する方法を指定する。
DBGVIEW(*STMT) モジュールに含めるデバッグ・ビューがあれば、そのタイプを指定する。
OPTIMIZE(*NONE) 最適化をする場合、そのレベルを決める。
REPLACE(*YES) 既存のモジュールをモジュールに置き換えるかどうかを決める。
AUT(*LIBCRTAUT) 作成されるモジュールの権限のタイプを指定する。
TGTRLS(*CURRENT) オブジェクトを実行するリリース・レベルを 指定する。
BNDDIR(*NONE) 記号の解決に使用するバインディング・ディレクトリーを指定する。
ENBPFRCOL(*PEP) パフォーマンス収集を使用可能にするかどうかを 指定する。
DEFINE(*NONE) コンパイルの開始前に定義する 条件名を指定する。
PRFDTA(*NOCOL) プログラムのプロファイル作成データ属性を指定する。
コンパイラー・リストの作成
OUTPUT(*PRINT) コンパイラー・リストを作成するかどうかを決める。
INDENT(*NONE) リスト出力中に字下げを示すかどうかを決め、また字下げの印付けの ための文字を識別する
OPTION(*XREF *NOSECLVL *SHOWCPY *EXPDDS *EXT *NOSHOWSKP *NOSRCSTMT) コンパイラー・リストの内容を指定する。
データ変換オプション
CVTOPT(*NONE) 外部記述ファイルからの各種のデータ・タイプを 取り扱う方法を指定する。
ALWNULL(*NO) ヌル可能フィールドからの値をモジュールが受け入れるかどうかを 決める。
FIXNBR(*NONE) 無効な 10 進数データのどれをコンパイラーで修正するかを決める。
実行時の考慮事項
SRTSEQ(*HEX) 使用すべき分類順序テーブルを指定する。
OPTION(*DEBUGIO) *DEBUGIO/*NODEBUGIO は、入出力仕様書について停止点を生成するかどうか を決定する。
LANGID(*JOBRUN) 分類順序の言語識別コードを指定するために SRTSEQ と一緒に 使用される。
INFOSTMF(path) PGMINFO と一緒に使用し、PCML を受け取る IFS のストリーム・ファイルを指定する。
PGMINFO(*NONE) *PCML は、モジュールに対し PCML (プログラム呼び出しマークアップ言語) を生成することを示す。
TRUNCNBR(*YES) パック 10 進数、ゾーン 10 進数、および固定形式の 2 進数フィールド命令の数値オーバーフローが起こった時に取るべき処置を指定する。
LICOPT(オプション) ライセンス内部コード・オプションを指定します。

要求した場合には、CRTRPGMOD コマンドは、CRTBNDRPG コマンドで 作成したリストとほとんどの部分が同様のコンパイラー・リストを 作成します (CRTRPGMOD で作成されたリストに、 バインド・セクションが入ることはありません)。

コンパイラー・リストの使用については、コンパイラー・リストの使用を参照してくだ さい。サンプル・コンパイラー・リストは 付録D. コンパイラー・リストに入っています。

NOMAIN モジュールの作成

この例では、CRTRPGMOD コマンドおよびそのデフォルトの設定を使用して NOMAIN モジュール・ オブジェクト TRANSSVC を作成します。TRANSSVC には、他のモジュールのプロシージャーの トランザクション・サービスを実行するプロトタイプ・プロシージャーが入っています。 TRANSSVC のソースは 図 36 に示されています。 TRANSSVC におけるプロシージャーのプロトタイプは、図 37 に示すように /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 つを 入力してください。
図 36. 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
図 37. 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