MQSET命令 − オブジェクトの属性の設定
機能
MQSET命令で,指定したハンドルのオブジェクトの属性を変更できます。属性を変更できるオブジェクトはキューだけです。
形式
C言語の場合
MQSET(MQHCONN Hconn, MQHOBJ Hobj, MQLONG SelectorCount, PMQLONG Selectors, MQLONG IntAttrCount, PMQLONG IntAttrs, MQLONG CharAttrLength, PMQCHAR CharAttrs, PMQLONG CompCode, PMQLONG Reason)
COBOL言語の場合
CALL 'MQSET' USING HCONN, HOBJ, SELECTORCOUNT, SELECTORS, INTATTRCOUNT, INTATTRS, CHARATTRLENGTH, CHARATTRS, COMPCODE, REASON.
引数
● Hconn(MQHCONN型) −input
コネクションハンドルです。
キューマネジャへの接続を示すハンドルです。MQCONN命令の戻り値を指定してください。
● Hobj(MQHOBJ型) −input
オブジェクトハンドルです。
属性を設定するオブジェクトを示すハンドルです。MQOO_SETオプションを指定したMQOPEN命令の戻り値を指定してください。
● SelectorCount(MQLONG型) −input
セレクタ数です。
Selectorsの配列に指定するセレクタの数を指定します。ここで指定した数の属性を設定します。セレクタ数は,0〜256の範囲で指定できます。
● Selectors(MQLONG型×SelectorCount) −input
セレクタです。
SelectorCountの要素数の配列でセレクタを指定します。それぞれのセレクタは,設定する整数型属性または文字型属性の種類を示します。
それぞれのセレクタは,Hobjのキューの種類に合ったものを指定してください。MQIA_*セレクタまたはMQCA_*セレクタの一部だけ指定できます。使用できるセレクタは,表2-5に示します。
セレクタはどの順序で指定してもかまいません。整数型属性のセレクタ(MQIA_*セレクタ)の属性値は,Selectors引数に指定した順序でIntAttrs引数に指定してください。文字型属性のセレクタ(MQCA_*セレクタ)の属性値は,セレクタで指定した順序でCharAttrs引数に指定してください。MQIA_*セレクタは,MQCA_*セレクタと交互に指定できます。各種類での順序だけが重要です。
同じセレクタを2回以上指定してもかまいません。この場合,そのセレクタで最後に指定した値が設定されます。
- 注意事項
-
-
整数型属性と文字型属性のセレクタは,二つの異なる範囲で割り当てられています。MQIA_*セレクタは,MQIA_FIRSTからMQIA_LASTの範囲にあります。また,MQCA_*セレクタは,MQCA_FIRSTからMQCA_LASTの範囲にあります。
それぞれの範囲に,キューマネジャで受け付けられる最大値として,定数MQIA_LAST_USEDとMQCA_LAST_USEDが定義されています。
-
すべてのMQIA_*セレクタを始めに指定した場合,要素の位置として,その要素と同じ番号をSelectorsとIntAttrsの配列で使用できます。
-
SelectorCount引数に0を指定した場合,Selectors引数は参照されません。この場合,C言語のプログラムでは,Selectorsのアドレスにヌルを指定できます。
-
設定できる属性について,次の表に示します。ほかの属性はこの命令で設定できません。括弧内の値は,MQCA_*セレクタでCharAttrs引数に設定する文字列の長さを定義した定数です。
セレクタ |
説明 |
---|---|
トリガデータ (MQ_TRIGGER_DATA_LENGTH) |
|
配布リストサポート |
|
取り出し許可 |
|
登録許可 |
|
トリガ制御 |
|
トリガのためのメッセージ登録数の下限値 |
|
トリガのためのメッセージ優先度の下限値 |
|
トリガタイプ |
このほかの属性は,この命令では設定できません。
● IntAttrCount(MQLONG型) −input
整数型属性値の数です。
IntAttrsの配列の要素数を指定します。Selectors引数のMQIA_*セレクタの数を指定してください。MQIA_*セレクタがないときは0を指定します。
● IntAttrs(MQLONG型×IntAttrCount) −input
整数型属性値の配列です。
IntAttrCountの要素数の配列で整数型属性値を設定します。
整数型属性値は,Selectors引数のMQIA_*セレクタで指定した順序で指定してください。
IntAttrCount引数またはSelectorCount引数の値が0の場合,IntAttrs引数は参照されません。この場合,C言語のプログラムでは引数のアドレスとしてヌルを指定できます。
● CharAttrLength(MQLONG型) −input
文字型属性値の格納領域長です。
CharAttrsの格納領域長をバイト単位で指定します。CharAttrs引数のMQCA_*セレクタで指定する文字型属性値の合計の長さを指定してください。MQCA_*セレクタがないときは0を指定します。
● CharAttrs(MQCHAR型×CharAttrLength) −input
文字型属性値の格納領域です。
この格納領域に文字型の属性値を並べて指定します。格納領域の長さはCharAttrLength引数に指定します。
文字型属性値は,Selectors引数のMQCA_*セレクタで指定した順序で指定してください。属性の文字列の長さは各属性に固有です。文字型属性値の長さについては,「Selectors引数」を参照してください。属性値の文字列がその属性の固有の長さより短い場合,固有の長さになるまで後ろを空白で埋めて,CharAttrsの格納領域に設定してください。
CharAttrLength引数またはSelectorCount引数の値が0の場合,CharAttrs引数は参照されません。この場合,C言語のプログラムでは引数のアドレスとしてヌルを指定できます。
● CompCode(MQLONG型) −output
完了コードです。
次のどちらかが返されます。
-
MQCC_OK:成功
-
MQCC_FAILED:失敗
● Reason(MQLONG型) −output
理由コードです。
CompCode引数がMQCC_OKの場合
理由コード |
数値 |
意味 |
---|---|---|
MQRC_NONE |
0 |
理由コードはありません。 |
CompCode引数がMQCC_FAILEDの場合
理由コード |
数値 |
意味 |
---|---|---|
MQRC_CHAR_ATTR_LENGTH_ERROR |
2006 |
文字型属性長が不正です。 |
MQRC_CHAR_ATTRS_ERROR |
2007 |
文字型属性値が不正です。 |
MQRC_HCONN_ERROR |
2018 |
コネクションハンドルが不正です。 |
MQRC_HOBJ_ERROR |
2019 |
オブジェクトハンドルが不正です。 |
MQRC_INHIBIT_VALUE_ERROR |
2020 |
取り出し許可または登録許可の属性値が不正です。 |
MQRC_INT_ATTR_COUNT_ERROR |
2021 |
整数型属性数が不正です。 |
MQRC_INT_ATTRS_ARRAY_ERROR |
2023 |
整数型属性値が不正です。 |
MQRC_NOT_OPEN_FOR_SET |
2040 |
キューが設定用にオープンされていません。 |
MQRC_OBJECT_DAMAGED |
2101 |
オブジェクトが破損しています。 |
MQRC_Q_DELETED |
2052 |
キューが削除されています。 |
MQRC_RESOURCE_PROBLEM |
2102 |
システム資源が不足しています。 |
MQRC_SELECTOR_COUNT_ERROR |
2065 |
セレクタ数が不正です。 |
MQRC_SELECTOR_ERROR |
2067 |
セレクタが不正です。 |
MQRC_SELECTOR_LIMIT_EXCEEDED |
2066 |
セレクタ数が最大値を超えています。 |
MQRC_STORAGE_NOT_AVAILABLE |
2071 |
記憶容量が不足しています。 |
MQRC_TRIGGER_CONTROL_ERROR |
2075 |
MQIA_TRIGGER_CONTROLセレクタに対する属性値が不正です。 |
MQRC_TRIGGER_DEPTH_ERROR |
2076 |
MQIA_TRIGGER_DEPTHセレクタに対する属性値が不正です。 |
MQRC_TRIGGER_MSG_PRIORITY_ERR |
2077 |
MQIA_TRIGGER_MSG_PRIORITYセレクタに対する属性値が不正です。 |
MQRC_TRIGGER_TYPE_ERROR |
2078 |
MQIA_TRIGGER_TYPEセレクタに対する属性値が不正です。 |
MQRC_UNEXPECTED_ERROR |
2195 |
予期しないエラーが発生しました。 |
詳細は,「付録B.2 理由コード」を参照してください。
注意事項
-
この命令では,整数型属性値,文字型属性値,またはその両方を指定できます。エラーが発生しないかぎり,指定した属性値は同時に更新されます。例えばセレクタの不正や,設定できない属性を設定しようとしたときなどにエラーが発生した場合は,一つの属性値も設定されないで命令は失敗します。
-
属性の値はMQINQ命令を使用して照会できます。属性の値の照会については,この章の「MQINQ命令 − オブジェクトの属性の照会」の説明を参照してください。
- 注意事項
-
MQINQ命令で照会できるすべての属性を,MQSET命令で変更できるわけではありません。例えば,プロセス定義およびキューマネジャの属性はMQSET命令では設定できません。
-
変更した属性値は,キューマネジャを再開始したあとでも保たれます。ただし,一時的動的キューの属性の変更は除きます。一時的動的キューは,キューマネジャの再開始時には失われます。
-
モデルキューの属性は,MQSET命令を使用して変更できません。ただし,MQOO_SETオプションを指定したMQOPEN命令でモデルキューをオープンした場合,そのMQOPEN命令で生成された動的キューの属性をMQSET命令で設定できます。
-
設定されるオブジェクトがクラスタキューの場合,オープンが成功するためにはクラスタキューのローカルインスタンスが存在しなければなりません。
-
MQSET命令の使用による属性の変更は,AlterationDateおよびAlterationTime属性の値には影響しません。
-
各オブジェクトタイプの属性については,「3. オブジェクトの属性」を参照してください。