Hitachi

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


サービス関数(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の実行環境を設定する手順を次に示します。

  1. TP1/EEでの設定

    ユーザサービス関連定義で指定します。詳細については,マニュアル「TP1/Server Base Enterprise Option 使用の手引」を参照してください。

  2. MCPでの設定

    MCP後処理トランザクション起動サービス名は,eemcpfunc定義コマンドで指定します。詳細については,「4.3 MCP構成定義の詳細」の「eemcpfunc(アプリケーション定義)」を参照してください。

引数の指定

ここでは,引数の指定のうち,TP1/EEと異なる部分について説明します。そのほかの引数情報については,マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。

トランザクション種別がRLの場合にサービス関数に値が渡される引数を次の表に示します。

表5‒4 トランザクション種別が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 プログラム作成の手引」を参照してください。