Hitachi

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


CBLDCMCF('COMMIT ')

〈このページの構成〉

名称

MHPのコミット

形式

PROCEDURE DIVISIONの指定

CALL 'CBLDCMCF' USING 一意名1

DATA DIVISIONの指定

01 一意名1.
   02 データ名A  PIC X(8) VALUE 'COMMIT  '.
   02 データ名B  PIC X(5).
   02 FILLER    PIC X(3).
   02 データ名C  PIC X(16) VALUE LOW-VALUE.

機能

MHPから開始するグローバルトランザクションで,ルートトランザクションブランチとして,トランザクションを構成するトランザクションブランチのUAP,トランザクションサービス,およびリソースマネジャに,処理が正常に終了したこと(コミット)を知らせます。

CBLDCMCF('COMMIT ')が正常に終了すると,新しいグローバルトランザクションが開始します。

グローバルトランザクションが複数のトランザクションブランチから構成されるとき(CBLDCMCF('COMMIT ')を呼び出したMHPだけでないとき)は,それぞれのトランザクションブランチの処理結果がコミットとならないかぎりコミットされません。また,複数のリソースマネジャで構成されるときも同様に,それぞれのリソースマネジャの処理結果がコミットとならないかぎりコミットされません。コミットされない場合は,すべてのトランザクションブランチがロールバックされて,ステータスコード 「70906」でエラーリターンします。

CBLDCMCF('COMMIT ')は,MCFアプリケーション定義で非応答型(type=noans)と指定したMHPからだけ呼び出せます。それ以外の型のMHPから呼び出した場合は,ステータスコード 「72000」でエラーリターンします。また,MHP以外のUAPから呼び出した場合も同様に,ステータスコード 「72000」でエラーリターンします。

UAPで値を設定するデータ領域

●データ名A

MHPのコミットを示す要求コードを「VALUE 'COMMIT△△'」と設定します。

●データ名C

「LOW-VALUE」を設定します。

OpenTP1から値が返されるデータ領域

●データ名B

ステータスコードが,5けたの数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。このステータスコードが返った場合,CBLDCMCF('COMMIT ')を呼び出したプロセスでは,新しいトランザクションが開始しています。

70906

トランザクションは,コミットできないでロールバックしました。このステータスコードが返った場合,CBLDCMCF('COMMIT ')を呼び出したプロセスでは,新しいトランザクションが開始しています。

70907

CBLDCMCF('COMMIT ')を呼び出したグローバルトランザクションは,ヒューリスティック決定のため,あるトランザクションブランチはコミットとなり,また,あるトランザクションブランチはロールバックとなりました。このステータスコードが返った場合,CBLDCMCF('COMMIT ')を呼び出したプロセスでは,新しいトランザクションが開始しています。

70908

グローバルトランザクションのトランザクションブランチがヒューリスティックに完了しました。しかし,障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果が判明しません。このステータスコードが返った場合,CBLDCMCF('COMMIT ')を呼び出したプロセスでは,新しいトランザクションが開始しています。

トランザクションサービス定義で,trn_extend_functionオペランドに00000001を指定し,1相コミット時にリソースマネジャからのリターン値がXAER_NOTAの場合も,ステータスコード70908を返します。

72000

<MHPの実行でリターンした場合>

先頭セグメントを受信する CBLDCMCF('RECEIVE ')を呼び出す前に,CBLDCMCF('COMMIT ')を呼び出しています。

非応答型(type=noans)でないMHPから,CBLDCMCF('COMMIT ') を呼び出しています。

非トランザクション属性のMHPから,CBLDCMCF('COMMIT ') を呼び出しています。

<SPPの実行でリターンした場合>

SPPから,CBLDCMCF('COMMIT ')を呼び出せません。

72028

データ名Aに設定した値が間違っています。

上記以外

プログラムの破壊などによる,予期しないエラーが発生しました。

注意事項

CBLDCMCF('COMMIT ')が正常に終了しても,入力メッセージは入力キューから削除されません。そのため,MHPがスケジュールし直されたあとに該当するメッセージを処理し続ける場合,どの時点までコミットしていたかは不定です。MHPが再びスケジュールされるのは次の場合です。

スケジュールし直されたMHPで該当するメッセージを処理し続ける場合,コミットした範囲はユーザで管理してください。