CL コマンドの選択プロンプトの使用

CL コマンドの選択プロンプトは、長い構文のコマンドを使用する際に、 一部のパラメーターについてはプロンプトを表示したくない場合に、特に便利な機能です。

選択プロンプトは対話式プロンプトの中で使用することもできますし、CL プロシージャーまたはプログラム内で使用するためにソースとして (SEU で) 入力することもできます。 選択プロンプトを指定するソースは SEU を使用して入力することができますが、SEU でコマンドを入力している過程で選択プロンプトを使用することはできません。

選択プロンプトを使用して、次のことを行うことができます。

  • プロンプトの必要なパラメーターの選択
  • 保護したいパラメーターの判別
  • プロンプトからのパラメーターの除外

選択プロンプトに適用される制約事項は次のとおりです。

  • 次の場合は、コマンド名またはラベルの前に? (疑問符) を付ける必要があります。
    • 1 つまたは複数の選択プロンプト・オプションが ?- (疑問符、負符号) である場合。
    • CPF6805 メッセージ (コンパイルが成功したのに、 コマンド上に診断問題があることを示すメッセージ) を受け取らないようにする場合。
  • パラメーターは、位置により指定することができますが、 その前に選択プロンプト文字を付けてはなりません。
  • 選択プロンプトの対象とするパラメーターは、 キーワード形式でなければなりません。
  • 選択プロンプト文字とキーワードとの間にブランクを入れてはなりません。
  • 選択プロンプトは、パラメーター・レベルでだけ使用することができます。 したがって、値のリスト中の特定のキーワード値を指定することはできません。
  • ?- は、プロンプト一時変更プログラムでは使用できません。
  • パラメーターが必須の場合は、?? 選択プロンプトを使用する必要があります。

    コマンドのプロンプトが表示されるときに入力欄が強調表示されるため、 パラメーターが必須であることを示すことができます。

ユーザーが指定した値には、選択プロンプトの場合にも通常のプロンプトの場合にも、 その値の前に特殊記号 (>) が付けられます。パラメーター・プロンプトのユーザー指定の値の前にこの記号が付いていない場合には、 そのコマンドのデフォルト値がコマンド処理プログラムに渡されます。

PARM、ELEM、または QUAL の各コマンド定義ステートメントに PASSATR(*YES) が指定され、 しかも コマンド定義変更 (CHGCMDDFT) コマンドを使用してそのデフォルト値が変更されている場合には、 変更後のデフォルト値はデフォルト値としてではなく、 (> 記号を用いて) ユーザー指定の値として表示されます。 変更した PARM、ELEM、または QUAL の各コマンド定義ステートメントのデフォルト値を当初のデフォルト値に戻すと、> 記号が除かれます。

選択プロンプトの使用中に F5 キーを押せば、 最初に画面に表示されていた値を再度表示することができます。

選択プロンプトで表示されるパラメーターの値を、CL 変数を使用して指定した場合にはプロンプトの値を変更することができ、 コマンドの実行時には変更後の値が使用されます。 プロシージャーまたはプログラム内の変数の値は変更されません。 CL プロシージャーに次のものが入っている場合、

OVRDBF ?*FILE(FILEA) ??TOFILE(&FILENAME) ??MBR(MBR1)

3 つのパラメーター、FILE、TOFILE、および MBR が、プロンプト画面に示されます。 FILE パラメーターに指定されている値は変更することはできませんが、TOFILE および MBR パラメーターの値は変更することができます。 CL 変数 &FILENAME の値が FILE1 であり、それを FILE2 に変更したいとします。 コマンドの実行時には FILE2 の値が使用されますが、 プロシージャー内の &FILENAME の値は変更されません。 次の表は、各種の選択プロンプト文字と、その結果とられる処置を示しています。

入力 表示される値 保護 指定がない場合に CPP に渡される値 > 記号の表示
??KEYWORD() デフォルト値 デフォルト値
??KEYWORD(VALUE)
?*KEYWORD() デフォルト値 デフォルト値
?*KEYWORD(VALUE)
?<KEYWORD() デフォルト値 デフォルト値
?<KEYWORD(VALUE) デフォルト値
?/KEYWORD() デフォルト値 デフォルト値
?/KEYWORD(VALUE) デフォルト値
?-KEYWORD() なし N/A デフォルト値 N/A
?-KEYWORD(VALUE) なし N/A N/A
?&KEYWORD() デフォルト値 デフォルト値
?&KEYWORD(VALUE) デフォルト値
?%KEYWORD() デフォルト値 デフォルト値
?%KEYWORD(VALUE) デフォルト値
入力 F5 を押すか消去した時に表示される値 説明
??KEYWORD() デフォルト値 コマンドのデフォルト値を表示する通常のキーワード・プロンプト
??KEYWORD(VALUE) プログラム指定のデフォルト値を表示する通常のキーワード・プロンプト
?*KEYWORD() デフォルト値 コマンドのデフォルト値だけが使用される場合に、 保護されたプロンプトが (情報として) 表示されます。
?*KEYWORD(VALUE) プログラム指定の値だけが使用される場合に、 保護されたプロンプトが (情報として) 表示されます。 例えば、値を情報として表示するだけで変更できないようにしたい場合に指定します。
?<KEYWORD() デフォルト値 コマンドのデフォルト値を表示する通常のキーワード・プロンプト
?<KEYWORD(VALUE) プログラム指定のデフォルト値を表示する通常のキーワード・プロンプト
?/KEYWORD() デフォルト値 IBM が使用するために予約済みです。
?/KEYWORD(VALUE) IBM が使用するために予約済みです。
?&KEYWORD() デフォルト値 コマンドのデフォルト値を表示する通常のキーワード・プロンプト
?&KEYWORD(VALUE) プログラム指定のデフォルト値を表示する通常のキーワード・プロンプト
?%KEYWORD() デフォルト値 コマンドのデフォルト値だけが使用される場合に、 保護されたプロンプトが (情報として) 表示されます。
?%KEYWORD(VALUE) プログラム指定の値だけが使用される場合に、 保護されたプロンプトが (情報として) 表示されます。 例えば、値を情報として表示するだけで変更できないようにしたい場合に指定します。

選択プロンプトは、QCMDEXC や QCMDCHK プログラムで使用することができます。 呼び出しの形式は次のとおりです。

CALL PGM(QCMDEXC または QCMDCHK) PARM(コマンド コマンド長さ)

次の表に、選択プロンプト文字についての要約を示します。

選択プロンプト文字 説明
?? パラメーターが表示され、入力可能です。
?* パラメーターは表示されますが、入力可能ではありません。 ユーザー指定の値がすべて、コマンド処理プログラムに渡されます。
?< パラメーターが表示され、入力可能ですが、表示されている値を変更しない場合、 コマンドのデフォルト値がコマンド処理プログラムに渡されます。
?/ IBM が使用するために予約済みです。
?– パラメーターは表示されません。 ユーザー指定の値 (またはデフォルト値) がコマンド処理プログラムに渡されます。 プロンプト一時変更プログラムでは使用できません。
?& パラメーターは、F9=すべてのパラメーターが押されるまで表示されません。 表示されると、入力可能になります。 パラメーター上に表示された値が変更されない限り、 コマンドのデフォルト値が CPP に送られます。
?% パラメーターは、F9=すべてのパラメーターが押されるまで表示されません。 表示されても、入力は不可です。 コマンドのデフォルト値が CPP に送られます。