7.43.1 ENDCHECK のパラメータ

IF_ERROR

MSGDTA

MSGF

MSGID

MSGTXT

IF_ERROR

妥当性検査ブロック内の1つ以上の妥当性検査コマンドにより妥当性検査エラーが検出された場合に実行するアクションを指定します。妥当性検査ブロック内で使用される妥当性検査コマンドとして、CONDCHECK、RANGECHECK、VALUECHECK、CALLCHECK、およびDATECHECKがあります。

1つ以上の妥当性検査コマンドにより、*ERRORの「アクション」として指定されている条件が検出されると、妥当性検査ブロック内で妥当性検査エラーが発生します。妥当性検査コマンドで*ERROR「アクション」を指定する方法およびそのタイミングの詳細については、各妥当性検査コマンドのセクションを参照してください。

また、妥当性検査ブロック内でSET_ERRORコマンドが実行されたことが原因で、妥当性検査エラーが発生することもあります。通常、これは、6個の標準妥当性検査コマンド以外の、ユーザーが作成した妥当性検査ロジックを使用した場合に起こります。

最後に、"VE" (妥当性検査エラー)戻りコードを受け取るデータベースI/Oコマンドが(妥当性検査ブロック内で)実行されたことが原因で、妥当性検査エラーが発生することもあります。通常、妥当性検査エラーを受け取るのは、INSERT、UPDATE、およびDELETEデータベースI/Oコマンドのみです。

デフォルト値*LASTDISを指定した場合、直前に表示されていた画面に制御が戻されます。妥当性検査ブロック内で妥当性検査に失敗したフィールドまたはSET_ERRORコマンドの実行対象となったフィールドが反転表示され、画面上でエラーのある最初のフィールドにカーソルが配置されます。

*NEXTを指定すると、制御が次のコマンドに渡されます。

*RETURNを指定すると、プログラム・メインラインでは制御が呼び出し元に戻され、サブルーチンでは制御が呼び出し元ルーチンまたはプログラム・メインラインに戻されます。

上記の値をどれも使用しない場合は、制御を渡す先の有効なコマンド・ラベルを指定してください。

*LASTDISは、「直前の表示画面」がない場合(バッチ・ファンクション内など)でも有効です。この場合、ファンクションが異常終了し、該当するエラー・メッセージが発行されます。

MSGTXT

最大80文字のメッセージ・テキストを指定できます。メッセージ・テキストを指定するときは、引用符で囲んでください。MSGTXTパラメータまたはMSGID/MSGFパラメータのいずれかを使用してください。両方は使用できません。

MSGID

使用するメッセージとして、標準メッセージ識別子を指定できます。メッセージ識別子は7文字である必要があります。このパラメータは、MSGFパラメータと組み合わせて使用してください。

MSGF

MSGIDパラメータで指定されたメッセージが記述されているメッセージ・ファイルを指定します。このパラメータは修飾名です。メッセージ・ファイル名を指定する必要があります。必要に応じて、メッセージ・ファイルが存在するライブラリを指定することもできます。ライブラリ名を指定しない場合は、ライブラリ*LIBLが使用されます。

MSGDTA

このパラメータは、必ずMSGIDおよびMSGFパラメータと組み合わせて使用してください。MSGIDパラメータに指定されたメッセージ内の"&n"代替変数を置き換えるために使用される1~20個の値を指定します。

このパラメータの値として、フィールド名、拡張可能なグループ式、英数字リテラル、または数値リテラルを指定できます。これらの値は、メッセージに定義されている代替変数のタイプ、長さ、および指定順序と一致している必要があります。

このパラメータで指定するフィールドのタイプが符号付き(ゾーンとも言う) 10進数の場合、メッセージ内でそれに対応する"&n"変数のタイプは*CHAR (文字)である必要があります。これは、負の値を処理するときに問題になる場合があります。この場合は、代わりにパック10進数形式を使用してください。

メッセージ内の"&n"変数のタイプが*DEC (パック10進数)の場合、このメッセージ内で指定されるフィールドのタイプもパック10進数である必要があります。

このパラメータで英数字リテラルを使用するときは、末尾ブランクが重要になる場合があることを覚えておいてください。例えば、メッセージが以下のように定義されているとします。

"&1 are out of stock ... reorder &2"
 

ここで、&1が(*CHAR 10)として、&2が(*DEC 7 0)として定義されている場合、以下のように指定すると、メッセージが正しく発行されません。

MSGDTA('BOLTS' #ORDQTY)
 

または、以下のように指定した場合も同様です。

MSGDTA('BOLTS     ' #ORDQTY)
 

LANSAに末尾ブランクを認識させるには、このパラメータを以下のように指定する必要があります。

MSGDTA('''BOLTS     ''' #ORDQTY)
 

拡張可能な式を使用する場合、拡張フィールド・リストが、パラメータで許容される代替変数の最大数を超えないようにしてください。