6.6.3 CBLDCCLS('RECEIVE ') − メッセージの受信
(1) 形式
(a) マルチスレッド環境の場合
■ PROCEDURE DIVISIONの指定
CALL 'CBLDCCLS' USING 一意名1
■ DATA DIVISIONの指定
01 一意名1. 02 データ名A PIC X(8) VALUE 'RECEIVE '. 02 データ名B PIC X(5). 02 FILLER PIC X(3). 02 データ名C PIC S9(9) COMP VALUE ZERO. 02 データ名D PIC S9(9) COMP. 02 データ名E PIC S9(9) COMP. 02 データ名G PIC 9(9) COMP-X. 02 データ名H PIC X(n).
(b) シングルスレッド環境の場合
■ PROCEDURE DIVISIONの指定
CALL 'CBLDCCLT' USING 一意名1
■ DATA DIVISIONの指定
01 一意名1. 02 データ名A PIC X(8) VALUE 'RECEIVE '. 02 データ名B PIC X(5). 02 FILLER PIC X(3). 02 データ名C PIC S9(9) COMP VALUE ZERO. 02 データ名D PIC S9(9) COMP. 02 データ名E PIC S9(9) COMP. 02 データ名F PIC 9(9) COMP. 02 データ名H PIC X(n).
(2) 機能
MHPが送信したメッセージを受信します。
CBLDCCLS('RECEIVE ')を実行する場合,データ名Cに8または16を指定したCBLDCRPS('OPEN ')を,あらかじめ実行しておく必要があります。
(3) UAPで値を設定するデータ領域
-
データ名A
メッセージの受信を示す要求コードを「VALUE 'RECEIVE△'」と設定します。
-
データ名C
メッセージを受信後に,コネクションを解放するかどうかを指定します。
0:メッセージを受信後,コネクションを解放しません。
2:メッセージを受信後,コネクションを解放します。
0を指定した場合,CBLDCRPS('CLOSE ')を実行するまでコネクションを解放しません。ただし,障害時を除きます。
-
データ名D
受信するメッセージの長さを指定します。
-
データ名E
メッセージ受信時の最大待ち時間(秒)を指定します。-1から65535の整数を指定してください。
-1を指定した場合は,メッセージを受信するまで無制限に待ちます。
0を指定した場合は,メッセージの受信を待ちません。受信するメッセージがなかった場合は,02507でエラーリターンします。
1から65535を設定した場合は,指定した秒数だけメッセージの受信を待ちます。指定した秒数を過ぎてもメッセージを受信できない場合は,02507でエラーリターンします。
-
データ名F
OpenTP1で使用する領域です。
-
データ名G
CBLDCCLS('CLTIN '),またはCBLDCCLS('EXCLTIN ')で受け取ったクライアントIDを指定します。
-
データ名H
受信したメッセージを格納する領域です。データ名Dで設定する長さ以上の領域を用意してください。
(4) 値が返されるデータ領域
-
データ名B
ステータスコードが,5けたの数字で返されます。
-
データ名H
受信したメッセージが返されます。
(5) ステータスコード
ステータスコード |
意味 |
---|---|
00000 |
正常終了しました。 |
02501 |
データ名に指定した値が間違っています。要求コード(データ名A)が間違っている場合も含みます。 |
02502 |
次のどちらかの要因が考えられます。
|
02504 |
メモリ不足が発生しました。 |
02506 |
ネットワーク障害が発生しました。 |
02507 |
メッセージの受信時にタイムアウトになりました。 |
02518 |
システムエラーが発生しました。 |
02538 |
資源不足が発生しました。 |
02542 |
相手システムからのコネクションが解放されました。 |
02544 |
データ名Gに指定したクライアントIDはCBLDCCLS('CLTIN '),またはCBLDCCLS('EXCLTIN ')で受け取ったクライアントIDと異なっています。 |
(6) 注意事項
-
CBLDCCLS('RECEIVE ')は,次に示す場合だけ,CUPに制御を戻します。
-
MHPからデータ名Dで指定した長さ分のメッセージを受信した場合
(指定した長さより短いメッセージを受信してもCUPに制御は戻しません)
-
MHPからのメッセージ受信時に,時間切れ(タイムアウト)が発生した場合
-
MHPからコネクションが解放された場合
-
ネットワーク障害が発生した場合
-
-
CBLDCCLS('RECEIVE ')発行時に,MHPからコネクションが解放された場合,02542でエラーリターンします。