OpenTP1 メッセージキューイング機能 TP1/Message Queue プログラム作成リファレンス

[目次][索引][前へ][次へ]

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_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 理由コード」を参照してください。

注意事項

  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が返されます。