MQBACK命令 − ローカルトランザクションのロールバック
機能
MQBACK命令では,最後の同期点以降に発生したメッセージの読み取りと書き込みをすべてロールバックすることをキューマネジャに指示します。トランザクションの一部として書き込まれたメッセージは削除されます。トランザクションの一部として取り出されたメッセージはキューに戻されます。
形式
C言語の場合
MQBACK (MQHCONN Hconn, MQLONG *CompCode, MQLONG *Reason)
COBOL言語の場合
CALL 'MQBACK' USING HCONN, COMPCODE, REASON.
引数
● Hconn(MQHCONN型) − input
コネクションハンドルです。
キューマネジャへの接続を示すハンドルです。MQCONN命令の戻り値を指定してください。
● CompCode(MQLONG型) − output
完了コードです。次のどれかが返されます。
MQCC_OK:成功
MQCC_WARNING:警告(一部成功)
MQCC_FAILED:失敗
● Reason(MQLONG型) − output
理由コードです。
理由コード |
意味 |
---|---|
MQRC_NONE |
理由コードはありません。 |
理由コード |
意味 |
---|---|
MQRC_OUTCOME_PENDING |
コミットまたはロールバック操作の結果が保留状態です。 |
理由コード |
意味 |
---|---|
MQRC_CALL_IN_PROGRESS |
前の呼び出しが完了する前に,再度MQI呼び出しが実行されました。 |
MQRC_CONNECTION_BROKEN |
キューマネジャとの接続が失われました。 |
MQRC_ENVIRONMENT_ERROR |
呼び出しが環境内で有効ではありません。 |
MQRC_HCONN_ERROR |
コネクションハンドルが無効です。 |
MQRC_OBJECT_DAMAGED |
オブジェクトが破損しています。 |
MQRC_OUTCOME_MIXED |
コミットまたはロールバック操作の結果が混合しています。 |
MQRC_Q_MGR_STOPPING |
キューマネジャが終了処理中です。 |
MQRC_RESOURCE_PROBLEM |
システム資源が不足しています。 |
MQRC_STORAGE_NOT_AVAILABLE |
記憶容量が不足しています。 |
MQRC_UNEXPECTED_ERROR |
予期しないエラーが発生しました。 |
「理由コード」の詳細については,マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。
注意事項
-
この命令は,キューマネジャ自体がトランザクションを管理する環境(ローカルトランザクション)だけで使用できます。
ローカルトランザクションの詳細については,「MQBEGIN命令」を参照してください。
-
1トランザクションには,一つのコネクションハンドルと同じ有効範囲があります。つまり,特定のトランザクションに影響を与えるMQI命令は,同じコネクションハンドルを使用して実行しなければなりません。例えば,別のアプリケーションで命令を呼び出すなど,別のコネクションハンドルを用いて命令を呼び出すと,別のトランザクションに影響が及びます。
コネクションハンドルの有効範囲については,マニュアル「TP1/Message Queue プログラム作成リファレンス」のMQCONN命令を参照してください。
-
この命令で影響を受けるメッセージは,現在のトランザクションの一部として書き込まれたメッセージ,または取り出されたメッセージに限られます。
-
長時間実行しているアプリケーションで,1トランザクションに対してMQGET命令,MQPUT命令,またはMQPUT1命令を呼び出している場合,コミット命令またはロールバック命令を一度も呼び出さないと,ほかのアプリケーションでは使用できないメッセージで,キューがいっぱいになることがあります。
-
トランザクションが発生していない状態でMQBACK命令を発行した場合はMQRC_HCONN_ERRORのエラーになります。