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-16 MCFイベントの一覧

MCFイベント名MCFイベントコードMCFイベントが通知された原因MCFイベント処理用
MHPで実行する処理の例
不正アプリケーション名検出通知イベントERREVT1メッセージのアプリケーション名がMCFアプリケーション定義にありません。該当するアプリケーション名がなかったことを知らせます。
受信したメッセージが問い合わせメッセージの場合は,応答メッセージを送信できます。
メッセージ廃棄通知イベントERREVT2次に示す理由で,MCFで受信した入力キューのメッセージ,またはアプリケーションの即時起動によって入力キューに入力されたメッセージを廃棄しました。
  • 入力キューに障害が起こりました。
  • MHPのサービス,サービスグループ,またはアプリケーションが閉塞しました。
  • MHPのサービス,サービスグループ,またはアプリケーションがセキュア状態です。
  • MHPで呼び出すdc_mcf_receive関数にセグメントを渡す前に,MHPが異常終了しました。
  • アプリケーション名に相当するMHPのサービスがありません。
  • MCFからSPPを起動できません。
  • MHPが開始されていません。
メッセージを廃棄したことを知らせます。
受信したメッセージが問い合わせメッセージの場合は,応答メッセージを送信できます。
UAP異常終了通知イベントERREVT3MHPで呼び出す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を指定した場合は除きます。

<この節の構成>
3.10.1 不正アプリケーション名検出通知イベント(ERREVT1)
3.10.2 メッセージ廃棄通知イベント(ERREVT2)
3.10.3 UAP異常終了通知イベント(ERREVT3)
3.10.4 タイマ起動メッセージ廃棄通知イベント(ERREVT4)
3.10.5 未処理送信メッセージ廃棄通知イベント(ERREVTA)
3.10.6 送信障害通知イベント(SERREVT)
3.10.7 送信完了通知イベント(SCMPEVT)
3.10.8 障害通知イベント(CERREVT,VERREVT)
3.10.9 コネクション確立通知イベント(COPNEVT,VOPNEVT)
3.10.10 コネクション解放通知イベント(CCLSEVT,VCLSEVT)
3.10.11 MCFイベントのメッセージ形式