DSPLY (メッセージ表示)

自由形式構文 DSPLY{(E)} {メッセージ {出力待ち行列 {応答}}}
コード 演算項目 1 演算項目 2 結果フィールド 標識
DSPLY (E) メッセージ 出力待ち行列 応答 _ ER _

DSPLY 命令では、プログラムがそのプログラムを要求したディスプレイ・ ワークステーションと通信することができます。 メッセージ応答、または両方のオペランドが指定される必要があります。この命令では、メッセージを表示し、応答を受け入れることができます。

表示されるメッセージの作成には、メッセージ・オペランドおよび場合により応答 オペランドの値が使用されます。 メッセージ は、その値を使用して表示されるメッセージを作成するフィールド名、リテラル、名前付き定数、テーブル名、または配列要素にすることができます。自由形式演算では、メッセージ・オペランドは式にすることができます (式が括弧で囲まれている場合)。メッセージ・オ ペランドには、*M に続けて、メッセージ・ファイル QUSERMSG から検索されるメッセージを識別するメッセージ識別コードも入れることができます。 別のメッセージ・ファイルを使用するためには、OVRMSGF コマンドを使用し ます。 QUSERMSG は、メッセージを受け取るジョブのライブラリー・リストに入ってい るライブラリー中になければなりません。

メッセージ識別コードは、3 桁の英字と 4 桁の数字で構成される 7 桁の長 さでなければなりません (例えば *MUSR0001、これはメッセージ USR0001 が 使用されることを意味しています)。

指定する場合には、出力待ち行列 オペランドは (その値がメッセージを受け取ってオプションで応答を送信できることを意味するオブジェクトの記号名である) 文字フィールド、リテラル、名前のついた定数、テーブル名、または配列要素にすることができます。 プログラム・メッセージ待ち行列以外の待ち行列名を、出力待ち行列 オペランドに含まれる値にすることができます。 この待ち行列をプログラムの実行時に使用するには、その前にオペレーティング・システムに宣言する必要があります。 (待ち行列の作成方法については、CL プログラミングを参照してください)。 定義済みの待ち行列には次の 2 つがあります。

待ち行列
QSYSOPR
メッセージはシステム操作員に送られます。 DSPLY 命令で直ちにシステム 操作員にメッセージを表示できるようにするためには、QSYSOPR メッセージ待 ち行列の重大度レベルがゼロ (00) でなければならないことに注意してくださ い。
*EXT
メッセージは外部メッセージ待ち行列に送られます。
注:
バッチ・ジョブで出力待ち行列 の値が指定されていない場合には、デフォルト値は QSYSOPR です。対話式ジョブの場合には、デフォルト値は *EXT です。

応答 オペランドは任意指定です。指定した場合には、ここに応答が入ります。 応答 には応答が入るフィールド名、テーブル名、または配列要素を入れることができます。 データが入力されなければ、応答 は変わりません。 自由形式仕様書で応答は指定するが出力待ち行列を指定しないようにするには、' '出力待ち行列 として指定します。

自由形式演算仕様書でコーディングされる場合、完全修飾名は結果フィールド・オペランドとして指定すること ができ、式は演算項目 1 および演算項目 2 として使用することができます。しかし、オペランドが完全修飾名よりも複雑である場合には、 式は括弧で囲む必要があります。

DSPLY 例外 (プログラム状況コード 333) を 処理するために、命令コード拡張 'E' またはエラー標識 ER を指定できますが、 両方を指定することはできません。 命令でエラーが発生した場合、例外は 指定された方法によって処理されます。 エラー処理の詳細について は、プログラム例外/エラーを参照してください。

DSPLY 命令をメッセージ・オペランドにメッセージ識別コードを入れないで 指定した場合には、この命令の機能は次のようになります。

メッセージ・オペランドでメッセージ識別コードが指定されていない DSPLY 命令によって書き出されるレコードの形式は次のとおりです。

図 284. DSPLY 命令のレコード様式. 1表示可能な情報の最大長は 52 バイトです。

メッセージ・オペランドにメッセージ識別コードを入れた DSPLY 命令を指定した場合には、この命令の機能は次のようになります。 すなわち、メッセージ・オペランドによって識別されるメッセージが QUSERMSG から検索され、そのメッセージが表示されて、プログラムは (応答 オペランドが指定されている場合に) ユーザーがデータを入力して応答するまで待機します。この応答は結果フィー ルドに入れられます。

メッセージに応答する場合には、次のことに留意してください。

詳細については、メッセージ命令を参照してください。

図 285. DSPLY 命令コードの例
/free
       // Display prompt and wait for response:
       dsply prompt '' result;
       // Display string constructed in an expression:
       dsply ('Length of name is ' + %char(%len(str)) + ' bytes.');
 /end-free