タイマ起動引き継ぎ決定UOCの関数形式
タイマ起動引き継ぎ決定UOCは,次に示す形式で呼び出します。
- 〈このページの構成〉
形式
ANSI C ,C++ の形式
#include <dcmpsv.h> DCLONG uoc_func(dcmpsv_uoc_rtime *parm)
K&R版 C の形式
#include <dcmpsv.h> DCLONG uoc_func(parm) dcmpsv_uoc_rtime *parm ;
説明
タイマ起動のアプリケーションプログラムの起動(CBLDCMCF('EXECAP '))を呼び出したあとで,障害が起こってOpenTP1を再開始(リラン)した場合に,タイマ起動の環境を変更するUOCです。このUOCを作成しておくと,次に示すことができます。
タイマ起動引き継ぎ決定UOCをMCFに組み込むときは,アプリケーション起動サービス用のMCFメイン関数に,UOC関数のアドレスを設定します。アプリケーション起動サービス用のMCFメイン関数は,通信プロトコルに依存しません。
アプリケーション起動サービス用のMCFメイン関数の作成方法については,マニュアル「OpenTP1 運用と操作」を参照してください。
uoc_func(タイマ起動引き継ぎ決定UOC)を呼び出すときには,parmには次に示すパラメタがMCFから設定されます。
パラメタの内容
dcmpsv_uoc_rtimeの内容
typedef struct { char le_name[9] ; … 入力元論理端末名称 char reserve1[7] ; … 予備 char ap_name[9] ; … アプリケーション名 char reserve2[7] ; … 予備 DCLONG exec_time ; … タイマ起動時刻 char ap_type ; … アプリケーションの型 'a':ans型 'n':noans型 char time_type ; … タイマ起動の種別 'i':経過時間指定のタイマ起動 't':時刻指定のタイマ起動 char reserve3[26] ; … 予備 } dcmpsv_uoc_rtime ;
MCFからUOCへ値が渡される引数
●exec_time
UAPがタイマ起動のアプリケーションプログラムの起動(CBLDCMCF('EXECAP '))に設定した,MHPを起動する時間が,1970年1月1日0時0分0秒からの通算秒で設定されます。
UOCで値を設定する引数
リターン値
リターン値 |
意味 |
---|---|
DCMPSV_UOC_TIME_CONTINUE |
タイマ起動を継続します。 |
DCMPSV_UOC_TIME_JUST |
即時起動として起動します。 |
DCMPSV_UOC_TIME_DEQ |
タイマ起動を取り消します。 |
uoc_func()からリターンした値によるMCFの処理を次に示します。
-
UOCからこの値をリターンすると,MCFは時刻を1970年0時0分0秒からの通算秒で取得して,アプリケーションプログラムの起動(CBLDCMCF('EXECAP '))に設定された時刻と比べます。比べた結果,関数に設定した時刻を過ぎていた場合,該当するMHPを即時に起動します。設定した時刻を過ぎていない場合は,タイマ起動となります。
-
UOCからこの値をリターンすると,MCFは該当するMHPを即時に起動します。この値をリターンする場合は,即時起動するMHPのアプリケーション名を,UOCで変更できます。ただし,MCFイベント処理用MHPを起動するような変更はできません。変更したアプリケーション名が定義されていない名称の場合は,ERREVT4が通知されます。
UOCで即時起動するUAPのアプリケーション名を変更した場合に,変更前と変更後で起動するMHPのアプリケーションの型が異なるときは,タイマ起動するセグメントは出力キューから削除されて,警告メッセージ(KFCA10711-W)が出力されます。
-
UOCからこの値をリターンすると,MCFはタイマ起動を取り消します。タイマ起動するセグメントは出力キューから削除されて,情報メッセージ(KFCA10700-I)が出力されます。
上記以外の値をUOCからリターンすると,タイマ起動するセグメントは出力キューから削除されて,警告メッセージ(KFCA10710-W)が出力されます。
UOC作成上の注意事項
-
UOCで使用できる関数
UOCを作成する場合,UOCでは次に示す関数だけが使用できます。ほかの関数を使用した場合,正常に動作しないことがあるため注意してください。
-
メモリ操作をする関数
データ領域管理(例:malloc,free)
共有メモリ管理(例:shmctl,shmget,shmop)
メモリ操作(例:memcpy)
文字列操作(例:strcpy)
-
時間取得関数
-
-
UOCの異常処理
UOCで異常を検知した場合,MCFの所定のリターンコードを使用してMCFに異常の発生を通知してください。UOCでプロセス終了となるシグナル,またはabort()を発行すると,MCFが異常終了します。
-
UOCの実行タイミング
MCFが起動するUOCの実行タイミングは,OpenTP1システム,およびUAPの開始,終了シーケンスと同期しない場合があります。UAPより先にUOCが実行されたり,UAPがすべて終了してからUOCが呼び出されたりしてもよいように作ってください。
-
UOCのローカル変数サイズ
UOCで使用するローカル変数のサイズの合計は,各UOCで1キロバイト以内になるよう設計してください。また,UOCの中で関数の再帰呼び出しはしないでください。