Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引


ee_trn_getinfo

〈このページの構成〉

名称

現在のトランザクション識別情報の取得

形式

ANSI C,C++の形式

#include <eetrn.h>
int  ee_trn_getinfo(EETRNID2 *eetrnid, EELONG flags)

機能

実行中のトランザクションのトランザクション識別情報をリソースマネジャごとに取得します。リターン値がEE_OK(次のリソースマネジャ情報なし)になるまで,この関数を連続して呼び出すことによって,接続中のすべてのリソースマネジャの情報を取得できます。リターン値がEE_OKの状態でこの関数を呼び出した場合は,最初からトランザクション識別情報を取得します。

UAPで値を設定する引数

●eetrnid

トランザクション識別情報を格納するための構造体ポインタのアドレスを設定します。

●flags

EENOFLAGSを設定します。

TP1/EEから値が返される引数

●eetrnid

トランザクション識別情報が構造体EETRNID2で返されます。構造体の形式は次のとおりです。

struct ee_trn_id_t2{
  EELONG  processid;
  EEULONG centraltransactionid;
  EELONG  resume;
  int     rmid;
  int     size;
  char    name[EETRN_RM_NAMESZ];
  int     opensize;
  char    openname[OPENNAMESZ];
  int     xidsize;
  char    xid[XIDSZ];
  char    dummy[1024];
}EETRNID2;
  • processid(プロセスID)

    プロセスIDが返されます。

  • centraltransactionid(中央処理通番)

    該当するトランザクションの中央処理通番が返されます。

  • resume(リソースマネジャ接続状態)

    リソースマネジャとの接続状態が返されます。

    EETRN_RM_CONNECT

    リソースマネジャ接続正常

    EETRN_RM_ERROR

    リソースマネジャ接続失敗によるトランザクション縮退起動

  • rmid(リソースマネジャID)

    リソースマネジャIDが返されます。

  • size(リソースマネジャ名長)

    リソースマネジャ名(リソースマネジャ拡張子を含む)の長さが返されます(単位:バイト)。

  • name(リソースマネジャ名)

    リソースマネジャ名(リソースマネジャ拡張子を含む)が返されます。領域の長さ(EETRN_RM_NAMESZ)は36バイトです。

  • opensize(xa_open関数用文字列長)

    xa_open関数用文字列の長さが返されます(単位:バイト)。

  • openname(xa_open関数用文字列)

    xa_open関数用文字列が返されます。領域の長さ(OPENNAMESZ)は256バイトです。

  • xidsize(XID長)

    XIDの長さが返されます(単位:バイト)。

  • xid(XID)

    XIDが返されます。領域の長さ(XIDSZ)は256バイトです。

  • dummy

    予備の領域です。

リターン値

リターン値

意味

EE_OK

正常に終了しました(次のリソースマネジャ情報なし)。

EE_CONTINUE

正常に終了しました(次のリソースマネジャ情報あり)。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため,この機能は使用できません。

EECOMER_CNDUOC

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

EECOMER_ENVIRON

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

EETRNER_ARGUMENT

引数に設定したポインタがNULLのため値を設定できません。

指定例

int       returncode;
EETRNID2  eetrnid;
            :
memset(&eetrnid,'\0',sizeof(EETRNID2));
                :
returncode = EE_CONTINUE;
while(returncode == EE_CONTINUE){
   returncode = ee_trn_getinfo(&eetrnid,EENOFLAGS);
   if(returncode == EE_OK || returncode == EE_CONTINUE){
      printf("プロセスID = %d\n ",eetrnid.processid);
      printf("中央処理通番 = %u\n ",eetrnid.centraltransactionid);
            :
      }
     else{
      printf("cannot get transaction information\n");
    }
}

注意事項

リソースマネジャがない場合はリソースマネジャ情報以外の値が設定され,リターン値EE_OK(次のリソースマネジャ情報なし)でリターンします。