CBLDCRPC('CLTSEND ')
- 〈このページの構成〉
形式
PROCEDURE DIVISIONの指定
CALL 'CBLDCRPC' USING 一意名1 一意名2
DATA DIVISIONの指定
01 一意名1. 02 データ名A PIC X(8) VALUE 'CLTSEND '. 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(n). 01 一意名2. 02 データ名F PIC S9(9) COMP. 02 データ名G PIC X(n).
機能
CUPへ一方的にデータを送ります。データ名Dとデータ名Eで示すホストのポート番号に対応するプロセス(CUP)に,データ名Gで示すデータをデータ名Fで示す長さだけ送ります。送信できるデータの長さは,0からDCRPC_MAX_MESSAGE_SIZE※で示すバイト長までです。
- 注※
-
rpc_max_message_sizeオペランドを使用した場合,DCRPC_MAX_MESSAGE_SIZEの値(1メガバイト)ではなく,rpc_max_message_sizeオペランドに指定した値になります。
CBLDCRPC('CLTSEND ')で送信したデータは,TP1/Clientが提供する次のAPIで受け取ることができます。
-
TP1/Client/W,TP1/Client/Pの場合
dc_clt_accept_notification関数
dc_clt_accept_notification_s関数
dc_clt_chained_accept_notification関数
dc_clt_chained_accept_notification_s関数
CBLDCCLS('NOTIFY ')
CBLDCCLS('A-NOTIFY')
CBLDCCLS('EXNACPT ')
CBLDCCLS('EXNCACPT')
-
TP1/Client/Jの場合
acceptNotificationメソッド
acceptNotificationChainedメソッド
-
TP1/Client for .NET Frameworkの場合
AcceptNotificationメソッド
AcceptNotificationChainedメソッド
TP1/Clientのライブラリが提供するAPIについては,次の各製品マニュアルを参照してください。
-
マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編」
-
マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/J編」
-
マニュアル「TP1/Client for .NET Framework 使用の手引」
UAPで値を設定するデータ領域
●データ名A
CUPへの一方通知を示す要求コードを「VALUE 'CLTSEND '」と設定します。
●データ名C
0を設定します。
●データ名D
送信先プロセスのポート番号を設定します。
●データ名E
送信先のホスト名を設定します。指定できるホスト名は,1から255文字までの文字列です。文字列の後ろには,空白文字を付けてください。
●データ名F
送信するデータの長さを設定します。
●データ名G
送信するデータを設定します。
OpenTP1から値が返されるデータ領域
●データ名B
ステータスコードが,5けたの数字で返されます。
ステータスコード
ステータスコード |
意味 |
---|---|
00000 |
正常に終了しました。 |
00301 |
引数に設定した値が間違っています。 要求コード(データ名A)が間違っている場合も含みます。 |
00306 |
ネットワークに障害が起こりました。 |
00302 |
CBLDCRPC('OPEN ')を呼び出していません。 |
00304 |
メモリが不足しました。 |
00308 |
送信するデータの長さが,DCRPC_MAX_MESSAGE_SIZE※を超えています。 |
00314 |
送信先プロセスがありません。 |
ネットワークに障害が起こりました。 |
- 注※
-
rpc_max_message_sizeオペランドを使用した場合,DCRPC_MAX_MESSAGE_SIZEの値(1メガバイト)ではなく,rpc_max_message_sizeオペランドに指定した値になります。
注意事項
-
CBLDCRPC('CLTSEND ')の正常リターンは,RPCの通信プロトコル(TCP/IP)レベルでの送信(データ受け渡し)が完了したことを意味します。そのため,CBLDCRPC('CLTSEND ')が正常にリターンしても,CUPがデータを正常に受信していないおそれがあります。したがって,CUPが受信可能なTP1/ClientのAPIを呼び出していることが明らかな場合にだけ,CBLDCRPC('CLTSEND ')を発行してください。
-
CUPが稼働していない場合は,「00314」でエラーリターンします。
-
CBLDCRPC('CLTSEND ')によるデータ送信先に指定できるのはCUPだけです。SPPのプロセスや自プロセスへは,データを送信できません。
-
AIX版TP1/Server Baseで,80文字〜255文字のホスト名を指定する場合,libbetran2.aを使用してUAPを再コンパイルおよび再リンケージしてください。
-
データ名Dとデータ名Eが示す1つのCUPに対し,複数のプロセスから同時にデータを送信する場合,送信するデータの長さは32,656バイトを超えないようにしてください。次の条件がすべて重なった場合,CUPが受信データを破棄してしまうことがあります。
-
1つのCUPに対し,複数のプロセスから同時にデータを送信する。
-
1つのCUPに対し,複数のプロセスから同時に送信するデータの中に,32,656バイトを超えるデータが存在する。
-
32,656バイトを超えるデータの送信処理中に,一時クローズ処理が実行される。
-