Hitachi

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

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

  • どんなキュータイプにも適合しないセレクタのときは,完了コードMQCC_FAILED,理由コードMQRC_SELECTOR_ERRORで命令は終了します。

  • そのオブジェクトとは異なるタイプのキューに適合するセレクタのときは,完了コードMQCC_WARNING,理由コードMQRC_SELECTOR_NOT_FOR_TYPEで命令は終了します。

  • 照会するキューがクラスタキューの場合,有効なセレクタはキューの解決方法に依存します。詳細については「注意事項」の4を参照してください。

セレクタはどの順序で指定してもかまいません。整数型属性のセレクタ(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

完了コードです。

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

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

注意事項

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