Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引


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

次に示す要因によって,資源不足で登録できません。

  • メモリ関連定義のicb_noの指定値を超えています。

  • メモリ関連定義のtime_message_noの指定値を超えています。

  • メモリ関連定義のpce_noの指定値を超えています。

  • UDP用送信バッファ(UOBF)面数が不足しています。

EETIMER_TIME_INJUSTICE

指定した時刻が先行および後退許容時間範囲内にありません。

注意事項

  1. acttypeにEETIM_COMTを設定した場合,コミット前にトランザクションが異常終了したとき,またはロールバックしたときは,この関数の要求は無効になります。同一のトランザクション内でee_trn_rollback_mark関数がすでに呼び出されている場合は,リターン値EETIMER_CONDITIONでエラーリターンします。

  2. この関数は,トランザクションのコミット時に実行されます。acttypeにEETIM_COMTを設定した場合,トランザクションの同期点を取得する処理でエラーが起こると,この関数の処理は無効となります。

  3. acttypeにEETIM_COMTを設定してこの関数を呼び出したトランザクションでは,トランザクションは最適化されません。

  4. acttypeにEETIM_COMT,actionにEETIM_TIMEを設定した場合,関数呼び出し時に先行許容時間および後退許容時間がチェックされます。この時点で許容時間外の場合はエラーになり,コミット時には許容時間はチェックされません。

  5. acttypeにEETIM_COMT,actionにEETIM_TIMEを設定した場合,コミット時に後退許容時間外となっていたときは,タイマトランザクションが即時に起動します。

  6. acttypeにEETIM_INSTを設定した場合,トランザクションが異常終了したとき,またはロールバックしたときも,この関数の要求は有効になります。

  7. システム終了(正常終了,計画停止A)の場合,登録済みのタイマトランザクションがあるときは,タイマ破棄通知のエラートランザクション(ERRTRN4)が起動します。計画停止Bの場合は,登録済みのタイマトランザクションがあっても,ERRTRN4は起動しません。

  8. 【XTC限定】CLサーバがない場合,flagsにEETIM_PERMANENCEを設定しても永続属性となりません。

  9. 【XTC限定】永続属性の場合,UDP用送信バッファを使用します。

  10. 【XTC限定】CLサーバでの待機系ではこの関数は使用しないでください。