Hitachi

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


dc_trn_begin

〈このページの構成〉

名称

トランザクションの開始

形式

ANSI C ,C++ の形式

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

K&R版 C の形式

#include <dctrn.h>
int dc_trn_begin()

機能

グローバルトランザクションを,この関数を呼び出したプロセスから開始します。dc_trn_begin関数を呼び出したプロセスは,グローバルトランザクションのルートトランザクションブランチになります。

dc_trn_begin関数を呼び出したUAPは,実行環境の設定でトランザクション属性を指定しておいてください。また,すでにdc_trn_begin関数を呼び出しているグローバルトランザクションの中では,どのトランザクションブランチからも再びdc_trn_begin関数を呼び出せません。一つのグローバルトランザクション中で重複して呼び出した場合はエラーリターンします。

リターン値

リターン値

リターン値(数値)

意味

DC_OK

0

正常に終了しました。グローバルトランザクションが開始して,dc_trn_begin関数を呼び出したプロセスはその範囲に含まれています。

DCTRNER_PROTO

-905

dc_trn_begin関数を正しくないコンテクスト(例えば,すでにトランザクション内にいる)から呼び出しています。

または,実行環境がジャーナルファイルレスモードのため,トランザクションは開始できませんでした。

DCTRNER_RM

-906

リソースマネジャ(RM)でエラーが起こりました。トランザクションは開始できませんでした。

DCTRNER_TM

-907

トランザクションサービスでエラーが起こったので,トランザクションは開始できませんでした。トランザクションサービス定義のtrn_tran_process_countオペランドの指定値が不足している可能性があります。

このリターン値が戻った場合は,再び実行すれば成功する可能性が高いので,再実行してください。

指定例

if(!dc_trn_info(NULL) && dc_trn_begin() < 0)
   fputs("cannot begin transaction\n", stderr);