機能説明
指定した複数のメッセージキューのいずれかのメッセージキューよりメッセージを参照します。
記述形式
---------------------------------------------------------------------------------------- CALL "MQDPEEKMSGEX" USING メッセージキューグループアドレス格納域名, 参照モード格納域名, 参照中止条件格納域名, メッセージキュー番号格納域名, メッセージヘッダ域名, メッセージ本体域名, 領域長格納域名, 復帰情報域名, 復帰値格納域名 ----------------------------------------------------------------------------------------
パラメタ
MQDCONNECTQEXプログラムから通知されたメッセージキューグループのアドレスをそのまま指定します。
メッセージがない場合の対処を指定します。
1: 非同期モード。メッセージキューグループ内のすべてのメッセージキューにメッセージがない場合には、すぐに復帰します。
2: 同期モード。メッセージキューグループ内のいずれかのメッセージキューにメッセージが到着するまで待ちます。
メッセージの参照中止条件を指定します。
1: メッセージキューグループ内のいずれかのメッセージキューが、削除・切断・使用禁止またはアクセス禁止の場合、メッセージの参照を中止して復帰します。
2: メッセージキューグループ内のすべてのメッセージキューが、削除・切断・使用禁止またはアクセス禁止の場合、メッセージの参照を中止して復帰します。
メッセージキューの番号が通知されます。番号は、MQDCONNECTQEXプログラムで指定したメッセージキュー名一覧の出現番号で、以下のように通知されます。
正数: メッセージキューの出現番号(先頭は1)
-1 : メッセージキューに関係なく異常復帰した場合
メッセージヘッダを入れる領域を指定します。領域は発行元が用意します。メッセージヘッダの詳細については、“8.2.29 パラメタの詳細説明”を参照してください。
メッセージ本体を入れる領域を指定します。領域は発行元が用意します。メッセージ本体の詳細については、“8.2.29 パラメタの詳細説明”を参照してください。
メッセージ本体域の領域の長さを指定します。
例外処理のための復帰情報が通知されます。エラー詳細コードには以下の値(10進数)が返されます。復帰情報の詳細については、“8.4 復帰情報の説明”を参照してください。
メッセージキュー番号格納域に“-1”を通知するエラー詳細コード
16 (SYNTAX), 18 (NOSYSTEM), 19 (NOCONNECT), 21 (INVALIDAPI), 25 (DOWNRCV), 29 (DEADLOCK), 30 (BACKOUT), 32 (IO), 33 (NOMEMORY), 36 (PROCESSOVER), 38 (BUFFERLACK), 39 (TRANFILE), 40 (MSGFILE), 51 (UNITMSGOVER), 52 (UNITSUMOVER), 135 (MSGBODYLENGTH), 146 (PEEKMODE), 150 (PEEKCOND)
メッセージキュー番号格納域に正数を通知するエラー詳細コード
66 (NOQUE), 68 (NOMSG), 70 (QUEEND), 73 (QUERINHIBIT), 74 (PURGEMSG), 76 (UNITNOTCONT)
メッセージキュー番号格納域に正数、または、“-1”を通知するエラー詳細コード
22 (NOCONNECTQUE)
メッセージキュー番号格納域に“-1”を通知するエラー詳細コード
16 (SYNTAX), 18 (NOSYSTEM), 19 (NOCONNECT), 21 (INVALIDAPI), 25 (DOWNRCV), 29 (DEADLOCK), 30 (BACKOUT), 31 (OTHERTHR), 32 (IO), 33 (NOMEMORY), 36 (PROCESSOVER), 38 (BUFFERLACK), 39 (TRANFILE), 40 (MSGFILE), 51 (UNITMSGOVER), 52 (UNITSUMOVER), 135 (MSGBODYLENGTH), 146 (PEEKMODE), 150 (PEEKCOND)
メッセージキュー番号格納域に正数を通知するエラー詳細コード
66 (NOQUE), 68 (NOMSG), 70 (QUEEND), 73 (QUERINHIBIT), 74 (PURGEMSG), 76 (UNITNOTCONT)
メッセージキュー番号格納域に正数、または、“-1”を通知するエラー詳細コード
22 (NOCONNECTQUE)
本プログラムの処理結果が通知されます。詳細は復帰値の説明を参照してください。
復帰値
本プログラムの処理結果が、復帰値格納域と特殊レジスタ“PROGRAM-STATUS”で以下のように通知されます。
正常時: 0
異常時: -1
注意事項
本プログラムを使用する場合は、事前にMQDCONNECTQEXプログラムでメッセージキューに接続してください。
同一のメッセージキューグループのアドレスを用いて、本プログラムとMQDGETMSGEXプログラムを使用することはできません。
メッセージの参照は、特定のメッセージキューに集中しないようにメッセージが存在するメッセージキューの中から任意に参照します。ただし、参照したメッセージが1ユニット複数メッセージの場合は、1ユニットすべてのメッセージを参照するまで同一のメッセージキューより参照します。
カーソルは、指定したメッセージキューごとに以下の動作になります。
メッセージ参照後、カーソルを次のメッセージに位置付けます。
正しく参照されなかった場合には、カーソル位置は保証されません。カーソルをメッセージキューの先頭メッセージに移動するためには、MQDSEEKMSGEXプログラムを使用してください。
直前のトランザクションを取り消した場合には、カーソルを先頭メッセージに位置付けてから本プログラムを実行してください。
複数のアプリケーションが、同じメッセージキューから受信と参照を同時に行うことは避けてください。1ユニット複数メッセージの場合は、処理結果が保証されません。
エラー詳細コード“29”は、メッセージ格納ファイルとしてデータベースを使用している場合に、グローバルトランザクション処理中に限り通知されます。
メッセージがない場合の対処として“同期モード”を指定している、かつ、メッセージの参照中止条件として“すべてのメッセーキュー”を指定している場合の、待ち受けを解除して停止する方法を以下に示します。
メッセージキューグループのすべてのメッセージキューをアクセス禁止にする。
メッセージキューグループ内のメッセージキューに“停止”を指示するメッセージを送信する。
エラー詳細コード“31”は、Symfoware/RDBトランザクション連携機能を使用している場合に限り通知されます。