コマンド

51. プロンプト制御

プロンプト制御(PMTCTL)とはコマンドのパラメータの表示を動的に変えることである。
つまりエンド・ユーザーの入力の値に従って次に表示するパラメータを
変化させることである。

例えば

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


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

このDSPFDコマンドにおいて 出力を *OUTFILE として指定すると
次のように出力ファイルを記述するパラメータが現れる。

                           ファイル記述表示  (DSPFD)                          
                                                                              
 選択項目を入力して,実行キーを押してください。                               
                                                                              
 ファイル  . . . . . . . . . . . > SHOHIN         名前,総称* , *ALL         
  ライブラリー  . . . . . . . . . . . >   QTRFIL       名前 , *LIBL, *CURLIB...    
 情報のタイプ  . . . . . . . . .   *ALL          *ALL, *BASATR, *ATR...       
                値の続きは+                                                  
 出力  . . . . . . . . . . . . . > *OUTFILE      *, *PRINT, *OUTFILE          
 ファイル属性  . . . . . . . . .   *ALL          *ALL, *DSPF, *PRTF, *DKTF... 
                値の続きは+                                                  
 出力を受け取るファイル  . . . .                  名前                        
  ライブラリー  . . . . . . . . . . .     *LIBL        名前 , *LIBL, *CURLIB       
 出力メンバー・オプション :                                                   
   出力を受け取るメンバー  . . .   *FIRST         名前 , *FIRST               
   レコードの置き換えまたは追加    *REPLACE      *REPLACE, *ADD               


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

[解説]

このようにエンド・ユーザーの入力値に応じて次に表示するパラメータを制御することを
プロンプト制御と言う。

それでは次のようなサンプルを紹介する。

[置場別在庫照会: SZAIKO]

                             置場別在庫照会  (SZAIKO)      
                                                           
  選択項目を入力して,実行キーを押してください。           
                                                           
 1= 本社 2= 工場 3= 営業所  . . . .   1             1, 2, 3  
                                                           

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

2=工場を選択すると次のように工場の選択が続いて表示される。

                             置場別在庫照会  (SZAIKO)      
                                                           
  選択項目を入力して,実行キーを押してください。           
                                                           
 1= 本社 2= 工場 3= 営業所 . . . . > 2             1, 2, 3  
 01= 神奈川工場 02= 浜松製作所                    01, 02  

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

3=営業所を選択した場合は営業所コードの入力欄が表示される。

                            置場別在庫照会  (SZAIKO)        
                                                            
 選択項目を入力して,実行キーを押してください。             
                                                            
1= 本社 2= 工場 3= 営業所  . . . > 3             1, 2, 3    
 営業所コード  . . . . . . . . .                  文字値    
                                                            

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

このコマンド・ソースは次のとおりである。

[置場別在庫照会: SZAIKO]

ソースはこちらから

0001.00              CMD        PROMPT(' 置場別在庫照会 ')                      
0002.00              PARM       KWD(SHKBN) TYPE(*CHAR) LEN(1) RSTD(*YES) +      
0003.00                           DFT(1) VALUES(1 2 3) +                        
0004.00                           PROMPT('1= 本社 2= 工場 3= 営業所 ')          
0005.00              PARM       KWD(KOJO) TYPE(*CHAR) LEN(2) RSTD(*YES) +       
0006.00                           VALUES(01 02) PMTCTL(KOJO) +                  
0007.00                           PROMPT('01= 神奈川工場 02= 浜松製作所 ')      
0008.00              PARM       KWD(EIGYO) TYPE(*CHAR) LEN(4) PMTCTL(EIGYO) +   
0009.00                           PROMPT(' 営業所コード ')                      
0010.00  KOJO:       PMTCTL     CTL(SHKBN)  COND((*EQ '2'))                     
0011.00  EIGYO:      PMTCTL     CTL(SHKBN)  COND((*EQ '3'))   


                  

[解説]

コマンド・プロンプト制御のキーとなるのが

0002.00              PARM       KWD(SHKBN) TYPE(*CHAR) LEN(1) RSTD(*YES) +      
0003.00                           DFT(1) VALUES(1 2 3) +                        
0004.00                           PROMPT('1= 本社 2= 工場 3= 営業所 ') 

の入力であるがこの入力値による制御を示しているのが次のコマンド・プロンプト制御である。

0010.00  KOJO:       PMTCTL     CTL(SHKBN)  COND((*EQ '2'))                     
0011.00  EIGYO:      PMTCTL     CTL(SHKBN)  COND((*EQ '3')) 

 

パラメータSHKBN が 2である場合を KOJO と定義して
パラメータSHKBN が 3である場合を EIGYO と定義している。

これらの定義によって KOJOのときは

0005.00              PARM       KWD(KOJO) TYPE(*CHAR) LEN(2) RSTD(*YES) +       
0006.00                           VALUES(01 02) PMTCTL(KOJO) +                  
0007.00                           PROMPT('01= 神奈川工場 02= 浜松製作所 ')

 

を表示して EIGYO のときは

0008.00              PARM       KWD(EIGYO) TYPE(*CHAR) LEN(4) PMTCTL(EIGYO) +   
0009.00                           PROMPT(' 営業所コード ')

 

を表示するようにしている。

なおプロンプト制御(PMTCTL)はコマンド・ソースのどこに入れてもよいが
一番最後にまとめておくとわかりやすくなる。