Hitachi

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


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回以上指定してもかまいません。この場合,そのセレクタで最後に指定した値が設定されます。

注意事項
  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‒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

完了コードです。

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

  • MQCC_OK:成功

  • MQCC_FAILED:失敗

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

注意事項

  1. この命令では,整数型属性値,文字型属性値,またはその両方を指定できます。エラーが発生しないかぎり,指定した属性値は同時に更新されます。例えばセレクタの不正や,設定できない属性を設定しようとしたときなどにエラーが発生した場合は,一つの属性値も設定されないで命令は失敗します。

  2. 属性の値はMQINQ命令を使用して照会できます。属性の値の照会については,この章の「MQINQ命令 − オブジェクトの属性の照会」の説明を参照してください。

    注意事項

    MQINQ命令で照会できるすべての属性を,MQSET命令で変更できるわけではありません。例えば,プロセス定義およびキューマネジャの属性はMQSET命令では設定できません。

  3. 変更した属性値は,キューマネジャを再開始したあとでも保たれます。ただし,一時的動的キューの属性の変更は除きます。一時的動的キューは,キューマネジャの再開始時には失われます。

  4. モデルキューの属性は,MQSET命令を使用して変更できません。ただし,MQOO_SETオプションを指定したMQOPEN命令でモデルキューをオープンした場合,そのMQOPEN命令で生成された動的キューの属性をMQSET命令で設定できます。

  5. 設定されるオブジェクトがクラスタキューの場合,オープンが成功するためにはクラスタキューのローカルインスタンスが存在しなければなりません。

  6. MQSET命令の使用による属性の変更は,AlterationDateおよびAlterationTime属性の値には影響しません。

  7. 各オブジェクトタイプの属性については,「3. オブジェクトの属性」を参照してください。