MQBEGIN命令 - ローカルトランザクションの開始

機能

MQBEGIN命令で,キューマネジャによって管理されるトランザクションを開始します。

形式

C言語の場合

MQBEGIN (MQHCONN Hconn, MQBO *BeginOptions, MQLONG *CompCode,
        MQLONG *CompReason)

COBOL言語の場合

CALL 'MQBEGIN' USING HCONN, BEGINOPTIONS, COMPCODE, REASON.

引数

● Hconn(MQHCONN型) - input

コネクションハンドルです。

キューマネジャへの接続を示すハンドルです。MQCONN命令の戻り値を指定してください。

● BeginOptions(MQBO構造体) - input

MQBEGIN命令の動作を制御するオプションです。

詳細については,「MQBO構造体」を参照してください。

BeginOptionsは,予約済みパラメタです。C言語で作成されたプログラムでは,MQBO構造体のアドレスを指定しないで,NULLアドレスを指定できます。

● CompCode(MQLONG型) - output

完了コードです。次のどちらかが返されます。

MQCC_OK:成功

MQCC_FAILED:失敗

● Reason(MQLONG型) - output

理由コードです。

表4-5 CompCode引数がMQCC_OKの場合(MQBEGIN命令の場合)

理由コード意味
MQRC_NONE理由コードはありません。

表4-6 CompCode引数がMQCC_FAILEDの場合(MQBEGIN命令の場合)

理由コード意味
MQRC_BO_ERROR開始オプション構造体が無効です。
MQRC_CALL_IN_PROGRESS前の呼び出しが完了する前に,再度MQI呼び出しが実行されました。
MQRC_CONNECTION_BROKENキューマネジャとの接続が失われました。
MQRC_ENVIRONMENT_ERROR呼び出しが環境内で有効ではありません。
MQRC_HCONN_ERRORコネクションハンドルが無効です。
MQRC_OPTIONS_ERRORオプションが有効でないか,整合性がありません。
MQRC_Q_MGR_STOPPINGキューマネジャが終了処理中です。
MQRC_RESOURCE_PROBLEMシステム資源が不足しています。
MQRC_STORAGE_NOT_AVAILABLE記憶容量が不足しています。
MQRC_UNEXPECTED_ERROR予期しないエラーが発生しました。
MQRC_UOW_IN_PROGRESSトランザクションが開始済みです。

「理由コード」の詳細については,マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

注意事項

  1. キューマネジャで管理されるローカルトランザクション
    参加プログラムがキューマネジャだけのトランザクションであり,キューマネジャがTMとして機能します。
    • ローカルトランザクションを開始するには,トランザクション内の最初のMQPUT,MQPUT1,またはMQGET命令にMQPMO_SYNCPOINTまたはMQGMO_SYNCPOINTオプションを指定してください。ローカルトランザクションを開始するのに,アプリケーションがMQBEGIN命令を呼び出す必要はありません。
    • ローカルトランザクションをコミットまたはロールバックするには,MQCMITまたはMQBACK命令を使用する必要があります。アプリケーションでどちらの命令も呼び出さない場合,このトランザクションは,MQDISC命令を呼び出すとコミットされますが,MQDISC命令を呼び出さないで終了するとロールバックされます。
  2. 外部管理されるグローバルトランザクション
    キューマネジャが参加プログラムであるが,TMとしては機能しないトランザクションです。その代わりに,キューマネジャが接続しているTMが存在します。
    • グローバルトランザクションを開始するには,TMが提供する関連命令を使用する必要があります。トランザクションを開始するためにMQBEGIN命令を使用すると失敗し,理由コードMQRC_ENVIRONMENT_ERRORが戻ります。
    • グローバルトランザクションをコミットまたはロールバックするには,TMが提供するコミット命令およびロールバック命令を使用しなければなりません。MQCMITおよびMQBACK命令は使用できません。