MessageQueueDirector説明書
目次 索引 前ページ次ページ

第1部 基本機能編> 第8章 プログラムインタフェース> 8.2 COBOL言語インタフェース> 8.2.1 各インタフェースの説明

8.2.1.21 MQDGETMSGEX (複数のメッセージキューからメッセージを受信する)

機能説明

 指定した複数のメッセージキューのいずれかのメッセージキューよりメッセージを受信します。

記述形式

----------------------------------------------------------------------------------------
      CALL  "MQDGETMSGEX" USING  メッセージキューグループアドレス格納域名,
                       受信モード格納域名, 受信中止条件格納域名,
                       メッセージキュー番号格納域名, メッセージヘッダ域名,
                       メッセージ本体域名, 領域長格納域名,
                       復帰情報域名, 復帰値格納域名
----------------------------------------------------------------------------------------

パラメタ

メッセージキューグループアドレス格納域: POINTER

 MQDCONNECTQEXプログラムから通知されたメッセージキューグループのアドレスをそのまま指定します。

受信モード格納域: PIC 9(9) COMP-5

 メッセージがない場合の対処を指定します。

1: 非同期モード。メッセージキューグループ内のすべてのメッセージキューにメッセージがない場合には、すぐに復帰します。
2: 同期モード。メッセージキューグループ内のいずれかのメッセージキューにメッセージが到着するまで待ちます。

受信中止条件格納域: PIC 9(9) COMP-5

 メッセージの受信中止条件を指定します。

1: メッセージキューグループ内のいずれかのメッセージキューが、削除・切断・使用禁止またはアクセス禁止の場合、メッセージの受信を中止して復帰します。
2: メッセージキューグループ内のすべてのメッセージキューが、削除・切断・使用禁止またはアクセス禁止の場合、メッセージの受信を中止して復帰します。

メッセージキュー番号格納域: PIC S9(9) COMP-5

 メッセージキューの番号が通知されます。番号は、MQDCONNECTQEXプログラムで指定したメッセージキュー名一覧の出現番号で、以下のように通知されます。

 正数: メッセージキューの出現番号(先頭は1)
  -1 : メッセージキューに関係なく異常復帰した場合

メッセージヘッダ域

 メッセージヘッダを入れる領域を指定します。領域は発行元が用意します。メッセージヘッダの詳細については、“8.2.2 パラメタの詳細説明”を参照してください。

メッセージ本体域

 メッセージ本体を入れる領域を指定します。領域は発行元が用意します。メッセージ本体の詳細については、“8.2.2 パラメタの詳細説明”を参照してください。

領域長格納域: PIC 9(9) COMP-5

 メッセージ本体域の領域の長さを指定します。

復帰情報域

 例外処理のための復帰情報が通知されます。エラー詳細コードには以下の値(10進数)が返されます。復帰情報の詳細については、“8.4 復帰情報の説明”を参照してください。

復帰値格納域: PIC S9(5) COMP-5

 本プログラムの処理結果が通知されます。詳細は復帰値の説明を参照してください。

復帰値

 本プログラムの処理結果が、復帰値格納域と特殊レジスタ“PROGRAM-STATUS”で以下のように通知されます。

 正常時: 0
 異常時: -1

注意事項

  1.  本プログラムを使用する場合は、事前にMQDCONNECTQEXプログラムでメッセージキューに接続してください。
  2.  同一のメッセージキューグループのアドレスを用いて、本プログラムとMQDPEEKMSGEXプログラムを使用することはできません。
  3.  メッセージの受信は、特定のメッセージキューに集中しないようにメッセージが存在するメッセージキューの中から任意に受信します。ただし、受信したメッセージが1ユニット複数メッセージの場合は、1ユニットすべてのメッセージを受信するまで同一のメッセージキューより受信します。
  4.  本プログラムでは、カーソルは使用しません。メッセージキューからは、プライオリティの高い先頭のメッセージから受信します。
  5.  一つのアプリケーションが、複数のメッセージキューから受信する場合、必ずメッセージキューごとにユニット内の全メッセージを受信するようにしてください。
  6.  複数のアプリケーションが、同じメッセージキューから同時に受信することは避けてください。1ユニット複数メッセージの場合は、処理結果が保証されません。単一メッセージの場合は、先に受信要求を行ったアプリケーションにメッセージが渡ります。
  7.  エラー詳細コード“29”は、メッセージ格納ファイルとしてデータベースを使用している場合に、グローバルトランザクション処理中に限り通知されます。
  8.  メッセージがない場合の対処として“同期モード”を指定している、かつ、メッセージの受信中止条件として“すべてのメッセーキュー”を指定している場合の、待ち受けを解除して停止する方法を以下に示します。

  9.  エラー詳細コード“31”は、Symfoware/RDBトランザクション連携機能を使用している場合に限り通知されます。

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005