bea ホーム | 製品 | dev2dev | support | askBEA
BEA Logo Tuxedo
 ドキュメントのダウンロード   サイトマップ   用語集 
検索
0

Tuxedo COBOL リファレンス

 Previous Next Contents View as PDF  

TPSCMT(3cbl)

名前

TPSCMT()TPCOMMIT の終了時期の設定

形式

01 TPCMTDEF-REC.
COPY TPCMTDEF.

01
TPSTATUS-REC.
COPY TPSTATUS.

CALL "TPSCMT" USING
TPCMTDEF-REC TPSTATUS-REC.

機能説明

TPSCMT()TP-COMMIT-CONTROL 特性を TPCMTDEF-REC に指定されている値に設定します。この TP-COMMIT-CONTROL 特性は、制御をその呼び出し元に返す際の TPCOMMIT() の動作に影響します。プログラムがトランザクション・モードにあるかどうかに関係なく、プログラムから TPSCMT() を呼び出すことができます。他のプログラムがコミットしなければならないトランザクションに呼び出し元が参加している場合は、TPSCMT() を呼び出してもそのトランザクションに影響を与えないことに注意してください。むしろ、呼び出し元がコミットするその後のトランザクションに影響を与えます。

ほとんどの場合、トランザクションは、BEA Tuxedo ATMI のプログラムが TPCOMMIT() を呼び出したときにのみコミットされます。ただし、例外が 1 つあります。すなわち、UBBCONFIG ファイルの SERVICES セクションで AUTOTRAN 変数が使用可能になっているために、サービスがトランザクション・モードでディスパッチされる場合は、そのトランザクションは TPRETURN() の呼び出し時点で完了します。TPFORWAR() が呼び出された場合、そのトランザクションは、サーバが最終的に TPRETURN() を呼び出すことによって終了します。このため、TPRETURN() を呼び出すサービスにおける TP-COMMIT-CONTROL 特性の設定内容により、TPCOMMIT() がサーバ内からいつ制御を返すかが決まります。TPCOMMIT() がヒューリスティックなエラー・コードを返した場合、サーバはメッセージをログ・ファイルに書き込みます。

クランアントが BEA Tuxedo ATMI アプリケーションに参加する場合は、この特性の初期設定はコンフィギュレーション・ファイルから取られます (UBBCONFIG(5)RESOURCES セクションの CMTRET 変数を参照)。

次に、TPCMTDEF-REC の有効な設定の一覧を示します。

TP-CMT-LOGGED

この設定は、コミット決定が 2 フェーズ・コミット・プロトコルの第 1 フェーズで記録された後、第 2 フェーズが完了する前に TPCOMMIT() を終了させることを示します。この設定により、TPCOMMIT() の呼び出し元へのより迅速な応答が得られるようになります。ただし、第 2 段階の処理が完了するまでに生じるタイミングのずれが原因で、トランザクションのパーティシパントが、その作業の完了 (つまり、中途終了) をヒューリスティックに判断してしまうというリスクが生じます。このような場合、TPCOMMIT() が終了していないため、呼び出し元にこの状況を知らせる方法がありません (ただし、リソース・マネージャがヒューリスティックな判断を行った場合には、BEA Tuxedo システムによってメッセージがログ・ファイルに書き込まれてはいます)。正常な状態では、第 1 フェーズの間にコミットすることを約束しているパーティシパントは、第 2 フェーズでコミットします。一般に、ネットワークやサイトの障害が原因で問題が生じると、第 2 フェーズでヒューリスティックな判断がなされます。

TP-CMT-COMPLETE

この設定は、2 フェーズ・コミット・プロトコルが完全に終了した後、TPCOMMIT() を終了させることを示します。この設定により、TPCOMMIT() は第 2 フェーズのコミット中にヒューリスティックな判断がなされたことを示すことができます。

戻り値

TPSCMT() は正常終了時には、TP-STATUS に [TPOK] を設定し、TP-COMMIT-CONTROL 特性の以前の値を返します。

エラー

次の条件が発生すると、TPSCMT() は異常終了し、TP-STATUS に次の値を設定します。

[TPEINVAL]

TPCMTDEF-RECTP-CMT-LOGGED または TP-CMT-COMPLETE でありません。

[TPEPROTO]

TPSCMT() の呼び出し方法が不適切です。

[TPESYSTEM]

BEA Tuxedo システムのエラーが発生しました。エラーの正確な内容がログ・ファイルに書き込まれます。

[TPEOS]

オペレーティング・システムのエラーが発生しました。

注意事項

TPBEGIN()TPCOMMIT()、および TPABORT() を使用して BEA Tuxedo ATMI のトランザクションを記述する際には、XA インターフェイスに準拠した (および呼び出し元に適切にリンクされている) リソース・マネージャの行う作業のみがトランザクションとしての特性を備えていることを忘れないようにすることが重要です。トランザクションで行われるその他の処理内容は、TPCOMMIT()TPABORT() の影響を受けません。そのリソース・マネージャが行った処理が BEA Tuxedo ATMI のトランザクションの一部となるよう、XA インターフェイスを満たすリソース・マネージャをサーバにリンクする方法については、buildserver(1) を参照してください。

関連項目

TPABORT(3cbl)TPBEGIN(3cbl)TPCOMMIT(3cbl)TPGETLEV(3cbl)

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy