Hitachi

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


dc_trn_chained_rollback

〈このページの構成〉

名称

連鎖モードのロールバック

形式

ANSI C ,C++の形式

#include <dctrn.h>
int  dc_trn_chained_rollback(void)

K&R版 C の形式

#include <dctrn.h>
int  dc_trn_chained_rollback()

機能

トランザクションをロールバックさせます。dc_trn_chained_rollback関数を呼び出したあとには,続けてトランザクションが開始します。

dc_trn_chained_rollback関数を呼び出すことで,ルートトランザクションブランチから,トランザクションブランチ,トランザクションサービス,およびリソースマネジャにロールバックを知らせます。

dc_trn_chained_rollback関数が正常に終了すると,関数を呼び出したプロセスはロールバックしてリターンします。そのあとで新しいグローバルトランザクションが開始します。関数を呼び出したプロセスはこのトランザクションの範囲内です。ただし,この関数を呼び出したUAP以外のトランザクションモードに対しての指定を意味しません。

dc_trn_chained_rollback関数を呼び出せるのは,ルートトランザクションブランチ(dc_trn_begin関数を呼び出したUAP)からだけです。それ以外のUAPから呼び出した場合は,リターン値DCTRNER_PROTOでエラーリターンします。

dc_trn_chained_rollback関数を呼び出すプロセスは,このマニュアルの記述に従って正しく作成されたUAPを稼働させたものでなければなりません。

dc_trn_chained_rollback関数は,同期点処理が完了したときに,正常に終了,またはエラーリターンのどちらかで返ります。dc_trn_chained_rollback関数を呼び出すサービスが正常に終了するためには,UAPの実行環境を設定するときに,トランザクション属性を指定していることが前提です。

リターン値

リターン値

リターン値(数値)

意味

DC_OK

0

正常に終了しました。dc_trn_chained_rollback関数が終了したあとも,このプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。

DCTRNER_HEURISTIC

-903

dc_trn_chained_rollback関数を呼び出したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミットとなり,あるトランザクションブランチはロールバックとなりました。

このリターン値は,ヒューリスティック決定の結果が,グローバルトランザクションの同期点の結果と一致しなかった場合にリターンします。

このリターン値が返る原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。

このリターン値が返ったあとも,このプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。

DCTRNER_HAZARD

-904

グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

このリターン値が返る原因になったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルを参照してください。

このリターン値が返ったあとも,このプロセスはトランザクション下にあって,グローバルトランザクションの範囲内です。

DCTRNER_PROTO

-905

dc_trn_chained_rollback関数を正しくないコンテクスト(例えば,すでにトランザクション中にいない)で呼び出しています。トランザクションモードに対する影響はありません。

DCTRNER_NO_BEGIN

-924

ロールバック処理は正常に終了しましたが,新しいトランザクションは開始できませんでした。このリターン値が返ったあと,このプロセスはトランザクション下にはありません。

DCTRNER_HEURISTIC_NO_BEGIN

-926

dc_trn_chained_rollback関数を呼び出したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミットとなって,あるトランザクションブランチはロールバックとなりました。このリターン値は,ヒューリスティック決定の結果が,グローバルトランザクションの同期点の結果と一致しなかった場合にリターンされます。

このリターン値が返される原因となったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルの内容を参照してください。新しいトランザクションは開始できませんでした。このリターン値が返ったあと,このプロセスはトランザクション下にはありません。

DCTRNER_HAZARD_NO_BEGIN

-927

グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果がわかりません。

このリターン値が返される原因となったUAP,リソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルの内容を参照してください。

新しいトランザクションは開始できませんでした。このリターン値が返ったあと,このプロセスはトランザクション下にはありません。

指定例

if (dc_trn_info(NULL) && dc_trn_chained_rollback() <0) 
  fputs("cannot rollback transaction\n", stderr);