コマンド

49. 入力必須パラメータ

コマンドで入力必須パラメータの指定の方法を紹介する。
最初に入力必須がない場合の動作を見てみよう。

                      データ・ベースの表示/更新  (DSPFL)        
                                                                 
 選択項目を入力して,実行キーを押してください。                  
                                                                 
 ファイル  . . . . . . . . . . .                  名前           
   ライブラリー  . . . . . . . .     *LIBL        名前 , *LIBL   
 メンバー  . . . . . . . . . . .   *FIRST         名前 , *FIRST  
                                                                 

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

[解説]

このままファイル名も入力しないでただ実行キーを押すと結果は
次のようになる。

    > DSPFL                                                                     
       パラメーター OBJ の値 '          ' が有効な名前でない。                  

[解説]

これはDSPFLの処理プログラムでエラーになっていることを示している。
このコマンド・ソースを次のように修正してみる。

0001.00              CMD        PROMPT(' データ・ベースの表示/更新 ')          
0002.00              PARM       KWD(FILE) TYPE(FILE) MIN(1) CHOICE(*NONE) +     
0003.00                           PROMPT(' ファイル ')                          
0004.00              PARM       KWD(MBR) TYPE(*NAME) LEN(10) DFT(*FIRST) +      
0005.00                           SPCVAL((*FIRST)) PROMPT(' メンバー ')         
0006.00 FILE:        QUAL       TYPE(*NAME) +                                   
0007.00                         LEN(10)                                         
0008.00              QUAL       TYPE(*NAME) LEN(10) DFT(*LIBL) +                
0009.00                           SPCVAL((*LIBL)) PROMPT(' ライブラリー ')      
0010.00              PARM       KWD(ASCII) TYPE(*CHAR) LEN(10) RSTD(*YES) +     
0011.00                           DFT(*SHIFT_JIS) VALUES(*SHIFT_JIS *JIS) +     
0012.00                           PMTCTL(*PMTRQS) PROMPT('ASCII コード ')       

[解説]

修正部分は上記の MIN(1) を追加しただけである。
PARM パラメータは初期値が MIN(0)のままであるので
意図的に MIN(1) を追加しておかないと入力漏れを認めてしまうことになる。
コマンドをコンパイルした実行結果は次のとおり

[解説]

ご欄のようにCLプログラムでチェックしなくてもOSが入力漏れを検査して
エラー・メッセージを出力してくれるようになる。

[注意!!]

ただし MIN(1)が全く効かない場合がある。
これはIBM iのバグのように見えるが CHOICEPGM を定義している場合は MIN(1)は全く効かない。
IBM に問い合わせを予定している。