コマンド

50. プロンプト要求

プロンプト要求とは普段、使わないパラメータは隠しておいて
「F10= 追加のパラメータ 」が押されたときだけに表示するもので
IBM iの操作をやっているとi5/OSのコマンドで
F10= 追加のパラメータを良く目にしたことがあると思う。
例えば次のようなコマンドである。

                          ファイル記述表示  (DSPFD)                         
                                                                            
選択項目を入力して,実行キーを押してください。                              
                                                                            
ファイル  . . . . . . . . . . .                  名前,総称* , *ALL        
 ライブラリー  . . . . . . . . . . .     *LIBL        名前 , *LIBL, *CURLIB...   
情報のタイプ  . . . . . . . . .   *ALL          *ALL, *BASATR, *ATR...      
               値の続きは+                                                 
出力  . . . . . . . . . . . . .   *             *, *PRINT, *OUTFILE         
ファイル属性  . . . . . . . . .   *ALL          *ALL, *DSPF, *PRTF, *DKTF...
               値の続きは+                                                 


                                                                             
                                                                         終り
 F3= 終了    F4=プロンプト   F5= 最新表示    F10= 追加のパラメーター            
 F12= 取り消し            F13= この画面の使用法    F24= キーの続き           

ここで F10キーを押すと続きのパラメータが次のように表示される。

                           ファイル記述表示  (DSPFD)                         
                                                                             
 選択項目を入力して,実行キーを押してください。                              
                                                                             
 ファイル  . . . . . . . . . . .                  名前,総称* , *ALL        
  ライブラリー  . . . . . . . . . . .     *LIBL        名前 , *LIBL, *CURLIB...   
 情報のタイプ  . . . . . . . . .   *ALL          *ALL, *BASATR, *ATR...      
                値の続きは+                                                 
 出力  . . . . . . . . . . . . .   *             *, *PRINT, *OUTFILE         
 ファイル属性  . . . . . . . . .   *ALL          *ALL, *DSPF, *PRTF, *DKTF...
                値の続きは+                                                 
                                                                             
                  追加のパラメーター                                         
                                                                             
 システム  . . . . . . . . . . .   *LCL          *LCL, *RMT, *ALL            

                                                                            
                                                                        終り
F3= 終了    F4=プロンプト   F5= 最新表示    F12= 取り消し                      
F13= この画面の使用法                    F24= キーの続き                    

[解説]

「追加のパラメーター」以降に表示されるパラメータが続きのパラメータである。
このように使用頻度が少ないパラメータは普段は隠しておくとエンド・ユーザーに
とってわかりやすく見やすくなる。

追加のパラメータとして隠しておくのは簡単でその例のソースを
次に紹介する。

                              商品明細表  (QRY001)                      
                                                                        
 選択項目を入力して,実行キーを押してください。                         
                                                                        
 品種 コード . . . . . . . . . . .                  から                  
                                   9999           まで                  
 商品 コード . . . . . . . . . . .                  から                  
                                   9999999999     まで                  
 出力  . . . . . . . . . . . . .   *PRINT        *PRINT, *, *OUTFILE    
                                                                        
   ジョブ待ち行列へ投入しますか    N             Y=YES, N=NO            
   ジョブ待ち行列  . . . . . . .   QBATCH         名前 , *JOBD          
     ライブラリー  . . . . . . .     QGPL         名前 , *LIBL, *CURLIB 
                                                                        

                                                                            
                                                                        終り
F3= 終了    F4=プロンプト   F5= 最新表示    F10= 追加のパラメーター            
F12= 取り消し            F13= この画面の使用法    F24= キーの続き           

[解説]

これはQUERYを使って印刷するプログラムのサンブルでサンブル・ライブラリー
QTROBJ に収められている。ソース・ライブラリーは QTRSRC である。
( サンプル・ライブラリーの入手はこちらで )

F10キーを押すと次のように表示される。

                               商品明細表  (QRY001)                          
                                                                             
  選択項目を入力して,実行キーを押してください。                             
                                                                             
  品種 コード . . . . . . . . . . .                  から                      
                                    9999           まで                      
  商品 コード . . . . . . . . . . .                  から                      
                                    9999999999     まで                      
  出力  . . . . . . . . . . . . .   *PRINT        *PRINT, *, *OUTFILE        
                                                                             
    ジョブ待ち行列へ投入しますか    N             Y=YES, N=NO                
    ジョブ待ち行列  . . . . . . .   QBATCH         名前 , *JOBD              
      ライブラリー  . . . . . . .     QGPL         名前 , *LIBL, *CURLIB     
                                                                             
                   追加のパラメーター                                        
                                                                             
  印刷装置  . . . . . . . . . . .   PRT01          名前 , *SAME, *USRPRF...  
  出力待ち行列  . . . . . . . . .   QPRINT         名前 , *DEV               
    ライブラリー  . . . . . . . .     QGPL         名前 , *LIBL, *CURLIB     
  実行優先順位  . . . . . . . . .   30             数値                      
                                                                         終り
 F3= 終了    F4=プロンプト   F5= 最新表示    F12= 取り消し                      
 F13= この画面の使用法                    F24= キーの続き                    

[解説]

追加のパラメータとして表示されたのは印刷装置やOUTQ,実行優先順位などの
パラメータである。
普段はこれらの省略値のままで実行すればよいのだが
別のプリンタに印刷したい場合はここで変更することができる。

よくOUTQを別のオプションで変更できるようにしている例があるが
OUTQをF10キーで変更できるようにしておくと見た目にもスマートで
わかりやすくなる。

やはり省略値では必要最小限のものだけを表示するようにすると
非常にスマートな印象となる。
現代はあまり最初からごちゃごちゃと表示することは好まれない。
あくまでもスッキリでスマートが好まれる時代である。

そのように見せるためにF10で追加のパラメータとしてまとめておけば
スッキリするので試して頂きたい。

[商品明細表 (QRY001)コマンド]

ソースはこちらから

0001.00              CMD        PROMPT(' 商品明細表 ')                          
0002.00              PARM       KWD(SHSCOD01) TYPE(*CHAR) LEN(0004) +           
0003.00                           DFT(    ) +                                   
0004.00                           CHOICE(PNL0075) +                             
0005.00                           PROMPT(' 品種 コード')                          
0006.00              PARM       KWD(SHSCOD02) TYPE(*CHAR) LEN(0004) +           
0007.00                           DFT(9999) +                                   
0008.00                           CHOICE(PNL0076)                               
0009.00              PARM       KWD(SHCODE01) TYPE(*CHAR) LEN(0010) +           
0010.00                           DFT(          ) +                             
0011.00                           CHOICE(PNL0075) +                             
0012.00                           PROMPT(' 商品 コード')                          
0013.00              PARM       KWD(SHCODE02) TYPE(*CHAR) LEN(0010) +           
0014.00                           DFT(9999999999) +                             
0015.00                           CHOICE(PNL0076)                               
0016.00              PARM       KWD(OUTPUT) TYPE(*CHAR) LEN(8) RSTD(*YES) +     
0017.00                           DFT(*PRINT) VALUES(*PRINT * *OUTFILE) +       
0018.00                           PROMPT(' 出力 ')                              
0019.00              PARM       KWD(PRTDEV) TYPE(*NAME) LEN(10) +               
0020.00                           SPCVAL((*SAME) (*USRPRF) (*SYSVAL) +          
0021.00                           (*WRKSTN)) PMTCTL(*PMTRQS) +                  
0022.00                           PROMPT(' 印刷装置 ')                          
0023.00              PARM       KWD(OUTQ) TYPE(OUTQ) PMTCTL(*PMTRQS) +          
0024.00                           PROMPT(' 出力待ち行列 ')                    
0025.00  OUTQ:       QUAL       TYPE(*NAME) LEN(10) SPCVAL((*DEV)) MIN(1)     
0026.00              QUAL       TYPE(*NAME) LEN(10) DFT(*LIBL) +              
0027.00                           SPCVAL((*LIBL) (*CURLIB)) +                 
0028.00                           PROMPT(' ライブラリー ')                    
0029.00              PARM       KWD(JOBQ) TYPE(JOBQ)                          
0030.00  JOBQ:       ELEM       TYPE(*NAME) LEN(1) RSTD(*YES) DFT(N) +        
0031.00                           VALUES(Y N) CHOICE(PNL0074) +               
0032.00                           PROMPT(' ジョブ待ち行列へ投入しますか ')    
0033.00              ELEM       TYPE(JOBD) +                                  
0034.00                           PROMPT(' ジョブ待ち行列 ')                  
0035.00  JOBD:       QUAL       TYPE(*NAME) LEN(10) SPCVAL((*JOBD)) MIN(1)    
0036.00              QUAL       TYPE(*NAME) LEN(10) DFT(*LIBL) +              
0037.00                           SPCVAL((*LIBL) (*CURLIB)) +                 
0038.00                           PROMPT(' ライブラリー ')                    
0039.00              PARM       KWD(RUNPTY) TYPE(*INT2) DFT(30) +             
0040.00                           PMTCTL(*PMTRQS) PROMPT(' 実行優先順位 ')    
0041.00  OUTF:       PMTCTL     CTL(OUTPUT) COND((*EQ '*OUTFILE'))            
0042.00              PARM       KWD(OUTFILE) TYPE(OUTFILE) MIN(0) +           
0043.00                           PMTCTL(OUTF) +                              
0044.00                           PROMPT(' 出力を受け取るファイル ')          
0045.00  OUTFILE:    QUAL       TYPE(*NAME) LEN(10) MIN(1)                    
0046.00              QUAL       TYPE(*NAME) LEN(10) DFT(*LIBL) +              
0047.00                           SPCVAL((*LIBL) (*CURLIB)) +                 
0048.00                           PROMPT(' ライブラリー ')                    
0049.00              PARM       KWD(OUTMBR) TYPE(OUTMBR) MAX(1) PMTCTL(OUTF) +
0050.00                           PROMPT(' 出力メンバー・オプション ')        
0051.00  OUTMBR:     ELEM       TYPE(*NAME) LEN(10) DFT(*FIRST) +             
0052.00                           SPCVAL((*FIRST)) PROMPT(' メンバー ')       
0053.00              ELEM       TYPE(*CHAR) LEN(8) RSTD(*YES) DFT(*REPLACE) + 
0054.00                           VALUES(*REPLACE *ADD) +                     
0055.00                           PROMPT(' レコードの置換または追加 ') 


          

[解説]

タネ明かしは非常に簡単でありパラメータに PMTCTL(*PMTRQS) を指定するだけである。
このソースは真剣に読んで頂く必要はない。
PMTCTL(*PMTRQS) だけ理解すればそれで十分である。
早速、自分のコマンドにも使って頂きたい。