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