Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス C言語編


dc_mcf_timer_set

〈このページの構成〉

名称

ユーザタイマ監視の設定

形式

ANSI C,C++の形式

#include <dcmcf.h>
int dc_mcf_timer_set(DCLONG flags,DCLONG timer,DCLONG timer_id,
                     char *lename,
                     char *apname,char *data,DCLONG data_leng,
                     DCLONG resv01,DCLONG resv02)

K&R版 C の形式

#include <dcmcf.h>
int dc_mcf_timer_set(flags, timer, timer_id, lename,
                      apname, data, 
                      data_leng, resv01, resv02)
DCLONG    flags;
DCLONG    timer;
DCLONG    timer_id;
char      *lename;
char      *apname;
char      *data;
DCLONG    data_leng;
DCLONG    resv01;
DCLONG    resv02;

機能

ユーザで任意の時間監視をするには,UAPからdc_mcf_timer_set関数でユーザタイマ監視を設定します。dc_mcf_timer_set関数を呼び出すには,MCF通信構成定義mcfttimの-pオプションにusertime=yesを指定する必要があります。

dc_mcf_timer_set関数は,ユーザサーバからだけ呼び出せます。

timerに指定した時間(単位:秒)を経過した(タイムアウトが発生した)場合,lenameで指定した論理端末からイベントを生成し,apnameに設定したアプリケーション名のMHPを起動させます。MHPからdc_mcf_timer_set関数を呼び出す場合,lenameを省略できます。省略した場合,入力元論理端末を仮定します。

タイムアウト発生時に起動させるMHPは,非応答型(noans型)のMHPでなくてはなりません。このMHPにメッセージが渡されたときの形式は「dc_mcf_receive」を参照してください。

dc_mcf_timer_set関数で設定したユーザタイマ監視は,同一のtimer_idおよびlenameを指定したdc_mcf_timer_cancel関数を呼び出すことで取り消せます。

時間監視は,dc_mcf_timer_set関数を呼び出した直後から行います。

同時に時間監視できる数は,MCF通信構成定義 mcfttimの-pオプションのtimereqnoオペランドに指定した最大タイマ監視要求数までです。

UAPで値を設定する引数

●flags

DCNOFLAGSを設定します。

●timer

dc_mcf_timer_set関数を呼び出してから,何秒後にMHPを起動させるかを設定します。設定できる秒数は,1から360000まで(1秒から100時間まで)です。

注意事項

時間監視の精度は秒単位です。また,タイマ定義(mcfttim -t)のbtimオペランドで指定する時間監視間隔でタイムアウトが発生したかどうかを監視しています。このため,timerに設定した監視時間と実際にタイムアウトを検出する時間には秒単位の誤差が生じます。そのため,タイミングによっては,設定した監視時間よりも短い時間で起動することがあります。監視時間が小さくなるほど,誤差の影響を受けやすくなりますので,監視時間は3(単位:秒)以上の値の設定を推奨します。

●timer_id

タイマ要求識別子を設定します。

timer_idはこのタイマを一意に識別するための情報です。timer_idは,lenameで指定した論理端末内で必ずユニークになるようにしてください。

●lename

タイムアウトが発生したときにイベントを生成する論理端末名称を8バイト以内で指定します。論理端末名称の最後にはヌル文字を付けます。論理端末名称は,アプリケーション起動サービスの論理端末を指定してもかまいません。

MHPからこの関数を呼び出す場合は,論理端末名称を省略できます。省略する場合には,ヌル文字列を指定します。省略した場合,入力元論理端末を仮定します。

●apname

起動させるMHPのアプリケーション名を指定します。このアプリケーションの属性は,lenameで指定した論理端末を持つMCF通信サーバのMCF通信構成定義mcftenv -aオプションで指定したMCFアプリケーション定義内のアプリケーション属性定義(mcfaalcap)に定義してください。アプリケーション名は最大8バイトです。アプリケーション名の最後にはヌル文字を付けます。MHPは非応答型(noans型)のMHPでなければなりません。指定するアプリケーション名はユーザイベントでなければなりません。

●data

起動させるMHPに渡す,メッセージのセグメントの内容を設定します。複数のセグメントを設定できません。起動させるMHPに渡すセグメントがない場合は,ヌル文字を設定します。

●data_leng

起動させるMHPに渡すセグメントの長さを設定します。起動させるMHPに渡すセグメントがない場合は,0を設定します。

設定できる値の範囲は,0〜256です。設定できる値の最大値はMCF通信構成定義 mcfttimの-pオプションのmsgsizeオペランドに指定した最大メッセージ長に依存します。

●resv01

DCNOFLAGSを設定します。

●resv02

DCNOFLAGSを設定します。

リターン値

リターン値

リターン値(数値)

意味

DC_OK

0

正常に終了しました。

DCMCFER_INVALID_ARGS

-11900

引数に設定した値が間違っています。

DCMCFER_PARAM_TIMER

-11909

timerに設定した値が間違っています。

DCMCFER_PARAM_TIM_ID

-11910

timer_idに指定したタイマ要求識別子は,すでに登録されています。

DCMCFER_PARAM_FLAGS

-11911

flagsに設定した値が間違っています。

DCMCFER_PARAM_LENAME

-11912

lenameに設定した値が間違っています。

DCMCFER_PARAM_APNAME

-11913

apnameに設定した値が間違っています。

DCMCFER_PARAM_LENG

-11914

data_lengに設定した値が間違っています。

DCMCFER_PARAM_DATA

-11915

dataに設定した値が間違っています。

DCMCFER_NO_DEFINE

-11916

要求された機能はMCFで定義されていません。

DCMCFER_NO_TIMER_ENT

-11917

タイマ登録領域に空きがないためユーザタイマ監視が設定できません。タイマ登録領域を確保するため,MCF通信構成定義mcfttimの-pオプションのtimereqnoオペランドの値を見直してください。必要に応じて,MCFマネジャ定義mcfmcomnの-pオプション,およびシステム環境定義static_shmpool_sizeオペランドの値を確認してください。