分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/OSAS-NIF編

[目次][用語][索引][前へ][次へ]

3.2.2 CBLDCMCF('RECEIVE ')メッセージの受信

<この項の構成>
(1) 形式
(2) 機能
(3) UAPで値を設定するデータ領域
(4) OpenTP1から値が返されるデータ領域
(5) ステータスコード

(1) 形式

PROCEDURE DIVISIONの指定
 
CALL 'CBLDCMCF' USING 一意名1 一意名2 一意名3
 
DATA DIVISIONの指定
 
01 一意名1.
   02 データ名A  PIC X(8) VALUE 'RECEIVE '.
   02 データ名B  PIC X(5).
   02 FILLER    PIC X(3).
   02 データ名C  PIC X(4).
   02 データ名D  PIC X(4) VALUE SPACE.
   02 データ名E  PIC 9(8).
   02 データ名F  PIC 9(8).
   02 データ名G  PIC 9(9) COMP.
   02 データ名H  PIC X(4) VALUE SPACE.
   02 データ名I  PIC X(4) VALUE SPACE.
   02 データ名J  PIC X(4) VALUE SPACE.
   02 データ名K  PIC X(4) VALUE SPACE.
   02 データ名L  PIC X(8) VALUE SPACE.
   02 データ名M1 PIC X(4) VALUE SPACE.
   02 データ名M2 PIC X(8) VALUE SPACE.
   02 データ名M3 PIC X(4) VALUE SPACE.
   02 データ名M4 PIC 9(9) COMP VALUE ZERO.
   02 データ名M5 PIC 9(9) COMP VALUE ZERO.
   02 データ名M6 PIC X(1) VALUE SPACE.
   02 データ名M7 PIC X(1).
   02 データ名N  PIC X(14) VALUE LOW-VALUE.
01 一意名2.
   02 データ名O  PIC X(4) VALUE SPACE.
   02 データ名P  PIC X(8).
   02 データ名Q  PIC X(8).
   02 データ名R  PIC X(8) VALUE SPACE.
   02 データ名T  PIC X(28) VALUE LOW-VALUE.
01 一意名3.
   02 データ名U  PIC 9(x) COMP.
   02 データ名V  PIC X(x).
   02 データ名W  PIC X(n).
 

(2) 機能

論理端末に届いたメッセージのうち,一つのセグメントを受信します。セグメントの数だけCBLDCMCF('RECEIVE△')を呼び出すと,一つの論理メッセージを受信できます。

CBLDCMCF('RECEIVE△')で受信できるメッセージの種類を次に示します。

セグメントを受信する領域(一意名3で示す領域)の形式を次に示します。

[図データ]

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

(4) OpenTP1から値が返されるデータ領域

(5) ステータスコード

ステータスコード 意味
00000 正常に終了しました。
71000 先頭セグメントを受信するCBLDCMCF('RECEIVE△')を2回以上呼び出しています。中間セグメントまたは最終セグメントを受信する場合は,データ名Cに「VALUE 'SEG△'」を設定してCBLDCMCF('RECEIVE△')を呼び出してください。
71001 メッセージの最終セグメントを受信したあとで,次のセグメントを受信するCBLDCMCF('RECEIVE△')を呼び出しています。直前に呼び出したCBLDCMCF('RECEIVE△')でメッセージをすべて受信しました。
このステータスコードが返されたあとに,再びCBLDCMCF('RECEIVE△')を呼び出した場合は,ステータスコード72000が返されます。
71002 メッセージキューからの入力処理中に障害が発生しました。
メッセージキューが閉塞されています。
71108 プロセスのローカルメモリが不足しています。
72000 <MHPの実行でリターンした場合>
  • 先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に,中間セグメントおよび最終セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出しています。先頭セグメントを受信する場合は,データ名Cに「VALUE 'FRST'」を設定してCBLDCMCF('RECEIVE△')を呼び出してください。
  • ステータスコード71001が返されたあとに,再びCBLDCMCF('RECEIVE△')を呼び出しています。
<SPPの実行でリターンした場合>
SPPではCBLDCMCF('RECEIVE△')を呼び出せません。
72001 データ名Pに設定した論理端末名称が間違っています。
72013 データ名Gの指定値を超えるセグメントを受信しました。データ名Gの指定値を超えた部分は切り捨てられました。
<バッファ形式2の場合>
32763バイトを超えるセグメントを受信しました。32763バイトを超えた部分は切り捨てられました。
72016 データ名Dに設定した値が間違っています。
データ名Nまたはデータ名Tに設定した値が間違っています。
データ名M7に設定した値が間違っています。
72024 データ名Oに設定した値が間違っています。
72025 データ名Cに設定した値が間違っています。
72028 データ名Aに設定した値が間違っています。
72036 データ名Gの指定値が不足しています。バッファ形式1の場合は9バイト以上,バッファ形式2の場合は5バイト以上の領域を確保してください。
上記以外 プログラムの破壊などによる,予期しないエラーが発生しました。