Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編


6.6.6 CBLDCCLS('ASMRECV ') − 組み立てメッセージの受信

〈この項の構成〉

(1) 形式

(a) マルチスレッド環境の場合

■ PROCEDURE DIVISIONの指定

CALL 'CBLDCCLS' USING 一意名1 一意名2 一意名3

■ DATA DIVISIONの指定

01 一意名1.
   02  データ名A  PIC X(8) VALUE 'ASMRECV△'.
   02  データ名B  PIC X(5).
   02  FILLER    PIC X(3).
   02  データ名C  PIC S9(9) COMP VALUE ZERO.
   02  データ名D  PIC S9(9) COMP.
01 一意名2.
   02  データ名E  PIC S9(9) COMP.
   02  データ名F  PIC X(n).
01 一意名3.
   02  データ名G  PIC 9(9) COMP-X.

(b) シングルスレッド環境の場合

■ PROCEDURE DIVISIONの指定

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

■ DATA DIVISIONの指定

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

(2) 機能

メッセージの組み立て機能を使用して,メッセージを受信します。この場合,4バイトのメッセージ情報を受信したあと,メッセージ情報に設定されたメッセージ長分のメッセージを受信し,データ名Fに格納します。ただし,メッセージ情報は,データ名Fには格納しません。データ名Eには,受信したメッセージ長を格納します。データ名Eに格納するメッセージ長には,メッセージ情報の長さは含みません。

また,クライアント環境定義DCCLTDELIVERYCHECKにYを指定した場合は,メッセージの送達確認機能を使用して,メッセージを送受信します。この場合,11バイトのメッセージ情報を受信した後,メッセージ情報に設定されたメッセージ長分のメッセージを受信し,データ名Fに格納します。ただし,メッセージ情報は,データ名Fには格納しません。データ名Eには,受信したメッセージ長を格納します。データ名Eに格納するメッセージ長には,メッセージ情報の長さは含みません。受信したメッセージ情報に「応答要求」が設定されていた場合は,11バイトのメッセージ情報を送信したあと,CUPに制御を戻します。

CBLDCCLS('ASMRECV ')を実行する場合,データ名Cに8,または16を指定したCBLDCRPS('OPEN ')を,あらかじめ実行しておく必要があります。

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

メッセージが分割されて届いた場合,メッセージ長分のメッセージが届くまで受信処理を繰り返し行います。受信処理が発生すると,この引数に指定した値が毎回適用されます。この引数に指定した値をクライアントの最大応答待ち時間として適用したい場合は,クライアント環境定義DCCLTOPTIONに,00000002オプションを指定してください。

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

(5) ステータスコード

ステータスコード

意味

00000

正常に終了しました。

02501

引数に指定した値が誤っています。

02502

次のどちらかの要因が考えられます。

  • CBLDCRPS('OPEN ')が実行されていません。

  • CBLDCRPS('OPEN ')は実行されていますが,データ名Cに8,または16を指定していません。

02504

メモリ不足が発生しました。

02506

ネットワーク障害が発生しました。コネクションは解放されます。

02507

メッセージの受信時にタイムアウトになりました。コネクションは解放されます。

02518

システムエラーが発生しました。ネットワーク障害の場合,コネクションは解放されます。

02538

資源不足が発生しました。

02542

相手システムからコネクションが解放されました。

02544

データ名Gに指定したクライアントIDは,CBLDCCLS('CLTIN '),またはCBLDCCLS('EXCLTIN ')で受け取ったクライアントIDと異なっています。

02546

CUPで用意した領域が小さく,相手システムからのメッセージを受信することができません。コネクションは解放されます。

02548

不正なメッセージを受信しました。コネクションは解放されます。

(6) 注意事項