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
デフォルトの接続ハンドル。
[IBMi]重要: まだ互換モードを使用している場合は、アプリケーションを再コンパイルし、代わりに静的バインド呼び出しを使用することを検討してください。 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 の使用に適用されます。

  1. この verb が正常に完了した場合、指定されたサブスクリプションと一致する保存パブリケーションは、サブスクリプションに送信されているので、サブスクリプションを作成した元の MQSUB verb 上で戻された Hobj を使用する MQGET または MQCB を使って受け取ることができます。
  2. サブスクリプションを作成した元の MQSUB verb によってサブスクライブされたトピックにワイルドカードが含まれている場合には、複数の保存パブリケーションが送信されることがあります。 この呼び出しの結果として送信されたパブリケーションの数は、SubRqOpts 構造中の NumPubs フィールド中に記録されます。
  3. この verb が理由コード MQRC_NO_RETAINED_MSG で完了する場合は、指定されたトピックに関する保存パブリケーションは現在ありません。
  4. この verb が理由コード MQRC_RETAINED_MSG_Q_ERROR または MQRC_RETAINED_NOT_DELIVERED で完了する場合は、指定されたトピックに関する保存パブリケーションは現在ありますが、配布できなかったことを意味するエラーが発生しています。
  5. この呼び出しを行う前に、アプリケーションにはトピックへの現行のサブスクリプションがなければなりません。 アプリケーションの前のインスタンスでサブスクリプションが行われ、そのサブスクリプションに対する有効なハンドルを使用できない場合は、そのアプリケーションで最初に MQSO_RESUME オプションを指定して MQSUB を呼び出し、サブスクリプションに対するハンドルを入手してこの呼び出しで使用できるようにしなければなりません。
  6. パブリケーションは、このアプリケーションの現行のサブスクリプションに使用するために登録された宛先に送信されます。 パブリケーションを他の場所に送信する必要がある場合は、最初に 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