メッセージキューイングアクセス機能 TP1/Message Queue - Access 使用の手引

[目次][用語][索引][前へ][次へ]

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命令は使用できません。