MQINQ命令 − オブジェクトの属性の照会
機能
MQINQ命令で,オブジェクトの属性を示す整数の配列と文字列が返されます。次に示す種類のオブジェクトの属性を照会できます。
-
キュー
-
プロセス定義
-
キューマネジャ
形式
C言語の場合
MQINQ(MQHCONN Hconn, MQHOBJ Hobj, MQLONG SelectorCount, PMQLONG Selectors, MQLONG IntAttrCount, PMQLONG IntAttrs, MQLONG CharAttrLength, PMQCHAR CharAttrs, PMQLONG CompCode, PMQLONG Reason)
COBOL言語の場合
CALL 'MQINQ' USING HCONN, HOBJ, SELECTORCOUNT, SELECTORS, INTATTRCOUNT, INTATTRS, CHARATTRLENGTH, CHARATTRS, COMPCODE, REASON.
引数
● Hconn(MQHCONN型) −input
コネクションハンドルです。
キューマネジャへの接続を示すハンドルです。MQCONN命令の戻り値を指定してください。
● Hobj(MQHOBJ型) −input
オブジェクトハンドルです。
属性を照会するオブジェクトを示すハンドルです。MQOO_INQUIREオプションを指定したMQOPEN命令の戻り値を指定してください。
● SelectorCount(MQLONG型) −input
セレクタ数です。
Selectorsの配列に指定するセレクタの数を指定します。ここで指定した数の属性が返されます。セレクタ数は,0〜256の範囲で指定できます。
● Selectors(MQLONG型×SelectorCount) −input
セレクタです。
SelectorCountの要素数の配列でセレクタを指定します。それぞれのセレクタは,照会する整数型属性または文字型属性の種類を示します。
それぞれのセレクタは,Hobjのオブジェクトの種類に合ったものを指定してください。適合しないセレクタを指定した場合,完了コードMQCC_FAILED,理由コードMQRC_SELECTOR_ERRORで命令は終了します。
キューの場合は次のようになります。
-
どんなキュータイプにも適合しないセレクタのときは,完了コードMQCC_FAILED,理由コードMQRC_SELECTOR_ERRORで命令は終了します。
-
そのオブジェクトとは異なるタイプのキューに適合するセレクタのときは,完了コードMQCC_WARNING,理由コードMQRC_SELECTOR_NOT_FOR_TYPEで命令は終了します。
-
照会するキューがクラスタキューの場合,有効なセレクタはキューの解決方法に依存します。詳細については「注意事項」の4を参照してください。
セレクタはどの順序で指定してもかまいません。整数型属性のセレクタ(MQIA_*セレクタ)の属性値は,Selectors引数に指定した順序で,IntAttrs引数に返されます。文字型属性のセレクタ(MQCA_*セレクタ)の属性値は,セレクタで指定した順序で,CharAttrs引数に返されます。MQIA_*セレクタは,MQCA_*セレクタと交互に指定できます。各種類での順序だけが重要です。
- 注意事項
-
-
整数型属性と文字型属性のセレクタは,二つの異なる範囲で割り当てられています。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_Q_NAME_LENGTH) |
|
クラスタ名称 (MQ_CLUSTER_NAME_LENGTH) |
|
作成日付 (MQ_CREATION_DATE_LENGTH) |
|
作成時刻 (MQ_CREATION_TIME_LENGTH) |
|
イニシエーションキュー名 (MQ_Q_NAME_LENGTH) |
|
プロセス名 (MQ_PROCESS_NAME_LENGTH) |
|
キュー記述子 (MQ_Q_DESC_LENGTH) |
|
キュー名 (MQ_Q_NAME_LENGTH) |
|
リモートキューマネジャ名 (MQ_Q_MGR_NAME_LENGTH) |
|
リモートキュー名 (MQ_Q_NAME_LENGTH) |
|
トリガデータ (MQ_TRIGGER_DATA_LENGTH) |
|
転送キュー名 (MQ_Q_NAME_LENGTH) |
|
メッセージ登録数 |
|
定義タイプ |
|
デフォルトバインディング |
|
省略時の取り出しオプション |
|
省略時のメッセージ永続性 |
|
省略時のメッセージ優先度 |
|
配布リストサポート |
|
ロールバック回数記録方法 |
|
取り出し許可 |
|
登録許可 |
|
最大メッセージ長 |
|
最大メッセージ登録数 |
|
メッセージ配布順序 |
|
入力オープン数 |
|
出力オープン数 |
|
キュータイプ |
|
キュー保持時間 |
|
キューの有効範囲 |
|
共用性 |
|
トリガ制御 |
|
トリガのためのメッセージ登録数の下限値 |
|
トリガのためのメッセージ優先度の下限値 |
|
トリガタイプ |
|
使用種別 |
セレクタ |
説明 |
---|---|
アプリケーション識別子 (MQ_PROCESS_APPL_ID_LENGTH) |
|
環境データ (MQ_PROCESS_ENV_DATA_LENGTH) |
|
プロセス記述子 (MQ_PROCESS_DESC_LENGTH) |
|
プロセス名 (MQ_PROCESS_NAME_LENGTH) |
|
ユーザデータ (MQ_PROCESS_USER_DATA_LENGTH) |
|
アプリケーションタイプ |
セレクタ |
説明 |
---|---|
デッドレターキュー名 (MQ_Q_NAME_LENGTH) |
|
省略時の転送キュー名 (MQ_Q_NAME_LENGTH) |
|
配布リストサポート |
|
キューマネジャ記述子 (MQ_Q_MGR_DESC_LENGTH) |
|
キューマネジャ名 (MQ_Q_MGR_NAME_LENGTH) |
|
文字セット識別子 |
|
最大ハンドル数 |
|
最大メッセージ長 |
|
最大メッセージ優先度 |
|
トランザクション完了待ち最大メッセージ数※ |
|
プラットフォーム |
|
トランザクション有効性 |
|
トリガ間隔 |
|
キューマネジャがリポジトリサービスを提供するクラスタの名前 |
- 注※
-
TP1/Message Queueではこの属性は使用されないため,返された値に意味はありません。
● IntAttrCount(MQLONG型) −input
整数型属性値の数です。
IntAttrsの配列の要素数を指定します。0も指定できます。
これがSelectors引数のMQIA_*セレクタの数と等しいとき,すべて整数型属性値が返されます。
● IntAttrs(MQLONG型×IntAttrCount) −output
整数型属性値の配列です。
IntAttrCountの要素数の配列で整数型属性値が返されます。
整数型属性値は,Selectors引数のMQIA_*セレクタで指定した順序で返されます。MQIA_*セレクタの数よりも大きい配列を用意した場合,不要な部分は変更されません。
Hobj引数がキューを示す場合で,属性のセレクタがそのキュータイプに適合しないとき,IntAttrsの配列の該当する要素として,MQIAV_NOT_APPLICABLEが返されます。
IntAttrCount引数またはSelectorCount引数の値が0の場合,IntAttrs引数は参照されません。この場合,C言語のプログラムでは引数のアドレスとしてヌルを指定できます。
● CharAttrLength(MQLONG型) −input
文字型属性値の格納領域長です。
CharAttrsの格納領域長をバイト単位で指定します。
照会する文字型属性値の長さの合計を指定してください。文字型属性値の長さについては,「Selectors引数」の説明を参照してください。0も指定できます。
● CharAttrs(MQCHAR型×CharAttrLength) −output
文字型属性値の格納領域です。
この格納領域に,文字型の属性がつながれて返されます。バッファの長さはCharAttrLength引数の値です。
文字型属性値は,Selectors引数のMQCA_*セレクタで指定した順序で返されます。属性の文字列の長さは,各属性に固有です。文字型属性値の長さについては,「Selectors引数」の説明を参照してください。値の余りは空白で埋められます。空白による埋めを含めて,照会する属性の文字列よりも格納領域が大きい場合,不要な部分は変更されません。
Hobj引数がキューを示す場合で,属性のセレクタがそのキュータイプに適合しないとき,CharAttrs引数の格納領域の該当する部分にアスタリスク(*)が設定されます。
CharAttrLength引数またはSelectorCount引数の値が0の場合,CharAttrs引数は参照されません。この場合,C言語のプログラムでは引数のアドレスとしてヌルを指定できます。
● CompCode(MQLONG型) −output
完了コードです。
次のどれかが返されます。
-
MQCC_OK:成功
-
MQCC_WARNING:警告(一部成功)
-
MQCC_FAILED:失敗
● Reason(MQLONG型) −output
理由コードです。
CompCode引数がMQCC_OKの場合
理由コード |
数値 |
意味 |
---|---|---|
MQRC_NONE |
0 |
理由コードはありません。 |
CompCode引数がMQCC_WARNINGの場合
理由コード |
数値 |
意味 |
---|---|---|
MQRC_CHAR_ATTRS_TOO_SHORT |
2008 |
文字型属性値に対して十分な領域がありません。 |
MQRC_INT_ATTR_COUNT_TOO_SMALL |
2022 |
整数型属性値に対して十分な領域がありません。 |
MQRC_SELECTOR_NOT_FOR_TYPE |
2068 |
セレクタがキュータイプに適合しません。 |
CompCode引数がMQCC_FAILEDの場合
理由コード |
数値 |
意味 |
---|---|---|
MQRC_CHAR_ATTR_LENGTH_ERROR |
2006 |
文字型属性長が不正です。 |
MQRC_CHAR_ATTRS_ERROR |
2007 |
文字型属性値が不正です。 |
MQRC_HCONN_ERROR |
2018 |
コネクションハンドルが不正です。 |
MQRC_HOBJ_ERROR |
2019 |
オブジェクトハンドルが不正です。 |
MQRC_INT_ATTR_COUNT_ERROR |
2021 |
整数型属性数が不正です。 |
MQRC_INT_ATTRS_ARRAY_ERROR |
2023 |
整数型属性値が不正です。 |
MQRC_NOT_OPEN_FOR_INQUIRE |
2038 |
キューが照会用にオープンされていません。 |
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_UNEXPECTED_ERROR |
2195 |
予期しないエラーが発生しました。 |
詳細は,「付録B.2 理由コード」を参照してください。
注意事項
-
返された情報は,指定した属性のその時点での値です。返された値をアプリケーションが使用する前に,その属性値が変更されていない保証はありません。
-
モデルキューをオープンするとき,ローカルの動的キューが生成されます。属性を照会するためにモデルキューをオープンする場合にも該当します。
動的キューの属性は(幾つか例外はありますが),動的キューが生成されるときのモデルキューの属性と同じです。その後,MQINQ命令をキューに使用すると,キューマネジャはモデルキューではなく,動的キューの属性を返します。
動的キューがモデルキューから継承する属性については,「3. オブジェクトの属性」の「キューの属性」を参照してください。
-
別名キューに対するMQINQ命令で返される属性は,そのベースキューではなく,別名キューの属性です。
-
照会されたキューがクラスタキューである場合,照会できる属性はキューのオープンの方法に依存します。
-
クラスタキューが照会と,入力,ブラウズ,または設定のどれか一つと一緒にオープンされた場合,オープンが成功するためにはクラスタキューのローカルなインスタンスがなければいけません。
-
クラスタキューが照会だけ,または照会と出力でオープンされた場合,次に示す属性だけを照会できます。なお,QType属性はこの場合MQQT_CLUSTERとなります。
MQCA_Q_DESC
MQCA_Q_NAME
MQIA_DEF_BIND
MQIA_DEF_PERSISTENCE
MQIA_DEF_PRIORITY
MQIA_INHIBIT_PUT
MQIA_Q_TYPE
クラスタキューが固定バインディングなしでオープンされた場合,つまり,MQOPEN命令でMQOO_BIND_NOT_FIXEDが指定された場合,またはDefBind属性がMQBND_BIND_NOT_FIXEDの場合にMQOO_BIND_AS_Q_DEFが指定されたとき,そのキューに対する後続のMQINQ命令では,クラスタキューの異なるインスタンスを照会することもあります。通常はすべてのインスタンスは同じ属性値を持ちます。
-
-
属性を照会したあとにそれらの幾つかをMQSET命令で設定する場合,始めにセレクタの配列を作成すると便利です。こうすることで,要素数を減らして,同じ配列をMQSET命令でも使用できます。
-
一つ以上の警告がある場合,次のどれかの理由コードが返されます。警告については,「CompCode引数」を参照してください。
MQRC_SELECTOR_NOT_FOR_TYPE
MQRC_INT_ATTR_COUNT_TOO_SMALL
MQRC_CHAR_ATTRS_TOO_SHORT
-
各オブジェクトタイプの属性については,「3. オブジェクトの属性」を参照してください。
-
TP1/Message Queueでは,MaxUncommittedMsgs属性は使用されません。このため,MQIA_MAX_UNCOMMITTED_MSGSセレクタで返される属性値には,意味がありません。なお,このセレクタを使用すると,常に999999999が返されます。