サービス関数(SPP)の作成
SPPはサービスを提供するUAPです。ここでは,MCPでのSPPの文法について説明します。
- 〈このページの構成〉
形式
- ANSI C,C++の形式
#include <eerpcsrv.h> #include <eemcp.h> void 関数名(char *in, EEULONG *in_len, char *out, EEULONG *out_len, EERPC_INTERFACE_TBL *trninf) { サービスの処理 } /* EERPC_INTERFACE_TBL構造体の形式 */ EERPC_INTERFACE_TBL { EEULONG trn_len; EEULONG group_len; char servicegroup[32]; EEULONG service_len; char service[32]; char trn_id[2]; char auto_block; char commit_inf; EEULONG thread_no; EEULONG err_code; EEULONG uifa_len; char yobi_1[4]; char *uifa; EEULONG usat_len; char yobi_2[4]; char *usat; char ans_inf; char msg_inf; char start_inf; char before_end_inf; char end_inf; char thread_down_inf; char uap_errtrn_inf; char trninf_ex; EEULONG rm_no; EELONG rm_inf; EEULONG es_group_len; char es_servicegroup[32]; EEULONG es_service_len; char es_service[32]; EEULONG abn_thread_no; char yobi_3[4]; union { TRNINF_SERVICE_EX *trninf_service_ex; TRNINF_DBQ_EX *trninf_dbq_ex; TRNINF_DBQ_OBS_EX *trninf_dbq_obs_ex; } ex_inf; void *xtc_pt; void *mcp_pt; : : }
機能
サービスを実行するSPPのサービス関数です。サービス関数は,上記の形式で任意に作成してください。
サービス関数名は,サービス関数のエントリポインタ(入り口点)の名称に対応します。この対応づけは,UAPの実行環境を設定するときに指定します。UAPの実行環境を設定する手順を次に示します。
-
TP1/EEでの設定
ユーザサービス関連定義で指定します。詳細については,マニュアル「TP1/Server Base Enterprise Option 使用の手引」を参照してください。
-
MCPでの設定
MCP後処理トランザクション起動サービス名は,eemcpfunc定義コマンドで指定します。詳細については,「4.3 MCP構成定義の詳細」の「eemcpfunc(アプリケーション定義)」を参照してください。
引数の指定
ここでは,引数の指定のうち,TP1/EEと異なる部分について説明します。そのほかの引数情報については,マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。
トランザクション種別がRLの場合にサービス関数に値が渡される引数を次の表に示します。
|
項番 |
引数情報 |
参照可否 |
|---|---|---|
|
1 |
入力パラメタ |
× |
|
2 |
入力パラメタ長 |
× |
|
3 |
サービス関数の応答 |
× |
|
4 |
応答の長さ |
× |
|
5 |
トランザクションインタフェース情報 |
○ |
- (凡例)
-
○:参照できます。
×:参照できません。
- ■入力パラメタと入力パラメタ長の関係
-
入力パラメタ(in)と入力パラメタ長(in_len)の関係を次の図に示します(単位:バイト)。
- TCP/IPの場合
-
- UDPの場合
-
制御ヘッダについては,「5.2 ee_mcp_send - 非同期一方送信メッセージの送信」の「UAPで値を設定する引数」を参照してください。
なお,MCPではサービス関数の応答(out)を使用した応答送信はできません。
クライアントUAPから値が渡される引数
トランザクション種別がESの場合にTP1/EEと設定値が異なる引数を次に示します。そのほかの引数については,マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」およびマニュアル「TP1/EE/Extended Transaction Controller 使用の手引」を参照してください。
●in
トランザクションと同期して送信する非同期一方送信のメッセージ送信API(ee_mcp_send関数)の入力パラメタ(senddata)に設定した値(出力メッセージ編集UOC指定時は編集後の値※)が渡されます。
- 注※
-
メッセージの最大サイズを拡張している場合に,出力メッセージ編集UOCで不正なサイズを指定したときは,編集後の値を0バイトとします。また,入力メッセージ編集UOCで編集後に送信バッファ不足が発生した場合,編集後の値の末尾を切り捨てます。
●in_len
トランザクションと同期して送信する非同期一方送信のメッセージ送信API(ee_mcp_send関数)の入力パラメタ(sdataleng)に設定した値(出力メッセージ編集UOC指定時は編集後の値※)に8を加算した値が渡されます。
- 注※
-
メッセージの最大サイズを拡張している場合に,出力メッセージ編集UOCで不正なサイズを指定したときは,編集後の値を0バイトとします。また,入力メッセージ編集UOCで編集後に送信バッファ不足が発生した場合,編集後の値の末尾を切り捨てます。
●out_len
参照できません。
その他
次に示す内容については,マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。
-
TP1/EEから値が返される引数
-
UAPで値を設定する引数
-
サービス関数の処理での注意
-
トランザクションとサービス関数の関係
-
リターン値