コマンド

14. コマンド・プロンプトを制御するには?

ユーザーの入力値に応じて次に表示するプロンプトを変更したい場合がある。
例えば SAVLIB コマンドでは装置名に TAP01 と指定するのと *SAVF
指定するのでは次に表示される値が変わってくる。
*SAVF を指定した場合には *SAVF の名前を入力するためのパラメータが表示される。
このようにユーザーの入力に応じて次に表示するプロンプトを変更する方法を「プロンプト制御」と呼ぶ。

プロンプト制御のためには PMTCTL パラメータによってプロンプト制御の名前と制御の方法を決めて、
各制御パラメータに PMTCTL の名前を指定する。
つまり PMTCTL がプロンプト制御のための条件文であり、条件があることを PARM に指定するわけである。
次にプロンプト制御の使用例を示す。

0001.00              CMD        PROMPT(' パネル GRP 保管 ')
0002.00              PARM       KWD(GRP) TYPE(*GENERIC) LEN(10) +               
0003.00                           SPCVAL((*ALL)) MAX(30) PROMPT(' パネル GRP')  
0004.00              PARM       KWD(OBJLIB) TYPE(*NAME) LEN(10) MIN(1) +        
0005.00                           PROMPT(' ライブラリー ')                      
0006.00              PARM       KWD(DEV) TYPE(*NAME) LEN(10) SPCVAL((*SAVF)) +  
0007.00                           PROMPT(' 装置 ')                              
0008.00              PARM       KWD(SAVOBJ) TYPE(*CHAR) LEN(5) RSTD(*YES) +     
0009.00                           DFT(*BOTH) VALUES(*DFN *OBJ *BOTH) +          
0010.00                           PROMPT(' オブジェトまたは定義 ')              
0011.00              PARM       KWD(TGTRLS) TYPE(*CHAR) LEN(8) RSTD(*YES) +     
0012.00                           DFT(*CURRENT) VALUES(*CURRENT *PRV V2R2M0 +   
0013.00                           V2R3M0 V3R0M5 V3R1M0 V3R2M0 V3R6M0 V3R7M0 +   
0014.00                           V4R1M0) PROMPT(' 目的リリース ')              
0015.00  SAVTAP:     PMTCTL     CTL(DEV) COND((*NE *SAVF))                      
0016.00              PARM       KWD(ENDOPT) TYPE(*CHAR) LEN(7) RSTD(*YES) +     
0017.00                           DFT(*REWIND) VALUES(*REWIND *LEAVE +          
0018.00                           *UNLOAD) PMTCTL(SAVTAP) +                     
0019.00                           PROMPT(' テープ終了オプション ')              
0020.00  SAVFIL:     PMTCTL     CTL(DEV) COND((*EQ *SAVF))   
0011.00              PARM       KWD(TGTRLS) TYPE(*CHAR) LEN(8) RSTD(*YES) +   
0012.00                           DFT(*CURRENT) VALUES(*CURRENT *PRV V2R2M0 + 
0013.00                           V2R3M0 V3R0M5 V3R1M0 V3R2M0 V3R6M0 V3R7M0 + 
0014.00                           V4R1M0) PROMPT(' 目的リリース ')            
0015.00  SAVTAP:     PMTCTL     CTL(DEV) COND((*NE *SAVF))                    
0016.00              PARM       KWD(ENDOPT) TYPE(*CHAR) LEN(7) RSTD(*YES) +   
0017.00                           DFT(*REWIND) VALUES(*REWIND *LEAVE +        
0018.00                           *UNLOAD) PMTCTL(SAVTAP) +                   
0019.00                           PROMPT(' テープ終了オプション ')            
0020.00  SAVFIL:     PMTCTL     CTL(DEV) COND((*EQ *SAVF))                    
0021.00              PARM       KWD(SAVF) TYPE(SAVF) PMTCTL(SAVFIL) +         
0022.00                           PROMPT(' 保管ファイル ')                    
0023.00 SAVF:        QUAL       TYPE(*NAME) LEN(10) MIN(1) EXPR(*YES)         
0024.00              QUAL       TYPE(*NAME) LEN(10) DFT(*LIBL) +              
0025.00                           SPCVAL((*LIBL) (*CURLIB)) EXPR(*YES) +      
0026.00                           PROMPT(' ライブラリー ')                    
0027.00              PARM       KWD(UPDHST) TYPE(*CHAR) LEN(4) RSTD(*YES) +   
0028.00                           DFT(*YES) VALUES(*YES *NO) PMTCTL(SAVFIL) + 
0029.00                           PROMPT(' 活動記録更新 ')
【 解説 】

上記では 装置(DEV)に入力によって *SAVF が入力された場合は SAVFIL という
PMTCTL が有効になり、そうでない場合は SAVTAP という PMTCTL が有効になる。

PARM       KWD(SAVF) TYPE(SAVF) PMTCTL(SAVFIL) +
                             PROMPT(' 保管ファイル ')

でわかるように「保管ファイル」というパラメータSAVFIL が有効のときのみに表示されるような
仕組みとなっている。