MQSUBRQ - サブスクリプション要求
MQSUBRQ 呼び出しは、サブスクライバーが MQSO_PUBLICATIONS_ON_REQUEST で登録された場合に、保存パブリケーションを要求するために使用します。
構文
MQSUBRQ(Hconn,Hsub,Action,SubRqOpts,Compcode,Reason)
パラメーター
- Hconn
- タイプ: MQHCONN - 入力
このハンドルは、キュー・マネージャーに対する接続を表します。
Hconnの値は、先行の MQCONN または MQCONNX 呼び出しによって戻されたものです。z/OS® ( CICS® 用) アプリケーション、および IBM® i (互換モードで実行するアプリケーションの場合) では、MQCONN 呼び出しを省略することができ、Hconnに以下の値を指定します。- MQHC_DEF_HCONN
- デフォルトの接続ハンドル。
重要: まだ互換モードを使用している場合は、アプリケーションを再コンパイルし、代わりに静的バインド呼び出しを使用することを検討してください。 IBM iでの RPG アプリケーションの互換モード を参照してください。 - Hsub
- タイプ: MQHOBJ - 入力
このハンドルは、更新が要求されるサブスクリプションを表します。
Hsubの値は、前の MQSUB 呼び出しから戻されたものです。 - アクション
- タイプ: MQLONG - 入力このパラメーターは、サブスクリプションで要求される特定のアクションを制御します。 以下の値を指定する必要があります。
- MQSR_ACTION_PUBLICATION
このアクションは、指定されたトピックに関する更新パブリケーションが送信されることを要求します。 これを使用できるのは、サブスクライバーがサブスクリプションを行う際に MQSUB 呼び出しでオプション MQSO_PUBLICATIONS_ON_REQUEST を指定した場合だけです。 トピックに関する保存パブリケーションがキュー・マネージャー中にある場合は、サブスクライバーに送信されます。 ない場合は、その呼び出しは失敗します。 保存されたパブリケーションがアプリケーションに送られると、そのパブリケーションの MQIsRetained メッセージ・プロパティーによって示されます。
Hsub パラメーターで表される既存のサブスクリプション中のトピックにワイルドカードを含めることができるので、サブスクライバーが複数の保存パブリケーションを受け取る可能性があります。
- SubRqOpts
- タイプ: MQSRO - 入出力
これらのオプションは、MQSUBRQ のアクションを制御します。詳しくは、 MQSRO-サブスクリプション要求オプション を参照してください。
必須オプションがない場合、C アセンブラーまたは S/390 アセンブラーで作成されたプログラムでは、MQSRO 構造のアドレスを指定せずに、ヌル・パラメーター・アドレスを指定することができます。
- CompCode
- タイプ: MQLONG - 出力完了コード。以下のいずれかです。
- MQCC_OK
- 正常終了。
- MQCC_WARNING
- 警告 (部分完了)
- MQCC_FAILED
- 呼び出し失敗
- 理由 (Reason)
- タイプ: MQLONG - 出力
CompCodeを限定する理由コード。CompCodeが MQCC_OK の場合:- MQRC_NONE
- (0, X'000') レポートする理由コードはありません。
CompCodeが MQCC_FAILED の場合:- MQRC_FUNCTION_NOT_SUPPORTED
- 2298 (X'08FA') 要求された関数は、現在の環境では使用できない。
- MQRC_NO_RETAINED_MSG
- 2437 (X'0985') このトピックに関する現在格納中の保存パブリケーションがない。
- MQRC_OPTIONS_ERROR
- 2046 (X'07FE') オプション・パラメーターまたはフィールドに、無効なオプションか、または無効なオプションの組み合わせが含まれている。
- MQRC_Q_MGR_QUIESCING
- 2161 (X'0871') キュー・マネージャーが静止中。
- MQRC_SRO_ERROR
- 2438 (X'0986') MQSUBRQ 呼び出しで、サブスクリプション要求オプション MQSRO が無効である。
- MQRC_RETAINED_MSG_Q_ERROR
- 2525 (X'09DD') サブスクライブしたトピック・ストリングに対して存在する保存パブリケーションを取得できない。
- MQRC_RETAINED_NOT_DELIVERED
- 2526 (X'09DE') サブスクライブしたトピック・ストリングに対して存在する保存パブリケーションをサブスクリプションの宛先キューに配信できず、送達不能キューにも配信できない。
これらのコードについて詳しくは、 メッセージおよび理由コードを参照してください。
使用上の注意
以下の使用上の注意は、アクション・コード MQSR_ACTION_PUBLICATION の使用に適用されます。
- この verb が正常に完了した場合、指定されたサブスクリプションと一致する保存パブリケーションは、サブスクリプションに送信されているので、サブスクリプションを作成した元の MQSUB verb 上で戻された Hobj を使用する MQGET または MQCB を使って受け取ることができます。
- サブスクリプションを作成した元の MQSUB verb によってサブスクライブされたトピックにワイルドカードが含まれている場合には、複数の保存パブリケーションが送信されることがあります。 この呼び出しの結果として送信されたパブリケーションの数は、SubRqOpts 構造中の NumPubs フィールド中に記録されます。
- この verb が理由コード MQRC_NO_RETAINED_MSG で完了する場合は、指定されたトピックに関する保存パブリケーションは現在ありません。
- この verb が理由コード MQRC_RETAINED_MSG_Q_ERROR または MQRC_RETAINED_NOT_DELIVERED で完了する場合は、指定されたトピックに関する保存パブリケーションは現在ありますが、配布できなかったことを意味するエラーが発生しています。
- この呼び出しを行う前に、アプリケーションにはトピックへの現行のサブスクリプションがなければなりません。 アプリケーションの前のインスタンスでサブスクリプションが行われ、そのサブスクリプションに対する有効なハンドルを使用できない場合は、そのアプリケーションで最初に MQSO_RESUME オプションを指定して MQSUB を呼び出し、サブスクリプションに対するハンドルを入手してこの呼び出しで使用できるようにしなければなりません。
- パブリケーションは、このアプリケーションの現行のサブスクリプションに使用するために登録された宛先に送信されます。 パブリケーションを他の場所に送信する必要がある場合は、最初に MQSO_ALTER オプションを指定して MQSUB 呼び出しを使用し、サブスクリプションに変更を加えなければなりません。
C 言語での呼び出し
MQSUB (Hconn, Hsub, Action, &SubRqOpts, &CompCode, &Reason)
MQHCONN Hconn; /* Connection handle */
MQHOBJ Hsub; /* Subscription handle */
MQLONG Action; /* Action requested by MQSUBRQ */
MQSRO SubRqOpts; /* Options that control the action of MQSUBRQ */
MQLONG CompCode; /* Completion code */
MQLONG Reason; /* Reason code qualifying CompCode */
COBOL での呼び出し
CALL 'MQSUBRQ' USING HCONN, HSUB, ACTION, SUBRQOPTS, COMPCODE, REASON.
** Connection handle
01 HCONN PIC S9(9) BINARY.
** Subscription handle
01 HSUB PIC S9(9) BINARY.
** Action requested by MQSUBRQ
01 ACTION PIC S9(9) BINARY.
** Options that control the action of MQSUBRQ
01 SUBRQOPTS.
COPY CMQSROV.
** Completion code
01 COMPCODE PIC S9(9) BINARY.
** Reason code qualifying COMPCODE
01 REASON PIC S9(9) BINARY.
PL/I での呼び出し
call MQSUBRQ (Hconn, Hsub, Action, SubRqOpts, CompCode, Reason)
dcl Hconn fixed bin(31); /* Connection handle */
dcl Hsub fixed bin(31); /* Subscription handle */
dcl Action fixed bin(31); /* Action requested by MQSUBRQ */
dcl SubRqOpts like MQSRO; /* Options that control the action of MQSUBRQ */
dcl CompCode fixed bin(31); /* Completion code */
dcl Reason fixed bin(31); /* Reason code qualifying CompCode */
高水準アセンブラー呼び出し
CALL MQSUBRQ,(HCONN, HSUB, ACTION, SUBRQOPTS,COMPCODE,REASON)
HCONN DS F Connection handle
HSUB DS F Subscription handle
ACTION DS F Action requested by MQSUBRQ
SUBRQOPTS CMQSROA , Options that control the action of MQSUBRQ
COMPCODE DS F Completion code
REASON DS F Reason code qualifying COMPCODE