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回以上指定してもかまいません。この場合,そのセレクタで最後に指定した値が設定されます。
設定できる属性について,次の表に示します。ほかの属性はこの命令で設定できません。括弧内の値は,MQCA_*セレクタでCharAttrs引数に設定する文字列の長さを定義した定数です。
表2-5 MQSET命令の属性セレクタ(キュー用)
セレクタ | 説明 |
---|---|
MQCA_TRIGGER_DATA | トリガデータ (MQ_TRIGGER_DATA_LENGTH) |
MQIA_DIST_LISTS | 配布リストサポート |
MQIA_INHIBIT_GET | 取り出し許可 |
MQIA_INHIBIT_PUT | 登録許可 |
MQIA_TRIGGER_CONTROL | トリガ制御 |
MQIA_TRIGGER_DEPTH | トリガのためのメッセージ登録数の下限値 |
MQIA_TRIGGER_MSG_PRIORITY | トリガのためのメッセージ優先度の下限値 |
MQIA_TRIGGER_TYPE | トリガタイプ |
このほかの属性は,この命令では設定できません。
● 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
完了コードです。
次のどちらかが返されます。
● 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 理由コード」を参照してください。
注意事項