分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/X25編

[目次][用語][索引][前へ][次へ]

5.2.3 MCFイベント情報の形式(C言語)

MCFイベント情報は構造体で,MCFイベント処理用MHPに渡されます。MHPに渡される構造体の形式は,MCFイベントの種類によって異なります。ただし,MCFイベント情報の先頭部分の形式は,各イベントで共通です。

PVCの場合,MCFイベントの共通ヘッダ(dc_mcf_evtheader),およびエラーイベント(ERREVTn)で使用する構造体は<dcmcf.h>で定義されています。また,CERREVT通知インタフェース(dcmpcm_cerrevt)は<dcmpcm.h>で,COPNEVT,CCLSEVT通知インタフェース(dcmx25_statevt)は<dcmx25.h>で定義されています。<dcmcf.h>,<dcmpcm.h>,<dcmx25.h>の順に取り込んでください。

VCの場合,MCFイベントの共通ヘッダ(dc_mcf_evtheader),およびエラーイベント(ERREVTn)で使用する構造体は<dcmcf.h>で定義されています。また,CERREVT通知インタフェース(dcmx2m_cerrevt),およびCOPNEVT,CCLSEVT通知インタフェース(dcmx2m_statevt)は,共に<dcmx2m.h>で定義されています。<dcmcf.h>,<dcmx2m.h>の順に取り込んでください。

MCFイベントとして設定される項目を次に示します。

<この項の構成>
(1) MCFイベントの共通ヘッダ
(2) ERREVT1
(3) ERREVT2
(4) ERREVT3
(5) ERREVTA
(6) CERREVT
(7) COPNEVT,CCLSEVT

(1) MCFイベントの共通ヘッダ

(a) 形式
 
struct dc_mcf_evtheader {
  char   mcfevt_name[9] ;             … MCFイベント情報コード
  char   le_name[16] ;                … 論理端末名称
  char   cn_name[9] ;                 … コネクション名
  unsigned char format_kind ;         … MCFが使用
  char   reserve01 ;                  … 予備
  DCLONG time ;                       … メッセージ入力時刻
} ;
 
(b) MCFイベントとして設定される項目

(2) ERREVT1

(a) 形式
 
struct dc_mcf_evt1_type {
  struct dc_mcf_evtheader  evtheader ;   … MCFイベント情報共通ヘッダ
  char reserve01[12] ;                   … 予備
  char reserve02[10] ;                   … 予備
  char reserve03[2] ;                    … 予備
  char ap_name[10] ;                     … アプリケーション名
  char reserve04[2] ;                    … 予備
} ;
(b) MCFイベントとして設定される項目

(3) ERREVT2

(a) 形式
 
struct dc_mcf_evt2_type {
  struct dc_mcf_evtheader  evtheader ;   … MCFイベント情報共通ヘッダ
  char reserve01[12] ;                   … 予備
  char reserve02[10] ;                   … 予備
  char reserve03[2] ;                    … 予備
  char ap_name[10] ;                     … アプリケーション名
  short reason_code ;                    … 理由コード
} ;
(b) MCFイベントとして設定される項目

(4) ERREVT3

(a) 形式
 
struct dc_mcf_evt3_type {
  struct dc_mcf_evtheader  evtheader ;   … MCFイベント情報共通ヘッダ
  char reserve01[12] ;                   … 予備
  char map_name[10] ;                    … MCFが使用
  char reserve03[2] ;                    … 予備
  char ap_name[10] ;                     … アプリケーション名
  char reserve04[2] ;                    … 予備
  char service_name[32] ;                … サービス名
  char serv_grp_name[32] ;               … サービスグループ名
  char bid[36] ;                         … トランザクションブランチ
                                            ID領域
} ;
(b) MCFイベントとして設定される項目

(5) ERREVTA

(a) 形式
 
struct dc_mcf_evta_type {
  struct dc_mcf_evtheader  evtheader ;   … MCFイベント情報共通ヘッダ
  char   reserve01[12] ;                 … 予備
  char   map_name[10] ;                  … MCFが使用
  char   reserve03[2] ;                  … 予備
  char   ap_name[10] ;                   … アプリケーション名
  char   reserve04[2] ;                  … 予備
  char   reserve05[32] ;                 … 予備
  char   reserve06[32] ;                 … 予備
  DCLONG user_leng ;                     … 他プロトコルの場合に有効
  char   user_data[16] ;                 … 他プロトコルの場合に有効
  char   reserve07[16] ;                 … 予備
} ;
(b) MCFイベントとして設定される項目

(6) CERREVT

(a) PVCの場合の形式

PVCのCERREVT通知インタフェースdcmpcm_cerrevtの形式を示します。

 
typedef struct {
struct dc_mcf_evtheader  header ; 
                           … MCFイベント情報共通ヘッダ(40バイト)
  DCLONG err_fact ;        … 障害要因コード(4バイト)
  DCLONG err_reason1 ;     … 理由コード1(4バイト)
  DCLONG err_reason2 ;     … 理由コード2(4バイト)
  DCLONG recover_code ;    … 回復可否識別(4バイト)
  DCLONG retry_code ;      … 自動リトライ有無識別
} dcmpcm_cerrevt ;
 
typedef struct {
  dcmpcm_cerrevt comheader ;   … プロトコル共通ヘッダ
  char reserve[36] ;           … 予備
} dcmx25_cerrevt ;
(b) VCの場合の形式

VCのCERREVT通知インタフェースdcmx2m_cerrevtの形式を示します。

 
typedef struct {
  struct dc_mcf_evtheader header ;
                            … MCFイベント情報共通ヘッダ(40バイト)
  DCLONG err_fact ;         … 障害要因コード(4バイト)
  DCLONG err_reason1;       … 理由コード1(4バイト)
  DCLONG err_reason2 ;      … 理由コード2(4バイト)
  DCLONG err_dctreason ;    … 切断理由コード
  char   rname[16] ;        … MCFが使用
  char   reserve1[26] ;     … 予備
} dcmx2m_cerrevt ;
(c) MCFイベントとして設定される項目

(7) COPNEVTCCLSEVT

(a) PVCの場合の形式

PVCのCOPNEVT,CCLSEVT通知インタフェースdcmx25_statevtの形式を示します。

 
typedef struct {
  struct dc_mcf_evtheader  header ;   … MCFイベント情報共通ヘッダ
  char reserve1[56] ;                 … 予備
} dcmx25_statevt ;
(b) VCの場合の形式

VCのCOPNEVT,CCLSEVT通知インタフェースdcmx2m_statevtの形式を示します。

 
typedef struct {
  struct dc_mcf_evtheader header ;   … MCFイベント情報共通ヘッダ
  char reserve[16] ;                 … 予備
  char rname[16] ;                   … MCFが使用
  char reserve1[26] ;                … 予備
} dcmx2m_statevt ;