ee_scd_msg_receive【XTC限定】
- 〈このページの構成〉
形式
ANSI C,C++の形式
#include <eescd.h> int ee_scd_msg_receive(char **in,EEULONG *in_len,char **msg_inf, EEULONG *msg_no, EELONG flags)
機能
入力キュー(ITQ)に滞留しているメッセージを受信します。
UAPで値を設定する引数
●in
入力メッセージ引き渡しエリアのアドレスを格納する領域アドレスです。
●in_len
入力メッセージ長を格納する領域アドレスです。
●msg_no
メッセージ通番を格納する領域アドレスです。
●flags
EENOFLAGSを設定します。
TP1/EEから値が返される引数
●in
入力メッセージ引き渡しエリアのアドレスが返されます。
●in_len
入力メッセージ長が返されます。
●msg_no
受信したメッセージのメッセージ通番が返されます。
●msg_inf
入力メッセージ情報が返されます。
ただし,受信メッセージがMCPメッセージの場合だけアドレスが返されます。
メッセージ情報を参照する場合はTRNINF_SERVICE_MCPにキャストしてください。
また,トランザクション起動時に通知するTRNINF_SERVICE_MCPの領域を使用するため,以前の情報は参照できなくなります。
リターン値
リターン値 |
意味 |
---|---|
EE_OK |
正常に終了しました。 |
EECOMER_CNDBPP |
オフラインバッチプロセスから発行しているため,この機能は使用できません。 |
EECOMER_CNDUOC |
UOCから発行しているため,この機能は使用できません。 |
EECOMER_ENVIRON |
TP1/EEの環境下にありません。 |
EESCDER_ARGUMENT |
引数に設定した値が間違っています。 |
EESCDER_CONDITION |
発行条件が不正です(プロセス関連定義のxtc_useオペランドにNを指定してこの関数を発行)。 |
EESCDER_INVALID_MESSAGE |
トランザクション起動時のメッセージが滞留メッセージ読み出し対象メッセージではありません。 |
EESCDER_INVALID_TRNTYPE |
この関数を発行できるサービスではありません(サービス属性定義でservice_attr -e serialを指定していないサービスでこの関数を発行)。または,トランザクション種別がMNまたはTMではありません。 |
EESCDER_NO_DATA |
滞留メッセージはありません。※1 |
EESCDER_NO_MESSAGE |
滞留メッセージ中に同種のメッセージがありません。 |
EESCDER_OVERFLOW |
入力メッセージ引き渡しエリア(IMA)がオーバフローしました。※2 |
EESCDER_TIMING |
スキップ処理中のため読み出せません。 |
EESCDER_TRN_CHANGE |
中間同期点処理を行ったため,滞留メッセージの受信はできません。 |
EESCDER_UPPER_LIMIT |
読み出し上限を超えました。 |
注意事項
-
滞留メッセージを受信できるのは,次のメッセージ種別がトランザクション起動時に渡されたメッセージ種別と同じメッセージの場合です。
なお,タイマトランザクションの場合は,永続タイマと非永続タイマは同じメッセージ種別とは見なされません。
-
トランザクション起動時に渡されたメッセージ種別がRPC受信メッセージであり,かつ応答型RPCまたはトランザクショナルRPCの場合は,滞留しているメッセージを受信できません。
また,リモートAPI機能(RAP)で送信されたメッセージも受信できません。
-
トランザクション起動時に引き出したキュー(優先キューまたは通常キュー)に滞留しているメッセージだけ受信できます。
例えば最初に引き出したキューが優先キューの場合,通常キューにメッセージが滞留していてもこの関数では受信できません。
-
入力メッセージ引き渡しエリアおよび入力メッセージサイズ格納領域はトランザクション起動時に使用した領域を再使用します。この関数発行後に前のメッセージおよびメッセージサイズを参照する場合は領域の内容を退避したあと,この関数を発行してください。
-
トランザクション起動時のトランザクション種別がMNまたはTMの場合だけ,この関数を発行できます。
-
該当サービスの同時引き出しの可否(service_attr -e)にserialを指定した場合だけ,この関数を発行できます。
-
滞留メッセージを受信できる最大数は,トランザクション起動時に滞留していたメッセージ数です。
-
中間同期点処理(ee_trn_chained_rollback関数発行)を行ったあとは,この関数を発行できません。