Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Financial Service Platform プログラム作成の手引


1.3.7 タイマトランザクション(CBLEETIM)

〈この項の構成〉

(1) CBLEETIM('EXECAP-P')

名称

永続指定のタイマトランザクションの起動

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEETIM' USING 一意名1 一意名2 一意名3
 
DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'EXECAP-P'.
  02 データ名B  PIC X(5).
  02 FILLER      PIC X(3).
  02 データ名Z  PIC S9(9) COMP VALUE ZERO.
01 一意名2.
  02 データ名C  PIC X(4).
  02 データ名D  PIC X(4).
  02 データ名E  PIC 9(9) COMP.
  02 FILLER      PICX(4).
  02 データ名F  PIC X(32).
  02 データ名G  PIC X(32).
  02 データ名H  PIC X(4).
01 一意名3.
  02 データ名I  PIC 9(9) COMP.
  02 データ名J  PIC X(n).
機能

UAPから,永続指定のトランザクションを起動します。すぐに起動することも,設定した時間経過後に起動することもできます。

UAPで値を設定する引数

データ名A

トランザクション起動を示す要求コードを「VALUE 'EXECAP-P'」と設定します。

データ名Z

0を設定します。

データ名C

トランザクション起動タイミングを,次に示すどちらかで設定します。

VALUE 'INST':コミットとは無関係に,データ名Dに設定した条件になったら直ちにトランザクションを起動する場合に設定します。

VALUE 'COMT':コミット後,データ名Dに設定した条件になったらトランザクションを起動する場合に設定します。コミット前には起動されません。

データ名D

タイマ起動種別を,次に示すどちらかで設定します。

VALUE 'INTV':経過時間指定のタイマ起動の場合に設定します。

 データ名Eに設定した時間だけ経過したあとに,トランザクションを起動します。データ名Cに'INST'を指定した場合は,本プログラムを呼び出してからの経過時間,データ名Cに'COMT'を指定した場合は,コミットからの経過時間です。

VALUE 'TIME':時刻指定のタイマ起動の場合に設定します。

 データ名Eに設定した時刻に,トランザクションを起動します。

データ名E

タイマ起動時間を設定します。データ名Dに設定した値によって設定値が示す意味が異なります。

  • データ名Dに'INTV'を指定した場合(経過時間指定のタイマ起動)

    指定した時間経過後にトランザクションを起動します。タイマトランザクションは100ミリ秒単位に起動できます。設定できる秒数の範囲は,1から3,600,000まで(100ミリ秒から100時間まで)です。データ名Cに'INST'を指定した場合は,本プログラムを呼び出してからの経過時間,データ名Cに'COMT'を指定した場合は,コミットからの経過時間です。

    指定方法の詳細については,マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」のCBLEETIM('EXECAP')を参照してください。

  • データ名Dに'TIME'を指定した場合(時刻指定のタイマ起動)

    トランザクションを起動する時刻を設定します。0時0分0秒を基準にして,起動時刻を秒数で算出して設定します。

    (時刻の設定例)

    午後2時30分30秒に起動させる場合:

    14×3,600+30×60+30 = 52,230

    52,230をデータ名Eに設定します。

    設定可能範囲は,0(0時0分0秒に開始)から86,399(23時59分59秒に開始)までです。

    指定方法の詳細については,マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」のCBLEETIM('EXECAP')を参照してください。

データ名F

タイマトランザクションを取り消す場合のキーとなるリクエスト識別子を設定します。取り消さない場合はデータ名Fすべての領域にLOW-VALUEを設定します。

データ名G

起動するトランザクションのサービス名を,31バイト以内のアスキー文字列で設定します。文字列の最後には空白を設定してください。この空白は文字列の長さに数えません。

データ名H

タイマトランザクションが起動時刻を迎えた時点で,そのときに登録されている処理キューの中で,優先的に起動するか,非優先的に起動するかを設定してください。

VALUE 'HI△△':優先的に起動します。

VALUE 'LOW△':非優先的に起動します。

データ名I

起動するトランザクションに渡すデータの長さ(バイト長)を設定します。

渡せるデータの最大長はメモリ関連定義のtime_message_sizeの指定値,または65,535バイトタイマデータ表作成コマンド(eetimtblh)の-zオプションで指定した最大引き継ぎデータ長のどちらか小さい値までです。渡すデータがない場合は0を設定します。

データ名J

起動するトランザクションに渡す,データを設定します。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが,5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため,本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため,本機能は使用できません。

00501

データ名に設定した値が間違っています。

要求コード(データ名A)が間違っている場合も含みます。

00502

データ名Gに設定したサービス名が間違っています。

00503

データ名Iに設定したデータ長が大き過ぎます。

00504

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

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

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

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

00506

TP1/EEシステムが終了処理中のため,登録できません。

00507

指定したサービス名に対するエントリポインタがありません。

00508

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

00509

発行条件が不正です。

00510

タイマ登録処理がタイムアウトしました。

00511

タイマデータ表へのタイマ登録処理が失敗しました。

00512

タイマ登録処理で内部通信エラーが起こりました。

注意事項
  1. データ名Cに'COMT'を指定した場合,コミット前にトランザクションが異常終了したとき,またはロールバックしたときは,本関数の要求は無効になります。また,同一のトランザクション内でCBLEETRN('ROLLMARK')がすでに発行されている場合は,ステータスコード「00509」でエラーリターンします。

  2. データ名Cに'INST'を設定した場合,トランザクションが異常終了したとき,またはロールバックしたときも,本プログラムの要求は有効になります。

  3. データ名Cに'COMT',データ名Dに'TIME'を設定した場合,先行/後退許容時間チェックは関数呼び出し時に行います。

    関数呼び出し時点で先行/後退許容時間外の場合はエラーとし,コミット時には先行/後退許容時間のチェックは行いません。

    コミット時に後退許容時間外となっていた場合はそのまま即時起動とします。

  4. データ名Cに'COMT'を設定して本関数は発行したトランザクションではトランザクションの最適化を行いません。

  5. 永続タイマを監視するTP1/EEの監視間隔や通信時間が起動時間の誤差となります。

  6. 本関数で登録した永続タイマは,タイマ登録したTP1/EEとは別のTP1/EEでタイマ取り消しを行えます。このため,データ名Fは同一のタイマデータ表に登録するTP1/EE間で一意の値を設定することを推奨します。

(2) CBLEETIM('CANCEL-P')

名称

永続指定のタイマトランザクションの起動取り消し

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEETIM' USING 一意名1 一意名2
 
DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'CANCEL-P'.
  02 データ名B  PIC X(5).
  02 FILLER      PIC X(3).
  02 データ名Z  PIC S9(9) COMP VALUE ZERO.
01 一意名2.
  02 データ名C  PIC X(4).
  02 データ名D  PIC X(32).
機能

CBLEETIM('EXECAP-P')で登録したタイマトランザクションを,指定時刻または時間に達する前に取り消すことができます。

UAPで値を設定する引数

データ名A

トランザクション起動を示す要求コードを「VALUE 'CANCEL-P'」と設定します。

データ名Z

0を設定します。

データ名C
  • VALUE 'INST'

 次のタイマトランザクションを,コミットと無関係に直ちに取り消す場合に設定します。
  • トランザクション起動タイミング(データ名C)に'INST'を指定してCBLEETIM('EXECAP-P')で登録したタイマトランザクション

  • トランザクション起動タイミング(データ名C)に'COMT'を指定してCBLEETIM('EXECAP-P')で登録し,コミット後のタイマトランザクション

  • VALUE 'COMT'

    トランザクション起動タイミング(データ名C)に'COMT'を指定してCBLEETIM('EXECAP-P')で登録したタイマトランザクションを取り消す場合に設定します。ただし,コミット前の場合に限ります。

  • VALUE 'CMTC'

 次のタイマトランザクションを,コミット後に取り消す場合に設定します。
  • トランザクション起動タイミング(データ名C)に'INST'を指定してCBLEETIM('EXECAP-P')で登録したタイマトランザクション

  • トランザクション起動タイミング(データ名C)に'COMT'を指定してCBLEETIM('EXECAP-P')で登録し,コミット後のタイマトランザクション

  • データ名D

    取り消すタイマトランザクションを登録したCBLEETIM('EXECAP-P')呼び出し時のデータ名Fで設定したリクエスト識別子と同じものを設定します。同一のリクエスト識別子のタイマトランザクションが複数指定されている場合は,データ名Cで'INST'または'CMTC'を設定した時は起動時刻の最も早いものを,データ名Cで'COMT'を設定した時は最も早く登録したものを取り消します。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが,5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため,本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため,本機能は使用できません。

00501

データ名に設定した値が間違っています。

要求コード(データ名A)が間違っている場合も含みます。

00505

設定された要求識別子を持つタイマトランザクションは未登録,または起動中,またはすでに起動済みです。

00509

発行条件が不正です。

00510

タイマ取り消し処理がタイムアウトしました。

00511

タイマデータ表へのタイマ取り消し処理が失敗しました。

00512

タイマ取り消し処理で内部通信エラーが起こりました。

注意事項
  1. トランザクション起動タイミング(データ名C)で'COMT'を設定したCBLEETIM('EXECAP-P')のタイマトランザクションは,コミット後は,取り消せません。コミット後に取り消したい場合は,データ名Cで'INST'または'CMTC'を設定して取り消してください。また,コミット前に取り消せるのは,本タイマトランザクションを登録したトランザクションからだけです。

  2. すでに起動時刻に達しているタイマトランザクションの起動は,取り消しできません。

  3. トランザクション起動タイミング(データ名C)で'CMTC'を設定した場合,対象のタイマトランザクションが同期点処理前に起動時刻に達しても,タイマトランザクションを起動しません。

  4. トランザクション起動タイミング(データ名C)で'CMTC'を設定した場合,コミット前にトランザクションが異常終了したとき,またはロールバックしたときは,本関数の要求は無効になります。このとき,起動時刻に達している場合はタイマトランザクションを即時起動します。同一のトランザクション内でCBLEETRN('ROLLMARK')がすでに発行されている場合は,ステータスコード「00509」でエラーリターンします。

(3) CBLEETIM('CHECK-P')

名称

永続指定のタイマトランザクションの登録確認

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEETIM' USING 一意名1 一意名2
 
DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'CHECK-P '.
  02 データ名B  PIC X(5).
  02 FILLER      PIC X(3).
  02 データ名Z  PIC S9(9) COMP VALUE ZERO.
01 一意名2.
  02 データ名C  PIC X(4).
  02 データ名D  PIC X(32).
機能

CBLEETIM('EXECAP-P')で登録したタイマトランザクションが登録中となっているかどうかを確認します。

UAPで値を設定するデータ領域

データ名A

トランザクション起動を示す要求コードを「VALUE 'CHECK-P△'」と設定します。

データ名Z

0を設定します。

データ名C
  • VALUE 'INST'

    次のタイマトランザクションの登録状況を確認する場合に設定します。

    ・トランザクション起動タイミング(データ名C)に'INST'を指定してCBLEETIM('EXECAP-P')で登録したタイマトランザクション

    ・トランザクション起動タイミング(データ名C)に'COMT'を指定してCBLEETIM('EXECAP-P')で登録し,コミット後のタイマトランザクション

  • VALUE 'COMT'

    トランザクション起動タイミング(データ名C)に'COMT'を指定してCBLEETIM('EXECAP-P')で登録したタイマトランザクションの登録状況を確認する場合に設定します。ただし,コミット前の場合に限ります。

データ名D

確認対象のタイマトランザクションを登録したCBLEETIM('EXECAP-P')呼び出し時のデータ名Fで設定したリクエスト識別子と同じものを設定します。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが,5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00000

設定された要求識別子を持つタイマトランザクションは登録されています。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため,本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため,本機能は使用できません。

00501

データ名に設定した値が間違っています。

要求コード(データ名A)が間違っている場合も含みます。

00505

設定された要求識別子を持つタイマトランザクションは未登録,または起動中,またはすでに起動済みです。

00509

発行条件が不正です。

00511

タイマデータ表への登録確認処理が失敗しました。