Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引


CBLEESCD('MSGRECV ')【XTC限定】

〈このページの構成〉

名称

滞留メッセージの受信

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEESCD' USING 一意名1 一意名2

DATA DIVISIONの指定

01  一意名1.
  02  データ名A   PIC X(8)  VALUE 'MSGRECV '.
  02  データ名B   PIC X(5).
  02  FILLER      PIC X(3).
  02  データ名Z   PIC S9(9) COMP VALUE ZERO.
01  一意名2.
  02  データ名C   PIC 9(9) COMP VALUE ZERO.
  02  データ名D   PIC 9(9) COMP VALUE ZERO.
  02  データ名E   ADDRESS.
  02  データ名F   ADDRESS.

機能

入力キュー(ITQ)に滞留しているメッセージを受信します。

UAPで値を設定するデータ領域

●データ名A

滞留しているメッセージの受信を示す要求コードを「VALUE 'MSGRECV△'」と設定します。

●データ名Z

0を設定します。

TP1/EEから値が返されるデータ領域

●データ名B

ステータスコードが,5けたの数字で返されます。

●データ名C

入力メッセージ長が返されます。

●データ名D

受信したメッセージのメッセージ通番が返されます。

●データ名E

入力メッセージ引き渡しエリアのアドレスが返されます。

●データ名F

入力メッセージ情報が返されます。

ただし,受信メッセージがMCPメッセージの場合だけアドレスが返されます。

アドレスが示す領域トランザクション起動時にMCPエリアポインタが示す構造体を参照してください。

また,トランザクション起動時にMCPエリアポインタが示す領域を使用するため,以前の情報は参照できなくなります。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため,この機能は使用できません。

00005

オフラインバッチプロセスから発行しているため,この機能は使用できません。

00801

引数に設定した値が間違っています。

00804

発行条件が不正です(プロセス関連定義のxtc_useオペランドにNを指定してこの関数を発行)。

00806

入力メッセージ引き渡しエリア(IMA)がオーバフローしました。※1

00860

滞留メッセージはありません。※2

00861

滞留メッセージ中に同種のメッセージがありません。

00862

読み出し上限を超えました。

00870

中間同期点処理を行ったため,滞留メッセージの受信はできません。

00875

この関数を発行できるサービスではありません(サービス属性定義でservice_attr -e serialを指定していないサービスでこの関数を発行)。または,トランザクション種別がMNもしくはTMではありません。

00876

トランザクション起動時のメッセージが滞留メッセージ読み出し対象メッセージではありません。

00881

スキップ処理中のため読み出せません。

注※1

メッセージ格納領域に格納できるサイズ分のメッセージは格納されています。

データ名Cには格納されているメッセージサイズが設定されています。

注※2

受信処理中の入力キュー(優先/通常)には滞留メッセージがない場合に設定します。優先キューの受信処理中に優先メッセージをすべて受信処理した場合,通常キューに滞留メッセージがあってもステータスコードは「00860」となります。

注意事項

  1. 滞留メッセージを受信できるのは,次のメッセージ種別がトランザクション起動時に渡されたメッセージ種別と同じメッセージの場合です。

    なお,タイマトランザクションの場合は,永続タイマと非永続タイマは同じメッセージ種別とは見なされません。

  2. トランザクション起動時に渡されたメッセージ種別がRPC受信メッセージであり,かつ応答型RPCまたはトランザクショナルRPCの場合は,滞留しているメッセージを受信できません。

    また,リモートAPI機能(RAP)で送信されたメッセージも受信できません。

  3. トランザクション起動時に引き出したキュー(優先キューまたは通常キュー)に滞留しているメッセージだけ受信できます。

    例えば最初に引き出したキューが優先キューの場合,通常キューにメッセージが滞留していてもこの関数では受信できません。

  4. 入力メッセージ引き渡しエリアおよび入力メッセージサイズ格納領域はトランザクション起動時に使用した領域を再使用します。この関数発行後に前のメッセージおよびメッセージサイズを参照する場合は領域の内容を退避したあと,この関数を発行してください。

  5. トランザクション起動時のトランザクション種別がMNまたはTMの場合だけ,この関数を発行できます。

  6. 該当サービスの同時引き出しの可否(service_attr -e)にserialを指定した場合だけ,この関数を発行できます。

  7. 滞留メッセージを受信できる最大数は,トランザクション起動時に滞留していたメッセージ数です。

  8. 中間同期点処理(CBLEETRN('C-ROLL ')発行)を行ったあとは,この関数を発行できません。