8.96 GET_MESSAGE

RDMLファンクションのプログラム待ち行列から、この次のメッセージの詳細を取得します。

通常、戻されたメッセージの詳細は、RDMLファンクションにより標準的ではない方法で処理または印刷されます。

通常、RDMLファンクションのプログラム待ち行列のメッセージは、ユーザーに次に表示される画面の22/24行目に表示され、その後自動的にクリア/削除されます。

メッセージは、オペレーティング・システム・コマンド、組み込み関数、無効なI/O要求および/またはMESSAGE、VALUECHECKなどのRDMLコマンドによってプログラム・メッセージ待ち行列に入れられている可能性があります。

移植性に関する考慮事項

この組み込み関数がLANSAスーパーサーバーで実行される場合は、メッセージ・ファイルとメッセージID番号を取得しません。後述の例の注を参照してください。

 

引数

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

任意

待ち行列からメッセージを削除します。

Y - メッセージは削除される

N - メッセージは削除されない

デフォルトはYです。

1

1

 

 

 

戻り値

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

メッセージ戻りコード

OK = メッセージが戻された

NO = メッセージが見つからなかった

2

2

 

 

2

A

任意

メッセージ・テキスト

1

132

 

 

3

A

任意

メッセージ番号

1

7

 

 

4

A

任意

メッセージ・ファイル名

1

10

 

 

5

A

任意

メッセージ・ファイル・ライブラリ

1

10

 

 

6

A

任意

メッセージ代替変数

1

132

 

 

 

バッチ・プログラムでNAMESファイルに新しい名前と住所を挿入します。エラーが発生した場合、例外レポートに名前や住所の詳細と共に関連のエラー・メッセージをすべて印刷します。

DEFINE     FIELD(#ERRTXT) TYPE(*CHAR) LENGTH(100) 
           LABEL('Error :')
DEF_LINE   NAME(#NAME)  FIELDS(#CUSTNO #ADDRESS1 
                               #ADDRESS2 #ZIPCODE)
DEF_LINE   NAME(#ERROR) FIELDS(#ERRTXT) IDENTIFY(*LABEL)

INSERT     FIELDS(#NAME) TO_FILE(NAMES) VAL_ERROR(*NEXT)
IF_STATUS  IS_NOT(*OKAY)
      PRINT      LINE(#NAME)
      USE        BUILTIN(GET_MESSAGE) TO_GET(#RETCODE #ERRTXT)
      DOWHILE    COND('#RETCODE = OK')
           PRINT      LINE(#ERROR)
           USE        BUILTIN(GET_MESSAGE) 
                      TO_GET(#RETCODE #ERRTXT)
      ENDWHILE
ENDIF

注:

同じプログラムをIBM iで実行した場合とLANSAスーパーサーバー・モードで実行した場合では異なるメッセージが作成されます。
IBM iでこのBIFを使用して取得したメッセージは以下のように表示されます。

Message text:      Record to be updated has been changed by another job/user
Message number:    IOM0017
Message file name: DC@M01

(IBM iに対して) LANSAスーパーサーバー・モードで実行した場合は以下のように表示されます。

Message text:      Record to be updated has been changed by another job/user
Message number:    *STCMSG
Message file name: 2

これは設計検討事項ですが、技術的に複雑なため短期的には変更されることはありません。