Hitachi

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


TXBEGIN

〈このページの構成〉

名称

トランザクションの開始

形式

 DATA DIVISION.
* Include TX definitions.
 01 TX-RETURN-STATUS.
    COPY TXSTATUS.
 
 PROCEDURE DIVISION.
 CALL "TXBEGIN" USING TX-RETURN-STATUS.

機能

TXBEGINは,呼び出し元スレッドをトランザクションモードにします。呼び出しスレッドは,まずリンクされたリソースマネジャがオープンされていることを(TXOPENで)保証しなければなりません。そのあとで,トランザクションの開始が可能になります。

TXBEGINの呼び出し元が,すでにトランザクションモードに入っているか,またはTXOPENをまだ発行していない場合,TXBEGINはエラーリターンします(TX-RETURN-STATUSにTX-PROTOCOL-ERRORが返ります)。

TXBEGINでトランザクションモードに入ったスレッドは,TXCOMMIT,TXROLLBACKを呼び出して現在のトランザクションを必ず完了させてください。

トランザクションの開始では,呼び出し元が明示的にTXBEGINの呼び出しを必要としない,トランザクション連鎖にかかわる場合があります。

トランザクション連鎖については,TXCOMMIT,TXROLLBACKを参照してください。

『TXBEGINはMHPから呼び出せません。』

『次に示すAPIで設定した値は,TXBEGINの処理に影響を与えます。』

『データ領域』

『●TX-RETURN-STATUS

TXBEGINの実行結果が返されます。』

リターン値

成功した場合,TXBEGINはTX-OKを返します。これは,負ではないリターン値です。『0が返ります。』

エラー

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

TX-OUTSIDE

呼び出し元のスレッドが現在,グローバルトランザクションの外部で,一つ以上のリソースマネジャに関連する作業をしています。この場合,トランザクションマネジャはグローバルトランザクションを開始できません。このような作業は,グローバルトランザクションが開始される前に完了していなければなりません。

呼び出し元の状態が,ローカルトランザクション中にあることに変わりはありません。

TX-PROTOCOL-ERROR

TXBEGINは,適切でないコンテクストで呼ばれました(例えば,呼び出し元がすでにトランザクションモードである場合)。

呼び出し元の状態がトランザクションモードになっているかどうかは変わりません。

TX-ERROR

トランザクションマネジャ,または一つ以上のリソースマネジャが,トランザクションを開始しようとした際に一時的なエラーが起こりました。

このエラーが返った場合は,呼び出し元の状態はトランザクションモードではありません。

TX-FAIL

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

このエラーが返った場合は,呼び出し元はトランザクションモードではありません。

参照

TXCOMMIT,TXOPEN,TXROLLBACK,TXSETTIMEOUT

アプリケーションの使い方

グローバルトランザクションに参加するには,XAに準拠したリソースマネジャが正常にオープンされていることが前提です。詳細はTXOPENを参照してください。

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

  1. 『SPPからトランザクション処理を開始する場合は,TXBEGINを必ず呼び出します。SPPの場合は,呼び出し元でTXBEGINを呼び出していれば,トランザクション処理になります。』

  2. 『TXBEGINでトランザクションを開始するプロセスは,このマニュアルの記述に従って正しく結合されたUAPの実行形式ファイルを起動したものでなければなりません。』

  3. 『TXBEGINと,OpenTP1の CBLDCTRN は併用できません。』