コマンド

8. 従属パラメータを使用するには?

  原始ファイル  . . . . . . .   QRPGSRC        名前 , *PRV
  ライブラリー  . . . . . .     ASNET.SRC    名前 , *LIBL, *CURLIB, *PRV

のように2段に従属を示すように表示したい場合がある。

この形式のパラメータを従属パラメータという。

従属パラメータは QUAL パラメータによって実現できる。

以下に例を示す。

            PARM       KWD(SRCFILE) TYPE(SRCFILE) +             
                       PROMPT(' 原始ファイル ')               
SRCFILE:    QUAL       TYPE(*NAME) LEN(10) SPCVAL((*PRV)) MIN(1)
            QUAL       TYPE(*NAME) LEN(10) DFT(*LIBL) +         
                       SPCVAL((*LIBL) (*CURLIB) (*PRV)) +     
                       PROMPT(' ライブラリー ')

従属パラメータは

            PARM       KWD(SRCFILE) TYPE(SRCFILE) +             
                       PROMPT(' 原始ファイル ')

で示されるように1つのパラメータであり、KWD(SRCFILE) によって2つの構成に分割される。

(2つ以上であっても良い)

SRCFILE とは

SRCFILE:    QUAL       TYPE(*NAME) LEN(10) SPCVAL((*PRV)) MIN(1)
            QUAL       TYPE(*NAME) LEN(10) DFT(*LIBL) +         
                        SPCVAL((*LIBL) (*CURLIB) (*PRV)) +     
                        PROMPT(' ライブラリー ')

で QUAL によって表現される。最初の QUAL のタイプは必ず *NAME でなくてはならない。

*NAME とは A – Z で始まる文字列のことである。

また、従属パラメータは最初に述べたように「1つの」パラメータとしてコマンドの実行プログラムに渡される。

よって、コマンドを処理するプログラムでは

         PGM        PARM(&SRCFILEPRM) 
         DCL        VAR(&SRCFILEPRM) TYPE(*CHAR) LEN(20) 
         DCL        VAR(&SRCFILE) TYPE(*CHAR) LEN(10)    
         DCL        VAR(&SRCLIB) TYPE(*CHAR) LEN(10)     
         CHGVAR     VAR(&SRCFILE) VALUE(%SST(&SRCFILEPRM 01 10))
         CHGVAR     VAR(&SRCLIB)  VALUE(%SST(&SRCFILEPRM 11 10))

のようにして、1つのパラメータとして受け取ってから2つの要素に分割しなければならない。