Hitachi

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


tx_open

〈このページの構成〉

名称

リソースマネジャ集合のオープン

形式

ANSI C ,C++ の形式

#include <tx.h>
int  tx_open(void)

K&R版 Cの形式

#include <tx.h>
int  tx_open()

機能

関数tx_open()は,互換性がある方法で,リソースマネジャの集合をオープンします。tx_open()でリソースをオープンすると,トランザクションマネジャがリソースマネジャ固有の情報をトランザクションマネジャ独自の方法で読み,この情報を,呼び出し元にリンクされているリソースマネジャに渡します。

関数tx_open()は,呼び出し元にリンクされているすべてのリソースマネジャをオープンしようとします。tx_open()は,リソースマネジャ固有のオープン呼び出しの代わりに使われて,アプリケーションプログラムからの互換性を阻害する呼び出しを不要にします。

リソースマネジャは,初期化セマンティクスがそれぞれ異なっています。そのため,特有のリソースマネジャをオープンするのに必要な情報は,それぞれのリソースマネジャから公開されてなければなりません。

tx_open()がTX_ERRORを返したら,リソースマネジャは一つもオープンされていません。tx_open()がTX_OKを返したら,一つ以上のリソースマネジャがオープンされています。アプリケーションからアクセスしたときにリソースマネジャがオープンしていないと,リソースマネジャ固有のエラーを返します。あるスレッドがグローバルトランザクションに参加する前には,tx_open()が成功してリターンしていなければなりません。

関数tx_open()が成功したあとでも,繰り返しtx_open()を(tx_close()を呼び出す前なら)呼び出せます。繰り返しtx_open()を呼び出しても正常にリターンしますが,トランザクションマネジャでは,リソースマネジャの再オープン処理は一切しません。

リターン値

成功した場合,tx_open()はTX_OKを返します。これは,負ではないリターン値です。『0が返ります。』『関数の呼び出し元に結合している一つ以上のリソースマネジャの集合は,オープンされます。』

エラー

次のような場合,tx_open()はエラーリターンして,次のうちどれか一つの値を返します。これは,負のリターン値です。

リターン値

リターン値(数値)

意味

TX_ERROR

-6

トランザクションマネジャ,または一つ以上のリソースマネジャで一時的なエラーが起こりました。リソースマネジャは一つもオープンできませんでした。

TX_FAIL

-7

トランザクションマネジャ,または一つ以上のリソースマネジャで,回復できないエラーが起こりました。トランザクションマネジャ,一つ以上のリソースマネジャのどちらか,またはその両方が,アプリケーションに代わって作業できないことがエラーの原因です。

または,実行環境がジャーナルファイルレスモードのため,トランザクションマネジャでエラーが起こりました。

参照

tx_close()

『指定例』

『if ( tx_open() < 0)
    fputs("cannot open resource manager\n",stderr);』

『OpenTP1で使う場合の注意事項』

  1. 『tx_open()でオープンできるのは,X/OpenのXAインタフェースに準拠しているリソースマネジャだけです。』

  2. 『tx_open()とdc_trn_〜の関数は併用できません。』