Hitachi

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


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

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

エラーイベント(ERREVT1,ERREVT2,ERREVT3,ERREVT4,ERREVTA)および送信完了通知イベント(SCMPEVT)で使用する構造体は,<dcmcf.h>で定義してあります。なお,dc_mcf_evtheaderは,<dcmcf.h>で定義されています。<dcmtcpu.h>の前に<dcmcf.h>を取り込んでおいてください。

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

〈この項の構成〉

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

(a) 形式

struct dc_mcf_evtheader {
  char mcfevt_name[9] ; …  MCFイベントコード
  char le_name[16] ;    …  入力元論理端末名称
                           (ERREVT1,ERREVT2,ERREVT3,CERREVT,
                             COPNEVT,CCLSEVT,RHLDEVT,MDELEVTの場合)
                            出力先論理端末名称
                           (ERREVTA,SCMPEVTの場合)
  char cn_name[9] ;     …  コネクション名
  unsigned char format_kind; 
                        …  MCF使用領域
  char reserve01;       …  予備
  DCLONG time ;         …  メッセージ入力時刻
};

(b) MCFイベントとして設定される項目

  • le_name

    ERREVT1,ERREVT2,ERREVT3,またはRHLDEVTでは,メッセージを入力した論理端末名称が設定されます。

    ただし,ERREVT2またはERREVT3で,次に示す場合は,'*'が設定されます。

    • SPPからアプリケーション起動機能で起動したMHPで,障害が発生した場合

    • 上記の障害が発生したあとに,MCFイベントとして起動したMHPからさらにアプリケーション起動機能で起動したMHPで,障害が発生した場合

    ERREVTA,SCMPEVTでは,メッセージを出力する論理端末名称が設定されます。

    CERREVTでは,障害が発生した論理端末名称,または障害が発生したコネクションに対応する論理端末名称が設定されます。

    COPNEVTまたはCCLSEVTでは,確立または解放したコネクションに対応する論理端末名称が設定されます。

    MDELEVTでは,破棄したメッセージを入力した論理端末名称,または破棄したメッセージを出力しようとした論理端末名称が設定されます。

  • cn_name

    コネクション名が設定されます。

    ただし,ERREVT2またはERREVT3で,次に示す場合は,'*'が設定されます。

    • SPPからアプリケーション起動機能で起動したMHPで,障害が発生した場合

    • 上記の障害が発生したあとに,MCFイベントとして起動したMHPからさらにアプリケーション起動機能で起動したMHPで,障害が発生した場合

  • time

    メッセージを入力した時刻が,1970年1月1日0時0分0秒からの通算の秒数で設定されます。

(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イベントとして設定される項目

  • ap_name

    次に示すどちらかが設定されます。

    • 形式不正の場合…不正となったアプリケーション名

    • 定義されていない場合…定義されていないアプリケーション名

    アプリケーション名は,MHPから送信されたメッセージの場合に設定されます。ただし,MHP以外から送信された場合はヌル文字が設定されます。

(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イベントとして設定される項目

  • ap_name

    エラーになったUAPのアプリケーション名が設定されます。

    アプリケーション名は,MHPから送信されたメッセージの場合に設定されます。ただし,MHP以外から送信された場合はヌル文字が設定されます。

  • reason_code

    ERREVT2の理由コードが設定されます。理由コードの詳細については,「付録J 理由コード一覧」を参照してください。

(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イベントとして設定される項目

  • ap_name

    異常が発生したMHPのアプリケーション名が設定されます。

    アプリケーション名は,MHPから送信されたメッセージの場合に設定されます。ただし,MHP以外から送信された場合はヌル文字が設定されます。

  • service_name

    異常が発生したMHPのアプリケーション名に対応するサービス名が設定されます。

  • serv_grp_name

    異常が発生したMHPのサービスが属するサービスグループ名が設定されます。

  • bid

    トランザクションブランチIDが次の形式で設定されます。

    [図データ]

(5) ERREVTA

(a) 形式

struct dc_mcf_evta_type {
  struct dc_mcf_evtheader  evtheader ; 
                           … MCFイベント共通ヘッダ
  char reserve01[12] ;     … 予備
  char reserve02[10] ;     … 予備
  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イベントとして設定される項目

  • ap_name

    正常終了したメッセージのアプリケーション名が設定されます。

    アプリケーション名は,MHPから送信されたメッセージの場合に設定されます。ただし,MHP以外から送信された場合はヌル文字が設定されます。

(6) SCMPEVT

(a) 形式

struct dc_mcf_scmpevt_type {
  struct dc_mcf_evtheader  evtheader ; … MCFイベント共通ヘッダ
  DCLONG output_no ;                   … 出力通番
  char map_name[9] ;                   … MCFが使用
  char msg_type ;                      … メッセージ種別
  char reason_code ;                   … 起動理由
  char reserve01[5] ;                  … 予備
  DCLONG user_leng ;                   … MCF使用領域
  char pro_indv_inf[16] ;              … MCF使用領域
  char user_data[16] ;                 … MCF使用領域
} ;

(b) MCFイベントとして設定される項目

  • output_no

    出力通番が設定されます。出力通番がない場合は,「-1」が設定されます。

  • msg_type

    メッセージ種別として,次のどちらかの値が設定されます。

    n:一般一方送信メッセージ

    p:優先一方送信メッセージ

  • reason_code

    起動理由として次の値が設定されます。

    △:メッセージが正常に送信されました。

(7) CERREVT

(a) 形式

typedef struct {
  struct dc_mcf_evtheader  header ;
                           … MCFイベント共通ヘッダ
  DCLONG err_fact ;        … 障害要因コード(4バイト)
                              0x30:コネクション障害発生
                              0x31:論理端末障害発生
  DCLONG err_reason1 ;     … 理由コード1(4バイト)
  DCLONG err_reason2 ;     … 理由コード2(4バイト)
  char group_name[16];     … MCF使用領域
  char reserve1[32] ;      … 予備
} dcmtcp_cerrevt ;

(b) MCFイベントとして設定される項目

  • err_reason1,err_reason2

    CERREVTの理由コード1,理由コード2が設定されます。「付録J 理由コード一覧」を参照してください。

(8) COPNEVT,CCLSEVT

(a) 形式

typedef struct {
  struct dc_mcf_evtheader  header ; 
                           … MCFイベント共通ヘッダ
  char group_name[16];     … MCF使用領域
  char reserve1[40] ;      … 予備
} dcmtcp_statevt ;

(9) RHLDEVT

(a) 形式

typedef struct {
  struct dc_mcf_evtheader  header ;
                         … MCFイベント共通ヘッダ
  char group_name[16];   … MCF使用領域
  char reserve1[44] ;    … 予備
} dcmtcp_rhldevt ;

(10) MDELEVT

(a) 形式

typedef struct {
  struct dc_mcf_evtheader  header ;
                         … MCFイベント共通ヘッダ
  DCLONG del_reason;     … 理由コード
  char group_name[16];   … MCF使用領域
  char reserve1[40] ;    … 予備
} dcmtcp_mdelevt ;

(b) MCFイベントとして設定される項目

  • del_reason

    MDELEVTの理由コードが設定されます。理由コードの詳細については,「付録J 理由コード一覧」を参照してください。