Hitachi

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


3.10 MCFイベント

メッセージ送受信形態の通信をする場合,OpenTP1の各種システム情報をMHPに知らせるために,MCFからメッセージを出力します。これをMCFイベントといいます。メッセージ送受信の処理でエラーや障害が起こった場合,システム内で何が起こっているのかがMCFイベントの内容でわかります。MCFイベントには,エラーや障害発生などのエラーイベントと,コネクションの確立・解放などプロトコルに依存する通信イベントの2種類があります。

MCFイベントの内容を基に障害の対処をするMHPをMCFイベント処理用MHPといいます。このMHPを作成しておくと,独自の障害回復処理などができます。

MCFイベントは入力キューに渡されて,MCFイベント処理用MHPが起動されます。このとき,入力メッセージの編集とアプリケーション名決定UOCは経由しません。また,MCFイベントに対して障害が起こったことによって,MCFイベントが起動されることはありません。

MCFイベントの一覧を次の表に示します。次の表に示すMCFイベント以外にも,通信プロトコル対応製品で固有なMCFイベントが通知される場合があります。通信プロトコル対応製品で固有なMCFイベントについては,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。

表3‒13 MCFイベントの一覧

MCFイベント名

MCFイベントコード

MCFイベントが通知された原因

MCFイベント処理用

MHPで実行する処理の例

不正アプリケーション名検出通知イベント

ERREVT1

メッセージのアプリケーション名がMCFアプリケーション定義にありません。

該当するアプリケーション名がなかったことを知らせます。

受信したメッセージが問い合わせメッセージの場合は,応答メッセージを送信できます。

メッセージ廃棄通知イベント

ERREVT2

次に示す理由で,MCFで受信した入力キューのメッセージ,またはアプリケーションの即時起動によって入力キューに入力されたメッセージを廃棄しました。

  • 入力キューに障害が発生しました。

  • 入力メッセージ最大格納数を超過しました。

  • 動的共用メモリが不足しました。

  • キューファイルが満杯になりました。

  • MHPのサービス,サービスグループ,またはアプリケーションが閉塞しています。

  • スケジュール閉塞されているサービスグループの入力キューに未処理受信メッセージが残った状態で,OpenTP1を正常終了または計画停止Aで終了しました。

  • MHPのサービスグループ,またはアプリケーションがセキュア状態です。

  • MHPで呼び出すdc_mcf_receive関数にセグメントを渡す前に,MHPが異常終了しました。

  • アプリケーション名に相当するMHPのサービスがありません。

  • ユーザサーバ未起動などによって,MHPの起動に失敗しました。

  • DBMSの障害などによって,トランザクションの開始に失敗しました。

メッセージを廃棄したことを知らせます。

受信したメッセージが問い合わせメッセージの場合は,応答メッセージを送信できます。

UAP異常終了通知イベント

ERREVT3

MHPで呼び出すdc_mcf_receive関数にセグメントを渡したあとで,MHPが異常終了,またはロールバックしました。

UAPが異常終了,またはロールバックしたことを知らせます。

受信したメッセージが問い合わせメッセージの場合は,応答メッセージを送信できます。

タイマ起動メッセージ廃棄通知イベント

ERREVT4

タイマ起動のアプリケーション起動によって入力キューに入力されたメッセージをERREVT2に示す理由で廃棄しました。

メッセージを廃棄したことを知らせます。

受信したメッセージが問い合わせメッセージの場合は,応答メッセージを送信できます。

未処理送信メッセージ廃棄通知イベント

ERREVTA

次に示す理由で,UAPから送信した未処理送信メッセージを廃棄しました。

  • MCFの正常終了処理時に,未処理送信メッセージの滞留時間監視の時間切れ(タイムアウト)が起こりました。

  • mcftdlqleコマンドまたはdc_mcf_tdlqle関数で,出力キューが削除されました。

  • タイマ起動要求や閉塞されている論理端末の出力キューに未処理送信メッセージが残った状態で,dcstopコマンドが実行されました。

未処理送信メッセージを廃棄したことを知らせます。

受信した未処理送信メッセージは,任意のファイルへ退避します。

送信障害通知イベント

SERREVT

メッセージを送信する途中で,通信プロトコルの障害が起こりました。

通信プロトコルの障害でメッセージを送信できなかったことを知らせます。

送信完了通知イベント

SCMPEVT

相手システムへ,メッセージを正常に送信できました。

相手システムまでメッセージを正常に送信できたことを知らせます。

障害通知イベント

CERREVT

VERREVT)

通信管理プログラムで,コネクション障害,または論理端末障害が起こりました。コネクション確立再試行を定義している場合は,通知されません。

コネクション,または論理端末に障害が起こったことを知らせます。

状態通知イベント

COPNEVT

VOPNEVT)

コネクションが確立しました。

メッセージを送受信できることを知らせます。

CCLSEVT

VCLSEVT)

コネクションが正常に解放されました。

メッセージを送受信できないことを知らせます。

ERREVT1,ERREVT2,ERREVT3,ERREVT4,ERREVTAはエラーイベントを示します。

SERREVT,SCMPEVT,CERREVT,COPNEVT,CCLSEVTは通信イベントを示します。

注※

MCFアプリケーション定義(mcfaalcap -g)のrecvmsgオペランドにrを指定した場合,またはdc_mcf_rollback関数のactionにDCMCFRTRYもしくはDCMCFRRTNを指定した場合は除きます。

〈この節の構成〉