ee_tim_execap
形式
ANSI C,C++の形式
#include <eetim.h> int ee_tim_execap(EEULONG acttype, EEULONG action, EEULONG active, EEULONG reqid, char *service, EEULONG priority, char *data, EEULONG dataleng, EELONG flags)
機能
UAPからトランザクション(タイマトランザクション)を起動します。すぐに起動することも,経過時間または時刻を指定して起動することもできます。
UAPで値を設定する引数
●acttype
タイマトランザクションの起動方式を設定します。
- EETIM_INST
-
即時登録方式です。コミットとは無関係に,actionに設定した起動タイミングに従ってタイマトランザクションを起動します。
- EETIM_COMT
-
トランザクション同期登録方式です。コミット後,actionに設定した起動タイミングに従ってタイマトランザクションを起動します。コミット前には起動されません。
●action
タイマトランザクションの起動タイミングを設定します。
- EETIM_JUST
-
タイマトランザクションを即時起動します。
- EETIM_INTV
-
経過時間を指定してタイマトランザクションを起動します。activeに設定した時間が経過したあとに起動します。
- EETIM_TIME
-
時刻を指定してタイマトランザクションを起動します。activeに設定した時刻に起動します。
●active
actionに設定した起動タイミングに応じて次のように設定します。
-
actionにEETIM_JUSTを設定した場合(即時起動)
設定値は無視されます。
-
actionにEETIM_INTVを設定した場合(経過時間指定の起動)
タイマトランザクションを起動するまでの経過時間を設定します(単位:100ミリ秒)。1〜3600000(100ミリ秒から100時間)の範囲で指定してください。
acttypeにEETIM_INST(即時登録方式)を設定した場合は,ee_tim_execap関数を呼び出してからの経過時間です。acttypeにEETIM_COMT(トランザクション同期登録方式)を設定した場合は,コミットからの経過時間です。
-
actionにEETIM_TIMEを設定した場合(時刻指定の起動)
タイマトランザクションを起動する時刻を設定します。0時0分0秒を基準にして,起動時刻を秒数で算出します。0(0時0分0秒に開始)〜86399(23時59分59秒に開始)の範囲で指定してください。
- (例)
-
午後2時30分30秒に起動させる場合,次のように52230を設定します。
14 × 3600 + 30 × 60 + 30 = 52230
設定した時刻が現在の時刻より前またはあとだった場合,タイマトランザクションの起動処理は,プロセス関連定義のexecap_permission_timeオペランドで指定した先行許容時間または後退許容時間に従います。
詳細は「2.3.3 時刻または経過時間の指定方法」および「2.3.6 時刻または経過時間の指定とTP1/EEサービス定義との関係」を参照してください。
●reqid
ee_tim_execap_cancel関数でタイマトランザクションを取り消す場合のキーとなるリクエスト識別子を設定します。
タイマトランザクションを取り消す必要がない場合は0を設定します。0を設定した場合でも,acttypeにEETIM_COMT(即時登録方式)を設定して登録したトランザクションは,コミット前であればee_tim_execap_cancel_all関数で取り消せます。
●service
タイマトランザクションとして起動するトランザクションのサービス名を31バイト以内のアスキー文字列で設定します。文字列の末尾にはNULL文字を付けてください。このNULL文字は文字列の長さに数えません。
●priority
タイマトランザクションが起動タイミングを迎えたとき,その時点で登録されている処理キューの中で優先的に起動するかどうかを設定します。
- EETIM_HI
-
優先的に起動します。
- EETIM_LOW
-
優先的に起動しないで,登録した順序で起動します。
●data
起動するトランザクションに渡すデータを設定します。
●dataleng
起動するトランザクションに渡すデータの長さを設定します(単位:バイト)。メモリ関連定義のtime_message_sizeオペランドで指定した値以下の値を指定してください。渡すデータがない場合は0を設定します。
●flags
オプションを次に示す形式で設定します。
{EENOFLAGS}〔|EETIM_PERMANENCE〕〔|EETIM_SCDL_HOLD〕
- EENOFLAGS
-
必ず設定してください。
- EETIM_PERMANENCE 【XTC限定】
-
タイマトランザクションを永続属性とする場合に設定します。acttypeにEETIM_COMTを設定した場合だけ有効です。
- EETIM_SCDL_HOLD 【XTC限定】
-
自トランザクションが終了するまで次のトランザクションのスケジュールを停止したい場合(UAPリターン後の次のトランザクションのスケジュールを停止したい場合)に設定します。このオプションを設定すると,待機系への転送処理終了後に,次のトランザクションのスケジュールを行います。
acttypeにEETIM_COMTを設定した場合だけ有効です。
リターン値
リターン値 |
意味 |
---|---|
EE_OK |
正常に終了しました。 |
EECOMER_CNDBPP |
オフラインバッチプロセスから発行しているため,この機能は使用できません。 |
EECOMER_CNDUOC |
UOCから発行しているため,この機能は使用できません。 |
EECOMER_ENVIRON |
TP1/EEの環境下にありません。 |
EETIMER_ARGUMENT |
引数に設定した値が間違っています。 |
EETIMER_CONDITION |
関数の呼び出し条件が不正です。 |
EETIMER_DATA_OVER |
datalengに設定したデータ長が大き過ぎます。 |
EETIMER_NO_ENTRY |
指定したサービス名に対するエントリポイントがありません。 |
EETIMER_NO_SERVICE |
serviceに設定したサービス名が間違っています。 |
EETIMER_PROHIBIT |
TP1/EEシステムが終了処理中のため,登録できません。または,CLサーバでの待機系のため登録できません。 |
EETIMER_QUEUE_FULL |
指定したサービスのキューが満杯のため登録できません。 |
EETIMER_RESOURCE_SHORT |
次に示す要因によって,資源不足で登録できません。
|
EETIMER_TIME_INJUSTICE |
指定した時刻が先行および後退許容時間範囲内にありません。 |
注意事項
-
acttypeにEETIM_COMTを設定した場合,コミット前にトランザクションが異常終了したとき,またはロールバックしたときは,この関数の要求は無効になります。同一のトランザクション内でee_trn_rollback_mark関数がすでに呼び出されている場合は,リターン値EETIMER_CONDITIONでエラーリターンします。
-
この関数は,トランザクションのコミット時に実行されます。acttypeにEETIM_COMTを設定した場合,トランザクションの同期点を取得する処理でエラーが起こると,この関数の処理は無効となります。
-
acttypeにEETIM_COMTを設定してこの関数を呼び出したトランザクションでは,トランザクションは最適化されません。
-
acttypeにEETIM_COMT,actionにEETIM_TIMEを設定した場合,関数呼び出し時に先行許容時間および後退許容時間がチェックされます。この時点で許容時間外の場合はエラーになり,コミット時には許容時間はチェックされません。
-
acttypeにEETIM_COMT,actionにEETIM_TIMEを設定した場合,コミット時に後退許容時間外となっていたときは,タイマトランザクションが即時に起動します。
-
acttypeにEETIM_INSTを設定した場合,トランザクションが異常終了したとき,またはロールバックしたときも,この関数の要求は有効になります。
-
システム終了(正常終了,計画停止A)の場合,登録済みのタイマトランザクションがあるときは,タイマ破棄通知のエラートランザクション(ERRTRN4)が起動します。計画停止Bの場合は,登録済みのタイマトランザクションがあっても,ERRTRN4は起動しません。
-
【XTC限定】CLサーバがない場合,flagsにEETIM_PERMANENCEを設定しても永続属性となりません。
-
【XTC限定】永続属性の場合,UDP用送信バッファを使用します。
-
【XTC限定】CLサーバでの待機系ではこの関数は使用しないでください。