Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/Secondary Logical Unit - TypeP2編


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

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

エラーイベント(ERREVTn)で使用する構造体は<dcmcf.h>で定義してあります。なお,dc_mcf_evtheaderは<dcmcf.h>で定義されています。<dcmslm.h>の前に<dcmcf.h>を取り込んでおいてください。

〈この項の構成〉

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

(a) 形式

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

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

  • le_name

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

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

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

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

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

    CERREVT,COPNEVT,またはCCLSEVTの場合は無効です。

  • 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の理由コードが設定されます。理由コードの内容については,「付録H 理由コードおよびセンスコード一覧」を参照してください。

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

  • ap_name

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

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

(6) CERREVT

(a) 形式

typedef struct{
    struct dc_mcf_evtheader  header;
                               … MCFイベント共通ヘッダ
    DCLONG err_fact;           … 障害要因コード(4バイト)
    DCLONG err_reason1;        … 理由コード1(4バイト)
    DCLONG err_reason2;        … 理由コード2(4バイト)
    DCLONG err_rcv_action;     … 回復動作情報
    char reserve1[42];         … 予備
}dcmslm_cerrevt;

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

  • err_fact

    CERREVTの障害要因コードが次に示す値で設定されます。

    (00000030)16

    コネクション障害発生

    (00000031)16

    論理端末障害発生

  • err_reason1,err_reason2

    CERREVTの理由コードが設定されます。「付録H 理由コードおよびセンスコード一覧」を参照してください。

  • err_rcv_action

    CERREVT通知時に,回復動作情報として次の値が設定されます。

    DCMSLM_RSV_MANUAL

    コマンド入力による手動回復

    DCMSLM_RSV_AUTO

    システムによる自動回復

    回復動作情報は,該当するコネクションが端末起動の場合は手動回復になり,ホスト起動の場合は自動回復になります。

(7) COPNEVT,CCLSEVT

(a) 形式

typedef struct{
    struct dc_mcf_evtheader header;
                              … MCFイベント共通ヘッダ
    DCLONG cls_rcv_action;    … 回復動作情報
                                (CCLSEVTの場合だけ有効)
    char reserve1[54];        … 予備
}dcmslm_statevt;

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

  • cls_rcv_action

    CCLSEVT通知時に,回復動作情報として次の値が設定されます。

    DCMSLM_RSV_MANUAL

    コマンド入力による手動回復

    DCMSLM_RSV_AUTO

    システムによる自動回復

    回復動作情報は,該当するコネクションが端末起動の場合は手動回復になり,ホスト起動の場合は自動回復になります。