MQSET - オブジェクト属性の設定

MQSET 呼び出しは、 ハンドルで表されるオブジェクトの属性を変更するために使用します。 このオブジェクトはキューでなければなりません。

構文

MQSET(HconnHobjSelectorCountSelectorsIntAttrCountIntAttrsCharAttrLengthCharAttrsCompcodeReason)

パラメーター

Hconn
タイプ: MQHCONN - 入力

このハンドルは、キュー・マネージャーに対する接続を表します。 Hconnの値は、先行の MQCONN または MQCONNX 呼び出しによって戻されたものです。

[z/OS] z/OS® for CICS® アプリケーションでは、MQCONN 呼び出しを省略できます。また、 Hconn には以下の値を指定できます。
MQHC_DEF_HCONN
デフォルトの接続ハンドル。
Hobj
タイプ: MQHOBJ - 入力

このハンドルは、属性を 設定するキュー・オブジェクトを表します。 このハンドルは、 MQOO_SET オプションを指定した先行の MQOPEN 呼び出しによって戻されたものです。

SelectorCount
タイプ: MQLONG - 入力

これは、Selectors配列で提供されるセレクターのカウントです。 設定する属性の数です。 ゼロは有効な値です。 許可される最大数は 256 です。

Selectors
タイプ: MQLONGxSelectorCount - 入力

これは、SelectorCount 個の 属性セレクターで構成される配列です。各セレクターは、値を設定する属性 (整数または文字) を 示します。

各セレクターは、 Hobj が表すキューのタイプに対して有効でなければなりません。 以降でリストするように、特定の MQIA_* および MQCA_* の値のみが許可されます。

選択子は任意の順序で指定できます。 整数属性セレクター (MQIA_* セレクター) に対応する属性値は、IntAttrs 内に、 Selectors 内のセレクターの出現順序と同じ順序で指定されている必要があります。 文字属性セレクター (MQCA_* セレクター) に対応する属性値は、CharAttrs 内に、 セレクターの出現順序と同じ順序で指定されている必要があります。 MQIA_* セレクターが MQCA_* セレクターとインターリーブする可能性があります。 このため、各タイプ内での相対順序だけが重要です。

同じセレクターを複数回指定することができます。 そうした場合は、その特定のセレクターに対して最後に指定された値が、 実際に反映される値となります。
注:
  1. 整数および文字属性セレクターは、2 つの異なる範囲に割り振られます。つまり、MQIA_* セレクターは、MQIA_FIRST から MQIA_LAST の範囲にあり、MQCA_* セレクターは、MQCA_FIRST から MQCA_LAST の範囲にあります。

    それぞれの範囲において、定数 MQIA_LAST_USED および MQCA_LAST_USED は、キュー・マネージャーが受け入れる最高値を定義します。

  2. すべての MQIA_* セレクターが最初に出現する場合は、同じエレメント番号を使用することにより、Selectors および IntAttrs 配列の中の対応するエレメントを指定できます。
  3. SelectorCount パラメーターがゼロの場合は、Selectors は参照されません。 この場合は、C または System/390 アセンブラー言語で作成されたプログラムによって渡されるパラメーター・アドレスがヌルになる可能性があります。

設定できる属性を、以下の表に リストします。 これ以外の属性は、この呼び出しを使用しても設定できません。 MQCA_* 属性セレクターの場合、 CharAttrs に必要なストリングの長さ (バイト単位) を定義する定数は、 括弧内に指定します。

表 1. キューに関する MQSET 属性セレクター
セレクター 説明 注記
MQCA_TRIGGER_DATA トリガー・データ (MQ_TRIGGER_DATA_LENGTH)。  
MQIA_DIST_LISTS 配布リスト・サポート。 1
MQIA_INHIBIT_GET 読み取り操作が許されているかどうかを判別します。  
MQIA_INHIBIT_PUT 書き込み操作が許されているかどうかを判別します。  
MQIA_TRIGGER_CONTROL トリガー制御。  
MQIA_TRIGGER_DEPTH トリガー項目数。  
MQIA_TRIGGER_MSG_PRIORITY トリガーのしきい値メッセージ優先順位。  
MQIA_TRIGGER_TYPE トリガー・タイプ。  
注:
  1. 以下のプラットフォームでのみサポートされます。
    • [AIX]AIX®
    • [IBM i]IBM® i
    • [Linux]Linux®
    • [Windows]Windows
    および、これらのシステムに接続された IBM MQ MQI clients の場合。
IntAttrCount
タイプ: MQLONG - 入力

これは、IntAttrs 配列のエレメント数です。 Selectors パラメーター内の MQIA_* セレクターの数以上でなければなりません。 何もない場合はゼロが有効な値です。

IntAttrs
タイプ: MQLONGxIntAttrCount - 入力

これは、IntAttrCount個の整数属性値の配列です。 これらの属性値は、Selectors 配列内の MQIA_* セレクターと同じ順序で並んでいなければなりません。

IntAttrCount または SelectorCount パラメーターがゼロの場合は、IntAttrs は参照されません。この場合、C または System/390 アセンブラー言語で作成されたプログラムによって渡されるパラメーター・アドレスがヌルのこともあります。

CharAttrLength
タイプ: MQLONG - 入力

これは、 CharAttrs パラメーターの長さ (バイト単位) であり、少なくとも、 Selectors 配列に指定されている各文字属性の長さの合計でなければなりません。 Selectors に MQCA_* セレクターが指定されていない場合は、ゼロが有効な値です。

CharAttrs
タイプ: MQCHAR x CharAttrLength - 入力

これは、各文字属性値が連結されて入っている バッファーです。 バッファーの長さは、CharAttrLengthパラメーターによって指定されます。

これらの文字属性は、 Selectors 配列内の MQCA_* セレクターと同じ順序で 指定されている必要があります。 各文字属性の長さは固定です ( セレクター を参照)。 属性に設定する値に、その属性の定義長より短い非ブランク文字が入っている場合は、属性値が属性の定義長と一致するように、その CharAttrs の値の右側にブランクを埋め込んでください。

CharAttrLength または SelectorCount パラメーターがゼロの場合は、CharAttrs は参照されません。この場合、C または System/390 アセンブラー言語で作成されたプログラムによって渡されるパラメーター・アドレスがヌルのこともあります。

CompCode
タイプ: MQLONG - 出力
完了コード。以下のいずれかです。
MQCC_OK
正常終了。
MQCC_FAILED
呼び出し失敗。
理由
タイプ: MQLONG - 出力

CompCode を限定する理由コード。

CompCodeが MQCC_OK の場合:
MQRC_NONE
(0, X'000') レポートする理由コードはありません。
CompCodeが MQCC_FAILED の場合:
MQRC_ADAPTER_NOT_AVAILABLE
(2204, X'89C') アダプターが利用できません。
MQRC_ADAPTER_SERV_LOAD_ERROR
(2130, X'852') アダプター・サービス・モジュールをロードできません。
MQRC_API_EXIT_ERROR
(2374, X'946') API 出口で障害が発生しました。
MQRC_API_EXIT_LOAD_ERROR
(2183, X'887') API 出口をロードできません。
MQRC_ASID_MISMATCH
(2157, X'86D') 1 次 ASID とホーム ASID が異なっています。
MQRC_CALL_IN_PROGRESS
(2219, X'8AB') 前の呼び出しが完了する前に MQI 呼び出しが入力されました。
MQRC_CF_NOT_AVAILABLE
(2345, X'929') カップリング・ファシリティーが使用できません。
MQRC_CF_STRUC_FAILED
(2373, X'945') カップリング・ファシリティー構造体で障害が発生しました。
MQRC_CF_STRUC_IN_USE
(2346, X'92A') カップリング・ファシリティー構造体が使用中です。
MQRC_CF_STRUC_LIST_HDR_IN_USE
(2347, X'92B') カップリング・ファシリティー構造体のリスト・ヘッダーが使用中です。
MQRC_CHAR_ATTR_LENGTH_ERROR
(2006, X'7D6') 文字属性の長さが無効である。
MQRC_CHAR_ATTRS_ERROR
(2007, X'7D7') 文字属性ストリングが無効である。
MQRC_CICS_WAIT_FAILED
(2140, X'85C') 待機要求が CICS によって拒否されました。
MQRC_CONNECTION_BROKEN
(2009, X'7D9') キュー・マネージャーとの接続が失われました。
MQRC_CONNECTION_NOT_AUTHORIZED
(2217, X'8A9') 接続が許可されていません。
MQRC_CONNECTION_STOPPING
(2203, X'89B') 接続がシャットダウン中です。
MQRC_DB2_NOT_AVAILABLE
(2342, X' 926 ') Db2® サブシステムが使用できません。
MQRC_HCONN_ERROR
(2018, X'7E2') 接続ハンドルが無効です。
MQRC_HOBJ_ERROR
(2019, X'7E3') オブジェクト・ハンドルが無効です。
MQRC_INHIBIT_VALUE_ERROR
(2020, X'7E4') 取得禁止または書き込み禁止のキュー属性の値 が無効です。
MQRC_INT_ATTR_COUNT_ERROR
(2021, X'7E5') 整数属性のカウントが無効です。
MQRC_INT_ATTRS_ARRAY_ERROR
(2023, X'7E7') 整数属性の配列が無効です。
MQRC_NOT_OPEN_FOR_SET
(2040, X'7F8') キューが設定用にオープンされていません。
MQRC_OBJECT_CHANGED
(2041, X'7F9') オープンされた後でオブジェクト定義が変更された。
MQRC_OBJECT_DAMAGED
(2101, X'835') オブジェクトが損傷しました。
MQRC_PAGESET_ERROR
(2193, X'891') ページ・セット・データ・セットへのアクセス中にエラーが発生しました。
MQRC_Q_DELETED
(2052, X'804') キューが削除されました。
MQRC_Q_MGR_NAME_ERROR
(2058, X'80A') キュー・マネージャー名が無効であるか、認識されていません。
MQRC_Q_MGR_NOT_AVAILABLE
(2059, X'80B') キュー・マネージャーを接続に使用できません。
MQRC_Q_MGR_STOPPING
(2162, X'872') キュー・マネージャーのシャットダウン中です。
MQRC_RESOURCE_PROBLEM
(2102, X'836') 使用できるシステム・リソースが不足しています。
MQRC_SELECTOR_COUNT_ERROR
(2065, X'811') セレクターのカウントが無効である。
MQRC_SELECTOR_ERROR
(2067, X'813') 属性選択子が無効です。
MQRC_SELECTOR_LIMIT_EXCEEDED
(2066, X'812') セレクターのカウントが大きすぎる。
MQRC_STORAGE_NOT_AVAILABLE
(2071, X'817') ストレージが不足しています。
MQRC_SUPPRESSED_BY_EXIT
(2109, X'83D') 出口プログラムにより呼び出しが抑止されました。
MQRC_TRIGGER_CONTROL_ERROR
(2075, X'81B') トリガー制御属性の値が無効です。
MQRC_TRIGGER_DEPTH_ERROR
(2076, X'81C') トリガー項目数属性の値が無効です。
MQRC_TRIGGER_MSG_PRIORITY_ERR
(2077, X'81D') トリガー・メッセージ優先順位属性の値が無効です。
MQRC_TRIGGER_TYPE_ERROR
(2078, X'81E') トリガー・タイプ属性の値が無効です。
MQRC_UNEXPECTED_ERROR
(2195, X'893') 予期しないエラーが発生しました。

これらのコードについて詳しくは、 メッセージおよび理由コードを参照してください。

使用上の注意

  1. この呼び出しを使用する場合、 アプリケーションは、整数属性の配列、文字属性ストリングの集合、またはその両方を 指定できます。 エラーが発生しなければ、指定された属性はすべて同時に 設定されます。 エラーが発生した場合 (セレクターが無効である場合や、 属性に無効な値を設定しようとした場合など)、 この呼び出しは失敗し、属性は設定されません。
  2. 属性の値は、MQINQ 呼び出しを使用して判別できます。詳しくは、 MQINQ-オブジェクト属性の照会 を参照してください。
    注: MQINQ 呼び出しを使用して照会できる値を持つすべての属性が、MQSET 呼び出しを使用して値を変更できるわけではありません。 例えば、 プロセス・オブジェクトもキュー・マネージャー属性も、この呼び出しでは設定できません。
  3. 属性の変更は、キュー・マネージャーを再始動しても維持されます (一時動的キューへの変更は例外であり、 キュー・マネージャーを再始動すると失われます)。
  4. モデル・キューの属性は、 MQSET 呼び出しを使用して変更できません。 ただし、 MQOO_SET オプションを指定した MQOPEN 呼び出しを使用してモデル・キューをオープンした場合は、 その MQOPEN 呼び出しで作成した動的ローカル・キューの属性を、 MQSET 呼び出しを使用して設定することができます。
  5. 設定対象のオブジェクトがクラスター・キューの場合、 正常にオープンするには、クラスター・キューのローカル・インスタンスが必要です。
オブジェクト属性の詳細については、以下を参照してください。

C 言語での呼び出し

MQSET (Hconn, Hobj, SelectorCount, Selectors, IntAttrCount, IntAttrs,
      CharAttrLength, CharAttrs, &CompCode, &Reason);
パラメーターを次のように宣言します。
MQHCONN  Hconn;           /* Connection handle */
MQHOBJ   Hobj;            /* Object handle */
MQLONG   SelectorCount;   /* Count of selectors */
MQLONG   Selectors[n];    /* Array of attribute selectors */
MQLONG   IntAttrCount;    /* Count of integer attributes */
MQLONG   IntAttrs[n];     /* Array of integer attributes */
MQLONG   CharAttrLength;  /* Length of character attributes buffer */
MQCHAR   CharAttrs[n];    /* Character attributes */
MQLONG   CompCode;        /* Completion code */
MQLONG   Reason;          /* Reason code qualifying CompCode */

COBOL での呼び出し

CALL 'MQSET' USING HCONN, HOBJ, SELECTORCOUNT, SELECTORS-TABLE,
                    INTATTRCOUNT, INTATTRS-TABLE, CHARATTRLENGTH,
                    CHARATTRS, COMPCODE, REASON.
パラメーターを次のように宣言します。
**   Connection handle
 01  HCONN            PIC S9(9) BINARY.
**   Object handle
 01  HOBJ             PIC S9(9) BINARY.
**   Count of selectors
 01  SELECTORCOUNT    PIC S9(9) BINARY.
**   Array of attribute selectors
 01  SELECTORS-TABLE.
  02  SELECTORS        PIC S9(9) BINARY OCCURS n TIMES.
**   Count of integer attributes
 01  INTATTRCOUNT     PIC S9(9) BINARY.
**   Array of integer attributes
 01  INTATTRS-TABLE.
  02  INTATTRS         PIC S9(9) BINARY OCCURS n TIMES.
**   Length of character attributes buffer
 01  CHARATTRLENGTH   PIC S9(9) BINARY.
**   Character attributes
 01  CHARATTRS        PIC X(n).
**   Completion code
 01  COMPCODE         PIC S9(9) BINARY.
**   Reason code qualifying COMPCODE
 01  REASON           PIC S9(9) BINARY.

PL/I での呼び出し

call MQSET (Hconn, Hobj, SelectorCount, Selectors, IntAttrCount,
           IntAttrs, CharAttrLength, CharAttrs, CompCode, Reason);
パラメーターを次のように宣言します。
dcl Hconn           fixed bin(31);  /* Connection handle */
dcl Hobj            fixed bin(31);  /* Object handle */
dcl SelectorCount   fixed bin(31);  /* Count of selectors */
dcl Selectors(n)    fixed bin(31);  /* Array of attribute selectors */
dcl IntAttrCount    fixed bin(31);  /* Count of integer attributes */
dcl IntAttrs(n)     fixed bin(31);  /* Array of integer attributes */
dcl CharAttrLength  fixed bin(31);  /* Length of character attributes
                                       buffer */
dcl CharAttrs       char(n);        /* Character attributes */
dcl CompCode        fixed bin(31);  /* Completion code */
dcl Reason          fixed bin(31);  /* Reason code qualifying
                                       CompCode */

高水準アセンブラー呼び出し

CALL MQSET,(HCONN,HOBJ,SELECTORCOUNT,SELECTORS,INTATTRCOUNT,  X
             INTATTRS,CHARATTRLENGTH,CHARATTRS,COMPCODE,REASON)
パラメーターを次のように宣言します。
HCONN           DS  F      Connection handle
HOBJ            DS  F      Object handle
SELECTORCOUNT   DS  F      Count of selectors
SELECTORS       DS  (n)F   Array of attribute selectors
INTATTRCOUNT    DS  F      Count of integer attributes
INTATTRS        DS  (n)F   Array of integer attributes
CHARATTRLENGTH  DS  F      Length of character attributes buffer
CHARATTRS       DS  CL(n)  Character attributes
COMPCODE        DS  F      Completion code
REASON          DS  F      Reason code qualifying COMPCODE

Visual Basic での呼び出し

MQSET Hconn, Hobj, SelectorCount, Selectors, IntAttrCount, IntAttrs,
      CharAttrLength, CharAttrs, CompCode, Reason
パラメーターを次のように宣言します。
Dim Hconn          As Long   'Connection handle'
Dim Hobj           As Long   'Object handle'
Dim SelectorCount  As Long   'Count of selectors'
Dim Selectors      As Long   'Array of attribute selectors'
Dim IntAttrCount   As Long   'Count of integer attributes'
Dim IntAttrs       As Long   'Array of integer attributes'
Dim CharAttrLength As Long   'Length of character attributes buffer'
Dim CharAttrs      As String 'Character attributes'
Dim CompCode       As Long   'Completion code'
Dim Reason         As Long   'Reason code qualifying CompCode'