6.6.5 CBLDCCLS('ASMSEND ') − 組み立てメッセージの送信
(1) 形式
(a) マルチスレッド環境の場合
■ PROCEDURE DIVISIONの指定
CALL 'CBLDCCLS' USING 一意名1 一意名2 一意名3
■ DATA DIVISIONの指定
01 一意名1. 02 データ名A PIC X(8) VALUE 'ASMSEND '. 02 データ名B PIC X(5). 02 FILLER PIC X(3). 02 データ名C PIC S9(9) COMP VALUE ZERO. 02 データ名D PIC 9(4) COMP. 02 FILLER PIC X(2). 02 データ名E PIC S9(9) COMP. 02 FILLER PIC X(4). 02 データ名F PIC X(n). 01 一意名2. 02 データ名G PIC S9(9) COMP. 02 データ名H PIC X(n). 01 一意名3. 02 データ名I PIC 9(9) COMP-X.
(b) シングルスレッド環境の場合
■ PROCEDURE DIVISIONの指定
CALL 'CBLDCCLT' USING 一意名1 一意名2
■ DATA DIVISIONの指定
01 一意名1. 02 データ名A PIC X(8) VALUE 'ASMSEND '. 02 データ名B PIC X(5). 02 FILLER PIC X(3). 02 データ名C PIC S9(9) COMP VALUE ZERO. 02 データ名D PIC 9(4) COMP. 02 FILLER PIC X(2). 02 データ名E PIC S9(9) COMP. 02 FILLER PIC X(4). 02 データ名F PIC X(n). 01 一意名2. 02 データ名G PIC S9(9) COMP. 02 データ名H PIC X(n).
(2) 機能
メッセージの組み立て機能を使用して,メッセージを送信します。この場合,4バイトのメッセージ情報を送信したあと,データ名Hに指定されたメッセージを送信します。相手システムとのコネクションが確立されていない場合は,データ名Fに指定されたホスト名とデータ名Dに指定されたポート番号を基にコネクションを確立し,メッセージを送信します。
また,クライアント環境定義DCCLTDELIVERYCHECKにYを指定した場合は,メッセージの送達確認機能を使用して,メッセージを送受信します。この場合,11バイトのメッセージ情報を送信したあと,データ名Hに指定されたメッセージを送信します。11バイトのメッセージ情報を受信したあと,CUPに制御を戻します。
CBLDCCLS('ASMSEND ')を実行する場合,データ名Cに4,または16を指定したCBLDCRPS('OPEN ')を,あらかじめ実行してください。
(3) UAPで値を設定するデータ領域
-
データ名A
メッセージの送信を示す要求コードを,「VALUE 'ASMSEND△'」と設定します。
-
データ名C
メッセージを送信後に,コネクションを解放するかどうかを指定します。
0:メッセージを送信後,コネクションを解放しません。CBLDCRPS('CLOSE ')を実行するまで,コネクションを解放しません。ただし,障害時を除きます。
1:メッセージを送信後,コネクションを解放します。メッセージの送達確認機能使用時は,メッセージ情報を受信したあと,コネクションを解放します。
-
データ名D
コネクションが確立されていない場合,コネクションを確立して接続するノードのポート番号を指定します。
0を指定すると,CBLDCRPS('OPEN ')を実行したときに取得したクライアント環境定義DCSNDPORTの内容を参照します。
-
データ名E
メッセージの送達確認機能を使用するときに有効な引数です。応答専用データ受信時の最大待ち時間(秒)を指定します。-1から65535の整数を設定してください。
- -1を指定した場合
-
応答専用データを受信するまで無制限に待ちます。
- 0を指定した場合
-
応答専用データの受信を待ちません。受信する応答専用データがなかった場合は,02507でエラーリターンします。
- 1から65535を指定した場合
-
指定した秒数だけ応答専用データの受信を待ちます。指定した秒数を過ぎても応答専用データを受信できない場合は,02507でエラーリターンします。
応答専用データが分割されて届いた場合は,11バイトの応答専用データが届くまで受信処理を繰り返します。受信処理が発生すると,この引数に指定した最大待ち時間が毎回適用されます。この引数に指定した値を,クライアントの最大応答待ち時間として適用したい場合は,クライアント環境定義DCCLTOPTIONに,00000002オプションを指定してください。
-
データ名F
コネクションが確立されていない場合,接続するノードのホスト名を指定します。ホスト名として指定できる長さは,63文字※までです。文字列の最後に空白文字を指定してください。
先頭に空白を指定すると,CBLDCRPS('OPEN ')を実行したときに取得したクライアント環境定義DCSNDHOSTの内容を参照します。
ホスト名として,10進ドット記法のIPアドレスを指定することもできます。
- 注※
-
クライアント環境定義DCCLTOPTIONに00000008を指定した場合,ホスト名として指定できる長さは255文字までとなります。
-
データ名G
送信するメッセージの長さを設定します。
-
データ名H
送信するメッセージを格納する領域を指定します。データ名Gで指定する長さ以上の領域を用意してください。
-
データ名I
CBLDCCLS('CLTIN '),またはCBLDCCLS('EXCLTIN ')で受け取ったクライアントIDを指定します。
(4) 値が返されるデータ領域
-
データ名B
ステータスコードが,5けたの数字で返されます。
(5) ステータスコード
ステータスコード |
意味 |
---|---|
00000 |
正常終了しました。 |
02501 |
引数に指定した値が誤っています。 |
02502 |
次のどちらかの要因が考えられます。
|
02504 |
メモリ不足が発生しました。 |
02506 |
ネットワーク障害が発生しました。コネクションは解放されます。 |
02507 |
コネクション確立要求時にタイムアウトになりました。または,メッセージの送達確認機能の使用時に,応答専用データの受信でタイムアウトになりました。コネクションは解放されます。 |
02518 |
システムエラーが発生しました。ネットワーク障害の場合,コネクションは解放されます。 |
02538 |
資源不足が発生しました。 |
02539 |
ホスト名が誤っています。または,データ名FおよびDCSNDHOSTの両方にホスト名が指定されていません。 |
02541 |
相手システムに対するコネクションの確立要求が拒絶されました。 |
02542 |
メッセージの送達確認機能の使用時に,相手システムからコネクションが解放されました。 |
02544 |
データ名Iに指定したクライアントIDは,CBLDCCLS('CLTIN '),またはCBLDCCLS('EXCLTIN ')で受け取ったクライアントIDと異なっています。 |
02547 |
OSが自動的に割り当てるポート番号が不足しています。 |
02548 |
メッセージの送達確認機能の使用時に,不正なメッセージを受信しました。コネクションは解放されます。 |
02584 |
メッセージの送達確認機能の使用時に,メッセージが衝突しました。コネクションは解放されます。 |
(6) 注意事項
-
メッセージ送信時に相手システムからコネクションが解放された場合,送信するメッセージ長によっては,コネクションの解放を検知できないことがあります。次に,使用する機能別に注意事項を示します。
- メッセージ組み立て機能を使用する場合
-
CBLDCCLS('ASMSEND ')で検知できなかった場合は,次以降に発行する要求文で検知することがあります。CUPを作成するときは,このことを考慮してください。
- メッセージの送達確認機能を使用する場合
-
メッセージ送信時に検知できなかった場合,応答専用データ受信時に検知します。
-
メッセージの組み立て機能および送達確認機能を使用する場合は,短いパケットで送受信するため,送信処理に時間が掛かることがあります。送信処理に時間が掛かる場合は,クライアント環境定義DCCLTTCPNODELAYにYを指定してください。
-
ステータスコード02518が戻る場合,CUPを終了してから開始し直してください。