Hitachi

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


tx_close

〈このページの構成〉

名称

リソースマネジャ集合のクローズ

形式

ANSI C ,C++ の形式

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

K&R版 Cの形式

#include <tx.h>
int  tx_close()

機能

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

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

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

アプリケーションスレッドで,もはやグローバルトランザクションに入るつもりがないときには,関数tx_close()を呼び出します。

呼び出し元がトランザクションモードにいる場合は,関数tx_close()は失敗します(TX_PROTOCOL_ERRORを返します)。すなわち,幾つかのリソースマネジャが現在のトランザクションに参加していない場合も,リソースマネジャはクローズされません。呼び出し元にリンクされているすべてのリソースマネジャがクローズできれば,tx_close()は正常にリターンします(TX_OKが返ります)。

リターン値

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

エラー

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

リターン値

リターン値(数値)

意味

TX_PROTOCOL_ERROR

-5

関数は,適切でないコンテクストで呼ばれました(例えば,呼び出し元がトランザクションモードにある場合)。リソースマネジャは一つもクローズされません。

TX_ERROR

-6

トランザクションマネジャ,または一つ以上のリソースマネジャで一時的なエラーが起こりました。クローズできるリソースマネジャはすべてクローズされます。

TX_FAIL

-7

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

参照

tx_open()

『指定例』

『if (tx_info(NULL) == 0 && tx_close() < 0)
    fputs("cannot close resource manager\n",stderr);』

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

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