コマンド

71. コマンドを制御するプログラムの要約

コマンドの動作は様々なプログラムを使って制御することが
できる。
しかもそれらのプログラムが呼び出される時点は
同じ一定なものではない。
それらを正しく使い分けるためにコマンドを制御するプログラム
の要約をまとめてみた。

パラメータ キー・ワード 制御プログラム 目的 呼出される時点
1 CMD PMTOVRPGM 一時変更プログラム コマンドの
初期値をセット
コマンドの表示前または
KEYPARM入力直後
2 CMD VLDCKR 妥当性検査プログラム 入力値の妥当性検査 CPPプログラムの実行直前
3 PARM CHOICEPGM プログラム選択 選択値の動的な表示 F4キー
4 PARM PMTCTLPGM プロンプト制御プログラム バラメータの表示を制御

[解説]

■ KEYPARMは使うなら続けて。一時変更プログラムとは違う

一時変更プログラムは基本的にはコマンドが起動される直前に呼び出されてパラメータの初期値をセットして
表示するために使われるのだがパラメータ内でKEYPARM=*YESが指定されたパラメータがあると
コマンドの初期表示の直前ではなくKEYPARM=*YESが指定されたパラメータがすべて入力し終えたときに
呼び出されて最後のKEYPARM=*YESとなった以降のパラメータをセットするのに使われる。
最後に」と表現したのはKEYPARM=*YESハパラメータの途中のパラメータに指定して
実行することはできない。
KEYPARM=*YESを指定するとき必ず最初のパラメータからN番目のパラメータまで
KEYPARM=*YESとしなければならない。

このとき一時変更プログラムにもKEYPARM=*YESを指定したパラメータの値が複数個渡される。
このようにKEYPARM=*YESをひとつでも指定するとコマンドの起動直前に一時変更プログラムは
起動されることはないのでコマンド全体の初期値をセットすることはできない。
この問題を解決してコマンド全体の初期値をセットするにはコマンドを別のオーバーラッフ・プログラムを
用意してそこで初期値をセットしてコマンドを呼び出すようにしなければせならない。
いずれにせよKEYPARM=*YESを指定するのであれば最初のパラメータからのセットが
必要である。

■ 妥当性検査プログラム

コマンドのパラメータを入力して実行して適切でないパラメータ値が見つかると
エラーになって終了することになるがそうなるともう一度コマンドを呼び出して
再入力の必要が出てくる。
これを何度も繰り返すのは無駄なことであるので妥当性検査プログラムを
指定しておくとコマンドがコマンドの実行プログラム(CPP)に渡される前に
コマンド入力画面の途中でエンド・ユーザーにエラーを表示して
入力値を訂正させることができる。

■ プログラム選択

よくIBMコマンドで「名前、リストはF4」という表示が続いていて
F4キーを押すと選択値の候補となるリストが表示されることがあるが
あの機能を実現することができる。

■ プロンプト制御プログラム

パラメータの入力値に応じて次に表示するパラメータを選択する機能を
提供する。多くは PMTCTLによって制御することが多いが
プログラムによって制御も可能となる。