3.1.11 RPCメッセージの最大長拡張機能
RPCメッセージの最大長拡張機能を使用すると,次に示す関数を使って送受信できるメッセージの最大長を,1メガバイト〜8メガバイトで指定できます。この機能を使用する場合,あらかじめメモリ関連定義のmax_message_sizeオペランドに1048577以上を指定しておく必要があります。
-
C言語の場合:ee_rpc_call,ee_rpc_call_to,またはee_rpc_cmtsend
-
COBOL言語の場合:CBLEERPC('CALL '),CBLEERPC('CALLTO '),またはCBLEERPC('CMTSND ')
この機能を使用する場合,送信先となるすべてのノードで,最大長のRPCメッセージを受信できるよう定義してください。RPCメッセージを受信できないノードがある場合,送信先ノードのノード間負荷バランス機能が実行されたときに,リターン値EERPCER_NET_DOWNが返されてエラーとなるか,またはRPCメッセージの一部が失われるおそれがあります。1メガバイトより大きいRPCメッセージを送信する場合は,次の点に注意してください。
-
SPPが起動している送信先ノードは,1メガバイトより大きいRPCメッセージを受信できるバージョンの製品を使用してください。
SPPが起動しているノードで,1メガバイトより大きいRPCメッセージを受信できないバージョンの製品がある場合,次に示すどちらかのリターン値が返されてエラーになります。
-
EERPCER_NO_SUCH_SERVICE_GROUP
-
EERPCER_TRNCHK
-
-
サービス要求元のノードを開始してから,SPPを起動してください。
サービス要求元のノード開始前にSPPを起動した場合は,リターン値EERPCER_NO_SUCH_SERVICE_GROUPが返されてエラーとなるおそれがあります。
(1) ネームサービス機能によるRPCメッセージの最大長拡張機能のチェック
ネームサービス機能を使用すると,RPCメッセージの最大長拡張機能をサポートしているかどうかの情報をネーム情報として保持し,RPCメッセージの送信時に1メガバイトより大きいRPCメッセージを受信できるバージョンであるかどうかを判断できます。サービス要求先がRPCメッセージの最大長拡張機能をサポートしていない場合は,サービス要求をエラーとします。
なお,ネームサービス機能を使用しない場合,サービス要求先でRPCメッセージの最大長拡張機能をサポートしているかどうかの判断はできません。
1メガバイトより大きいRPCメッセージを送信する場合の,TP1/EEおよびTP1/Server Baseのバージョンによる動作の違いを次の図と表に示します。
|
サービス要求元 |
サービス要求先 |
|||
---|---|---|---|---|
TP1/EE |
TP1/Server Base |
|||
02-00以前 |
07-00以降 |
06-01以前 |
06-02以降 |
|
TP1/EE 02-00以前 |
×※1 |
×※1 |
×※1 |
×※1 |
TP1/EE 07-00以降でネームサービス機能を使用 |
×※2 |
○※3 |
×※2 |
○ |
TP1/EE 07-00以降でネームサービス機能を未使用 |
○ |
○ |
○ |
○ |
- (凡例)
-
○:サービス要求ができます(サービス要求先として選択されます)。
×:サービス要求ができません(サービス要求先として選択されません)。
- 注※1
-
引数不正となり,リターン値EERPCER_MESSAGE_TOO_BIGが返されてエラーになります。
- 注※2
-
サービス要求先として選択されません。
- 注※3
-
サービス要求先がネームサービス機能を使用していない場合,サービス要求先として選択されません。