Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス COBOL言語編


CBLDCRPC('CLTSEND ')

〈このページの構成〉

名称

CUPへの一方通知

形式

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のライブラリが提供するAPIについては,次の各製品マニュアルを参照してください。

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オペランドに指定した値になります。

注意事項

  1. CBLDCRPC('CLTSEND ')の正常リターンは,RPCの通信プロトコル(TCP/IP)レベルでの送信(データ受け渡し)が完了したことを意味します。そのため,CBLDCRPC('CLTSEND ')が正常にリターンしても,CUPがデータを正常に受信していないおそれがあります。したがって,CUPが受信可能なTP1/ClientのAPIを呼び出していることが明らかな場合にだけ,CBLDCRPC('CLTSEND ')を発行してください。

  2. CUPが稼働していない場合は,「00314」でエラーリターンします。

  3. CBLDCRPC('CLTSEND ')によるデータ送信先に指定できるのはCUPだけです。SPPのプロセスや自プロセスへは,データを送信できません。

  4. AIX版TP1/Server Baseで,80文字〜255文字のホスト名を指定する場合,libbetran2.aを使用してUAPを再コンパイルおよび再リンケージしてください。

  5. データ名Dとデータ名Eが示す1つのCUPに対し,複数のプロセスから同時にデータを送信する場合,送信するデータの長さは32,656バイトを超えないようにしてください。次の条件がすべて重なった場合,CUPが受信データを破棄してしまうことがあります。

    • 1つのCUPに対し,複数のプロセスから同時にデータを送信する。

    • 1つのCUPに対し,複数のプロセスから同時に送信するデータの中に,32,656バイトを超えるデータが存在する。

    • 32,656バイトを超えるデータの送信処理中に,一時クローズ処理が実行される。