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で命令は終了します。

キューの場合は次のようになります。

セレクタはどの順序で指定してもかまいません。整数型属性のセレクタ(MQIA_*セレクタ)の属性値は,Selectors引数に指定した順序で,IntAttrs引数に返されます。文字型属性のセレクタ(MQCA_*セレクタ)の属性値は,セレクタで指定した順序で,CharAttrs引数に返されます。MQIA_*セレクタは,MQCA_*セレクタと交互に指定できます。各種類での順序だけが重要です。

注意
  1. 整数型属性と文字型属性のセレクタは,二つの異なる範囲で割り当てられています。MQIA_*セレクタは,MQIA_FIRSTからMQIA_LASTの範囲にあります。また,MQCA_*セレクタは,MQCA_FIRSTからMQCA_LASTの範囲にあります。
    それぞれの範囲に,キューマネジャで受け付けられる最大値として,定数MQIA_LAST_USEDとMQCA_LAST_USEDが定義されています。
  2. すべてのMQIA_*セレクタを始めに指定した場合,要素の位置として,その要素と同じ番号をSelectorsとIntAttrsの配列で使用できます。
  3. SelectorCount引数に0を指定した場合,Selectors引数は参照されません。この場合,C言語のプログラムではSelectorsのアドレスにヌルを指定できます。

照会できる属性について,次の表に示します。括弧内の値は,MQCA_*セレクタでCharAttrs引数に設定する文字列の長さを定義した定数です。

表2-2 MQINQ命令の属性セレクタ(キュー用)

セレクタ説明
MQCA_BASE_Q_NAMEベースキュー名
(MQ_Q_NAME_LENGTH)
MQCA_CLUSTER_NAMEクラスタ名称
(MQ_CLUSTER_NAME_LENGTH)
MQCA_CREATION_DATE作成日付
(MQ_CREATION_DATE_LENGTH)
MQCA_CREATION_TIME作成時刻
(MQ_CREATION_TIME_LENGTH)
MQCA_INITIATION_Q_NAMEイニシエーションキュー名
(MQ_Q_NAME_LENGTH)
MQCA_PROCESS_NAMEプロセス名
(MQ_PROCESS_NAME_LENGTH)
MQCA_Q_DESCキュー記述子
(MQ_Q_DESC_LENGTH)
MQCA_Q_NAMEキュー名
(MQ_Q_NAME_LENGTH)
MQCA_REMOTE_Q_MGR_NAMEリモートキューマネジャ名
(MQ_Q_MGR_NAME_LENGTH)
MQCA_REMOTE_Q_NAMEリモートキュー名
(MQ_Q_NAME_LENGTH)
MQCA_TRIGGER_DATAトリガデータ
(MQ_TRIGGER_DATA_LENGTH)
MQCA_XMIT_Q_NAME転送キュー名
(MQ_Q_NAME_LENGTH)
MQIA_CURRENT_Q_DEPTHメッセージ登録数
MQIA_DEFINITION_TYPE定義タイプ
MQIA_DEF_BINDデフォルトバインディング
MQIA_DEF_INPUT_OPEN_OPTION省略時の取り出しオプション
MQIA_DEF_PERSISTENCE省略時のメッセージ永続性
MQIA_DEF_PRIORITY省略時のメッセージ優先度
MQIA_DIST_LISTS配布リストサポート
MQIA_HARDEN_GET_BACKOUTロールバック回数記録方法
MQIA_INHIBIT_GET取り出し許可
MQIA_INHIBIT_PUT登録許可
MQIA_MAX_MSG_LENGTH最大メッセージ長
MQIA_MAX_Q_DEPTH最大メッセージ登録数
MQIA_MSG_DELIVERY_SEQUENCEメッセージ配布順序
MQIA_OPEN_INPUT_COUNT入力オープン数
MQIA_OPEN_OUTPUT_COUNT出力オープン数
MQIA_Q_TYPEキュータイプ
MQIA_RETENTION_INTERVALキュー保持時間
MQIA_SCOPEキューの有効範囲
MQIA_SHAREABILITY共用性
MQIA_TRIGGER_CONTROLトリガ制御
MQIA_TRIGGER_DEPTHトリガのためのメッセージ登録数の下限値
MQIA_TRIGGER_MSG_PRIORITYトリガのためのメッセージ優先度の下限値
MQIA_TRIGGER_TYPEトリガタイプ
MQIA_USAGE使用種別

表2-3 MQINQ命令の属性セレクタ(プロセス定義用)

セレクタ説明
MQCA_APPL_IDアプリケーション識別子
(MQ_PROCESS_APPL_ID_LENGTH)
MQCA_ENV_DATA環境データ
(MQ_PROCESS_ENV_DATA_LENGTH)
MQCA_PROCESS_DESCプロセス記述子
(MQ_PROCESS_DESC_LENGTH)
MQCA_PROCESS_NAMEプロセス名
(MQ_PROCESS_NAME_LENGTH)
MQCA_USER_DATAユーザデータ
(MQ_PROCESS_USER_DATA_LENGTH)
MQIA_APPL_TYPEアプリケーションタイプ

表2-4 MQINQ命令の属性セレクタ(キューマネジャ用)

セレクタ説明
MQCA_DEAD_LETTER_Q_NAMEデッドレターキュー名
(MQ_Q_NAME_LENGTH)
MQCA_DEF_XMIT_Q_NAME省略時の転送キュー名
(MQ_Q_NAME_LENGTH)
MQIA_DIST_LISTS配布リストサポート
MQCA_Q_MGR_DESCキューマネジャ記述子
(MQ_Q_MGR_DESC_LENGTH)
MQCA_Q_MGR_NAMEキューマネジャ名
(MQ_Q_MGR_NAME_LENGTH)
MQIA_CODED_CHAR_SET_ID文字セット識別子
MQIA_MAX_HANDLES最大ハンドル数
MQIA_MAX_MSG_LENGTH最大メッセージ長
MQIA_MAX_PRIORITY最大メッセージ優先度
MQIA_MAX_UNCOMMITTED_MSGSトランザクション完了待ち最大メッセージ数
MQIA_PLATFORMプラットフォーム
MQIA_SYNCPOINTトランザクション有効性
MQIA_TRIGGER_INTERVALトリガ間隔
MQCA_REPOSITORY_NAMEキューマネジャがリポジトリサービスを提供するクラスタの名前
注※
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

完了コードです。

次のどれかが返されます。

● Reason(MQLONG型) -output

理由コードです。

CompCode引数がMQCC_OKの場合

理由コード数値意味
MQRC_NONE0理由コードはありません。

CompCode引数がMQCC_WARNINGの場合

理由コード数値意味
MQRC_CHAR_ATTRS_TOO_SHORT2008文字型属性値に対して十分な領域がありません。
MQRC_INT_ATTR_COUNT_TOO_SMALL2022整数型属性値に対して十分な領域がありません。
MQRC_SELECTOR_NOT_FOR_TYPE2068セレクタがキュータイプに適合しません。

CompCode引数がMQCC_FAILEDの場合

理由コード数値意味
MQRC_CHAR_ATTR_LENGTH_ERROR2006文字型属性長が不正です。
MQRC_CHAR_ATTRS_ERROR2007文字型属性値が不正です。
MQRC_HCONN_ERROR2018コネクションハンドルが不正です。
MQRC_HOBJ_ERROR2019オブジェクトハンドルが不正です。
MQRC_INT_ATTR_COUNT_ERROR2021整数型属性数が不正です。
MQRC_INT_ATTRS_ARRAY_ERROR2023整数型属性値が不正です。
MQRC_NOT_OPEN_FOR_INQUIRE2038キューが照会用にオープンされていません。
MQRC_OBJECT_DAMAGED2101オブジェクトが破損しています。
MQRC_Q_DELETED2052キューが削除されています。
MQRC_RESOURCE_PROBLEM2102システム資源が不足しています。
MQRC_SELECTOR_COUNT_ERROR2065セレクタ数が不正です。
MQRC_SELECTOR_ERROR2067セレクタが不正です。
MQRC_SELECTOR_LIMIT_EXCEEDED2066セレクタ数が最大値を超えています。
MQRC_STORAGE_NOT_AVAILABLE2071記憶容量が不足しています。
MQRC_UNEXPECTED_ERROR2195予期しないエラーが発生しました。

詳細は,「付録B.2 理由コード」を参照してください。

注意事項

  1. 返された情報は,指定した属性のその時点での値です。返された値をアプリケーションが使用する前に,その属性値が変更されていない保証はありません。
  2. モデルキューをオープンするとき,ローカルの動的キューが生成されます。属性を照会するためにモデルキューをオープンする場合にも該当します。
    動的キューの属性は(幾つか例外はありますが),動的キューが生成されるときのモデルキューの属性と同じです。その後,MQINQ命令をキューに使用すると,キューマネジャはモデルキューではなく,動的キューの属性を返します。
    動的キューがモデルキューから継承する属性については,「3. オブジェクトの属性」の「キューの属性」を参照してください。
  3. 別名キューに対するMQINQ命令で返される属性は,そのベースキューではなく,別名キューの属性です。
  4. 照会されたキューがクラスタキューである場合,照会できる属性はキューのオープンの方法に依存します。
    • クラスタキューが照会と,入力,ブラウズ,または設定のどれか一つと一緒にオープンされた場合,オープンが成功するためにはクラスタキューのローカルなインスタンスがなければいけません。
    • クラスタキューが照会だけ,または照会と出力でオープンされた場合,次に示す属性だけを照会できます。なお,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命令では,クラスタキューの異なるインスタンスを照会することもあります。通常はすべてのインスタンスは同じ属性値を持ちます。
  5. 属性を照会したあとにそれらの幾つかをMQSET命令で設定する場合,始めにセレクタの配列を作成すると便利です。こうすることで,要素数を減らして,同じ配列をMQSET命令でも使用できます。
  6. 一つ以上の警告がある場合,次のどれかの理由コードが返されます。警告については,「CompCode引数」を参照してください。
     MQRC_SELECTOR_NOT_FOR_TYPE
     MQRC_INT_ATTR_COUNT_TOO_SMALL
     MQRC_CHAR_ATTRS_TOO_SHORT
  7. 各オブジェクトタイプの属性については,「3. オブジェクトの属性」を参照してください。
  8. TP1/Message Queueでは,MaxUncommittedMsgs属性は使用されません。このため,MQIA_MAX_UNCOMMITTED_MSGSセレクタで返される属性値には,意味がありません。なお,このセレクタを使用すると,常に999999999が返されます。