6.7.7 CBLDCCLS('A-NOTIFY') − 一方通知受信
(1) 形式
(a) マルチスレッド環境の場合
■ PROCEDURE DIVISIONの指定
CALL 'CBLDCCLS' USING 一意名1 一意名2
■ DATA DIVISIONの指定
01 一意名1. 02 データ名A PIC X(8) VALUE 'A-NOTIFY'. 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 X(64). 02 データ名F PIC X(8). 02 データ名G PIC 9(9) COMP-X. 01 一意名2. 02 データ名H PIC S9(9) COMP. 02 データ名I PIC X(n).
(b) シングルスレッド環境の場合
■ PROCEDURE DIVISIONの指定
CALL 'CBLDCCLT' USING 一意名1 一意名2
■ DATA DIVISIONの指定
01 一意名1. 02 データ名A PIC X(8) VALUE 'A-NOTIFY'. 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 X(64). 02 データ名F PIC X(8). 01 一意名2. 02 データ名H PIC S9(9) COMP. 02 データ名I PIC X(n).
(2) 機能
サーバ側の要求コード(CBLDCRPC('CLTSEND '))によって通知されるメッセージを,データ名Dで指定した値まで待ち続けます。受信した時点でCUPに制御を戻し,ステータスコード,通知メッセージ,通知メッセージ長,通知元サーバのホスト名,通知元サーバのノード識別子を返します。
この関数を発行する前に,CBLDCCLS('O-NOTIFY')を発行しておく必要があります。
(3) UAPで値を設定するデータ領域
-
データ名A
一方通知受信を示す要求コードを「VALUE 'A-NOTIFY'」と指定します。
-
データ名C
0を指定します。
-
データ名D
タイムアウト値(秒)を指定します。0から65535の範囲で指定します。無限に待ち続ける場合は,0を指定します。
-
データ名G
CBLDCCLS('O-NOTIFY')で受け取った一方通知受信IDを指定します。
-
データ名H
サーバからの通知メッセージを格納する領域長(データ名Iの長さ)を指定します。0からDCRPC_MAX_MESSAGE_SIZE※の範囲で指定します。
- 注※
-
クライアント環境定義DCCLTRPCMAXMSGSIZEに2以上を指定した場合,DCRPC_MAX_MESSAGE_SIZEの値(1メガバイト)ではなく,クライアント環境定義DCCLTRPCMAXMSGSIZEに指定した値になります。
-
データ名I
サーバからの通知メッセージを格納する領域です。データ名Hで設定する長さ以上の領域を用意してください。
(4) 値が返されるデータ領域
-
データ名B
ステータスコードが,5けたの数字で返されます。
-
データ名E
通知したサーバのホスト名が返されます。
ホスト名への変換に失敗した場合,10進ドット記法のIPアドレスが返されます。
-
データ名F
通知したサーバのノード識別子が返されます。ノード識別子のフォーマットは次のとおりです。
-
データ名H
サーバからの通知メッセージ長が返されます。
-
データ名I
サーバからの通知メッセージが返されます。
(5) ステータスコード
ステータスコード |
意味 |
---|---|
00000 |
正常終了しました。 |
02501 |
データ領域に指定した値が誤っています。 |
02502 |
CBLDCCLS('O-NOTIFY')が実行されていません。 |
02504 |
必要なバッファが確保できませんでした。 |
02506 |
ネットワーク障害が発生しました。 |
02507 |
メッセージの受信時にタイムアウトになりました。 |
02518 |
システムエラーが発生しました。 |
02535 |
バージョン不一致が発生しました。 |
02544 |
データ名Gに指定した一方通知受信IDは,CBLDCCLS('O-NOTIFY')で受け取った一方通知受信IDと異なっています。 |
02546 |
受信したメッセージが,CUPで用意した領域に収まりません。収まらないメッセージは切り捨てました。データ名E,およびデータ名Fには,値を設定済みです。 |
02548 |
不正なメッセージを受信しました。 |
02549 |
一方通知受信待ち状態がCBLDCCLS('CANCEL ')によって解除されました。データ名E,データ名H,およびデータ名Iには,値を設定済みです。 |
(6) 注意事項
ステータスコード02518が戻る場合,CUPを終了してから開始し直してください。