3.8.1 アプリケーションプログラムの起動

MHPまたはSPPから,MHPを起動できます。アプリケーションプログラムを起動する関数(dc_mcf_execap関数CBLDCMCF('EXECAP '))に,起動させたいMHPのアプリケーション名と,引き渡すメッセージのセグメントを設定します。

<この項の構成>
(1) アプリケーションプログラムを起動するときに使用するMCFのプロセス
(2) アプリケーションプログラムを起動する方法
(3) 起動するタイミング
(4) アプリケーションプログラムの起動の種類
(5) アプリケーションプログラムの起動前に障害が起こった場合のエラーイベント
(6) ネットワークコミュニケーション定義との関連
(7) 起動させるMHPに渡す,入力元論理端末名称
(8) TP1/Message Control(MCF)の再開始(リラン)時のタイマ起動の扱い

(1) アプリケーションプログラムを起動するときに使用するMCFのプロセス

アプリケーション起動機能(dc_mcf_execap関数)を使う場合,メッセージ送受信の関数(dc_mcf_receive関数,dc_mcf_send関数など)とは別のMCFのプロセスを使います。メッセージ送受信で使うMCFのプロセスをMCF通信プロセス,dc_mcf_execap関数で使うMCFのプロセスをアプリケーション起動プロセスといいます。アプリケーション起動プロセスは,通信プロトコルには依存しません。

(2) アプリケーションプログラムを起動する方法

dc_mcf_execap関数でアプリケーションプログラムを起動できるのは,MHPSPPです。dc_mcf_execap関数を呼び出すと,MHPを起動できます。

dc_mcf_execap関数で送信したセグメントは,MHPで呼び出すdc_mcf_receive関数で受け取ります。起動できるのは,dc_mcf_execap関数を呼び出したUAPと同じノードにあるMHPだけです。他ノードのMHPは,dc_mcf_execap関数で起動できません。

注※
TP1/NET/OSAS-NIF,またはTP1/NET/HNA-NIFを使用して通信する場合は,dc_mcf_execap関数でメッセージ送受信をするので,この限りではありません。

(3) 起動するタイミング

起動させるMHPが実際に起動するのは,次の場合です。

(4) アプリケーションプログラムの起動の種類

MHPを起動する方法は,次の2種類があります。

(a) 即時起動

dc_mcf_execap関数を呼び出したUAPの処理がコミットとなってから,すぐに起動します。

(b) タイマ起動

dc_mcf_execap関数を呼び出した直後から,設定した時間に起動します。タイマ起動には,次の2とおりの指定があります。

(5) アプリケーションプログラムの起動前に障害が起こった場合のエラーイベント

dc_mcf_execap関数を呼び出して,MHPを起動するまでに障害が起こった場合は,次のMCFイベントが通知されます。

MCFイベントについては,「3.10 MCFイベント」を参照してください。

アプリケーションプログラムの起動を次の図に示します。

図3-13 アプリケーションプログラムの起動

[図データ]

(6) ネットワークコミュニケーション定義との関連

(a) MCF通信構成定義との関係

dc_mcf_execap関数を呼び出すUAPがあるノードには,通常の実行プロセスのほかに,アプリケーション起動プロセスが必要になります。アプリケーション起動プロセスはアプリケーション起動環境定義に指定します。アプリケーションプログラムを起動させる関数を使うOpenTP1では,MCF通信構成定義のアプリケーション起動環境定義を作成しておいてください。

(b) MCFアプリケーション定義との関係

MCFアプリケーション定義アプリケーション属性定義(mcfaalcap)のtypeオペランドに指定したアプリケーションの型によって,アプリケーションと起動の使い方が決まります。

(7) 起動させるMHPに渡す,入力元論理端末名称

MHPからdc_mcf_execap関数でMHPを起動する場合,起動されたMHPで受け取るメッセージ入力元の論理端末名称は,最初に受信したメッセージ中の名称になります。さらに,そのMHPからdc_mcf_execap関数を呼び出した場合も,受け取るメッセージ入力元の論理端末名称は,最初にメッセージを受信したときの名称が引き渡されます。

SPPからdc_mcf_execap関数でMHPを起動する場合,起動されたMHPで受け取るメッセージ入力元の論理端末名称は「*」となります。さらに,そのMHPからdc_mcf_execap関数を呼び出した場合も,受け取るメッセージ入力元の論理端末名称は,「*」となります。

アプリケーションプログラムの起動形態とtypeオペランドの指定を以降の図で示します。

図3-14 一方送信メッセージを受信したMHPからの起動

[図データ]

図3-15 問い合わせ応答メッセージを受信したMHPからの起動

[図データ]

図3-16 問い合わせ応答メッセージの処理のMHPから,一方送信メッセージを送信するMHPの起動

[図データ]

図3-17 トランザクション処理のSPPからの起動

[図データ]

(8) TP1/Message Control(MCF)の再開始(リラン)時のタイマ起動の扱い

タイマ起動の時間待ちの間に障害が起こって,OpenTP1を再開始(リラン)した場合の扱いについて説明します。再開始(リラン)後にタイマ起動を引き継げるのは,ディスクキューを使っている場合だけです。再開始(リラン)した場合にタイマ起動をするdc_mcf_execap関数の扱いは次のとおりです。

(a) タイマ起動の引き継ぎの定義

MCF通信構成定義mcftpsvr定義コマンド-oオプションreruntm=yesと指定した場合は,再開始(リラン)する前のタイマ起動メッセージを引き継ぎます。dc_mcf_execap関数に設定した時間を過ぎていた場合は,即時起動で引き継ぎます。時間を過ぎていない場合は,時間が来るまで待ってから起動します。

reruntm=noと指定した場合は,再開始(リラン)後にはタイマ起動を引き継ぎません。この場合は,もう一度UAPからタイマ起動のdc_mcf_execap関数を呼び出してください。

(b) UOCでタイマ起動を引き継ぐ条件の変更

タイマ起動を引き継ぐ場合,UOCでタイマ起動を引き継ぐ条件を変更できます。このUOCをタイマ起動引き継ぎ決定UOCといいます。タイマ起動引き継ぎ決定UOCを使う場合は,MCF通信構成定義mcftpsvr定義コマンドの-oオプションにreruntm=yesと指定しておいてください。

タイマ起動引き継ぎ決定UOCについては,「3.9.2 タイマ起動引き継ぎ決定UOC」を参照してください。