MQCMIT命令 − ローカルトランザクションのコミット
機能
アプリケーションが同期点に達していることと,最後の同期点が永続化されてから発生した,すべてのメッセージの読み取りと書き込みをキューマネジャに指示します。
形式
C言語の場合
MQCMIT (MQHCONN Hconn, MQLONG *CompCode, MQLONG *Reason)
COBOL言語の場合
CALL 'MQCMIT' USING HCONN, COMPCODE, REASON.
引数
● Hconn(MQHCONN型) − input
コネクションハンドルです。
キューマネジャへの接続を示すハンドルです。MQCONN命令の戻り値を指定してください。
● CompCode(MQLONG型) − output
完了コードです。
次のどれかが返されます。
MQCC_OK:成功
MQCC_WARNING:警告(一部成功)
MQCC_FAILED:失敗
● Reason(MQLONG型) − output
理由コードです。
理由コード |
意味 |
---|---|
MQRC_NONE |
理由コードはありません。 |
理由コード |
意味 |
---|---|
MQRC_BACKED_OUT |
同期点は完了しましたが,資源がロールバックしました。 |
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命令を参照してください。
-
この命令で影響を受けるメッセージは,現行のトランザクションの一部として書き込まれたメッセージ,または取り出されたメッセージに限られます。
-
トランザクション内部にコミットされていない変更内容がある場合,アプリケーションがMQCMIT命令およびMQBACK命令を呼び出さないで終了すると,それらの変更内容に対する後処理は,そのアプリケーションの終了方法によって異なります。
-
アプリケーションが終了前にMQDISC命令を呼び出す場合,その命令によってトランザクションがコミットされます。
-
アプリケーションが異常終了する場合,またはMQDISC命令を呼び出さない場合,トランザクションはロールバックされます。これは,MQBACK命令が呼び出されるのと同様です。
-
-
長時間実行しているアプリケーションで,1トランザクションに対してMQGET命令,MQPUT命令,またはMQPUT1命令を呼び出している場合,コミット命令またはロールバック命令を一度も呼び出さないと,キューがほかのアプリケーションでは使用できないメッセージで満たされることがあります。
-
ReasonパラメタがMQRC_CONNECTION_BROKENで,CompCodeパラメタがMQCC_FAILEDの場合,トランザクションは正常にコミットされた可能性があります。
-
トランザクションが発生していない状態でMQCMIT命令を発行した場合はMQRC_HCONN_ERRORのエラーになります。