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オペランド指定値)によって,次の表に示すとおり異なります。
|
メッセージの最大サイズ拡張有無 |
送信メッセージ長に設定できる最大値(単位:バイト) |
|
|---|---|---|
|
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に設定した論理端末名は閉塞中です。 |
注意事項
-
この関数発行後に,ee_mcp_sendsync関数を発行した場合,ee_mcp_sendsync関数で送信したメッセージが先に送信されます。
-
送信要求したトランザクションがロールバックした場合,送信メッセージは破棄されます。
-
ERRTRNS上でこの関数を発行して,送信障害などのエラーが発生した場合,ERRTRNSは起動されないで,送信メッセージは破棄されます。
-
この関数を発行したトランザクションでは,トランザクションの最適化を行いません。
-
非永続メッセージのあとに,永続メッセージを送信した場合,永続メッセージが先に送信されます。
-
この関数は,トランザクションのコミット時に実行されます。したがって,トランザクションの同期点を取得する処理でエラーが起こった場合,この関数の処理は無効となります。
-
TP1/FSPを使用する場合,次のリターン値のときは,「OJ(出力メッセージ)」は取得されません。
EECOMER_ENVIRON,EECOMER_CNDUOC,EEMCPER_MESSAGE_TOO_BIG,EEMCPER_LE_NAME,EEMCPER_ACTION,EEMCPER_OPTION,EEMCPER_COMMFORM,EEMCPER_MESSAGE_TOO_SHORT,EEMCPER_ARGUMENT