Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/EE/Message Control Extension 使用の手引


ee_mcp_send - 非同期一方送信メッセージの送信

〈このページの構成〉

機能

相手システムへ非同期一方送信メッセージを送信します。非同期一方送信メッセージは,一つのセグメントで構成されます。

TP1/FSPを使用する場合,eemcpfunc定義コマンドの-oオプションのoutputmessageオペランドが設定されているとき,またはTP1/EEのユーザサービス関連定義のservice_attr定義コマンドが設定されているときは,送信データをUAP履歴情報のデータ種別「OJ(出力メッセージ)」として取得します。オペランドの関連性については,TP1/FSPの関連ドキュメントを参照してください。

形式

ANSI C,C++の形式
#include <eemcp.h>
int  ee_mcp_send(int action, int commform, char *termnam,
                 char *resv01,char *senddata, int sdataleng,
                 char *resv02, int opcd)

UAPで値を設定する引数

●action

送信する論理メッセージのセグメントを次の形式で指定します。

EEMCPEMI

単一セグメントを示すEEMCPEMIを設定します。

●commform

一方送信を示すEEMCPOUTを設定します。

●termnam

出力先の論理端末名を設定します。論理端末名の長さは最大8バイトです。論理端末名の後ろはNULL文字を付けてください。

●resv01

NULL文字を設定します。

●senddata

送信するセグメントの内容を設定した領域を設定します。送信できる最大長は,sdatalengを参照してください。

TCP/IPの場合

[図データ]

UDPの場合

[図データ]

●sdataleng

送信するセグメントの長さを設定します。設定できる最大値は,メッセージの最大サイズを拡張しているかどうか(eemcpfunc定義コマンドの-mオプションのmsglenオペランド指定値)によって,次の表に示すとおり異なります。

表5‒7 メッセージの最大サイズ拡張有無による送信メッセージ長の違い

メッセージの最大サイズ拡張有無

送信メッセージ長に設定できる最大値(単位:バイト)

TCP/IPプロトコル使用時

UDPプロトコル使用時

なし(msglenオペランドにnormalを指定)

32000

32000

あり(msglenオペランドにextendを指定)

8388608

65531

注※

TP1/EEサービス定義のsend_message_buf_sizeオペランドで指定した送信バッファサイズの方が小さい場合は,send_message_buf_sizeオペランドの指定値が設定されます。

●resv02

NULL文字を設定します。

●opcd

一方送信メッセージの送信属性を指定します。

EENOFLAGS以外を複数指定する場合は,論理和で指定します。

EENOFLAGS

メッセージを非永続属性で,かつUDP送信時の送信先をsenddataの制御ヘッダで指定する場合に設定します。

EEMCP_PERMANENCE

永続メッセージとする場合に設定します。

MCPをクラスタ構成に組み込んだ場合(XTCサービス定義のcluster_modeオペランドにYを指定)にだけ有効となります。

EEMCP_DEFADDR

UDP送信時の送信先をeemcple定義コマンドの-oオプションで指定する場合に設定します。

なお,この値を指定した場合は,制御ヘッダの内容に関係なく,MCP構成定義で指定した送信先が有効になります。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_CNDUOC

UOCから発行しているため,この機能は使用できません。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EEMCPER_ACTION

actionに設定した値が間違っています。

EEMCPER_ARGUMENT

senddataに設定した値が間違っています。

EEMCPER_COMMFORM

commformに設定した値が間違っています。

EEMCPER_CONDITION

発行条件が不正です。

ee_trn_rollback_mark関数が発行済みです。

EEMCPER_LE_NAME

termnamに設定した論理端末名が間違っています。

EEMCPER_MEMORY_SHORT

メモリ不足が発生しました。

EEMCPER_MESSAGE_TOO_BIG

sdatalengに,送信できる最大サイズを超える値を設定しています。

EEMCPER_MESSAGE_TOO_SHORT

sdatalengに0(UDPの場合は24)以下の値を設定しています。

EEMCPER_OPTION

opcdに設定した値が間違っています。

EEMCPER_TERM_HOLD

termnamに設定した論理端末名は閉塞中です。

注意事項