コマンド

67. 最善のコマンド・プロンプトとは

帳表出力などのプログラムの実行で
データの出力範囲を指定できるようにしたい場合が
あるがそのようなときはDSPF+CLPを作るよりは
コマンド・プロンプト表示させたほうが便利である。
_

例えば

                         商品マスター一覧表  (PGM106)                 
                                                                      
選択項目を入力して,実行キーを押してください。                        
                                                                      
品種コード  . . . . . . . . . .                  から                 
                                  9999           まで                 
商品コード  . . . . . . . . . .                  から , リストは F4   
                                  9999999999     まで                 
出力  . . . . . . . . . . . . .   *PDF          *PRINT, *PDF          
                                                                      

[解説]

これはコマンド・プロンプトによる範囲指定である。
DSPFで作るよりコマンド・プロンプト表示につたほうが

①DSPFの画面設計をする必要がない
②OSによる画面レイアウトなのでつねに最適な画面レイアウトになる。
③エンド・ユーザーによる操作も統一される。

という利点がある。
_

[ コマンド:PGM106 ]

ソースはこちらから

0001.00              CMD        PROMPT(' 商品マスター一覧表 ')                   
0002.00              PARM       KWD(HNSFROM) TYPE(*CHAR) LEN(4) CHOICE(*PGM) +   
0003.00                           CHOICEPGM(QTROBJ/PGM106P) +                    
0004.00                           PROMPT(' 品種コード ')                         
0005.00              PARM       KWD(HNSEND) TYPE(*CHAR) LEN(4) DFT(9999) +       
0006.00                           CHOICE(*PGM) CHOICEPGM(QTROBJ/PGM106P)         
0007.00              PARM       KWD(SHFROM) TYPE(*CHAR) LEN(10) CHOICE(*PGM) +   
0008.00                           CHOICEPGM(QTROBJ/PGM106PE) +                   
0009.00                           PROMPT(' 商品コード ')                         
0010.00              PARM       KWD(SHEND) TYPE(*CHAR) LEN(10) +                 
0011.00                           DFT(9999999999) CHOICE(*PGM) +                 
0012.00                           CHOICEPGM(QTROBJ/PGM106P)                      
0013.00              PARM       KWD(OUTPUT) TYPE(*CHAR) LEN(8) RSTD(*YES) +      
0014.00                           DFT(*PDF) VALUES(*PRINT *PDF) +                
0015.00                           PROMPT(' 出力 ')                               

さてここでメニューにコマンド・プロンプト表示させるには

 ?PGM106

のようにコマンド文字列の先頭に「?」の文字を付加しておくだけで
前述のようにコマンド・プロンプトされて各パラメータもすべて
表示される。
_

さてここからが問題であるがそれでは任意のパラメータの初期値を
変更して表示するにはどのようにすればよいのだろうか?
よくあるのは

PGM106 ??OUTPUT(*PRINT)

として表示する方法であるが
これだと

                         商品マスター一覧表  (PGM106)          
                                                               
選択項目を入力して,実行キーを押してください。                 
                                                               
出力  . . . . . . . . . . . . . > *PRINT        *PRINT, *PDF   
                                                               

のような表示になってしまい ?? を付加したパラメータ以外は表示されない。
残りのすべてのパラメータも表示されるようにするには

?PGM106 ??OUTPUT(*PRINT)

のようにやはりコマンドの先頭に文字 ? を付加すると

                         商品マスター一覧表  (PGM106)                    
                                                                         
選択項目を入力して,実行キーを押してください。                           
                                                                         
品種コード  . . . . . . . . . .                  から                    
                                  9999           まで                    
商品コード  . . . . . . . . . .                  から , リストは F4      
                                  9999999999     まで                    
出力  . . . . . . . . . . . . . > *PRINT        *PRINT, *PDF             

のようにしてすべてのパラメータも表示してしかも
変更することもできる。
ただし ?? を付加したパラメータには初期値が変更されていることを
示す > が表示されてしまうのでこれは表示上、体裁は良くない。
この > も表示されないようにするには
初期値を変更するパラメータの先頭に ?? ではなく ?< を付加すると > 記号が表示されずに

                         商品マスター一覧表  (PGM106)               
                                                                    
選択項目を入力して,実行キーを押してください。                      
                                                                    
品種コード  . . . . . . . . . .                  から               
                                  9999           まで               
商品コード  . . . . . . . . . .                  から , リストは F4 
                                  9999999999     まで               
出力  . . . . . . . . . . . . .   *PRINT        *PRINT, *PDF        

として非常にスマートで綺麗な表示となる。
従って最善のコマンド・プロンプトにするには

[結論]


①コマンドの先頭に文字 ? を付加する
②変更したいパラメータの先頭には文字列 ?< を付加する


ようにすればよいことになる。
これが結論である。(ただし第1番目のパラメータには ?< が使えない場合がある ) _

なお IBM iマニュアルの CL コマンドの選択プロンプトの使用 は
こちらで参照することができる。

IBM i KnowledgeCenter の選択コマンド・プロンブトの設定方法を
まとめると

選択プロンプト 変更可能 >の表示 説明
?? × パラメータ表示され入力可能
?* × パラメータ表示されるが変更不可
?< × パラメータ表示され入力可能
?/ × × IBMが使用
?- N/A N/A パラメータは表示されない
?& × F9のみで表示
?% × × F9のみで表示

詳細は IBM Knowledge Centerの説明を参照のこと。
_