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

文法書

3000-3-D93-50

前書き

対象製品

マニュアル「TP1/Message Queue 使用の手引」を参照してください。

輸出時の注意

本製品を輸出される場合には、外国為替及び外国貿易法の規制並びに米国輸出管理規則など外国の輸出関連法規をご確認の上、必要な手続きをお取りください。

なお、不明な場合は、弊社担当営業にお問い合わせください。

商標類

HITACHI，HiRDB，JP1，OpenTP1，OSAS，ServerConductor，TPBroker，uCosminexus，XDM，XMAPは，株式会社 日立製作所の商標または登録商標です。

AMDは，Advanced Micro Devices, Inc.の商標です。

IBM，AIX，MQSeries，WebSphereは，世界の多くの国で登録されたInternational Business Machines Corporationの商標です。

Intelは，Intel Corporationまたはその子会社の商標です。

Linuxは，Linus Torvalds氏の米国およびその他の国における登録商標です。

Microsoft，Visual C++，Visual Studio，Windows，Windows Serverは，マイクロソフト 企業グループの商標です。

Oracle(R)，Java，MySQL及びNetSuiteは，Oracle，その子会社及び関連会社の米国及びその他の国における登録商標です。

Red Hat, Red Hat Enterprise Linux, the Shadowman logo, and JBoss are registered trademarks of Red Hat, Inc. in the United States and other countries. Linux(R) is the registered trademark of Linus Torvalds in the U.S. and other countries.

UNIXは，The Open Groupの登録商標です。

その他記載の会社名，製品名などは，それぞれの会社の商標もしくは登録商標です。

発行

2024年1月　3000-3-D93-50

著作権

All Rights Reserved. Copyright (C) 2006, 2024, Hitachi, Ltd.

(C) Copyright International Business Machines Corporation 1994, 2003. All rights reserved.

変更内容

変更内容（3000-3-D93-50）TP1/Message Queue 07-60

追加・変更内容

変更個所

記載内容は変更なし。

−

単なる誤字・脱字などはお断りなく訂正しました。

変更内容（3000-3-D93-40）TP1/Message Queue 07-53

追加・変更内容

記載内容は変更なし。

変更内容（3000-3-D93-31）TP1/Message Queue 07-52

追加・変更内容

対象製品の記載を，マニュアル「TP1/Message Queue 使用の手引」を参照する内容に変更した。

MQGMO_CONVERTの説明を変更した。

次の理由コードの説明を変更した。

MQRC_SOURCE_CCSID_ERROR

MQRC_TARGET_CCSID_ERROR

MQRC_NOT_CONVERTED

コード変換対象の文字コードセットの次の説明を変更した。

注※4の変換対象外の製品

日立コード変換を使用した場合の文字コード変換の対応（HP-UX）の次の説明を変更した。

凡例

変更内容（3000-3-D93-30）TP1/Message Queue 07-52

追加・変更内容

コード変換対象の文字コードセットの次の説明を変更した。

注※2の変換対象の製品

注※3の変換対象外の製品

変更内容（3000-3-D93-20）TP1/Message Queue 07-50

追加・変更内容

注意事項に説明を追加した。

変更内容（3000-3-D93-10）TP1/Message Queue 07-01

追加・変更内容

MQPTR型のデータタイプの説明を変更した。

COBOL言語で追加が必要なフィールドについて説明を追加した。

MQMD構造体のFeedbackフィールドの，次の項目の説明を変更した。

MQFB_DATA_LENGTH_ZERO

MQFB_DATA_LENGTH_NEGATIVE

MQFB_DATA_LENGTH_TOO_BIG

MQFB_BUFFER_OVERFLOW

MQFB_LENGTH_OFF_BY_ONE

MQFB_IIH_ERROR

MQFB_NOT_AUTHORIZED_FOR_IMS

MQFB_IMS_ERROR

MQFB_IMS_FIRST

MQFB_IMS_LAST

MQFB_CICS_APPL_ABENDED

MQFB_CICS_APPL_NOT_STARTED

MQFB_CICS_BRIDGE_FAILURE

MQFB_CICS_CCSID_ERROR

MQFB_CICS_CIH_ERROR

MQFB_CICS_COMMAREA_ERROR

MQFB_CICS_CORREL_ID_ERROR

MQFB_CICS_DLQ_ERROR

MQFB_CICS_ENCODING_ERROR

MQFB_CICS_INTERNAL_ERROR

MQFB_CICS_NOT_AUTHORIZED

MQFB_CICS_UOW_BACKED_OUT

MQFB_CICS_UOW_ERROR

MQMD構造体の次の値の説明を変更した。

PersistenceフィールドのMQPER_PERSISTENCE_AS_Q_DEF

PriorityフィールドのMQPRI_PRIORITY_AS_Q_DEF

理由コードの数値（10進数）から「L」を削除した。

次の理由コードの説明を変更した（括弧内は10進数の値）。

MQRC_CONNECTION_BROKEN（2009）

MQRC_Q_MGR_NAME_ERROR（2058）

MQRC_Q_MGR_NOT_AVAILABLE（2059）

MQRC_SECOND_MARK_NOT_ALLOWED（2062）

MQRC_SYNCPOINT_NOT_AVAILABLE（2072）

MQRC_STORAGE_CLASS_ERROR（2105）

MQRC_COD_NOT_VALID_FOR_XCF_Q（2106）

MQRC_XWAIT_CANCELED（2107）

MQRC_XWAIT_ERROR（2108）

MQRC_NOT_CONVERTED（2119）

MQRC_ADAPTER_STORAGE_SHORTAGE（2127）

MQRC_ADAPTER_CONN_LOAD_ERROR（2129）

MQRC_ADAPTER_SERV_LOAD_ERROR（2130）

MQRC_ADAPTER_DEFS_ERROR（2131）

MQRC_ADAPTER_DEFS_LOAD_ERROR（2132）

MQRC_ADAPTER_CONV_LOAD_ERROR（2133）

MQRC_ADAPTER_DISC_LOAD_ERROR（2138）

MQRC_CICS_WAIT_FAILED（2140）

MQRC_ASID_MISMATCH（2157）

MQRC_CONN_ID_IN_USE（2160）

MQRC_Q_MGR_STOPPING（2162）

MQRC_DUPLICATE_RECOV_COORD（2163）

MQRC_API_EXIT_LOAD_ERROR（2183）

MQRC_CICS_BRIDGE_RESTRICTION（2187）

MQRC_CLUSTER_RESOLUTION_ERROR（2189）

MQRC_PAGESET_FULL（2192）

MQRC_STORAGE_MEDIUM_FULL（2192）

MQRC_PAGESET_ERROR（2193）

MQRC_NAME_IN_USE（2201）

MQRC_CONNECTION_QUIESCING（2202）

MQRC_CONNECTION_STOPPING（2203）

MQRC_ADAPTER_NOT_AVAILABLE（2204）

MQRC_CONNECTION_NOT_AUTHORIZED（2217）

MQRC_Q_MGR_ACTIVE（2222）

MQRC_CONN_TAG_IN_USE（2271）

MQRC_CONNECTION_ERROR（2273）

MQRC_OPTION_ENVIRONMENT_ERROR（2274）

MQRC_CD_ERROR（2277）

MQRC_HCONFIG_ERROR（2280）

MQRC_FUNCTION_ERROR（2281）

MQRC_SERVICE_NOT_AVAILABLE（2285）

MQRC_INITIALIZATION_FAILED（2286）

MQRC_TERMINATION_FAILED（2287）

MQRC_UNKNOWN_Q_NAME（2288）

MQRC_SERVICE_ERROR（2289）

MQRC_Q_ALREADY_EXISTS（2290）

MQRC_USER_ID_NOT_AVAILABLE（2291）

MQRC_UNKNOWN_ENTITY（2292）

MQRC_UNKNOWN_AUTH_ENTITY（2293）

MQRC_UNKNOWN_REF_OBJECT（2294）

MQRC_CHANNEL_NOT_ACTIVATED（2296）

MQRC_UOW_CANCELED（2297）

MQRC_MSG_TOKEN_ERROR（2331）

MQRC_MISSING_WIH（2332）

MQRC_WIH_ERROR（2333）

MQRC_CHAR_CONVERSION_ERROR（2340）

MQRC_UCS2_CONVERSION_ERROR（2341）

MQRC_DB2_NOT_AVAILABLE（2342）

MQRC_OBJECT_NOT_UNIQUE（2343）

MQRC_CONN_TAG_NOT_RELEASED（2344）

MQRC_CF_NOT_AVAILABLE（2345）

MQRC_CF_STRUC_IN_USE（2346）

MQRC_CF_STRUC_LIST_HDR_IN_USE（2347）

MQRC_CF_STRUC_AUTH_FAILED（2348）

MQRC_CF_STRUC_ERROR（2349）

MQRC_CONN_TAG_NOT_USABLE（2350）

MQRC_UOW_MIX_NOT_SUPPORTED（2355）

MQRC_OBJECT_LEVEL_INCOMPATIBLE（2360）

MQRC_BACKOUT_THRESHOLD_REACHED（2362）

MQRC_SEGMENTS_NOT_SUPPORTED（2365）

MQRC_WRONG_CF_LEVEL（2366）

MQRC_CF_STRUC_FAILED（2373）

MQRC_NO_DATA_AVAILABLE（2379）

MQRC_Q_INDEX_TYPE_ERROR（2394）

MQRC_REOPEN_EXCL_INPUT_ERROR（6100）

MQRC_REOPEN_INQUIRE_ERROR（6101）

MQRC_REOPEN_SAVED_CONTEXT_ERR（6102）

MQRC_REOPEN_TEMPORARY_Q_ERROR（6103）

MQRC_ATTRIBUTE_LOCKED（6104）

MQRC_CURSOR_NOT_VALID（6105）

MQRC_ENCODING_ERROR（6106）

MQRC_STRUC_ID_ERROR（6107）

MQRC_NULL_POINTER（6108）

MQRC_NO_CONNECTION_REFERENCE（6109）

MQRC_NO_BUFFER（6110）

MQRC_BINARY_DATA_LENGTH_ERROR（6111）

MQRC_BUFFER_NOT_AUTOMATIC（6112）

MQRC_INSUFFICIENT_BUFFER（6113）

MQRC_INSUFFICIENT_DATA（6114）

MQRC_DATA_TRUNCATED（6115）

MQRC_ZERO_LENGTH（6116）

MQRC_NEGATIVE_LENGTH（6117）

MQRC_NEGATIVE_OFFSET（6118）

MQRC_INCONSISTENT_FORMAT（6119）

MQRC_INCONSISTENT_OBJECT_STATE（6120）

MQRC_CONTEXT_OBJECT_NOT_VALID（6121）

MQRC_CONTEXT_OPEN_ERROR（6122）

MQRC_STRUC_LENGTH_ERROR（6123）

MQRC_NOT_CONNECTED（6124）

MQRC_NOT_OPEN（6125）

MQRC_DISTRIBUTION_LIST_EMPTY（6126）

MQRC_INCONSISTENT_OPEN_OPTIONS（6127）

MQRC_WRONG_VERSION（6128）

MQRC_REFERENCE_ERROR（6129）

次の理由コードの説明を追加した（括弧内は10進数の値）。

MQRC_API_EXIT_NOT_FOUND（2182）

MQRC_FILE_NOT_AUDITED（2216）

MQRC_PARTIALLY_CONVERTED（2272）

MQRC_NEXT_RECORD_ERROR（2361）

リンケージ方法の説明を，OS別に記載した。

適用OSからSolarisを削除した。

適用OSが64ビット版の場合の説明を追加した。

日立コード変換を使用した場合の文字コードの対応について説明を追加した。

はじめに

このマニュアルは，TP1/Message Queueを使用するアプリケーションのプログラミングインタフェースについて説明したものです。

TP1/Message Queueおよびマニュアルは，米国International Business Machines Corporationとのライセンス契約に基づき，IBM MQ（旧称：MQSeries）のMQI，MQFAP，MQクラスタの仕様をベースに実装しています。

対象読者

TP1/Message Queueを使用するアプリケーションプログラマを対象としています。

また，次のマニュアルを理解されていることを前提としています。

TP1/Message Queue 使用の手引（3000-3-D90）

TP1/Message Queue プログラム作成の手引（3000-3-D92）

謝辞

COBOL言語仕様は，CODASYL（the Conference on Data Systems Languages：データシステムズ言語協議会）によって，開発された。OpenTP1のアプリケーションプログラムのインタフェース仕様のうち，データ操作言語（DML　Data Manipulation Language）の仕様は，CODASYL　COBOL（1981）の通信節，RECEIVE文，SEND文，COMMIT文，及びROLLBACK文を参考にし，それに日立製作所独自の解釈と仕様を追加して開発した。原開発者に対し謝意を表すとともに，CODASYLの要求に従って以下の謝辞を掲げる。なお，この文章は，COBOLの原仕様書「CODASYL COBOL JOURNAL OF DEVELOPMENT 1984」の謝辞の一部を再掲するものである。

いかなる組織であっても，COBOLの原仕様書とその仕様の全体又は一部分を複製すること，マニュアルその他の資料のための土台として原仕様書のアイデアを利用することは自由である。ただし，その場合には，その刊行物のまえがきの一部として，次の謝辞を掲載しなければならない。書評などに短い文章を引用するときは，"COBOL"という名称を示せば謝辞全体を掲載する必要はない。

COBOLは産業界の言語であり，特定の団体や組織の所有物ではない。

CODASYL　COBOL委員会又は仕様変更の提案者は，このプログラミングシステムと言語の正確さや機能について，いかなる保証も与えない。さらに，それに関連する責任も負わない。

次に示す著作権表示付資料の著作者及び著作権者

FLOW-MATIC（Sperry Rand Corporationの商標），

Programming for the Univac（R）I and II，

Data Automation Systems， Sperry Rand Corporation　著作権表示1958年，1959年；

IBM Commercial Translator Form No.F 28-8013，IBM著作権表示1959年;

FACT，DSI 27A5260-2760，Minneapolis-Honeywell，著作権表示1960年

は，これら全体又は一部分をCOBOLの原仕様書中に利用することを許可した。この許可は，COBOL原仕様書をプログラミングマニュアルや類似の刊行物に複製したり，利用したりする場合にまで拡張される。

その他の前提条件

このマニュアルをお読みになる際のその他の前提情報については，マニュアル「TP1/Message Queue 使用の手引」を参照してください。

1　データタイプ

この章では，メッセージキューイング機能の命令で使用する，データタイプについて説明します。

データタイプの概要

メッセージキューイング機能の命令で使用するデータタイプには次の2種類があります。

基本データタイプ

構造体データタイプ

この章では，プログラミング言語に依存しない形式でこれらのデータタイプを説明します。なお，これらのデータタイプは，ユーザ定義のデータタイプをサポートする言語（例：C言語）で宣言されるデータタイプに相当します。ただし，ユーザ定義のデータタイプは，基本データタイプとその組み合わせ（配列または構造体）で構成されます。

基本データタイプ

メッセージキューイング機能の命令では，次の基本データタイプを使用します。

MQBYTE：1バイト（8ビット列）

MQCHAR：1文字（定義された文字セットの中の，シングルキャラクタ文字）

MQLONG：整数（符号付き4バイト2進数）

ここで示すほかのデータタイプは，上記の基本データタイプと同じものか，それらを組み合わせたもの（配列または構造体）です。

基本データタイプの実現例については，「付録E　各プログラミング言語での実現例」を参照してください。

●　MQBYTE型　−　1バイト

MQBYTE型データは，1バイトのデータを表します。バイトに対する特別な解釈はなく，2進数や文字としてではなく，ビット文字列として扱われます。バウンダリ調整は不要です。

文字セットとマシンコードが異なるキューマネジャ間でMQBYTEデータが送信される場合，MQBYTEデータは変換されません。MQMD構造体のMsgIdおよびCorrelIdフィールドについても同様です。

MQBYTE型の配列で，キューマネジャ管理外の記憶領域を表す場合があります。例えば，アプリケーションメッセージデータや構造体を格納する領域です。この領域のバウンダリ調整では，領域内のデータの性質と矛盾が起きないように注意してください。

C言語では，通常，MQBYTE型の配列で指定する引数はアドレスで渡されます。そのため，関数の引数をMQBYTE型の配列で指定すると，すべてのデータタイプを使用できます。C言語では，関数の該当する引数は，void型のポインタとして宣言されます。

●　MQBYTEn型　−　nバイト

MQBYTEn型データは，nバイトのバイト列を表します。nとして，次の値を取ることができます。

n：8，16，24，32，40，または128

それぞれのバイトは，MQBYTE型で記述されます。バウンダリ調整は必要ありません。

なお，バイト型属性の各フィールドの長さが，定数MQ_*として定義されています。

●　MQCHAR型　−　1バイト文字

MQCHAR型データは，1バイトの文字，または2バイト文字やマルチバイト文字の1バイトを表します。

文字セットとマシンコードが異なるキューマネジャ間で，MQCHARデータが送信される場合，データが正しく解釈されるように通常はMQCHARデータの変換が必要です。MQMD構造体中のMQCHARデータについては，キューマネジャが自動的に変換を実行します。アプリケーションメッセージデータ内のMQCHARデータの変換については，MQGET命令発行時に指定するMQGMO_CONVERTオプションによって制御できます。

この文字の文字セット識別子には，該当するキューマネジャの文字セット識別子が使用されます（「3.　オブジェクトの属性」の「キューマネジャの属性」で，CodedCharSetId属性の説明を参照してください）。バウンダリ調整は必要ありません。

注意事項

MQGET命令，MQPUT命令，およびMQPUT1命令で指定するアプリケーションメッセージデータは，MQBYTE型で記述します。MQCHAR型では記述しません。

●　MQCHARn型　−　nバイト文字列

MQCHARn型データは，nバイトの文字列を表します。nとして，次の値を取ることができます。

n：4，8，12，20，28，32，48，64，128，または256

それぞれの文字は，MQCHAR型で記述されます。バウンダリ調整は必要ありません。

定義された文字列の長さよりもデータが短いとき，余りを空白で埋める必要があります。場合によっては，空白で埋める代わりに，ヌル文字で最後尾を示してもかまいません。データ領域内のヌル文字以降の文字は，空白として扱われます。ヌル文字を使用できるかどうかについては，この章で説明する各構造体と，「2.　メッセージキューイング機能の命令」で説明する各命令を参照してください。

キューマネジャからアプリケーションに文字列が返されるとき（例えば，MQGET命令），文字列の余りは空白で埋められます。キューマネジャはヌル文字を使用しません。

なお，文字型属性の各フィールドの長さが，定数MQ_*として定義されています。

●　MQHCONN型　−　コネクションハンドル

MQHCONN型データは，コネクションハンドルを表します。このデータは，特定のキューマネジャへの接続を示します。コネクションハンドルは，4バイトのバウンダリ調整が必要です。

注意事項

アプリケーションで必要なコネクションハンドルの操作は，値が等しいかどうかを調べることだけです。

●　MQHOBJ型　−　オブジェクトハンドル

MQHOBJ型データは，オブジェクトを利用するためのハンドルを表します。オブジェクトハンドルは，4バイトのバウンダリ調整が必要です。

注意事項

アプリケーションで必要なオブジェクトハンドルの操作は，値が等しいかどうかを調べることだけです。

●　MQLONG型　−　ロング整数

MQLONG型データは，32ビットの符号付き2進数字を表します。このデータは，環境（使用言語など）で制限されないかぎり，-2147483648から+2147483647の範囲で値を取ることができます。COBOL言語の場合は，-999999999から+999999999の範囲に制限されます。ロング整数は，4バイトのバウンダリ調整が必要です。

●　MQPTR型　−　ポインタ

MQPTR型データは，任意の型のアドレスです。ポインタは4バイト（32ビット版），または8バイト（64ビット版）のバウンダリ調整が必要です。

プログラミング言語で型付きポインタをサポートしていることがあり，MQIでも使用します。例えば，C言語のPMQCHARおよびPMQLONG型です。

●　PMQCHAR型　−　MQCHAR型データへのポインタ

PMQCHAR型データは，MQCHAR型データへのポインタです。

●　PMQLONG型　−　MQLONG型データへのポインタ

PMQLONG型データは，MQLONG型データへのポインタです。

●　PMQMD型　−　MQMD構造体へのポインタ

PMQMD型データは，MQMD構造体へのポインタです。

構造体データタイプ

構造体の扱い方は，プログラミング言語によって異なります。メッセージキューイング機能では，構造体について規則を定めています。この規則によって，それぞれのプログラミング言語で矛盾なく，構造体を使用できるようにしています。

構造体の規則を次に示します。

構造体はバウンダリ調整します。メッセージキューイング機能で使用する構造体の多くは，4バイトの倍数を先頭アドレスとします。

構造体中の各フィールドも，それぞれのデータタイプに応じてバウンダリ調整します。MQLONG型に相当するフィールドでは，4バイトの倍数を先頭アドレスとします。そのほかのフィールドでは，1バイト単位で先頭アドレスを設定できます。

構造体の長さは，バウンダリ調整の単位の倍数とします。メッセージキューイング機能で使用する構造体は，4バイトの倍数の長さになります。

上記の規則に適合するようにバイトやフィールドを追加してパディングします。

構造体データタイプの実現例については，「付録E　各プログラミング言語での実現例」を参照してください。

MQCFH構造体　−　PCFヘッダ

MQCFH構造体は，次のフィールドから構成されます。

フィールド（データタイプ）

内容

初期値

Type（MQLONG型）

構造体タイプ

MQCFT_COMMAND

StrucLength（MQLONG型）

構造体長

MQCFH_STRUC_LENGTH

Version（MQLONG型）

構造体バージョン番号

MQCFH_VERSION_1

Command（MQLONG型）

命令識別子

0

MsgSeqNumber（MQLONG型）

メッセージシーケンス番号

1

Control（MQLONG型）

制御オプション

MQCFC_LAST

CompCode（MQLONG型）

完了コード

MQCC_OK

Reason（MQLONG型）

理由コード

MQRC_NONE

ParameterCount（MQLONG型）

引数構造体の数

0

概要

MQCFH構造体には，命令メッセージまたは応答メッセージのメッセージデータの開始位置にある情報を記述します。どちらの場合も，メッセージ記述子のFormatフィールドはMQFMT_ADMINです。

MQCFH構造体は，ユーザ定義のメッセージデータに使用することもできます。この場合，メッセージ記述子のFormatフィールドはMQFMT_PCFとなります。

なお，この場合，構造体の中にある一部のフィールドは意味を持たなくなります。大部分のフィールドに提供されている初期値を使用できますが，StrucLengthフィールド，およびParameterCountフィールドには，アプリケーション側でデータに適した値を設定する必要があります。

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　Command（MQLONG型）　命令識別子

TP1/Message Queueでは使用されません。

命令メッセージは，実行される機能を識別します。

このフィールドの初期値は0です。

●　CompCode（MQLONG型）　完了コード

TP1/Message Queueでは使用されません。

このフィールドは応答のときだけ意味があります。

このフィールドの初期値はMQCC_OKです。

●　Control（MQLONG型）　制御オプション

TP1/Message Queueでは使用されません。

次の値を取ります。

MQCFC_LAST

グループの最終メッセージ

命令では，この値が常に設定されなければなりません。

MQCFC_NOT_LAST

グループの最終ではないメッセージ

このフィールドの初期値はMQCFC_LASTです。

●　MsgSeqNumber（MQLONG型）　メッセージシーケンス番号

TP1/Message Queueでは使用されません。

これは，関連するメッセージのグループ内のメッセージシーケンス番号です。命令では，この値は1でなければなりません。それは，命令は常に単一のメッセージで構成されるためです。応答では，命令の応答の最初，またはこのシーケンス番号に対してだけ1であり，その命令に後続する応答のたびに1ずつ増加します。グループの最後の，または一つだけのメッセージは，ControlフィールドにMQFSC_LASTフラグが設定されます。

このフィールドの初期値は1です。

●　ParameterCount（MQLONG型）　引数構造体の数

MQCFH構造体に続く引数構造体（MQCFIL構造体，MQCFIN構造体，MQCFST構造体，およびMQCFSL構造体）の数です。このフィールドの値は0以上です。

このフィールドの初期値は0です。

●　Reason（MQLONG型）　理由コード

TP1/Message Queueでは使用されません。

理由コードです。

このフィールドの初期値はMQRC_NONEです。

●　StrucLength（MQLONG型）　構造体長

MQCFH構造体のバイト長です。次の値でなければなりません。

MQCFH_STRUC_LENGTH

命令フォーマットヘッダ構造体長

このフィールドの初期値はMQCFH_STRUC_LENGTHです。

●　Type（MQLONG型）　構造体タイプ

TP1/Message Queueでは使用されません。

このフィールドは，メッセージの内容を示します。

このフィールドの初期値はMQCFT_COMMANDです。

●　Version（MQLONG型）　構造体バージョン番号

次の値を取ります。

MQCFH_VERSION_1

命令フォーマットヘッダのバージョン番号

次の定数は現在のバージョンのバージョン番号を指定します。

MQCFH_CURRENT_VERSION

現在のバージョンの命令形式

このフィールドの初期値はMQCFH_VERSION_1です。

MQCFIL構造体　−　PCF整数リスト引数

MQCFIL構造体は，次のフィールドから構成されます。

フィールド（データタイプ）

内容

初期値

Type（MQLONG型）

構造体タイプ

MQCFT_INTEGER_LIST

StrucLength（MQLONG型）

構造体長

MQCFIL_STRUC_LENGTH_FIXED

Parameter（MQLONG型）

引数識別子

0

Count（MQLONG型）

引数の値の数

0

Values（MQLONG×Count）

引数の値

なし

概要

MQCFIL構造体には，命令または命令の応答であるメッセージの整数リスト引数を記述します。どちらの場合も，メッセージ記述子のフォーマット名称はMQFMT_ADMINです。

MQCFIL構造体は，イベントメッセージでも使用します。この場合，メッセージ記述子のFormatフィールドはMQFMT_EVENTです。

MQCFIL構造体は，ユーザ定義のメッセージデータにも使用できます。この場合，メッセージ記述子のFormatフィールドは，MQFMT_PCFです。なお，この場合は，構造体の中にある一部のフィールドは意味を持たなくなります。大部分のフィールドには提供されている初期値を使用できますが，StrucLengthフィールド，Countフィールド，およびValuesフィールドには，アプリケーション側でデータに適した値を設定する必要があります。

構造体は，可変長の整数（Valuesフィールド）で終了します。

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　Count（MQLONG型）　引数の値の数

Values配列の要素数です。0以上でなければなりません。

このフィールドの初期値は0です。

●　Parameter（MQLONG型）　引数識別子

TP1/Message Queueでは使用されません。

構造体に含まれる値の引数を示します。このフィールドに現れる値は，MQCFH構造体のCommandフィールドの値に依存します。

このフィールドの初期値は0です。

●　StrucLength（MQLONG型）　構造体長

構造体の最後（Valuesフィールド）の可変長整数配列を含む，MQCFIL構造体のバイト長です。長さは4の倍数でなければなりません。また，配列を含むのに十分な長さでなければなりません。配列とStrucLengthフィールドで定義される長さ間のバイトは意味を持ちません。

次の定数は構造体の固定部分の長さを表し，Valuesフィールドを除いた長さです。

MQCFIL_STRUC_LENGTH_FIXED

命令フォーマットの整数リスト引数構造体の固定部分の長さ

このフィールドの初期値はMQCFIL_STRUC_LENGTH_FIXEDです。

●　Type（MQLONG型）　構造体タイプ

構造体は整数リスト引数を表すMQCFIL構造体であることを示します。

次の値を取ります。

MQCFT_INTEGER_LIST

整数リストを定義する構造体

このフィールドの初期値はMQCFT_INTEGER_LISTです。

●　Values（MQLONG × Count）　引数の値

これは，Parameterフィールドで識別される引数の値の配列です。例えば，MQIACF_Q_ATTRSでは，属性セレクタ（MQCA_*およびMQIA_*の値）のリストです。

C言語の場合，このフィールドは1要素の配列として定義されます。構造体の格納域は動的に割り付けられる必要があります。また，ポインタはその中のフィールドを指すために使用される必要があります。

COBOL言語の場合，構造体の宣言にこのフィールドが入っていません。MQCFIL構造体をより大きい構造体に含め，MQCFIL構造体のあとに必要な長さのValuesフィールドを宣言する必要があります。

MQCFIN構造体　−　PCF整数引数

MQCFIN構造体は，次のフィールドから構成されます。

フィールド（データタイプ）

内容

初期値

Type（MQLONG型）

構造体タイプ

MQCFT_INTEGER

StrucLength（MQLONG型）

構造体長

MQCFIN_STRUC_LENGTH

Parameter（MQLONG型）

引数識別子

0

Value（MQLONG型）

引数の値

0

概要

MQCFIN構造体は，命令または命令の応答であるメッセージに整数引数を記述します。どちらの場合もメッセージ記述子のフォーマット名称はMQFMT_ADMINです。

MQCFIN構造体は，イベントメッセージでも使用します。この場合，メッセージ記述子のFormatフィールドはMQFMT_EVENTです。

MQCFIN構造体は，ユーザ定義のメッセージデータにも使用できます。この場合，メッセージ記述子のFormatフィールドは，MQFMT_PCFです。なお，この場合は,構造体の中にある一部のフィールドは意味を持たなくなります。大部分のフィールドには提供されている初期値を使用できますが，Valueフィールドには，アプリケーション側でデータに適した値を設定する必要があります。

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　Parameter（MQLONG型）　引数識別子

TP1/Message Queueでは使用されません。

構造体に含まれる値の引数を示します。このフィールドに現れる値は，MQCFH構造体のCommandフィールドの値に依存します。

このフィールドの初期値は0です。

●　StrucLength（MQLONG型）　構造体長

MQCFIN構造体のバイト長さです。

次の値を取ります。

MQCFIN_STRUC_LENGTH

命令フォーマットの整数引数構造体の長さ

このフィールドの初期値はMQCFIN_STRUC_LENGTHです。

●　Type（MQLONG型）　構造体タイプ

構造体は整数引数を表すMQCFIN構造体であることを示します。

次の値を取ります。

MQCFT_INTEGER

整数を定義する構造体

このフィールドの初期値はMQCFT_INTEGERです。

●　Value（MQLONG型）　引数の値

このフィールドは，Parameterフィールドで識別される引数の値です。

このフィールドの初期値は0です。

MQCFSL構造体　−　PCF文字列リスト引数

MQCFSL構造体は，次のフィールドから構成されます。

フィールド（データタイプ）

内容

初期値

Type（MQLONG型）

構造体タイプ

MQCFT_STRING_LIST

StrucLength（MQLONG型）

構造体長

MQCFSL_STRUC_LENGTH_FIXED

Parameter（MQLONG型）

引数識別子

0

CodedCharSetId（MQLONG型）

文字セット識別子

MQCCSI_DEFAULT

Count（MQLONG型）

引数の値の数

0

StringLength（MQLONG型）

文字列長

なし

Strings（MQCHAR×StringLength×Count）

文字列の値

ヌル文字列

概要

MQCFSL構造体には，命令または命令の応答であるメッセージの文字列リスト引数を記述します。どちらの場合も，メッセージ記述子のフォーマット名はMQFMT_ADMINとなります。

構造体は可変長の文字列（Stringsフィールド）で終了します。

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　CodedCharSetId（MQLONG型）　文字セット識別子

Stringsフィールドのデータの文字セット識別子を指定します。

次の値を取ります。

MQCCSI_DEFAULT

デフォルトの文字セット識別子

文字データはメッセージ記述子MQMD構造体のCodedCharSetIdフィールドによって定義された文字セットです。

このフィールドの初期値はMQCCSI_DEFAULTです。

●　Count（MQLONG型）　引数の値の数

Stringフィールドにある文字列の数を表します。値は0以上でなければなりません。

このフィールドの初期値は0です。

●　Parameter（MQLONG型）　引数識別子

構造体に含まれる値の引数を示します。このフィールドの値は，MQCFH構造体のCommandフィールドの値と同じです。

このフィールドの初期値は0です。

●　StringLength（MQLONG型）　文字列長

引数の値の長さであり，Stringsフィールドの1文字列の長さを表します。全文字列がこの長さとなります。値は0以上でなければなりません。なお，この長さは4の倍数である必要はありません。

●　Strings（MQCHAR×StringLength×Count）　文字列の値

Parameterフィールドで識別される引数の1組の文字列の値を表します。文字列の数はCountフィールドで，各文字列の長さはStringLengthフィールドで与えられます。文字列同士は結合され，文字列間に間隔はありません。文字列の合計長は，1文字列の長さと文字列の数を掛けたもの（Stringフィールドの値×Countフィールドの値）です。

指定された文字列が引数の標準の長さより短い場合，省略された文字は空白に仮定されます。指定された文字列が引数の標準の長さより長い場合，標準の長さを超える文字は空白でなければなりません。

文字列はCodedCharSetIdフィールドで定義された文字セットにある文字列を含み，Parameterフィールドで指定された引数に適した値となります。

注意事項

文字列中のヌル文字は，通常のデータとして扱われます。文字列の分離を示す記号として扱われません。

このフィールドの初期値は，C言語ではヌル文字列です。

C言語の場合，このフィールドは1要素の配列として定義されます。構造体の格納域は動的に割り付けられる必要があります。また，ポインタはその中のフィールドを指すために使用される必要があります。

COBOL言語の場合，構造体の宣言にこのフィールドが入っていません。MQCFSL構造体をより大きい構造体に含め，MQCFSL構造体のあとに必要な長さのStringsフィールドを宣言する必要があります。

●　StrucLength（MQLONG型）　構造体長

構造体の最後であるStringフィールドの可変長文字列を含む，MQCFSL構造体のバイト長を表します。長さは4の倍数でなければなりません。また，文字列を含むのに十分な長さでなければなりません。

文字列の最終とStrucLengthフィールドで定義される長さ間のバイトは意味を持ちません。

次の定数は構造体の固定部分の長さを表し，Stringフィールドを除いた長さです。

MQCFSL_STRUC_LENGTH_FIXED

文字列リスト引数構造体の固定部分の長さ

このフィールドの初期値はMQCFSL_STRUC_LENGTH_FIXEDです。

●　Type（MQLONG型）　構造体タイプ

構造体が，文字列リスト引数であるMQCFSL構造体であることを示します。

次の値を取ります。

MQCFT_STRING_LIST

文字列リストを定義する構造体

このフィールドの初期値はMQCFT_STRING_LISTです。

MQCFST構造体　−　PCFストリング引数

MQCFST構造体は，次のフィールドから構成されます。

フィールド（データタイプ）

内容

初期値

Type（MQLONG型）

構造体タイプ

MQCFT_STRING

StrucLength（MQLONG型）

構造体長

MQCFST_STRUC_LENGTH_FIXED

Parameter（MQLONG型）

引数識別子

0

CodedCharSetId（MQLONG型）

文字セット識別子

MQCCSI_DEFAULT

StringLength（MQLONG型）

文字列長

0

String（MQCHAR×StringLength）

文字列の値

ヌル文字列

概要

MQCFST構造体には，命令または命令の応答であるメッセージに文字列引数を記述します。どちらの場合もメッセージ記述子のフォーマット名称は，MQFMT_ADMINです。

MQCFST構造体は，イベントメッセージでも使用します。この場合，メッセージ記述子のFormatフィールドはMQFMT_EVENTです。

MQCFST構造体は，ユーザ定義のメッセージデータにも使用できます。この場合，メッセージ記述子のFormatフィールドはMQFMT_PCFです。なお，この場合は，構造体の中にある一部のフィールドは意味を持たなくなります。大部分のフィールドには提供されている初期値を使用できますが，StrucLengthフィールド，StringLengthフィールド，およびStringフィールドにはアプリケーション側でデータに適した値を設定する必要があります。

構造体は可変長の文字列（Stringフィールド）で終了します。

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　CodedCharSetId（MQLONG型）　文字セット識別子

Stringフィールドのデータの文字セット識別子を指定します。

次の値を取ります。

MQCCSI_DEFAULT

デフォルトの文字セット識別子

文字データはメッセージ記述子MQMD構造体のCodedCharSetIdフィールドによって定義された文字セットです。

このフィールドの初期値はMQCCSI_DEFAULTです。

●　Parameter（MQLONG型）　引数識別子

TP1/Message Queueでは使用されません。

構造体に含まれる値の引数を示します。このフィールドに現れる値は，MQCFH構造体のCommandフィールドの値に依存します。

このフィールドの初期値は0です。

●　String（MQCHAR × StringLength）　文字列の値

指定された文字列が引数の標準の長さより短い場合，省略された文字は空白に仮定します。指定された文字列が引数の標準の長さより長い場合，標準の長さを超える文字は空白でなければなりません。

注意事項

文字列のヌル文字は通常のデータとして扱われ，文字列の分離記号としては扱われません。

このフィールドの初期値は，C言語ではヌル文字列です。

C言語の場合，このフィールドは1要素の配列として定義されます。構造体の格納域は動的に割り付けられる必要があります。また，ポインタはその中のフィールドを指すために使用される必要があります。

COBOL言語の場合，構造体の宣言にこのフィールドが入っていません。MQCFST構造体をより大きい構造体に含め，MQCFST構造体のあとに必要な長さのStringフィールドを宣言する必要があります。

●　StringLength（MQLONG型）　文字列長

Stringフィールドにあるデータのバイトの長さを示します。0以上でなければなりません。この長さは4の倍数である必要はありません。

このフィールドの初期値は0です。

●　StrucLength（MQLONG型）　構造体長

構造体の最後（Stringフィールド）の可変長文字列を含む，MQCFST構造体のバイト長です。長さは4の倍数でなければなりません。また，文字列を含むのに十分でなければなりません。

文字列の最終とStrucLengthフィールドで定義される長さ間のバイトは意味を持ちません。

次の定数は構造体の固定部分の長さを表し，Stringフィールドを除いた長さです。

MQCFST_STRUC_LENGTH_FIXED

命令フォーマットの文字列引数構造体の固定部分の長さ

このフィールドの初期値はMQCFST_STRUC_LENGTH_FIXEDです。

●　Type（MQLONG型）　構造体タイプ

構造体は文字列引数を表すMQCFST構造体であることを示しています。

次の値を取ります。

MQCFT_STRING

文字列を定義する構造体

このフィールドの初期値はMQCFT_STRINGです。

MQDH構造体　−　配布ヘッダ

MQDH構造体は，次のフィールドから構成されます。

フィールド（データタイプ）

内容

初期値

StrucId（MQCHAR4型）

構造体識別子

MQDH_STRUC_ID

Version（MQLONG型）

構造体バージョン番号

MQDH_VERSION_1

StrucLength（MQLONG型）

構造体長

0

Encoding（MQLONG型）

MQPMR構造体の配列に続くデータのマシンコード形式

0

CodedCharSetId（MQLONG型）

MQPMR構造体の配列に続くデータの文字セット識別子

MQCCSI_UNDEFINED

Format（MQCHAR8型）

MQPMR構造体の配列に続くデータのフォーマット名

MQFMT_NONE

Flags（MQLONG型）

フラグ

MQDHF_NONE

PutMsgRecFields（MQLONG型）

MQPMR構造体フィールドの存在

MQPMRF_NONE

RecsPresent（MQLONG型）

オブジェクトレコード数

0

ObjectRecOffset（MQLONG型）

最初のオブジェクトレコードまでのオフセット

0

PutMsgRecOffset（MQLONG型）

最初の登録メッセージレコードまでのオフセット

0

概要

目的

MQDH構造体には，転送キューに存在する配布リストメッセージ中の，追加データを記述します。配布リストメッセージは，複数のあて先キューに送信されるメッセージです。追加データは，MQDH構造体，MQOR構造体の配列およびMQPMR構造体の配列の順序で構成されます。

この構造体は，転送キューに直接メッセージを登録したり，転送キューからメッセージを取り出したりする特別なアプリケーション（例：MCA）で使用されます。

MQDH構造体は，配布リストにメッセージを登録するだけの通常のアプリケーションで使用しないでください。通常のアプリケーションを使用する場合，配布リストのあて先を指定するにはMQOD構造体を使用してください。また，メッセージの属性や，それぞれのあて先に送信されたメッセージに関する情報を指定するには，MQPMO構造体を使用してください。

フォーマット名

MQFMT_DIST_HEADER

文字セットおよびマシンコード

MQDH構造体のデータは，ローカルキューマネジャの文字セットとマシンコードに従います。それぞれ，キューマネジャのCodedCharSetId属性およびMQENC_NATIVEオプションで指定します。

MQDH構造体の文字セットとマシンコードは，次に示す構造体のCodedCharSetIdおよびEncodingフィールドに指定します。

MQMD構造体（MQDH構造体がメッセージデータの先頭にある場合）

MQDH構造体に先行するヘッダ構造体（その他の場合）

使用方法

アプリケーションがメッセージを配布リストに登録する場合，その幾つかまたはすべてのあて先がリモートであるとき，キューマネジャはアプリケーションデータの前にMQXQH構造体とMQDH構造体を付けます。その後，対応する転送キューにそのメッセージを登録します。そのため，転送キューにあるメッセージのデータは次の順序となります。

MQXQH構造体

MQDH構造体，およびMQOR構造体とMQPMR構造体の配列

アプリケーションメッセージ

あて先によっては，そのようなメッセージが一つ以上，キューマネジャによって生成されて，異なる転送キューに登録されます。この場合，それらのメッセージのMQDH構造体は，アプリケーションがオープンした配布リストによって指定したあて先の中で異なる組み合わせを示します。

配布リストメッセージを直接転送キューに登録するアプリケーションは，上記の順序や，そのMQDH構造体が正しいことを保証しなければなりません。MQDH構造体が誤っている場合，キューマネジャは，MQPUT命令またはMQPUT1命令をMQRC_DH_ERRORの理由コードで失敗させることがあります。

メッセージは，キューが配布リストメッセージをサポートすると定義してある場合だけ，配布リスト形式でキューに登録されます。配布リストをサポートしていないキューに，アプリケーションが直接配布リストメッセージを登録した場合，キューマネジャは配布リストメッセージを個々のメッセージに分解し，キューに登録します。

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　CodedCharSetId（MQLONG型）　文字セット識別子

MQORおよびMQPMR構造体の配列に続くデータの文字セット識別子です。

MQORおよびMQPMR構造体の配列に続くデータの文字セット識別子を指定します。MQDH構造体自身の文字データには適用されません。

MQPUTまたはMQPUT1命令では，アプリケーションはデータに合った値をこのフィールドに設定する必要があります。

MQCCSI_INHERIT

この構造体の文字セット識別子を引き継ぎます。

この構造体に続くデータの文字データは，この構造体と同じ文字セットです。

メッセージで送信される構造体のこの値を，キューマネジャは構造体の実際の文字セット識別子に変更します。エラーが発生しない場合，MQGET命令ではMQCCSI_INHERITは返されません。

MQMD構造体のPutApplTypeフィールドの値がMQAT_BROKERの場合，MQCCSI_INHERITは使用できません。

このフィールドの初期値はMQCCSI_UNDEFINEDです。

●　Encoding（MQLONG型）　マシンコード形式

MQORおよびMQPMR構造体の配列に続くデータのマシンコード形式です。

MQORおよびMQPMR構造体の配列に続くデータのマシンコード形式を指定します。MQDH構造体自身の数値データには適用されません。

MQPUTまたはMQPUT1命令では，アプリケーションはデータに合った値をこのフィールドに設定する必要があります。

このフィールドの初期値は0です。

●　Flags（MQLONG型）　フラグ

次に示すフラグが指定できます。

MQDHF_NEW_MSG_IDS

新しいメッセージ識別子を生成します。

このフラグは，新しいメッセージ識別子が配布リストのあて先ごとに生成されることを示しています。登録メッセージレコードが存在しない場合，またはレコードは存在するがレコードにMQMD構造体のMsgIdフィールドが含まれない場合にだけ，フラグを指定できます。

このフラグを使用した場合，メッセージ記述子の生成は配布リストメッセージがおのおののメッセージに分割されるときまで延期されます。これによって，配布リストメッセージと伝達されなければならない制御情報を最小にできます。

アプリケーションが配布リストにメッセージを登録した場合，次に示す両方が成り立つときに，キューマネジャは生成したMQDH構造体にMQDHF_NEW_MSG_IDSを設定します。

アプリケーションによって生成された登録メッセージレコードが存在しない場合，または生成されたレコードにMsgIdフィールドが含まれない場合

MQMD構造体のMsgIdフィールドがMQMI_NONEである場合，またはMQPMO構造体のOptionsフィールドにMQPMO_NEW_MSG_IDが指定されている場合

フラグが必要ない場合は，次の指定ができます。

MQDHF_NONE

フラグなし。

この定数は，フラグが指定されなかったことを示しています。

MQDHF_NONEはプログラムの文書化のために定義されています。値としては0が定義されていますが，プログラムを文書化する以外の目的はありません。

このフィールドの初期値はMQDHF_NONEです。

●　Format（MQCHAR8型）　フォーマット名

MQORおよびMQPMR構造体の配列に続くデータのフォーマット名です。

MQORおよびMQPMR構造体の配列に続くデータのフォーマット名を指定します。どちらが最後になるかは関係しません。

MQPUTまたはMQPUT1命令では，アプリケーションはデータに合った値をこのフィールドに設定する必要があります。このフィールドの設定規則はMQMD構造体のFormatフィールドと同じです。

このフィールドの初期値はMQFMT_NONEです。

●　ObjectRecOffset（MQLONG型）　最初のオブジェクトレコードまでのオフセット

あて先キューの名称を含む，MQOR構造体オブジェクトレコード配列にある最初のレコードのバイト位置を示します。この配列にRecsPresentフィールドのレコードがあります。これらのレコード（最初のオブジェクトレコードとその前のフィールドの間とのスキップされたバイトを加えて）は，StrucLengthフィールドの長さに含まれます。

配布リストは少なくとも一つのあて先を持つ必要があり，ObjectRecOffsetフィールドは常に0より大きくなければなりません。

このフィールドの初期値は0です。

●　PutMsgRecFields（MQLONG型）　MQPMR構造体フィールドの存在

0または次に示すフラグが指定できます。

MQPMRF_MSG_ID

メッセージ記述子フィールドが存在します。

MQPMRF_CORREL_ID

相関識別子フィールドが存在します。

MQPMRF_GROUP_ID

グループ識別子フィールドが存在します。

MQPMRF_FEEDBACK

フィードバックフィールドが存在します。

MQPMRF_ACCOUNTING_TOKEN

課金トークンフィールドが存在します。

MQPMR構造体フィールドが存在しない場合，次のフラグが指定できます。

MQPMRF_NONE

登録メッセージレコードが存在しません。

MQPMRF_NONEはプログラムの文書化のために定義されています。値としては0が定義されていますが，プログラムを文書化する以外の目的はありません。

このフィールドの初期値はMQPMRF_NONEです。

●　PutMsgRecOffset（MQLONG型）　最初のMQPMR構造体までのオフセット

メッセージ属性を含む，MQPMR登録メッセージレコード配列にある最初のレコードのバイト位置を示します。存在する場合は，この配列にRecsPresentフィールドのレコードがあります。

これらのレコード（最初のオブジェクトレコードとその前のフィールドの間とのスキップされたバイトを加えたレコード）は，StrucLengthフィールドの長さに含まれます。

登録メッセージレコードはオプションです。レコードがない場合，PutMsgRecOffsetフィールドは0となります。なお，PutMsgRecFieldsフィールドはMQPMRF_NONEの値になります。

このフィールドの初期値は0です。

●　RecsPresent（MQLONG型）　MQOR構造体の数

あて先の数を定義します。配布リストは必ず最低一つのあて先を含まなければなりません。したがって，RecsPresentフィールドは常に0より大きくなければなりません。

このフィールドの初期値は0です。

●　StrucId（MQCHAR4型）　構造体識別子

次の値を取ります。

MQDH_STRUC_ID

配布ヘッダ構造体の識別子

C言語では，MQDH_STRUC_ID_ARRAY定数も定義されています。これは，MQDH_STRUC_IDと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

このフィールドの初期値はMQDH_STRUC_IDです。

●　StrucLength（MQLONG型）　MQDH構造体とそれに続くMQOR構造体およびMQPMR構造体を足した長さ

MQDH構造体長とそれに続くレコードを足した長さです。

これは，MQDH構造体の先頭から，MQOR構造体，またはMQPMR構造体レコードの配列に続くメッセージデータの先頭までのバイト数です。データは次の順序で現れます。

MQDH構造体

MQORレコードの配列

MQPMRレコードの配列

メッセージデータ

MQOR構造体，MQPMR構造体レコードの配列は，MQDH構造体に含まれるオフセット値によって位置づけられます。それらのオフセットが，MQDH構造体およびレコードの配列とメッセージデータの間に使用されないバイトを生じさせた場合，使用されないバイト数もStrucLengthフィールドの値に含まれなければなりません。ただし，使用されないバイトの内容を，キューマネジャは保存しません。なお，MQPMR構造体のレコードの配列は，MQOR構造体にあるレコードの配列の前にあるとき有効です。

このフィールドの初期値は0です。

●　Version（MQLONG型）　構造体バージョン番号

次の値を取ります。

MQDH_VERSION_1

配布ヘッダの構造体バージョン番号

次の値は，現在のバージョンのバージョン番号を示します。

MQDH_CURRENT_VERSION

配布ヘッダ構造体の現在のバージョン

このフィールドの初期値はMQDH_VERSION_1です。

MQDLH構造体　−　デッドレターヘッダ

MQDLH構造体は，次のフィールドから構成されます。

フィールド（データタイプ）

内容

初期値

StrucId（MQCHAR4型）

構造体識別子

MQDLH_STRUC_ID

Version（MQLONG型）

構造体バージョン番号

MQDLH_VERSION_1

Reason（MQLONG型）

メッセージ通知理由

MQRC_NONE

DestQName（MQCHAR48型）

あて先キュー名

ヌル文字列/空白

DestQMgrName（MQCHAR48型）

あて先キューマネジャ名

ヌル文字列/空白

Encoding（MQLONG型）

MQDLH構造体に続くデータのマシンコード形式

0

CodedCharSetId（MQLONG型）

MQDLH構造体に続くデータの文字セット識別子

MQCCSI_UNDEFINED

Format（MQCHAR8型）

MQDLH構造体に続くデータのフォーマット名

MQFMT_NONE

PutApplType（MQLONG型）

登録アプリケーションタイプ

0

PutApplName（MQCHAR28型）

登録アプリケーション名

ヌル文字列/空白

PutDate（MQCHAR8型）

登録日付

ヌル文字列/空白

PutTime（MQCHAR8型）

登録時刻

ヌル文字列/空白

概要

目的

MQDLH構造体には，デッドレターキューに格納されるメッセージのアプリケーションデータの先頭に付けられる情報を記述します。デッドレターキューにメッセージが届くのは，次のどちらかの場合です。

キューマネジャまたはMCAが，デッドレターキューにメッセージを転送した場合

アプリケーションが直接，デッドレターキューにメッセージを登録した場合

セグメントであるメッセージが，MQDLH構造体を先頭に付けて登録される場合，キューマネジャは特別な処理をします。詳細については，この章の「MQMDE構造体　−　メッセージ記述子の拡張」を参照してください。

フォーマット名

MQFMT_DEAD_LETTER_HEADER

文字セットおよびマシンコード

MQDLH構造体のフィールドは，MQDLH構造体の前にあるヘッダ構造体のCodedCharSetIdおよびEncodingフィールドの文字セットおよびマシンコードに従います。また，MQDLH構造体がアプリケーションメッセージデータの先頭にある場合，MQMD構造体のCodedCharSetIdおよびEncodingフィールドに従います。

文字セットは，キュー名に有効な1バイト文字セットにする必要があります。

使用方法

アプリケーションが直接デッドレターキューにメッセージを登録する場合，メッセージデータの先頭にMQDLH構造体を付ける必要があります。また，構造体の各フィールドを適切に初期化してください。MQDLH構造体を付けたかどうか，および各フィールドの値が正しいかどうかは，キューマネジャによってチェックされません。

デッドレターキューに登録するメッセージが長過ぎる場合，アプリケーションは次のどれかの処置をしてください。

デッドレターキューに登録できるように，メッセージの後部を切り捨てます。

補助記憶装置にメッセージを格納し，その旨を示す例外報告メッセージをデッドレターキューに登録します。

メッセージを破棄し，登録元アプリケーションにエラーを通知します。重要なメッセージの場合は，メッセージを破棄するときに注意が必要です。この場合，登録元アプリケーションがメッセージの複製を保持していると判明しているときだけ，破棄してください。例えば，MCAによって通信回線から受け取ったメッセージの場合などです。

上記のどの方法を採用するかは，アプリケーションの設計方法によって異なります。

セグメントであるメッセージがMQDLH構造体を先頭にして登録されたとき，キューマネジャは特別な処理をします。詳細については，この章の「MQMDE構造体　−　メッセージ記述子の拡張」を参照してください。

デッドレターキューへのメッセージの登録

メッセージをデッドレターキューへ登録するとき，MQPUTまたはMQPUT1命令に使用するMQMD構造体は，そのメッセージに関連するMQMD構造体と同一にする必要があります（通常は，MQGET命令によって返されるMQMD構造体です）。ただし，次の例外があります。

CodedCharSetIdフィールドとEncodingフィールドには，MQDLH構造体の各フィールドで使用する値を設定します。

Formatフィールドには，MQFMT_DEAD_LETTER_HEADERを設定します。この値は，MQDLH構造体でデータが始まることを示します。

次に示すコンテキストフィールドには，状況に合ったコンテキストオプションを使用して設定します。

UserIdentifier

AccountingToken

ApplIdentityData

PutApplType

PutApplName

PutDate

PutTime

ApplOriginData

デッドレターキューに登録するメッセージがそれ以前のメッセージと無関係の場合，MQPMO_DEFAULT_CONTEXTオプションを使用します。このオプションを使用すると，すべてのコンテキストフィールドに省略時の値が設定されます。

サーバアプリケーションが受信したメッセージをデッドレターキューに登録する場合，元のコンテキスト情報を保存するために，MQPMO_PASS_ALL_CONTEXTオプションを使用します。

サーバアプリケーションが受信したメッセージに対する応答をデッドレターキューに登録する場合，MQPMO_PASS_IDENTITY_CONTEXTオプションを使用します。このオプションを使用すると，識別コンテキストの情報は保存されます。しかし，登録元コンテキストの情報は，サーバアプリケーションのコンテキスト情報に変更されます。

MCAが通信回線から受け取ったメッセージをデッドレターキューに登録する場合，元のコンテキスト情報を保存するためにMQPMO_SET_ALL_CONTEXTオプションを使用します。

MQDLH構造体中の各フィールドは，次のように設定してください。

CodedCharSetIdフィールド，EncodingフィールドおよびFormatフィールドには，MQDLH構造体に続くデータに応じた値を設定します。通常は，登録元のメッセージ記述子の値を設定します。

次に示すコンテキストフィールドには，デッドレターキューにメッセージを登録するアプリケーションに応じた値を設定します。これらの値は，登録元メッセージとは関係ありません。

PutApplType

PutApplName

PutDate

PutTime

そのほかのフィールドには，適切な値を設定します。

アプリケーションは，各フィールドの値が適切かどうか，および文字フィールドの余りが空白で埋められているかどうかを確認する必要があります。MQDLH構造体中の文字データは，ヌル文字で終了できません。キューマネジャは，MQDLH構造体のヌル文字以降の文字を，空白に置き換えません。

デッドレターキューからのメッセージの取り出し

アプリケーションは，デッドレターキューから取り出したメッセージが，MQDLH構造体で始まっているかどうかを確認する必要があります。メッセージ記述子MQMD構造体のFormatフィールドを調べることで，それを確認できます。FormatフィールドがMQFMT_DEAD_LETTER_HEADERの場合，メッセージデータがMQDLH構造体で始まっていると判断できます。なお，メッセージを取り出すアプリケーションは，メッセージが長過ぎて後部が切り捨てられた場合があることに注意してください。

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　CodedCharSetId（MQLONG型）　文字セット識別子

MQDLH構造体に続くデータの文字セット識別子です。

MQDLH構造体に続くデータ（通常は，元のメッセージから取られたデータ）の文字セット識別子を指定します。MQDLH構造体自身の文字データには適用されません。

MQPUTまたはMQPUT1命令では，アプリケーションはデータに合った値をこのフィールドに設定する必要があります。

MQCCSI_INHERIT

この構造体の文字セット識別子を引き継ぎます。

この構造体に続くデータの文字データは，この構造体と同じ文字セットです。

メッセージで送信される構造体のこの値を，キューマネジャは構造体の実際の文字セット識別子に変更します。エラーが発生しない場合，MQGET命令ではMQCCSI_INHERITは返されません。

MQMD構造体のPutApplTypeフィールドの値がMQAT_BROKERの場合，MQCCSI_INHERITは使用できません。

このフィールドの初期値はMQCCSI_UNDEFINEDです。

●　DestQMgrName（MQCHAR48型）　あて先キューマネジャ名

登録元メッセージのあて先であるキューマネジャの名称です。

このフィールドの長さは，MQ_Q_MGR_NAME_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，48個の空白です。

●　DestQName（MQCHAR48型）　あて先キュー名

登録元メッセージのあて先キューの名称です。

このフィールドの長さは，MQ_Q_NAME_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，48個の空白です。

●　Encoding（MQLONG型）　マシンコード形式

MQDLH構造体に続くデータのマシンコード形式です。

MQDLH構造体に続くデータ（通常は，元のメッセージから取られたデータ）のマシンコード形式を指定します。MQDLH構造体自身の数値データには適用されません。

MQPUTおよびMQPUT1命令では，アプリケーションはデータに合った値をこのフィールドに設定する必要があります。

このフィールドの初期値は0です。

●　Format（MQCHAR8型）　フォーマット名

MQDLH構造体に続くデータのフォーマット名です。

MQDLH構造体に続くデータ（通常は元のメッセージから取られたデータ）のフォーマット名を指定します。

MQPUTおよびMQPUT1命令では，アプリケーションはデータに合った値をこのフィールドに設定する必要があります。このフィールドの設定方法はMQMD構造体のFormatフィールドと同じです。

このフィールドの長さは，MQ_FORMAT_LENGTHに定義されています。

このフィールドの初期値はMQFMT_NONEです。

●　PutApplName（MQCHAR28型）　登録アプリケーション名

メッセージをデッドレターキューに登録するアプリケーションの名称です。

名称の形式は，PutApplTypeフィールドの値に合わせます。この章の「MQMD構造体　−　メッセージ記述子」でPutApplNameフィールドの説明を参照してください。

キューマネジャがデッドレターキューにメッセージを転送する場合，PutApplNameフィールドの値はキューマネジャ名の先頭から28文字までです。キューマネジャは，必要に応じて余りを空白で埋めます。

このフィールドの長さは，MQ_PUT_APPL_NAME_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，28個の空白です。

●　PutApplType（MQLONG型）　登録アプリケーションタイプ

メッセージをデッドレターキューに登録するアプリケーションのタイプです。

このフィールドの意味は，メッセージ記述子MQMD構造体のPutApplTypeフィールドと同じです。

キューマネジャがデッドレターキューにメッセージを転送する場合，PutApplTypeフィールドの値はMQAT_QMGRです。

このフィールドの初期値は0です。

●　PutDate（MQCHAR8型）　登録日付

メッセージがデッドレターキューに転送された日付です。

キューマネジャは次の形式を使用します。

YYYYMMDD

YYYY：年（4けたの10進数）

MM：月（01〜12の10進数）

DD：日（01〜31の10進数）

PutDateフィールドとPutTimeフィールドには，グリニッジ標準時（GMT）を使用します。システムの時計を正しく設定してください。

このフィールドの長さは，MQ_PUT_DATE_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，8個の空白です。

●　PutTime（MQCHAR8型）　登録時刻

メッセージがデッドレターキューに転送された時刻です。

キューマネジャは次の形式を使用します。

HHMMSSTH

HH：時（00〜23の10進数）

MM：分（00〜59の10進数）

SS：秒（00〜59の10進数）

T：1/10秒 （0〜9の10進数）

H：1/100秒（0〜9の10進数）

PutDateフィールドとPutTimeフィールドには，グリニッジ標準時（GMT）を使用します。システムの時計を正しく設定してください。

このフィールドの長さは，MQ_PUT_TIME_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，8個の空白です。

●　Reason（MQLONG型）　メッセージ通知理由

メッセージがデッドレターキューに届いた理由を示します。MQFB_*，またはMQRC_*のどちらか（例：MQRC_Q_FULL）で示されます。

MQFB_*の中には，このフィールドでだけ使用されるものがあります。それらの値は，デッドレターキューへ転送されるトリガメッセージに関するものです。

MQFB_APPL_CANNOT_BE_STARTED

アプリケーションを開始できませんでした。

トリガモニタアプリケーションが，トリガメッセージのApplIdフィールドに指定されたアプリケーションを起動できませんでした。詳細は，この章の「MQTM構造体　−　トリガメッセージ」を参照してください。

MQFB_TM_ERROR

トリガメッセージが不正です。

トリガモニタアプリケーションが，MQTM構造体で次のどれかの不正を発見しました。

StrucIdフィールドが不正です。

Versionフィールドを認識できません。

トリガメッセージ長がMQTM構造体に対して不十分です。

MQFB_APPL_TYPE_ERROR

アプリケーションタイプが不正です。

トリガメッセージのApplTypeフィールドが不正のため，アプリケーションを起動できませんでした。詳細は，この章の「MQTM構造体　−　トリガメッセージ」を参照してください。

MQFB_BIND_OPEN_CLUSRCVR_DEL

クラスタレシーバチャネルが削除されました。

MQOO_BIND_ON_OPENオプションでオープンされたクラスタキューあてのメッセージがSYSTEM.CLUSTER.TRANSMIT.QUEUEにありました。しかし，メッセージが送信される前に，あて先キューにメッセージを転送するために使用するリモートのクラスタレシーバチャネルが削除されました。MQOO_BIND_ON_OPENが指定されたので，キューがオープンされたときに選択されたチャネルだけがメッセージを転送できます。このチャネルが使用不能なので，メッセージはデッドレターキューに登録されました。

MQFB_NOT_A_REPOSITORY_MSG

メッセージはリポジトリメッセージではありません。

MQFB_STOPPED_BY_CHAD_EXIT

メッセージがチャネル自動定義出口によって停止されました。

MQFB_XMIT_Q_MSG_ERROR

転送キュー上のメッセージのフォーマットが不正です。

転送キュー上のメッセージのフォーマット不正を，MCAが発見しました。MCAは，このフィードバックコードを使用して，メッセージをデッドレターキューに登録します。

このフィールドの初期値はMQRC_NONEです。

●　StrucId（MQCHAR4型）　構造体識別子

次の値を取ります。

MQDLH_STRUC_ID

デッドレターヘッダの構造体識別子

C言語では，MQDLH_STRUC_ID_ARRAYも定義されています。これは，MQDLH_STRUC_IDと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

このフィールドの初期値はMQDLH_STRUC_IDです。

●　Version（MQLONG型）　構造体バージョン番号

次の値を取ります。

MQDLH_VERSION_1

デッドレターヘッダの構造体バージョン番号

次の値には現在のバージョン番号を指定します。

MQDLH_CURRENT_VERSION

デッドレターヘッダの現在の構造体バージョン番号

このフィールドの初期値はMQDLH_VERSION_1です。

MQGMO構造体　−　メッセージ取り出しオプション

MQGMO構造体は，MQGET命令で使用する入出力用の引数です。次のフィールドから構成されます。

フィールド（データタイプ）

内容

初期値

StrucId（MQCHAR4型）

構造体識別子

MQGMO_STRUC_ID

Version（MQLONG型）

構造体バージョン番号

MQGMO_VERSION_1

Options（MQLONG型）

取り出しオプション

MQGMO_NO_WAIT

WaitInterval（MQLONG型）

待ち合わせ最大時間

0

Signal1（MQLONG型）

シグナル

0

Signal2（MQLONG型）

（予備）

0

ResolvedQName（MQCHAR48型）

受信キュー名

ヌル文字列/空白

MatchOptions（MQLONG型）※

一致オプション

MQMO_MATCH_CORREL_ID，MQMO_MATCH_MSG_ID

GroupStatus（MQCHAR型）※

メッセージグループフラグ

MQGS_NOT_IN_GROUP

SegmentStatus（MQCHAR型）※

論理メッセージフラグ

MQSS_NOT_A_SEGMENT

Segmentation（MQCHAR型）※

セグメント分割フラグ

MQSEG_INHIBITED

Reserved1（MQCHAR型）※

（予備）

空白

注※

Versionフィールドの値がMQGMO_VERSION_2以降の場合だけ存在するフィールドです。

概要

目的

MQGMO構造体を使用すれば，キューからのメッセージの取り出し方法を制御するオプションをアプリケーションで指定できます。この構造体は，MQGET命令の入出力用の引数です。

バージョン

MQGMO構造体のバージョンには1および2があります。しかし，すべての環境でMQGMO_VERSION_2がサポートされているわけではありません。複数の環境にアプリケーションを移植する場合は，使用するバージョンのMQGMO構造体が，すべての環境でサポートされている必要があります。MQGMO_VERSION_2以降の構造体にだけ存在するフィールドについては，そのことをフィールドの説明に記載しています。

サポートするプログラミング言語のCOPYファイルとINCLUDEファイルでは，最新バージョンのMQGMO構造体が提供されます。しかし，Versionフィールドの初期値はMQGMO_VERSION_1です。バージョン1の構造体にないフィールドを使用する場合は，アプリケーションで使用したいバージョンの番号をVersionフィールドに設定してください。

文字セットおよびマシンコード

MQGMO構造体のデータは，ローカルキューマネジャの文字セットおよびマシンコードに従います。それぞれ，キューマネジャのCodedCharSetId属性およびMQENC_NATIVEで指定します。TP1/Message Queue Accessのクライアントアプリケーションの場合，MQGMO構造体はクライアントの文字セットとマシンコードに従います。

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　GroupStatus（MQCHAR型）　メッセージグループフラグ

取り出されたメッセージがグループに属するかどうかを示すフラグです。

次の値を取ります。

MQGS_NOT_IN_GROUP

メッセージはグループに属しません。

MQGS_MSG_IN_GROUP

メッセージはグループに属しますが，グループの最終メッセージではありません。

MQGS_LAST_MSG_IN_GROUP

メッセージはグループの最終メッセージです。

これは，グループがただ一つのメッセージで構成されている場合にも返される値です。

これは出力用のフィールドです。

このフィールドの初期値はMQGS_NOT_IN_GROUPです。

このフィールドは，Versionフィールドの値がMQGMO_VERSION_2以降の場合だけ有効です。

●　MatchOptions（MQLONG型）　一致オプション

アプリケーションがMQGET命令で返されるメッセージを選択するのに使用するMsgDesc引数のどのフィールドを選ぶかを指定できます。アプリケーションはこのフィールドに必要なオプションを設定し，MsgDesc引数の対応するフィールドに要求する値を設定します。MQMD構造体の値を持つメッセージだけ，MQGET命令でMsgDesc引数を使用して取り出される可能性があります。対応する一致オプションが指定されないフィールドは，返すメッセージを選ぶときに無視されます。MQGET命令でメッセージを選択しないで，どんなメッセージも受け入れられる場合，MatchOptionsフィールドにはMQMO_NONEが設定されなければなりません。

MQGMO_LOGICAL_ORDERが指定された場合，特定のメッセージだけが次のMQGET命令で返す対象となります。

現在のグループまたは現在の論理メッセージがない場合，MsgSeqNumberフィールドが1で，かつOffsetフィールドが0のメッセージだけが返す対象となります。この場合，実際に返されるメッセージを選択するには，次に示す一致オプションのうち，一つ以上のオプションを使用できます。

MQMO_MATCH_MSG_ID

MQMO_MATCH_CORREL_ID

MQMO_MATCH_GROUP_ID

現在のグループまたは現在の論理メッセージがある場合，そのグループの次のメッセージ，またはその論理メッセージの次のセグメントだけが返されます。これは，MQMO_*オプションを指定しても変更できません。

上記の条件が両方とも該当する場合も，ほかの一致オプションを指定できます。ただし，MsgDesc引数の対応するフィールドの値は，返す必要があるメッセージのフィールドの値と一致しなければなりません。この条件が満たされない場合は，MQRC_MATCH_OPTIONS_ERRORとなり失敗します。

MQGMO_MSG_UNDER_CURSOR，またはMQGMO_BROWSE_MSG_UNDER_CURSORが指定された場合，MatchOptionsフィールドは無視されます。

次に示す一致オプションを，一つ以上指定できます。

MQMO_MATCH_MSG_ID

指定されたメッセージ識別子のメッセージを取り出します。

取り出されるメッセージは，MQGET命令のMsgDesc引数のMsgIdフィールドの値と一致するメッセージ識別子を持つ必要があることを指定します。

このオプションは，適用できるほかの一致オプション（例：相関識別子）と同時に使用できます。

このオプションが指定されない場合，MsgDesc引数のMsgIdフィールドは無視され，どんなメッセージ識別子とも一致します。

注意事項

メッセージ識別子MQMI_NONEは，MQMD構造体のどんなメッセージ識別子とも一致する特別な値です。そのため，MQMI_NONEと一緒にMQMO_MATCH_MSG_IDを指定しても意味がありません。

MQMO_MATCH_CORREL_ID

指定された相関識別子のメッセージを取り出します。

取り出されるメッセージは，MQGET命令のMsgDesc引数のCorrelIdフィールドの値と一致する相関識別子を持つ必要があることを指定します。このオプションは，適用できるほかの一致オプション（例：メッセージ識別子）と同時に使用できます。

このオプションが指定されない場合は，MsgDesc引数のCorrelIdフィールドは無視され，どんな相関識別子とも一致します。

注意事項

相関識別子MQCI_NONEは，MQMD構造体のどんな相関識別子とも一致する特別な値です。そのため，MQCI_NONEと一緒にMQMO_MATCH_CORREL_IDを指定しても意味がありません。

MQMO_MATCH_GROUP_ID

指定されたグループ識別子のメッセージを取り出します。

取り出されるメッセージは，MQGET命令のMsgDesc引数のGroupIdフィールドの値と一致するグループ識別子を持つ必要があることを指定します。このオプションは，適用できるほかの一致オプション（例：相関識別子）と同時に使用できます。

このオプションが指定されない場合，MsgDesc引数のGroupIdフィールドは無視され，どんなグループ識別子とも一致します。

注意事項

グループ識別子MQGI_NONEは，MQMD構造体のどんなグループ識別子とも一致する特別な値です。そのため，MQGI_NONEと一緒にMQMO_MATCH_GROUP_IDを指定しても意味がありません。

MQMO_MATCH_MSG_SEQ_NUMBER

指定されたメッセージシーケンス番号のメッセージを取り出します。

取り出されるメッセージが，MQGET命令のMsgDesc引数のMsgSeqNumberフィールドの値と一致するメッセージシーケンス番号を持つ必要があることを指定します。このオプションは，適用できるほかの一致オプション（例：グループ識別子）と同時に指定できます。

このオプションが指定されない場合，MsgDesc引数のMsgSeqNumberフィールドは無視され，どんなメッセージシーケンス番号とも一致します。

MQMO_MATCH_OFFSET

指定されたオフセットのメッセージを取り出します。

取り出されるメッセージは，MQGET命令のMsgDesc引数のOffsetフィールドの値と一致するオフセットを持つ必要があることを指定します。このオプションは，適用できるほかの一致オプション（例：メッセージシーケンス番号）と同時に使用できます。

このオプションが指定されない場合，MsgDesc引数のMsgSeqNumberフィールドは無視され，どんなオフセットとも一致します。

上記のオプションがどれも指定されなかった場合，次のオプションが指定できます。

MQMO_NONE

一致指定なし。

返されるメッセージを選択するときに，一致指定を使用しないことを指定します。したがって，キューに存在するすべてのメッセージが，取り出し対象となります。ただし，MQGMO_ALL_MSGS_AVAILABLEオプション，MQGMO_ALL_SEGMENTS_AVAILABLEオプション，およびMQGMO_COMPLETE_MSGオプションによって制御できます。MQMO_NONEはプログラムの文書化のために定義されています。ほかのMQMO_*オプションと組み合わせて使用するオプションではありません。値は0なので，これ以外の用途では使用できません。

これは入力用のフィールドです。

このフィールドの初期値はMQMO_MATCH_CORREL_IDとMQMO_MATCH_MSG_IDです。

このフィールドは，Versionフィールドの値がMQGMO_VERSION_2以降の場合だけ有効です。

注意事項

MatchOptionsフィールドの初期値は，以前のキューマネジャと互換性を保つために定義されています。ただし，選択基準なしでキューから一連のメッセージを取り出すときは，アプリケーションは，MQGET命令が実行される前にMsgIdフィールドとCorrelIdフィールドを，MQMI_NONEとMQCI_NONEにリセットする必要があります。ただし，VersionフィールドにMQGMO_VERSION_2を，MatchOptionsフィールドにMQMO_NONEを設定すれば，MsgIdフィールドとCorrelIdフィールドをリセットする必要はありません。

●　Options（MQLONG型）　取り出しオプション

MQGET命令の動作を制御します。

指定できるオプションを説明します。なお，指定しなくてもかまいません。二つ以上を指定する場合は，次のどちらかに従ってください。

それぞれを加算します。ただし，同じ値は2回以上加算しないでください。

プログラミング言語がビット演算をサポートしている場合に，それぞれのビット論理和を取ります。

同時に指定できない組み合わせは，そのつど示します。それ以外の組み合わせは自由です。オプションおよびその指定方法の一覧については，「付録A　命令および引数の一覧」を参照してください。

待ち合わせオプション：

メッセージがキューに到着するまでの待ち合わせに関連するオプションを次に示します。

MQGMO_WAIT

該当するメッセージの到着を待ちます。

アプリケーションは，該当するメッセージが到着するまで待ちます。アプリケーションの待ち合わせ最大時間は，WaitIntervalフィールドに指定します。

取り出しが禁止されている場合，または待ち合わせの間に禁止された場合は，メッセージの待ち合わせは取り消されます。このとき，完了コードMQCC_FAILED，理由コードMQRC_GET_INHIBITEDで命令は終了します。該当するメッセージがキューにあるかどうかは，関係ありません。

このオプションは，MQGMO_BROWSE_FIRSTオプションまたはMQGMO_BROWSE_NEXTオプションと同時に使用できます。

複数のアプリケーションが同じキューで待ち合わせをしている場合，該当するメッセージが到着したときの動作は，次のようになります。なお，ここでは，検索オプションを指定してMQGMO_LOCKオプションを指定しないものを，検索MQGET命令と呼びます。MQGMO_LOCKを指定したものは，非検索MQGET命令として扱われます。

一つ以上の非検索MQGET命令が待ち合わせをしているが，検索MQGET命令は待ち合わせをしていない場合，一つの命令がメッセージを取り出せます。

一つ以上の検索MQGET命令が待ち合わせをしているが，非検索MQGET命令は待ち合わせをしていない場合，すべての命令がメッセージを検索できます。

一つ以上の非検索MQGET命令と一つ以上の検索MQGET命令が待ち合わせをしている場合，一つの非検索MQGET命令だけがメッセージを取り出せます。同時に，幾つか（すべての場合もあるし，まったくない場合もある）の検索MQGET命令がメッセージを検索できます。なお，検索MQGET命令が実行できる数は，オペレーティングシステムのスケジュール管理やほかの要素に左右されます。

一つ以上の非検索MQGET命令が同じキューについて待ち合わせをしている場合，一つの命令だけがメッセージを取り出せます。このときキューマネジャは，次のように優先順位を付けます。

指定付きメッセージの待ち合わせ

この場合は，指定に該当するメッセージだけが対象になります（例：指定したMsgIdまたはCorrelIdのどちらかの場合，またはその両方を満たすメッセージの場合）。

一般のメッセージの待ち合わせ

この場合は，すべてのメッセージが対象になります。

また，次のことに注意してください。

1の指定付きメッセージの待ち合わせでは，それよりほかの優先度を付け加えることはできません。

1，2の各優先順位内では，どのアプリケーションが選択されるか確定していません。特に，最も長く待ち合わせをしているアプリケーションが選択されるとは限りません。

パスの長さ，およびオペレーティングシステムのスケジュール管理が影響するため，オペレーティングシステムのプロセス実行優先度の低いアプリケーションが，先にメッセージを取り出せることがあります。

上記の理由のため，待ち合わせをしていないアプリケーションがメッセージを取り出せることがあります。

MQGMO_WAITオプションと次に示すオプションを同時に指定した場合，MQGMO_WAITは無視されますが，エラーにはなりません。

MQGMO_BROWSE_MSG_UNDER_CURSOR

MQGMO_MSG_UNDER_CURSOR

MQGMO_NO_WAIT

該当するメッセージがない場合，即時に制御を返します。

該当するメッセージがない場合，アプリケーションは待ち合わせをしません。これはMQGMO_WAITオプションの反対で，プログラムのコーディングをわかりやすくするために定義されています。どちらも指定しなかった場合，この値が仮定されます。

MQGMO_NO_WAITオプションとMQGMO_WAITオプションを同時に指定した場合，MQGMO_NO_WAITは無視されますが，エラーにはなりません。

MQGMO_FAIL_IF_QUIESCING

TP1/Message Queueでは意味がありません。

このオプションを指定しても，TP1/Message Queueの動作には影響しません。これは，アプリケーションの移植性を向上させるために定義されています。

同期点オプション：

MQGET命令のトランザクションへの参加に関連するオプションを次に示します。

MQGMO_SYNCPOINT

同期点でメッセージを取り出します。

通常のトランザクションの範囲内で取り出します。取り出したメッセージは，ほかのアプリケーションから使用できなくなります。ただし，キューから削除されるのは，トランザクションがコミットしたときだけです。トランザクションがロールバックすると，ほかのアプリケーションから使用できるようになります。

このオプションは，ローカルキューマネジャが同期点処理をサポートしている場合だけ指定できます。同期点処理をサポートしていないキューマネジャでMQGMO_SYNCPOINTを指定した場合，完了コードMQCC_FAILED，理由コードMQRC_SYNCPOINT_NOT_AVAILABLEで命令は終了します。同期点の取得とトランザクションについては，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

このオプションとMQGMO_NO_SYNCPOINTオプションのどちらも指定しなかった場合，取り出し命令がトランザクション内に含められるかどうかは，環境に依存します。TP1/Message Queueでは，この命令をトランザクション内から呼び出したかどうかで，省略時にトランザクション内に含められるかどうかが決まります。省略時の動作が環境によって異なるため，移植を考慮するアプリケーションでは，オプションを省略しないでください。つまり，MQGMO_SYNCPOINTオプションかMQGMO_NO_SYNCPOINTオプションのどちらかを，明確に指定してください。

次に示すオプションは，MQGMO_SYNCPOINTオプションと同時に指定できません。

MQGMO_BROWSE_FIRST

MQGMO_BROWSE_MSG_UNDER_CURSOR

MQGMO_BROWSE_NEXT

MQGMO_LOCK

MQGMO_NO_SYNCPOINT

MQGMO_SYNCPOINT_IF_PERSISTENT

MQGMO_UNLOCK

MQGMO_NO_SYNCPOINT

同期点の処理なしでメッセージを取り出します。

通常のトランザクションの範囲外で取り出します。検索要求の場合を除いて，メッセージは取り出し直後にキューから削除されます。トランザクションがロールバックしても，メッセージは再び有効になりません。

このオプションは，MQGMO_BROWSE_FIRST，またはMQGMO_BROWSE_NEXTオプションを指定した場合を想定しています。

このオプションとMQGMO_SYNCPOINTオプションのどちらも指定しなかった場合，取り出し命令がトランザクション内に含められるかどうかは，環境に依存します。TP1/Message Queueでは，この命令をトランザクション内から呼び出したかどうかで，省略時にトランザクション内に含められるかどうかが決まります。省略時の動作が環境によって異なるため，移植を考慮するアプリケーションでは，オプションを省略しないでください。つまり，MQGMO_SYNCPOINTオプションかMQGMO_NO_SYNCPOINTオプションのどちらかを，明確に指定してください。

次に示すオプションは，MQGMO_NO_SYNCPOINTオプションと同時に指定できません。

MQGMO_SYNCPOINT

MQGMO_SYNCPOINT_IF_PERSISTENT

同期点のオプションとキューマネジャのSyncPoint属性の関係を，次の表に示します。

キューマネジャの

SyncPoint属性

MQGET命令の

呼び出し位置

MQGET命令の同期点のオプション

MQGMO_

SYNCPOINT

MQGMO_NO_

SYNCPOINT

省略

MQSP_AVAILABLE

トランザクション内

1

2

1

トランザクション外

×

2

2

MQSP_NOT_AVAILABLE

トランザクション内

×

2

×

トランザクション外

×

2

2

（凡例）

1：命令はトランザクション内に含まれます。

2：命令はトランザクション内に含まれません。

×：命令は理由コードMQRC_SYNCPOINT_NOT_AVAILABLEで失敗します。

MQGMO_SYNCPOINT_IF_PERSISTENT

取り出すメッセージが永続メッセージの場合，キューマネジャはアプリケーションでMQGMO_SYNCPOINTが指定されている場合と同じように取り出し処理を実行します。

取り出すメッセージが非永続メッセージの場合，キューマネジャはアプリケーションでMQGMO_NO_SYNCPOINTが指定されている場合と同じように取り出し処理を実行します。

次に示すオプションは，MQGMO_SYNCPOINT_IF_PERSISTENTオプションと同時に指定できません。

MQGMO_BROWSE_FIRST

MQGMO_BROWSE_MSG_UNDER_CURSOR

MQGMO_BROWSE_NEXT

MQGMO_COMPLETE_MSG

MQGMO_NO_SYNCPOINT

MQGMO_SYNCPOINT

MQGMO_UNLOCK

MQGMO_LOCK

検索オプション：

キューからのメッセージ検索に関連するオプションを次に示します。

MQGMO_BROWSE_FIRST

キューの先頭から検索します。

MQOO_BROWSEオプションでキューをオープンした場合，検索カーソルが生成されます。検索カーソルは，キューの最初のメッセージを論理的に指します。以降のMQGET命令では，MQGMO_BROWSE_FIRST，MQGMO_BROWSE_NEXT，またはMQGMO_BROWSE_MSG_UNDER_CURSORオプションを指定することで，メッセージを削除しないで検索できます。検索カーソルは，キュー内のメッセージの位置を指します。このため，MQGMO_BROWSE_NEXTを指定した次のMQGET命令で，適切なメッセージを検索できます。

MQGET命令でMQGMO_BROWSE_FIRSTを指定すると，それまでの検索カーソルの位置は無視されます。そして，メッセージ記述子の指定に該当する最初のメッセージが検索されます。検索されたメッセージはキューに残ります。また，検索カーソルはこのメッセージを指したままです。

この命令が終了すると，検索カーソルは返されたメッセージを指します。MQGMO_BROWSE_NEXTを指定した次のMQGET命令を実行するまでにそのメッセージが削除された場合，その位置にメッセージがなくても，検索カーソルはその位置を指したままです。

検索したメッセージをキューから削除するために，このあとの非検索MQGET命令で，MQGMO_MSG_UNDER_CURSORオプションを指定できます。

同じHobjハンドルを使用して非検索MQGET命令を実行しても，検索カーソルは移動しないことに注意してください。また，完了コードMQCC_FAILED，または理由コードMQRC_TRUNCATED_MSG_FAILEDで終了した検索MQGET命令でも，検索カーソルは移動しません。

検索したメッセージを排他状態にするために，このオプションと同時にMQGMO_LOCKオプションを指定できます。

MQGMO_BROWSE_FIRSTは，グループ内のメッセージおよび論理メッセージのセグメントの処理を制御するMQGMO構造体，およびMQMO構造体のオプションの正しい組み合わせと一緒に指定できます。

MQGMO_LOGICAL_ORDERが指定された場合，メッセージは論理的な順序で検索されます。省略された場合，メッセージは物理的な順序で検索されます。MQGMO_BROWSE_FIRSTが指定されると，論理順序と物理順序をスイッチできますが，MQGMO_BROWSE_NEXTを使用したMQGET命令は，キューハンドルに対してMQGMO_BROWSE_FIRSTを最後に指定した命令と同じ順序でキューを検索しなければなりません。

キューにあるメッセージを検索するMQGET命令で，キューマネジャに保持されるグループおよびセグメントの情報は，キューからメッセージを取り出すMQGET命令でキューマネジャに保持されるグループおよびセグメントの情報とは分離されています。MQGMO_BROWSE_FIRSTが指定されると，キューマネジャは，グループおよびセグメントの情報を無視し，現在のグループおよび論理メッセージがないかのようにキューを探します。MQGET命令が，完了コードMQCC_OKまたはMQCC_WARNINGで成功すると，検索のためのグループおよびセグメントの情報は，返却されたメッセージの値に設定されます。命令が失敗すると，グループおよびセグメントの情報は命令前と同じになります。

次に示すオプションは，MQGMO_BROWSE_FIRSTオプションと同時に指定できません。

MQGMO_BROWSE_NEXT

MQGMO_BROWSE_MSG_UNDER_CURSOR

MQGMO_MSG_UNDER_CURSOR

MQGMO_SYNCPOINT

MQGMO_SYNCPOINT_IF_PERSISTENT

MQGMO_UNLOCK

また，キューを検索用にオープンしていない場合もエラーになります。

MQGMO_BROWSE_NEXT

キューの現在位置から検索します。

検索カーソルは，メッセージ記述子の指定に該当する次のメッセージに移ります。そして，そのメッセージがアプリケーションに返されます。検索されたメッセージは，キューに残ります。

メッセージが検索される順序は，キューにメッセージが格納されているとおりです。メッセージが検索される順序の種類を次に示します。

優先度内でのFIFO順序（MQMDS_PRIORITY）

優先度に関係ないFIFO順序（MQMDS_FIFO）

詳細は，「3.　オブジェクトの属性」の「キューの属性」でMsgDeliverySequence属性の説明を参照してください。

キューを検索用にオープンしたあと，そのハンドルを使用した最初の検索MQGET命令は，MQGMO_BROWSE_FIRSTを指定した場合もMQGMO_BROWSE_NEXTを指定した場合も同じになります。

MQGMO_BROWSE_NEXTを指定した次のMQGET命令を実行するまでにそのメッセージが削除された場合，その位置にメッセージがなくても，検索カーソルはその位置を指したままです。

注意事項

メッセージをキューに登録するとき，そのキューでのメッセージの位置が決定される時点と，メッセージの位置が有効になってほかのアプリケーションが参照できるようになる時点とは異なります。そのため，複数のアプリケーションまたはチャネルが同一のキューにメッセージを登録する場合には注意が必要です。つまり，メッセージを参照するアプリケーションが検索MQGET命令を実行して，位置が有効になる前のメッセージより後ろに検索カーソルを進めた場合，以降のMQGMO_BROWSE_NEXTを使用した検索ではそのメッセージは見つかりません。この場合は，MQGMO_BROWSE_FIRSTを使用して，キューの先頭から検索する必要があります。

キューのMsgDeliverySequence属性がMQMDS_PRIORITYの場合で，現在の検索カーソルが指すメッセージよりも優先度の高いメッセージが到着したとき，そのメッセージはMQGMO_BROWSE_NEXTを使用した検索では見つかりません。MQGMO_BROWSE_FIRSTオプションで検索カーソルをリセットするか，再びキューをオープンしないと，そのメッセージは検索できません。

検索したメッセージをキューから削除するには，このあとの非検索MQGET命令で，MQGMO_MSG_UNDER_CURSORオプションを指定します。同じHobjハンドルを使用して非検索MQGET命令を実行しても，検索カーソルは移動しないことに注意してください。

検索したメッセージを排他状態にするには，このオプションと同時にMQGMO_LOCKオプションを指定します。

なお，MQGMO_BROWSE_NEXTは，グループ内のメッセージおよび論理メッセージのセグメントの処理を制御するMQGMO構造体，およびMQMO構造体のオプションの正しい組み合わせと一緒に指定できます。

MQGMO_LOGICAL_ORDERが指定された場合，メッセージは論理的な順序で検索されます。省略された場合，メッセージは物理的な順序で検索されます。MQGMO_BROWSE_FIRSTが指定されると，論理順序と物理順序でスイッチできますが，MQGMO_BROWSE_NEXTを使用したMQGET命令はキューハンドルに対してMQGMO_BROWSE_FIRSTを指定した最後の命令と同じ順序でキューを検索しなければなりません。この条件が満たされない場合，MQRC_INCONSISTENT_BROWSEで失敗となります。

注意事項

MQGMO_LOGICAL_ORDERを指定しないで，MQGET命令でメッセージグループ，またはグループに属さない論理メッセージの終わりを超えて検索した場合は，特に注意が必要です。例えば，グループの最終メッセージが，偶然そのグループの最初のメッセージよりも先にキューにある場合に，グループの終わりを超えて検索するとします。この場合，次のグループにある最初のメッセージを見つけるために，MQGMO_BROWSE_NEXTでMQMO_MATCH_MSG_SEQ_NUMBERのMsgSeqNumberを1に設定すると，すでに検索したグループの最初のメッセージが再度返却されます。また，間にグループがある場合に，複数のMQGET命令のあとにも，すでに検索したグループの最初のメッセージが再度返却されることがあります。

このような不確定のループは，検索用にキューを二度オープンすることで避けられます。また，次のことに留意すると，不確定のループを避けられます。

最初のハンドルは各グループの最初のメッセージだけを検索するのに使用します。

2番目のハンドルは指定したグループ内のメッセージだけを検索するのに使用します。

2番目の検索カーソルを最初の検索カーソルの位置に移動するときは，MQMO構造体のオプションをグループのメッセージ検索の前に使用します。

グループを超えて検索する場合，MQGMO_BROWSE_NEXTは使用しないようにします。

キューにあるメッセージを検索するMQGET命令でキューマネジャに保持されるグループおよびセグメントの情報は，キューからメッセージを取り出すMQGET命令によってキューマネジャに保持されるグループおよびセグメントの情報とは分離されています。

次に示すオプションは，MQGMO_BROWSE_NEXTオプションと同時に指定できません。

MQGMO_BROWSE_FIRST

MQGMO_BROWSE_MSG_UNDER_CURSOR

MQGMO_MSG_UNDER_CURSOR

MQGMO_SYNCPOINT

MQGMO_SYNCPOINT_IF_PERSISTENT

MQGMO_UNLOCK

また，キューを検索用にオープンしていない場合もエラーになります。

MQGMO_BROWSE_MSG_UNDER_CURSOR

検索カーソルの位置を検索します。

このオプションは，MQGMO構造体のMatchOptionsフィールドに指定されたMQMO構造体のオプションに関係なく，検索のために検索カーソルがメッセージにポイントされます。

また，このオプションでは，検索カーソルが指すメッセージを削除しないで検索します。MsgDesc引数のMsgIdフィールドおよびCorrelIdフィールドに指定した値は無視されます。

検索カーソルが指すメッセージは，MQGMO_BROWSE_FIRSTまたはMQGMO_BROWSE_NEXTオプションで，一つ前に検索されたものです。オープンしてから一度も検索しなかった場合，または該当するメッセージが削除されていた場合は，命令は失敗します。

このオプションの命令で，検索カーソルの位置が移動することはありません。検索したメッセージをキューから削除するために，このあとの非検索MQGET命令で，MQGMO_MSG_UNDER_CURSORオプションを指定できます。

同じHobjハンドルを使用して非検索MQGET命令を実行しても，検索カーソルは移動しないことに注意してください。また，完了コードMQCC_FAILED，または理由コードMQRC_TRUNCATED_MSG_FAILEDで終了した検索MQGET命令でも，検索カーソルは移動しません。

MQGMO_LOCKオプションと同時にMQGMO_BROWSE_MSG_UNDER_CURSORオプションを指定した場合，次のようになります。

すでに排他状態のメッセージがある場合，検索カーソルはそのメッセージを指しています。この場合，そのメッセージを排他状態にしたままで検索できます。

排他状態のメッセージがない場合，検索カーソルが指すメッセージが排他状態になり，アプリケーションに返されます。検索カーソルが指す位置にメッセージがない場合，命令は失敗します。

MQGMO_LOCKオプションを指定しないでMQGMO_BROWSE_MSG_UNDER_CURSORオプションを指定した場合，次のようになります。

すでに排他状態のメッセージがある場合，検索カーソルはそのメッセージを指しています。そのメッセージはアプリケーションに返され，排他状態は解除されます。メッセージの排他状態が解除されるため，再び検索したり取り出したりできる保証はありません。したがって，そのメッセージは，ほかのアプリケーションによって削除されることがあります。

排他状態のメッセージがない場合，検索カーソルが指すメッセージがアプリケーションに返されます。検索カーソルが指す位置にメッセージがない場合，命令は失敗します。

MQGMO_COMPLETE_MSGがMQGMO_BROWSE_MSG_UNDER_CURSORと一緒に指定される場合，検索カーソルは，MQMD構造体のOffsetフィールドが0であるメッセージを特定しなければなりません。この条件が満たされない場合，理由コードMQRC_INVALID_MSG_UNDER_CURSORで失敗となります。

キューにあるメッセージを検索するMQGET命令でキューマネジャに保持されるグループおよびセグメントの情報は，キューからメッセージを取り出すMQGET命令によってキューマネジャに保持されるグループ，およびセグメントの情報とは分離されています。

次に示すオプションは，MQGMO_BROWSE_MSG_UNDER_CURSORオプションと同時に指定できません。

MQGMO_BROWSE_FIRST

MQGMO_BROWSE_NEXT

MQGMO_MSG_UNDER_CURSOR

MQGMO_SYNCPOINT

MQGMO_SYNCPOINT_IF_PERSISTENT

MQGMO_UNLOCK

また，キューを検索用にオープンしていない場合もエラーになります。

MQGMO_MSG_UNDER_CURSOR

検索カーソルの位置で取り出します。

このオプションを指定すると，MQGMO構造体のMatchOptionsフィールドに指定されたMQMO構造体のオプションには関係なく，検索カーソルが指すメッセージを取り出します。MsgDesc引数のMsgIdフィールドまたはCorrelIdフィールドで指定した値は無視されます。このメッセージは，キューから削除されます。

検索カーソルが指すメッセージは，MQGMO_BROWSE_FIRSTまたはMQGMO_BROWSE_NEXTオプションで，一つ前に検索されたものです。

MQGMO_COMPLETE_MSGがMQGMO_MSG_UNDER_CURSORと一緒に指定された場合，検索カーソルはMQMD構造体のOffsetフィールドが0であるメッセージを特定しなければなりません。この条件が満たされない場合，理由コードMQRC_INVALID_MSG_UNDER_CURSORで，MQGET命令は失敗します。

次に示すオプションは，MQGMO_MSG_UNDER_CURSORオプションと同時に指定できません。

MQGMO_BROWSE_FIRST

MQGMO_BROWSE_NEXT

MQGMO_BROWSE_MSG_UNDER_CURSOR

MQGMO_UNLOCK

また，キューを検索用と取り出し用の両方でオープンしていない場合もエラーになります。検索カーソルが取り出せるメッセージを指していなかった場合，MQGET命令は失敗します。

ロックオプション：

キュー上のメッセージの排他に関連するオプションを次に示します。

MQGMO_LOCK

メッセージを排他状態にします。

検索したメッセージを排他状態にします。そのキューのほかのオープンハンドルからは，そのメッセージを参照できなくなります。このオプションは，MQGMO_BROWSE_FIRST，MQGMO_BROWSE_NEXT，またはMQGMO_BROWSE_MSG_UNDER_CURSORオプションのどれかと同時に指定してください。

それぞれのハンドルでは，一つのメッセージだけを排他状態にできます。排他状態にできるメッセージは，論理メッセージまたは物理メッセージとなります。

MQGMO_COMPLETE_MSGが指定されると，論理メッセージを構成するすべてのメッセージセグメントが，キューハンドルにロックされます。ただし，すべてのメッセージがキューに存在し，取り出し可能でなければなりません。

MQGMO_COMPLETE_MSGが指定されない場合，単一の物理メッセージだけがキューハンドルにロックされます。このメッセージが論理メッセージのセグメントであるとき，ロックされたセグメントはMQGMO_COMPLETE_MSGを使用するほかのアプリケーションが論理メッセージを取り出したり，検索したりするのを防止します。

完了コードMQCC_FAILEDが返された場合，または完了コードMQCC_WARNINGで理由コードMQRC_TRUNCATED_MSG_FAILEDが返された場合，メッセージは排他状態になりません。

あるハンドルで排他状態にしているメッセージがある場合は，そのメッセージは常に検索カーソルで指しているメッセージになります。

排他状態のメッセージは，次のMQGET命令で取り出せます。そのMQGET命令では，同じHobjハンドルを使用して，MQGMO_MSG_UNDER_CURSORオプション，またはそのほかの取り出し用オプションを指定します。

アプリケーションがメッセージを取り出さない場合は，次のようにして排他状態を解除します。

該当するハンドルを使用して，MQGMO_BROWSE_FIRSTまたはMQGMO_BROWSE_NEXTオプションで，MQGET命令を実行します。このとき，MQGMO_LOCKオプションは，指定しても指定しなくてもかまいません。完了コードMQCC_OKまたはMQCC_WARNINGで命令が終了した場合，メッセージの排他状態は解除されます。MQCC_FAILEDで完了した場合は，排他状態は解除されません。ただし，次の例外があります。

−　完了コードMQCC_WARNING，理由コードMQRC_TRUNCATED_MSG_FAILEDで終了した場合，メッセージの排他状態は解除されません。

−　完了コードMQCC_FAILED，理由コードMQRC_NO_MSG_AVAILABLEで終了した場合，メッセージの排他状態は解除されます。

同時にMQGMO_LOCKオプションを指定すると，ほかのメッセージが排他状態になります。MQGMO_LOCKオプションを指定しない場合は，命令終了後には，どんなメッセージも排他状態になりません。

MQGMO_WAITオプションを指定した場合で，該当するメッセージが直後にないときは，待ち合わせが始まる前に，元のメッセージの排他状態が解除されます。このため，エラーは発生しません。

該当するハンドルを使用して，MQGMO_BROWSE_MSG_UNDER_CURSORオプションでMQGET命令を実行します。このとき，MQGMO_LOCKは指定しません。完了コードMQCC_OKまたはMQCC_WARNINGで命令が終了した場合，メッセージの排他状態は解除されます。MQCC_FAILEDで完了した場合は，メッセージの排他状態は解除されません。ただし，次の例外があります。

−　完了コードMQCC_WARNING，理由コードMQRC_TRUNCATED_MSG_FAILEDで終了した場合，メッセージの排他状態は解除されません。

該当するハンドルを使用して，MQGMO_UNLOCKオプションでMQGET命令を実行します。

該当するハンドルを使用して，MQCLOSE命令を実行します。これは，アプリケーションの終了によってキューがクローズされる場合も含みます。

このオプションを指定するための，特別なオープンオプションは必要ありません。ただし，検索オプションを使用するためには，MQOO_BROWSEオプションが必要です。

次に示すオプションは，MQGMO_LOCKオプションと同時に指定できません。

MQGMO_SYNCPOINT

MQGMO_SYNCPOINT_IF_PERSISTENT

MQGMO_UNLOCK

MQGMO_UNLOCK

メッセージの排他状態を解除します。

MQGMO_LOCKオプションを指定した以前のMQGET命令で排他状態にしたメッセージがある場合だけ，このオプションを指定できます。このハンドルで排他状態にしたメッセージがない場合，完了コードMQCC_WARNING，理由コードMQRC_NO_MSG_LOCKEDで命令は終了します。

MQGMO_UNLOCKオプションを指定した場合，MsgDesc引数，BufferLength引数，Buffer引数，およびDataLength引数は参照・変更されません。また，Buffer引数にメッセージは返されません。

オプションを省略して仮定された場合も含めて，MQGMO_UNLOCKオプションと同時に指定できるのは，MQGMO_NO_WAITオプションとMQGMO_NO_SYNCPOINTオプションだけです。そのほかのオプションと同時に指定すると不正になります。

このオプションを指定するための，特別なオープンオプションは必要ありません。ただし，メッセージを排他状態にする時点では，MQOO_BROWSEオプションが必要です。

メッセージデータオプション：

メッセージがキューから取り出されるときの処理に関連するオプションを次に示します。

MQGMO_ACCEPT_TRUNCATED_MSG

後部が切り捨てられたメッセージでも，取り出しを許容します。

メッセージを格納する十分なバッファ領域がなかった場合にこのオプションを指定していると，バッファ領域に格納できる部分のメッセージだけでも取り出しを許容します。このときMQGET命令は警告の完了コードを返して，次のように処理を完了します。

メッセージの検索の場合は，検索カーソルは返されたメッセージの位置に進みます。

メッセージの取り出しの場合は，返されたメッセージはキューから削除されます。

そのほかにエラーが発生しなかった場合，理由コードMQRC_TRUNCATED_MSG_ACCEPTEDが返されます。

このオプションを指定しなかった場合も，バッファ領域分のメッセージが返されて警告の完了コードが返されますが，処理は完了しません。この場合は，次のように処理されます。

メッセージの検索の場合は，検索カーソルは進みません。

メッセージの取り出しの場合は，メッセージはキューから削除されません。

そのほかにエラーが発生しなかった場合，理由コードMQRC_TRUNCATED_MSG_FAILEDが返されます。

MQGMO_CONVERT

メッセージデータを変換します。

このオプションは，メッセージ内のアプリケーションデータが，Buffer引数にコピーされる前に，MQGET命令のMsgDesc引数で指定されるCodedCharSetIdフィールドおよびEncodingフィールドの値に従って変換されることを要求します。

メッセージが登録されるときに指定されるFormatフィールドは，変換プロセスによってメッセージ内のデータ構造を記述しているとみなされます。メッセージデータは，組み込みフォーマットに関しては，キューマネジャで変換されます。

変換が成功した場合，MsgDesc引数に指定されたCodedCharSetIdフィールドおよびEncodingフィールドは変更されません。すべての関連するデータタイプに関して変換できない場合は，MQGET命令は失敗しないで完了しますが，メッセージデータのフィールドは変換されません。この場合は，MsgDesc引数に指定されたCodedCharSetIdフィールドおよびEncodingフィールドには，未変換のメッセージの値が設定されます。

したがって，どちらの場合でも，これらのフィールドはBuffer引数に設定されたメッセージデータの文字セット識別子およびマシンコード形式を表しています。

キューマネジャが変換するフォーマット名のリストの詳細は，この章の「MQMD構造体　−　メッセージ記述子」でFormatフィールドの説明を参照してください。

コード変換対象となっている文字セット識別子については，「付録G　コード変換対象の文字セット識別子一覧」を参照してください。

グループとセグメントに関するオプション：

グループ内のメッセージおよび論理メッセージのセグメントの処理に関連するオプションを次に示します。オプションを理解するために，次の用語について説明します。

物理メッセージ

キューに登録したり取り出したりすることのできる最も小さい情報単位です。通常，単一のMQPUT命令，MQPUT1命令，またはMQGET命令で指定したり取り出したりする情報に該当します。

それぞれの物理メッセージは，メッセージ記述子（MQMD構造体）を持っています。

キューマネジャによって定義されているわけではありませんが，一般的に，物理メッセージはメッセージ記述子（MQMD構造体のMsgIdフィールド）の値で区別されます。

論理メッセージ

アプリケーション情報の一単位です。システムの強制がない場合，論理メッセージは物理メッセージと同じである場合があります。ただし，論理メッセージが極端に大きい場合，論理メッセージを二つまたはそれ以上のセグメントと呼ばれる物理メッセージに分割することをお勧めします。また，分割が必要となる場合もあります。

セグメント分割された論理メッセージは，同一のヌルではないグループ記述子（MQMD構造体のGroupIdフィールド）と同一のメッセージシーケンス番号（MQMD構造体のMsgSeqNumberフィールド）を持つ二つ以上の物理メッセージによって構成されます。セグメントはセグメントオフセット（MQMD構造体のOffsetフィールド）の値で区別されます。セグメントオフセットは，論理メッセージのデータ先頭からの，物理メッセージのデータの位置を表します。それぞれのセグメントは物理メッセージであるため，論理メッセージのセグメントは，通常，異なるメッセージ記述子を持ちます。

セグメント分割はされていないメッセージのうち，送信アプリケーションによってセグメント分割が許可されている論理メッセージも，ヌルではないグループ記述子を持ちます。この場合，論理メッセージがメッセージグループに属していないときは，そのグループ記述子を持つ物理メッセージはただ一つしか存在しないことになります。送信アプリケーションによってセグメント分割が禁止されている論理メッセージがメッセージグループに属していない場合は，ヌルのグループ記述子（MQGI_NONE）を持っています。

メッセージグループ

ヌルではない同一のグループ記述子を持つ一つ以上の物理メッセージの集まりです。

グループ内の論理メッセージは，メッセージシーケンス番号の値で区別されます。メッセージシーケンス番号は，1からNの整数範囲となります。なお，Nはグループ内の論理メッセージの数を表します。一つ以上の論理メッセージがセグメント分割されている場合，グループ内にはN個以上の物理メッセージが存在します。

次に，メッセージが，MQGET命令で返却される方法を制御する個々のオプションについて説明します。

MQGMO_LOGICAL_ORDER

グループ内のメッセージや論理メッセージのセグメントを論理的な順序で返します。

キューハンドルに対し，成功したMQGET命令によって返されるメッセージの順序を制御します。このオプションは，おのおのの命令に指定した場合に有効となります。

キューハンドルに対するMQGET命令が成功した場合，MQGMO_LOGICAL_ORDERが指定されていると，グループ内のメッセージはメッセージシーケンス番号の順序で返されます。また，論理メッセージのセグメントは，セグメントオフセットの順序で返されます。この順序は，メッセージとセグメントのキュー内での位置には関係ありません。

キューマネジャは要求された順序でメッセージを返すために，成功したMQGET命令間でのグループとセグメントの情報を保持しています。この情報で，キューハンドルに対する現在のメッセージグループと現在の論理メッセージとその位置，およびメッセージが同期点で取り出されているかどうかを識別します。キューマネジャがこの情報を保持しているため，アプリケーションはそれぞれのMQGET命令に先立って，グループとセグメントの情報を指定する必要はありません。つまり，アプリケーションはMQMD構造体のGroupIdフィールドやMsgSeqNumberフィールド，およびOffsetフィールドを指定する必要はありません。ただし，アプリケーションはそれぞれの命令でMQGMO_SYNCPOINTまたはMQGMO_NO_SYNCPOINTオプションを正しく指定しなければなりません。

キューのオープン時，現在のメッセージグループおよび現在の論理メッセージは存在しません。

MQMF_MSG_IN_GROUPフラグが設定されたメッセージがMQGET命令で返された場合は，そのメッセージグループが現在のメッセージグループとなります。成功したMQGET命令で指定されたMQGMO_LOGICAL_ORDERによって次に示すどちらかのメッセージが返されるまで，そのグループが現在のグループとなります。

MQMF_SEGMENTなしのMQMF_LAST_MSG_IN_GROUP

（グループ内のセグメント分割されていない最終論理メッセージ）

MQMF_LAST_SEGMENTありのMQMF_LAST_MSG_IN_GROUP

（グループ内の最終論理メッセージの最終セグメント）

上記のメッセージが返されると，メッセージグループは終了し，MQGET命令の成功で現在のグループは存在しなくなります。同様に，論理メッセージは，MQGET命令でMQMF_SEGMENTフラグが設定されたメッセージが返されたときに現在の論理メッセージとなります。MQMF_LAST_SEGMENTフラグを持つメッセージが返されると，現在の論理メッセージは終了します。

何も選択されない場合，成功したMQGET命令は，キューの最初にあるメッセージグループのメッセージ，2番目にあるメッセージグループのメッセージの順に，有効なメッセージがなくなるまで正しい順序で返します。このとき，MatchOptionsフィールドに，次に示すオプションを一つ以上指定することで，特定のメッセージグループを選択できます。

MQMO_MATCH_MSG_ID

MQMO_MATCH_CORREL_ID

MQMO_MATCH_GROUP_ID

ただし，これらのオプションは，現在のメッセージグループまたは現在の論理メッセージが存在しないときだけ有効となります。詳細については，「MatchOptionsフィールド」を参照してください。

MQGET命令が返すメッセージの検索時に，キューマネジャが参照するMsgIdフィールド，CorrelIdフィールド，GroupIdフィールド，MsgSeqNumberフィールド，およびOffsetフィールドの値を次の表に示します。この値は，キューからメッセージを取り出すときと，キューのメッセージを参照するときの両方に適用されます。

指定した

オプション

命令に先行するグループ

と論理メッセージの状態

キューマネジャが検索する値

MQGMO_

LOGICAL_

ORDER

命令に先行する現在のメッセージグループ

がある

命令に先行する現在の論理メッセージがある

Msg

Idフィールド

Correl

Idフィールド

Group

Idフィールド

MsgSeq

Numberフィールド

Offsetフィールド

○

×

×

Match

Optionsで制御される

Match

Optionsで制御される

Match

Optionsで制御される

1

0

○

×

○

メッセージ識別子

相関識別子

グループ識別子※

1

先行するオフセット値とセグメント長の和

○

○

×

メッセージ識別子

相関識別子

グループ識別子※

シーケンス番号＋1※

0

○

○

○

メッセージ識別子

相関識別子

グループ識別子※

シーケンス番号※

先行するオフセット値とセグメント長の和

×

−

−

Match

Optionsで制御される

Match

Optionsで制御される

Match

Optionsで制御される

Match

Optionsで制御される

Match

Optionsで制御される

（凡例）

○：該当します。

×：該当しません。

−：有無に関係ありません。

注※

キューハンドルに対する前の命令で返された値です。

複数のメッセージグループがキューに存在する場合，各グループの最初の論理メッセージの先頭セグメントがキュー内のどこに位置するかによって，メッセージの返される順序が決まります。つまり，メッセージシーケンス番号が1でオフセットが0である物理メッセージによって，メッセージが返されるときの順序が決まります。

MQGMO_LOGICAL_ORDERオプションは次に示すように，同期点に影響を及ぼします。

グループの最初の論理メッセージまたはセグメントがトランザクション内で取り出された場合で，同じキューハンドルを使うときは，そのグループにあるほかのすべての論理メッセージとセグメントが，トランザクション内で取り出されなければなりません。しかし，それらのメッセージが同じトランザクション内で取り出される必要はありません。これによって，多くの物理メッセージで構成されるメッセージグループは，そのキューハンドルで二つ以上の連続したトランザクションに分割できます。

グループの最初の論理メッセージまたはセグメントがトランザクション内で取り出されなかった場合で，同じキューハンドルを使うときは，そのグループのほかの論理メッセージとセグメントは，トランザクション内で取り出せません。

これらの条件が満たされなかった場合，MQGET命令は理由コードMQRC_INCONSISTENT_UOWで失敗となります。MQGMO_LOGICAL_ORDERが指定されたとき，MQGET命令で指定されたMQGMO構造体は，MQGMO_VERSION_2より前のバージョンではいけません。また，MQMD構造体はMQMD_VERSION_2より前のバージョンではいけません。この条件が満たされない場合，理由コードMQRC_WRONG_GMO_VERSIONまたはMQRC_WRONG_MD_VERSIONで失敗となります。

キューハンドルでMQGET命令にMQGMO_LOGICAL_ORDERが指定されない場合，メッセージはメッセージグループまたは論理メッセージのセグメントに属しているかどうかに関係なく返されます。これは，特定のグループまたは論理メッセージから，メッセージまたはセグメントが順序に従わないで返されることを示します。または，メッセージやセグメントが，ほかのグループや論理メッセージからのメッセージ，セグメント，およびグループに属していないセグメントのメッセージと混在していることを示しています。この場合，MQGET命令で返される特定のメッセージは，それぞれの命令で指定されるMQMO_*オプションで制御されます。詳細については，「MatchOptionsフィールド」を参照してください。

システムに障害が起きた場合は，次に示す方法でメッセージグループや論理メッセージを途中から再開できます。システム再開時，アプリケーションはGroupIdフィールド，MsgSeqNumberフィールド，Offsetフィールド，およびMatchOptionsフィールドに適当な値を設定します。その後，MQGMO_SYNCPOINTまたはMQGMO_NO_SYNCPOINTに適当な値を設定します。これによって，MQGMO_LOGICAL_ORDERを指定しないでMQGET命令を発行できるようになります。このMQGET命令が成功したとき，キューマネジャはグループとセグメントの情報を保持できます。したがって，そのキューハンドルを使用した次のMQGET命令では，通常のMQGMO_LOGICAL_ORDERを指定できます。

キューマネジャがMQGET命令用に保持しているグループとセグメントの情報は，MQPUT命令用に保持しているグループとセグメントの情報とは別です。さらに，キューマネジャは，次に示す命令について別の情報を保持しています。

キューからメッセージを取り出すMQGET命令

キューのメッセージを参照するMQGET命令

どのキューハンドルについても，アプリケーションはMQGMO_LOGICAL_ORDERを指定したMQGET命令と，指定しないMQGET命令を混在させてもかまいません。ただし，次の点に注意してください。

MQGMO_LOGICAL_ORDERを指定していない場合，MQGET命令が成功するたびに，キューマネジャは返されたメッセージに対応する値を，保持しているグループおよびセグメント情報に設定します。その情報で，キューハンドルに対してキューマネジャが保持していたグループとセグメントの情報を置き換えます。そのとき，参照または取り出し命令の動作に必要な情報だけが変更されます。

MQGMO_LOGICAL_ORDERが指定されない場合，現在のメッセージグループまたは論理メッセージが存在するとき，その命令は失敗しません。命令は完了コードMQCC_WARNINGで成功します。

グループおよびセグメントの情報と一致しないMQGET命令およびMQCLOSE命令の結果を次の表に示します。

実行時の命令

直前の命令がMQGMO_LOGICAL_ORDER指定ありのMQGET命令

直前の命令がMQGMO_LOGICAL_ORDER指定なしのMQGET命令

MQGMO_LOGICAL_ORDER指定ありのMQGET命令

MQCC_FAILED

MQCC_FAILED

MQGMO_LOGICAL_ORDER指定なしのMQGET命令

MQCC_WARNING

MQCC_OK

非永続グループ，または論理メッセージのあるMQCLOSE命令

MQCC_WARNING

MQCC_OK

上記の表の場合で，完了コードがMQCC_OK以外のとき，理由コードは次のどれかになります。

MQRC_INCOMPLETE_GROUP

MQRC_INCOMPLETE_MSG

MQRC_INCONSISTENT_UOW

注意事項

キューマネジャは，参照するためにオープンされていますが，入力用にオープンされていないキューを参照したり，クローズしたりした場合には，グループとセグメントの情報をチェックしません。この場合，完了コードは常にMQCC_OK（ほかのエラーがない場合）となります。

論理的な順序でメッセージとセグメントを取り出したいアプリケーションでは，MQGMO_LOGICAL_ORDERを指定することをお勧めします。このオプションを指定すると，キューマネジャがグループとセグメントの情報を管理するため，アプリケーションではキューマネジャとセグメントの情報を管理する必要がありません。しかし，アプリケーションによっては，MQGMO_LOGICAL_ORDERオプションが提供する機能より高い制御機能を必要とする場合があります。その場合，MQGMO_LOGICAL_ORDERオプションを指定しないでください。MQGMO_LOGICAL_ORDERを指定しなかったとき，アプリケーションは，MQGET命令に先立って，MQMD構造体のMsgIdフィールド，CorrelIdフィールド，GroupIdフィールド，MsgSeqNumberフィールド，Offsetフィールド，およびMQGMO構造体のMatchOptionsフィールドのMQMO_*オプションを正しく指定しなければなりません。

例えば，受信した物理メッセージがグループまたは論理メッセージのセグメントに属する場合でも，転送するアプリケーションにMQGMO_LOGICAL_ORDERを指定しないでください。送信側と受信側のキューマネジャ間に複数の通信路がある複雑なネットワークの場合，MQGMO_LOGICAL_ORDERを指定すると，物理メッセージが順序どおりに到着しません。

MQGMO_LOGICAL_ORDERおよびMQPUT命令で対応するMQPMO_LOGICAL_ORDERを指定しない場合は，各メッセージが到着すると，転送するアプリケーションは次の論理的な順序のメッセージを待たないで，そのメッセージを取り出したり転送したりできます。

MQGMO_LOGICAL_ORDERは，ほかのMQGMO_*オプションのどれとも同時に指定できます。また，上記に示したような適当な環境では，MQMO_*オプションの組み合わせとともに指定できます。

MQGMO_COMPLETE_MSG

完全な論理メッセージだけ取り出します。

このオプションは，MQGET命令で完全な論理メッセージだけ返すことを指定します。論理メッセージがセグメント分割されている場合，キューマネジャはセグメントを組み立てて，アプリケーションに完全な論理メッセージを返します。なお，論理メッセージがセグメント分割されていても，取り出すアプリケーションからは見えません。

注意事項

このオプションは，キューマネジャにメッセージセグメントを組み立てさせるためだけのオプションです。指定されなかった場合，セグメントがキューに存在していて，MQGET命令で指定されたほかの条件を満たすときには，セグメントごとにアプリケーションに返されます。したがって，個々にセグメントを受信しないアプリケーションでは，常にMQGMO_COMPLETE_MSGを指定してください。

MQGMO_COMPLETE_MSGを使用する場合，アプリケーションは完全なメッセージを格納するのに十分なバッファを用意するか，MQGMO_ACCEPT_TRUNCATED_MSGオプションを指定する必要があります。

ネットワークの遅延などによってキューにセグメントはなく，かつセグメント分割されたメッセージがある場合，MQGMO_COMPLETE_MSGを指定すると，不完全な論理メッセージに属するセグメントは取り出されません。ただし，そのメッセージセグメントは，CurrentQDepthキュー属性の値と関係があります。つまり，CurrentQDepth属性の値が0より大きくても，取り出せる論理メッセージが存在しない場合があります。

キューマネジャはトランザクション内でだけセグメントを組み立てることができます。例えば，MQGET命令がユーザの定義したトランザクション内で発行された場合，そのトランザクションが使用されます。命令が組み立てる途中で部分的に失敗した場合，キューマネジャは組み立て中に取り出されたセグメントをキューに戻します。その失敗によって，トランザクションのコミットの成功が妨げられることはありません。

セグメントであるそれぞれの物理メッセージは，それ自身のメッセージ記述子を持っています。一つの論理メッセージを構成するセグメントについては，メッセージ記述子のほとんどのフィールドが，論理メッセージ内のすべてのセグメントで同じになります。通常，論理メッセージ内のセグメント間で異なるのは，MsgIdフィールド，Offsetフィールド，およびMsgFlagsフィールドだけです。しかし，セグメントがネットワークの異なる通信路を通り，そのうちの幾つかの通信路でMCA送信変換ができる場合，セグメントが最終的にあて先キューに到着したとき，セグメント間でCodedCharSetIdフィールドとEncodingフィールドが異なる場合があります。CodedCharSetIdフィールドまたはEncodingフィールドが異なるセグメントで構成されている論理メッセージは，キューマネジャで一つの論理メッセージとして組み立てることはできません。その代わり，キューマネジャは，論理メッセージの最初から同じ文字セット識別子とマシンコード形式を持つ連続した一部のセグメントを返し，MQGET命令はMQCC_WARNINGの完了コードとMQRC_INCONSISTENT_CCSIDS，またはMQRC_INCONSISTENT_ENCODINGSの理由コードで完了します。これは，MQGMO_CONVERTの指定には関係ありません。残りのセグメントを取り出すために，アプリケーションはMQGMO_COMPLETE_MSGオプションを指定しないでMQGET命令を再発行し，一つ一つセグメントを取り出さなければなりません。このとき，MQGMO_LOGICAL_ORDERは残ったセグメントを順番に取り出すために使用できます。

セグメントを登録するアプリケーションは，メッセージ記述子のほかのフィールドに，セグメント間で異なる値を設定することもできます。しかし，受信するアプリケーションがMQGMO_COMPLETE_MSGを使用して論理メッセージを取り出す場合は意味がありません。キューマネジャが論理メッセージを組み立てるとき，メッセージ記述子の値に最初のセグメントの値を返します。唯一の例外はMsgFlagsフィールドです。キューマネジャは，組み立てられたメッセージがただ一つのセグメントであることを示す値を設定します。

報告メッセージにMQGMO_COMPLETE_MSGが指定されると，キューマネジャは次に示す特別な処理をします。

キューマネジャは，論理メッセージ内の異なるセグメントに関する報告形式の報告メッセージが，キューにすべて存在するかチェックします。存在する場合，MQGMO_COMPLETE_MSGを指定すると，それらは1メッセージとして取り出されます。この処理を可能にするために，報告メッセージはセグメント分割をサポートするキューマネジャまたはMCAによって生成されなければなりません。または，報告を要求したアプリケーションが少なくとも100バイトのメッセージデータを要求しなければなりません。つまり，MQRO_*_WITH_DATAオプションまたはMQRO_*_WITH_FULL_DATAオプションが指定されなければなりません。セグメントのデータがアプリケーションデータのすべてより小さい場合，失われたバイトは報告メッセージでヌルに置き換えられて返されます。

MQGMO_COMPLETE_MSGがMQGMO_MSG_UNDER_CURSORまたはMQGMO_BROWSE_MSG_UNDER_CURSORとともに指定された場合，参照カーソルはMQMD構造体のOffsetフィールドの値が0のメッセージに位置していなければなりません。この条件が満たされない場合，理由コードMQRC_INVALID_MSG_UNDER_CURSORで失敗します。

MQGMO_COMPLETE_MSGはMQGMO_ALL_SEGMENTS_AVAILABLEと同じ機能です。したがって，MQGMO_ALL_SEGMENTS_AVAILABLEを指定する必要はありません。

なお，MQGMO_COMPLETE_MSGは，MQGMO_SYNCPOINT_IF_PERSISTENT以外のMQGMO_*オプションおよびMQMO_MATCH_OFFSET以外のMQMO_*オプションと組み合わせて指定できます。

MQGMO_ALL_MSGS_AVAILABLE

グループのすべてのメッセージが有効である場合に取り出すことを指定します。

グループ内のメッセージは，すべてのメッセージが有効な場合だけ取り出し可能になります。ネットワークの遅延などによってキューに幾つかのメッセージが抜けているグループがある場合，MQGMO_ALL_MSGS_AVAILABLEを指定すると，不完全なグループに属するメッセージを取り出すことを抑止できます。ただし，そのメッセージはCurrentQDepthキュー属性の値と関係があります。つまり，CurrentQDepth属性の値が0より大きくても，取り出せるメッセージグループが存在しない場合があります。取り出せるメッセージがない場合，待ち時間が指定されていると，待ち時間が経過したあとでMQRC_NO_MSG_AVAILABLEの理由コードが返されます。

MQGMO_ALL_MSGS_AVAILABLEが有効となるかどうかは，MQGMO_LOGICAL_ORDERが指定されているかどうかによって，次に示すように決まります。

MQGMO_ALL_MSGS_AVAILABLEとMQGMO_LOGICAL_ORDERが両方とも指定された場合，MQGMO_ALL_MSGS_AVAILABLEは現在のグループまたは現在の論理メッセージがないときだけ有効となります。現在のグループまたは現在の論理メッセージがある場合，MQGMO_ALL_MSGS_AVAILABLEは無視されます。したがって，MQGMO_ALL_MSGS_AVAILABLEは，論理メッセージのメッセージを処理するときに無効となります。

MQGMO_LOGICAL_ORDERなしでMQGMO_ALL_MSGS_AVAILABLEが指定された場合，MQGMO_ALL_MSGS_AVAILABLEは常に有効となります。したがって，グループの最初のメッセージがキューから取り出されたあと，そのグループの残りのメッセージを削除するためには，オプションの指定を外さなければなりません。

MQGMO_ALL_MSGS_AVAILABLEを指定するMQGET命令が正常に完了した場合，MQGET命令が発行された時点でグループ内のすべてのメッセージがキュー上にあることになります。しかし，ほかのアプリケーションがグループからメッセージを除去できることに注意してください。グループは，グループ内の最初のメッセージを検索するアプリケーションにロックされていません。

MQGMO_ALL_MSGS_AVAILABLEが指定されない場合，グループに属するメッセージはグループが不完全なときも取り出すことができます。

MQGMO_ALL_MSGS_AVAILABLEはMQGMO_ALL_SEGMENTS_AVAILABLEと同じ機能です。したがって，MQGMO_ALL_SEGMENTS_AVAILABLEを指定する必要はありません。

MQGMO_ALL_MSGS_AVAILABLEはMQGMO構造体のほかのオプション，またはMQMO構造体のオプションのどのオプションとも同時に指定できます。

MQGMO_ALL_SEGMENTS_AVAILABLE

論理メッセージのすべてのセグメントが有効である場合に取り出すことを指定します。

論理メッセージ内のセグメントは，論理メッセージ内のすべてのセグメントが有効にならなければ取り出せません。ネットワークの遅延などによってキューに幾つかのセグメントが抜けている論理メッセージがある場合，MQGMO_ALL_SEGMENTS_AVAILABLEを指定すると，不完全な論理メッセージに属するセグメントを取り出すことを抑止できます。ただし，そのセグメントはCurrentQDepthキュー属性の値と関係があります。つまり，CurrentQDepth属性の値が0より大きくても，取り出せるメッセージが存在しない場合があります。取り出せるメッセージがない場合，待ち時間が指定されていると，その待ち時間が経過したあとでMQRC_NO_MSG_AVAILABLEの理由コードが返されます。

MQGMO_ALL_SEGMENTS_AVAILABLEが有効であるかどうかは，MQGMO_LOGICAL_ORDERが指定されているかどうかによって次に示すように決まります。

MQGMO_ALL_SEGMENTS_AVAILABLEとMQGMO_LOGICAL_ORDERが両方とも指定された場合，MQGMO_ALL_SEGMENTS_AVAILABLEは現在の論理メッセージがないときだけ有効となります。現在の論理メッセージがある場合，MQGMO_ALL_SEGMENTS_AVAILABLEは無視されます。したがって，MQGMO_ALL_SEGMENTS_AVAILABLEは，論理メッセージのメッセージを処理するときに無効となります。

MQGMO_LOGICAL_ORDERなしでMQGMO_ALL_SEGMENTS_AVAILABLEが指定された場合，MQGMO_ALL_SEGMENTS_AVAILABLEは常に有効となります。したがって，論理メッセージの最初のセグメントがキューから取り出されたあと，その論理メッセージの残りのセグメントを削除するためには，オプションの指定を外さなければなりません。

MQGMO_ALL_SEGMENTS_AVAILABLEが指定されない場合，論理メッセージに属するセグメントは，論理メッセージが不完全なときも取り出すことができます。

MQGMO_COMPLETE_MSGとMQGMO_ALL_SEGMENTS_AVAILABLEはすべてのセグメントが有効になるまで，セグメントの取り出しを禁止します。MQGMO_COMPLETE_MSGは完全なメッセージを返します。MQGMO_ALL_SEGMENTS_AVAILABLEは，セグメントを一つ一つ取り出せるようにします。

MQGMO_ALL_SEGMENTS_AVAILABLEが報告メッセージに指定された場合，キューマネジャは次の特別な処理をします。

キューマネジャは，完全な論理メッセージを構成する各セグメントに対して，報告メッセージが少なくとも一つ存在するかどうか，キューをチェックします。報告メッセージが存在する場合は，MQGMO_ALL_SEGMENTS_AVAILABLEの条件が満たされています。

ただし，キューマネジャは報告メッセージの形式まではチェックしないので，論理メッセージのセグメントに関連するさまざまな報告メッセージの形式が混在している可能性があります。つまり，MQGMO_ALL_SEGMENTS_AVAILABLEが成功しても，MQGMO_COMPLETE_MSGが成功するとは限りません。特別な論理メッセージのセグメントに対する報告形式が混在している場合，その報告メッセージは一つ一つ取り出されなければなりません。

MQGMO_ALL_SEGMENTS_AVAILABLEは，ほかのMQGMO_*オプション，またはMQMO_*オプションと同時に指定できます。

デフォルトオプション：

ここまでで説明されたオプションを指定しない場合，次に示すオプションを使用できます。

MQGMO_NONE

オプションを指定しません。

このオプションは，ほかにオプションを指定しない場合に指定します。このほかのオプションには，どれも省略時の仮定値があります。MQGMO_NONEオプションは，プログラムのコーディングをわかりやすくするために定義されています。値としては0が定義されていますが，コーディングをわかりやすくする以外の目的はありません。

このフィールドの初期値はMQGMO_NO_WAITです。

●　Reserved1（MQCHAR型）　予備

これは予備のフィールドです。このフィールドの初期値は空白です。

このフィールドは，Versionフィールドの値がMQGMO_VERSION_2以降の場合だけ有効です。

●　ResolvedQName（MQCHAR48型）　受信キュー名

キューマネジャによって設定される出力用のフィールドです。メッセージを取り出したキューの名称が返されます。返される名称はローカルキューマネジャに定義された名称です。

次に示す場合はオープン時に指定したキューの名称とは異なる名称が返されます。

別名キューをオープンした場合は，別名キューのベースキューの名称が返されます。

モデルキューをオープンした場合は，動的ローカルキューの名称が返されます。

このフィールドの長さは，MQ_Q_NAME_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，48個の空白です。

●　Segmentation（MQCHAR型）　セグメント分割フラグ

取り出されたメッセージがセグメント分割できるかどうかを示すフラグです。

次の値を取ります。

MQSEG_INHIBITED

セグメント分割は許可されていません。

MQSEG_ALLOWED

セグメント分割が許可されています。

これは出力用のフィールドです。

このフィールドの初期値はMQSEG_INHIBITEDです。

このフィールドは，Versionフィールドの値がMQGMO_VERSION_2以降の場合だけ有効です。

●　SegmentStatus（MQCHAR型）　論理メッセージフラグ

取り出されたメッセージが，論理メッセージグループのセグメントかどうかを示すフラグです。

次の値を取ります。

MQSS_NOT_A_SEGMENT

メッセージはセグメントではありません。

MQSS_SEGMENT

メッセージはセグメントですが，論理メッセージの最終セグメントではありません。

MQSS_LAST_SEGMENT

メッセージは論理メッセージの最終セグメントです。

これは，論理メッセージがただ一つのセグメントで構成されている場合にも返される値です。

これは出力用のフィールドです。

このフィールドの初期値はMQSS_NOT_A_SEGMENTです。

このフィールドは，Versionフィールドの値がMQGMO_VERSION_2以降の場合だけ有効です。

●　Signal1（MQLONG型）　シグナル

TP1/Message Queueでは，このフィールドは使用されません。

このフィールドの初期値は0です。

●　Signal2（MQLONG型）　予備

予備のフィールドです。キューマネジャはこの内容を特に使用しません。

このフィールドの初期値は0です。

●　StrucId（MQCHAR4型）　構造体識別子

次の値を取ります。

MQGMO_STRUC_ID

メッセージ取り出しオプションの構造体識別子

C言語では，MQGMO_STRUC_ID_ARRAYも定義されています。これは，MQGMO_STRUC_IDと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

これは入力用のフィールドです。

このフィールドの初期値はMQGMO_STRUC_IDです。

●　Version（MQLONG型）　構造体バージョン番号

次に示す値を取ります。

MQGMO_VERSION_1

バージョン1のメッセージ取り出しオプションの構造体バージョン番号

MQGMO_VERSION_2

バージョン2のメッセージ取り出しオプションの構造体バージョン番号

MQGMO_VERSION_2以降の構造体にだけ存在するフィールドについては，そのことがフィールドの説明に記載されています。次に示す定数は，現在のバージョン番号を指定します。

MQGMO_CURRENT_VERSION

メッセージ取り出しオプションの現在の構造体バージョン番号

これは入力用のフィールドです。

このフィールドの初期値はMQGMO_VERSION_1です。

●　WaitInterval（MQLONG型）　待ち合わせ最大時間

MQGET命令が該当するメッセージの到着を待つ最大時間を，ミリ秒単位で指定します。該当するメッセージとは，MQGET命令のMsgDesc引数に指定した選択規準を満たすものです。詳細は，この章の「MQMD構造体　−　メッセージ記述子」でMsgIdフィールドの説明を参照してください。この時間が経過しても該当するメッセージが到着しなかった場合，完了コードMQCC_FAILED，理由コードMQRC_NO_MSG_AVAILABLEで命令は終了します。

このフィールドは，MQGMO_WAITオプションと組み合わせて使用します。MQGMO_WAITオプションを指定しなかった場合，このフィールドは無視されます。指定した場合は，WaitIntervalフィールドには0以上を指定してください。また，次の定数値も指定できます。

MQWI_UNLIMITED

無制限に待ち合わせをします。無制限に待ち合わせ中に，アプリケーションまたはOpenTP1が終了した場合，MQGET命令はMQRC_Q_MGR_STOPPINGの理由コードで完了します。

このフィールドの初期値は0です。TP1/Message Queueでは待ち合わせ最大時間の精度をMQAサービス定義のmqa_getwait_timeoutオペランドで指定できます。指定を省略した場合，秒単位の精度で待ち合わせます。

MQMD構造体　−　メッセージ記述子

MQMD構造体は，次のフィールドから構成されます。

フィールド（データタイプ）

内容

初期値

StrucId（MQCHAR4型）

構造体識別子

MQMD_STRUC_ID

Version（MQLONG型）

構造体バージョン番号

MQMD_VERSION_1

Report（MQLONG型）

報告メッセージオプション

MQRO_NONE

MsgType（MQLONG型）

メッセージタイプ

MQMT_DATAGRAM

Expiry（MQLONG型）

メッセージ保持時間

MQEI_UNLIMITED

Feedback（MQLONG型）

報告メッセージ返答コード

MQFB_NONE

Encoding（MQLONG型）

メッセージデータのマシンコード形式

MQENC_NATIVE

CodedCharSetId（MQLONG型）

メッセージデータの文字セット識別子

MQCCSI_Q_MGR

Format（MQCHAR8型）

メッセージデータのフォーマット名

MQFMT_NONE

Priority（MQLONG型）

メッセージ優先度

MQPRI_PRIORITY_AS_Q_DEF

Persistence（MQLONG型）

メッセージ永続性

MQPER_PERSISTENCE_AS_Q_DEF

MsgId（MQBYTE24型）

メッセージ識別子

MQMI_NONE

CorrelId（MQBYTE24型）

相関識別子

MQCI_NONE

BackoutCount（MQLONG型）

ロールバック回数

0

ReplyToQ（MQCHAR48型）

応答キュー名

ヌル文字列/空白

ReplyToQMgr（MQCHAR48型）

応答キューマネジャ名

ヌル文字列/空白

UserIdentifier（MQCHAR12型）

ユーザ識別子

ヌル文字列/空白

AccountingToken（MQBYTE32型）

課金トークン

MQACT_NONE

ApplIdentityData（MQCHAR32型）

アプリケーション識別データ

ヌル文字列/空白

PutApplType（MQLONG型）

登録アプリケーションタイプ

MQAT_NO_CONTEXT

PutApplName（MQCHAR28型）

登録アプリケーション名

ヌル文字列/空白

PutDate（MQCHAR8型）

登録日付

ヌル文字列/空白

PutTime（MQCHAR8型）

登録時刻

ヌル文字列/空白

ApplOriginData（MQCHAR4型）

登録元データ

ヌル文字列/空白

GroupId（MQBYTE24型）※

グループ識別子

MQGI_NONE

MsgSeqNumber（MQLONG型）※

メッセージシーケンス番号

1

Offset（MQLONG型）※

オフセット

0

MsgFlags（MQLONG型）※

メッセージフラグ

MQMF_NONE

OriginalLength（MQLONG型）※

登録元メッセージ長

MQOL_UNDEFINED

注※

Versionフィールドの値がMQMD_VERSION_2以降の場合だけ存在するフィールドです。

概要

目的

MQMD構造体には，アプリケーション間でデータをやり取りするために必要な制御情報を記述します。この構造体はMQGET，MQPUTおよびMQPUT1命令の入出力用の引数です。

バージョン

MQMD構造体のバージョンには1および2があります。しかし，すべての環境でMQMD_VERSION_2がサポートされているわけではありません。複数の環境にアプリケーションを移植する場合は，使用するバージョンのMQMD構造体が，すべての環境でサポートされている必要があります。MQMD_VERSION_2以降の構造体にだけ存在するフィールドについては，そのことがフィールドの説明に記載されています。

サポートするプログラミング言語のCOPYファイルとINCLUDEファイルでは，最新バージョンのMQMD構造体が提供されます。ただし，Versionフィールドの初期値はMQMD_VERSION_1です。バージョン1の構造体にないフィールドを使用する場合は，アプリケーションで使用したいバージョンの番号をVersionフィールドに設定してください。

バージョン1の構造体宣言には，MQMD1型を使用できます。

文字セットおよびマシンコード

MQMD構造体のデータは，ローカルキューマネジャの文字セットおよびマシンコードに従います。それぞれ，キューマネジャのCodedCharSetId属性およびMQENC_NATIVEで指定します。TP1/Message Queue Accessのクライアントアプリケーションの場合，MQMD構造体はクライアントの文字セットおよびマシンコードにします。

送信側および受信側キューマネジャが使用する文字セットまたはマシンコードが異なる場合，MQMD構造体の中のデータは自動的に変換されます。アプリケーションがMQMD構造体を変換する必要はありません。

異なるバージョンのMQMD構造体の使用

バージョン1のMQMD構造体のアプリケーションデータの前にMQMDE構造体を追加すると，バージョン2のMQMD構造体と同じ機能になります。ただし，MQMDE構造体の全フィールドが初期値の場合，MQMDE構造体は省略できます。バージョン1のMQMD構造体とMQMDE構造体は次のように使用されます。

MQPUT命令およびMQPUT1命令で，アプリケーションがバージョン1のMQMD構造体を使用する場合，アプリケーションは，MQMDE構造体があることを示すために，MQMD構造体のFormatフィールドにMQFMT_MD_EXTENSIONを設定します。これによって，メッセージデータの前に，MQMDE構造体をオプションで追加できます。

注意事項

バージョン2のMQMD構造体に存在し，バージョン1のMQMD構造体に存在しない幾つかのフィールドは，MQPUT命令およびMQPUT1命令の入出力フィールドです。ただし，キューマネジャは，MQPUT命令およびMQPUT1命令からの出力では，MQMDE構造体の対応するフィールドへ値を返しません。アプリケーションが出力された値を必要とする場合は，バージョン2のMQMD構造体を使用しなければなりません。

MQGET命令でアプリケーションがバージョン1のMQMD構造体を指定すると，キューマネジャは返すメッセージの前にMQMDE構造体を追加します。ただし，MQMDE構造体の一つ以上のフィールドが初期値以外の値を持つ場合だけです。MQMD構造体のFormatフィールドはMQMDE構造体が存在することを示すために，MQFMT_MD_EXTENSIONとなります。

この構造体は，MQGET命令，MQPUT命令，およびMQPUT1命令の入出力用の引数です。

サポートされるすべてのプログラム言語について，MQMD構造体のデフォルト値はバージョン1構造体のデフォルト値と同じです。また，明示的なMQMD1構造体を利用できます（COBOL言語ではCOPYファイルのCMQMD1とCMQMD1V）。この構造体は，バージョン1のMQMD構造体とバージョン2のMQMD構造体を扱う必要があるアプリケーションのために提供されています。

メッセージが転送キュー上にある場合，MQMD構造体内のフィールドの一部が特定の値に設定されます。詳細については，この章の「MQXQH構造体　−　転送キューヘッダ」を参照してください。

メッセージコンテキスト

MQMD構造体の特定のフィールドには，メッセージコンテキストが含まれます。メッセージテキストには，識別コンテキストと登録元コンテキストがあります。

識別コンテキスト

該当するメッセージを最初に登録したアプリケーションに関係します。

登録元コンテキスト

該当するメッセージを最後に登録したアプリケーションに関係します。

これらの二つのアプリケーションは，同一のアプリケーションである場合と，同一のアプリケーションでない場合（例えば，メッセージがアプリケーションからアプリケーションへ転送される場合）があります。

識別コンテキストと登録元コンテキストには通常，上記のような意味があります。しかし実際には，MQMD構造体のコンテキストフィールドの内容は，メッセージ登録時に指定されたMQPMO_*_CONTEXTオプションによって決定されます。そのため，必ずしも上記のとおりではありません。アプリケーションの設計に依存します。

メッセージのコンテキストをまったく変更しないアプリケーションのクラスには，メッセージチャネルエージェント（MCA）があります。リモートキューマネジャからメッセージを受信するMCAは，MQPUTまたはMQPUT1命令にコンテキストオプションMQPMO_SET_ALL_CONTEXTを使用します。これによって受信側のMCAは，送信側のMCAからメッセージとともに送信されたメッセージコンテキストを，そのままの状態で保存できます。ただし，その結果として，登録元コンテキストはメッセージを最後に登録したアプリケーション（受信側MCA）に関係づけられないで，それ以前にメッセージを登録したアプリケーション（送信側アプリケーション自身を含む）に関係づけられます。

以降の説明では，上記に示した通常の方法でコンテキストフィールドが使用されている場合について説明します。メッセージのコンテキストの詳細については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　AccountingToken（MQBYTE32型）　課金トークン

メッセージの識別コンテキストの一部です。メッセージコンテキストについては，この章の「MQMD構造体　−　メッセージ記述子」の「概要」，およびマニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

アプリケーションが課金情報を必要とするときに使用できます。

この情報は，キューマネジャではビット列として扱われます。内容はチェックされません。キューマネジャによってこの情報が生成されるとき，次の値が設定されます。

1バイト目に，2バイト目以降に格納する課金情報の長さが設定されます。長さの範囲は0〜31で，2進数として格納されます。

2バイト目以降に，上記に示された長さで環境に応じた課金情報が設定されます。

上記以降のバイトには，2進数の0が設定されます。

MQPUT命令およびMQPUT1命令のPutMsgOpts引数でMQPMO_SET_IDENTITY_CONTEXTまたはMQPMO_SET_ALL_CONTEXTを指定した場合，入出力用フィールドとなります。MQPMO_SET_IDENTITY_CONTEXTもMQPMO_SET_ALL_CONTEXTも指定しなかった場合，このフィールドは入力時に無視されて出力専用のフィールドとなり，このフィールドは「¥0」で埋められます。メッセージコンテキストおよびコンテキスト情報の制御については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

MQPUT命令またはMQPUT1命令が成功すると，このフィールドには，転送されたメッセージのAccountingTokenが設定されます。メッセージにコンテキストがなかった場合，このフィールドは0となります。

MQGET命令では，出力用フィールドとなります。

このフィールドは，キューマネジャの文字セットの変換対象にはなりません。このフィールドは，文字列ではなく，ビット列として扱われます。

キューマネジャはこの情報を操作しません。この情報を課金目的で使用するときは，アプリケーションがそれを解釈してください。

次の定数値も使用できます。

MQACT_NONE

課金トークンを指定しません。

この定数値は，2進数の0が設定されます。

C言語では，MQACT_NONE_ARRAYも定義されています。これは，MQACT_NONEと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

このフィールドの長さは，MQ_ACCOUNTING_TOKEN_LENGTHに定義されています。

このフィールドの初期値はMQACT_NONEです。

●　ApplIdentityData（MQCHAR32型）　アプリケーション識別データ

メッセージの識別コンテキストの一部です。メッセージコンテキストについては，この章の「MQMD構造体　−　メッセージ記述子」の「概要」，およびマニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

このフィールドでは，アプリケーションの組を定義します。また，メッセージまたは登録元に関する付加情報に使用できます。

この情報は，キューマネジャでは文字データとして扱われます。ただし，データの形式は規定されません。キューマネジャによってこの情報が生成されるとき，空白が設定されます。

MQPUT命令およびMQPUT1命令のPutMsgOpts引数でMQPMO_SET_IDENTITY_CONTEXTまたはMQPMO_SET_ALL_CONTEXTを指定した場合，入出力用フィールドとなります。このフィールドにヌル文字があった場合，ヌル文字以降の文字は，キューマネジャによって空白に置き換えられます。MQPMO_SET_IDENTITY_CONTEXTもMQPMO_SET_ALL_CONTEXTも指定しなかった場合，このフィールドは入力時に無視されて出力専用フィールドとなり，このフィールドは空白で埋められます。メッセージコンテキストおよびコンテキスト情報の制御については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

MQPUT命令またはMQPUT1命令が成功すると，このフィールドには，転送されたメッセージのApplIdentityDataが設定されます。メッセージにコンテキストがなかった場合，このフィールドは空白で埋められます。

MQGET命令では，出力用フィールドとなります。

このフィールドの長さは，MQ_APPL_IDENTITY_DATA_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，32個の空白です。

●　ApplOriginData（MQCHAR4型）　登録元データ

メッセージの登録元コンテキストの一部です。メッセージコンテキストについては，この章の「MQMD構造体　−　メッセージ記述子」の「概要」，およびマニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

ApplOriginDataは，アプリケーションの組で定義する情報で，メッセージの登録元に関する付加情報として使用できます。例えば，適切な権限を持つアプリケーションが，識別データが信用できるかどうかを示すために設定できます。

この情報は，キューマネジャでは文字データとして扱われます。ただし，データの形式は規定されません。キューマネジャによってこの情報が生成されるとき，空白が設定されます。

MQPUT命令およびMQPUT1命令のPutMsgOpts引数でMQPMO_SET_ALL_CONTEXTを指定した場合，入出力用フィールドとなります。このフィールドのヌル文字以降の情報は破棄されます。ヌル文字以降の文字は，キューマネジャによって空白に置き換えられます。MQPMO_SET_ALL_CONTEXTを指定しなかった場合，このフィールドは入力時に無視されて出力専用フィールドとなり，このフィールドは空白で埋められます。

MQPUT命令またはMQPUT1命令が成功すると，このフィールドには転送されたメッセージのApplOriginDataが設定されます。メッセージにコンテキストがなかった場合，このフィールドは空白で埋められます。

MQGET命令では，出力用フィールドとなります。

このフィールドの長さは，MQ_APPL_ORIGIN_DATA_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，4個の空白です。

●　BackoutCount（MQLONG型）　ロールバック回数

トランザクション内のMQGET命令でメッセージが返されて，そのあとにロールバックした回数です。アプリケーションはこの回数によって，メッセージの内容が原因のエラーを検出できます。この回数には，MQGMO_BROWSE_*オプションを指定したMQGET命令は含まれません。

これは，MQGET命令の出力用フィールドです。MQPUT命令およびMQPUT1命令のときは無視されます。

このフィールドの初期値は0です。

●　CodedCharSetId（MQLONG型）　文字セット識別子

メッセージデータの文字セット識別子です。

注意事項

命令引数であるMQMD構造体およびほかのMQデータ構造体の文字データは，キューマネジャの文字セットである必要があります。これは，キューマネジャのCodedCharSetId属性によって定義されている文字セットです。属性の詳細については，「3.　オブジェクトの属性」の「キューマネジャの属性」を参照してください。

次の値が使用できます。

MQCCSI_Q_MGR

キューマネジャの文字セット識別子

アプリケーションメッセージデータの文字データは，キューマネジャの文字セット（MQAサービス定義のmqa_local_ccsidオペランド指定値）を使用します。

MQPUTとMQPUT1命令では，キューマネジャはアプリケーションメッセージとともに設定するMQMD構造体のフィールドの値をキューマネジャの文字セット識別子（MQAサービス定義のmqa_local_ccsidオペランド指定値）に変更します。そのため，MQGET命令の際に，MQCCSI_Q_MGRという値が返されることはありません。

MQCCSI_DEFAULT

デフォルトの文字セット識別子

StringフィールドのデータのCodedCharSetIdは，MQCFH構造体に先行するヘッダ構造体のCodedCharSetIdフィールドによって定義されます。MQCFH構造体がメッセージの先頭にある場合はMQMD構造体のCodedCharSetIdフィールドによって定義されます。

MQCCSI_INHERIT

この構造体の文字セット識別子を引き継ぎます。

メッセージの文字データは，この構造体と同じ文字セットです。つまり，キューマネジャの文字セットです（MQMD構造体の場合だけ，MQCCSI_INHERITはMQCCSI_Q_MGRと同じ意味になります）。

メッセージで送信されるMQMD構造体のこの値を，キューマネジャはMQMD構造体の実際の文字セット識別子に変更します。エラーが発生しない場合，MQGET命令ではMQCCSI_INHERITは返されません。

MQMD構造体のPutApplTypeフィールドの値がMQAT_BROKERの場合，MQCCSI_INHERITは使用できません。

MQCCSI_EMBEDDED

組み込みの文字セット識別子

メッセージ内の文字データの文字セットは，メッセージデータ自身に含まれている識別子の文字セットです。メッセージデータに組み込まれていて，データの異なる部分に適用される文字セット識別子は幾つあってもかまいません。この値は，幾つかの文字セットによるデータが混在したPCFメッセージでは必ず使用されます。PCFメッセージのフォーマット名はMQFMT_PCFです。

この値はMQPUT命令およびMQPUT1命令にだけ指定します。MQGET命令にこの値を指定すると，メッセージは変換されません。

MQPUTおよびMQPUT1命令では，メッセージとともに送信されるMQMD構造体中のMQCCSI_Q_MGRおよびMQCCSI_INHERITという値を，キューマネジャはキューマネジャの文字セット識別子と同じ値に変更します。しかし，MQPUTまたはMQPUT1命令に指定されたMQMD構造体は変更しません。指定された値について，ほかのチェックはありません。

メッセージを取り出すアプリケーションは，このフィールドが期待した値かどうかを比較します。期待した値以外の場合，アプリケーションはメッセージ中の文字データを変換する必要があります。

MQGMO_CONVERTオプションがMQGET命令で指定される場合，このフィールドは入出力用フィールドです。アプリケーションで指定された値は，メッセージデータの必要に応じて変換される文字セット識別子です。変換が成功した場合，または変換が不要の場合，値は変更されません。ただし，MQCCSI_Q_MGRおよびMQCCSI_INHERITが実際の値に変換される場合を除きます。変換が成功しなかった場合，MQGET命令後の値はアプリケーションに設定される未変換メッセージの文字セット識別子を表します。

MQGMO_CONVERTオプションがMQGET命令で指定されない場合，このフィールドは，MQGET命令の出力用フィールドです。また，MQPUT命令とMQPUT1命令の入力用フィールドです。

このフィールドの初期値はMQCCSI_Q_MGRです。

●　CorrelId（MQBYTE24型）　相関識別子

MQGET命令では，取り出すメッセージの相関識別子を指定します。このフィールドの指定方法はMsgIdフィールドと同様です。

MQGET命令のGetMsgOpts引数でMQGMO_MSG_UNDER_CURSORオプションを指定した場合，このフィールドは無視されます。

MQGET命令が返されるとき，取り出したメッセージの相関識別子がCorrelIdフィールドに設定されます。

MQPUT命令およびMQPUT1命令では，アプリケーションは任意の相関識別子を指定できます。その値は，キューマネジャによってメッセージを取り出すアプリケーションに返されます。

MQPUTおよびMQPUT1命令にMQPMO_NEW_CORREL_IDオプションを指定する場合，登録したメッセージの相関識別子に，ユニークな相関識別子※がキューマネジャによって設定されます。

注※

キューマネジャによって生成される相関識別子（CorrelId）は，4バイトのプロダクト識別子と，それに続くプロダクト固有の文字列で構成されます。このCorrelIdは，EBCDICコードまたはASCIIコードのA〜Iの範囲の文字で始まっています。アプリケーションでCorrelIdを指定する場合は，キューマネジャによって生成される値との重複を避けるために，A〜I以外の文字で始まる文字列を指定してください。

報告が生成されるとき，登録元メッセージのReportフィールド（MQRO_COPY_MSG_ID_TO_CORREL_IDまたはMQRO_PASS_CORREL_ID）の方法で，CorrelIdが設定されます。アプリケーションが報告を生成するときも，同様の処理をする必要があります。

このフィールドは，キューマネジャの文字セットの変換対象にはなりません。このフィールドは，文字列ではなく，ビット列として扱われます。

次の定数値を使用できます。

MQCI_NONE

相関識別子を指定しません。

この定数の値は，2進数の0です。

C言語では，MQCI_NONE_ARRAYも定義されています。これは，MQCI_NONEと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

これは，MQGET命令の入出力用フィールドです。また，MQPUT命令とMQPUT1命令では，MQPMO_NEW_CORREL_IDの指定がない場合は入力用フィールドとなり，指定された場合は出力用フィールドとなります。

このフィールドの長さは，MQ_CORREL_ID_LENGTHに定義されています。

このフィールドの初期値はMQCI_NONEです。

●　Encoding（MQLONG型）　マシンコード形式

メッセージ内の数値データのマシンコード形式を指定します。ただし，MQMD構造体自身の数値データには適用されません。マシンコード形式は，2進整数，10進パック形式整数および浮動小数点の表記を定義します。

MQPUTまたはMQPUT1命令では，アプリケーションはデータに合った値をこのフィールドに設定する必要があります。キューマネジャは，フィールドが有効かどうかをチェックしません。次に示す特別な値が定義されます。

MQENC_NATIVE

計算機固有のマシンコード形式

このマシンコード形式は，アプリケーションを実行するプログラミング言語と計算機に固有の値です。

注意事項

この定数の値は，プログラミング言語と環境に依存します。このため，アプリケーションは，実行する環境に合ったCOPYファイルとINCLUDEファイルを使用してコンパイルする必要があります。

メッセージを登録するアプリケーションは，通常，MQENC_NATIVEを指定します。メッセージを取り出すアプリケーションは，このフィールドがMQENC_NATIVEと等しいかどうかを比較します。等しくない場合は，アプリケーションはメッセージ中の数値データを変換する必要があります。MQGET命令の処理でキューマネジャがメッセージを変換するように指定するには，MQGMO_CONVERTオプションを使用できます。Encodingフィールドの指定方法については，「付録C　マシンコード形式」を参照してください。

MQGMO_CONVERTオプションがMQGET命令で指定される場合，このフィールドは入出力用フィールドです。アプリケーションで指定された値は，メッセージデータの必要に応じて変換されるマシンコード形式です。変換が成功した場合，または変換が不要な場合，値は変更されません。変換が成功しなかった場合，MQGET命令後の値はアプリケーションに設定される未変換メッセージのマシンコード形式を表します。

MQGMO_CONVERTオプションがMQGET命令で指定されない場合，このフィールドは，MQGET命令の出力用フィールドです。また，MQPUT命令とMQPUT1命令の入力用フィールドです。

このフィールドの初期値はMQENC_NATIVEです。

●　Expiry（MQLONG型）　メッセージ保持時間

メッセージを登録するアプリケーションが指定する，1/10秒単位の時間です。この時間が経過する前にメッセージがあて先キューから取り出されないと，このメッセージは破棄できる状態になります。

あて先キューで時間が経過するごとに，この時間が減少します。リモートキューに登録した場合は，仲介するすべての転送キューで時間が減少します。また，転送時間が大きく影響する場合，MCAがこの時間を減少させます。必要に応じて，メッセージを次のキューへ進めるアプリケーションで同様に時間を減少させてください。ただし，メッセージ保持時間は概算で扱われるため，少しの時間では減少しません。

アプリケーションがMQGET命令でメッセージを取り出したとき，Expiryフィールドにはメッセージ保持時間の残りが示されます。

メッセージ保持時間が経過すると，キューマネジャによって破棄できる状態になります。破棄できる状態のメッセージは，検索MQGET命令や非検索MQGET命令が実行されると破棄されます。また，保持時間を経過したメッセージは，実行された命令が検索MQGET命令と非検索MQGET命令のどちらの場合も，返されません。例えば，MQGMO構造体のMatchOptionsフィールドの設定値がMQMO_NONEの非検索MQGET命令で，FIFO方式のキューから読み取りを実行するとします。この場合，終了していないメッセージが最初に出現するまでの，終了しているメッセージはすべて破棄されます。一方，優先順位方式のキューから同様の読み取りを実行した場合，終了していない最初のメッセージより先にキューに到着したメッセージのうち，優先順位が高いメッセージと優先順位が等しいメッセージが破棄されます。したがって，MQGET命令が成功した場合のExpiryフィールドの値は，0以上の数値またはMQEI_UNLIMITEDです。

メッセージをリモートキューへ登録した場合，メッセージがあて先キューに到着する前に転送キューに格納されている状態で保持時間が終了することがあります。その後，そのメッセージは破棄されます。

メッセージの報告オプションでMQRO_EXPIRATIONを指定した場合，保持時間終了でメッセージが破棄されたときに報告が生成されます。これらのオプションを指定しなかった場合，報告は生成されません。通常，代わりのメッセージが送られるため，保持時間が経過したあとは，そのメッセージは無関連のものとみなされます。

保持時間終了でメッセージを破棄するプログラムは，報告が要求されている場合，報告メッセージを通知する必要があります。

注意事項

TP1/Message Queueでは時間の減少を1/10秒単位の精度で実行しています。このフィールドに1〜9の値を指定した場合，0秒として扱います。このため，10未満の値を指定した場合，または相手システムから受信したメッセージ保持時間が10未満の値である場合，保持時間が経過したメッセージとして扱われます。

保持時間に0を指定して登録した場合，MQPUT命令またはMQPUT1命令は理由コードMQRC_EXPIRY_ERRORで失敗します。この場合，報告メッセージは生成されません。

保持時間が終了したメッセージはあとになるまで破棄されないため，それらのメッセージが取り出せない状態でキューに残ります。これらも，キューのメッセージ登録数として数えられます。この数え方は，トリガを起動する際のメッセージ登録数などのすべての場合に適用されます。

例外報告を要求している場合，保持時間が終了したときではなく，メッセージが実際に破棄されたときに例外報告が生成されます。

保持時間が終了したメッセージの破棄および例外報告の生成は，トランザクションの処理には含まれません。トランザクション内のMQGET命令の結果でメッセージが破棄された場合でも含まれません。

トランザクション内のMQGET命令で保持時間終了の際のメッセージを取り出したあとにトランザクションがロールバックした場合，再びメッセージを取り出す前に保持時間が終了することがあります。

同様に，MQGMO_LOCKオプションを指定したMQGET命令で保持時間終了間際のメッセージを排他状態にした場合，MQGMO_MSG_UNDER_CURSORオプションを指定したMQGET命令でメッセージを取り出す前に保持時間が終了することがあります。このとき，理由コードMQRC_NO_MSG_UNDER_CURSORがMQGET命令で返されます。

メッセージ保持時間がゼロよりも大きい問い合わせメッセージを取り出す場合，アプリケーションは応答メッセージを送信するときに次に示すどれかの処理を実行できます。

・残りの保持時間を問い合わせメッセージから応答メッセージにコピーする。

・応答メッセージ中の保持時間をゼロより大きい明示的な値に設定する。

・応答メッセージ中の保持時間をMQEI_UNLIMITEDに設定する。

実行される動作は，アプリケーションの設計に依存します。ただし，デッドレターキューにメッセージを登録するときのデフォルトでは，メッセージの残りの保持時間を保存し，減算を継続します。

トリガメッセージは，常にMQEI_UNLIMITEDオプションで生成されます。

Formatフィールドの名称がMQFMT_XMIT_Q_HEADERであるメッセージには，MQXQH構造体に二つ目のメッセージ記述子があります。通常，これらのメッセージは転送キューに格納されています。つまり，二つのExpiryフィールドがあります。この場合，次の点に注意してください。

注1

アプリケーションがリモートキューへメッセージを登録すると，キューマネジャによって転送キューへ格納されます。このとき，メッセージにMQXQHヘッダが付けられ，アプリケーションが指定した同じ値がExpiryフィールドへ設定されます。Formatの名称がMQFMT_XMIT_Q_HEADERのメッセージをアプリケーションが直接登録する場合，アプリケーションは二つのExpiryフィールドに同じ値を指定する必要はありません。キューマネジャは，MQXQH構造体のExpiryフィールドの値が正しいかどうかチェックしません。また，メッセージデータの長さが，MQXQH構造体を含むのに十分かどうかもチェックしません。

注2

Formatの名称がMQFMT_XMIT_Q_HEADERのメッセージが，キュー（通常キューまたは転送キュー）から取り出されたとき，キューマネジャは，キューで経過した時間を両方のExpiryフィールドの値から減算します。メッセージデータの長さがMQXQH構造体を含むのに十分ではない場合も，エラーは発生しません。

注3

メッセージを破棄できるかどうか判断するとき，キューマネジャによって「通常」のメッセージ記述子のExpiryフィールドが使用されます。MQXQH構造体のメッセージ記述子ではないため，注意が必要です。

注4

二つのExpiryフィールドの初期値が異なった場合，MQXQH構造体のExpiryフィールドの時間が経過しても，通常のメッセージ記述子のExpiryフィールドの値が0以上のときはメッセージを取り出せます。この場合，MQXQH構造体のExpiryフィールドには0が設定されます。

特殊な定数値として，次を指定できます。

MQEI_UNLIMITED

無制限

メッセージは，保持時間で制限されません。

このフィールドは，MQGET命令の出力用フィールドです。また，MQPUT命令とMQPUT1命令の入力用フィールドです。

このフィールドの初期値はMQEI_UNLIMITEDです。

●　Feedback（MQLONG型）　報告メッセージ返答コード

このフィールドは，MQMT_REPORTタイプのメッセージで使用するもので，報告の性質を示します。メッセージタイプがMQMT_REPORTのときだけ有効です。

報告メッセージ返答コードは，次のように分けられます。

MQFB_NONE

返答コードなし

MQFB_SYSTEM_FIRST

システムが生成する返答コードの最小値

MQFB_SYSTEM_LAST

システムが生成する返答コードの最大値

MQFB_SYSTEM_FIRSTからMQFB_SYSTEM_LASTまでのシステムが生成する返答コードの範囲には，後述する特殊な返答コード（MQFB_*）が含まれます。また，メッセージをあて先キューへ登録できなかったときに発生する理由コード（MQRC_*）も含まれます。

MQFB_APPL_FIRST

アプリケーションが生成できる返答コードの最小値

MQFB_APPL_LAST

アプリケーションが生成できる返答コードの最大値

報告メッセージを生成するアプリケーションは，システムの範囲の返答コード（MQFB_QUIT以外）を使用できません。ただし，キューマネジャやMCAが生成する報告メッセージをシミュレートする場合は例外です。

MQPUTまたはMQPUT1命令では，MQFB_NONE，システムの範囲またはアプリケーションの範囲の値を使用してください。この値は，MsgTypeフィールドの値に関係なくチェックされます。

一般的な返答コード：

MQFB_COA

メッセージ到着確認

「Reportフィールド」のMQRO_COAオプションの説明を参照してください。

MQFB_COD

メッセージ配布確認

「Reportフィールド」のMQRO_CODオプションの説明を参照してください。

MQFB_EXPIRATION

メッセージ保持時間終了

保持時間が終了してもキューから削除されなかったため，メッセージは破棄されました。

MQFB_PAN

肯定動作通知

MQFB_NAN

否定動作通知

MQFB_QUIT

アプリケーション終了指示

このコードは，実行中のアプリケーションプログラムの数を制御するために，負荷スケジューリングプログラムで使用できます。この返答コードのMQMT_REPORTタイプのメッセージが通知されると，そのアプリケーションに終了が指示されたことを意味します。ただし，この指示に従うかどうかはアプリケーションに任せられます。キューマネジャはそれを強要しません。

IMSブリッジの返答コード：

IMSブリッジが非ゼロのIMS-OTMAセンスコードを受け取るとき，センスコードを16進から10進に変換し，値MQFB_IMS_ERROR（300）を追加し，応答メッセージのFeedbackフィールドに格納します。そのため，IMS-OTMAエラーが発生した場合は，返答コードの値はMQFB_IMS_FIRST（301）からMQFB_IMS_LAST（399）の範囲になります。

IMSブリッジが生成する返答コードを次に示します。これらの値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

MQFB_DATA_LENGTH_ZERO

MQFB_DATA_LENGTH_NEGATIVE

MQFB_DATA_LENGTH_TOO_BIG

MQFB_BUFFER_OVERFLOW

MQFB_LENGTH_OFF_BY_ONE

MQFB_IIH_ERROR

MQFB_NOT_AUTHORIZED_FOR_IMS

MQFB_IMS_ERROR

MQFB_IMS_FIRST

MQFB_IMS_LAST

CICSブリッジの返答コード：

CICSブリッジが生成する返答コードを次に示します。これらの値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

MQFB_CICS_APPL_ABENDED

MQFB_CICS_APPL_NOT_STARTED

MQFB_CICS_BRIDGE_FAILURE

MQFB_CICS_CCSID_ERROR

MQFB_CICS_CIH_ERROR

MQFB_CICS_COMMAREA_ERROR

MQFB_CICS_CORREL_ID_ERROR

MQFB_CICS_DLQ_ERROR

MQFB_CICS_ENCODING_ERROR

MQFB_CICS_INTERNAL_ERROR

MQFB_CICS_NOT_AUTHORIZED

MQFB_CICS_UOW_BACKED_OUT

MQFB_CICS_UOW_ERROR

理由コード：

例外報告の場合は，Feedbackフィールドに次の理由コードが設定されます。

MQRC_PUT_INHIBITED

指定されたキューへの登録は禁止されています。

MQRC_Q_FULL

キューが満杯です。

MQRC_NOT_AUTHORIZED

アクセスの権限がありません。

MQRC_Q_SPACE_NOT_AVAILABLE

キューに対応するディスクに空き領域がありません。

MQRC_PERSISTENT_NOT_ALLOWED

キューは永続メッセージをサポートしていません。

MQRC_MSG_TOO_BIG_FOR_Q_MGR

メッセージ長がリモートキューマネジャに許される値を超えています。

MQRC_MSG_TOO_BIG_FOR_Q

メッセージ長がキューに定義された最大値を超えています。

このフィールドは，MQGET命令の出力用フィールドです。また，MQPUT命令とMQPUT1命令の入力用フィールドです。

このフィールドの初期値はMQFB_NONEです。

●　Format（MQCHAR8型）　フォーマット名

メッセージデータの性質を示す名称です。メッセージの送信側が受信側に示します。この名称には，キューマネジャの文字セットの文字を使用します。ただし，次に示す文字だけが使用できます。

英大文字のA〜Z

アラビア数字の0〜9

このほかの文字を使用すると，送信側と受信側のキューマネジャの間で，名称を変換できないことがあります。

この名称の余りは，空白で埋めます。または，ヌル文字で終了します。ヌル文字以降の文字は，空白として扱われます。先頭または中間に空白を含んだ名称は指定しないでください。MQGET命令では，キューマネジャによって，フィールドの余りが空白で埋められた名称が返されます。

使用文字の条件を満たしているかどうか，キューマネジャはチェックしません。

大文字，小文字および大文字小文字混合の「MQ」で始まる名称は，キューマネジャで定義されたことを意味します。ユーザ独自のフォーマットには，この文字で始まる名称を使用できません。キューマネジャのフォーマットは，次のとおりです。

MQFMT_NONE

フォーマット名なし。

データの性質は定義されていません。これは，メッセージがキューから取り出されるときに，MQGMO_CONVERTオプションを使用してデータを変換できないことを意味します。

MQGET命令にMQGMO_CONVERTが指定され，メッセージ中のデータの文字セットまたはマシンコードがMsgDesc引数に指定されたものと異なる場合，メッセージが次に示す完了コードと理由コードとともに返されます（その他のエラーはないとします）。

メッセージの先頭にMQFMT_NONEデータがある場合は，完了コードMQCC_WARNINGと理由コードMQRC_FORMAT_ERRORが返されます。

MQFMT_NONEデータがメッセージの末尾にある場合（つまり，一つ以上のMQヘッダ構造体が先行している場合），完了コードMQCC_OKと理由コードMQRC_NONEが返されます。この場合，MQヘッダ構造体は，要求された文字セットとマシンコードに変換されます。

C言語では，MQFMT_NONE_ARRAYも定義されています。これは，MQFMT_NONEと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

MQFMT_ADMIN

コマンドサーバの問い合わせ／応答メッセージ

プログラマブルコマンドフォーマット（PCF）の問い合わせまたは応答メッセージです。

C言語では，MQFMT_ADMIN_ARRAYも定義されています。これは，MQFMT_ADMINと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

MQFMT_DEAD_LETTER_HEADER

デッドレターヘッダ

デッドレターヘッダ（MQDLH構造体）で始まるメッセージデータです。MQDLH構造体の後ろに，登録元メッセージのデータが続きます。登録元メッセージデータのフォーマット名は，MQDLH構造体のFormatフィールドに指定されています。MQDLH構造体の詳細については，この章の「MQDLH構造体　−　デッドレターヘッダ」を参照してください。

FormatフィールドがMQFMT_DEAD_LETTER_HEADERのメッセージには，到着確認および配布確認報告は生成されません。

C言語では，MQFMT_DEAD_LETTER_HEADER_ARRAYも定義されています。これは，MQFMT_DEAD_LETTER_HEADERと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

MQFMT_DIST_HEADER

配布リストヘッダ

メッセージデータは配布リストヘッダ（MQDH構造体）で始まり，MQOR構造体およびMQPMR構造体レコードの配列を含んでいます。そのあとに，配布リストヘッダに追加する形式でデータが続きます。追加されたデータがある場合，そのフォーマットはMQDH構造体のFormatフィールドによって与えられます。MQDH構造体の詳細については，この章の「MQDH構造体　−　配布ヘッダ」を参照してください。MQGMO_CONVERTオプションがMQGET命令に指定されると，フォーマットのメッセージを変換できます。

C言語では，MQFMT_DIST_HEADER_ARRAYも定義されています。これは，MQFMT_DIST_HEADERと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

MQFMT_EVENT

イベントメッセージ

TP1/Message Queueでは意味がありません。

このオプションを指定しても，TP1/Message Queueの動作には影響しません。これは，アプリケーションの移植性を向上させるために定義されています。

発生したイベントを報告するメッセージキューイング機能のイベントメッセージです。イベントメッセージの構造は，プログラマブルコマンドの場合と同じです。

C言語では，MQFMT_EVENT_ARRAYも定義されています。これは，MQFMT_EVENTと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

MQFMT_MD_EXTENSION

メッセージ記述子の拡張

メッセージデータはメッセージ記述拡張子で始まり，ほかのデータ（通常はアプリケーションメッセージデータ）が続きます。MQMDE構造体に続くデータのフォーマット名，文字セットおよびマシンコード形式は，MQMDE構造体のFormatフィールド，CodedCharSetIdフィールド，およびEncodingフィールドによって与えられます。MQMDE構造体の詳細については，この章の「MQMDE構造体　−　メッセージ記述子の拡張」を参照してください。このフォーマットのメッセージは，MQGET命令にMQGMO_CONVERTオプションを指定すると変換できます。

MQFMT_PCF

プログラマブルコマンドフォーマット（PCF）のユーザ定義メッセージ

プログラマブルコマンドフォーマット（PCF）メッセージの構造に従ったユーザ定義のメッセージです。

MQGET命令でMQGMO_CONVERTオプションが指定されると，このフォーマットのメッセージは変換されます。

C言語では，MQFMT_PCF_ARRAYも定義されています。これは，MQFMT_PCFと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

MQFMT_REF_MSG_HEADER

参照メッセージヘッダ

メッセージデータは参照メッセージヘッダ（MQRMH構造体）で始まり，ほかのデータが続く場合もあります。MQRMH構造体に続くデータのフォーマット名，文字セットおよびマシンコード形式は，MQMDE構造体のFormatフィールド，CodedCharSetIdフィールド，およびEncodingフィールドによって与えられます。MQMDE構造体の詳細については，この章の「MQMDE構造体　−　メッセージ記述子の拡張」を参照してください。このフォーマットのメッセージは，MQGET命令でMQGMO_CONVERTオプションを指定すると変換できます。

C言語では，定数MQFMT_REF_MSG_HEADER_ARRAYも定義されています。これは，MQFMT_REF_MSG_HEADERと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

MQFMT_STRING

文字だけのメッセージ

MQGET命令でMQGMO_CONVERTオプションが指定されると，このフォーマットのメッセージは変換されます。アプリケーションメッセージデータは，SBCS文字列（1バイト文字セット）でもDBCS文字列（2バイト文字セット）でもかまいません。

C言語では，MQFMT_STRING_ARRAYも定義されています。これは，MQFMT_STRINGと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

MQFMT_TRIGGER

トリガメッセージ

MQTM構造体で記述されるトリガメッセージです。MQTM構造体の詳細については，この章の「MQTM構造体　−　トリガメッセージ」を参照してください。

C言語では，MQFMT_TRIGGER_ARRAYも定義されています。これは，MQFMT_TRIGGERと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

MQFMT_XMIT_Q_HEADER

転送キューヘッダ

転送キューヘッダ（MQXQH構造体）で始まるメッセージデータです。MQXQH構造体の後ろに，登録元メッセージのデータが続きます。登録元データのフォーマット名は，転送キューヘッダMQXQH構造体の中のMQMD構造体のFormatフィールドに指定されています。MQXQH構造体の詳細については，この章の「MQXQH構造体　−　転送キューヘッダ」を参照してください。

COA報告とCOD報告は，MQFMT_XMIT_Q_HEADERのFormatフィールドを持つメッセージに対しては生成されません。

C言語では，MQFMT_XMIT_Q_HEADER_ARRAYも定義されています。これは，MQFMT_XMIT_Q_HEADERと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

このフィールドは，MQGET命令の出力用フィールドです。また，MQPUT命令とMQPUT1命令の入力用フィールドです。

このフィールドの長さは，MQ_FORMAT_LENGTHに定義されています。

このフィールドの初期値はMQFMT_NONEです。

●　GroupId（MQBYTE24型）　グループ識別子

物理メッセージが属する特定のメッセージグループまたは論理メッセージを識別するのに使用するバイト列です。GroupIdフィールドは，セグメント分割が許可されているときにも使用されます。ただし，すべてのケースでGroupIdフィールドはヌル以外の値であり，次に示すフラグの一つ以上がMsgFlagsフィールドに指定されていなければなりません。

MQMF_MSG_IN_GROUP

MQMF_LAST_MSG_IN_GROUP

MQMF_SEGMENT

MQMF_LAST_SEGMENT

MQMF_SEGMENTATION_ALLOWED

これらのフラグが一つも指定されない場合，GroupIdフィールドには特別なヌルの値であるMQGI_NONEが設定されます。

次の場合，アプリケーションによってMQPUT命令またはMQGET命令にGroupIdフィールドが設定される必要はありません。

MQPUT命令でMQPMO_LOGICAL_ORDERが指定された場合

MQGET命令でMQMO_MATCH_GROUP_IDが指定されない場合

報告メッセージではないメッセージに対して，MQPUT命令またはMQGET命令を使用するときには，上記のように命令を使用することをお勧めします。ただし，アプリケーションがさらに制御を必要としたり，MQPUT1命令を使用したりする場合，アプリケーションはGroupIdフィールドに適当な値が設定されていることを保証しなければなりません。

メッセージグループとセグメントはグループ識別子がユニークである場合だけ，正しく処理できます。このため，次に示す場合を除いては，アプリケーションによって自身のグループ識別子を生成しないでください。

MQPMO_LOGICAL_ORDERを指定すると，キューマネジャが自動的にグループの最初のメッセージまたは論理メッセージのセグメントにユニークなグループ識別子を生成します。その後，グループの残りのメッセージや論理メッセージのセグメントに対してそのグループ識別子を使用するので，アプリケーションが特別な処理をする必要がなくなります。MQPMO_LOGICAL_ORDERを指定できる場合は，指定することをお勧めします。

MQPMO_LOGICAL_ORDERを指定しない場合は，アプリケーションはグループメッセージまたは論理メッセージのセグメントに対する最初のMQPUT命令またはMQPUT1命令で，GroupIdフィールドにMQGI_NONEを指定して，キューマネジャにグループ識別子の生成を要求しなければなりません。出力値としてキューマネジャから返却されるグループ識別子は，グループの残りのメッセージや論理メッセージのセグメントに使用できます。メッセージグループにセグメント分割されたメッセージが含まれていれば，同一のグループ識別子がグループ内のすべてのセグメントとメッセージに使用されなければなりません。

MQPMO_LOGICAL_ORDERが指定されない場合，グループ内のメッセージや論理メッセージのセグメントはどんな順序（例：逆順）でも登録できますが，グループ識別子はそれらのメッセージに対して発行される最初のMQPUT命令またはMQPUT1命令で割り当てられなければなりません。

MQPUT命令またはMQPUT1命令で，キューマネジャはMQPMO構造体のMQPMO_LOGICAL_ORDERの表中に示される値を使用します。MQPUT命令またはMQPUT1命令で値を返す場合，オープンされているオブジェクトが単一のキューであり，配布リストではないときに，キューマネジャは，このフィールドにメッセージとともに送信される値を設定します。一方，オープンされているオブジェクトが配布リストのときは，フィールドの値は変更されません。配布リストがオープンされている場合，アプリケーションが生成されたグループ識別子を知る必要があるときは，GroupIdフィールドを含むMQPMR構造体を指定しなければなりません。

MQGET命令での入力について，キューマネジャはMQGMO構造体のMQGMO_LOGICAL_ORDERの表中に示される値を使用します。MQGET命令の出力について，キューマネジャはこのフィールドに取り出されたメッセージの値を設定します。

次の特別な値が定義されています。

MQGI_NONE

グループ識別子を指定しません。

この定数の値は2進数の0です。

グループに属さない，かつ論理メッセージのセグメントではなく，かつセグメント分割もできないメッセージに使用されます。

C言語では，MQGI_NONE_ARRAYも定義されています。これはMQGI_NONEと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

このフィールドの長さは，MQ_GROUP_ID_LENGTHに定義されています。

このフィールドの初期値はMQGI_NONEです。

このフィールドは，Versionフィールドの値がMQMD_VERSION_2以降の場合だけ有効です。

●　MsgFlags（MQLONG型）　メッセージフラグ

メッセージの属性を指定したり，処理を制御したりするフラグです。次のフラグがあります。

セグメンテーションフラグ

ステータスフラグ

デフォルトフラグ

セグメンテーションフラグ：

セグメンテーションフラグは，セグメント分割の際に使用されます。通常，メッセージがキューに対して大き過ぎる場合，キューへのメッセージ登録は失敗します。セグメント分割は，キューマネジャやアプリケーションがメッセージをセグメントと呼ばれる小さな部分に分割し，それぞれのセグメントを分離された物理メッセージとしてキューに配置する方法です。メッセージを取り出すアプリケーションは一つ一つセグメントを取り出すか，キューマネジャにセグメントをMQGET命令で返される単一のメッセージに組み立てさせることができます。メッセージを組み立てる場合は，MQGET命令でMQGMO_COMPLETE_MSGオプションを指定し，完全なメッセージを格納するのに十分なバッファを用意します。MQGMO_COMPLETE_MSGオプションの詳細は，この章の「MQGMO構造体　−　メッセージ取り出しオプション」を参照してください。メッセージのセグメント分割は，送信キューマネジャ，中間のキューマネジャまたはあて先キューマネジャで発生する可能性があります。

メッセージのセグメント分割を制御するために，次の値の一つを指定できます。

MQMF_SEGMENTATION_INHIBITED

セグメント分割の禁止

キューマネジャがメッセージをセグメント分割しないようにします。すでにセグメント分割されているメッセージが指定された場合，さらに小さなセグメントに分割することを防止できます。このフラグの初期値は2進数の0です。

MQMF_SEGMENTATION_ALLOWED

セグメント分割の許可

キューマネジャがメッセージをセグメント分割することを指定します。すでにセグメント分割されているメッセージが指定された場合，さらに小さなセグメントに分割することを許可します。MQMF_SEGMENTATION_ALLOWEDはMQMF_SEGMENTまたはMQMF_LAST_SEGMENTの指定なしで指定できます。

キューマネジャは，必要に応じてセグメント，つまり，必要となるヘッダデータを加算したものがキューに当てはまるように，メッセージをセグメント分割します。キューマネジャは次のような処理をします。

ユーザ定義フォーマットを16バイトの倍数の境界で分割します。

MQFMT_STRING以外の組み込みフォーマットは，データの属性に適応した個所で分割します。ただし，キューマネジャは，メッセージをMQヘッダ構造体の中間で分割しません。なお，2番目以降のキューマネジャによって生成されたセグメントは，次のうちの一つでだけ始まります。

　　MQヘッダ構造体

　　アプリケーションメッセージデータの開始

　　アプリケーションメッセージデータの一部

MQFMT_STRINGでは，データの属性（SBCS，DBCS，SBCS/DBCS）が混在していても，それに関係なく分割されます。文字列にDBCSまたはSBCS/DBCSが混在している場合，セグメントがある文字セットから別の文字セットに変換できません。

キューマネジャによって，各セグメントのMQMD構造体のFormatフィールド，CodedCharSetIdフィールド，およびEncodingフィールドは，セグメントの先頭からそのデータを正確に表すように設定されます。フォーマット名は組み込みフォーマットまたはユーザ定義フォーマットです。

0より大きいOffsetフィールドを持つセグメントのMQMD構造体のReportフィールドは次のように調整されます。

それぞれの報告タイプについて，報告オプションがMQRO_*_WITH_DATAであるが，セグメントがユーザデータ，つまり，MQヘッダ構造体に続くデータの最初の100バイトをまったく含むことができない場合，報告オプションはMQRO_*に変更されます。

キューマネジャは上記の規則に従いますが，それ以外は適当な単位でメッセージを分割します。キューマネジャが特定のメッセージの分割を選択する方法については，何も仮定されません。

TP1/Message Queueでは，キューマネジャは，次に示すようにトランザクションの中でだけセグメント分割できます。

MQPUT命令またはMQPUT1命令がユーザ定義のトランザクションで実行される場合，そのトランザクションが使用されます。命令がセグメント分割の処理中に失敗した場合，キューマネジャはその呼び出しによって，キューに入れられたセグメントを削除します。命令がセグメント分割の処理中に失敗しても，トランザクションは正常にコミットされます。

命令がトランザクション外で実行された場合，キューマネジャはセグメント分割の処理をしません。ただし，メッセージのセグメント分割が必要な場合，MQRC_UOW_NOT_AVAILABLEの理由コードで失敗します。

セグメント分割されたメッセージのデータ変換に関しては，次に示す考慮が必要です。

送信側での変換が，MCAに指定されたとき，MCAは論理メッセージのセグメントではないメッセージだけを変換します。MCAはセグメント分割されたメッセージの変換をすることはありません。

セグメンテーションフラグはMQPUT命令およびMQPUT1命令の入力フラグです。また，MQGET命令の出力フラグです。MQGET命令では，キューマネジャがフラグの値をMQGMO構造体のSegmentationフィールドにも反映します。

このフラグの初期値はMQMF_SEGMENTATION_INHIBITEDです。

ステータスフラグ：

ステータスフラグは，物理メッセージがメッセージグループに属するか，論理メッセージのセグメントか，その両方か，またはどちらでもないのかを示すフラグです。次に示す一つ以上の値を，MQPUT命令またはMQPUT1命令で指定し，MQGET命令で返すことができます。

MQMF_MSG_IN_GROUP

メッセージはグループのメンバです。

MQMF_LAST_MSG_IN_GROUP

メッセージはグループの最終論理メッセージです。

このフラグが設定されると，キューマネジャはメッセージとともに送信されるMQMD構造体のコピーに，MQMF_MSG_IN_GROUPを設定します。ただし，アプリケーションがMQPUT命令またはMQPUT1命令で作成したMQMD構造体にあるこれらのフラグの設定は変更しません。

グループがただ一つの論理メッセージで構成されることがあります。この場合，MQMF_LAST_MSG_IN_GROUPが設定されますが，MsgSeqNumberフィールドの値は1となります。

MQMF_SEGMENT

メッセージは論理メッセージのセグメントです。

MQMF_SEGMENTがMQMF_LAST_SEGMENTなしで指定された場合，MQヘッダ構造体が存在するときはその長さを除いたセグメントのアプリケーションメッセージデータ長は，小さくても1でなければなりません。長さが0の場合，MQPUT命令またはMQPUT1命令はMQRC_SEGMENT_LENGTH_ZEROとなり失敗します。

MQMF_LAST_SEGMENT

メッセージは論理メッセージの最終セグメントです。

このフラグが設定されると，キューマネジャは，メッセージとともに送信されるMQMD構造体の複写に，MQMF_SEGMENTを設定します。ただし，アプリケーションがMQPUT命令またはMQPUT1命令で作成したMQMD構造体のフラグの設定は変更しません。

論理メッセージがただ一つのセグメントで構成されることがあります。この場合，MQMF_SEGMENTが設定されますが，Offsetフィールドの値は0となります。MQMF_LAST_SEGMENTが指定された場合，MQヘッダ構造体が存在するときはその長さを除いたセグメントのアプリケーションメッセージのデータ長が0であることもあります。

アプリケーションは，メッセージ登録時に，これらのフラグが正しく設定されることを保証しなければなりません。キューハンドルに対して，MQPMO_LOGICAL_ORDERを指定する，または以前のMQPUT命令で指定していた場合，フラグの設定はそのキューハンドルに対してキューマネジャの保持しているグループとセグメントの情報と一致していなければなりません。MQPMO_LOGICAL_ORDERが指定されたとき，キューハンドルに対して成功するMQPUT命令には，次の条件が適用されます。

現在のグループ，および現在の論理メッセージがない場合，フラグのすべてとその組み合わせが正しくなければなりません。

いったんMQMF_MSG_IN_GROUPを指定すると，MQMF_LAST_MSG_IN_GROUPを指定するまでMQMF_MSG_IN_GROUPを指定しなければなりません。この条件が満たされない場合，MQRC_INCOMPLETE_GROUPの理由コードで失敗します。

いったんMQMF_SEGMENTを指定すると，MQMF_LAST_SEGMENTを指定するまでMQMF_SEGMENTを指定しなければなりません。この条件が満たされない場合，MQRC_INCOMPLETE_MSGの理由コードで失敗します。

いったんMQMF_SEGMENTをMQMF_MSG_IN_GROUPなしに指定すると，MQMF_LAST_SEGMENTを指定するまでMQMF_MSG_IN_GROUPを指定しないでください。この条件が満たされない場合，MQRC_INCOMPLETE_MSGの理由コードで失敗します。

フラグの正しい組み合わせとさまざまなフィールドに使用される値については，この章の「MQPMO構造体　−　メッセージ登録オプション」で，OptionsフィールドのMQPMO_LOGICAL_ORDERの表で示しています。

このフラグはMQPUT命令およびMQPUT1命令の入力フラグです。また，MQGET命令の出力フラグです。MQGET命令では，キューマネジャがフラグの値をMQGMO構造体のGroupStatusフィールドおよびSegmentStatusフィールドにも反映します。

デフォルトフラグ：

デフォルトフラグはメッセージのデフォルトの属性を示すために使用します。次の値は，メッセージがデフォルトの属性を持つことを示すために指定します。

MQMF_NONE

メッセージフラグなし（メッセージ属性の初期値）。

セグメント分割が禁止されている，かつメッセージがグループにも属さない，かつ論理メッセージのセグメントでもないことを示しています。MQMF_NONEはプログラムの文書化の目的で定義されています。値としては0が定義されていますが，プログラムを文書化する以外の目的はありません。

MsgFlagsフィールドはサブフィールドに分割されています。詳細は「付録D　報告オプションとメッセージフラグ」を参照してください。

このフィールドの初期値はMQMF_NONEです。

このフィールドは，Versionフィールドの値がMQMD_VERSION_2以降の場合だけ有効です。

●　MsgId（MQBYTE24型）　メッセージ識別子

MQGET命令では，取り出すメッセージのメッセージ識別子を指定します。通常，MQGET命令に指定したメッセージ記述子の，MsgIdフィールドとCorrelIdフィールドに該当する最初のメッセージが，キューマネジャによって返されます。ただし，特殊な定数値として，MQMI_NONEおよびMQCI_NONEを使用できます。

MQGET命令のメッセージ識別子としてMQMI_NONEを指定すると，どんなメッセージ識別子でも該当します。

MQGET命令の相関識別子としてMQCI_NONEを指定すると，どんな相関識別子でも該当します。

なお，MQGET命令では，キューから特定のメッセージを選択して取り出すために，次に示すフィールドを使用できます。

MsgId

CorrelId

GroupId

MsgSeqNumber

Offset

MsgIdフィールドは，これらのフィールドの一つとして使用されます。

通常，MQGET命令は，キューにある次のメッセージを取り出します。特定のメッセージが必要な場合には，選択規準として一つまたは複数のフィールドを任意の組み合わせで指定すれば，目的のメッセージを取得します。

したがって，アプリケーションでは，一つ以上のフィールドを必要な値に設定した上で，MQGMO構造体のMatchOptionsフィールドに対応するMQMO_*一致オプションを設定します。これによって，フィールドを選択基準として使用できるようになり，フィールドに指定した値を持つメッセージだけが取り出しの対象になります。アプリケーションでMQMO_*一致オプションを設定しない場合は，MatchOptionsフィールドのデフォルトでは，メッセージ識別子および相関識別子の二つが選択規準として使用されます。

注意事項

選択規準に該当するメッセージは，キュー内で順次に検索されます。このため，選択規準がないときよりも，取り出しに時間が掛かります。特に，該当するメッセージを発見するまでに多くのメッセージを検索するほど，時間が掛かります。

MQGET命令のGetMsgOpts引数でMQGMO_MSG_UNDER_CURSORオプションを指定した場合，このフィールドは無視されます。

MQGET命令が返されるとき，取り出したメッセージのメッセージ識別子が，MsgIdフィールドに設定されます。

MQPUT命令およびMQPUT1命令でMQMI_NONEオプションを指定した場合，登録したメッセージのメッセージ記述子に，ユニークなメッセージ識別子※がキューマネジャによって設定されます。設定されたメッセージ識別子は，それを送信したアプリケーションにも，メッセージ記述子の一部として返されます。アプリケーションは，特定のメッセージに関する情報を記録するために，この値を使用できます。また，アプリケーションのほかの部分からの問い合わせに対する応答にも使用できます。

注※

キューマネジャによって生成されるメッセージ識別子（MsgId）は，4バイトのプロダクト識別子と，それに続くプロダクト固有の文字列で構成されます。このMsgIdは，EBCDICコードまたはASCIIコードのA〜Iの範囲の文字で始まっています。アプリケーションでMsgIdを指定する場合は，キューマネジャによって生成される値との重複を避けるために，A〜I以外の文字で始まる文字列を指定してください。

メッセージが配布リストに登録された場合，キューマネジャは要求されたとおりにユニークなメッセージ識別子を生成します。ただし，MQMI_NONEが指定されている場合でも，MQMD構造体のMsgIdフィールドの値は返されるときも変更されません。アプリケーションがキューマネジャの生成したメッセージ識別子を知る必要がある場合，アプリケーションはMsgIdフィールドを含むMQPMRレコードを提供しなければなりません。

送信するアプリケーションは，MQMI_NONE以外の定数値も，メッセージ識別子として指定できます。ただし，MQMI_NONE以外の値では，キューマネジャによって，ユニークなメッセージ識別子は生成されません。メッセージを転送するアプリケーションが，登録元メッセージのメッセージ識別子を引き渡すために，この機能を使用できます。

キューマネジャは，次の場合を除いて，このフィールドを使用しません。

上記に示したように，要求に応じてユニークな値を生成する場合

メッセージを取り出したアプリケーションに値を返す場合

報告オプションに依存して，このメッセージに関連した報告を生成し，かつ報告メッセージのCorrelIdフィールドに値を複写する場合

キューマネジャまたはMCAによって報告が生成されるとき，登録元メッセージのReportフィールド（MQRO_NEW_MSG_IDまたはMQRO_PASS_MSG_ID）に従ってMsgIdが設定されます。アプリケーションが報告を生成するときも，同様の処理をする必要があります。

MQPER_PERSISTENTのメッセージでは，キューマネジャが再開始しても，メッセージ記述子は失われません。

このフィールドは，キューマネジャの文字セットの変換対象にはなりません。このフィールドは，文字列ではなく，ビット列として扱われます。

次の定数値を使用できます。

MQMI_NONE

メッセージ識別子を指定しません。

この定数の値は，2進数の0です。

C言語では，MQMI_NONE_ARRAYも定義されています。これは，MQMI_NONEと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

このフィールドは，MQGET命令，MQPUT命令，およびMQPUT1命令の入出力用のフィールドです。

このフィールドの長さは，MQ_MSG_ID_LENGTHに定義されています。

このフィールドの初期値はMQMI_NONEです。

●　MsgSeqNumber（MQLONG型）　メッセージシーケンス番号

グループ内の論理メッセージのシーケンス番号を表すフィールドです。シーケンス番号は1から始まり，グループ内の新しい論理メッセージごとに1ずつ加算されます。最大値は999999999です。グループに属さない物理メッセージのシーケンス番号は1です。次の場合，MsgSeqNumberフィールドは，MQPUT命令またはMQPUT1命令でアプリケーションによって設定される必要はありません。

MQPMO_LOGICAL_ORDERがMQPUT命令で指定される場合

MQMO_MATCH_MSG_SEQ_NUMBERがMQGET命令で指定されない場合

報告メッセージではないメッセージに対して，MQPUT命令またはMQGET命令を使用するときには，上記のように命令を使用することをお勧めします。ただし，アプリケーションがさらに制御を必要としたり，MQPUT1命令を使用したりする場合，アプリケーションはシーケンス番号が適当な値に設定してあることを保証しなければなりません。

MQPUT命令またはMQPUT1命令で，キューマネジャはMQPMO構造体のMQPMO_LOGICAL_ORDERの表中に示される値を使用します。MQPUT命令またはMQPUT1命令で値を返す場合，キューマネジャは，このフィールドにメッセージとともに送信される値を設定します。

MQGET命令での入力について，キューマネジャはMQGMO構造体のMQGMO_LOGICAL_ORDERの表中に示される値を使用します。MQGET命令の出力について，キューマネジャはこのフィールドに取り出されたメッセージの値を設定します。

このフィールドの初期値は1です。

このフィールドは，Versionフィールドの値がMQMD_VERSION_2以降の場合だけ有効です。

●　MsgType（MQLONG型）　メッセージタイプ

メッセージの種類を示します。メッセージタイプは次のように分けられます。

MQMT_SYSTEM_FIRST

システムが定義したメッセージタイプの最小値

MQMT_SYSTEM_LAST

システムが定義したメッセージタイプの最大値

次の値は，システムの範囲に定義されています。

MQMT_DATAGRAM

非問い合わせメッセージ

応答を要求しないメッセージです。

MQMT_REQUEST

問い合わせメッセージ

応答を要求するメッセージです。

応答を受け取りたいキューの名称を，ReplyToQフィールドに指定する必要があります。応答メッセージのReportフィールドには，応答メッセージのMsgIdとCorrelIdの設定方法が示されます。

MQMT_REPLY

直前の問い合わせメッセージに対する応答メッセージ

直前の問い合わせメッセージ（MQMT_REQUEST）へ応答するメッセージです。このメッセージは，問い合わせメッセージのReplyToQフィールドのキューへ登録します。問い合わせメッセージのReportフィールドには，応答メッセージのMsgIdとCorrelIdの設定方法が示されます。

注意事項

キューマネジャは，問い合わせに対する応答の有無について関知しません。アプリケーションの責任で行ってください。

MQMT_REPORT

報告メッセージ

各種の事象を報告するメッセージです。通常は，ほかのメッセージに関連して生成します。例えば，不正なデータを含んだ問い合わせメッセージを受信した場合などです。このメッセージは，登録元メッセージのメッセージ記述子のReplyToQフィールドのキューへ登録します。Feedbackフィールドには，報告の性質を示します。登録元メッセージのReportフィールドには，報告メッセージのMsgIdとCorrelIdの設定方法が示されます。

キューマネジャまたはMCAによって生成される報告メッセージは，FeedbackフィールドとCorrelIdフィールドに設定された値が使用されて，常にReplyToQのキューへ登録されます。

システムの範囲で上記以外の値は，MQIの次バージョン以降に定義されることがあります。それらの値は，MQPUT命令またはMQPUT1命令で，エラーが発生しないで受け付けられます。

また，アプリケーションで定義した値も使用できます。それらの値は，次の範囲で定義してください。

MQMT_APPL_FIRST

アプリケーションが定義できるメッセージタイプの最小値

MQMT_APPL_LAST

アプリケーションが定義できるメッセージタイプの最大値

MQPUT命令およびMQPUT1命令のMsgTypeフィールドには，システムの範囲かアプリケーションの範囲の値を使用してください。使用しない場合，理由コードMQRC_MSG_TYPE_ERRORで命令は失敗します。

このフィールドは，MQGET命令の出力用フィールドです。また，MQPUT命令とMQPUT1命令の入力用フィールドです。

このフィールドの初期値はMQMT_DATAGRAMです。

●　Offset（MQLONG型）　オフセット

論理メッセージのデータ部の先頭からの物理メッセージデータのオフセットです。このデータをセグメントと呼びます。オフセットは0〜999999999の範囲です。論理メッセージのセグメントではない物理メッセージは，0のオフセットを持ちます。

次の場合，Offsetフィールドは，MQPUT命令またはMQGET命令でアプリケーションによって設定される必要はありません。

MQPMO_LOGICAL_ORDERがMQPUT命令で指定される場合

MQMO_MATCH_OFFSETがMQGET命令で指定されない場合

報告メッセージではないメッセージに対して，MQPUT命令またはMQGET命令を使用するときには，上記のように命令を使用することをお勧めします。ただし，アプリケーションが上記の条件に合わなかったり，MQPUT1命令を使用したりする場合，アプリケーションはオフセットが適当な値に設定してあることを保証しなければなりません。

MQPUT命令またはMQPUT1命令で，キューマネジャはMQPMO構造体のMQPMO_LOGICAL_ORDERの表中で示される値を使用します。MQPUT命令またはMQPUT1命令で値を返す場合，キューマネジャは，このフィールドにメッセージとともに送信される値を設定します。

論理メッセージのセグメントに対する報告メッセージでは，MQOL_UNDEFINEDではない場合に生成されるOriginalLengthフィールドは，キューマネジャによって保持されているセグメント情報に関するオフセット値の更新に使用されます。

MQGET命令での入力について，キューマネジャはMQGMO構造体のMQGMO_LOGICAL_ORDERの表中で示される値を使用します。MQGET命令の出力で，キューマネジャはこのフィールドに取り出されたメッセージの値を設定します。

このフィールドの初期値は0です。

このフィールドは，Versionフィールドの値がMQMD_VERSION_2以降の場合だけ有効です。

●　OriginalLength（MQLONG型）　登録元メッセージ長

このフィールドはセグメントである報告メッセージにだけ関連します。報告メッセージが関連するメッセージセグメントの長さを指定します。セグメントによって構成されている論理メッセージの長さや，報告メッセージ中のデータの長さは指定しません。

注意事項

セグメントであるメッセージの報告メッセージを生成するときは，キューマネジャおよびメッセージチャネルエージェントが，元のメッセージからGroupId，MsgSeqNumber，OffsetおよびMsgFlagsフィールドを報告メッセージのMQMD構造体にコピーします。そのため，その報告メッセージもセグメントです。報告メッセージを生成するアプリケーションでは，同じことを実行し，OriginalLengthフィールドを正しく設定することをお勧めします。

次に示す特別な値があります。

MQOL_UNDEFINED

メッセージの元の長さが定義されていません。

このフィールドは，MQPUT命令やMQPUT1命令の入力用フィールドです。ただし，アプリケーションが指定する値は次に示す特定の場合にだけ受け入れられます。

登録されたメッセージがセグメントであり，報告メッセージでもある場合，キューマネジャはこのフィールドに指定された値を受け取ります。ただし，その値は次の条件を満たさなければなりません。

セグメントが最終セグメントではない場合，0より大きい

セグメントが最終セグメントの場合，0以上

メッセージのデータ長以上である

上記の条件が満たされない場合，MQRC_ORIGINAL_LENGTH_ERRORの理由コードで失敗します。

登録されるメッセージがセグメントであり，報告メッセージではない場合，キューマネジャはこのフィールドを無視して，アプリケーションメッセージ長を使用します。

そのほかの場合，キューマネジャはこのフィールドを無視してMQOL_UNDEFINEDを使用します。

OriginalLengthフィールドは，MQGET命令の出力用フィールドです。

このフィールドの初期値はMQOL_UNDEFINEDです。

このフィールドは，Versionフィールドの値がMQMD_VERSION_2以降の場合だけ有効です。

●　Persistence（MQLONG型）　メッセージ永続性

このフィールドは，システム障害後とキューマネジャを再度開始したあとにメッセージが残るかどうかを示します。MQPUT命令およびMQPUT1命令では，次のどれかの値を指定します。

MQPER_PERSISTENT

永続メッセージにします。

メッセージはシステム障害後とキューマネジャを再度開始したあとも残ります。いったんメッセージが登録され，登録側のトランザクションがコミットされると（メッセージがトランザクションの一部として登録される場合），そのメッセージは補助記憶装置に保存されます。メッセージがキューから取り出され，取り出し側のトランザクションがコミットされる（メッセージがトランザクションの一部として取り出される場合）まで残ります。

永続メッセージをリモートキューへ送信するときは，格納・転送機構が使用されて，次のキューマネジャへ到着するまでメッセージが保持されます。

永続メッセージは，一時動的キューに登録できません。永続的動的キューおよび定義済みキューに登録できます。

MQPER_NOT_PERSISTENT

非永続メッセージにします。

通常，メッセージはシステム障害後やキューマネジャを再度開始したあとに残りません。キューマネジャを再度開始するときにメッセージの完全なコピーが補助記憶装置で見つかった場合も適用されます。

MQPER_PERSISTENCE_AS_Q_DEF

省略時のメッセージ永続性を使用します。

クラスタキューの場合，MQOPEN命令で指定するMQOD構造体のObjectQMgrNameフィールドの値によって，使用される永続性が異なります。

メッセージがシステム転送キューに登録されるときに，DefPersistence属性の値がPersistenceフィールドにコピーされます。その後，DefPersistence属性が変更されても，キューに登録済みのメッセージは影響を受けません。

MQOD構造体のObjectQMgrNameフィールドに空白を指定した場合

あて先キュー（クラスタキュー）に定義されたDefPersistence属性の値が，メッセージ永続性として使用されます。

ただし，MQOD構造体のObjectNameフィールドにリモートキューのローカル定義を指定して，あて先キュー（クラスタキュー）へ名称解決される場合は，システム転送キューに定義されたDefPersistence属性の値が，メッセージ永続性として使用されます。

MQOD構造体のObjectQMgrNameフィールドにあて先キューマネジャを指定した場合

システム転送キューに定義されたDefPersistence属性の値が，メッセージ永続性として使用されます。

クラスタキュー以外の場合，あて先キューマネジャがリモートキューマネジャであっても，ローカルキューマネジャに定義されたあて先キューのDefPersistence属性の値がメッセージ永続性として使用されます。

メッセージが登録されたとき，DefPersistence属性の値がPersistenceフィールドに設定されます。そのあとにDefPersistence属性の値を変更しても，すでに登録したメッセージには影響しません。

キューの実名をたどるまでに複数の定義がある場合（クラスタキューに名称解決される場合を除きます），最初に登録したキューの定義のこの属性が，省略時のメッセージ永続性になります。この属性は，次に示すオブジェクトに適用されます。

別名キュー

ローカルキュー

リモートキューのローカル定義

キューマネジャの別名

転送キュー（例えば，DefXmitQNameキュー）

永続メッセージと非永続メッセージを，同じキューに格納できます。

応答を返す場合，アプリケーションは通常，問い合わせメッセージの永続性を応答メッセージに使用します。

MQGET命令で返される値は，MQPER_PERSISTENTまたはMQPER_NOT_PERSISTENTのどちらかです。

このフィールドは，MQGET命令の出力用フィールドです。また，MQPUT命令とMQPUT1命令の入力用フィールドです。

このフィールドの初期値はMQPER_PERSISTENCE_AS_Q_DEFです。

●　Priority（MQLONG型）　メッセージ優先度

MQPUT命令およびMQPUT1命令では，0以上の値か，次に示す値を指定してください。

MQPRI_PRIORITY_AS_Q_DEF

省略時のメッセージ優先度を使用します。

クラスタキューの場合，MQOPEN命令で指定するMQOD構造体のObjectQMgrNameフィールドの値によって，使用される優先度が異なります。

メッセージがシステム転送キューに登録されるときに，DefPriority属性の値がPriorityフィールドにコピーされます。その後，DefPriority属性が変更されても，キューに登録済みのメッセージは影響を受けません。

使用される優先度を次に示します。

MQOD構造体のObjectQMgrNameフィールドに空白を指定した場合

あて先キュー（クラスタキュー）に定義されたDefPriority属性の値が，メッセージ優先度として使用されます。

ただし，MQOD構造体のObjectNameフィールドにリモートキューのローカル定義を指定して，あて先キュー（クラスタキュー）へ名称解決される場合は，システム転送キューに定義されたDefPriority属性の値が，メッセージ優先度として使用されます。

MQOD構造体のObjectQMgrNameフィールドにあて先キューマネジャを指定した場合

システム転送キューに定義されたDefPriority属性の値が，メッセージ優先度として使用されます。

クラスタキュー以外の場合，あて先キューマネジャがリモートキューマネジャであっても，ローカルキューマネジャに定義されたあて先キューのDefPriority属性の値がメッセージ優先度として使用されます。

キューの実名をたどるまでに複数の定義がある場合（クラスタキューに名称解決される場合を除きます），最初に登録したキューの定義のこの属性が省略時のメッセージ優先度になります。この属性は，次に示すオブジェクトに適用されます。

別名キュー

ローカルキュー

リモートキューのローカル定義

キューマネジャの別名

転送キュー（例えば，DefXmitQNameキュー）

MQGET命令で返される値は，常に0以上です。MQPRI_PRIORITY_AS_Q_DEFは返されません。

ローカルキューマネジャに定義された最大値，つまり，キューマネジャのMaxPriority属性の値よりも大きな優先度でメッセージを登録した場合，メッセージは受け付けられますが，キューマネジャの優先度の最大値に置き換えられます。この場合，MQPUT命令およびMQPUT1命令は，完了コードMQCC_WARNING，理由コードMQRC_PRIORITY_EXCEEDS_MAXIMUMで終了します。ただし，Priorityフィールドには，メッセージを登録したアプリケーションで指定した値が残ります。

応答を返す場合，アプリケーションは通常，問い合わせメッセージの優先度を応答メッセージに使用します。また，MQPRI_PRIORITY_AS_Q_DEFを指定しても，アプリケーションを変更することなく優先度を調整できます。

このフィールドは，MQGET命令の出力用フィールドです。また，MQPUT命令とMQPUT1命令の入力用フィールドです。

このフィールドの初期値はMQPRI_PRIORITY_AS_Q_DEFです。

●　PutApplName（MQCHAR28型）　登録アプリケーション名

メッセージの登録元コンテキストの一部です。メッセージコンテキストについては，この章の「MQMD構造体　−　メッセージ記述子」の「概要」，およびマニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

MQPUT命令およびMQPUT1命令のPutMsgOpts引数でMQPMO_SET_ALL_CONTEXTを指定した場合，入出力用フィールドとなります。このフィールドのヌル文字以降の情報は破棄されます。ヌル文字以降の文字は，キューマネジャによって空白に置き換えられます。MQPMO_SET_ALL_CONTEXTを指定しなかった場合，このフィールドは入力時に無視されて出力専用フィールドとなり，このフィールドには実行中のユーザサーバ名が設定されます。

MQPUT命令またはMQPUT1命令が成功すると，このフィールドには，転送されたメッセージのPutApplNameが設定されます。メッセージにコンテキストがなかった場合，このフィールドは空白で埋められます。

MQGET命令では，出力用フィールドとなります。

このフィールドの長さは，MQ_PUT_APPL_NAME_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，28個の空白です。

●　PutApplType（MQLONG型）　登録アプリケーションタイプ

メッセージの登録元コンテキストの一部です。メッセージコンテキストについては，この章の「MQMD構造体　−　メッセージ記述子」の「概要」，およびマニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

次に示す標準のタイプを使用できます。また，ユーザが定義したタイプも使用できます。ただし，ユーザが定義できる値の範囲は，MQAT_USER_FIRSTからMQAT_USER_LASTまでです。

MQAT_AIX：AIXアプリケーション

MQAT_BROKER：ブローカ

MQAT_CICS：CICSトランザクション

MQAT_DOS：PC-DOSアプリケーション

MQAT_DQM：分散キューマネージャエージェント

MQAT_IMS：IMSアプリケーション

MQAT_JAVA：Java

MQAT_MVS：MVSまたはTSOアプリケーション

MQAT_OPEN_TP1：OpenTP1アプリケーション

MQAT_OS2：OS/2またはプレゼンテーションマネジャアプリケーション

MQAT_OS400：OS/400アプリケーション

MQAT_QMGR：キューマネジャ

MQAT_TMS_4V：TMS-4V/SPアプリケーション

MQAT_WINDOWS：16ビットWindowsアプリケーション

MQAT_WLM：z/OSワークロードマネジャアプリケーション

MQAT_XDM：XDMアプリケーション

MQAT_ZOS：z/OSアプリケーション

MQAT_DEFAULT

省略時のアプリケーションタイプ

アプリケーションが動作しているプラットフォームの，省略時のアプリケーションタイプです。TP1/Message Queueでは，MQAT_OPEN_TP1が仮定されます。

注意事項

この値は環境で定義する定数です。これによって，各プラットフォームに適切なヘッダ，インクルードファイル，およびコピーファイルを使用してコンパイルしたアプリケーションが実行できます。

MQAT_UNKNOWN

未知のアプリケーションタイプ

この値は，アプリケーションタイプがわからないときに使用できます。ほかのコンテキスト情報があってもかまいません。

MQAT_USER_FIRST

ユーザが定義できるアプリケーションタイプの最小値

MQAT_USER_LAST

ユーザが定義できるアプリケーションタイプの最大値

また，次の特殊な値もあります。

MQAT_NO_CONTEXT

メッセージにコンテキスト情報がありません。

この値は，メッセージにコンテキスト情報がない，つまり，MQPMO_*コンテキストオプションが指定されなかったときに，キューマネジャによって設定されます。

取り出したメッセージにコンテキスト情報があるかどうかを，PutApplTypeフィールドで調べることができます。ほかのどのコンテキストフィールドも空白ではない場合，MQPMO_SET_ALL_CONTEXTを使用したアプリケーションでは，PutApplTypeフィールドにMQAT_NO_CONTEXTを指定できません。

MQPUT命令およびMQPUT1命令のPutMsgOpts引数でMQPMO_SET_ALL_CONTEXTを指定した場合，入出力用フィールドとなります。MQPMO_SET_ALL_CONTEXTを指定しなかった場合，このフィールドは入力時に無視されて出力専用フィールドとなり，このフィールドには「15」が設定されます。「15」は，MQIヘッダファイル（cmqc.hまたはCMQV.cbl）に設定されている「MQAT_OPEN_TP1」または「MQAT-OPEN-TP1」の値です。cmqc.hまたはCMQV.cblを参照してください。

MQPUT命令またはMQPUT1命令が成功すると，このフィールドには，転送されたメッセージのPutApplTypeが設定されます。メッセージにコンテキストがなかった場合，MQAT_NO_CONTEXTが設定されます。

MQGET命令では，出力用フィールドとなります。

このフィールドの初期値はMQAT_NO_CONTEXTです。

●　PutDate（MQCHAR8型）　登録日付

メッセージの登録元コンテキストの一部です。メッセージコンテキストについては，この章の「MQMD構造体　−　メッセージ記述子」の「概要」，およびマニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

キューマネジャは，次の形式でこのフィールドを生成します。

YYYYMMDD

YYYY：年（4けたの10進数）

MM：月（01〜12の10進数）

DD：日（01〜31の10進数）

PutDateフィールドとPutTimeフィールドには，グリニッジ標準時（GMT）を使用します。システムの時計を正しく設定してください。

トランザクション内からメッセージを登録した場合，コミットした日付ではなく，登録した日付になります。

MQPUT命令およびMQPUT1命令のPutMsgOpts引数でMQPMO_SET_ALL_CONTEXTを指定した場合，入出力用フィールドとなります。このフィールドの内容は，キューマネジャによってチェックされません。ただし，フィールド内のヌル文字以降の情報は破棄されます。ヌル文字以降の文字は，キューマネジャによって空白に置き換えられます。MQPMO_SET_ALL_CONTEXTを指定しなかった場合，このフィールドは入力時に無視されて出力専用フィールドとなり，このフィールドにはメッセージを登録した日付が設定されます。

MQPUT命令またはMQPUT1命令が成功すると，このフィールドには転送されたメッセージのPutDateが設定されます。メッセージにコンテキストがなかった場合，このフィールドは空白で埋められます。

MQGET命令では，出力用フィールドとなります。

このフィールドの長さは，MQ_PUT_DATE_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，8個の空白です。

●　PutTime（MQCHAR8型）　登録時刻

メッセージの登録元コンテキストの一部です。メッセージコンテキストについては，この章の「MQMD構造体　−　メッセージ記述子」の「概要」，およびマニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

キューマネジャは，次の形式でこのフィールドを生成します。

HHMMSSTH

HH：時（00〜23の10進数）

MM：分（00〜59の10進数）

SS：秒（00〜59の10進数）

T：1/10秒 （0〜9の10進数）

H：1/100秒（0〜9の10進数）

PutDateフィールドとPutTimeフィールドには，グリニッジ標準時（GMT）を使用します。システムの時計を正しく設定してください。

トランザクション内からメッセージを登録した場合，コミットした時刻ではなく登録した時刻になります。

MQPUT命令およびMQPUT1命令のPutMsgOpts引数でMQPMO_SET_ALL_CONTEXTを指定した場合，入出力用フィールドとなります。このフィールドの内容は，キューマネジャによってチェックされません。ただし，フィールド内のヌル文字以降の情報は破棄されます。ヌル文字以降の文字は，キューマネジャによって空白に置き換えられます。MQPMO_SET_ALL_CONTEXTを指定しなかった場合，このフィールドは入力時に無視されて出力専用フィールドとなり，このフィールドにはメッセージを登録した時間が設定されます。

MQPUT命令またはMQPUT1命令が成功すると，このフィールドには転送されたメッセージのPutTimeが設定されます。メッセージにコンテキストがなかった場合，このフィールドは空白で埋められます。

MQGET命令では，出力用フィールドとなります。

このフィールドの長さは，MQ_PUT_TIME_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，8個の空白です。

●　ReplyToQ（MQCHAR48型）　応答キュー名

アプリケーションがMQMT_REPLYタイプとMQMT_REPORTタイプのメッセージを取り出すキューの名称です。ReplyToQMgrのキューマネジャに定義されたキューのローカル名称です。

MQPUT命令およびMQPUT1命令では，MsgTypeフィールドがMQMT_REQUESTのとき，またはReportフィールドで報告を要求したときに，このフィールドに空白を指定できません。ただし，ここで指定した値は，どんなタイプのメッセージの場合でも，それを取り出すアプリケーションに返されます。

ReplyToQMgrフィールドが空白の場合，ローカルキューマネジャは，ReplyToQと同じ名称のキューの定義を参照します。この名称のリモートキューのローカル定義があれば，転送されるメッセージのReplyToQの名称は，リモートキューのローカル定義のRemoteQName属性で置き換えられます。この値は，MQGET命令でメッセージを取り出すアプリケーションに，メッセージ記述子の一部として返されます。リモートキューのローカル定義がない場合，ReplyToQフィールドは変更されません。

名称を指定するとき，余りを空白で埋めることができます。また，最初のヌル文字以降の文字は，空白として扱われます。ただし，キューの名称の規則に従っているかどうかはチェックされません。これは，転送されるメッセージのReplyToQの名称が置き換えられた場合も同様です。名称を指定したかどうかが，必要時にチェックされるだけです。

応答キューが必要ない場合，ReplyToQフィールドには，次のどれかを指定してください。ただし，チェックはされません。

空白

ヌル文字列（C言語の場合）

ヌル文字で終了する幾つかの空白（C言語の場合）

このフィールドは，左詰めで指定します。

MQGET命令では，この名称は，フィールドの余りが常に空白で埋められて返されます。

報告を要求したメッセージが配布されなかった場合で，報告メッセージも指定したキューに登録されなかったときは，登録元メッセージも報告メッセージもデッドレターキューに転送されます。詳細については，「3.　オブジェクトの属性」の「キューマネジャの属性」でDeadLetterQName属性の説明を参照してください。

このフィールドは，MQGET命令の出力用フィールドです。また，MQPUT命令とMQPUT1命令の入力用フィールドです。

このフィールドの長さは，MQ_Q_NAME_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，48個の空白です。

●　ReplyToQMgr（MQCHAR48型）　応答キューマネジャ名

応答メッセージまたは報告メッセージを送信する先の，キューマネジャ名です。ReplyToQフィールドの値は，このキューマネジャに定義されたローカルキューの名称です。

ReplyToQMgrフィールドが空白の場合，ローカルキューマネジャは，ReplyToQと同じ名称のキューの定義を参照します。この名称のリモートキューのローカル定義があれば，転送されるメッセージのReplyToQMgrの名称は，リモートキューのローカル定義のRemoteQMgrName属性の値で置き換えられます。この値は，MQGET命令でメッセージを取り出すアプリケーションに，メッセージ記述子の一部として返されます。リモートキューのローカル定義がない場合，ReplyToQMgrフィールドはローカルキューマネジャの名称になります。

名称を指定するとき，余りを空白で埋めることができます。また，最初のヌル文字以降の文字は，空白として扱われます。ただし，キューマネジャの名称の規則に従っているかどうかはチェックされません。また，そのキューマネジャ名が送信先のキューマネジャで認識されているかどうかも，チェックされません。これは，転送されるメッセージのReplyToQMgrの名称が置き換えられた場合も同様です。オブジェクトの命名規則については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

応答キューが必要ない場合，ReplyToQMgrフィールドは，次のどれかを指定してください。ただし，チェックはされません。

空白

ヌル文字列（C言語の場合）

ヌル文字で終了する幾つかの空白（C言語の場合）

このフィールドは，左詰めで指定します。

MQGET命令では，この名称は，フィールドの余りが常に空白で埋められて返されます。

このフィールドは，MQGET命令の出力用フィールドです。また，MQPUT命令とMQPUT1命令の入力用フィールドです。

このフィールドの長さは，MQ_Q_MGR_NAME_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，48個の空白です。

●　Report（MQLONG型）　報告オプション

報告とは，登録元メッセージに関連して発生した各種の事象についてアプリケーションに通知するためのメッセージです。Reportフィールドを使用すると，登録元アプリケーションは次のことを指定できます。

どんな種類の報告メッセージが必要かを指定します。

報告メッセージ内にアプリケーションデータを組み込むかどうかを指定します。

報告メッセージまたは応答メッセージに，どのようにしてメッセージ識別子や相関識別子を設定するかを指定します。この場合は，報告と応答の両方で，Reportフィールドを使用できます。

次に示す6種類の報告から，一つまたは複数を指定できます。指定しなくてもかまいません。

例外

保持時間終了

到着確認

配布確認

肯定動作の通知

否定動作の通知

それぞれの種類の報告では，報告メッセージ内にアプリケーションデータを組み込むか組み込まないかの，どちらかを指定してください。複数の種類の報告メッセージが必要なとき，または，MsgIdとCorrelIdをどのように生成するかを制御したいときは，次のどちらかに従ってください。

それぞれを加算します。このとき，同じ値は2回以上加算しないでください。

プログラミング言語がビット演算をサポートしている場合，それぞれのビット論理和を取ります。

なお，オプションおよびその指定方法の一覧については，「付録A　命令および引数の一覧」を参照してください。

例外報告オプション：

MQRO_EXCEPTION

例外報告を要求します。

例外報告は，メッセージをほかのキューマネジャへ送信した場合で，あて先キューに到着しなかったときに，MCAによって生成されます。例えば，次のような場合です。

あて先キューまたは仲介する転送キューが満杯だった場合

キューに対してメッセージが長過ぎた場合

報告メッセージが生成されるのは，到着しなかったメッセージが，デッドレターキューに転送されたときだけです。デッドレターキューに転送されなかった場合，または，デッドレターキューを定義していなかった場合は，メッセージは転送キュー内に残ります。例外報告は生成されません。

MQPUT命令またはMQPUT1命令で返される理由コードで，直後にエラーが判明する場合は，例外報告は生成されません。

また，アプリケーションも例外報告を生成できます。この場合，取り出したメッセージを処理できないことを報告します。例えば，計算機使用料の貸方の限度額を超過したときなどに，メッセージを処理できないことを報告します。

登録元メッセージのデータは，報告メッセージ内に組み込まれません。

次に示すオプションは，MQRO_EXCEPTIONオプションと同時に指定できません。

MQRO_EXCEPTION_WITH_DATA

MQRO_EXCEPTION_WITH_FULL_DATA

MQRO_EXCEPTION_WITH_DATA

例外報告をデータ付きで要求します。

報告メッセージ内に登録元メッセージのアプリケーションデータが組み込まれることを除けば，MQRO_EXCEPTIONと同様です。登録元メッセージに一つ以上のMQヘッダ構造体がある場合，それらの構造体はアプリケーションデータの100バイトとともに，報告メッセージに格納されます。

次に示すオプションは，MQRO_EXCEPTION_WITH_DATAオプションと同時に指定できません。

MQRO_EXCEPTION

MQRO_EXCEPTION_WITH_FULL_DATA

MQRO_EXCEPTION_WITH_FULL_DATA

例外報告をデータ付きで要求します。

報告メッセージ内に，登録元メッセージのアプリケーションデータが組み込まれることを除けば，MQRO_EXCEPTIONと同様です。報告メッセージ内にアプリケーションデータをすべて組み込みます。

次に示すオプションは，MQRO_EXCEPTION_WITH_FULL_DATAオプションと同時に指定できません。

MQRO_EXCEPTION

MQRO_EXCEPTION_WITH_DATA

保持時間終了報告オプション：

MQRO_EXPIRATION

保持時間終了報告を要求します。

保持時間終了報告は，メッセージ保持時間（Expiryフィールド）を終了したメッセージが，アプリケーション配布前に破棄されたときに生成されます。この報告は，リモートキューマネジャによって生成されます。MQRO_EXCEPTIONオプションを指定していても，MQRO_EXPIRATIONオプションを指定しないと，メッセージ保持時間切れが原因でメッセージが破棄されても報告メッセージは生成されません。

登録元メッセージのデータは，報告メッセージ内に組み込まれません。

次に示すオプションは，MQRO_EXPIRATIONオプションと同時に指定できません。

MQRO_EXPIRATION_WITH_DATA

MQRO_EXPIRATION_WITH_FULL_DATA

MQRO_EXPIRATION_WITH_DATA

保持時間終了報告をデータ付きで要求します。

報告メッセージ内に登録元メッセージのアプリケーションデータが組み込まれることを除けば，MQRO_EXPIRATIONと同様です。登録元メッセージに一つ以上のMQヘッダ構造体がある場合，それらの構造体は100バイトのアプリケーションデータとともに，報告メッセージに格納されます。

次に示すオプションは，MQRO_EXPIRATION_WITH_DATAオプションと同時に指定できません。

MQRO_EXPIRATION

MQRO_EXPIRATION_WITH_FULL_DATA

MQRO_EXPIRATION_WITH_FULL_DATA

保持時間終了報告をデータ付きで要求します。

報告メッセージ内に登録元メッセージのアプリケーションデータが組み込まれることを除けば，MQRO_EXPIRATIONと同様です。

次に示すオプションは，MQRO_EXPIRATION_WITH_FULL_DATAオプションと同時に指定できません。

MQRO_EXPIRATION

MQRO_EXPIRATION_WITH_DATA

到着確認報告オプション：

MQRO_COA

到着確認報告を要求します。

到着確認報告は，あて先キューにメッセージが到着したときに生成されます。この報告は，あて先キューを管理するキューマネジャによって生成されます。

トランザクション内からメッセージを登録した場合で，あて先キューがローカルキューのときは，到着確認報告メッセージはトランザクションがコミットしたときに有効になります。

メッセージ記述子のFormatフィールドがMQFMT_DEAD_LETTER_HEADERの場合，到着確認報告は生成されません。これによって，配布できないでデッドレターキューへ転送されたメッセージのときに，到着確認報告が生成されるのを防ぎます。

登録元メッセージのデータは，報告メッセージ内に組み込まれません。

次に示すオプションは，MQRO_COAオプションと同時に指定できません。

MQRO_COA_WITH_DATA

MQRO_COA_WITH_FULL_DATA

MQRO_COA_WITH_DATA

到着確認報告をデータ付きで要求します。

報告メッセージ内に登録元メッセージのアプリケーションデータが組み込まれることを除けば，MQRO_COAと同様です。登録元メッセージに一つ以上のMQヘッダ構造体がある場合，それらの構造体は100バイトのアプリケーションデータとともに，報告メッセージに格納されます。

次に示すオプションは，MQRO_COA_WITH_DATAオプションと同時に指定できません。

MQRO_COA

MQRO_COA_WITH_FULL_DATA

MQRO_COA_WITH_FULL_DATA

到着確認報告をデータ付きで要求します。

報告メッセージ内に登録元メッセージのアプリケーションデータが含まれることを除けば，MQRO_COAと同様です。

次に示すオプションは，MQRO_COA_WITH_FULL_DATAオプションと同時に指定できません。

MQRO_COA

MQRO_COA_WITH_DATA

配布確認報告オプション：

MQRO_COD

配布確認報告を要求します。

配布確認報告は，アプリケーションによってメッセージが取り出され，キューから削除されたときに生成されます。この報告は，キューマネジャによって生成されます。

トランザクション内からメッセージが取り出された場合，配布確認報告メッセージは，そのトランザクションの処理の一部として生成されます。このため，トランザクションがコミットするまでは，報告は有効になりません。トランザクションがロールバックした場合，報告メッセージは通知されません。

メッセージ記述子のFormatフィールドがMQFMT_DEAD_LETTER_HEADERの場合，配布確認報告は生成されません。これによって，配布できないでデッドレターキューへ転送されたメッセージのときに，配布確認報告が生成されるのを防ぎます。

登録元メッセージのデータは，報告メッセージ内に組み込まれません。

次に示すオプションは，MQRO_CODオプションと同時に指定できません。

MQRO_COD_WITH_DATA

MQRO_COD_WITH_FULL_DATA

MQRO_COD_WITH_DATA

配布確認報告をデータ付きで要求します。

報告メッセージ内に登録元メッセージのアプリケーションデータが組み込まれることを除けば，MQRO_CODと同様です。元のメッセージに一つ以上のMQヘッダ構造体がある場合，それらの構造体は100バイトのアプリケーションデータとともに，報告メッセージに格納されます。

MQGMO_ACCEPT_TRUNCATED_MSGオプションを使用して，登録元データの後部が切り捨てられていた場合，報告メッセージデータの長さは切り捨てられた長さになります。

次に示すオプションは，MQRO_COD_WITH_DATAオプションと同時に指定できません。

MQRO_COD

MQRO_COD_WITH_FULL_DATA

MQRO_COD_WITH_FULL_DATA

配布確認報告をデータ付きで要求します。

報告メッセージ内に登録元メッセージのアプリケーションデータが組み込まれることを除けば，MQRO_CODと同様です

MQGMO_ACCEPT_TRUNCATED_MSGオプションを使用して登録元データの後部が切り捨てられていた場合，報告メッセージデータの長さは切り捨てられた長さになります。

次に示すオプションは，MQRO_COD_WITH_FULL_DATAオプションと同時に指定できません。

MQRO_COD

MQRO_COD_WITH_DATA

肯定動作または否定動作の報告オプション：

受信アプリケーションが肯定動作または否定動作の報告メッセージの送信を要求するために，次に示すオプションを指定できます。

MQRO_PAN

肯定動作を通知する報告が要求されました。

この形式の報告は，メッセージを取り出し，そのメッセージに対して動作するアプリケーションによって生成されます。メッセージで要求された動作は成功したことを示します。報告を生成するアプリケーションは，どんなデータでも報告の中に含めるかどうか決定できます。

メッセージを取り出すアプリケーションにこの要求を通知する以外に，キューマネジャはこのオプションに基づいて何もしません。報告は，取り出すアプリケーションの責任で生成してください。

MQRO_NAN

否定動作を通知する報告が要求されました。

この形式の報告は，メッセージを取り出し，そのメッセージに対して動作するアプリケーションによって生成されます。メッセージで要求された動作は成功しなかったことを示します。報告を生成するアプリケーションは，どんなデータでも報告の中に含めるかどうか決定できます。

メッセージを取り出すアプリケーションにこの要求を通知する以外に，キューマネジャはこのオプションに基づいて何もしません。報告は，取り出すアプリケーションの責任で生成してください。

肯定動作に対応する条件か，否定動作に対応する条件か決めるのはアプリケーションの責任です。しかし，もし要求が部分的に実行されたのであれば，PAN報告よりもNAN報告を生成することをお勧めします。また，すべての可能な条件は，肯定動作または否定動作の両方に対応させるのでなく，どちらかに対応させることをお勧めします。

MsgId設定用オプション：

報告メッセージまたは応答メッセージに，どのようにMsgIdを設定するかを次のオプションで指定できます。

MQRO_NEW_MSG_ID

メッセージ識別子を付け直します。

これは，メッセージ識別子を指定しないときのオプションです。このメッセージの結果で報告または応答が生成されたとき，報告メッセージまたは応答メッセージのメッセージ識別子は新しく付け直されます。

MQRO_PASS_MSG_ID

メッセージ識別子を引き渡します。

このメッセージの結果で報告または応答が生成されたとき，このメッセージのMsgIdが報告メッセージまたは応答メッセージのMsgIdフィールドへ複写されます。

このオプションを指定しなかった場合，MQRO_NEW_MSG_IDが仮定されます。

CorrelId設定用オプション：

報告メッセージまたは応答メッセージにどのようにCorrelIdを設定するかを，次のオプションで指定できます。

MQRO_COPY_MSG_ID_TO_CORREL_ID

メッセージ識別子の値を複写します。

これは，相関識別子を指定しないときのオプションです。このメッセージの結果で報告または応答が生成されたとき，このメッセージのメッセージ識別子の値が報告メッセージまたは応答メッセージのCorrelIdフィールドへ複写されます。

MQRO_PASS_CORREL_ID

相関識別子を引き渡します。

このメッセージの結果で報告または応答が生成されたとき，このメッセージのCorrelIdが，報告メッセージまたは応答メッセージのCorrelIdフィールドへ複写されます。

このオプションを指定しなかった場合，MQRO_COPY_MSG_ID_TO_CORREL_IDが仮定されます。

応答または報告を生成するサーバでは，登録元メッセージにMQRO_PASS_CORREL_IDおよびMQRO_PASS_MSG_IDオプションが指定されているかどうか，確認する必要があります。指定されていれば，オプションの説明の記述に従ってください。指定されていなければ，省略時の記述に従ってください。

後処理オプション：

アプリケーションから登録したメッセージをあて先キューに登録できない場合，次に示すオプションのどちらかを指定して，メッセージの後処理を制御できます。これらのオプションが適用されるのは，送信側アプリケーションが要求した場合に，例外報告メッセージが生成されるときだけです。アプリケーションは後処理オプションを，例外報告の要求とは無関係に設定できます。

MQRO_DEAD_LETTER_Q

メッセージをデッドレターキューに登録します。

これはデフォルトの動作であり，あて先キューに登録できないメッセージはデッドレターキューに登録されることを示します。送信側からの要求がある場合には，例外報告メッセージが生成されます。

MQRO_DISCARD_MSG

TP1/Message Queueでは意味がありません。

メッセージを廃棄します。

あて先キューに登録できないメッセージを廃棄することを示します。送信側からの要求がある場合には，例外報告メッセージが生成されます。

デッドレターキューに登録しないで送信側に元のメッセージを返す必要がある場合，送信側はMQRO_DISCARD_MSGをMQRO_EXCEPTION_WITH_FULL_DATAと同時に指定する必要があります。

TP1/Message Queueは，送信側からMQRO_DISCARD_MSGオプション付きの問い合わせメッセージを受信しても，MQRO_DEAD_LETTER_Qオプションの動作をします。両方指定しない場合，MQRO_DEAD_LETTER_Qオプションの動作をします。

デフォルトオプション：

次のオプションは，ほかに報告オプションを指定しない場合に指定できます。

MQRO_NONE

報告を要求しません。

MQRO_NONEは，ほかのオプションが指定されていないことを示すのに使用できます。なお，MQRO_NONEはプログラムの文書管理のために定義されています。ほかのオプションと一緒に指定しないでください。MQRO_NONEの値は0なので，これ以外の用途では使用できません。

Reportフィールド全般について：

指定した種類の報告だけが生成されることに注意してください。例えば，到着確認報告は必要であるが例外報告は必要ない場合，メッセージがあて先キューに格納されると到着確認報告が生成されます。しかし，メッセージが到着したときにあて先キューが満杯であっても，例外報告は生成されません。報告オプションを一つも指定しなかった場合，キューマネジャによってもMCAによっても，報告は生成されません。

報告オプションの中には，ローカルキューマネジャが認識していなくても指定できるものがあります。それは，そのオプションがあて先のキューマネジャで処理される場合です。詳細は，「付録D　報告オプションとメッセージフラグ」を参照してください。

報告メッセージを要求する場合，報告先のキュー名をReplyToQフィールドに指定する必要があります。

障害などで応答キューへ通知できない場合，報告メッセージはデッドレターキューへ転送されます。この転送も失敗した場合，またはデッドレターキューがなかった場合は，報告メッセージのタイプによって次のようになります。

・報告メッセージが例外報告の場合，例外報告を生成させたメッセージは転送キューに残っています。その場合，メッセージが消失しないことが保証されます。

・そのほかのタイプの報告メッセージは破棄され，通常どおりに処理が続行されます。これは，到着確認報告メッセージまたは配布確認報告メッセージがすでに配布されたことを示しています。または，保持時間終了報告は関係なくなったことを示しています。

報告メッセージがいったんキュー（通常は転送キュー）に格納されると，ほかの種類のメッセージと同様に扱われます。このため，登録元メッセージが永続メッセージだった場合，報告は永続メッセージとなり破棄されることはありません。

報告が生成されるとき，登録元メッセージのUserIdentifierのユーザ識別子でReplyToQのキューが登録用にオープンされます。ただし，次の場合は除きます。

・MCAが例外報告を生成するとき，登録元メッセージが登録されたときのユーザ識別子が使用されます。

・キューマネジャが到着確認報告を生成するとき，登録元メッセージが登録されたときのユーザ識別子が使用されます。

報告を生成するアプリケーションは，通常，応答を生成するときと同様のユーザ識別子を使用します。つまり，登録元メッセージのユーザ識別子を使用します。

報告先がリモートキューの場合，ほかのメッセージのときと同様に，報告が必要かどうかを送信側と受信側で選択できます。

報告をデータ付きで要求している場合，次のようになります。

・報告データは，後部を切り捨てられることはありません。応答キューに対して報告メッセージが長過ぎた場合，デッドレターキューへ転送されます。デッドレターキューに対しても長過ぎた場合，報告メッセージは破棄されます。

・登録元データのFormatフィールドがMQFMT_XMIT_Q_HEADERの場合，報告メッセージの100バイトのデータには，MQXQH構造体は含まれません。登録元メッセージのMQXQH構造体の後ろからの部分が，報告メッセージのデータになります。転送キューの場合も転送キュー以外の場合も同様です。

到着確認報告，配布確認報告，または保持時間終了報告を応答キューに受信すると，登録元メッセージが到着したこと，配布されたこと，または保持時間が終了したことが保証されます。報告を要求しても，それらを受信しなかった場合，要因として次の現象が考えられます。

a.　接続が切断されたため，報告が止まっています。

b.　仲介する転送キューまたは応答キューに，満杯，登録禁止などのブロック状態があるため，報告が止まっています。

c.　報告がデッドレターキューに転送されました。

d.　キューマネジャが報告を生成しようとしたときに，対応するキューにも，デッドレターキューにも登録できなかったため，報告を生成できませんでした。

e.　メッセージの該当する到着，配布，または保持時間終了の状態から報告を生成するまでに，キューマネジャの障害が発生しました。ただし，次の配布確認報告のときは例外です。トランザクション内から登録元メッセージを取り出した場合，同じトランザクションの処理として配布確認報告が生成されるので，該当しません。

例外報告が届かなかった場合，上記のa.，b.，c.の場合が該当します。MCAが要求された例外報告を生成できなかった場合，つまり，応答キューとデッドレターキューのどちらにも登録できなかった場合は，登録元メッセージは送信側の転送キューに残り，回線はクローズされます。これは，例外報告が送信側で生成された場合も，回線の受信側で生成された場合も同様です。

登録元メッセージが一時的にブロックされた場合は，例外報告が生成され，登録元メッセージはデッドレターキューへ転送されます。ブロック状態が解消されたあとに，アプリケーションがデッドレターキューから登録元メッセージを取り出し，再びあて先キューに登録したとします。この場合，次のように処理されます。

・例外報告が生成されても，実際にはメッセージがあて先キューに到着します。

・メッセージが別のブロックにぶつかると，一つの登録元メッセージに対して複数の例外報告が生成されます。

セグメント分割ができるメッセージへの報告メッセージ：

セグメントの分割ができるメッセージに，報告メッセージを要求できます。詳細は，「MsgFlagsフィールド」のMQMF_SEGMENTATION_ALLOWEDフラグの説明を参照してください。キューマネジャがメッセージのセグメント分割が必要であると判断した場合，適切な条件に合致する各セグメントに対して，報告メッセージが生成されます。したがって，アプリケーションは，要求した報告メッセージのそれぞれのタイプについて，複数の報告メッセージを受信できるようにしなければなりません。報告メッセージのGroupIdフィールドは，元のメッセージのグループ識別子となるので，複数の報告を関連づけできます。Feedbackフィールドは，それぞれの報告メッセージのタイプを識別するのに使用できます。

セグメントの報告メッセージを取り出す場合に，MQGMO_LOGICAL_ORDERを使用するとき，異なるタイプの報告がMQGET命令で返却されることに注意してください。例えば，COAとCODの両方の報告が，キューマネジャによってセグメント分割されたメッセージに要求されていた場合，報告メッセージに対するMQGET命令では，COAとCODの報告が不定の形式で挿入されることがあります。これは，MQGMO_COMPLETE_MSGオプションを使用すると避けられます。このとき，任意でMQGMO_ACCEPT_TRUNCATED_MSGオプションも使用できます。

MQGMO_COMPLETE_MSGを指定すると，キューマネジャは同じタイプの報告メッセージを組み立てます。例えば，最初のMQGET命令では元のメッセージに関連するすべてのCOAメッセージを組み立て，2番目のMQGET命令ではすべてのCODメッセージを組み立てることができます。なお，キューで最初に現れる報告メッセージが，最初に組み立てられます。

自分自身でセグメントを登録するアプリケーションは，各セグメントに異なる報告オプションを指定できます。ただし，次の点に注意してください。

・セグメントがMQGMO_COMPLETE_MSGオプションで取り出されると，先頭のセグメントの報告オプションだけが，キューマネジャに認識されます。

・セグメントが一つ一つ取り出され，そのすべてにCOD報告オプションが設定されていない場合，1回のMQGET命令で報告メッセージを取り出すためにMQGMO_COMPLETE_MSGオプションを使用したり，全報告メッセージが到着したのを確認するためにMQGMO_ALL_SEGMENTS_AVAILABLEオプションを使用したりすることはできません。

TP1/Message Queueのネットワークでは，キューマネジャはさまざまな機能を持っています。セグメント分割をサポートしていないキューマネジャやMCAによってセグメントに対する報告メッセージが生成されると，そのキューマネジャやMCAは報告メッセージに必要なセグメント情報を提供しないので，生成される報告メッセージの元となるメッセージを識別することが困難となります。これは，MQRO_*_WITH_DATAまたはMQRO_*_WITH_FULL_DATAオプションを指定し，報告メッセージにデータを要求することで解決できます。ただし，MQRO_*_WITH_DATAを指定すると，セグメント分割をサポートしていないキューマネジャまたはMCAによって，報告メッセージが生成されます。その場合，100バイト以下のアプリケーションデータが，報告メッセージを取り出すアプリケーションに返されることに注意してください。

報告メッセージのメッセージ記述子：

報告メッセージを取り出したとき，メッセージ記述子のFeedbackフィールドで報告の種類を判断できます。

キューマネジャまたはMCAによって報告が生成されるとき，報告メッセージのメッセージ記述子には，次の値が設定されます。

MQMD構造体のフィールド

値

StrucId

MQMD_STRUC_ID

Version

MQMD_VERSION_2

Report

MQRO_NONE

MsgType

MQMT_REPORT

Expiry

MQEI_UNLIMITED

Feedback

報告の種類に応じて

（MQFB_COA，MQFB_COD，MQFB_EXPIRATION，またはMQRC_*）

Encoding

登録元のメッセージ記述子から複写

CodedCharSetId

登録元のメッセージ記述子から複写

Format

登録元のメッセージ記述子から複写

Priority

登録元のメッセージ記述子から複写

Persistence

登録元のメッセージ記述子から複写

MsgId

登録元のメッセージ記述子の報告オプションどおり

CorrelId

登録元のメッセージ記述子の報告オプションどおり

BackoutCount

0

ReplyToQ

空白

ReplyToQMgr

空白

UserIdentifier

MQPMO_PASS_IDENTITY_CONTEXTオプションによって設定

AccountingToken

MQPMO_PASS_IDENTITY_CONTEXTオプションによって設定

ApplIdentityData

MQPMO_PASS_IDENTITY_CONTEXTオプションによって設定

PutApplType

MQAT_QMGR，またはMCAに応じた値

PutApplName

キューマネジャ名またはMCA名の先頭の28文字

PutDate

報告メッセージが送信された日付

PutTime

報告メッセージが送信された時刻

ApplOriginData

空白

GroupId

登録元のメッセージ記述子から複写

MsgSeqNumber

登録元のメッセージ記述子から複写

Offset

登録元のメッセージ記述子から複写

MsgFlags

登録元のメッセージ記述子から複写

OriginalLength

MQOL_UNDEFINEDでなければ，登録元のメッセージ記述子から複写される。それ以外の場合は，元のメッセージデータの長さが設定される。

報告を生成するアプリケーションは，ReplyToQMgrフィールドとコンテキストフィールドを除いて，同様の値を設定してください。ReplyToQMgrフィールドには空白を設定できます。また，コンテキストフィールドに設定する場合は，応答のときと同じオプションを使用します。通常，MQPMO_PASS_IDENTITY_CONTEXTオプションを使用します。

報告要求の有無の調査方法：

報告フィールドは，サブフィールドから構成されます。このため，ある報告が要求されているかどうかを調べる場合，次のどちらかの手順を踏んでください。

ビット演算をサポートしているプログラミング言語では，次の手順を踏んでください。

a.

次の値から，調べたい報告の種類を一つ選択します。

報告タイプ

値

到着確認

MQRO_COA_WITH_FULL_DATA

配布確認

MQRO_COD_WITH_FULL_DATA

例外

MQRO_EXCEPTION_WITH_FULL_DATA

保持時間終了

MQRO_EXPIRATION_WITH_FULL_DATA

ここで選択したものを，値Aと呼びます。

b.

報告フィールドの値と値Aの論理積を取ります。この結果を，値Bと呼びます。

c.

値Bが，調べたい報告の種類の各値と等しいかどうかを比較します。

例えば，値AがMQRO_EXCEPTION_WITH_FULL_DATAのとき，登録元が指定した報告タイプを調べるために，値Bを次のそれぞれと比較します。

　MQRO_NONE

　MQRO_EXCEPTION

　MQRO_EXCEPTION_WITH_DATA

　MQRO_EXCEPTION_WITH_FULL_DATA

どんな順序で比較してもかまいません。アプリケーションで任意の順序で比較できます。

MQRO_PASS_MSG_IDオプションまたはMQRO_PASS_CORREL_IDオプションを調べるときも，同様の手段を利用できます。値Aとして該当する定数を選択して，上記のとおり処理してください。

ビット演算をサポートしていないプログラミング言語では，次の手順を踏んでください。

a.

次の値から，調べたい報告の種類を一つ選択します。

報告タイプ

値

到着確認

MQRO_COA

配布確認

MQRO_COD

例外

MQRO_EXCEPTION

保持時間終了

MQRO_EXPIRATION

ここで選択したものを，値Aと呼びます。

b.

報告フィールドの値を，値Aで除算します。この結果を，値Bと呼びます。

c.

値Bを8で除算します。この結果を，値Cと呼びます。

d.

値Cを8で乗算し，それをBから減算します。この結果を，値Dと呼びます。

e.

値Dを値Aで乗算します。この結果を，値Eと呼びます。

f.

値Eが，調べたい報告の種類の各値と等しいかどうか比較します。

例えば，値AがMQRO_EXCEPTIONのとき，登録元が指定した報告タイプを調べるために，値Eを次のそれぞれと比較します。

　MQRO_NONE

　MQRO_EXCEPTION

　MQRO_EXCEPTION_WITH_DATA

　MQRO_EXCEPTION_WITH_FULL_DATA

どんな順序で比較してもかまいません。アプリケーションで任意の順序で比較できます。

この手段の擬似的なコード表現を，次に示します。

A　＝　MQRO_EXCEPTION

B　＝　Report／A

C　＝　B／8

D　＝　B−C＊8

E　＝　D＊A

MQRO_PASS_MSG_IDオプションまたはMQRO_PASS_CORREL_IDオプションを調べるときも，同様の手段を使用できます。値Aとして該当する定数を選択して，上記のとおり処理してください。ただし，ステップcおよびdの値8は，2で置き換えてください。

Reportフィールドは，MQGET命令の出力用フィールド，およびMQPUT命令とMQPUT1命令の入力用フィールドです。

このフィールドの初期値はMQRO_NONEです。

●　StrucId（MQCHAR4型）　構造体識別子

次の値を取ります。

MQMD_STRUC_ID

メッセージ記述子の構造体識別子

C言語では，MQMD_STRUC_ID_ARRAYも定義されています。これは，MQMD_STRUC_IDと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

これは入力用のフィールドです。

このフィールドの初期値はMQMD_STRUC_IDです。

●　UserIdentifier（MQCHAR12型）　ユーザ識別子

メッセージの識別コンテキストの一部です。メッセージコンテキストの詳細については，この章の「MQMD構造体　−　メッセージ記述子」の「概要」，およびマニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

UserIdentifierフィールドは，メッセージを最初に登録したアプリケーションのユーザ識別子を指定します。オブジェクトをオープンする場合のObjDesc引数のAlternateUserIdフィールドに，この情報を使用できます。

この情報は，キューマネジャでは文字データとして扱われます。ただし，データの形式は規定されません。MQOPEN命令でMQOO_ALTERNATE_USER_AUTHORITYを指定した場合，またはMQPUT1命令でMQPMO_ALTERNATE_USER_AUTHORITYを指定した場合は，キューマネジャによってこの情報が生成されるときに，ObjDesc引数のAlternateUserIdが使用されます。省略した場合，環境に依存するユーザ識別子として，TP1/Message Queueでは「OPENTP1」が使用されます。

通常，このフィールドはキューマネジャによって生成される出力用のフィールドです。しかし，MQPUTまたはMQPUT1命令の場合，このフィールドを入出力用のフィールドにして，キューマネジャに生成させる代わりにフィールドを指定できます。

MQPUTまたはMQPUT1命令の場合にキューマネジャにUserIdentifierフィールドを生成させないときは，PutMsgOpts引数にはMQPMO_SET_IDENTITY_CONTEXTまたはMQPMO_SET_ALL_CONTEXTのどちらかを指定します。また，UserIdentifierフィールドにユーザ識別子を指定します。

MQPUT命令およびMQPUT1命令のPutMsgOpts引数でMQPMO_SET_IDENTITY_CONTEXTまたはMQPMO_SET_ALL_CONTEXTを指定した場合，入出力用フィールドとなります。このフィールドのヌル文字以降の情報は破棄されます。ヌル文字以降の文字は，キューマネジャによって空白に置き換えられます。MQPMO_SET_IDENTITY_CONTEXTもMQPMO_SET_ALL_CONTEXTも指定しなかった場合，このフィールドは入力時に無視されて出力専用フィールドとなり，このフィールドには「OPENTP1△△△△△」が設定されます。△は空白を表します。

MQPUT命令またはMQPUT1命令が成功すると，このフィールドには，転送されたメッセージのUserIdentifierが設定されます。メッセージにコンテキストがなかった場合，このフィールドは空白で埋められます。

MQGET命令では，出力用フィールドとなります。

このフィールドの長さは，MQ_USER_ID_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，12個の空白です。

●　Version（MQLONG型）　構造体バージョン番号

次の値を取ります。

MQMD_VERSION_1

バージョン1のメッセージ記述子の構造体バージョン番号

MQMD_VERSION_2

バージョン2のメッセージ記述子の構造体バージョン番号

バージョン2構造体でだけ存在するフィールドがあります。

MQMD_VERSION_2以降の構造体にだけ存在するフィールドについては，そのことがフィールドの説明に記載されています。次に示す定数は，現在のバージョン番号を指定します。

MQMD_CURRENT_VERSION

現在のバージョンのメッセージ記述子の構造体バージョン番号

現在のバージョンのバージョン番号を指定します。

これは入力用のフィールドです。

このフィールドの初期値はMQMD_VERSION_1です。

MQMDE構造体　−　メッセージ記述子の拡張

MQMDE構造体は，次のフィールドから構成されます。

フィールド（データタイプ）

内容

初期値

StrucId（MQCHAR4型）

構造体識別子

MQMDE_STRUC_ID

Version（MQLONG型）

構造体バージョン番号

MQMDE_VERSION_2

StrucLength（MQLONG型）

構造体長

MQMDE_LENGTH_2

Encoding（MQLONG型）

MQMDE構造体に続くデータのマシンコード形式

MQENC_NATIVE

CodedCharSetId（MQLONG型）

MQMDE構造体に続くデータの文字セット識別子

MQCCSI_UNDEFINED

Format（MQCHAR8型）

MQMDE構造体に続くデータのフォーマット名

MQFMT_NONE

Flags（MQLONG型）

フラグ

MQMDEF_NONE

GroupId（MQBYTE24型）

グループ識別子

MQGI_NONE

MsgSeqNumber（MQLONG型）

メッセージシーケンス番号

1

Offset（MQLONG型）

オフセット

0

MsgFlags（MQLONG型）

メッセージフラグ

MQMF_NONE

OriginalLength（MQLONG型）

登録元メッセージ長

MQOL_UNDEFINED

概要

目的

MQMDE構造体には，アプリケーションメッセージデータに先行して発生することのあるデータを記述します。MQMDE構造体には，バージョン2のMQMD構造体に含まれるが，バージョン1のMQMD構造体には含まれないフィールドがあります。

フォーマット名

MQFMT_MD_EXTENSION

文字セットおよびマシンコード

MQMDE構造体のデータは，ローカルキューマネジャの文字セットおよびマシンコードに従います。それぞれキューマネジャのCodedCharSetId属性およびMQENC_NATIVEで指定します。

MQMDE構造体の文字セットとマシンコードは，次に示す構造体のCodedCharSetIdおよびEncodingフィールドに指定します。

MQMD構造体（MQMDE構造体がメッセージデータの先頭にある場合）

MQMDE構造体に先行するヘッダ構造体（その他の場合）

MQMDE構造体がキューマネジャの文字セットとマシンコードでない場合，MQMDE構造体は保存されますが認識されません。つまり，MQMDE構造体はメッセージデータとして扱われます。

使用方法

通常のアプリケーションでは，バージョン2のMQMD構造体を使用してください。バージョン2のMQMD構造体を使用する場合，MQMDE構造体を使用する必要はありません。しかし，特殊な用途のアプリケーションおよびバージョン1のMQMD構造体を引き続き使用するアプリケーションでは，特定の場合にMQMDE構造体を使用することがあります。次に示す場合に使用します。

MQPUTおよびMQPUT1命令で指定する場合

MQGET命令で返される場合

転送キューのメッセージに使用する場合

それぞれについて説明します。

MQPUTおよびMQPUT1命令でMQMDE構造体を指定する場合

MQPUT命令およびMQPUT1命令でアプリケーションがバージョン1のMQMD構造体を使用する場合について説明します。この場合，アプリケーションは，メッセージデータの前にMQMD構造体のMQMDE構造体が存在することを示すために，FormatフィールドにMQFMT_MD_EXTENSIONを設定します。アプリケーションがMQMDE構造体を指定しない場合，キューマネジャはMQMDE構造体のフィールドに初期値を仮定します。キューマネジャが使用する初期値は，構造体の初期値と同じです。

アプリケーションがバージョン2のMQMD構造体を使用し，アプリケーションメッセージデータの前にMQMDE構造体を置いた場合，MQMDE構造体は次のように処理されます。

MQPUTまたはMQPUT1命令でMQMDE構造体が指定された場合のキューマネジャの処理を次に示します。

MQMD構造体のバージョン

バージョン2のフィールドの値

MQMDE構造体の対応するフィールドの値

キューマネジャの処理

1

−

有効

MQMDE構造体を認識する。

2

初期値

有効

MQMDE構造体を認識する。

2

初期値以外

有効

MQMDE構造体をメッセージデータとして扱う。

1または2

任意

無効

命令が失敗し，該当する理由コードが戻る。

1または2

任意

MQMDE構造体が無効な文字セットまたはマシンコードで記述されている。または，サポートされていないバージョンである。

MQMDE構造体をメッセージデータとして扱う。

（凡例）

−：該当しません。

例外となる場合があります。アプリケーションがセグメントである場合，つまり，MQMF_SEGMENTまたはMQMF_LAST_SEGMENTフラグが設定されている場合，かつメッセージを登録するのにバージョン2のMQMD構造体を使用し，MQMD構造体のフォーマット名がMQFMT_DEAD_LETTER_HEADERである場合，キューマネジャはMQMDE構造体を生成し，MQDLH構造体とそれに続くデータの間に挿入します。キューマネジャがメッセージに関して保持するMQMD構造体では，バージョン2のフィールドは初期値に設定されます。

バージョン2のMQMD構造体には存在し，バージョン1のMQMD構造体には存在しない幾つかのフィールドが，MQPUT命令およびMQPUT1命令の入出力フィールドです。ただし，キューマネジャは，MQPUT命令およびMQPUT1命令の出力で，MQMDE構造体の同等のフィールドに値を返却しません。アプリケーションがその出力値を必要とする場合は，バージョン2のMQMD構造体を使用しなければなりません。

MQGET命令が返すMQMDE構造体

MQGET命令で，アプリケーションがバージョン1のMQMD構造体を使用する場合について説明します。この場合，キューマネジャは，返却するメッセージの前にMQMDE構造体を追加します。ただし，MQMDE構造体の一つ以上のフィールドが初期値以外の値を持つ場合です。キューマネジャは，MQMD構造体中のFormatフィールドをMQFMT_MD_EXTENSIONの値に設定し，MQMDE構造体があることを示します。

アプリケーションがBuffer引数の開始位置にMQMDE構造体を使用する場合，MQMDE構造体は無視されます。MQGET命令から返却されるとき，必要であれば，メッセージのMQMDE構造体で置き換えられます。MQMDE構造体が不要の場合は，アプリケーションメッセージデータで上書きされます。

MQGET命令でMQMDE構造体が返される場合，MQMDE構造体のデータは通常，キューマネジャの文字セットとマシンコードです。ただし次に示す場合，MQMDE構造体が異なる文字セットとマシンコードになることがあります。

MQMDE構造体がMQPUTまたはMQPUT1命令のデータとして扱われた場合

TCP接続で接続されたリモートキューマネジャからメッセージを受け取ったが，受信側のメッセージチャネルエージェント（MCA）が正しく設定されていなかった場合。詳細については，IBM MQのマニュアルを参照してください。

転送キューにあるメッセージのMQMDE構造体

転送キューにあるメッセージには，MQXQH構造体が前に付いています。そのMQXQH構造体にはバージョン1のMQMD構造体が含まれています。MQMDE構造体は一つ以上のフィールドで初期値以外の値を持つときだけ，MQXQH構造体とアプリケーションデータの間に存在します。

ほかのMQヘッダ構造体が，MQXQH構造体とアプリケーションデータの間に現れる場合もあります。例えば，MQDH構造体，またはMQDLH構造体が存在し，メッセージがセグメントではない場合，現れる順序は次のとおりです。

MQXQH構造体（バージョン1のMQMD構造体を含む）

MQDH構造体またはMQDLH構造体

MQMDE構造体

アプリケーションデータ

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　CodedCharSetId（MQLONG型）　文字セット識別子

MQMDE構造体に続くデータの文字セット識別子を指定します。MQMDE構造体自身の文字データには適用されません。

MQPUTまたはMQPUT1命令では，アプリケーションはデータに合った値をこのフィールドに設定する必要があります。キューマネジャは，このフィールドが有効であることをチェックしません。

MQCCSI_INHERIT

この構造体の文字セット識別子を引き継ぎます。

この構造体に続くデータの文字データは，この構造体と同じ文字セットです。

メッセージで送信される構造体のこの値を，キューマネジャは構造体の実際の文字セット識別子に変更します。エラーが発生しない場合，MQGET命令ではMQCCSI_INHERITは返されません。

MQMD構造体のPutApplTypeフィールドの値がMQAT_BROKERの場合，MQCCSI_INHERITは使用できません。

このフィールドの初期値はMQCCSI_UNDEFINEDです。

●　Encoding（MQLONG型）　マシンコード形式

MQMDE構造体に続くデータのマシンコード形式を指定します。MQMDE構造体自身の数値データには適用されません。

MQPUTまたはMQPUT1命令では，アプリケーションはデータに合った値をこのフィールドに設定する必要があります。キューマネジャは，このフィールドが有効であることをチェックしません。データのマシンコード形式については，この章の「MQMD構造体　−　メッセージ記述子」でEncodingフィールドを参照してください。

このフィールドの初期値はMQENC_NATIVEです。

●　Flags（MQLONG型）　フラグ

次のフラグを指定できます。

MQMDEF_NONE

フラグなし。

このフィールドの初期値はMQMDEF_NONEです。

●　Format（MQCHAR8型）　フォーマット名

MQMDE構造体に続くデータのフォーマット名を表すフィールドです。

MQPUTまたはMQPUT1命令では，アプリケーションはデータに合った値をこのフィールドに設定する必要があります。キューマネジャはこのフィールドが有効であることをチェックしません。データのフォーマット名については，この章の「MQMD構造体　−　メッセージ記述子」でFormatフィールドを参照してください。

このフィールドの初期値はMQFMT_NONEです。

●　GroupId（MQBYTE24型）　グループ識別子

グループ識別子については，この章の「MQMD構造体　−　メッセージ記述子」でGroupIdフィールドを参照してください。

このフィールドの初期値はMQGI_NONEです。

●　MsgFlags（MQLONG型）　メッセージフラグ

メッセージフラグについては，この章の「MQMD構造体　−　メッセージ記述子」でMsgFlagsフィールドを参照してください。

このフィールドの初期値はMQMF_NONEです。

●　MsgSeqNumber（MQLONG型）　メッセージシーケンス番号

グループ内の論理メッセージのシーケンス番号を表すフィールドです。メッセージシーケンス番号については，この章の「MQMD構造体　−　メッセージ記述子」でMsgSeqNumberフィールドを参照してください。

このフィールドの初期値は1です。

●　Offset（MQLONG型）　オフセット

論理メッセージの先頭からの物理メッセージのデータオフセットを表すフィールドです。オフセットについては，この章の「MQMD構造体　−　メッセージ記述子」でOffsetフィールドを参照してください。

このフィールドの初期値は0です。

●　OriginalLength（MQLONG型）　登録元メッセージ長

登録元メッセージ長については，この章の「MQMD構造体　−　メッセージ記述子」でOriginalLengthフィールドを参照してください。

このフィールドの初期値はMQOL_UNDEFINEDです。

●　StrucId（MQCHAR4型）　構造体識別子

次の値を取ります。

MQMDE_STRUC_ID

メッセージ記述子拡張構造体の識別子

C言語では，MQMDE_STRUC_ID_ARRAYも定義されています。これは，MQMDE_STRUC_IDと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

このフィールドの初期値はMQMDE_STRUC_IDです。

●　StrucLength（MQLONG型）　構造体長

次の値を取ります。

MQMDE_LENGTH_2

バージョン2のメッセージ記述子拡張構造体の長さ

このフィールドの初期値はMQMDE_LENGTH_2です。

●　Version（MQLONG型）　構造体バージョン番号

次の値を取ります。

MQMDE_VERSION_2

バージョン2のメッセージ記述子拡張構造体

次に示す値には，現在のバージョンのバージョン番号を指定してください。

MQMDE_CURRENT_VERSION

メッセージ記述子拡張構造体の現在のバージョン

このフィールドの初期値はMQMDE_VERSION_2です。

MQOD構造体　−　オブジェクト記述子

MQOD構造体は，次のフィールドから構成されます。

フィールド（データタイプ）

内容

初期値

StrucId（MQCHAR4型）

構造体識別子

MQOD_STRUC_ID

Version（MQLONG型）

構造体バージョン番号

MQOD_VERSION_1

ObjectType（MQLONG型）

オブジェクトタイプ

MQOT_Q

ObjectName（MQCHAR48型）

オブジェクト名

ヌル文字列/空白

ObjectQMgrName（MQCHAR48型）

オブジェクトキューマネジャ名

ヌル文字列/空白

DynamicQName（MQCHAR48型）

動的キュー名

アスタリスク（*）

AlternateUserId（MQCHAR12型）

代替ユーザ識別子

ヌル文字列/空白

RecsPresent（MQLONG型）※1

オブジェクトレコード数

0

KnownDestCount（MQLONG型）※1

ローカルキューの数

0

UnknownDestCount（MQLONG型）※1

リモートキューの数

0

InvalidDestCount（MQLONG型）※1

オープンに失敗したキューの数

0

ObjectRecOffset（MQLONG型）※1

最初のオブジェクトレコードまでのオフセット

0

ResponseRecOffset（MQLONG型）※1

最初の応答レコードまでのオフセット

0

ObjectRecPtr（MQPTR型）※1

最初のオブジェクトレコードのアドレス

ヌルポインタ/ヌル文字列

ResponseRecPtr（MQPTR型）※1

最初の応答レコードのアドレス

ヌルポインタ/ヌル文字列

AlternateSecurityId（MQBYTE40型）※2

代替セキュリティ識別子

MQSID_NONE

ResolvedQName（MQCHAR48型）※2

解決したキュー名称

ヌル文字列/空白

ResolvedQMgrName（MQCHAR48型）※2

解決したキューマネジャ名称

ヌル文字列/空白

注※1

Versionフィールドの値がMQOD_VERSION_2以降の場合だけ存在するフィールドです。

注※2

Versionフィールドの値がMQOD_VERSION_3以降の場合だけ存在するフィールドです。

概要

目的

MQOD構造体は，オブジェクトを名前で指定するために使用します。記述できるオブジェクトの種類を次に示します。

キューまたは配布リスト

プロセス定義

キューマネジャ

この構造体は，MQOPEN命令およびMQPUT1命令の入出力用の引数です。

バージョン

MQOD構造体のバージョンには1，2および3があります。しかし，すべての環境でMQOD_VERSION_3がサポートされているわけではありません。複数の環境にアプリケーションを移植する場合は，使用するバージョンのMQOD構造体が，すべての環境でサポートされている必要があります。MQOD_VERSION_2以降の構造体にだけ存在するフィールドについては，そのことをフィールドの説明に記載しています。

サポートするプログラミング言語のCOPYファイルとINCLUDEファイルでは，最新バージョンのMQOD構造体が提供されます。ただし，Versionフィールドの初期値はMQOD_VERSION_1です。バージョン1の構造体にないフィールドを使用する場合は，アプリケーションで使用したいバージョンの番号をVersionフィールドに設定してください。

配布リストをオープンするには，Versionフィールドの値がMQOD_VERSION_2以降でなければなりません。

文字セットおよびマシンコード

MQOD構造体のデータは，ローカルキューマネジャの文字セットおよびマシンコードに従います。それぞれ，キューマネジャのCodedCharSetId属性およびMQENC_NATIVEで指定します。TP1/Message Queue Accessのクライアントアプリケーションの場合，MQOD構造体はクライアントの文字セットとマシンコードに従います。

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　AlternateSecurityId（MQBYTE40型）　代替セキュリティ識別子

妥当な権限があるかどうかをチェックするために，AlternateUserIdと一緒に認証サービスに渡されるセキュリティ識別子です。

AlternateSecurityIdは次の場合にだけ使用されます。

MQOO_ALTERNATE_USER_AUTHORITYがMQOPEN命令に指定されるか，MQOO_ALTERNATE_USER_AUTHORITYがMQPUT1命令に指定される場合

AlternateUserIdフィールドの最初のヌル文字まで，またはフィールドの最後までのすべてが空白ではない場合

AlternateSecurityIdは，次に示す構造体を持ちます。

先頭バイトは後続データの長さを含むバイナリ整数値であり，その長さは，長さを示すバイト自身も含みます。セキュリティ識別子がない場合，長さは0です。

2番目のバイトはセキュリティ識別子のタイプを示し，次の値を取ることができます。

MQSIDT_NT_SECURITY_ID：Windowsセキュリティ識別子

MQSIDT_NONE：セキュリティ識別子ではありません。

3番目以降のバイトから，先頭バイトで定義された長さまでのバイトはセキュリティ識別子自身です。

残りのバイトはバイナリ0に設定されます。

次の値を指定できます。

MQSID_NONE

セキュリティ識別子は指定されません。

フィールドの長さ分バイナリ0の値です。

C言語では，MQSID_NONE_ARRAY定数も定義されています。MQSID_NONEと同じ値ですが，文字列ではなく，文字配列です。

これは入力用のフィールドです。

このフィールドの長さはMQ_SECURITY_ID_LENGTHです。

このフィールドの初期値はMQSID_NONEです。

このフィールドは，Versionフィールドの値がMQOD_VERSION_3以降の場合だけ有効です。

TP1/Message Queueではこのフィールドは意味を持ちません。

●　AlternateUserId（MQCHAR12型）　代替ユーザ識別子

次のどちらかの場合，このフィールドに代替ユーザ識別子を指定します。

MQOPEN命令でMQOO_ALTERNATE_USER_AUTHORITYを指定した場合

MQPUT1命令でMQPMO_ALTERNATE_USER_AUTHORITYを指定した場合

キューにAlternateUserIdが指定されている場合，キューマネジャは，メッセージが書き込まれるときにAlternateUserIdの値を使用します。MQPUT命令またはMQPUT1命令の呼び出しで指定されたMQPMO_*_CONTEXTオプションに従って識別コンテキスト情報を生成する場合，キューマネジャは，メッセージのMQMD構造体のUserIdentifierフィールドにAlternateUserIdの値を設定します。

代替ユーザ識別子は，実行中のアプリケーションのユーザ識別子の代わりとして使用されます。

MQOO_ALTERNATE_USER_AUTHORITYもMQPMO_ALTERNATE_USER_AUTHORITYも指定しなかった場合，このフィールドは無視されます。

これは入力用のフィールドです。

このフィールドの長さは，MQ_USER_ID_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，12個の空白です。

●　DynamicQName（MQCHAR48型）　動的キュー名

MQOPEN命令によって作成される動的キューの名前です。ObjectNameフィールドにモデルキューの名前が指定された場合だけに関係します。その他の場合，DynamicQNameフィールドは無視されます。

この名前で有効な文字はObjectNameフィールドと同じです。さらに，アスタリスクも有効です。ObjectNameフィールドがモデルキューの名前である場合は，すべて空白の名前（または最初のヌル文字の前が空白だけの名前）は無効です。

空白を除く名称の最後の文字がアスタリスク（*）の場合，キューマネジャは，アスタリスクをユニークな文字列に置き換えます。これによって，ローカルキューマネジャ内でユニークなキュー名が保証されます。この方法で十分な個数の名称を確保するために，アスタリスクの位置は1文字目から33文字目の間にしてください。アスタリスクのあとには，空白・ヌル文字以外の文字を指定できません。

アスタリスクを先頭に指定してもかまいません。この場合，名称のすべての文字がキューマネジャによって生成されます。ObjectNameフィールドにモデルキュー名を指定した場合，すべて空白の名称，または最初のヌル文字まで空白の名称は不正となります。

このフィールドの長さは，MQ_Q_NAME_LENGTHに定義されています。

これは，入力用のフィールドです。このフィールドの初期値は環境に依存します。TP1/Message Queueの場合の初期値は，C言語では，ヌル文字で終わる1文字のアスタリスクです。そのほかのプログラミング言語では，余りを空白で埋められた1文字のアスタリスクです。

●　InvalidDestCount（MQLONG型）　オープンに失敗したキューの数

配布リストの中で，オープンに失敗したキューの数です。このフィールドは，配布リストに存在しない単一のキューをオープンしたときにも設定されます。

InvalidDestCountフィールドは，MQOPEN命令またはMQPUT1命令のCompCode引数がMQCC_OKまたはMQCC_WARNINGのときだけ設定されます。CompCode引数がMQCC_FAILEDのときには設定されません。

これは出力用のフィールドです。

このフィールドの初期値は0です。

このフィールドは，Versionフィールドの値がMQOD_VERSION_2以降の場合だけ有効です。

●　KnownDestCount（MQLONG型）　ローカルキューの数

配布リストの中で，ローカルキューで受信され，オープンに成功したキューの数です。最初のメッセージ登録に使用される場合も，この値はリモートキューで受信されるキューを含みません。このフィールドは，配布リストには存在しない単一のキューをオープンしたときにも設定されます。

これは出力用のフィールドです。

このフィールドの初期値は0です。

このフィールドは，Versionフィールドの値がMQOD_VERSION_2以降の場合だけ有効です。

●　ObjectName（MQCHAR48型）　オブジェクト名

ObjectQMgrNameのキューマネジャに定義されたオブジェクトのローカル名です。

この名前には，次に示す文字を使用できます。

英大文字（A〜Z）

英小文字（a〜z）

数字（0〜9）

ピリオド（.），スラント（/），アンダスコア（_），パーセント（%）

名前の先頭および中間には，空白を使用できません。末尾には空白を使用できます。名前の中で有効なデータの末尾を示すためにヌル文字を使用できます。ヌル文字とそれに続く文字はすべて空白として処理されます。

次に示す点は，該当するオブジェクトタイプに適用されます。

ObjectNameフィールドがモデルキューの名前である場合，キューマネジャは，モデルキューの属性で動的キューを生成し，生成されたキューの名前をObjectNameフィールドに返します。モデルキューはMQOPEN命令にだけ指定できます。MQPUT1命令では無効です。

オープンされているオブジェクトが配布リストの場合（つまり，RecsPresentフィールドがあり，ゼロより大きい場合），ObjectNameフィールドは空白またはヌル文字列にする必要があります。条件が満たされない場合，命令は失敗し，理由コードMQRC_OBJECT_NAME_ERRORが返されます。

ObjectTypeフィールドにMQOT_Q_MGRを指定したときは，最初のヌル文字までまたはフィールドの最後までを，空白で埋める必要があります。

このフィールドは，MQOPEN命令でモデルキュー名を指定した場合は，入出力用のフィールドとなります。そのほかの場合は，入力専用のフィールドです。

このフィールドの長さは，MQ_Q_NAME_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，48個の空白です。

●　ObjectQMgrName（MQCHAR48型）　オブジェクトキューマネジャ名

ObjectNameのオブジェクトを定義している，キューマネジャの名称です。

この名前で有効な文字は，ObjectNameフィールドと同じです。最初のヌル文字またはフィールドの最後まで，全体が空白である名前は，アプリケーションが接続されるキューマネジャ（ローカルキューマネジャ）を表します。

次に示す項目は，該当するオブジェクトタイプに適用されます。

ObjectTypeフィールドがMQOT_PROCESSまたはMQOT_Q_MGRである場合は，ObjectQMgrNameフィールドは空白，またはローカルキューマネジャの名前にする必要があります。

ObjectNameフィールドにモデルキュー名を指定したときは，キューマネジャによってモデルキューの属性でキューが生成されます。このとき，生成されたキューを定義しているキューマネジャの名称がObjectQMgrNameフィールドに返されます。モデルキューは，MQOPEN命令のときだけ指定できます。MQPUT1命令では無効です。

ObjectNameがクラスタキューの名称で，かつObjectQMgrNameが空白の場合，MQOPEN命令で返却されたキューハンドルを使用して送信されたメッセージの実際のあて先はキューマネジャによって選択されます。

MQOO_BIND_ON_OPENが指定された場合，キューマネジャはMQOPEN命令の処理でクラスタキューの中にある特定のキューを選択し，そのキューハンドルを使用して登録したすべてのメッセージはそのキューに送信されます。

MQOO_BIND_NOT_FIXEDが指定された場合，そのキューハンドルを使用した後続のMQPUT命令では，クラスタ内の異なるキューマネジャ上に存在するあて先キューの中の異なるキューが選択される場合もあります。

アプリケーションが特定のクラスタキュー，つまり，クラスタ内の特定のキューマネジャ上に存在するキューにメッセージを送信する必要がある場合，アプリケーションはObjectQMgrNameフィールドに，そのキューマネジャ名称を指定する必要があります。これによって，ローカルキューマネジャは指定されたあて先キューマネジャにメッセージを送信します。

配布リストがオープンされている場合，つまり，RecsPresentが存在し，かつ0より大きい場合は，ObjectNameは空白かヌル文字列でなければなりません。それ以外では，理由コードMQRC_OBJECT_Q_MGR_NAME_ERRORで失敗します。

このフィールドは，MQOPEN命令でモデルキュー名を指定した場合は，入出力用のフィールドとなります。そのほかの場合は，入力専用のフィールドです。

ObjectQMgrNameフィールドの長さは，MQ_Q_MGR_NAME_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，48個の空白です。

●　ObjectRecOffset（MQLONG型）　最初のオブジェクトレコードまでのオフセット

MQOD構造体の先頭から最初のMQOR構造体のオブジェクトレコードのバイトオフセットです。

オフセットの値は正の場合も負の場合もあります。ObjectRecOffsetフィールドは，配布リストがオープンされているときだけ使用されます。RecsPresentフィールドが0であれば，無視されます。

配布リストがオープンされているとき，一つ以上のMQOR構造体のオブジェクトレコードの配列が配布リストのあて先キューの名称を指定するために指定されなければなりません。次に示すどちらかの方法で指定してください。

ObjectRecOffsetフィールドを使用して指定する方法

アプリケーションは，必要な要素のあるMQOR構造体のレコード配列が続くMQOD構造体を含む構造体を宣言しなければなりません。また，ObjectRecOffsetフィールドをMQOD構造体の開始からその配列の最初の要素までのオフセットに指定しなければなりません。このオフセットが正しく，値がMQLONGに収まることを確認してください（最も制限の強いプログラミング言語はCOBOL言語です。有効範囲は-999999999〜+999999999です）。

ObjectRecOffsetフィールドは，ポインタのデータ型をサポートしていない，または異なる環境に移植しない場合にポインタ型のデータ型を実装するプログラム言語（例：COBOL言語）でプログラミングするときに使用することをお勧めします。

ObjectRecPtrフィールドを使用する方法

アプリケーションは，MQOR構造体をMQOD構造体とは別に宣言できます。その後，ObjectRecPtrフィールドを配列のアドレスに設定します。

ObjectRecPtrフィールドは，異なる環境に移植する場合にポインタのデータ型を実装するプログラム言語（例：C言語）でプログラミングするときに使用することをお勧めします。

どちらの場合も，ObjectRecOffsetフィールドまたはObjectRecPtrフィールドのどちらか一つを使用しなければなりません。両方のフィールドが0，または両方のフィールドとも0以外の場合，MQRC_OBJECT_RECORDS_ERRORの理由コードで失敗します。

これは入力用のフィールドです。

このフィールドの初期値は0です。

このフィールドは，Versionフィールドの値がMQGMO_VERSION_2以降の場合だけ有効です。

●　ObjectRecPtr（MQPTR型）　最初のオブジェクトレコードのアドレス

最初のオブジェクトレコードのアドレスです。ObjectRecPtrフィールドは配布リストがオープンされたときだけ使用されます。RecsPresentフィールドが0の場合は無視されます。

ObjectRecPtrフィールドまたはObjectRecOffsetフィールドのどちらかをオブジェクトレコードに指定するのに使用できます。指定方法については，「ObjectRecOffsetフィールド」を参照してください。ObjectRecPtrフィールドを使用しない場合は，ヌルポインタかヌル文字列を設定しなければなりません。

これは入力用のフィールドです。

このフィールドの初期値は，ポインタをサポートしているプログラミング言語ではヌルポインタです。文字列の場合はヌル文字列となります。

このフィールドは，Versionフィールドの値がMQGMO_VERSION_2以降の場合だけ有効です。

注意事項

プログラミング言語がポインタのデータ型をサポートしていないオペレーティングシステムでは，このフィールドは，初期値がヌル文字列の適切な長さのバイト文字列として宣言されます。

●　ObjectType（MQLONG型）　オブジェクトタイプ

ObjectNameの名称を持つオブジェクトの種類です。次の値を指定できます。

MQOT_Q：キュー

MQOT_PROCESS：プロセス定義

MQOT_Q_MGR：キューマネジャ

これは入力用のフィールドです。

このフィールドの初期値はMQOT_Qです。

●　RecsPresent（MQLONG型）　オブジェクトレコード数

アプリケーションによって指定されたMQOR構造体のオブジェクトレコードの数です。この数が0より大きい場合，配布リストが，そのリスト中のあて先キューと同じ数だけ存在するRecsPresentフィールドに対してオープンされていることを示しています。ただし，配布リストがただ一つのあて先だけを含んでいる場合もあります。

RecsPresentフィールドの値は0より大きくなければなりません。また，その場合，ObjectTypeフィールドはMQOT_Qでなければなりません。この条件が満たされない場合，MQRC_RECS_PRESENT_ERRORの理由コードで失敗します。

これは入力用のフィールドです。

このフィールドの初期値は0です。

このフィールドは，Versionフィールドの値がMQGMO_VERSION_2以降の場合だけ有効です。

●　ResolvedQMgrName（MQCHAR48型）　解決したキューマネジャ名称

ローカルキューマネジャに定義される最終のあて先キューマネジャの名称です。

ローカルキューマネジャが名称解決を実行したあとのあて先キューマネジャの名前です。返される名前は，ResolvedQNameフィールドに指定されたキューを保持するキューマネジャの名前です。ResolvedQMgrNameフィールドは，ローカルキューマネジャの名前になることがあります。

空白でない値が返されるのは，オブジェクトが検索，入力または出力（またはこれらの組み合わせ）を目的にオープンされた単一のキューである場合だけです。オープンされているオブジェクトが次に示すどれかである場合，ResolvedQMgrNameフィールドは空白に設定されます。

キューではない場合

キューであるが，オープンの目的が検索，入力および出力のどれでもない場合

MQOO_BIND_NOT_FIXEDが指定されたクラスタキュー（または，キューのDefBind属性がMQBND_BIND_NOT_FIXEDのときのMQOO_BIND_AS_Q_DEF）

配布リストである場合

これは出力用のフィールドです。

このフィールドの長さはMQ_Q_NAME_LENGTHです。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，48個の空白です。

このフィールドは，Versionフィールドの値がMQOD_VERSION_3以降の場合だけ有効です。

●　ResolvedQName（MQCHAR48型）　解決したキュー名称

ローカルキューマネジャに知らされる最終のあて先キューの名称です。

ローカルキューマネジャが名称解決を実行したあとのあて先キューの名前です。返される名前は，ResolvedQMgrNameフィールドに指定されたキューマネジャが保持するキューの名前です。

空白でない値が返されるのは，オブジェクトが検索，入力または出力（またはこれらの組み合わせ）を目的にオープンされた単一のキューである場合だけです。オープンされているオブジェクトが次に示すどれかである場合，ResolvedQNameフィールドは空白に設定されます。

キューではない場合

キューであるが，オープンの目的が検索，入力および出力のどれでもない場合

配布リストである場合

これは出力用のフィールドです。

このフィールドの長さはMQ_Q_NAME_LENGTHです。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，48個の空白です。

このフィールドは，Versionフィールドの値がMQOD_VERSION_3以降の場合だけ有効です。

●　ResponseRecOffset（MQLONG型）　最初の応答レコードまでのオフセット

MQOD構造体の先頭から最初のMQRR構造体の応答レコードまでのバイトオフセットです。オフセットは正の場合も負の場合もあります。ResponseRecOffsetフィールドは，配布リストがオープンされているときだけ使用できます。RecsPresentフィールドが0の場合は無視されます。

配布リストがオープンされているとき，一つ以上のMQRR構造体の応答レコードの配列がオープンに失敗したキューと，その失敗の理由を特定するために指定されなければなりません。なお，オープンに失敗したキューはMQRR構造体のCompCodeフィールドに記述され，その失敗の理由はMQRR構造体のReasonフィールドに記述されます。

データは，キュー名称がオブジェクトレコードの配列に現れるのと同じ順序で応答レコードの配列に返されます。キューマネジャが応答レコードを設定するのは，命令の結果が混在しているときだけです。例えば，次のような場合です。

あるキューはオープンに成功しているが，ほかのキューが失敗していた場合

すべてのキューが失敗し，その理由が異なる場合

この場合，MQRC_MULTIPLE_REASONSの理由コードが出現します。同じ理由コードがすべてのキューに適用される場合，応答レコードは設定されません。応答レコードは任意で指定できます。ただし，指定する場合は，RecsPresentフィールドと同じ数だけ指定しなければなりません。

応答レコードはオブジェクトレコードと同じように，ResponseRecOffsetフィールドのオフセットまたはResponseRecPtrのアドレスを指定できます。指定方法については，「ObjectRecOffsetフィールド」を参照してください。ただし，ResponseRecOffsetフィールドとResponseRecPtrフィールドは一つ以上指定できません。どちらのフィールドも0以外の場合は，MQRC_RESPONSE_RECORDS_ERRORの理由コードで失敗します。

キューをオープンしたときのエラーと同様に，応答レコードは，MQPUT1命令でメッセージが配布リストのキューに送信されるときに発生したエラーに関する情報を返すのに使用されます。キューに対するオープン処理の完了コードがMQCC_OKまたはMQCC_WARNINGの場合だけ，キューに対する登録操作の完了コードと理由コードに置き換えます。

これは入力用のフィールドです。

このフィールドの初期値は0です。

このフィールドは，Versionフィールドの値がMQOD_VERSION_2以降の場合だけ有効です。

●　ResponseRecPtr（MQPTR型）　最初の応答レコードのアドレス

最初の応答レコードのアドレスです。このフィールドは，配布リストがオープンされたときだけ使用されます。RecsPresentフィールドが0の場合は無視されます。

応答レコードの指定には，ResponseRecPtrフィールドまたはResponseRecOffsetフィールドを同時に使用できません。詳細については，「ResponseRecOffsetフィールド」を参照してください。

ResponseRecPtrフィールドが使用されない場合，ヌルポインタかヌル文字列を設定しなければなりません。

これは入力用のフィールドです。

このフィールドの初期値は，ポインタをサポートしているプログラミング言語ではヌルポインタです。文字列の場合はヌル文字列です。

このフィールドは，Versionフィールドの値がMQOD_VERSION_2以降の場合だけ有効です。

注意事項

プログラミング言語がポインタのデータ型をサポートしていないオペレーティングシステムでは，このフィールドは，初期値がすべてヌル文字列の，適切な長さのバイト文字列として宣言されます。

●　StrucId（MQCHAR4型）　構造体識別子

次の値を取ります。

MQOD_STRUC_ID

オブジェクト記述子の構造体識別子

C言語では，MQOD_STRUC_ID_ARRAYも定義されています。これは，MQOD_STRUC_IDと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

これは入力用のフィールドです。

このフィールドの初期値はMQOD_STRUC_IDです。

●　UnknownDestCount（MQLONG型）　リモートキューの数

配布リストの中で，リモートキューで受信され，オープンに成功したキューの数です。このフィールドは，配布リストには存在しない単一のキューをオープンしたときにも設定されます。

これは出力用のフィールドです。

このフィールドの初期値は0です。

このフィールドは，Versionフィールドの値がMQOD_VERSION_2以降の場合だけ有効です。

●　Version（MQLONG型）　構造体バージョン番号

次の値を取ります。

MQOD_VERSION_1

バージョン1のオブジェクト記述子の構造体バージョン番号

MQOD_VERSION_2

バージョン2のオブジェクト記述子の構造体バージョン番号

MQOD_VERSION_3

バージョン3のオブジェクト記述子の構造体バージョン番号

MQOD_VERSION_2以降の構造体にだけ存在するフィールドについては，そのことがフィールドの説明に記載されています。次に示す定数は，現在のバージョン番号を指定します。

MQOD_CURRENT_VERSION

現在のバージョンのオブジェクト記述子の構造体バージョン番号

これは入力用のフィールドです。

このフィールドの初期値はMQOD_VERSION_1です。

MQOR構造体　−　オブジェクトレコード

MQOR構造体は，次のフィールドから構成されます。

フィールド（データタイプ）

内容

初期値

ObjectName（MQCHAR48型）

オブジェクト名

ヌル文字列/空白

ObjectQMgrName（MQCHAR48型）

オブジェクトキューマネジャ名

ヌル文字列/空白

概要

目的

MQOR構造体は，単一のあて先キューのキュー名およびキューマネジャ名を指定するのに使用されます。MQOR構造体は，MQOPENおよびMQPUT1命令の入力用の構造体です。

文字セットおよびマシンコード

MQOR構造体のデータは，ローカルキューマネジャの文字セットおよびマシンコードに従います。それぞれ，キューマネジャのCodedCharSetId属性およびMQENC_NATIVEで指定します。TP1/Message Queue Accessのクライアントアプリケーションの場合，MQOD構造体はクライアントの文字セットとマシンコードに従います。

使用方法

MQOPEN命令に構造体の配列を提供することによって，キューのリストをオープンできます。このリストを配布リストといいます。キューのオープンに成功し，MQOPEN命令で返されたキューハンドルを使用してメッセージを登録すると，各メッセージはリストの各キューに格納されます。

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　ObjectName（MQCHAR48型）　オブジェクト名

次に示す項目を除いて，MQOD構造体のObjectNameフィールドと同じです。

キュー名である。

モデルキュー名ではない。

これは常に入力用のフィールドです。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかの言語では，48個の空白です。

●　ObjectQMgrName（MQCHAR48型）　オブジェクトキューマネジャ名

MQOD構造体のObjectQMgrNameフィールドと同じです。

これは常に入力用のフィールドです。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかの言語では，48個の空白です。

MQPMO構造体　−　メッセージ登録オプション

MQPMO構造体は，MQPUT命令およびMQPUT1命令の入出力用の引数です。次のフィールドから構成されます。

フィールド（データタイプ）

内容

初期値

StrucId（MQCHAR4型）

構造体識別子

MQPMO_STRUC_ID

Version（MQLONG型）

構造体バージョン番号

MQPMO_VERSION_1

Options（MQLONG型）

登録オプション

MQPMO_NONE

Timeout（MQLONG型）

（予備）

−1

Context（MQHOBJ型）

コンテキスト

0

KnownDestCount（MQLONG型）

ローカルキューの数

0

UnknownDestCount（MQLONG型）

リモートキューの数

0

InvalidDestCount（MQLONG型）

送信に失敗したキューの数

0

ResolvedQName（MQCHAR48型）

受信キュー名

ヌル文字列/空白

ResolvedQMgrName（MQCHAR48型）

受信キューマネジャ名

ヌル文字列/空白

RecsPresent（MQLONG型）※

登録メッセージレコード数または応答レコード数

0

PutMsgRecFields（MQLONG型）※

MQPMR構造体フィールドの存在

MQPMRF_NONE

PutMsgRecOffset（MQLONG型）※

最初の登録メッセージレコードまでのオフセット

0

ResponseRecOffset（MQLONG型）※

最初の応答レコードまでのオフセット

0

PutMsgRecPtr（MQPTR型）※

最初の登録メッセージレコードのアドレス

ヌルポインタ/ヌル文字列

ResponseRecPtr（MQPTR型）※

最初の応答レコードのアドレス

ヌルポインタ/ヌル文字列

注※

Versionフィールドの値がMQPMO_VERSION_2以降の場合だけ存在するフィールドです。

概要

目的

MQPMO構造体によって，アプリケーションはメッセージのキューへの格納方法を制御できます。この構造体は，MQPUTおよびMQPUT1命令の入出力用の引数です。

バージョン

MQPMO構造体のバージョンには1および2があります。しかし，すべての環境でMQPMO_VERSION_2がサポートされているわけではありません。複数の環境にアプリケーションを移植する場合は，使用するバージョンのMQPMO構造体が，すべての環境でサポートされている必要があります。MQPMO_VERSION_2以降の構造体にだけ存在するフィールドについては，そのことをフィールドの説明に記載しています。

サポートするプログラミング言語のCOPYファイルとINCLUDEファイルでは，最新バージョンのMQPMO構造体が提供されます。しかし，Versionフィールドの初期値はMQPMO_VERSION_1です。バージョン1の構造体にないフィールドを使用する場合は，アプリケーションで使用したいバージョンの番号をVersionフィールドに設定してください。

文字セットおよびマシンコード

MQPMO構造体のデータは，ローカルキューマネジャの文字セットおよびマシンコードに従います。それぞれ，キューマネジャのCodedCharSetId属性およびMQENC_NATIVEで指定します。TP1/Message Queue Accessのクライアントアプリケーションの場合，MQPMO構造体はクライアントの文字セットとマシンコードに従います。

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　Context（MQHOBJ型）　コンテキスト

入力キューのオブジェクトハンドルです。

MQPMO_PASS_IDENTITY_CONTEXTまたはMQPMO_PASS_ALL_CONTEXTを指定した場合，このフィールドに入力キューハンドルを指定します。登録するメッセージのコンテキスト情報は，そのキューハンドルから取得されます。

MQPMO_PASS_IDENTITY_CONTEXTもMQPMO_PASS_ALL_CONTEXTも指定しなかった場合，このフィールドは無視されます。

これは入力用のフィールドです。

このフィールドの初期値は0です。

●　InvalidDestCount（MQLONG型）　送信に失敗したキューの数

配布リスト中のキューの中で，送信できなかったメッセージの数です。オープンは成功したが登録に失敗したキューや，オープンに失敗したキューの数も含まれます。このフィールドは配布リストではない単一のキューへの登録時にも設定されます。

注意事項

このフィールドは，MQPUT命令またはMQPUT1命令のCompCode引数がMQCC_OKまたはMQCC_WARNINGの場合だけ設定されます。CompCode引数がMQCC_FAILEDの場合は設定されません。

これは出力用のフィールドです。

このフィールドの初期値は0です。

なお，このフィールドは，VersionフィールドがMQPMO_VERSION_2より前の場合は設定されません。

●　KnownDestCount（MQLONG型）　ローカルキューの数

配布リストの中で，MQPUT命令またはMQPUT1命令による，ローカルキューであるキューへの送信が成功したキューの数を示しています。ローカルな転送キューが最初のメッセージ登録に使用された場合も，値はリモートキューで受信されるキューは含みません。このフィールドは配布リストではない単一のキューへの登録時にも設定されます。

これは出力用のフィールドです。

このフィールドの初期値は0です。

なお，このフィールドは，VersionフィールドがMQPMO_VERSION_2より前の場合は設定されません。

●　Options（MQLONG型）　登録オプション

MQPUT命令およびMQPUT1命令の動作を制御します。

指定できるオプションを説明します。なお，指定しなくてもかまいません。二つ以上の値を指定する場合は，次のどちらかに従ってください。

それぞれを加算します。ただし，同じ値は2回以上加算しないでください。

プログラミング言語がビット演算をサポートしている場合に，それぞれのビット論理和を取ります。

同時に指定できない組み合わせは，そのつど示します。それ以外の組み合わせは自由です。オプションおよびその指定方法の一覧については，「付録A　命令および引数の一覧」を参照してください。

同期点オプション：

MQPUTまたはMQPUT1命令のトランザクションへの参加に関連するオプションを次に示します。

MQPMO_SYNCPOINT

同期点でメッセージを登録します。

通常のトランザクションの範囲内で登録します。トランザクションがコミットするまでは，トランザクション内から登録したメッセージは有効になりません。トランザクションがロールバックすると，メッセージは取り消されます。

このオプションは，ローカルキューマネジャが同期点処理をサポートしているときだけ指定できます。同期点処理をサポートしていないキューマネジャでMQPMO_SYNCPOINTを指定した場合，完了コードMQCC_FAILED，理由コードMQRC_SYNCPOINT_NOT_AVAILABLEで命令は終了します。同期点の取得とトランザクションについては，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

このオプションとMQPMO_NO_SYNCPOINTオプションのどちらも指定しなかった場合，登録命令がトランザクション内に含められるかどうかは，環境に依存します。TP1/Message Queueでは，この命令をトランザクション内から呼び出したかどうかで，省略時にトランザクション内に含められるかどうかが決まります。省略時の動作が環境によって異なるため，移植を考慮するアプリケーションでは，オプションを省略しないでください。つまり，MQPMO_SYNCPOINTオプションかMQPMO_NO_SYNCPOINTオプションを，明確に指定してください。

MQPMO_NO_SYNCPOINTオプションと同時にMQPMO_SYNCPOINTオプションを指定できません。

MQPMO_NO_SYNCPOINT

同期点の処理なしでメッセージを登録します。

通常のトランザクションの範囲外で登録します。メッセージは登録直後から有効になります。トランザクションがロールバックしても，メッセージは取り消されません。

このオプションとMQPMO_SYNCPOINTオプションのどちらも指定しなかった場合，登録命令がトランザクション内に含められるかどうかは，環境に依存します。TP1/Message Queueでは，この命令をトランザクション内から呼び出したかどうかで，省略時にトランザクション内に含められるかどうかが決まります。省略時の動作が環境によって異なるため，移植を考慮するアプリケーションでは，オプションを省略しないでください。つまり，MQPMO_SYNCPOINTオプションかMQPMO_NO_SYNCPOINTオプションのどちらかを，明確に指定してください。

MQPMO_NO_SYNCPOINTオプションと同時にMQPMO_SYNCPOINTオプションを指定できません。

同期点のオプションとキューマネジャのSyncPoint属性の関係を，次の表に示します。

キューマネジャの

SyncPoint属性

MQPUT/MQPUT1

命令の呼び出し位置

MQPUT/MQPUT1命令の

同期点のオプション

MQPMO_

SYNCPOINT

MQPMO_

NO_SYNCPOINT

省略

MQSP_AVAILABLE

トランザクション内

1

2

1

トランザクション外

×

2

2

MQSP_NOT_AVAILABLE

トランザクション内

×

2

×

トランザクション外

×

2

2

（凡例）

1：命令はトランザクション内に含まれます。

2：命令はトランザクション内に含まれません。

×：命令は理由コードMQRC_SYNCPOINT_NOT_AVAILABLEで失敗します。

メッセージ識別子および相関識別子オプション：

キューマネジャに新しいメッセージ識別子または相関識別子を生成させるオプションを次に示します。

MQPMO_NEW_MSG_ID

新しいメッセージ識別子を生成します。

MQMD構造体のMsgIdフィールドの内容を新しいメッセージ識別子に置き換えるように，キューマネジャに指定します。メッセージ識別子はメッセージとともに送信され，MQPUT命令またはMQPUT1命令の出力でアプリケーションに返されます。

このオプションは，メッセージが配布リストに登録されるときにも指定できます。この章の「MQPMR構造体　−　登録メッセージレコード」のMsgIdフィールド参照してください。

MQPMO_NEW_MSG_IDを指定すると，アプリケーションはMQPUT命令またはMQPUT1命令に先立って，MsgIdフィールドをMQMI_NONEにリセットする必要がなくなります。

MQPMO_NEW_CORREL_ID

新しい相関識別子を生成します。

キューマネジャにMQMD構造体のCorrelIdフィールドの内容を，新しい相関識別子に置き換えるよう指定できます。相関識別子はメッセージとともに送信され，MQPUT命令またはMQPUT1命令の出力でアプリケーションに返されます。

このオプションは，メッセージが配布リストに登録されるときにも指定できます。この章の「MQPMR構造体　−　登録メッセージレコード」でCorrelIdフィールドを参照してください。

MQPMO_NEW_CORREL_IDオプションは，アプリケーションがユニークな相関識別子を必要とする場合に有効です。

グループとセグメントに関するオプション：

グループ内のメッセージおよび論理メッセージのセグメントの処理に関連するオプションを次に示します。オプションを理解するために，次の用語について説明します。

物理メッセージ

キューに登録したり取り出したりすることのできる最も小さい情報単位です。通常，単一のMQPUT命令，MQPUT1命令またはMQGET命令で指定したり取り出したりする情報に該当します。

それぞれの物理メッセージはメッセージ記述子（MQMD構造体）を持っています。

キューマネジャによって定義されているわけではありませんが，一般的に，物理メッセージはメッセージ記述子（MQMD構造体のMsgIdフィールド）の値で区別されます。

論理メッセージ

アプリケーション情報の一単位です。システムの強制がない場合，論理メッセージは物理メッセージと同じである場合があります。ただし，論理メッセージが極端に大きい場合，論理メッセージを二つまたはそれ以上のセグメントと呼ばれる物理メッセージに分割することをお勧めします。また，分割が必要となる場合もあります。

セグメント分割された論理メッセージは，同一のヌルではないグループ記述子（MQMD構造体のGroupIdフィールド）と同一のメッセージシーケンス番号（MQMD構造体のMsgSeqNumberフィールド）を持つ二つ以上の物理メッセージによって構成されます。セグメントはセグメントオフセット（MQMD構造体のOffsetフィールド）の値で区別されます。セグメントオフセットは，論理メッセージのデータ先頭からの，物理メッセージのデータの位置を表します。それぞれのセグメントは物理メッセージであるため，論理メッセージのセグメントは，通常異なるメッセージ記述子を持ちます。

セグメント分割はされていないメッセージのうち，送信アプリケーションによってセグメント分割が許可されている論理メッセージも，ヌルではないグループ記述子を持ちます。この場合，論理メッセージがメッセージグループに属していないときは，そのグループ記述子を持つ物理メッセージはただ一つしか存在しないことになります。送信アプリケーションによってセグメント分割が禁止されている論理メッセージがメッセージグループに属していない場合は，ヌルのグループ記述子（MQGI_NONE）を持っています。

メッセージグループ

ヌルではない同一のグループ記述子を持つ一つ以上の物理メッセージの集まりです。

グループ内の論理メッセージは，メッセージシーケンス番号の値で区別されます。メッセージシーケンス番号は，1〜Nの整数範囲となります。なお，Nはグループ内の論理メッセージの数を表します。一つ以上の論理メッセージがセグメント分割されている場合，グループ内にはN個以上の物理メッセージが存在します。

次に，メッセージが，MQGET命令で返却される方法を制御する個々のオプションについて説明します。

MQPMO_LOGICAL_ORDER

グループ内のメッセージと論理メッセージのセグメントを論理的な順序で登録します。

このオプションを指定すると，アプリケーションがキューマネジャにグループ内のメッセージと論理メッセージのセグメントの登録方法を通知します。MQPUT命令でだけ指定できます。MQPUT1命令で指定すると不正となります。

MQPMO_LOGICAL_ORDERが指定されると，アプリケーションはMQPUT命令を次のように発行します。

各論理メッセージのセグメントを，セグメントオフセットが0から空きがなくなるまで，昇順で登録します。

論理メッセージの全セグメントを，次の論理メッセージのセグメント登録の前に登録します。

各メッセージグループの論理メッセージを，メッセージシーケンス番号が1から空きがなくなるまで，昇順で登録します。

メッセージグループの全論理メッセージを次のメッセージグループの論理メッセージ登録の前に登録します。

上記の順序を論理的順序といいます。

アプリケーションは，キューマネジャにグループ内のメッセージと論理メッセージのセグメントの登録方法を通知しているため，おのおののMQPUT命令でグループとセグメントの情報を保持したり，更新したりする必要がありません。特に，MQMD構造体のGroupIdフィールド，MsgSeqNumberフィールド，およびOffsetフィールドは，キューマネジャが適当な値に設定するため，アプリケーションは設定する必要がありません。アプリケーションは，次に示す内容を指示するため，MQMD構造体のMsgFlagsフィールドだけ指定する必要があります。

メッセージがグループに属する，または論理メッセージのセグメントであることを指示する

グループ内の最終メッセージ，または論理メッセージの最終セグメントを指示する

メッセージグループまたは論理メッセージが開始すると，次のMQPUT命令はMQMD構造体のMsgFlagsフィールドに適当なMQMF_*フラグを指定する必要があります。アプリケーションが，メッセージグループが終了していないときにグループに属さないメッセージを登録しようとしたり，論理メッセージが終了していないときにセグメントではないメッセージを登録しようとしたりした場合，命令はMQRC_INCOMPLETE_GROUPまたはMQRC_INCOMPLETE_MSGの理由コードで失敗します。

ただし，キューマネジャは，現在のメッセージグループおよび現在の論理メッセージに関する情報を保持しています。アプリケーションはMQMF_LAST_MSG_IN_GROUPまたはMQMF_LAST_SEGMENTを指定してメッセージを送信することで，MQPUT命令を再発行する前にグループに属していない，かつセグメントでもないメッセージを登録するために保持されている情報を終了できます。ただし，この場合アプリケーションが送信するメッセージには，メッセージデータがないときもあります。

オプションとフラグの正しい組み合わせ，およびキューマネジャが使用するGroupIdフィールド，MsgSeqNumberフィールド，およびOffsetフィールドの値を次の表に示します。表に示されていないオプションとフラグの組み合わせは誤りです。

指定するオプション

命令に先行するグループと論理メッセージの状態

キューマネジャが使用する値

MQPMO_

LOG

ICAL_

ORDER

MQMF_

MSG_

IN_

GROUP

またはMQMF_

LAST_

MSG_

IN_

GROUP

MQMF_

SEG

MENT

または

MQMF_

LAST_

SEG

MENT

MQMF_

SEG

MENT

ATION_

ALLO

WED

命令に先行する現在のメッセージグループがある

命令に先行する現在の論理メッセージがある

Group

Id

MsgSeq

Number

Offset

○

×

×

×

×

×

MQGI_

NONE

1

0

○

×

×

○

×

×

新グループ識別子

1

0

○

×

○

−

×

×

新グループ識別子

1

0

○

×

○

−

×

○

前グループ識別子

1

前オフセット値と前セグメント長の和

○

○

−

−

×

×

新グループ識別子

1

0

○

○

−

−

○

×

前グループ識別子

前シーケンス番号に1を加算

0

○

○

○

−

○

○

前グループ識別子

前シーケンス番号

前オフセット値と前セグメント長の和

×

×

×

×

−

−

MQGI_

NONE

1

0

×

×

×

○

−

−

MQGI_

NONEの場合：新グループ識別子

それ以外の場合：フィールドの値

1

0

×

×

○

−

−

−

MQGI_

NONEの場合：新グループ識別子

それ以外の場合：フィールドの値

1

フィールドの値

×

○

×

−

−

−

MQGI_

NONEの場合：新グループ識別子

それ以外の場合：フィールドの値

フィールドの値

0

×

○

○

−

−

−

MQGI_

NONEの場合：新グループ識別子

それ以外の場合：フィールドの値

フィールドの値

フィールドの値

（凡例）

○：該当します。

×：該当しません。

−：有無に関係ありません。

注意事項

MQPMO_LOGICAL_ORDERは，MQPUT1命令に対しては無効です。

MsgIdフィールドに対して，MQPMO_NEW_MSG_IDまたはMQMI_NONEが指定されたとき，キューマネジャは新しいメッセージ識別子を生成します。その場合は，ほかのフィールドの値を使用します。

CorrelIdフィールドに対してMQPMO_NEW_CORREL_IDが指定されたとき，キューマネジャは新しい相関識別子を生成します。その場合は，ほかのフィールドの値を使用します。

MQPMO_LOGICAL_ORDERが指定されたとき，グループ内の全メッセージと論理メッセージの全セグメントのMQMD構造体のPersistenceフィールドに，同一の値を指定してキューマネジャに登録しなければなりません。つまり，すべてが永続的であるか，または非永続であるかのどちらかでなければなりません。この条件が満たされない場合，MQPUT命令は理由コードMQRC_INCONSISTENT_PERSISTENCEで失敗します。

MQPMO_LOGICAL_ORDERオプションが同期点に及ぼす影響を次に示します。

グループの最初の論理メッセージまたはセグメントがトランザクション内で登録された場合，同じキューハンドルを使うときは，グループ内にあるほかのすべての論理メッセージとセグメントはトランザクション内で登録されなければなりません。ただし，メッセージが同じトランザクション内で登録される必要はありません。したがって，多くの物理メッセージで構成されるメッセージグループは，キューハンドルで二つ以上の連続したトランザクションに分割することが可能になります。

グループの最初の論理メッセージ，またはセグメントがトランザクション内で登録されなかった場合，同じキューハンドルを使うときは，グループ内のほかの論理メッセージとセグメントを同じトランザクション内で登録することはできません。

上記の条件を満たさなかった場合，MQPUT命令はMQRC_INCONSISTENT_UOWの理由コードで失敗します。

MQPMO_LOGICAL_ORDERが指定されたとき，MQPUT命令で指定されたMQMD構造体はMQMD_VERSION_2より前のバージョンではいけません。この条件が満足されない場合は，MQRC_WRONG_MD_VERSIONの理由コードで失敗します。

MQPUT命令にMQPMO_LOGICAL_ORDERを指定しない場合，グループのメッセージおよび論理メッセージのセグメントは，どのような順序で登録してもかまいません。また，完全なメッセージグループや完全な論理メッセージを登録する必要もありません。GroupIdフィールド，MsgSeqNumberフィールド，Offsetフィールド，およびMsgFlagsフィールドには，アプリケーションによって正しい値が設定されます。

システムに障害が起きた場合，メッセージグループや論理メッセージを途中から再開する方法を示します。システム再開時，アプリケーションはGroupIdフィールド，MsgSeqNumberフィールド，Offsetフィールド，MsgFlagsフィールド，およびPersistenceフィールドに適当な値を設定します。その後，MQPMO_SYNCPOINTまたはMQPMO_NO_SYNCPOINTに適当な値を設定します。すると，MQPMO_LOGICAL_ORDERを指定しないでMQPUT命令を発行できます。このMQPUT命令が成功したとき，キューマネジャは，グループとセグメントの情報を保持します。そのキューハンドルを使用した後続のMQPUT命令では，通常のMQPMO_LOGICAL_ORDERを指定できます。

キューマネジャがMQPUT命令用に保持しているグループ情報およびセグメント情報は，MQGET命令用に保持しているグループ情報およびセグメント情報とは別です。

どのキューハンドルについても，アプリケーションではMQPMO_LOGICAL_ORDERを指定したMQPUT命令と指定しないMQPUT命令を混在してもかまいませんが，次の点に注意してください。

MQPMO_LOGICAL_ORDERを指定していない場合，MQPUT命令が成功するたびに，キューマネジャはアプリケーションに指定された値を，キューハンドルのグループおよびセグメント情報に設定します。その情報で，キューハンドルに対してキューマネジャが保持していたグループとセグメントの情報を置き換えます。

MQPMO_LOGICAL_ORDERが指定されない場合，現在のメッセージグループまたは論理メッセージが存在するとき，その命令は失敗しません。命令はMQCC_WARNING完了コードで成功します。MQPUT命令とMQCLOSE命令が，グループ情報およびセグメント情報で矛盾している場合の結果を次の表に示します。

実行時の命令

直前の命令がMQPMO_LOGICAL_ORDER指定ありのMQPUT命令

直前の命令がMQPMO_LOGICAL_ORDER指定なしのMQPUT命令

MQPMO_LOGICAL_ORDER指定ありのMQPUT命令

MQCC_FAILED

MQCC_FAILED

MQPMO_LOGICAL_ORDER指定なしのMQPUT命令

MQCC_WARNING

MQCC_OK

非永続グループと論理メッセージありのMQCLOSE命令

MQCC_WARNING

MQCC_OK

上記の場合で完了コードがMQCC_OKではないときは，理由コードは次のどれかになります。

　MQRC_INCOMPLETE_GROUP

　MQRC_INCOMPLETE_MSG

　MQRC_INCONSISTENT_PERSISTENCE

　MQRC_INCONSISTENT_UOW

注意事項

キューマネジャは，MQPUT1命令でグループとセグメントの情報をチェックしません。

論理的な順序でメッセージとセグメントを単純に登録したいアプリケーションでは，MQPMO_LOGICAL_ORDERを指定することをお勧めします。このオプションによってキューマネジャがグループとセグメントの情報を管理することを指定できるため，アプリケーションはそれらの情報を管理する必要はありません。しかし，アプリケーションによっては，MQPMO_LOGICAL_ORDERオプションが提供する機能より高い制御機能を必要とする場合があります。その場合，このオプションを指定しないでください。MQPMO_LOGICAL_ORDERを指定しなかったとき，アプリケーションは，MQPUT命令またはMQPUT1命令に先立って，MQMD構造体のGroupIdフィールド，MsgSeqNumberフィールド，Offsetフィールド，およびMsgFlagsフィールドを正しく設定しなければなりません。

例えば，受信した物理メッセージをグループまたは論理メッセージのセグメントに属するかどうか関係なく転送するアプリケーションには，次に示す理由のため，MQPMO_LOGICAL_ORDERを指定しないでください。

メッセージが順番に取り出されたり登録されたりする場合，MQPMO_LOGICAL_ORDERを指定すると，新しいグループ識別子がメッセージに割り当てられます。その結果，メッセージの生成元がメッセージグループの結果の応答や報告メッセージを関連づけることが困難になります。

送信側と受信側のキューマネジャ間に複数の通信路がある複雑なネットワークの場合，物理メッセージは順序どおりに到着しません。MQPMO_LOGICAL_ORDERおよびMQGET命令で対応するMQGMO_LOGICAL_ORDERを指定しないことで，転送するアプリケーションは各メッセージが到着すると，次の論理的な順序のメッセージを待たないで，そのメッセージを取り出したり転送したりできます。

グループのメッセージや，論理メッセージのセグメントに対する報告メッセージを生成するアプリケーションにも，MQPMO_LOGICAL_ORDERを指定しないでください。

MQPMO_LOGICAL_ORDERは，ほかのMQPMO_*オプションのどれとも同時に指定できます。

コンテキストオプション：

メッセージコンテキストの処理を制御するオプションを次に示します。

MQPMO_NO_CONTEXT

メッセージコンテキストを使用しません。

識別コンテキストも登録元コンテキストも使用しません。文字フィールドは空白，バイトフィールドはヌル，数値フィールドは0となります。

MQPMO_DEFAULT_CONTEXT

省略時のメッセージコンテキストを使用します。

識別コンテキストも登録元コンテキストも，省略時の仮定値を使用します。キューマネジャは，メッセージ記述子のコンテキストフィールドを次のように設定します。

MQMD構造体のフィールド

値

UserIdentifier

"OPENTP1"またはAlternateUserId（環境に依存する値）

AccountingToken

MQACT_NONE（環境に依存する値）

ApplIdentityData

空白

PutApplType

MQAT_OPEN_TP1（環境に依存する値）

PutApplName

ユーザサーバ名（SUP名，SPP名）（環境に依存する値）

PutDate

メッセージを登録した日付

PutTime

メッセージを登録した時刻

ApplOriginData

空白

メッセージコンテキストおよびコンテキスト情報の制御については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

このほかのコンテキストオプションを指定しなかった場合，このオプションが仮定されます。

MQPMO_PASS_IDENTITY_CONTEXT

入力キューハンドルの識別コンテキストを引き渡します。

関連するコンテキスト情報をメッセージに使用します。識別コンテキストとして，Contextフィールドに指定したキューハンドルの情報を使用します。登録元コンテキストは，キューマネジャによって，MQPMO_DEFAULT_CONTEXTと同様の方法で設定されます。メッセージコンテキストおよびコンテキスト情報の制御については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

MQPUT命令では，MQOO_PASS_IDENTITY_CONTEXTまたはこれに相当するオプションを指定してキューをオープンしておく必要があります。

MQPMO_PASS_ALL_CONTEXT

入力キューハンドルの全コンテキストを引き渡します。

関連するコンテキスト情報をメッセージに使用します。識別コンテキストおよび登録元コンテキストとして，Contextフィールドに指定したキューハンドルの情報を使用します。メッセージコンテキストおよびコンテキスト情報の制御については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

MQPUT命令では，MQOO_PASS_ALL_CONTEXTまたはこれに相当するオプションを指定してキューをオープンしておく必要があります。

MQPMO_SET_IDENTITY_CONTEXT

アプリケーションが識別コンテキストを設定します。

関連するコンテキスト情報をメッセージに使用します。識別コンテキストとして，アプリケーションが指定したMQMD構造体の情報を設定します。登録元コンテキストは，キューマネジャによって，MQPMO_DEFAULT_CONTEXTと同様の方法で設定されます。メッセージコンテキストおよびコンテキスト情報の制御については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

MQPUT命令では，MQOO_SET_IDENTITY_CONTEXTまたはこれに相当するオプションを指定してキューをオープンしておく必要があります。

MQPMO_SET_ALL_CONTEXT

アプリケーションが全コンテキストを設定します。

関連するコンテキスト情報をメッセージに使用します。識別コンテキストおよび登録元コンテキストとして，アプリケーションが指定したMQMD構造体の情報を設定します。メッセージコンテキストおよびコンテキスト情報の制御については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

MQPUT命令では，MQOO_SET_ALL_CONTEXTを指定してキューをオープンしておく必要があります。

MQPMO_*_CONTEXTオプションは，一つだけ指定できます。これらのどれも指定しなかった場合，MQPMO_DEFAULT_CONTEXTオプションが仮定されます。

その他のオプション：

権限チェックおよびキューマネジャ停止時の動作を制御するオプションを次に示します。

MQPMO_ALTERNATE_USER_AUTHORITY

代替ユーザ識別子を使用します。

キューを利用するユーザの識別子として，アプリケーションを実行しているユーザ識別子ではなく，MQPUT1命令のObjDesc引数のAlternateUserIdの代替ユーザ識別子が使用されます。

これは，MQPUT1命令のときだけ指定できます。

MQPMO_FAIL_IF_QUIESCING

TP1/Message Queueでは意味がありません。

このオプションを指定しても，TP1/Message Queueの動作には影響しません。これは，アプリケーションの移植性を向上させるために定義されています。

デフォルトオプション：

ここまでで説明されたオプションを指定しない場合，次に示すオプションを使用できます。

MQPMO_NONE

オプションを指定しません。

このオプションは，ほかにオプションを指定しない場合に指定します。このほかのオプションには，どれも省略時の仮定値があります。MQPMO_NONEオプションは，プログラムのコーディングをわかりやすくするために定義されています。値としては0が定義されていますが，コーディングをわかりやすくする以外の目的はありません。

このフィールドの初期値はMQPMO_NONEです。

●　PutMsgRecFields（MQLONG型）　MQPMR構造体フィールドの存在

アプリケーションによって指定された登録メッセージレコードに，どんなMQPMR構造体フィールドが存在するか指示するように指定します。PutMsgRecFieldsフィールドは，メッセージが配布リストに登録されたときだけ使用されます。RecsPresentフィールドが0，またはPutMsgRecOffsetフィールドとPutMsgRecPtrフィールドが両方とも0の場合，このフィールドは無視されます。

存在するフィールドに対して，キューマネジャはそれぞれのあて先に対応する登録メッセージレコードのフィールドの値を使用します。存在しないフィールドに対しては，キューマネジャはMQMD構造体の初期値を使用します。

登録メッセージレコードにどんなフィールドがあるか示すために，フラグを一つ以上指定できます。指定できるフラグを次に示します。

MQPMRF_MSG_ID

メッセージ識別子フィールドが存在することを示します。

MQPMRF_CORREL_ID

相関識別子フィールドが存在することを示します。

MQPMRF_GROUP_ID

グループ識別子フィールドが存在することを示します。

MQPMRF_FEEDBACK

フィードバックフィールドが存在することを示します。

MQPMRF_ACCOUNTING_TOKEN

課金トークンフィールドが存在することを示します。

このフラグが指定された場合，MQPMO_SET_IDENTITY_CONTEXTまたはMQPMO_SET_ALL_CONTEXTがOptionsフィールドに指定されなければなりません。この条件が満たされない場合，MQRC_PMO_RECORD_FLAGS_ERRORの理由コードで失敗します。

MQPMR構造体のフィールドが存在しない場合，次のフラグを指定できます。

MQPMRF_NONE

登録メッセージレコードが存在しないことを示します。

この値が指定されると，RecsPresentフィールドは0でなければなりません。同時に，PutMsgRecOffsetフィールドおよびPutMsgRecPtrフィールドは，どちらも0でなければなりません。

MQPMRF_NONEはプログラムの文書化のために定義されています。値としては0が定義されていますが，プログラムを文書化する以外の目的はありません。

次の場合，MQRC_PMO_RECORD_FLAGS_ERRORの理由コードで失敗します。

PutMsgRecFieldsフィールドに不正なフラグが含まれている場合

登録メッセージレコードが指定されているが，PutMsgRecFieldsフィールドがMQPMRF_NONEである場合

これは入力用のフィールドです。

このフィールドの初期値はMQPMRF_NONEです。

このフィールドは，Versionフィールドの値がMQPMO_VERSION_2以降の場合だけ有効です。

●　PutMsgRecOffset（MQLONG型）　最初の登録メッセージレコードまでのオフセット

MQPMO構造体の先頭から最初のMQPMR構造体登録メッセージレコードまでのバイトオフセットです。オフセットは正の場合も負の場合もあります。PutMsgRecOffsetフィールドは，配布リストにメッセージを登録するときだけ使用されます。RecsPresentフィールドが0の場合は無視されます。

配布リストにメッセージが登録されるとき，一つ以上のMQPMR構造体登録メッセージレコードの配列があて先ごとのメッセージ属性を指定するために指定されなければなりません。指定する属性を次に示します。

メッセージ識別子

相関識別子

グループ識別子

フィードバック値

課金トークン

この属性をすべて指定する必要はありません。ただし，どの属性を選択しても，フィールドは正しい順序に指定されなければなりません。詳細については，この章の「MQPMR構造体　−　登録メッセージレコード」を参照してください。

配布リストのオープン時に，MQOD構造体によって指定されたオブジェクトレコードと同じ数の登録メッセージレコードが存在しなければなりません。登録メッセージレコードは，対応するオブジェクトレコードによって指定されるキューに対してメッセージ属性を与えます。配布リストのオープンに失敗したキューには，配列の適当な位置に配置される登録メッセージレコードが登録されなければなりません。その場合，メッセージ属性は無視されます。

登録メッセージレコードの数が，オブジェクトレコードの数と異なることがあります。オブジェクトレコードより登録メッセージレコードが少ない場合，登録メッセージレコードのないあて先のメッセージ属性は，メッセージ記述子MQMD構造体の対応するフィールドの属性が指定されます。オブジェクトレコードより登録メッセージレコードが多い場合，必要数以上のレコードは使用されません。ただし，使用されないレコードにもアクセスできなければなりません。

登録メッセージレコードの指定は任意です。ただし，RecsPresentフィールドがある場合は，指定しなければなりません。

登録メッセージレコードはMQOD構造体のオブジェクトレコードと同様の方法で指定できます。PutMsgRecOffsetフィールドのオフセットを指定するか，またはPutMsgRecPtrフィールドのアドレスを使用して指定してください。詳細は，この章の「MQDH構造体　−　配布ヘッダ」でObjectRecOffsetフィールドを参照してください。

PutMsgRecOffsetフィールドとPutMsgRecPtrフィールドは同時に使用できません。両方のフィールドが0以外の場合，MQRC_PUT_MSG_RECORDS_ERRORの理由コードで失敗します。

これは入力用のフィールドです。

このフィールドの初期値は0です。

このフィールドは，Versionフィールドの値がMQPMO_VERSION_2以降の場合だけ有効です。

●　PutMsgRecPtr（MQPTR型）　最初の登録メッセージレコードのアドレス

最初の登録メッセージレコードのアドレスです。PutMsgRecPtrフィールドは，配布リストにメッセージが登録されたときだけ使用されます。RecsPresentフィールドが0の場合は無視されます。

PutMsgRecPtrフィールドまたはPutMsgRecOffsetフィールドのどちらかを登録メッセージレコードを指定するのに使用できます。ただし，同時に使用できません。詳細については，「PutMsgRecOffsetフィールド」を参照してください。PutMsgRecPtrフィールドが使用されない場合は，ヌルポインタか0を設定しなければなりません。

これは入力用のフィールドです。

このフィールドの初期値は，ポインタをサポートしているプログラミング言語ではヌルポインタです。文字列の場合はヌル文字列です。

このフィールドは，Versionフィールドの値がMQPMO_VERSION_2以降の場合だけ有効です。

注意事項

プログラミング言語がポインタのデータ型をサポートしていないオペレーティングシステムでは，このフィールドは，初期値がすべてヌル文字列の，適当な長さのバイト文字列として宣言されます。

●　RecsPresent（MQLONG型）　登録メッセージレコード数または応答レコード数

アプリケーションによって指定されたMQPMR構造体の登録メッセージレコード数またはMQRR構造体の応答レコード数です。メッセージが配布リストに登録されたときだけ，この数が0より大きくなります。登録メッセージレコードまたは応答レコードは任意に選択できます。アプリケーションはどちらのレコードも指定しなかったり，どちらか一つのレコードだけ選択したりできます。ただし，アプリケーションが両方のレコードを指定する場合は，それぞれのRecsPresentフィールドのレコードを指定しなければなりません。

RecsPresentフィールドの値は，配布リストのあて先の数と同じである必要はありません。指定された値が必要数より大きい場合，必要数以上のレコードは使用されません。必要数より少ないレコードが指定された場合，登録メッセージレコードがないあて先のメッセージのプロパティ値は初期値を取ります。詳細については，「PutMsgRecOffsetフィールド」を参照してください。

RecsPresentフィールドの値が0より小さい，または0より大きいがメッセージは配布リストに登録されない場合，理由コードMQRC_RECS_PRESENT_ERRORで失敗します。

これは入力用のフィールドです。

このフィールドの初期値は0です。

このフィールドは，Versionフィールドの値がMQPMO_VERSION_2以降の場合だけ有効です。

●　ResolvedQMgrName（MQCHAR48型）　受信キューマネジャ名

ResolvedQNameのキューを定義しているキューマネジャの名称（実名）です。

ローカルキューマネジャが名称解決を実行したあとのあて先キューマネジャの名前です。返される名前は，ResolvedQNameフィールドに指定されたキューを保持するキューマネジャの名前です。ResolvedQMgrNameフィールドは，ローカルキューマネジャの名前になることがあります。

空白でない値が返されるのは，オブジェクトが単一のキューである場合だけです。オブジェクトが配布リストである場合，返される値は未定義です。

これは出力用のフィールドです。

このフィールドの長さは，MQ_Q_MGR_NAME_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，48個の空白です。

●　ResolvedQName（MQCHAR48型）　受信キュー名

キューマネジャによって設定される出力用のフィールドです。

ローカルキューマネジャが名称解決を実行したあとのあて先キューの名前です。返される名前は，ResolvedQMgrNameフィールドに指定されたキューマネジャが保持するキューの名前です。キューがモデルキューでオープンされた場合，生成された動的ローカルキューの名称が返されます。

空白でない値が返されるのは，オブジェクトが単一のキューである場合だけです。オブジェクトが配布リストである場合，返される値は未定義です。

これは出力用のフィールドです。

このフィールドの長さは，MQ_Q_NAME_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，48個の空白です。

●　ResponseRecOffset（MQLONG型）　最初の応答レコードまでのオフセット

MQPMO構造体の先頭から最初のMQRR構造体の応答レコードまでのバイトオフセットです。オフセットは，正の場合も負の場合もあります。ResponseRecOffsetフィールドは，メッセージが配布リストに登録されるときだけ使用されます。RecsPresentフィールドが0の場合は無視されます。

メッセージが配布リストに登録されるとき，一つ以上のMQRR構造体の応答レコードの配列が，メッセージの送信が成功しなかったキューと，その失敗の理由を特定するために指定されなければなりません。なお，メッセージの送信が成功しなかったキューはMQRR構造体のCompCodeフィールドに記述され，その失敗の理由はMQRR構造体のReasonフィールドに記述されます。

メッセージは，キューのオープンに失敗したか，登録操作が失敗したかのどちらかの理由で送信されていない可能性があります。キューマネジャが応答レコードを設定するのは，命令の結果が混在している場合だけです。例えば，次のような場合です。

あるメッセージは送信に成功したが，ほかのメッセージが失敗している場合

すべての送信が失敗し，その理由が異なる場合

この場合，MQRC_MULTIPLE_REASONSの理由コードが出現します。同じ理由コードがすべてのキューに適用される場合，応答レコードは設定されません。

配布リストがオープンされたとき，MQOD構造体によって指定されたオブジェクトレコードと同じ数の応答レコードが存在しなければなりません。応答レコードが必要であれば，対応するオブジェクトレコードによって指定されるキューに対する登録の完了コードと理由コードに設定されます。配布リストのオープンに失敗したキューには，配列の適当な位置に配置される応答レコードがなければなりません。その場合，登録操作ではなく，オープン操作の完了コードと理由コードが設定されます。

応答レコードの数がオブジェクトレコードの数と異なることがあります。

オブジェクトレコードよりも応答レコードが少ない場合，アプリケーションは登録に失敗したあて先や，失敗した理由のすべてを特定できなくなります。オブジェクトレコードよりも応答レコードが多い場合，必要数以上のレコードは使用されません。ただし，使用されないレコードにもアクセスできなければなりません。応答レコードは任意で指定できますが，指定された場合はRecsPresentフィールドがなければなりません。

応答レコードはオブジェクトレコードと同様に，ResponseRecOffsetフィールドのオフセットを指定するか，またはResponseRecPtrフィールドのアドレスを指定できます。指定方法については，この章の「MQOD構造体　−　オブジェクト記述子」でObjectRecOffsetフィールドを参照してください。ただし，ResponseRecOffsetフィールドとResponseRecPtrフィールドは同時に指定できません。どちらのフィールドも0以外の場合は，MQRC_RESPONSE_RECORDS_ERRORの理由コードで失敗します。

MQPUT1命令では，このフィールドがヌルポインタまたは0でなければなりません。応答情報を要求すると，オブジェクト記述子であるMQOD構造体によって指定される応答レコードに返されます。

これは入力用のフィールドです。

このフィールドの初期値は0です。

このフィールドは，Versionフィールドの値がMQPMO_VERSION_2以降の場合だけ有効です。

●　ResponseRecPtr（MQPTR型）　最初の応答レコードのアドレス

最初のMQRR構造体の応答レコードのアドレスです。ResponseRecPtrフィールドは，配布リストにメッセージが登録されたときだけ使用されます。RecsPresentフィールドが0の場合は無視されます。

ResponseRecPtrフィールドまたはResponseRecOffsetフィールドのどちらかを，応答レコードとして指定するために使用できます。ただし，同時に使用できません。詳細については，「ResponseRecOffsetフィールド」を参照してください。ResponseRecPtrフィールドを使用しない場合は，ヌルポインタかヌル文字列を設定しなければなりません。

MQPUT1命令では，このフィールドはヌルポインタまたは0でなければなりません。応答情報を要求すると，オブジェクト記述子MQOD構造体によって指定される応答レコードに返されます。

これは入力用のフィールドです。

このフィールドの初期値は，ポインタをサポートしているプログラミング言語ではヌルポインタです。文字列の場合はヌル文字列となります。

このフィールドは，Versionフィールドの値がMQPMO_VERSION_2以降の場合だけ有効です。

注意事項

プログラミング言語がポインタのデータ型をサポートしていないオペレーティングシステムでは，このフィールドは，初期値がヌル文字列の，適当な長さのバイト文字列として宣言されます。

●　StrucId（MQCHAR4型）　構造体識別子

次の値を取ります。

MQPMO_STRUC_ID

メッセージ登録オプションの構造体識別子

C言語では，MQPMO_STRUC_ID_ARRAYも定義されています。これは，MQPMO_STRUC_IDと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

これは常に入力用のフィールドです。

このフィールドの初期値は，MQPMO_STRUC_IDです。

●　Timeout（MQLONG型）　予備

予備のフィールドです。キューマネジャはこの内容を特に使用しません。

このフィールドの初期値は-1です。

●　UnknownDestCount（MQLONG型）　リモートキューの数

配布リストの中で，リモートキューで受信されて，MQPUT命令またはMQPUT1命令による送信が成功したキューの数を示しています。

キューマネジャが配布リストに一時的に保持しているメッセージは，その配布リストに含まれるそれぞれのあて先の数としてカウントされます。このフィールドは配布リストではない単一のキューへの登録時にも設定されます。

これは出力用のフィールドです。

このフィールドの初期値は0です。

なお，このフィールドは，VersionフィールドがMQPMO_VERSION_2より前の場合は設定されません。

●　Version（MQLONG型）　構造体バージョン番号

次の値を取ります。

MQPMO_VERSION_1

バージョン1のメッセージ登録オプションの構造体バージョン番号

このバージョンはすべての環境でサポートされています。

MQPMO_VERSION_2

バージョン2のメッセージ登録オプションの構造体バージョン番号

MQPMO_VERSION_2以降の構造体にだけ存在するフィールドについては，そのことがフィールドの説明に記載されています。次に示す定数は，現在のバージョンのバージョン番号を指定します。

MQPMO_CURRENT_VERSION

現在のバージョンのメッセージ登録オプションの構造体バージョン番号

これは常に入力用のフィールドです。

このフィールドの初期値はMQPMO_VERSION_1です。

MQPMR構造体　−　登録メッセージレコード

MQPMR構造体は，次のフィールドから構成されます。

フィールド（データタイプ）

内容

初期値

MsgId（MQBYTE24型）

メッセージ識別子

なし

CorrelId（MQBYTE24型）

相関識別子

なし

GroupId（MQBYTE24型）

グループ識別子

なし

Feedback（MQLONG型）

報告メッセージ返答コード

なし

AccountingToken（MQBYTE32型）

課金トークン

なし

概要

目的

MQPMR構造体は，メッセージが配布リストに登録されるときに，単一のあて先にさまざまなメッセージ属性を指定するために使用されます。MQPMR構造体は，MQPUTおよびMQPUT1命令の入出力用の構造体です。

文字セットおよびマシンコード

MQPMR構造体のデータは，ローカルキューマネジャの文字セットおよびマシンコードに従います。それぞれ，キューマネジャのCodedCharSetId属性およびMQENC_NATIVEで指定します。TP1/Message Queue Accessのクライアントアプリケーションの場合，MQPMR構造体はクライアントの文字セットとマシンコードに従います。

使用方法

MQPUTまたはMQPUT1命令に構造体の配列を提供することによって，配布リスト中のあて先キューごとに異なる値を指定できます。入力だけのフィールドや入出力の可能なフィールドがあります。

注意事項

この構造体は，固定のレイアウトがない点で特殊です。構造体中のフィールドはオプションであり，各フィールドの有無はMQPMO構造体のPutMsgRecFieldsフィールドのフラグによって示されます。存在するフィールドは次に示す順序にする必要があります。また，ここにないフィールドは，レコードにありません。

MsgId

CorrelId

GroupId

Feedback

AccountingToken

MQPMR構造体には固定のレイアウトがないので，サポートするプログラミング言語のCOPYファイルとINCLUDEファイルでの定義の提供はありません。プログラマは，アプリケーションで必要なフィールドを含む宣言をする必要があります。また，PutMsgRecFieldsフィールドのフラグを指定してフィールドがあることを示す必要があります。

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　AccountingToken（MQBYTE32型）　課金トークン

キューに送信されるメッセージに使用される課金トークンです。メッセージの送信先となるキューの名称は，MQOPEN命令またはMQPUT1命令のMQOR構造体の配列中の対応する要素が指定しています。単一のキューに登録するときのMQMD構造体のAccountingTokenフィールドと同様に処理されます。

このフィールドが存在しないとき，MQMD構造体の値が使用されます。

これは入力用のフィールドです。

●　CorrelId（MQBYTE24型）　相関識別子

キューに送信されるメッセージに使用される相関識別子です。メッセージの送信先となるキューの名称は，MQOPEN命令またはMQPUT1命令のMQOR構造体の配列中の対応する要素が指定しています。単一のキューに登録するときのMQMD構造体のCorrelIdフィールドと同様に処理されます。

このフィールドがMQPMR構造体レコードに存在しない場合，またはあて先の数よりMQPMR構造体レコードの数が少ない場合，MQMD構造体の値は，CorrelIdフィールドを含むMQPMR構造体レコードを持たないあて先に使用されます。

MQPMO_NEW_CORREL_IDが指定されると，MQPMR構造体レコードの有無に関係なく，一つの新しい相関識別子が生成されます。生成された相関識別子は，配布リストのすべてのあて先に使用されます。これはMQPMO_NEW_MSG_IDが指定されたときとは異なる方法です。詳細については，「MsgIdフィールド」を参照してください。

これは入出力用のフィールドです。

●　Feedback（MQLONG型）　報告メッセージ返答コード

キューに送信されるメッセージに使用されるフィードバックコードです。メッセージの送信先となるキューの名称は，MQOPEN命令またはMQPUT1命令のMQOR構造体の配列中の対応する要素が指定しています。単一のキューに登録するときのMQMD構造体のFeedbackフィールドと同様に処理されます。

このフィールドが存在しないときは，MQMD構造体の値が使用されます。

これは入力用のフィールドです。

●　GroupId（MQBYTE24型）　グループ識別子

キューに送信されるメッセージに使用されるグループ識別子です。メッセージの送信先となるキューの名称は，MQOPEN命令またはMQPUT1命令のMQOR構造体の配列中の対応する要素が指定しています。単一のキューに登録するときのMQMD構造体のGroupIdフィールドと同様に処理されます。

このフィールドがMQPMR構造体レコードに存在しない場合，またはあて先の数よりMQPMR構造体レコードの数が少ない場合，MQMD構造体の値は，GroupIdフィールドを含むMQPMR構造体レコードを持たないあて先に使用されます。この値は，MQPMO構造体のMQPMO_LOGICAL_ORDER中の表で示される処理と同様の処理がされますが，次の相違点があります。

新しいグループ識別子が使用されるとき，キューマネジャは，それぞれのあて先に異なるグループ識別子を生成します。したがって，同じグループ識別子を持つあて先はありません。

このフィールドの値が使用されるとき，MQRC_GROUP_ID_ERRORの理由コードで失敗します。

これは入出力用のフィールドです。

●　MsgId（MQBYTE24型）　メッセージ識別子

キューに送信されるメッセージに使用されるメッセージ識別子です。メッセージの送信先となるキューの名称は，MQOPEN命令またはMQPUT1命令のMQOR構造体の配列中の対応する要素が指定しています。単一のキューに登録するときのMQMD構造体のMsgIdフィールドと同様に処理されます。

このフィールドがMQPMR構造体レコードに存在しない場合，またはあて先の数よりもMQPMR構造体レコードの数が少ない場合，MQMD構造体の値は，MsgIdフィールドを含むMQPMR構造体レコードを持たないあて先に使用されます。その値がMQMI_NONEの場合，新しいメッセージ識別子がそれぞれのあて先に対して生成されます。つまり，おのおののあて先は異なるメッセージ識別子を持っています。

MQPMO_NEW_MSG_IDが指定されると，MQPMR構造体レコードの有無に関係なく，新しいメッセージ識別子が配布リストのすべてのあて先に生成されます。これは，MQPMO_NEW_CORREL_IDが指定されたときとは異なる方法です。詳細については，「CorrelIdフィールド」を参照してください。

これは入出力用のフィールドです。

MQRMH構造体　−　メッセージ参照ヘッダ

MQRMH構造体は，次のフィールドから構成されます。

フィールド（データタイプ）

内容

初期値

StrucId（MQCHAR4型）

構造体識別子

MQRMH_STRUC_ID

Version（MQLONG型）

構造体バージョン番号

MQRMH_VERSION_1

StrucLength（MQLONG型）

構造体長

0

Encoding（MQLONG型）

長大データのマシンコード形式

MQENC_NATIVE

CodedCharSetId（MQLONG型）

長大データの文字セット識別子

MQCCSI_UNDEFINED

Format（MQCHAR8型）

長大データのフォーマット名

MQFMT_NONE

Flags（MQLONG型）

フラグ

MQRMHF_NOT_LAST

ObjectType（MQCHAR8型）

オブジェクトタイプ

空白

ObjectInstanceId（MQBYTE24型）

オブジェクトインスタンス識別子

MQOII_NONE

SrcEnvLength（MQLONG型）

送信元環境データ長

0

SrcEnvOffset（MQLONG型）

送信元環境データオフセット

0

SrcNameLength（MQLONG型）

送信元オブジェクト名長

0

SrcNameOffset（MQLONG型）

送信元オブジェクトのオフセット

0

DestEnvLength（MQLONG型）

あて先環境データ長

0

DestEnvOffset（MQLONG型）

あて先環境データオフセット

0

DestNameLength（MQLONG型）

あて先オブジェクト名長

0

DestNameOffset（MQLONG型）

あて先オブジェクトのオフセット

0

DataLogicalLength（MQLONG型）

長大データ長

0

DataLogicalOffset（MQLONG型）

長大データ低位オフセット

0

DataLogicalOffset2（MQLONG型）

長大データ高位オフセット

0

概要

目的

MQRMH構造体はメッセージ参照ヘッダの形式を定義します。このヘッダは，キューマネジャ間で非常に大きなデータ（長大データといいます）を送信するために，メッセージ編集出口UOCとともに使用します。通常のメッセージ通信と異なり，長大データはキューに格納されません。代わりに，長大データへの参照だけがキューに格納されます。こうして，少数の極端に大きなメッセージによって，MQリソースが消費される可能性を減らします。

フォーマット名

MQFMT_REF_MSG_HEADER

文字セットおよびマシンコード

MQRMH構造体の文字データ，およびオフセットフィールドが示す先の文字列は，ローカルキューマネジャの文字セットに従います。これはキューマネジャのCodedCharSetId属性で指定します。MQRMH構造体の数値データは，計算機固有のマシンコードです。これはMQENC_NATIVEで指定します。

MQRMH構造体の文字セットおよびマシンコードは，次に示す構造体中のCodedCharSetIdおよびEncodingフィールドに設定する必要があります。

MQMD構造体（MQRMH構造体がメッセージデータの先頭にある場合）

MQRMH構造体に先行するヘッダ構造体（その他のすべての場合）

使用方法

アプリケーションは長大データを省略して，MQRMH構造体で構成されるメッセージを登録します。メッセージチャネルエージェント（MCA）が転送キューからメッセージを取り出すとき，ユーザが作成したメッセージ編集出口UOCが呼び出されてメッセージ参照ヘッダを処理します。出口はMQRMH構造体が示す長大データを参照メッセージに追加できます。その後，MCAはチャネルを介して次のキューマネジャにメッセージを送信します。

受信側では，参照メッセージを待つメッセージの出口が存在しなければなりません。参照メッセージを受信すると，出口はメッセージのMQRMH構造体に続くデータからオブジェクトを生成し，データなしの参照メッセージを返します。その後，参照メッセージはアプリケーションによって取り出されます。

通常，MQRMH構造体が，メッセージのすべてです。ただし，メッセージが転送キューにある場合は，一つ以上のヘッダがMQRMH構造体の前に付きます。

参照メッセージは配布リストに送信されることも可能です。この場合，メッセージが転送キューにあるときは，MQDH構造体およびMQDH構造体に関連するレコードが，MQRMH構造体の前にあります。

注意事項

参照メッセージはセグメント分割されたメッセージとして送信されてはいけません。メッセージの出口は，セグメント分割されたメッセージを正しく処理できません。

データ変換

データ変換時，MQRMH構造体では，送信元の環境データ，送信元オブジェクト名称，あて先環境変数，およびあて先オブジェクト名がデータ変換されます。構造体の先頭のStrucLength外にあるバイトは，データ変換後に廃棄されるか，未定義の値になります。長大データは，次に示すすべての条件が満たされる場合に変換されます。

データが変換されるときに長大データがメッセージに存在する場合

MQRMH構造体のFormatフィールドがMQFMT_NONE以外の値である場合

ユーザの記述したデータ変換出口が，指定されたフォーマット名で存在する場合

ただし，通常，メッセージがキューに存在するとき，長大データはメッセージには存在しません。したがって，MQGMO_CONVERTオプションでは変換されないことに注意してください。

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　CodedCharSetId（MQLONG型）　文字セット識別子

長大データの文字セット識別子です。

これは，長大データの文字セット識別子を指定します。MQRMH構造体自身の文字データには適用されません。

MQPUTまたはMQPUT1命令では，アプリケーションはデータに合った値をこのフィールドに設定する必要があります。

MQCCSI_INHERIT

この構造体の文字セット識別子を引き継ぎます。

この構造体に続くデータの文字データは，この構造体と同じ文字セットです。

メッセージで送信される構造体のこの値を，キューマネジャは構造体の実際の文字セット識別子に変更します。エラーが発生しない場合，MQGET命令ではMQCCSI_INHERITは返されません。

MQMD構造体のPutApplTypeフィールドの値がMQAT_BROKERの場合，MQCCSI_INHERITは使用できません。

このフィールドの初期値はMQCCSI_UNDEFINEDです。

●　DataLogicalLength（MQLONG型）　長大データ長

DataLogicalLengthフィールドはMQRMH構造体で参照される長大データの長さを指定します。

長大データが実際にメッセージ中に存在するときは，MQRMH構造体のすぐあとに続きます。全メッセージ長から，MQRMH構造体の終端のメッセージを含むオフセットを減算すると，存在する長大データの長さが求められます。

データがメッセージ内に存在すると，DataLogicalLengthフィールドは，関連するデータ量を指定します。通常，DataLogicalLengthフィールドは，実際にメッセージに存在するデータ長と同じ値となります。

MQRMH構造体が，指定された論理オフセットからのオブジェクト内にある残りのデータを表す場合，DataLogicalLengthフィールドには0が指定できます。つまり，長大データはメッセージ内に存在しません。

データが存在しないとき，MQRMH構造体の終端がメッセージの終端と一致します。

このフィールドの初期値は0です。なお，長大データのデータ変換が正常に行われた場合，変換後の長大データ長がDataLogicalLengthフィールドに返却されます。

●　DataLogicalOffset（MQLONG型）　長大データ低位オフセット

一部が長大データによって形成されたオブジェクトの開始位置からの，長大データの低位オフセットを指定します。オブジェクトの開始位置から長大データまでのオフセットは論理オフセットといいます。これは，MQRMH構造体の先頭から長大データまでの物理的オフセットではありません。物理的なオフセットはStrucLengthフィールドで与えられます。

参照メッセージを使用して大きなオブジェクトを送信するために，論理オフセットは二つのフィールドに分割されます。実際の論理オフセットは，これら二つのフィールドの合計で与えられます。

DataLogicalOffsetフィールドは，論理オフセットを1000000000で除算したときの余りを表します。0から999999999の範囲で値を取ります。

DataLogicalOffset2フィールドは，論理オフセットを1000000000で除算したときの結果を表します。結果は，論理オフセットに存在する1000000000の倍数となります。倍数の数は0から999999999の範囲で値を取ります。

このフィールドの初期値は0です。

●　DataLogicalOffset2（MQLONG型）　長大データ高位オフセット

一部が長大データによって形成されたオブジェクトの開始位置からの，長大データの高位オフセットを指定します。0から999999999の範囲の値を取ります。詳細については，「DataLogicalOffsetフィールド」を参照してください。

このフィールドの初期値は0です。

●　DestEnvLength（MQLONG型）　あて先環境データ長

このフィールドが0の場合，あて先環境データは存在しません。したがって，DestEnvOffsetフィールドは無視されます。

このフィールドの初期値は0です。

●　DestEnvOffset（MQLONG型）　あて先環境データオフセット

MQRMH構造体の先頭からあて先環境データまでのオフセットを指定します。あて先環境データは，参照メッセージの作成者が知っている場合は，作成者によって指定されます。作成者があて先環境データを知らない場合は，ユーザ作成メッセージ出口が，必要な環境情報を特定しなければなりません。

あて先環境データの長さはDestEnvLengthフィールドによって与えられます。この長さが0の場合，あて先環境データは存在しません。したがってDestEnvOffsetフィールドは無視されます。存在する場合，あて先環境データは構造体の先頭からStrucLengthフィールドの間に存在しなければなりません。

アプリケーションは，あて先環境データが構造体の最後の固定フィールドのあとからすぐに開始したり，SrcEnvOffsetフィールド，SrcNameOffsetフィールド，およびDestNameOffsetフィールドで指定されるデータとあて先環境データが隣接したりすることを仮定しないでください。

このフィールドの初期値は0です。

●　DestNameLength（MQLONG型）　あて先オブジェクト名長

このフィールドが0の場合，あて先オブジェクト名はありません。したがって，DestNameOffsetフィールドは無視されます。

このフィールドの初期値は0です。

●　DestNameOffset（MQLONG型）　あて先オブジェクトのオフセット

MQRMH構造体の先頭からあて先オブジェクト名までのオフセットを指定します。あて先オブジェクト名は，参照メッセージの作成者が知っている場合は，作成者によって指定されます。作成者があて先オブジェクト名を知らない場合は，ユーザ作成メッセージ出口が作成されたり変更されたりするオブジェクトを識別します。

あて先オブジェクト名の長さは，DestNameLengthフィールドによって与えられます。この長さが0の場合は，あて先オブジェクト名は存在しません。したがって，DestNameOffsetフィールドは無視されます。存在する場合，あて先オブジェクト名は，構造体の先頭からStrucLengthフィールドの間に存在しなければなりません。

アプリケーションは，SrcEnvOffsetフィールド，SrcNameOffsetフィールド，およびDestEnvOffsetフィールドで指定されるデータとあて先オブジェクト名が隣接することを仮定しないでください。

このフィールドの初期値は0です。

●　Encoding（MQLONG型）　マシンコード形式

長大データのマシンコード形式です。

長大データのマシンコードを指定します。MQRMH構造体自身の数値データには適用されません。

MQPUTおよびMQPUT1命令では，アプリケーションはデータに合った値をこのフィールドに設定する必要があります。

このフィールドの初期値はMQENC_NATIVEです。

●　Flags（MQLONG型）　フラグ

メッセージを参照するフラグです。

次のフラグが定義されています。

MQRMHF_LAST

オブジェクトの最終部分を表します。

このフラグは，参照メッセージが参照オブジェクトの最終部分を含んでいる，または最終部分であることを示しています。

MQRMHF_NOT_LAST

オブジェクトの最終部分ではないことを表します。

MQRMHF_NOT_LASTはプログラムの文書化の目的で定義されています。値としては0が定義されていますが，プログラムを文書化する以外の目的はありません。

このフィールドの初期値はMQRMHF_NOT_LASTです。

●　Format（MQCHAR8型）　フォーマット名

長大データのフォーマット名です。

長大データのフォーマット名を指定します。

MQPUTおよびMQPUT1命令では，アプリケーションはデータに合った値をこのフィールドに設定する必要があります。このフィールドの設定規則はMQMD構造体のFormatフィールドと同じです。

このフィールドの初期値は，MQFMT_NONEです。

●　ObjectInstanceId（MQBYTE24型）　オブジェクトインスタンス識別子

オブジェクトの特別なインスタンスを識別するために使用します。使用しない場合は，次の値を設定してください。

MQOII_NONE

オブジェクトインスタンス識別子は指定されません

この値はフィールドの長さと同じ2進数の0です。

C言語では，MQOII_NONE_ARRAYも定義されています。これは，MQOII_NONEと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

このフィールドの長さは，MQ_OBJECT_INSTANCE_ID_LENGTHに定義されています。

このフィールドの初期値はMQOII_NONEです。

●　ObjectType（MQCHAR8型）　オブジェクトタイプ

メッセージ出口でサポートする参照メッセージのタイプを識別するために使用できる名称です。この名称を指定する場合，次に示す文字を使用することをお勧めします。

英大文字のA〜Z

数値の0〜9

このフィールドの初期値は8個の空白です。

●　SrcEnvLength（MQLONG型）　送信元環境データ長

このフィールドが0の場合，送信元メッセージの環境データは存在しません。したがって，SrcEnvOffsetフィールドは無視されます。

このフィールドの初期値は0です。

●　SrcEnvOffset（MQLONG型）　送信元環境データオフセット

MQRMH構造体の先頭から送信元環境データまでのオフセットを指定します。送信元環境データは，参照メッセージの作成者が知っている場合は，作成者によって指定されます。作成者が送信元環境データを知らない場合は，ユーザ作成メッセージ出口が必要な環境情報を特定しなければなりません。

送信元環境データの長さは，SrcEnvLengthフィールドによって与えられます。この長さが0の場合，送信元環境データは存在しません。したがって，SrcEnvOffsetフィールドは無視されます。送信元環境データが存在する場合，構造体の先頭からStrucLengthフィールドの間に存在しなければなりません。

アプリケーションは，送信元環境データが構造体の最後の固定フィールドのあとからすぐに開始したり，SrcNameOffsetフィールド，DestEnvOffsetフィールド，およびDestNameOffsetフィールドで指定されるデータと送信元環境データが隣接したりすることを仮定しないでください。

このフィールドの初期値は0です。

●　SrcNameLength（MQLONG型）　送信元オブジェクト名長

このフィールドが0の場合，送信元オブジェクト名はありません。したがって，SrcNameOffsetフィールドは無視されます。

このフィールドの初期値は0です。

●　SrcNameOffset（MQLONG型）　送信元オブジェクトのオフセット

MQRMH構造体の先頭から送信元オブジェクト名までのオフセットを指定します。送信元オブジェクト名は，参照メッセージの作成者が知っている場合は，作成者によって指定されます。作成者が送信元オブジェクト名を知らない場合は，ユーザ作成メッセージ出口がアクセスするオブジェクトを識別しなければなりません。

送信元オブジェクト名の長さはSrcNameLengthフィールドによって与えられます。この長さが0の場合，送信元オブジェクト名は存在しません。したがって，SrcNameOffsetフィールドは無視されます。存在する場合，送信元オブジェクト名は構造体の先頭からStrucLengthフィールドの間に存在しなければなりません。

アプリケーションは，SrcEnvOffsetフィールド，DestEnvOffsetフィールド，およびDestNameOffsetフィールドで指定されるデータと送信元オブジェクト名が隣接することを仮定しないでください。

このフィールドの初期値は0です。

●　StrucId（MQCHAR4型）　構造体識別子

次の値を取ります。

MQRMH_STRUC_ID

参照メッセージヘッダ構造体の識別子

C言語では，MQRMH_STRUC_ID_ARRAYも定義されています。これは，MQRMH_STRUC_IDと同じ値です。ただし文字列ではなく文字の配列として定義されています。

このフィールドの初期値はMQRMH_STRUC_IDです。

●　StrucLength（MQLONG型）　構造体長

MQRMH構造体の構造体長を表します。固定フィールドの終端の文字列を含みます。ただし，長大データは含んでいません。

このフィールドの初期値は0です。

●　Version（MQLONG型）　構造体バージョン番号

次の値を取ります。

MQRMH_VERSION_1

バージョン1の参照メッセージヘッダの構造体バージョン番号

次の値には，現在のバージョンのバージョン番号を指定します。

MQRMH_CURRENT_VERSION

現在のバージョンの参照メッセージヘッダの構造体バージョン番号

このフィールドの初期値はMQRMH_VERSION_1です。

MQRR構造体　−　応答レコード

MQRR構造体は，次のフィールドで構成されます。

フィールド（データタイプ）

内容

初期値

CompCode（MQLONG型）

完了コード

MQCC_OK

Reason（MQLONG型）

理由コード

MQRC_NONE

概要

目的

MQRR構造体は，あて先が配布リストである場合に，単一のあて先キューに対するオープンまたは登録操作の結果である完了コードと理由コードを受け取るために使用します。MQRR構造体は，MQOPEN，MQPUTおよびMQPUT1命令の出力用の構造体です。

文字セットおよびマシンコード

MQRR構造体のデータは，ローカルキューマネジャの文字セットおよびマシンコードに従います。それぞれ，キューマネジャのCodedCharSetId属性およびMQENC_NATIVEで指定します。TP1/Message Queue Accessのクライアントアプリケーションの場合，MQOD構造体はクライアントの文字セットとマシンコードに従います。

使用方法

MQOPEN，MQPUTまたはMQPUT1命令に構造体の配列を提供することによって，命令の結果が混在する場合，つまり配布リストの幾つかのキューで命令が成功し，ほかのキューで失敗する場合に，配布リストのすべてのキューについて完了コードと理由コードを判別できます。命令が理由コードMQRC_MULTIPLE_REASONSを返す場合，（アプリケーションが提供したとき）応答レコードがキューマネジャによって設定されたことを示します。

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　CompCode（MQLONG型）　完了コード

MQOPEN命令またはMQPUT1命令のMQOR構造体の配列中の対応する要素によって指定された名称のキューに対する，オープンまたは登録操作の結果を表す完了コードです。

これは常に入力用のフィールドです。このフィールドの初期値はMQCC_OKです。

●　Reason（MQLONG型）　理由コード

MQOPEN命令またはMQPUT1命令のMQOR構造体の配列中の対応する要素によって指定された名称のキューに対する，オープンまたは登録操作の結果を表す理由コードです。

これは常に入力用のフィールドです。このフィールドの初期値はMQRC_NONEです。

MQTM構造体　−　トリガメッセージ

MQTM構造体は，次のフィールドから構成されます。

フィールド（データタイプ）

内容

初期値

StrucId（MQCHAR4型）

構造体識別子

MQTM_STRUC_ID

Version（MQLONG型）

構造体バージョン番号

MQTM_VERSION_1

QName（MQCHAR48型）

イベント発生キュー名

ヌル文字列/空白

ProcessName（MQCHAR48型）

プロセス名

ヌル文字列/空白

TriggerData（MQCHAR64型）

トリガデータ

ヌル文字列/空白

ApplType（MQLONG型）

アプリケーションタイプ

0

ApplId（MQCHAR256型）

アプリケーション識別子

ヌル文字列/空白

EnvData（MQCHAR128型）

環境データ

ヌル文字列/空白

UserData（MQCHAR128型）

ユーザデータ

ヌル文字列/空白

概要

目的

この構造体には，トリガメッセージのデータが記述されます。キューマネジャは，トリガイベントが発生したときに，トリガモニタアプリケーションへトリガメッセージを通知します。

フォーマット名

MQFMT_TRIGGER

文字セットおよびマシンコード

MQTM構造体の文字データは，MQTM構造体を生成するキューマネジャの文字セットに従います。MQTM構造体の数値データは，MQTM構造体を生成するキューマネジャのマシンコードに従います。

MQTM構造体の文字セットおよびマシンコードは，次に示す構造体中のCodedCharSetIdおよびEncodingフィールドで指定されます。

MQMD構造体（MQTM構造体がメッセージデータの先頭にある場合）

MQTM構造体に先行するヘッダ構造体（その他のすべての場合）

使用方法

トリガモニタアプリケーションがほかのアプリケーションを起動するとき，トリガメッセージ内の幾つかの情報を，そのアプリケーションに渡す必要があります。そのアプリケーションで必要となる情報には，QName，TriggerData，UserDataなどがあります。トリガによるアプリケーション開始については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

トリガメッセージのMQMD構造体

トリガメッセージのMQMD構造体のフィールドには，次の値が設定されます。これは，トリガメッセージを取り出したMQGET命令の，MsgDesc引数で返される値です。

MQMD構造体のフィールド

値

StrucId

MQMD_STRUC_ID

Version

MQMD_VERSION_1

Report

MQRO_NONE

MsgType

MQMT_DATAGRAM

Expiry

MQEI_UNLIMITED

Feedback

MQFB_NONE

Encoding

MQENC_NATIVE

CodedCharSetId

キューマネジャのCodedCharSetId属性の値

Format

MQFMT_TRIGGER

Priority

MQPRI_PRIORITY_AS_Q_DEF（イニシエーションキューに定義された，省略時のメッセージ優先度）

Persistence

MQPER_NOT_PERSISTENT

MsgId

ユニークな値

CorrelId

MQCI_NONE

BackoutCount

0

ReplyToQ

空白

ReplyToQMgr

空白

UserIdentifier

空白

AccountingToken

MQACT_NONE

ApplIdentityData

空白

PutApplType

MQAT_QMGR

PutApplName

キューマネジャ名の先頭から28文字

PutDate

トリガメッセージを通知した日付

PutTime

トリガメッセージを通知した時刻

ApplOriginData

空白

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　ApplId（MQCHAR256型）　アプリケーション識別子

起動するアプリケーションを識別する文字列です。トリガメッセージを取り出したトリガモニタアプリケーションで使用します。キューマネジャはこのフィールドに，ProcessNameのプロセスオブジェクトのApplId属性の値を設定します。キューマネジャはこの内容を特に使用しません。

ApplIdの意味は，トリガモニタアプリケーションによって決まります。IBM MQが提供するトリガモニタでは，ApplIdを実行プログラムの名前にする必要があります。

このフィールドの長さは，MQ_PROCESS_APPL_ID_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，256個の空白です。

●　ApplType（MQLONG型）　アプリケーションタイプ

起動するアプリケーションの種類です。トリガメッセージを取り出したトリガモニタアプリケーションで使用します。キューマネジャはこのフィールドに，ProcessNameのプロセスオブジェクトのApplType属性の値を設定します。キューマネジャはこの内容を特に使用しません。

ApplTypeフィールドには，次の標準の値があります。また，ユーザが定義した値も使用できます。ただし，ユーザが定義できる値の範囲はMQAT_USER_FIRSTからMQAT_USER_LASTまでです。

MQAT_AIX：AIXアプリケーション

MQAT_CICS：CICSトランザクション

MQAT_DOS：PC-DOS上のIBM MQクライアントアプリケーション

MQAT_IMS：IMSアプリケーション

MQAT_MVS：MVSまたはTSOアプリケーション

MQAT_OPEN_TP1：OpenTP1アプリケーション

MQAT_OS2：OS/2またはプレゼンテーションマネジャアプリケーション

MQAT_OS400：OS/400アプリケーション

MQAT_TMS_4V：TMS-4V/SPアプリケーション

MQAT_UNIX：UNIXアプリケーション

MQAT_WINDOWS：16ビットWindowsアプリケーション

MQAT_WINDOWS_NT：32ビットWindowsアプリケーション

MQAT_XDM：XDMアプリケーション

MQAT_USER_FIRST：ユーザが定義できるアプリケーションタイプの最小値

MQAT_USER_LAST：ユーザが定義できるアプリケーションタイプの最大値

このフィールドの初期値は0です。

●　EnvData（MQCHAR128型）　環境データ

起動するアプリケーションに関連する環境についての文字データです。トリガメッセージを取り出したトリガモニタアプリケーションで使用します。キューマネジャは，このフィールドにProcessNameのプロセスオブジェクトのEnvData属性の値を設定します。キューマネジャはこの内容を特に使用しません。

このフィールドの長さは，MQ_PROCESS_ENV_DATA_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，128個の空白です。

●　ProcessName（MQCHAR48型）　プロセス名

トリガイベントが発生したキューのプロセスオブジェクトの名称です。トリガメッセージを取り出したトリガモニタアプリケーションで使用します。キューマネジャはこのフィールドに，QNameのキューのProcessName属性の値を設定します。

フィールドの長さより名称が短い場合，余りが空白で埋められます。ヌル文字は使用されません。このフィールドの長さは，MQ_PROCESS_NAME_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，48個の空白です。

●　QName（MQCHAR48型）　イベント発生キュー名

トリガイベントが発生したキューの名称です。このキューの名称は，トリガモニタアプリケーションによって起動されたアプリケーションで使用します。キューマネジャは，このフィールドにトリガイベントが発生したキューのQName属性の値を設定します。

フィールドの長さより名称が短い場合，余りが空白で埋められます。ヌル文字は使用されません。このフィールドの長さは，MQ_Q_NAME_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，48個の空白です。

●　StrucId（MQCHAR4型）　構造体識別子

次の値を取ります。

MQTM_STRUC_ID

トリガメッセージの構造体識別子

C言語では，MQTM_STRUC_ID_ARRAYも定義されています。これは，MQTM_STRUC_IDと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

このフィールドの初期値はMQTM_STRUC_IDです。

●　TriggerData（MQCHAR64型）　トリガデータ

任意の形式のデータです。トリガメッセージを取り出したトリガモニタアプリケーションで使用します。キューマネジャはこのフィールドに，QNameのキューのTriggerData属性の値を設定します。キューマネジャはこの内容を特に使用しません。

このフィールドの長さは，MQ_TRIGGER_DATA_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，64個の空白です。

●　UserData（MQCHAR128型）　ユーザデータ

起動するアプリケーションに関するユーザ任意の情報です。トリガメッセージを取り出したトリガモニタアプリケーションで使用します。キューマネジャは，このフィールドにProcessNameのプロセスオブジェクトのUserData属性の値を設定します。キューマネジャはこの内容を特に使用しません。

このフィールドの長さは，MQ_PROCESS_USER_DATA_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，128個の空白です。

●　Version（MQLONG型）　構造体バージョン番号

次の値を取ります。

MQTM_VERSION_1

トリガメッセージの構造体バージョン番号

次の定数には，現在のバージョン番号を指定します。

MQTM_CURRENT_VERSION

現在のバージョンを指定したトリガメッセージの構造体バージョン番号

このフィールドの初期値はMQTM_VERSION_1です。

MQXQH構造体　−　転送キューヘッダ

MQXQH構造体は，次のフィールドから構成されます。

フィールド（データタイプ）

内容

初期値

StrucId（MQCHAR4型）

構造体識別子

MQXQH_STRUC_ID

Version（MQLONG型）

構造体バージョン番号

MQXQH_VERSION_1

RemoteQName（MQCHAR48型）

リモートキュー名

ヌル文字列/空白

RemoteQMgrName（MQCHAR48型）

リモートキューマネジャ名

ヌル文字列/空白

MsgDesc（MQMD構造体）

登録元メッセージ記述子

該当しない

概要

目的

MQXQH構造体は，転送キューにメッセージを格納するときに使用されます。そのメッセージの先頭には，この構造体が付けられます。転送キューは，リモートキューへ送信するときに，一時的にメッセージを格納する特別なローカルキューです。したがって，ローカルキューマネジャに属するキューへの転送には使用しません。転送キューは，Usage属性がMQUS_TRANSMISSIONのキューです。

フォーマット名

MQFMT_XMIT_Q_HEADER

文字セットおよびマシンコード

MQXQH構造体のデータは，ローカルキューマネジャの文字セットおよびマシンコードに従います。それぞれキューマネジャのCodedCharSetId属性およびMQENC_NATIVEで指定します。

MQXQH構造体の文字セットおよびマシンコードは，次に示す構造体中のCodedCharSetIdおよびEncodingフィールドに設定する必要があります。

分離MQMD構造体（MQXQH構造体がメッセージデータの先頭にある場合）

MQXQH構造体に先行するヘッダ構造体（その他のすべての場合）

使用方法

転送キューにあるメッセージには，次に示す二つのメッセージ記述子があります。

メッセージデータから分離して格納されるメッセージ記述子

これは分離メッセージ記述子と呼ばれます。メッセージが転送キューに登録されるときに，キューマネジャによって生成されます。分離メッセージ記述子のフィールドの幾つかは，アプリケーションがMQPUTまたはMQPUT1命令に指定するメッセージ記述子からコピーされます。詳細については，「分離メッセージ記述子のフィールド」を参照してください。

分離メッセージ記述子は，メッセージが転送キューから削除されたときに，MQGET命令のMsgDesc引数でアプリケーションに返されます。

MQXQH構造体にメッセージデータの一部として格納されているメッセージ記述子

これは埋め込みメッセージ記述子と呼ばれます。このメッセージ記述子は，アプリケーションがMQPUTまたはMQPUT1命令に指定するメッセージ記述子とほぼ同じコピーです。詳細については，「埋め込みメッセージ記述子のフィールド」を参照してください。

埋め込みメッセージ記述子は，常にバージョン1のMQMD構造体です。アプリケーションによって登録されたメッセージが，MQMD構造体のバージョン2フィールドで初期値ではない値を一つ以上持つ場合，MQMDE構造体がMQXQH構造体に続きます。その後，アプリケーションメッセージデータが存在する場合は，そのアプリケーションメッセージデータが続きます。このとき，MQMDE構造体は，次のどちらかです。

アプリケーションがメッセージを登録するためにバージョン2のMQMD構造体を使用したときに，キューマネジャによって生成されたMQMDE構造体

すでにアプリケーションメッセージデータの先頭に存在するMQMDE構造体

アプリケーションがメッセージを登録するためにバージョン1のMQMD構造体を使用すると，メッセージが最終のあて先キューから削除されたときに，埋め込みメッセージ記述子はMQGET命令のMsgDesc引数でアプリケーションに返されます。

分離メッセージ記述子のフィールド

分離メッセージ記述子は，キューマネジャによって次のように設定されます。キューマネジャがバージョン2をサポートしていない場合は，バージョン1のMQMD構造体フィールドがすべて使用されます。

MQMD構造体のフィールド

使用される値

StrucId

MQMD_STRUC_ID

Version

MQMD_VERSION_2

Report

埋め込みメッセージ記述子から複写されますが，MQRO_ACCEPT_UNSUP_IF_XMIT_MASKで識別されるビットが0に設定されます。これによって，メッセージが転送キューに到着したとき，または転送キューから取り出されたとき，COAまたはCOD報告が生成されません。

MsgType

埋め込みメッセージ記述子から複写

Expiry

埋め込みメッセージ記述子から複写

Feedback

埋め込みメッセージ記述子から複写

Encoding

MQENC_NATIVE

CodedCharSetId

キューマネジャのCodedCharSetId

Format

MQFMT_XMIT_Q_HEADER

Priority

埋め込みメッセージ記述子から複写

Persistence

埋め込みメッセージ記述子から複写

MsgId

キューマネジャによって生成される新しい値が使用されます。このメッセージ記述子は，キューマネジャが埋め込みメッセージ記述子に生成するMsgIdフィールドとは異なります。

CorrelId

埋め込みメッセージ記述子のCorrelIdフィールド

BackoutCount

0

ReplyToQ

埋め込みメッセージ記述子から複写

ReplyToQMgr

埋め込みメッセージ記述子から複写

UserIdentifier

埋め込みメッセージ記述子から複写

AccountingToken

埋め込みメッセージ記述子から複写

ApplIdentityData

埋め込みメッセージ記述子から複写

PutApplType

MQAT_QMGR

PutApplName

キューマネジャ名称の先頭28バイト

PutDate

メッセージが転送キューに登録された日

PutTime

メッセージが転送キューに登録された時間

ApplOriginData

空白

GroupId

MQGI_NONE

MsgSeqNumber

1

Offset

0

MsgFlags

MQMF_NONE

OriginalLength

MQOL_UNDEFINED

埋め込みメッセージ記述子のフィールド

埋め込みメッセージ記述子のフィールドは，次に示す場合を除いて，MQPUT命令またはMQPUT1命令のMsgDesc引数と同じ値です。

Versionフィールドは，常にMQMD_VERSION_1の値となります。

PriorityフィールドがMQPRI_PRIORITY_AS_Q_DEFの場合，キューのDefPriority属性の値に変換されます。PersistenceフィールドがMQPER_PERSISTENCE_AS_Q_DEFの場合，キューのDefPersistence属性の値に変換されます。

MsgIdフィールドは，次に示す場合，キューマネジャによって生成された新しいメッセージ識別子に変換されます。

MsgIdフィールドがMQMI_NONEの場合

MQPMO_NEW_MSG_IDオプションが指定された場合

メッセージが配布リストメッセージの場合

配布リストメッセージが，異なる転送キューに登録するために分割されることがあります。そのとき，新しい埋め込みメッセージ記述子のそれぞれのMsgIdフィールドは，元の配布リストメッセージと同じです。

MQPMO_NEW_CORREL_IDオプションが指定されると，CorrelIdフィールドは，キューマネジャによって生成された新しい相関識別子に変換されます。

コンテキストフィールドは，PutMsgOpts引数で指定されたMQPMO_*_CONTEXTオプションによって設定されます。コンテキストフィールドとは，次に示すフィールドのことです。

UserIdentifier

AccountingToken

ApplIdentityData

PutApplType

PutApplName

PutDate

PutTime

ApplOriginData

バージョン2のフィールドがある場合は，MQMD構造体から削除され，MQMDE構造体に移動されます。これは，バージョン2フィールドの一つ以上の値が初期値以外の場合です。

リモートキューへのメッセージの登録

アプリケーションが，リモートキューに直接指定してメッセージを登録する場合，またはリモートキューのローカル定義を使用してメッセージを登録する場合，ローカルキューマネジャは，次の処理をします。

埋め込みメッセージ記述子を含むMQXQH構造体の生成

MQMDE構造体が必要であるが，存在しない場合は，MQMDE構造体の付加

アプリケーションメッセージデータの付加

メッセージの適切な転送キューへの登録

転送キューに直接メッセージを登録する方法

アプリケーションは，転送キューに直接メッセージを登録することもできます。この場合，アプリケーションはMQXQH構造体をアプリケーションメッセージデータの前に設定し，フィールドを適切な値で初期化しなければなりません。また，アプリケーションが，MQPUT命令またはMQPUT1命令で指定したメッセージ記述子のMQMD構造体のFormatフィールドに，MQFMT_XMIT_Q_HEADERを設定しなければなりません。

アプリケーションによって作成されたMQXQH構造体の文字データは，MQPUT命令またはMQPUT1命令で指定されたMsgDesc引数のCodedCharSetIdフィールドで定義された文字集合に含まれなければなりません。整数データも，そのメッセージ記述子のEncodingフィールドで定義されたマシンコード変換形式に含まれなければなりません。また，MQXQH構造体の文字データは，定義されたフィールドの長さまで空白で埋められなければなりません。キューマネジャは，MQXQH構造体の中のヌル文字とそれに続く文字を空白に変換しません。したがって，データ文字列の終わりにヌル文字を使用してなりません。

キューマネジャはMQXQH構造体が存在するかどうか，およびフィールドに有効な値が指定されているかどうかをチェックしません。注意してください。

転送キューからメッセージを取り出す方法

転送キューからメッセージを取り出すアプリケーションは，MQXQH構造体の情報を適切な方法で処理しなければなりません。アプリケーションメッセージデータの始めにMQXQH構造体が存在するかどうかは，MQGET命令のMsgDesc引数のFormatフィールドに返される値であるMQFMT_XMIT_Q_HEADERで示されます。

MsgDesc引数のCodedCharSetIdフィールドおよびEncodingフィールドに返される値は，それぞれMQXQH構造体の文字データの文字集合と，整数データのコード変換形式を示します。アプリケーションメッセージデータの文字集合とコード変換形式は，埋め込みメッセージ記述子のCodedCharSetIdフィールドとEncodingフィールドで定義されます。

フィールド

構造体を構成するフィールドについて，アルファベット順に説明します。

●　MsgDesc（MQMD構造体）　登録元メッセージ記述子

アプリケーションがメッセージをリモートキューへ送信したときのMQPUT命令またはMQPUT1命令で，MsgDesc引数に指定されたメッセージ記述子MQMD構造体の複写です。

注意事項

これはバージョン1のMQMD構造体です。

この構造体の各フィールドの初期値は，MQMD構造体の各フィールドの初期値と同じです。

●　RemoteQMgrName（MQCHAR48型）　リモートキューマネジャ名

メッセージの表面上の最終あて先であるキューを保持するキューマネジャの名前です。

メッセージが配布リストメッセージの場合，RemoteQMgrNameフィールドは空白となります。

このフィールドの長さは，MQ_Q_MGR_NAME_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，48個の空白です。

●　RemoteQName（MQCHAR48型）　リモートキュー名

メッセージの表面上のあて先キューの名称です。これは，キューの実名と異なる場合があります。例えば，ほかのリモートキューのローカル定義として，RemoteQMgrNameのリモートキューマネジャに定義された場合などです。

メッセージが配布リストメッセージのとき，つまり，MQMD構造体のFormatフィールドがMQFMT_DIST_HEADERであるとき，RemoteQNameフィールドは空白です。

このフィールドの長さは，MQ_Q_NAME_LENGTHに定義されています。

このフィールドの初期値は，C言語ではヌル文字列です。そのほかのプログラミング言語では，48個の空白です。

●　StrucId（MQCHAR4型）　構造体識別子

次の値を取ります。

MQXQH_STRUC_ID

転送キューヘッダの構造体識別子

C言語では，MQXQH_STRUC_ID_ARRAYも定義されています。これは，MQXQH_STRUC_IDと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

このフィールドの初期値はMQXQH_STRUC_IDです。

●　Version（MQLONG型）　構造体バージョン番号

次の値を取ります。

MQXQH_VERSION_1

転送キューヘッダの構造体バージョン番号

次の定数には，現在のバージョンのバージョン番号を指定します。

MQXQH_CURRENT_VERSION

現在のバージョンの転送キューヘッダの構造体バージョン番号

このフィールドの初期値はMQXQH_VERSION_1です。

2　メッセージキューイング機能の命令

この章では，メッセージキューイング機能で使用する，命令について説明します。

命令の説明形式

この章では，メッセージキューイング機能を使用するための命令について，アルファベット順に説明します。

それぞれの命令では，引数とその説明を示します。各引数の後ろの括弧には，その引数のデータタイプを示します。データタイプについては，「1.　データタイプ」を参照してください。

データタイプの次に，その引数の「向き」を次の値で示します。引数の向きは，その引数を何が使用し，何が設定するかを表します。

input

キューマネジャで使用する値をアプリケーションが設定します。

output

アプリケーションに返す値をキューマネジャが設定します。

input/output

キューマネジャで使用する値をアプリケーションが設定し，そのあとにキューマネジャが修正してアプリケーションに返します。

あるフィールドがinputで，ほかのフィールドがoutputの構造体のときもinput/outputで示します。詳しくは，「1.　データタイプ」を参照してください。

また，この章では，キュー，キューマネジャなどの命令で利用する対象をオブジェクトと呼びます。オブジェクトの詳細については，「3.　オブジェクトの属性」を参照してください。

関連する幾つかの定数を示すときに，アスタリスク「*」を使用します。「*」は，一つ以上の文字を表します。例えば，MQFB_*は，MQFB_で始まるすべての定数を示します。

命令の使用方法は，すべてのプログラミング言語でほぼ同じです。ただし，サポートするプログラミング言語が機能的に異なるため，各プログラミング言語によって多少の書き換えがあります。この書き換えについては，「付録E　各プログラミング言語での実現例」を参照してください。

注意事項

引数の表記に関する注意

C言語の形式では，引数が大文字と小文字で表記され，COBOL言語の形式では，引数が大文字だけで表記されます。以降の説明では，C言語の形式で示した引数，つまり，大文字と小文字の混在で示します。COBOL言語を使用する場合は，引数の小文字を大文字で置き換えてお読みください。

なお，C言語の場合の形式で，引数の先頭に付けられたアスタリスク（*）は，アドレス渡しかどうかを示します。

各命令を説明する形式を次に示します。

MQCLOSE命令　−　オブジェクトのクローズ

機能

MQCLOSE命令で，オブジェクトの利用を終了します。MQOPEN命令の反対の命令です。

形式

C言語の場合

MQCLOSE(MQHCONN Hconn, PMQHOBJ Hobj, MQLONG Options,
        PMQLONG CompCode, PMQLONG Reason)

COBOL言語の場合

CALL 'MQCLOSE' USING HCONN, HOBJ, OPTIONS, COMPCODE, REASON.

引数

●　Hconn（MQHCONN型）　−input

コネクションハンドルです。

キューマネジャへの接続を示すハンドルです。MQCONN命令の戻り値を指定してください。

●　Hobj（MQHOBJ型）　−input/output

オブジェクトハンドルです。

クローズするオブジェクトを示すハンドルです。どんなオブジェクトタイプでもかまいません。MQOPEN命令の戻り値を指定してください。

命令が成功すると，この引数には次の値が返されます。

MQHO_UNUSABLE_HOBJ

使用できないオブジェクトハンドル

●　Options（MQLONG型）　−input

MQCLOSE命令の動作を制御するクローズオプションです。

オブジェクトのクローズの方法を示します。永続的動的キューの場合だけ，キューを残す方法または削除する方法のどちらかでクローズできます。なお，永続的動的キューは，DefinitionType属性がMQQDT_PERMANENT_DYNAMICのキューです。クローズオプションについては，表2-1に示します。

次のどれかの値を取れます。

MQCO_NONE

特別なクローズオプションを要求しません。

次の場合に指定します。

キュー以外のオブジェクト

定義済みキュー

一時的動的キュー（ただし，Hobjのハンドルが，そのキューを生成したMQOPEN関数で返されたハンドルと異なる場合だけ指定できます）

配布リスト

上記の場合，オブジェクトは削除されないで残されます。

このオプションを一時的動的キューに指定した場合で，Hobjのハンドルがそのキューを生成したMQOPEN命令で返されたハンドルのとき，キューは削除されます。そのほかのハンドルのときは，キューは残ります。

このオプションを永続的動的キューに指定した場合，キューは削除されないで残ります。

MQCO_DELETE

キューを削除します。

次のどちらかの場合，キューは削除されます。

永続的動的キューで，メッセージを格納しないで，かつコミットしていないトランザクションからの登録・取り出しがない場合

ほかのアプリケーションによる登録・取り出しがない場合も含みます。

一時的動的キューで，Hobjのハンドルがそのキューを生成したMQOPEN命令で返されたハンドルの場合

上記以外の場合，理由コードMQRC_OPTION_NOT_VALID_FOR_TYPEで命令は失敗します。このとき，キューは削除されません。

MQCO_DELETE_PURGE

キューを強制的に削除します。

次のどちらかの場合，キューは削除されます。

永続的動的キューで，コミットしていないトランザクションからの登録・取り出しがない場合

ほかのアプリケーションによる登録・取り出しがない場合も含みます。

一時的動的キューで，Hobjのハンドルがそのキューを生成したMQOPEN命令で返されたハンドルの場合

上記以外の場合，理由コードMQRC_OPTION_NOT_VALID_FOR_TYPEで命令は失敗します。この場合，キューは削除されません。

クローズオプションとオブジェクトの関係を次の表に示します。

表2‒1　クローズオプションとオブジェクトの関係

オブジェクト

クローズオプション

MQCO_NONE

MQCO_DELETE

MQCO_DELETE_PURGE

キュー以外

1

2

2

定義済みキュー

1

2

2

永続的動的キュー

1

3

4

一時的動的キュー

（作成者）

5

5

5

一時的動的キュー

（作成者以外）

1

2

2

配布リスト

1

2

2

（凡例）

1：オブジェクトは削除されません。

2：不正な組み合わせです。

3：キューが空であり，かつ未決着の登録・取り出しがないときだけ削除されます。

4：未決着の登録・取り出しがないときだけ削除されます。

5：オブジェクトは削除されます。

●　CompCode（MQLONG型）　−output

完了コードです。

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

MQCC_OK：成功

MQCC_WARNING：警告（一部成功）

MQCC_FAILED：失敗

●　Reason（MQLONG型）　−output

理由コードです。

CompCode引数がMQCC_OKの場合

理由コード

数値

意味

MQRC_NONE

0

理由コードはありません。

CompCode引数がMQCC_WARNINGの場合

理由コード

数値

意味

MQRC_INCOMPLETE_GROUP

2241

メッセージグループが完全ではありません。

MQRC_INCOMPLETE_MSG

2242

論理メッセージが完全ではありません。

CompCode引数がMQCC_FAILEDの場合

理由コード

数値

意味

MQRC_HCONN_ERROR

2018

コネクションハンドルが不正です。

MQRC_HOBJ_ERROR

2019

オブジェクトハンドルが不正です。

MQRC_OBJECT_DAMAGED

2101

オブジェクトが破損しています。

MQRC_OPTION_NOT_VALID_FOR_TYPE

2045

オブジェクトタイプに適合しないオプションが指定されました。

MQRC_OPTIONS_ERROR

2046

オプションが不正です。または，指定されていません。

MQRC_Q_NOT_EMPTY

2055

キューに一つ以上のメッセージがあります。または，キューに対する登録・取り出し要求がコミットしていません。

MQRC_RESOURCE_PROBLEM

2102

システム資源が不足しています。

MQRC_STORAGE_NOT_AVAILABLE

2071

記憶容量が不足しています。

MQRC_UNEXPECTED_ERROR

2195

予期しないエラーが発生しました。

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

注意事項

アプリケーションがMQDISC命令を呼び出したとき，または正常終了・異常終了したときに，オープンしたままのオブジェクトはMQCO_NONEオプションで自動的にクローズされます。

キューをクローズするときは，次の点に注意してください。

トランザクション内で処理するときでも，同期点の結果に影響しません。同期点の前でもあとでもキューをクローズできます。

MQOO_BROWSEオプションでキューをオープンしていた場合，検索カーソルは消滅します。MQOO_BROWSEオプションで再びオープンしたときは，新しい検索カーソルが生成されます。MQOO_BROWSEオプションについては，この章の「MQOPEN命令　−　オブジェクトのオープン」でOptions引数の説明を参照してください。

MQCLOSE命令を呼び出した時点で，そのハンドルで排他状態にしたメッセージがある場合，排他状態は解除されます。「1.　データタイプ」の「MQGMO構造体　−　メッセージ取り出しオプション」でOptionsフィールドのMQGMO_LOCKオプションの説明を参照してください。

クローズされるオブジェクトが動的キュー（永続的動的キューまたは一時的動的キュー）であるとき，次の点に注意してください。

一時的動的キューの場合で，Hobjのハンドルがそのキューを生成したMQOPEN命令で返されたハンドルのとき，キュー内にメッセージが格納されていてもキューは削除されます。このとき，Options引数に指定したオプションは関係ありません。これは，コミットしていないMQGET命令，MQPUT命令またはMQPUT1命令が，このハンドルを使用した場合，使用しなかった場合，およびそのキューに対して未決着のままの場合でも同様です。コミットしていない処理での更新が失われた場合も，トランザクションの失敗にはなりません。

動的キューが削除されるときにキューに対して未解決のMQGMO_WAITオプションを指定するMQGET命令は取り消され，理由コードMQRC_Q_DELETEDが返されます。

MQGMO_WAITオプションについては，「1.　データタイプ」の「MQGMO構造体　−　メッセージ取り出しオプション」でOptionsフィールドの説明を参照してください。

動的キューが削除されたあとで，取得済みのHobjハンドルを使用してMQCLOSE命令以外の命令がキューを参照しようとすると，理由コードMQRC_Q_DELETEDで失敗します。

削除されたキューにアプリケーションからアクセスできなくても，キューを参照するすべてのハンドルがクローズされ，キューに影響するすべてのトランザクションがコミットされるかロールバックされるまでは，キューはシステムから除去されず，関連リソースも解放されないことに注意してください。

一時的動的キューをクローズするときにMQCLOSE命令に指定したHobjハンドルが，キューを作成したMQOPEN命令が返したハンドルである場合，キューは削除されます。これはMQCLOSE命令のクローズオプションに関係なく発生します。キューにメッセージがある場合は破棄されます。報告メッセージは生成されません。

キューに影響を与える未コミットのトランザクションがあるときでも，キューとメッセージは削除されます。しかし，これによってトランザクションは失敗しません。ただし，上記のとおり，各トランザクションがコミットされるかロールバックされるまでは，トランザクションに関連するリソースは解放されません。

クローズされるオブジェクトが配布リストの場合，次の点に注意してください。

配布リストに対する適当なオプションはMQCO_NONEだけです。ほかのオプションが指定されると，理由コードMQRC_OPTIONS_ERRORまたはMQRC_OPTION_NOT_VALID_FOR_TYPEで失敗します。

配布リストがクローズされるとき，リスト中のキューについてのおのおのの完了コードと理由コードは，返却されません。CompCode引数とReason引数は結果を確認するためだけに利用できます。

キューのうち一つのクローズに失敗した場合も，キューマネジャは処理を続行し，配布リストの残りのキューをクローズしようとします。CompCode引数とReason引数は失敗を記述した情報を返します。しかし，ほとんどのキューのクローズに成功しても，完了コードがMQCC_FAILEDになる場合があります。なお，エラーの発生したキューは識別できません。

一つ以上のキューでクローズに失敗しても，どんな失敗がCompCode引数とReason引数に報告されるかは定義されていません。

MQCONN命令　−　キューマネジャへの接続

機能

MQCONN命令で，アプリケーションをキューマネジャへ接続できます。この命令では，キューマネジャのコネクションハンドルが返されます。コネクションハンドルは，以降のそのキューマネジャへの命令で使用します。

形式

C言語の場合

MQCONN(PMQCHAR Name, PMQHCONN Hconn, PMQLONG CompCode,
       PMQLONG Reason)

COBOL言語の場合

CALL 'MQCONN' USING NAME, HCONN, COMPCODE, REASON.

引数

●　Name（MQCHAR48型）　−input

キューマネジャ名です。

アプリケーションが接続するキューマネジャの名前です。名前には，次に示す文字を使用できます。

英大文字（A〜Z）

英小文字（a〜z）

数字（0〜9）

ピリオド（.），スラント（/），アンダスコア（_），パーセント（%）

名前の先頭および中間には，空白を使用できません。末尾には空白を使用できます。名前の中で有効なデータの末尾を示すためにヌル文字を使用できます。ヌル文字とそれに続く文字はすべて空白として処理されます。

すべて空白の名前を指定した場合，省略時のキューマネジャ名が使用されます。

指定するキューマネジャ名は接続可能なキューマネジャの名前にする必要があります。

接続できるキューマネジャは，環境に依存します。TP1/Message Queueでは，アプリケーションと同じOpenTP1で動作するキューマネジャにだけ接続できます。

この引数の長さは，MQ_Q_MGR_NAME_LENGTHに定義されています。

●　Hconn（MQHCONN型）　−output

コネクションハンドルです。

キューマネジャへの接続を示すハンドルです。以降に呼び出すメッセージキューイング機能の命令で指定してください。MQDISC命令を呼び出すと，またはこのハンドルの範囲の処理が終了すると，このハンドルは無効になります。

このハンドルの範囲は，環境のパラレル処理の最小単位に制限されます。MQCONN命令を呼び出したパラレル処理の単位以外では，このハンドルは無効です。TP1/Message Queueでは，パラレル処理の最小単位はプロセスです。

●　CompCode（MQLONG型）　−output

完了コードです。

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

MQCC_OK：成功

MQCC_WARNING：警告（一部成功）

MQCC_FAILED：失敗

●　Reason（MQLONG型）　−output

理由コードです。

CompCode引数がMQCC_OKの場合

理由コード

数値

意味

MQRC_NONE

0

理由コードはありません。

CompCode引数がMQCC_WARNINGの場合

理由コード

数値

意味

MQRC_ALREADY_CONNECTED

2002

アプリケーションはすでに接続されています。

CompCode引数がMQCC_FAILEDの場合

理由コード

数値

意味

MQRC_HCONN_ERROR

2018

コネクションハンドルが不正です。

MQRC_Q_MGR_NAME_ERROR

2058

キューマネジャ名が不正です。または，キューマネジャ名を認識できません。

MQRC_Q_MGR_NOT_AVAILABLE

2059

キューマネジャが接続できる状態ではありません。

MQRC_Q_MGR_STOPPING

2162

キューマネジャが終了処理中です。

MQRC_RESOURCE_PROBLEM

2102

システム資源が不足しています。

MQRC_STORAGE_NOT_AVAILABLE

2071

記憶容量が不足しています。

MQRC_UNEXPECTED_ERROR

2195

予期しないエラーが発生しました。

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

注意事項

MQCONN命令で接続したキューマネジャを，ローカルキューマネジャといいます。

ローカルキューマネジャに属するキューを，ローカルキューといいます。アプリケーションはローカルキューに対して，メッセージの登録・取り出しができます。

リモートキューマネジャに属するキューを，リモートキューといいます。アプリケーションはリモートキューに対して，メッセージを登録できます。しかし，取り出しはできません。

アプリケーションの動作中にキューマネジャに障害が発生する場合，アプリケーションは再度MQCONN命令を発行し，以降のMQ命令で使用するための新しいコネクションハンドルを取得する必要があります。命令が成功するまでアプリケーションは定期的にMQCONN命令を発行できます。

アプリケーションがキューマネジャに接続されているかわからない場合，アプリケーションはMQCONN命令を問題なく発行してコネクションハンドルを取得できます。アプリケーションがすでに接続されているとき，返されるハンドルは以前に発行したMQCONN命令で返されたハンドルと同じです。ただし，完了コードはMQCC_WARNING，理由コードはMQRC_ALREADY_CONNECTEDです。

MQ命令を使用する処理の最後には，アプリケーションはMQDISC命令を使用してキューマネジャから切り離す必要があります。

MQDISC命令　−　キューマネジャからの切り離し

機能

MQDISC命令で，キューマネジャとアプリケーションプログラムとの接続を切り離します。これは，MQCONN命令の反対の命令です。

形式

C言語の場合

MQDISC(PMQHCONN Hconn, PMQLONG CompCode, PMQLONG Reason)

COBOL言語の場合

CALL 'MQDISC' USING HCONN, COMPCODE, REASON.

引数

●　Hconn（MQHCONN型）　−input/output

コネクションハンドルです。

キューマネジャへの接続を示すハンドルです。MQCONN命令の戻り値を指定してください。命令が成功すると，この引数には次の値が返されます。

MQHC_UNUSABLE_HCONN：使用できないコネクションハンドル

●　CompCode（MQLONG型）　−output

完了コードです。

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

MQCC_OK：成功

MQCC_FAILED：失敗

●　Reason（MQLONG型）　−output

理由コードです。

CompCode引数がMQCC_OKの場合

理由コード

数値

意味

MQRC_NONE

0

理由コードはありません。

CompCode引数がMQCC_FAILEDの場合

理由コード

数値

意味

MQRC_HCONN_ERROR

2018

コネクションハンドルが不正です。

MQRC_RESOURCE_PROBLEM

2102

システム資源が不足しています。

MQRC_STORAGE_NOT_AVAILABLE

2071

記憶容量が不足しています。

MQRC_UNEXPECTED_ERROR

2195

予期しないエラーが発生しました。

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

注意事項

接続下でオブジェクトがオープンされているときにMQDISC命令を発行すると，オブジェクトは，キューマネジャによってクローズされます。このときのクローズオプションはMQCO_NONEです。

MQGET命令　−　メッセージの取り出し

機能

MQGET命令で，ローカルキューからメッセージを取り出せます。ローカルキューは，MQOPEN命令でオープンしておく必要があります。

形式

C言語の場合

MQGET(MQHCONN Hconn, MQHOBJ Hobj, PMQVOID MsgDesc,
      PMQVOID GetMsgOpts, MQLONG BufferLength,
      PMQVOID Buffer, PMQLONG DataLength,
      PMQLONG CompCode, PMQLONG Reason)

COBOL言語の場合

CALL 'MQGET' USING HCONN, HOBJ, MSGDESC, GETMSGOPTS,
          BUFFERLENGTH, BUFFER, DATALENGTH, COMPCODE, REASON.

引数

●　Hconn（MQHCONN型）　−input

コネクションハンドルです。

キューマネジャへの接続を示すハンドルです。MQCONN命令の戻り値を指定してください。

●　Hobj（MQHOBJ型）　−input

オブジェクトハンドルです。

メッセージを取り出すキューのハンドルです。MQOPEN命令の戻り値を指定してください。そのキューは，次に示すオプションを一つ以上使用してオープンしておく必要があります。詳細については，この章の「MQOPEN命令　−　オブジェクトのオープン」を参照してください。

MQOO_INPUT_SHARED

MQOO_INPUT_EXCLUSIVE

MQOO_INPUT_AS_Q_DEF

MQOO_BROWSE

●　MsgDesc（MQMD構造体）　−input/output

メッセージ記述子です。

この構造体で，取り出したいメッセージの属性を記述します。また，取り出したメッセージの属性が返されます。詳細については，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」を参照してください。

BufferLength引数の値がメッセージ長より短い場合でも，キューマネジャによってMsgDesc引数に値が設定されます。これは，GetMsgOpts引数でMQGMO_ACCEPT_TRUNCATED_MSGを指定しても指定しなくても同様です。詳細については，「1.　データタイプ」の「MQGMO構造体　−　メッセージ取り出しオプション」でOptionsフィールドの説明を参照してください。

アプリケーションがバージョン1のMQMD構造体を指定すると，返却されるメッセージには，アプリケーションメッセージデータの前にMQMDE構造体が付加されます。これは，MQMDE構造体の一つ以上のフィールドが初期値以外の場合だけです。MQMDE構造体のFormatフィールドにあるMQFMT_MD_EXTENSIONのフォーマット名は，MQMDE構造体が存在することを示します。

●　GetMsgOpts（MQGMO構造体）　−input/output

メッセージ取り出しオプションです。

詳細については，「1.　データタイプ」の「MQGMO構造体　−　メッセージ取り出しオプション」を参照してください。

●　BufferLength（MQLONG型）　−input

メッセージデータを格納するバッファのバイト長です。

0も指定できます。0を指定した場合は，データのないメッセージを取り出すものとみなされるか，メッセージがキューから削除されて，破棄されなければなりません。メッセージを削除する場合は，MQGMO_ACCEPT_TRUNCATED_MSGの指定が必要です。

注意事項

キューから取り出せるメッセージの最大長は，ローカルキューのMaxMsgLength属性に定義されています。

●　Buffer（MQBYTE型×BufferLength）　−output

メッセージデータを格納するバッファです。

バッファには，メッセージ中のデータに適したバウンダリ調整が必要です。多くのメッセージ（MQヘッダ構造体のあるメッセージを含む）には4バイト単位の調整が適していますが，より厳しい調整が必要なメッセージもあります。例えば，64ビット2進整数を含めるメッセージには8バイト単位のバウンダリ調整が必要です。

BufferLength引数の値がメッセージ長より短い場合，Bufferの領域に格納できるだけのメッセージが返されます。これは，GetMsgOpts引数にMQGMO_ACCEPT_TRUNCATED_MSGを指定しても指定しなくても同様です。詳細については，「1.　データタイプ」の「MQGMO構造体　−　メッセージ取り出しオプション」でOptionsフィールドの説明を参照してください。

Bufferの領域の文字セットとマシンコード形式は，MsgDesc引数のCodedCharSetIdフィールドとEncodingフィールドに返されます。要求される値と異なる場合，アプリケーションメッセージデータを，その文字セットとマシンコード形式に変換してください。アプリケーションメッセージデータを変換するため，

MQGMO_CONVERTオプションを使用できます。詳細については，「1.　データタイプ」の「MQGMO構造体　−　メッセージ取り出しオプション」でOptionsフィールドの説明を参照してください。

注意事項

MQGET命令のほかの引数には，ローカルキューマネジャの文字セットとマシンコード形式，つまり，キューマネジャのCodedCharSetId属性とMQENC_NATIVEを使用します。

命令が失敗した場合でも，Bufferの領域の内容が変わることがあります。

C言語では，void型のポインタとしてこの引数を宣言します。したがって，どんなデータタイプのアドレスでも引数として指定できます。

BufferLength引数に0を指定した場合，Buffer引数は参照されません。したがって，C言語のプログラムでは，この引数のアドレスとしてヌルを指定できます。

●　DataLength（MQLONG型）　−output

メッセージ長です。

メッセージのアプリケーションデータのバイト長です。データ長がBufferLength引数の値より大きい場合，BufferLengthのバイト数だけがBuffer引数に返されます。この場合，領域を超えたメッセージの部分は切り捨てられます。この値が0の場合，メッセージにアプリケーションデータがなかったことを意味します。

BufferLength属性の値がメッセージ長より短い場合でも，キューマネジャによってDataLength引数に実際のメッセージの長さが設定されます。これは，GetMsgOpts引数にMQGMO_ACCEPT_TRUNCATED_MSGオプションを指定しても指定しなくても同様です。詳細については，「1.　データタイプ」の「MQGMO構造体　−　メッセージ取り出しオプション」でOptionsフィールドの説明を参照してください。これによってアプリケーションは，メッセージ全体を格納できるバッファを確保して，再び命令を呼び出せます。

ただし，MQGMO_CONVERTオプションが指定され，変換されたメッセージデータが大き過ぎてBuffer引数に設定できない場合，DataLength引数には，キューマネジャ定義のフォーマットに対応する未変換データの長さが設定されます。

データの性質上，変換中のデータが拡大することがあるため，アプリケーションは，キューマネジャがDataLength引数に設定した値より大きいバッファを割り当ててください。

●　CompCode（MQLONG型）　−output

完了コードです。

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

MQCC_OK：成功

MQCC_WARNING：警告（一部成功）

MQCC_FAILED：失敗

●　Reason（MQLONG型）　−output

理由コードです。

CompCode引数がMQCC_OKの場合

理由コード

数値

意味

MQRC_NONE

0

理由コードはありません。

CompCode引数がMQCC_WARNINGの場合

理由コード

数値

意味

MQRC_CONVERTED_MSG_TOO_BIG

2120

変換したメッセージがアプリケーションバッファに対して大き過ぎます。

MQRC_FORMAT_ERROR

2110

メッセージのフォーマットが不正です。

MQRC_INCONSISTENT_CCSIDS

2243

メッセージセグメントが異なるCCSIDを持っています。

MQRC_INCONSISTENT_ENCODINGS

2244

メッセージセグメントが異なるマシンコード形式を持っています。

MQRC_INCONSISTENT_UOW

2245

コミット単位の指定が矛盾しています。

MQRC_NO_MSG_LOCKED

2209

排他状態のメッセージはありません。

MQRC_NOT_CONVERTED

2119

メッセージデータは変換されません。

MQRC_SOURCE_CCSID_ERROR

2111

生成元コード化文字セット識別子が無効です。

MQRC_TARGET_CCSID_ERROR

2115

受信側コード化文字セット識別子が無効です。

MQRC_TRUNCATED_MSG_ACCEPTED

2079

バッファ不足のため，メッセージの後部を切り捨てました（処理は完了しました）。

MQRC_TRUNCATED_MSG_FAILED

2080

バッファ不足のため，メッセージの後部を切り捨てました（処理は完了していません）。

CompCode引数がMQCC_FAILEDの場合

理由コード

数値

意味

MQRC_BUFFER_ERROR

2004

バッファの引数が不正です。

MQRC_BUFFER_LENGTH_ERROR

2005

バッファ長の引数が不正です。

MQRC_DATA_LENGTH_ERROR

2010

データ長の引数が不正です。

MQRC_GET_INHIBITED

2016

指定されたキューからの取り出しが禁止されています。

MQRC_GMO_ERROR

2186

メッセージ取り出しオプションの構造体が不正です。

MQRC_HCONN_ERROR

2018

コネクションハンドルが不正です。

MQRC_HOBJ_ERROR

2019

オブジェクトハンドルが不正です。

MQRC_INCONSISTENT_BROWSE

2259

ブラウズ指定が矛盾しています。

MQRC_INCONSISTENT_UOW

2245

コミット単位の指定が矛盾しています。

MQRC_INVALID_MSG_UNDER_CURSOR

2246

メッセージ下のカーソルは取り出せません。

MQRC_MATCH_OPTIONS_ERROR

2247

一致オプションが不正です。

MQRC_MD_ERROR

2026

メッセージ記述子が不正です。

MQRC_MSG_SEQ_NUMBER_ERROR

2250

メッセージシーケンス番号が無効です。

MQRC_NO_MSG_AVAILABLE

2033

該当するメッセージがありません。

MQRC_NO_MSG_UNDER_CURSOR

2034

検索カーソルの位置にメッセージがありません。

MQRC_NOT_OPEN_FOR_BROWSE

2036

キューが検索用にオープンされていません。

MQRC_NOT_OPEN_FOR_INPUT

2037

キューが取り出し用にオープンされていません。

MQRC_OBJECT_DAMAGED

2101

オブジェクトが破損しています。

MQRC_OPTIONS_ERROR

2046

オプションが不正です。または，指定されていません。

MQRC_Q_DELETED

2052

キューが削除されています。

MQRC_Q_MGR_STOPPING

2162

キューマネジャが終了処理中です。

MQRC_RESOURCE_PROBLEM

2102

システム資源が不足しています。

MQRC_STORAGE_NOT_AVAILABLE

2071

記憶容量が不足しています。

MQRC_SYNCPOINT_NOT_AVAILABLE

2072

同期点処理はできません。

MQRC_UNEXPECTED_ERROR

2195

予期しないエラーが発生しました。

MQRC_WAIT_INTERVAL_ERROR

2090

MQGMO構造体の待ち合わせ最大時間が不正です。

MQRC_WRONG_GMO_VERSION

2256

MQGMO構造体で指定されたバージョンは不正です。

MQRC_WRONG_MD_VERSION

2257

MQMD構造体で指定されたバージョンは不正です。

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

注意事項

取り出したメッセージは，通常，キューから削除されます。この削除は，MQGET命令の処理の一部，または同期点の処理の一部として起こります。

GetMsgOpts引数に検索オプションが指定されている場合，メッセージは削除されません。検索オプションを次に示します。

MQGMO_BROWSE_FIRST

MQGMO_BROWSE_NEXT

MQGMO_BROWSE_MSG_UNDER_CURSOR

これらのオプションの詳細については，「1.　データタイプ」の「MQGMO構造体　−　メッセージ取り出しオプション」でOptionsフィールドの説明を参照してください。

検索オプションと同時にMQGMO_LOCKオプションを指定した場合，検索したメッセージは排他状態になり，このハンドルでだけ利用できるようになります。

MQGMO_UNLOCKオプションを指定した場合，以前に排他状態であったメッセージの排他状態が解除されます。この場合，どんなメッセージも取り出せません。また，MsgDesc引数，BufferLength引数，Buffer引数，およびDataLength引数は，参照・変更されません。

アプリケーションがキューにメッセージを登録した順序は，次の条件がすべて満たされる場合だけ保たれます。

すべてのメッセージが同じ優先度の場合

すべてのMQPUT命令で，同じオブジェクトハンドルHobjを使用した場合

どのMQPUT命令も，トランザクション内から呼び出していない場合

そのキューが，MQPUT命令を呼び出したキューマネジャのローカルキューである場合（詳細は，後述の「注意b.」を参照してください）

これらの条件を満たす場合，かつ次の方法でメッセージを取り出した場合，メッセージは登録された順序で取り出せます。

メッセージを取り出すアプリケーションが，MsgIdを指定するなどして，取り出し順序を変更しなかった場合

そのキューからメッセージを取り出すのが，一つのアプリケーションだけの場合

複数のアプリケーションがそのキューからメッセージを取り出す場合，それらのアプリケーションは，メッセージが一連のものであることを識別する取り決めをしておく必要があります。例えば，登録元のアプリケーションは，メッセージのCorrelIdフィールドに独自の値を設定できます。

注意

a.

ほかのアプリケーションから，またはアプリケーション内の異なるトランザクションからのメッセージは，一つのトランザクションの観点からは登録した順序である場合も，間隔をおいてキュー内に格納されることがあります。

b.

リモートキューでは，送信側のキューマネジャから受信側のキューマネジャまでに一つの回線しかない構成のときに，メッセージの順序が保たれます。メッセージの幾つかが異なる回線で送信されると，メッセージの到着順序は保証されません。例えば，再構成，トラフィック調整，メッセージ長による回線選択などでは，到着順序は保証されません。また，あて先キューが満杯であるなどの理由で，メッセージの幾つかがデッドレターキューに転送された場合にも，順序が乱れることになります。

登録した順序を保証する条件を満たせない場合も，アプリケーションは，登録した順序を次の方法で保証できます。

順序を示す独自の情報をアプリケーションメッセージデータ内に組み込みます。

次のメッセージを登録する前に，相手が一つ前のメッセージを受け取ったことを確認します。

単一のトランザクション内で特定のキューに連続するメッセージをアプリケーションが登録し，トランザクションのコミットに成功する場合，メッセージは次に示す要領で取り出し可能になります。

キューが非共用キュー（つまりローカルキュー）である場合，トランザクション内のメッセージはすべて同時に利用できるようになります。

アプリケーションがメッセージグループを使用しないで，連続するメッセージを同じキューに登録する場合，特定の条件が満たされれば，メッセージの順序が保持されます。詳細については，この章の「MQPUT命令　−　メッセージの登録」の「注意事項」を参照してください。条件が満たされると，受信側アプリケーションは送信された順序でメッセージを受信できます。ただし，次に示す制約があります。

キューからメッセージを取り出す受信側は一つだけであること

キューからメッセージを取り出すアプリケーションが二つ以上ある場合は，各メッセージを識別するためのメカニズムについて，送信側と申し合わせる必要があります。例えば，送信側アプリケーションで，連続するメッセージのすべてのCorrelIdフィールドに順序に応じたユニークな値を設定できます。

特定のMsgIdやCorrelIdを指定することなどによって，受信側は取り出しの順序を故意に変更しないこと

送信側のアプリケーションがメッセージグループとしてメッセージを登録する場合，受信側のアプリケーションがMQGET命令にMQGMO_LOGICAL_ORDERオプションを指定するとき，メッセージは受信側のアプリケーションによって正しい順序で受信されます。メッセージグループの詳細については，次に示す項目を参照してください。

MQMD構造体のMsgFlagsフィールド

MQPMO構造体のMQPMO_LOGICAL_ORDERオプション

MQGMO構造体のMQGMO_LOGICAL_ORDERオプション

アプリケーションは，MsgDesc引数のFeedbackフィールドがMQFB_QUITかどうかを調べる必要があります。この値の場合は，アプリケーションを終了してください。詳細については，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でFeedbackフィールドの説明を参照してください。

Hobjに該当するキューをMQOO_SAVE_ALL_CONTEXTオプションでオープンしている場合で，MQGET命令の完了コードがMQCC_OKまたはMQCC_WARNINGのとき，キューハンドルHobjに関連するコンテキストは，取り出したメッセージのコンテキストで置き換えられます。ただし，MQGMO_BROWSE_FIRST，MQGMO_BROWSE_NEXT，またはMQGMO_BROWSE_MSG_UNDER_CURSORオプションを指定した場合を除きます。この場合，この注意は該当しません。

保存されたコンテキストはMQPMO_PASS_IDENTITY_CONTEXTまたはMQPMO_PASS_ALL_CONTEXTオプションを指定することによって，以降のMQPUTまたはMQPUT1命令で使用できます。これによって，受信されたメッセージのコンテキストが，その全体または一部を（メッセージが異なるキューに転送されるときなどに）異なるメッセージに伝達することが可能になります。メッセージコンテキストの詳細については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

GetMsgOpts引数にMQGMO_CONVERTオプションが指定されている場合，アプリケーションメッセージデータは，Buffer引数に設定される前に，受信側アプリケーションが要求する表現に変換されます。

メッセージの制御情報の中のFormatフィールドがアプリケーションデータの構造を識別し，CodedCharSetIdフィールドとEncodingフィールドがデータの文字セット識別子とマシンコード形式を指定しています。

MQGET命令を呼び出すアプリケーションでは，MsgDesc引数のCodedCharSetIdフィールドとEncodingフィールドに，アプリケーションデータ中の変換させる文字セット識別子とマシンコード形式を指定します。

メッセージデータは，変換が必要なとき，メッセージの制御情報のFormatフィールドの値に依存し，キューマネジャ自身によって変換されます。

次に示すフォーマット名称に対しては，キューマネジャが変換します。このフォーマット名称は，組み込みフォーマットと呼ばれます。

　MQFMT_ADMIN

　MQFMT_COMMAND1

　MQFMT_COMMAND2

　MQFMT_DEAD_LETTER_HEADER

　MQFMT_EVENTバージョン 1

　MQFMT_MD_EXTENSION

　MQFMT_PCF

　MQFMT_REF_MSG_HEADER

　MQFMT_STRING

　MQFMT_TRIGGER

　MQFMT_XMIT_Q_HEADER

フォーマット名称MQFMT_NONEは，メッセージデータの性質が未定義の特別な値です。したがって，メッセージがキューから取り出されたときも，キューマネジャによってその値が変換されることはありません。

注意事項

フォーマット名称MQFMT_NONEのメッセージにMQGET命令でMQGMO_CONVERTが指定されたとき，文字セットまたはマシンコード形式がMsgDesc引数に指定されたものと異なる場合，かつほかのエラーがない場合は，メッセージはBuffer引数に返されます。ただし，命令は完了コードMQCC_WARNINGおよび理由コードMRC_FORMAT_ERRORで完了します。

MQGET命令から返された値で，次に示す理由コードはメッセージの変換が成功したことを示します。

　MQRC_NONE

次に示す理由コードはメッセージの変換が成功した可能性があることを示します。成功したかどうかを調べるには，アプリケーションはMsgDesc引数のCodedCharSetIdフィールドとEncodingフィールドをチェックしなければなりません。

　MQRC_TRUNCATED_MSG_ACCEPTED

そのほかのすべての理由コードは，メッセージが変換されなかったことを示します。

メッセージの順序性については，マニュアル「TP1/Message Queue プログラム作成の手引」の「12.3　注意事項」を参照してください。

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引数に設定する文字列の長さを定義した定数です。

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

注意事項

返された情報は，指定した属性のその時点での値です。返された値をアプリケーションが使用する前に，その属性値が変更されていない保証はありません。

モデルキューをオープンするとき，ローカルの動的キューが生成されます。属性を照会するためにモデルキューをオープンする場合にも該当します。

動的キューの属性は（幾つか例外はありますが），動的キューが生成されるときのモデルキューの属性と同じです。その後，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が返されます。

MQOPEN命令　−　オブジェクトのオープン

機能

MQOPEN命令で，そのオブジェクトの利用を確立します。次の種類のオブジェクトをオープンできます。

キュー（配布リストを含む）

プロセス定義

キューマネジャ

形式

C言語の場合

MQOPEN(MQHCONN Hconn, PMQVOID ObjDesc, MQLONG Options,
       PMQHOBJ Hobj, PMQLONG CompCode, PMQLONG Reason)

COBOL言語の場合

CALL 'MQOPEN' USING HCONN, OBJDESC, OPTIONS, HOBJ,
                COMPCODE, REASON.

引数

●　Hconn（MQHCONN型）　−input

コネクションハンドルです。

キューマネジャへの接続を示すハンドルです。MQCONN命令の戻り値を指定してください。

ただし，MQOPEN命令では，Hconn引数の値としてMQCONN命令の戻り値以外を指定してもエラーにはなりません。それでも，MQCONN命令は必ず発行しなければならないため，MQCONN命令の戻り値を必ず指定してください。また，MQOPEN命令以降に発行する命令でも，同様にMQCONN命令の戻り値を指定してください。

●　ObjDesc（MQOD構造体）　−input/output

オブジェクト記述子です。

オープンするオブジェクトを識別する構造体です。詳細は，「1.　データタイプ」の「MQOD構造体　−　オブジェクト記述子」を参照してください。

ObjDesc引数のObjectNameフィールドがモデルキューの名称の場合，モデルキューの属性で動的キューが生成されます。これは，Options引数でどのオープンオプションを指定しても同様です。このMQOPEN命令で返されたHobjを使用すると，モデルキューではなく，生成された動的キューを利用することになります。これは，MQINQ命令とMQSET命令のときも同様です。ObjDesc引数のモデルキューの名称は，生成された動的キューの名称に置き換えられます。動的キューのタイプは，モデルキューのDefinitionType属性で決まります。動的キューに対するクローズオプションについては，この章の「MQCLOSE命令　−　オブジェクトのクローズ」を参照してください。

●　Options（MQLONG型）　−input

MQOPEN命令の動作を制御するオープンオプションです。

少なくとも，次の一つのオプションを指定してください。

MQOO_BROWSE

MQOO_INPUT_*（これらのオプションのうち一つだけ）

MQOO_INQUIRE

MQOO_OUTPUT

MQOO_SET

これらのオプションの意味を次に示します。また，ほかのオプションも指定できます。複数のオプションを指定する場合は，次のどちらかに従ってください。

それぞれを加算します。ただし，同じ値は2回以上加算しないでください。

プログラミング言語がビット演算をサポートしている場合に，それぞれのビット論理和を取ります。

同時に指定できない組み合わせは，そのつど示します。それ以外の組み合わせは自由です。ObjDescのオブジェクトに合ったオプションを指定してください。オプションおよびその指定方法の一覧については，「付録A　命令および引数の一覧」を参照してください。

アクセスオプション：

次に示すオプションはオブジェクトに実行される操作の種類を制御します。

MQOO_INPUT_AS_Q_DEF

キューの定義を省略するときの取り出しオプションで，取り出し用にオープンします。

以降のMQGET命令で使用するために，キューをオープンします。共用アクセスで取り出すか排他アクセスで取り出すかは，キューのDefInputOpenOption属性の値で決まります。

このオプションは，ローカルキュー，別名キュー，およびモデルキューのときだけ有効です。リモートキュー，配布リスト，キューではないオブジェクトについては不正となります。

MQOO_INPUT_SHARED

共用アクセスの取り出し用にオープンします。

以降のMQGET命令で使用するために，キューをオープンします。そのキューがほかのアプリケーションによってすでにオープンされていても，MQOO_INPUT_SHAREDオプションでオープンされている場合は，命令は成功します。MQOO_INPUT_EXCLUSIVEオプションでオープンされている場合は，理由コードMQRC_OBJECT_IN_USEで命令は失敗します。

このオプションは，ローカルキュー，別名キュー，およびモデルキューのときだけ有効です。リモートキュー，配布リスト，キューではないオブジェクトについては不正となります。

MQOO_INPUT_EXCLUSIVE

排他アクセスの取り出し用にオープンします。

以降のMQGET命令で使用するために，キューをオープンします。そのキューがほかのアプリケーションによってすでに取り出し用にオープンされていると，理由コードMQRC_OBJECT_IN_USEで命令は失敗します。

このオプションは，ローカルキュー，別名キュー，およびモデルキューのときだけ有効です。リモートキュー，配布リスト，キューではないオブジェクトについては不正となります。

これらのオプションに対しては，次の注意があります。

これらのオプションのうち，一つだけ指定できます。

キューのInhibitGet属性がMQQA_GET_INHIBITEDの場合でも，MQOPEN命令はこれらのオプションで成功します。ただし，この属性値が設定されている間は，MQGET命令は失敗します。

キューが共用アクセス用に定義されていない場合，つまり，ローカルキューのShareability属性がMQQA_NOT_SHAREABLEの場合，それに対して共用アクセス用にオープンしようとすると，排他アクセス用にオープンするときと同様に扱われます。

別名キューをこれらのオプションでオープンすると，排他アクセスできるかどうか，つまり，ほかのアプリケーションが排他アクセスで使用していないかどうかの確認は，別名キューのベースキューに対してされます。

ObjectQMgrNameフィールドがキューマネジャの別名の場合，これらのオプションは指定できません。また，キューマネジャの別名として使用されるリモートキューのローカル定義のRemoteQMgrName属性がローカルキューマネジャ名の場合も同様です。名称解決については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

MQOO_BROWSE

検索用にオープンします。

次のどれかのオプションでMQGET命令を使用するために，キューをオープンします。

　MQGMO_BROWSE_FIRST

　MQGMO_BROWSE_NEXT

　MQGMO_BROWSE_MSG_UNDER_CURSOR

これは，すでにMQOO_INPUT_EXCLUSIVEオプションでオープンされているキューに対しても，指定できます。MQOO_BROWSEオプションでMQOPEN命令を呼び出すと，検索カーソルが生成されます。検索カーソルの論理的な位置は，キューにある最初のメッセージの前になります。詳細については，「1.　データタイプ」の「MQGMO構造体　−　メッセージ取り出しオプション」でOptionsフィールドの説明を参照してください。

このオプションは，ローカルキュー，別名キュー，およびモデルキューのときだけ有効です。リモートキュー，配布リスト，キューではないオブジェクトについては不正となります。ObjectQMgrNameフィールドがキューマネジャの別名の場合，このオプションは指定できません。また，キューマネジャの別名として使用されるリモートキューのローカル定義のRemoteQMgrName属性がローカルキューマネジャ名の場合も同様です。名称解決については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

MQOO_OUTPUT

登録用にオープンします。

以降のMQPUT命令で使用するために，キューをオープンします。

キューのInhibitPut属性がMQQA_PUT_INHIBITEDの場合でも，MQOPEN命令はこのオプションで成功します。ただし，この属性値が設定されている間は，MQPUT命令は失敗します。

このオプションは，配布リストを含むすべてのキューに有効です。

MQOO_INQUIRE

属性の照会用にオープンします。

以降のMQINQ命令で使用するために，キュー，プロセス定義，またはキューマネジャをオープンします。

このオプションは，配布リストを除くすべてのオブジェクトタイプに有効です。ObjectQMgrNameフィールドがキューマネジャの別名の場合は，このオプションは指定できません。これは，キューマネジャの別名として使用されるリモートキューのローカル定義のRemoteQMgrName属性がローカルキューマネジャ名の場合も同様です。名称解決については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

MQOO_SET

属性の設定用にオープンします。

以降のMQSET命令で使用するために，キューをオープンします。

このオプションは，配布リストを除くすべてのキューに有効です。ObjectQMgrNameフィールドがキューマネジャの別名の場合，このオプションは指定できません。また，キューマネジャの別名として使用されるリモートキューのローカル定義のRemoteQMgrName属性がローカルキューマネジャ名の場合も同様です。名称解決については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

バインディングオプション：

次に示すオプションは，オープンされたオブジェクトがクラスタキューである場合に適用されます。これらのオプションは，キューハンドルのバインディングを，クラスタキューの特定のインスタンスへと制御します。

MQOO_BIND_ON_OPEN

キューがオープンされたときにハンドルをあて先にバインドします。

このオプションを指定すると，キューがオープンされたとき，ローカルキューマネジャはキューハンドルを特定のあて先キューに固定します。その結果，このハンドルを使用して登録されるすべてのメッセージは，あて先キューの同じインスタンスへ同じルートで送信されます。

このオプションはキューにだけ使用でき，クラスタキューにだけ意味があります。

クラスタキューではないキューに指定された場合，このオプションは無視されます。

MQOO_BIND_NOT_FIXED

特定のあて先にバインドしません。

このオプションを指定すると，ローカルキューマネジャがキューハンドルを特定のあて先キューに固定しないようにします。その結果，このハンドルを使用する後続のMQPUT命令では，メッセージはあて先キューの異なるインスタンスに送信されるか，同じインスタンスであっても異なるルートで送信されます。ローカルキューマネジャ，リモートキューマネジャ，またはMCAによって，ネットワークの条件に従って，あて先がそのつど変更されます。

注意事項

トランザクションを完了させるために，連続するメッセージを交換する必要のあるクライアントおよびサーバアプリケーションは，MQOO_BIND_NOT_FIXED，またはDefBind属性がMQBND_BIND_NOT_FIXEDの場合のMQOO_BIND_AS_Q_DEFを指定しないでください。なぜなら，連続している後続メッセージはサーバアプリケーションの異なるあて先に送信される可能性があるためです。

MQOO_BROWSEまたはMQOO_INPUT_*オプションの一つがクラスタキューに指定された場合，キューマネジャはクラスタキューの中でローカルなインスタンスを選択します。その結果，MQOO_BIND_NOT_FIXEDが指定されていても，キューハンドルのバインディングは固定されます。

MQOO_INQUIREがMQOO_BIND_NOT_FIXEDとともに指定された場合，このハンドルを使用した後続のMQINQでは，クラスタキューの異なるインスタンスを照会することがあります。通常はすべてのインスタンスは同じ属性値を持ちます。

MQOO_BIND_NOT_FIXEDはキューに対してだけ使用でき，クラスタキューに対して意味があります。クラスタキューではないキューに指定された場合，オプションは無視されます。

MQOO_BIND_AS_Q_DEF

キューについてのデフォルトバインディングを使用します。

このオプションを指定すると，ローカルキューマネジャは，DefBindキュー属性で定義された方法でキューハンドルをバインドします。この属性の値は，MQBND_BIND_ON_OPENまたはMQBND_BIND_NOT_FIXEDのどちらかです。

MQOO_BIND_ON_OPENおよびMQOO_BIND_NOT_FIXEDのどちらも指定されていない場合，MQOO_BIND_AS_Q_DEFがデフォルト値となります。

MQOO_BIND_AS_Q_DEFは，プログラムの文書化のために定義されています。

このオプションは，ほかに二つあるバインドオプションのどちらかと一緒に指定されることは意図していません。しかし，値が0であるため，そのような指定を検知できません。

コンテキストオプション：

次に示すオプションは，メッセージコンテキストの処理を制御します。

MQOO_SAVE_ALL_CONTEXT

取り出し時にコンテキストを保存します。

コンテキスト情報は，このキューハンドルに関連づけられます。このハンドルを使用して取り出したメッセージのコンテキストから，この情報が取り出されます。メッセージコンテキストについては，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

このコンテキスト情報は，以降のMQPUT命令およびMQPUT1命令で登録するメッセージに引き渡せます。コンテキスト情報の引き渡しについては，「1.　データタイプ」の「MQPMO構造体　−　メッセージ登録オプション」で，OptionsフィールドのMQPMO_PASS_IDENTITY_CONTEXTオプションとMQPMO_PASS_ALL_CONTEXTオプションの説明を参照してください。

一度もメッセージを取り出さないうちは，登録するメッセージにコンテキストを引き渡せません。

MQGMO_*検索オプションを使用した取り出しでは，コンテキスト情報は保存されません。ただし，MsgDesc引数のコンテキストフィールドには返されます。

このオプションは，ローカルキュー，別名キュー，およびモデルキューのときだけ有効です。リモートキュー，配布リスト，キューではないオブジェクトについては不正となります。

MQOO_INPUT_*オプションのどれかと同時に指定してください。

MQOO_PASS_IDENTITY_CONTEXT

識別コンテキストを引き渡せるようにします。

このオプションを指定することで，メッセージ登録時のPutMsgOpts引数にMQPMO_PASS_IDENTITY_CONTEXTオプションを指定できるようになります。具体的には，MQOO_SAVE_ALL_CONTEXTオプションでオープンした入力キューからの識別コンテキストの情報をメッセージに組み込みます。メッセージコンテキストについては，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

MQOO_OUTPUTオプションと同時に指定してください。

このオプションは，配布リストを含むすべてのキューに有効です。

MQOO_PASS_ALL_CONTEXT

全コンテキストを引き渡せるようにします。

このオプションを指定することで，メッセージ登録時のPutMsgOpts引数にMQPMO_PASS_ALL_CONTEXTオプションを指定できるようになります。具体的には，MQOO_SAVE_ALL_CONTEXTオプションでオープンした入力キューからの識別コンテキストと登録元コンテキストの情報をメッセージに組み込みます。メッセージコンテキストについては，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

このオプションは，MQOO_PASS_IDENTITY_CONTEXTオプションの内容を含みます。このため，同時にMQOO_PASS_IDENTITY_CONTEXTオプションを指定する必要はありません。MQOO_OUTPUTオプションと同時に指定してください。

このオプションは，配布リストを含むすべてのキューに有効です。

MQOO_SET_IDENTITY_CONTEXT

識別コンテキストを設定できるようにします。

このオプションを指定することで，メッセージ登録時のPutMsgOpts引数にMQPMO_SET_IDENTITY_CONTEXTオプションを指定できるようになります。具体的には，MQPUT命令またはMQPUT1命令のMsgDesc引数に指定した識別コンテキストの情報をメッセージに組み込みます。メッセージコンテキストについては，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

このオプションは，MQOO_PASS_IDENTITY_CONTEXTオプションの内容を含みます。このため，同時にMQOO_PASS_IDENTITY_CONTEXTオプションを指定する必要はありません。MQOO_OUTPUTオプションと同時に指定してください。

このオプションは，配布リストを含むすべてのキューに有効です。

MQOO_SET_ALL_CONTEXT

全コンテキストを設定できるようにします。

このオプションを指定することで，メッセージ登録時のPutMsgOpts引数にMQPMO_SET_ALL_CONTEXTオプションを指定できるようになります。具体的には，MQPUT命令またはMQPUT1命令のMsgDesc引数に指定した識別コンテキストと登録元コンテキストの情報をメッセージに組み込みます。メッセージコンテキストについては，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

このオプションは，次のオプションの内容を含みます。このため，同時にこれらのオプションを指定する必要はありません。

　MQOO_PASS_IDENTITY_CONTEXT

　MQOO_PASS_ALL_CONTEXT

　MQOO_SET_IDENTITY_CONTEXT

MQOO_OUTPUTオプションと同時に指定してください。

このオプションは，配布リストを含むすべてのキューに有効です。

そのほかのオプション：

次に示すオプションは権限チェックおよびキューマネジャ停止時の動作を制御します。

MQOO_ALTERNATE_USER_AUTHORITY

代替ユーザ識別子を使用します。

オブジェクトを利用するユーザの識別子として，アプリケーションを実行しているユーザ識別子ではなく，ObjDesc引数のAlternateUserIdの代替ユーザ識別子が使用されます。

このオプションは，すべてのオブジェクトタイプに有効です。

MQOO_FAIL_IF_QUIESCING

TP1/Message Queueでは意味がありません。

このオプションを指定しても，TP1/Message Queueの動作には影響しません。これは，アプリケーションの移植性を向上させるために定義されています。

次に，MQOPEN命令のオプションとキュータイプとの関係を示します。

オプション

別名キュー※1

ローカルキューおよびモデルキュー

リモートキュー

非ローカルクラスタキュー

配布リスト

MQOO_INPUT_AS_Q_DEF

○

○

×

×

×

MQOO_INPUT_SHARED

○

○

×

×

×

MQOO_INPUT_EXCLUSIVE

○

○

×

×

×

MQOO_BROWSE

○

○

×

×

×

MQOO_OUTPUT

○

○

○

○

○

MQOO_INQUIRE

○

○

△

○

×

MQOO_SET

○

○

△

×

×

MQOO_BIND_ON_OPEN※2

○

○

○

○

○

MQOO_BIND_NOT_FIXED※2

○

○

○

○

○

MQOO_BIND_AS_Q_DEF※2

○

○

○

○

○

MQOO_SAVE_ALL_CONTEXT

○

○

×

×

×

MQOO_PASS_IDENTITY_CONTEXT

○

○

○

○

○

MQOO_PASS_ALL_CONTEXT

○

○

○

○

○

MQOO_SET_IDENTITY_CONTEXT

○

○

○

○

○

MQOO_SET_ALL_CONTEXT

○

○

○

○

○

MQOO_ALTERNATE_USER_AUTHORITY

○

○

○

○

○

MQOO_FAIL_IF_QUIESCING

○

○

○

○

○

（凡例）

○：有効

×：無効

△：リモートキューのローカル定義にだけ有効

注※1

別名キューに対するオプションの有効性は，別名が解決されるキューでのオプションの有効性に依存します。

注※2

このオプションは任意のキュータイプに指定できますが，キューがクラスタキューではない場合は無視されます。

●　Hobj（MQHOBJ型）　−output

オブジェクトハンドルです。

利用するオブジェクトを示すハンドルです。以降の命令でこのオブジェクトを利用するときに，このハンドルを指定します。MQCLOSE命令を呼び出すと，またはこのハンドルの範囲の処理が終了すると，このハンドルは無効になります。

返されるオブジェクトハンドルの有効範囲は，命令に指定されたコネクションハンドルと同じです。コネクションハンドルの有効範囲については，この章の「MQCONN命令　−　キューマネジャへの接続」でHconn引数を参照してください。

●　CompCode（MQLONG型）　−output

完了コードです。

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

MQCC_OK：成功

MQCC_WARNING：警告（部分的完了）

MQCC_FAILED：失敗

●　Reason（MQLONG型）　−output

理由コードです。

CompCode引数がMQCC_OKの場合

理由コード

数値

意味

MQRC_NONE

0

理由コードはありません。

CompCode引数がMQCC_WARNINGの場合

理由コード

数値

意味

MQRC_MULTIPLE_REASONS

2136

複数のリターンコードが返されました。

CompCode引数がMQCC_FAILEDの場合

理由コード

数値

意味

MQRC_CLUSTER_PUT_INHIBITED

2268

クラスタ内のすべてのキューに対して登録が禁止されています。

MQRC_CLUSTER_RESOLUTION_ERROR

2189

クラスタ名称の解決に失敗しました。

MQRC_CLUSTER_RESOURCE_ERROR

2269

クラスタリソースのエラーです。

MQRC_DEF_XMIT_Q_USAGE_ERROR

2199

省略時の転送キューの使用方法に誤りがあります。

MQRC_DYNAMIC_Q_NAME_ERROR

2011

動的キュー名が不正です。

MQRC_HANDLE_NOT_AVAILABLE

2017

現在そのハンドルは有効ではありません。

MQRC_HCONN_ERROR

2018

コネクションハンドルが不正です。

MQRC_HOBJ_ERROR

2019

オブジェクトハンドルが不正です。

MQRC_MULTIPLE_REASONS

2136

複数の理由コードが返されました。

MQRC_NAME_NOT_VALID_FOR_TYPE

2194

オブジェクトタイプに対してオブジェクト名が不正です。

MQRC_OBJECT_ALREADY_EXISTS

2100

オブジェクトがすでにあります。

MQRC_OBJECT_DAMAGED

2101

オブジェクトが破損しています。

MQRC_OBJECT_IN_USE

2042

オブジェクトは衝突するオプションですでにオープンされています。

MQRC_OBJECT_NAME_ERROR

2152

オブジェクト名が不正です。

MQRC_OBJECT_Q_MGR_NAME_ERROR

2153

オブジェクトキューマネジャ名が不正です。

MQRC_OBJECT_RECORDS_ERROR

2155

オブジェクトレコードが不正です。

MQRC_OBJECT_TYPE_ERROR

2043

オブジェクトタイプが不正です。

MQRC_OD_ERROR

2044

オブジェクト記述子の構造体が不正です。

MQRC_OPTION_NOT_VALID_FOR_TYPE

2045

オブジェクトタイプに対してオプションが不正です。

MQRC_OPTIONS_ERROR

2046

オプションが不正です。または，指定されていません。

MQRC_Q_TYPE_ERROR

2057

キュータイプが不正です。

MQRC_RECS_PRESENT_ERROR

2154

存在するレコードの数が不正です。

MQRC_REMOTE_Q_NAME_ERROR

2184

リモートキュー名が不正です。

MQRC_RESOURCE_PROBLEM

2102

システム資源が不足しています。

MQRC_RESPONSE_RECORDS_ERROR

2156

応答レコードが不正です。

MQRC_STORAGE_NOT_AVAILABLE

2071

記憶容量が不足しています。

MQRC_UNEXPECTED_ERROR

2195

予期しないエラーが発生しました。

MQRC_UNKNOWN_ALIAS_BASE_Q

2082

別名キューのベースキューを認識できません。

MQRC_UNKNOWN_DEF_XMIT_Q

2197

省略時の転送キューを認識できません。

MQRC_UNKNOWN_OBJECT_NAME

2085

オブジェクト名を認識できません。

MQRC_UNKNOWN_OBJECT_Q_MGR

2086

オブジェクトのキューマネジャを認識できません。

MQRC_UNKNOWN_REMOTE_Q_MGR

2087

リモートキューマネジャを認識できません。

MQRC_UNKNOWN_XMIT_Q

2196

転送キューを認識できません。

MQRC_XMIT_Q_USAGE_ERROR

2092

転送キューの使用方法に誤りがあります。

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

注意事項

オブジェクトをオープンする用途は，次のとおりです。

キューをオープンする場合

−　メッセージの取り出し，または検索（MQGET命令）

−　メッセージの登録（MQPUT命令）

−　キューの属性の照会（MQINQ命令）

−　キューの属性の設定（MQSET命令）

モデルキューの名称を指定した場合，動的キューが生成されます。詳細については「ObjDesc引数」の説明を参照してください。

配布リストはキューのリストを含む特別なキューオブジェクトです。メッセージ登録のためにだけオープンできます。次に示す場合はオープンできません。詳細については，「注意事項」の6.を参照してください。

−　メッセージの取り出し，または検索

−　キューの属性の照会，または設定

プロセス定義をオープンする場合

−　プロセス定義の属性の照会（MQINQ命令）

キューマネジャをオープンする場合

−　ローカルキューマネジャの属性の照会（MQINQ命令）

一つのアプリケーションが，同じオブジェクトを2回以上オープンすることもできます。それぞれのオープンに対して，異なるハンドルが返されます。そのハンドルは，それをオープンした目的の機能でそれぞれ使用できます。

MQOPEN命令を呼び出したときに，ローカルキューマネジャ内の実名で置き換えられます。つまり，次のようになります。

別名キューの実名は，ベースキューの名称になります。

リモートキューのローカル定義の実名は，リモートキューマネジャ名とそれに定義されるキューの名称になります。

リモートキューマネジャ名の実名は，転送キューの名称になります。

ただし，以降にそのハンドルを使用してMQINQ命令またはMQSET命令を呼び出す場合でも，オープンしたときの名称を照会することに注意してください。実名に置き換えられた名称を照会するわけではありません。例えば，別名キューをオープンした場合，MQINQ命令で返される属性は，別名キューの属性です。別名キューのベースキューの属性ではありません。実名のチェックはされますが，MQOPEN命令のOptions引数の指定内容とは関係ありません。

オープンされるオブジェクトがクラスタキューである場合，名称解決はMQOPEN命令発行時，またはあとで解決されます。名称解決が発生する場合は，MQOPEN命令の次に示すMQOO_BIND_*オプションで制御されます。

　MQOO_BIND_ON_OPEN

　MQOO_BIND_NOT_FIXED

　MQOO_BIND_AS_Q_DEF

この命令のObjDesc引数にリモートキューを指定する方法に，次の2とおりがあります。詳細については，「1.　データタイプ」の「MQOD構造体　−　オブジェクト記述子」でObjectNameフィールドとObjectQMgrNameフィールドの説明を参照してください。

リモートキューのローカル定義の名称をObjectNameフィールドに指定します。この場合，ローカルキューマネジャを参照するためのObjectQMgrNameフィールドには，空白またはC言語の場合はヌル文字列を指定できます。

リモートキューマネジャが認識できるリモートキュー名を，ObjectNameフィールドに指定します。この場合，ObjectQMgrName属性にリモートキューマネジャの名称を指定します。

メッセージがリモートキューマネジャに到着したとき，登録元ユーザのユーザ識別子によっては，リモートキューマネジャがメッセージを拒否することがあります。

MQOO_BROWSEオプションを指定してMQOPEN命令を呼び出すと，検索カーソルが生成されます。検索カーソルは，オブジェクトハンドルと検索オプションを指定したMQGET命令で使用します。これによって，内容を変更しないでキューを検索できます。メッセージを検索したあとに，MQGMO_MSG_UNDER_CURSORオプションを使用して，キューから削除できます。

同じキューに対して何回かMQOPEN命令を実行することで，一つのアプリケーションで複数の検索カーソルを持てます。

配布リスト使用時には，次の点に注意してください。

配布リストをオープンするとき，MQOD構造体のフィールドの値は，次の条件を満たさなければなりません。

・Versionフィールドの値はMQOD_VERSION_2以上である。

・ObjectTypeフィールドの値はMQOT_Qである。

・ObjectNameフィールドは空白またはヌル文字列である。

・ObjectQMgrNameフィールドは空白またはヌル文字列である。

・RecsPresentフィールドは0より大きい。

・ObjectRecOffsetフィールドおよびObjectRecPtrフィールドのどちらかが0で，他方は0以外である。

・ResponseRecOffsetフィールドおよびResponseRecPtrフィールドは両方とも0か，どちらかが0で他方は0以外である。

・ObjectRecOffsetフィールドまたはObjectRecPtrフィールドのどちらかで指定されるRecsPresentフィールドのオブジェクトレコードが存在しなければならない。オブジェクトレコードは，オープンするあて先キューの名称を設定しなければならない。

・ResponseRecOffsetフィールドおよびResponseRecPtrフィールドのどちらかが0以外の場合は，RecsPresentフィールドの応答レコードが存在しなければならない。これは，命令がMQRC_MULTIPLE_REASONSの理由コードで完了すると，キューマネジャによって設定される。

バージョン2のMQOD構造体は，RecsPresentフィールドが0であることを保証すると，配布リストではない単一のキューをオープンするときも使用できます。

Options引数には，次のオプションだけが指定できます。

　MQOO_OUTPUT

　MQOO_PASS_*_CONTEXT

　MQOO_SET_*_CONTEXT

　MQOO_ALTERNATE_USER_AUTHORITY

　MQOO_FAIL_IF_QUIESCING

配布リストのあて先キューは，ローカルキュー，別名キュー，またはリモートキューです。モデルキューは指定できません。モデルキューが指定されると，キューのオープンが理由コードMQRC_Q_TYPE_ERRORで失敗します。ただし，リストにあるほかのキューのオープンを妨げることはしません。

完了コードおよび理由コードの引数は，次のように設定されます。

・配布リストのキューに対する操作が同じ方法で，すべて成功またはすべて失敗した場合，完了コードと理由コードの引数は，共通の結果を記述するように設定されます。アプリケーションによって指定されている場合も，MQRR構造体の応答レコードは設定されません。

例えば，オープンが成功すると，完了コードにMQCC_OK，理由コードにMQRC_NONEがそれぞれ設定されます。キューが存在しないで，オープンに失敗した場合，引数はMQCC_FAILEDおよびMQRC_UNKNOWN_OBJECT_NAMEに設定されます。

・配布リストのキューに対するオープン操作が，同じ方法で部分的に成功または失敗した場合は次のとおりです。

−少なくとも一つのオープンに成功すると，完了コードの引数にはMQCC_WARNINGが設定されます。すべてが失敗するとMQCC_FAILEDが設定されます。

−理由コードの引数は，MQRC_MULTIPLE_REASONSに設定されます。

−応答レコードがアプリケーションによって指定されている場合は，配布リストのキューに対して個別の完了コードと理由コードを設定します。

配布リストのオープンが成功すると，返却されたHobjハンドルは，配布リストのキューにメッセージを登録するための次のMQPUT命令で使用できます。また，配布リストへのアクセスを廃止するために，MQCLOSE命令でも使用できます。配布リストをクローズするのに適当なオプションはMQCO_NONEだけです。

MQPUT1命令は，配布リストにメッセージを登録するときも使用できます。リスト中のキューを定義するMQOD構造体は，MQPUT1命令の引数として指定されます。

配布リスト中のオープンに成功したあて先は，アプリケーションが一つのタスクでオープンできる最大のハンドル数を超えたかどうかチェックするとき，別々のハンドルとしてカウントされます。オープンできる最大のハンドル数については「3.　オブジェクトの属性」の「キューマネジャの属性」でMaxHandles属性を参照してください。

配布リスト中の二つ以上のあて先が，同じ物理キューに受信されるときも同様に処理されます。

オープンに成功したあて先は，OpenOutputCount属性の値を1ずつ増加させます。

クラスタキューを使用するときには，次の点に注意してください。

クラスタキューが最初にオープンされた場合で，かつローカルキューマネジャがフルリポジトリキューマネジャではない場合，ローカルキューマネジャはフルリポジトリキューマネジャからクラスタキューについての情報を取得します。ネットワークがビジー状態の場合，ローカルキューマネジャがリポジトリキューマネジャから必要な情報を受信するために数秒掛かるときがあります。その結果，MQOPEN命令を発行したアプリケーションが，MQOPEN命令がリターンするまでに10秒以上待つことがあります。ローカルキューマネジャがこの時間内にクラスタキューについての必要な情報を受信しないと，命令はMQRC_CLUSTER_RESOLUTION_ERRORで失敗します。

クラスタキューがオープンされ，クラスタ内に複数のキューインスタンスがある場合，実際にオープンされるインスタンスはMQOPEN命令で指定されるオプションに依存します。

・次に示すどれかのオプションを指定したとき，オープンされるクラスタキューインスタンスは，ローカルインスタンスでなければいけません。キューのローカルインスタンスがないとき，MQOPEN命令は失敗します。

　MQOO_BROWSE

　MQOO_INPUT_AS_Q_DEF

　MQOO_INPUT_EXCLUSIVE

　MQOO_INPUT_SHARED

　MQOO_SET

・上記のオプションは指定されていない場合で，MQOO_INQUIREとMQOO_OUTPUTの一方または両方を指定するとき，ローカルインスタンスがオープンされます。ローカルインスタンスがなければリモートインスタンスがオープンされます。

MQPUT命令　−　メッセージの登録

機能

MQPUT命令で，メッセージをキューまたは配布リストへ登録できます。このとき，キューはオープンされている必要があります。

形式

C言語の場合

MQPUT(MQHCONN Hconn, MQHOBJ Hobj, PMQVOID MsgDesc,
      PMQVOID PutMsgOpts, MQLONG BufferLength,
      PMQVOID Buffer, PMQLONG CompCode, PMQLONG Reason)

COBOL言語の場合

CALL 'MQPUT' USING HCONN, HOBJ, MSGDESC, PUTMSGOPTS,
                BUFFERLENGTH, BUFFER, COMPCODE, REASON.

引数

●　Hconn（MQHCONN型）　−input

コネクションハンドルです。

キューマネジャへの接続を示すハンドルです。MQCONN命令の戻り値を指定してください。

●　Hobj（MQHOBJ型）　−input

オブジェクトハンドルです。

メッセージを登録するキューを示すハンドルです。MQOO_OUTPUTオプションを指定したMQOPEN命令の戻り値を指定してください。

●　MsgDesc（MQMD構造体）　−input/output

メッセージ記述子です。

送信するメッセージの属性を記述する構造体です。また，登録後のメッセージに関する情報が返されます。

詳細については，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」を参照してください。

アプリケーションがバージョン1のMQMD構造体を指定すると，返却されるメッセージは，バージョン2のMQMD構造体にだけ存在するフィールドの値を指定するために，アプリケーションメッセージデータの前にMQMDE構造体を付加できます。そのとき，MQMDE構造体が存在することを示すために，MQMD構造体のFormatフィールドには，MQFMT_MD_EXTENSIONを設定しなければなりません。

詳細については，「1.　データタイプ」の「MQMDE構造体　−　メッセージ記述子の拡張」を参照してください。

●　PutMsgOpts（MQPMO構造体）　−input/output

メッセージ登録オプションです。

詳細については，「1.　データタイプ」の「MQPMO構造体　−　メッセージ登録オプション」を参照してください。

●　BufferLength（MQLONG型）　−input

メッセージデータを格納したバッファのバイト長です。

0も指定できます。このとき，アプリケーションデータのないメッセージを登録するものとみなされます。BufferLengthの上限は状況によって異なります。

あて先キューが共用キューの場合，上限は63キロバイト（64512バイト）です。

あて先キューがローカルキューの場合，またはローカルキューの別名を使用している場合は，ローカルキューまたはキューマネジャのMaxMsgLength属性のうち，小さい方の値を超えて指定できません。

あて先キューがリモートキューの場合，またはリモートキューの別名を使用している場合は，次に示すローカルキューまたはキューマネジャのMaxMsgLength属性のうち，小さい方の値を超えて指定できません。

ローカルキューマネジャで一時的に格納するために使用される転送キュー

ローカルキューからあて先キューまでの経路で仲介するキューマネジャで使用される転送キュー

あて先キューマネジャで使用されるあて先キュー

なお，メッセージが転送キューに格納されるとき，メッセージに付加情報が追加されます。このため，送信できるアプリケーションデータの量が少なくなります。BufferLength引数の値を決めるときは，転送キューのMaxMsgLength属性の値からMQ_MSG_HEADER_LENGTHのバイト数を引いた値を参考にしてください。

注意事項

上記の1.の場合だけ，メッセージの登録直後にバッファ長のエラー（理由コードMQRC_MSG_TOO_BIG_FOR_QまたはMQRC_MSG_TOO_BIG_FOR_Q_MGR）が判明します。2.，3.の場合は，登録直後はエラーが判明しません。2.，3.でエラーが判明した場合，仲介するキューマネジャまたはあて先キューマネジャのデッドレターキューに，メッセージが転送されます。送信側で要求している場合は，エラー発生時に報告メッセージが生成されます。

●　Buffer（MQBYTE型×BufferLength）　−input

メッセージデータを格納したバッファです。バッファには，メッセージ中のデータに適したバウンダリ調整が必要です。多くのメッセージ（MQヘッダ構造体のあるメッセージを含む）には4バイト単位の調整が適していますが，より厳しい調整が必要なメッセージもあります。例えば，64ビット2進整数を含めるメッセージには8バイト単位のバウンダリ調整が必要です。

バッファ内に文字または数値がある場合，MsgDesc引数のCodedCharSetIdフィールドとEncodingフィールドに，適切な値を指定してください。これらの値によって，受信側でデータを適切な文字セットとマシンコード形式に変換できます。

注意事項

MQPUT命令のそのほかの引数は，ローカルキューマネジャの文字セットとマシンコード形式，つまり，ローカルキューのCodedCharSetId属性とMQENC_NATIVEで指定してください。

C言語では，この引数をvoid型のポインタとして指定します。したがって，どんなデータタイプのアドレスでも，引数として指定できます。

BufferLength引数に0を指定した場合，Buffer引数は参照されません。したがって，C言語のプログラムでは，この引数のアドレスとしてヌルを指定できます。

●　CompCode（MQLONG型）　−output

完了コードです。

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

MQCC_OK：成功

MQCC_WARNING：警告（一部成功）

MQCC_FAILED：失敗

●　Reason（MQLONG型）　−output

理由コードです。

CompCode引数がMQCC_OKの場合

理由コード

数値

意味

MQRC_NONE

0

理由コードはありません。

CompCode引数がMQCC_WARNINGの場合

理由コード

数値

意味

MQRC_INCOMPLETE_GROUP

2241

メッセージグループが完全ではありません。

MQRC_INCOMPLETE_MSG

2242

論理メッセージが完全ではありません。

MQRC_INCONSISTENT_PERSISTENCE

2185

永続性指定が矛盾しています。

MQRC_INCONSISTENT_UOW

2245

コミット単位の指定が矛盾しています。

MQRC_MULTIPLE_REASONS

2136

複数の理由コードが返されました。

MQRC_PRIORITY_EXCEEDS_MAXIMUM

2049

メッセージ優先度が最大値を超えています。

MQRC_UNKNOWN_REPORT_OPTION

2104

メッセージ記述子中の報告オプションを認識できません。

CompCode引数がMQCC_FAILEDの場合

理由コード

数値

意味

MQRC_BUFFER_ERROR

2004

バッファの引数が不正です。

MQRC_BUFFER_LENGTH_ERROR

2005

バッファ長の引数が不正です。

MQRC_CLUSTER_RESOLUTION_ERROR

2189

クラスタ名称の解決に失敗しました。

MQRC_CLUSTER_RESOURCE_ERROR

2269

クラスタリソースのエラーです。

MQRC_CONTEXT_HANDLE_ERROR

2097

参照先のキューハンドルにコンテキストが保存されていません。

MQRC_CONTEXT_NOT_AVAILABLE

2098

参照先のキューハンドルのコンテキストが不正です。

MQRC_DH_ERROR

2135

配布リストの構造体が不正です。

MQRC_EXPIRY_ERROR

2013

メッセージ保持時間が不正です。

MQRC_FEEDBACK_ERROR

2014

報告メッセージ返答コードが不正です。

MQRC_HCONN_ERROR

2018

コネクションハンドルが不正です。

MQRC_HOBJ_ERROR

2019

オブジェクトハンドルが不正です。

MQRC_INCOMPLETE_GROUP

2241

メッセージグループが完全ではありません。

MQRC_INCOMPLETE_MSG

2242

論理メッセージが完全ではありません。

MQRC_INCONSISTENT_PERSISTENCE

2185

永続性指定が矛盾しています。

MQRC_INCONSISTENT_UOW

2245

コミット単位の指定が矛盾しています。

MQRC_MD_ERROR

2026

メッセージ記述子が不正です。

MQRC_MDE_ERROR

2248

メッセージ記述子の拡張子が不正です。

MQRC_MISSING_REPLY_TO_Q

2027

応答キューがありません。

MQRC_MSG_FLAGS_ERROR

2249

メッセージフラグが不正です。

MQRC_MSG_SEQ_NUMBER_ERROR

2250

メッセージシーケンス番号が不正です。

MQRC_MSG_TOO_BIG_FOR_Q

2030

メッセージ長がキューに定義された最大値を超えています。

MQRC_MSG_TYPE_ERROR

2029

メッセージ記述子中のメッセージタイプが不正です。

MQRC_MULTIPLE_REASONS

2136

複数の理由コードが返されています。

MQRC_NO_DESTINATIONS_AVAILABLE

2270

利用可能なあて先キューが存在しません。

MQRC_NOT_OPEN_FOR_OUTPUT

2039

キューが登録用にオープンされていません。

MQRC_NOT_OPEN_FOR_PASS_ALL

2093

キューが全コンテキスト引き渡し用にオープンされていません。

MQRC_NOT_OPEN_FOR_PASS_IDENT

2094

キューが識別コンテキスト引き渡し用にオープンされていません。

MQRC_NOT_OPEN_FOR_SET_ALL

2095

キューが全コンテキスト設定用にオープンされていません。

MQRC_NOT_OPEN_FOR_SET_IDENT

2096

キューが識別コンテキスト設定用にオープンされていません。

MQRC_OBJECT_DAMAGED

2101

オブジェクトが破損しています。

MQRC_OFFSET_ERROR

2251

メッセージセグメントのオフセットが不正です。

MQRC_OPEN_FAILED

2137

キューのオープンに失敗しました。

MQRC_OPTIONS_ERROR

2046

オプションが不正です。または，指定されていません。

MQRC_ORIGINAL_LENGTH_ERROR

2252

元のメッセージの長さが不正です。

MQRC_PCF_ERROR

2149

PCF構造体が不正です。

MQRC_PERSISTENCE_ERROR

2047

メッセージ永続性が不正です。

MQRC_PERSISTENT_NOT_ALLOWED

2048

キューは永続メッセージをサポートしていません。

MQRC_PMO_ERROR

2173

メッセージ登録オプションの構造体が不正です。

MQRC_PMO_RECORD_FLAGS_ERROR

2158

メッセージ登録レコードのフラグが不正です

MQRC_PRIORITY_ERROR

2050

メッセージ優先度が不正です。

MQRC_PUT_INHIBITED

2051

指定されたキューへの登録は禁止されています。

MQRC_PUT_MSG_RECORDS_ERROR

2159

メッセージ登録レコードが不正です。

MQRC_Q_DELETED

2052

キューが削除されています。

MQRC_Q_FULL

2053

キューが満杯です。

MQRC_Q_SPACE_NOT_AVAILABLE

2056

キューに対応するディスクに空き領域がありません。

MQRC_RECS_PRESENT_ERROR

2154

不正なレコードが存在します。

MQRC_REPORT_OPTIONS_ERROR

2061

メッセージ記述子中の報告オプションが不正です。

MQRC_RESOURCE_PROBLEM

2102

システム資源が不足しています。

MQRC_RESPONSE_RECORDS_ERROR

2156

応答レコードが不正です。

MQRC_SEGMENT_LENGTH_ZERO

2253

メッセージセグメント長が0です。

MQRC_STORAGE_NOT_AVAILABLE

2071

記憶容量が不足しています。

MQRC_SYNCPOINT_NOT_AVAILABLE

2072

同期点処理はできません。

MQRC_UNEXPECTED_ERROR

2195

予期しないエラーが発生しました。

MQRC_UOW_NOT_AVAILABLE

2255

コミット単位ではキューマネジャを使用できません。

MQRC_WRONG_MD_VERSION

2257

MQMD構造体で指定されたバージョンが誤っています。

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

注意事項

キューへメッセージを登録する命令には，MQPUT命令とMQPUT1命令の二つがあります。これらの命令は，状況に応じて使い分けてください。

MQPUT命令は，同じキューへ複数のメッセージを登録するときに使用します。

この方法では，始めにMQOO_OUTPUTオプションを指定してMQOPEN命令を呼び出します。次に，MQPUT命令を一回またはそれ以上呼び出してメッセージを登録してください。最後にMQCLOSE命令を呼び出して，キューをクローズします。この方法でメッセージを登録すると，MQPUT1命令を繰り返して呼び出すよりも効率的です。

MQPUT1命令は，あるキューへメッセージを一つだけ登録するときに使用します。

この方法では，一回の呼び出しでMQOPEN命令，MQPUT命令，およびMQCLOSE命令を兼ねます。このため，命令の呼び出しを少なくできます。

アプリケーションがメッセージグループを使用しないで，連続するメッセージを同じキューに登録する場合，特定の条件が満たされれば，メッセージの順序が保持されます。ローカルあて先キューとリモートあて先キューの両方に適用される条件と，リモートあて先キューだけに適用される条件があります。

ローカルあて先キューおよびリモートあて先キューに適用される条件

すべてのMQPUT命令が同じトランザクション内にある。またはすべてトランザクション内にないこと

メッセージが一つのトランザクション内で特定のキューに登録されるとき，他アプリケーションからのメッセージがキュー上の連続するメッセージに混じることがあるので注意してください。

すべてのMQPUT命令が同じオブジェクトハンドルHobjを使用すること

環境によっては，異なるオブジェクトハンドルを使用しても，メッセージの順序が保持されることがあります。ただし，命令が同じアプリケーションから発行されるものとします。

メッセージがすべて同じメッセージ優先度であること

リモートあて先キューに適用される追加の条件

送信側のキューマネジャからあて先キューマネジャへの送信経路が一つしかないこと

連続するメッセージの一部のメッセージが異なる送信経路を使用する可能性がある場合（例えば，再構成，トラフィック分散またはメッセージサイズに基づく経路選択の場合），あて先キューマネジャでのメッセージの順序は保証されません。

送信側，中間またはあて先キューマネジャで，メッセージが一時的にデッドレターキューに登録されないこと

一つ以上のメッセージが一時的にデッドレターキューに登録される場合（例えば，転送キューまたはあて先キューが一時的に満杯などが原因の場合），あて先キューに到着するメッセージは順序とおりでないことがあります。

メッセージがすべて永続的メッセージであるか，またはすべて非永続メッセージであること

送信側キューマネジャとあて先キューマネジャ間の送信経路にあるチャネルのNonPersistentMsgSpeed属性がMQNPMS_FASTに設定される場合，非永続メッセージが永続メッセージに先行することがあります。その結果，非永続メッセージに対する永続メッセージの順序が保持されないことがあります。しかし，永続メッセージ間および非永続メッセージ間の順序は保持されます。

これらの条件が満たされない場合，メッセージグループを使用してメッセージの順序を保持できます。しかし，送信側アプリケーションと受信側アプリケーションの両方について，メッセージグループを使用できる必要があることに注意してください。メッセージグループについては，次に示す項目を参照してください。

MQMD構造体のMsgFlagsフィールド

MQPMO構造体のMQPMO_LOGICAL_ORDERオプション

MQGMO構造体のMQGMO_LOGICAL_ORDERオプション

配布リストを使用するときは，次の点に注意してください。

メッセージは，バージョン1またはバージョン2のMQPMO構造体を使用して配布リストに登録できます。バージョン1のMQPMO構造体を使用する場合，またはRecsPresentフィールドが0であるバージョン2のMQPMO構造体を使用する場合，アプリケーションは登録メッセージレコードや，応答レコードを指定できません。この場合，メッセージが配布リストのあるキューに送信が成功して，ほかのキューへの送信が失敗したとき，エラーとなったキューを特定できません。アプリケーションによって登録メッセージレコードや応答レコードが指定される場合，VersionフィールドはMQPMO_VERSION_2でなければなりません。

バージョン2のMQPMO構造体は，RecsPresentフィールドが0であれば，配布リストではない単一のキューにメッセージを送信する場合も使用できます。

CompCode引数およびReason引数は，次のように設定されます。

・配布リストのキューへ登録が，同じ方法で，すべて成功，または失敗した場合，完了コードおよび理由コードは，共通の結果を記述するように設定されます。MQRR構造体がアプリケーションで指定されている場合は，応答レコードは設定されません。

例えば，すべての登録が成功した場合，完了コードはMQCC_OK，理由コードはMQRC_NONEに設定されます。すべてのキューが登録禁止になっているため，すべての登録が失敗する場合，引数はMQCC_FAILEDとMQRC_PUT_INHIBITEDに設定されます。

・配布リストのキューへの登録が同じ方法で，部分的に成功または失敗した場合は次のとおりです。

−少なくとも一つの登録が成功していれば完了コードはMQCC_WARNINGが設定されます。すべてが失敗するとMQCC_FAILEDが設定されます。

−理由コードの引数は，MQRC_MULTIPLE_REASONSに設定されます。

−応答レコードがアプリケーションによって指定されている場合は，配布リストのキューに対して個別の完了コードと理由コードを設定します。

あて先のオープンに失敗したために登録に失敗した場合，応答レコードのフィールドはMQCC_FAILEDおよびMQRC_OPEN_FAILEDに設定されます。そのあて先はInvalidDestCountフィールドに記述されます。

配布リストのあて先がローカルキューに受信される場合，メッセージは通常の形式でキューに登録されます。配布リストメッセージではありません。複数のあて先が同じローカルキューに受信される場合，一つのメッセージがあて先キューに登録されます。

配布リストのあて先がリモートキューに受信される場合，メッセージは転送キューに登録されます。幾つかのあて先が同じ転送キューに受信される場合，あて先を含んだ配布リストメッセージは，そのあて先がアプリケーションに指定されたあて先リストと隣接していなくても，転送キューに登録されます。ただし，これは転送キューが配布リストメッセージをサポートしているときだけ可能となります。詳細は，「3.　オブジェクトの属性」の「キューの属性」のDistLists属性を参照してください。

転送キューが配布リストをサポートしていないとき，通常の形式のメッセージを複写したものが，その転送キューを使用するそれぞれのあて先に対する転送キューに登録されます。

アプリケーションメッセージを含んだ配布リストが転送キューよりも大きい場合，配布リストメッセージはさらに小さな配布リストメッセージに分割されます。分割された配布リストメッセージは，それぞれ幾つかのあて先を持っています。アプリケーションデータだけがキューに格納できれば，キューマネジャは配布リストメッセージをまったく使用しないで，その転送キューを使用するあて先に，通常の形式でメッセージの複写を生成します。

例えば，アプリケーションがMQPRI_PRIORITY_AS_Q_DEF，MQPER_PERSISTENCE_AS_Q_DEFを指定している場合など，異なるあて先が異なるメッセージ優先度やメッセージ永続性を持っている場合，メッセージは同じ配布リストメッセージに必要ありません。その代わり，キューマネジャは，異なる優先度および永続性の値に対応するために必要な数の配布リストメッセージを生成します。

配布リストへ登録した結果は，次のどれかです。

・単一の配布リストメッセージ

・分割された配布リストメッセージの数

・配布リストメッセージと通常のメッセージの混在

・通常のメッセージだけ

上記のどの結果になるかは次に示す理由によります。

・リストのあて先が，ローカル，リモート，または混在している。

・あて先が，同じメッセージ優先度とメッセージ永続性となっているかどうか。

・転送キューが配布リストメッセージを保持できるかどうか。

・転送キューの最大メッセージ長が，配布リスト形式のメッセージに対応する大きさかどうか。

上記のどの原因が発生したとしても，物理メッセージ，つまり登録したメッセージまたは配布リストメッセージは，次に示す場合は，ただ一つのメッセージとしてカウントされます。

・アプリケーションがトランザクションの最大メッセージ数を超えている，または最大メッセージ数を超えているかどうかをチェックする場合

最大メッセージ数の詳細については「3.　オブジェクトの属性」の「キューマネジャの属性」のMaxUncommittedMsgs属性を参照してください。

・トリガ条件を満たしているかどうかをチェックする場合

・キューの登録数を加算し，その値がキューの最大登録数を超えるかどうかをチェックする場合

例えば，解決パスが変更された場合など，キューが個別にオープンされるとハンドルが不正になるようにキュー定義が変更されても，配布リストのハンドルは不正になりません。しかし，次のMQPUT命令によって，その配布リストのハンドルが使用されたキューのオープンは失敗します。

アプリケーションメッセージデータの開始位置で，メッセージが一つ以上のMQヘッダ構造体と同時に登録された場合，キューマネジャはヘッダ構造体が正しいかどうかをチェックします。キューマネジャがエラーを検出すると，命令は適当な理由コードで失敗します。実行されるチェックの方法は，存在する構造体によって異なります。

バージョン2以降のMQMD構造体がMQPUTまたはMQPUT1命令で使用される場合にだけ，チェックが実行されます。メッセージデータの開始位置にMQMDE構造体があっても，バージョン1のMQMD構造体が使用されている場合，チェックは実行されません。

ローカルキューマネジャによってサポートされない構造体，およびメッセージ中で最初のMQDLH構造体に続く構造体は，有効性を確認されません。

MQDHおよびMQMDE構造体の有効性は，キューマネジャによって完全に確認されます。

ほかの構造体の有効性は，キューマネジャによって部分的に確認されます（すべてのフィールドが確認されるのではありません）。

キューマネジャによって実行される一般的なチェックには，次に示す項目が含まれます。

StrucIdフィールドが有効であること

Versionフィールドが有効であること

StrucLengthフィールドには，構造体およびその一部である可変長データの格納に十分な大きさの値が指定されていること

CodedCharSetIdフィールドは，ゼロまたは無効な負の値でないこと

MQCCSI_DEFAULT，MQCCSI_EMBEDDED，MQCCSI_Q_MGRおよびMQCCSI_UNDEFINEDは，ほとんどのMQヘッダ構造体で無効です。

命令のBufferLength引数には，構造体の格納に十分な大きさの値が指定されていること

メッセージの末尾を超えて構造体を拡張できません。

構造体についての一般的なチェックに加えて，次に示す条件が満たされている必要があります。

PCFメッセージの構造体での長さの和は，MQPUT命令またはMQPUT1命令のBufferLength引数によって指定された長さと等しくなければなりません。PCFメッセージは，次のフォーマット名称のどれかを持つメッセージです。

　MQFMT_ADMIN

　MQFMT_EVENT

　MQFMT_PCF

MQ構造体は，省略された構造体が許可される次の場合を除いて，省略しないでください。

報告メッセージであるメッセージ

PCFメッセージ

MQDLH構造体を含むメッセージ

なお，MQDLH構造体を含むメッセージでは，最初のMQDLH構造体に続く構造体は省略できますが，MQDLH構造体の前にある構造体は省略できません。

MQヘッダ構造体は，二つ以上のセグメントに分割されてはなりません。つまり，構造体は一つのセグメントに含まれなければなりません。

MQPUT1命令　−　1メッセージの登録

機能

MQPUT1命令で，一つのメッセージをキューへ登録できます。キューはオープンされている必要がありません。

形式

C言語の場合

MQPUT1(MQHCONN Hconn, PMQVOID ObjDesc, PMQVOID MsgDesc,
       PMQVOID PutMsgOpts,MQLONG BufferLength,
       PMQVOID Buffer, PMQLONG CompCode,
       PMQLONG Reason)

COBOL言語の場合

CALL 'MQPUT1' USING HCONN, OBJDESC, MSGDESC, PUTMSGOPTS,
                BUFFERLENGTH, BUFFER, COMPCODE, REASON.

引数

●　Hconn（MQHCONN型）　−input

コネクションハンドルです。

キューマネジャへの接続を示すハンドルです。MQCONN命令の戻り値を指定してください。

●　ObjDesc（MQOD構造体）　−input

オブジェクト記述子です。

登録するキューを識別する構造体です。詳細については，「1.　データタイプ」の「MQOD構造体　−　オブジェクト記述子」を参照してください。

モデルキューは指定できません。

●　MsgDesc（MQMD構造体）　−input/output

メッセージ記述子です。

送信するメッセージの属性を記述する構造体です。また，登録後のメッセージに関する情報が返されます。

詳細については，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」を参照してください。

アプリケーションがバージョン1のMQMD構造体を指定すると，返却されるメッセージは，バージョン2のMQMD構造体にだけ存在するフィールドの値を指定するために，アプリケーションメッセージデータの前にMQMDE構造体を付加できます。そのとき，MQMDE構造体が存在することを示すために，MQMD構造体のFormatフィールドには，MQFMT_MD_EXTENSIONを設定しなければなりません。

詳細については，「1.　データタイプ」の「MQMDE構造体　−　メッセージ記述子の拡張」を参照してください。

●　PutMsgOpts（MQPMO構造体）　−input/output

メッセージ登録オプションです。

詳細については，「1.　データタイプ」の「MQPMO構造体　−　メッセージ登録オプション」を参照してください。

●　BufferLength（MQLONG型）　−input

メッセージデータを格納したバッファのバイト長です。

0も指定できます。このとき，アプリケーションデータのないメッセージを登録するものとみなされます。

あて先キューがローカルキューの場合，またはローカルキューの別名を使用している場合は，ローカルキューまたはキューマネジャのMaxMsgLength属性のうち，小さい方の値を超えて指定できません。

あて先キューがリモートキューの場合，またはリモートキューの別名を使用している場合は，次に示すローカルキューまたはキューマネジャのMaxMsgLength属性のうち，小さい方の値を超えて指定できません。

ローカルキューマネジャで一時的に格納するために使用される転送キュー

ローカルキューからあて先キューまでの経路で仲介するキューマネジャで使用される転送キュー

あて先キューマネジャで使用されるあて先キュー

なお，メッセージが転送キューに格納されるとき，メッセージに付加情報が追加されます。このため，送信できるアプリケーションデータの量が少なくなります。BufferLength引数の値を決めるときは，転送キューのMaxMsgLength属性の値からMQ_MSG_HEADER_LENGTHのバイト数を引いた値を参考にしてください。

注意事項

上記の1.の場合だけ，メッセージの登録直後にバッファ長のエラー（理由コードMQRC_MSG_TOO_BIG_FOR_QまたはMQRC_MSG_TOO_BIG_FOR_Q_MGR）が判明します。2.，3.の場合は，登録直後はエラーが判明しません。2.，3.でエラーが判明した場合，仲介するキューマネジャまたはあて先キューマネジャのデッドレターキューに，メッセージが転送されます。送信側で要求している場合は，エラー発生時に報告メッセージが生成されます。

●　Buffer（MQBYTE型×BufferLength）　−input

メッセージデータを格納したバッファです。バッファには，メッセージ中のデータに適したバウンダリ調整が必要です。多くのメッセージ（MQヘッダ構造体のあるメッセージを含む）には4バイト単位の調整が適していますが，より厳しい調整が必要なメッセージもあります。例えば，64ビット2進整数を含めるメッセージには8バイト単位のバウンダリ調整が必要です。

バッファ内に文字または数値がある場合，MsgDesc引数のCodedCharSetIdフィールドとEncodingフィールドに，適切な値を指定してください。これらの値によって，受信側でデータを適切な文字セットとマシンコード形式に変換できます。

注意事項

MQPUT1命令のそのほかの引数は，ローカルキューマネジャの文字セットとマシンコード形式，つまり，ローカルキューのCodedCharSetId属性とMQENC_NATIVEで指定してください。

C言語では，この引数をvoid型のポインタとして指定します。したがって，どんなデータタイプのアドレスでも，引数として指定できます。

BufferLength引数で0を指定した場合，Buffer引数は参照されません。したがって，C言語のプログラムでは，この引数のアドレスとしてヌルを指定できます。

●　CompCode（MQLONG型）　−output

完了コードです。

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

MQCC_OK：成功

MQCC_WARNING：警告（一部成功）

MQCC_FAILED：失敗

●　Reason（MQLONG型）　−output

理由コードです。

CompCode引数がMQCC_OKの場合

理由コード

数値

意味

MQRC_NONE

0

理由コードはありません。

CompCode引数がMQCC_WARNINGの場合

理由コード

数値

意味

MQRC_MULTIPLE_REASONS

2136

複数の理由コードが返されました。

MQRC_PRIORITY_EXCEEDS_MAXIMUM

2049

メッセージ優先度が最大値を超えています。

MQRC_UNKNOWN_REPORT_OPTION

2104

メッセージ記述子中の報告オプションを認識できません。

CompCode引数がMQCC_FAILEDの場合

理由コード

数値

意味

MQRC_ALIAS_BASE_Q_TYPE_ERROR

2001

別名キューのベースキューのタイプが不正です。

MQRC_BUFFER_ERROR

2004

バッファの引数が不正です。

MQRC_BUFFER_LENGTH_ERROR

2005

バッファ長の引数が不正です。

MQRC_CLUSTER_PUT_INHIBITED

2268

クラスタ内のすべてのキューに対して登録が禁止されています。

MQRC_CLUSTER_RESOLUTION_ERROR

2189

クラスタ名称の解決に失敗しました。

MQRC_CLUSTER_RESOURCE_ERROR

2269

クラスタリソースのエラーです。

MQRC_CONTEXT_HANDLE_ERROR

2097

参照先のキューハンドルにコンテキストが保存されていません。

MQRC_CONTEXT_NOT_AVAILABLE

2098

参照先のキューハンドルのコンテキストが不正です。

MQRC_DEF_XMIT_Q_TYPE_ERROR

2198

省略時の転送キューがローカルキューではありません。

MQRC_DEF_XMIT_Q_USAGE_ERROR

2199

省略時の転送キューの使用方法に誤りがあります。

MQRC_DH_ERROR

2135

配布リスト構造体が不正です。

MQRC_EXPIRY_ERROR

2013

メッセージ保持時間が不正です。

MQRC_FEEDBACK_ERROR

2014

報告メッセージ返答コードが不正です。

MQRC_HANDLE_NOT_AVAILABLE

2017

現在そのハンドルは有効ではありません。

MQRC_HCONN_ERROR

2018

コネクションハンドルが不正です。

MQRC_MD_ERROR

2026

メッセージ記述子が不正です。

MQRC_MDE_ERROR

2248

メッセージ記述子の拡張子が不正です。

MQRC_MISSING_REPLY_TO_Q

2027

応答キューがありません。

MQRC_MSG_FLAGS_ERROR

2249

メッセージフラグが不正です。

MQRC_MSG_SEQ_NUMBER_ERROR

2250

メッセージシーケンス番号が不正です。

MQRC_MSG_TOO_BIG_FOR_Q

2030

メッセージ長がキューに定義された最大値を超えています。

MQRC_MSG_TYPE_ERROR

2029

メッセージ記述子中のメッセージタイプが不正です。

MQRC_MULTIPLE_REASONS

2136

複数の理由コードが返されます。

MQRC_NO_DESTINATIONS_AVAILABLE

2270

利用可能なあて先キューが存在しません。

MQRC_OBJECT_DAMAGED

2101

オブジェクトが破損しています。

MQRC_OBJECT_NAME_ERROR

2152

オブジェクト名が不正です。

MQRC_OBJECT_Q_MGR_NAME_ERROR

2153

オブジェクトキューマネジャ名が不正です。

MQRC_OBJECT_RECORDS_ERROR

2155

オブジェクトレコードが不正です。

MQRC_OBJECT_TYPE_ERROR

2043

オブジェクトタイプが不正です。

MQRC_OD_ERROR

2044

オブジェクト記述子の構造体が不正です。

MQRC_OFFSET_ERROR

2251

メッセージセグメントのオフセットが不正です。

MQRC_OPTIONS_ERROR

2046

オプションが不正です。または，指定されていません。

MQRC_ORIGINAL_LENGTH_ERROR

2252

元の長さが不正です。

MQRC_PERSISTENCE_ERROR

2047

メッセージ永続性が不正です。

MQRC_PERSISTENT_NOT_ALLOWED

2048

キューは永続メッセージをサポートしていません。

MQRC_PMO_ERROR

2173

メッセージ登録オプションの構造体が不正です。

MQRC_PMO_RECORD_FLAGS_ERROR

2158

登録メッセージレコードのフラグが不正です。

MQRC_PRIORITY_ERROR

2050

メッセージ優先度が不正です。

MQRC_PUT_INHIBITED

2051

指定されたキューへの登録は禁止されています。

MQRC_PUT_MSG_RECORDS_ERROR

2159

登録メッセージレコードが不正です。

MQRC_Q_DELETED

2052

キューが削除されています。

MQRC_Q_FULL

2053

キューが満杯です。

MQRC_Q_SPACE_NOT_AVAILABLE

2056

キューに対応するディスクに空き領域がありません。

MQRC_Q_TYPE_ERROR

2057

キュータイプが不正です。

MQRC_RECS_PRESENT_ERROR

2154

存在するレコード数が不正です。

MQRC_REMOTE_Q_NAME_ERROR

2184

リモートキュー名が不正です。

MQRC_REPORT_OPTIONS_ERROR

2061

メッセージ記述子中の報告オプションが不正です。

MQRC_RESOURCE_PROBLEM

2102

システム資源が不足しています。

MQRC_RESPONSE_RECORDS_ERROR

2156

応答レコードが不正です。

MQRC_SEGMENT_LENGTH_ZERO

2253

メッセージセグメントのデータ長が0です。

MQRC_STORAGE_NOT_AVAILABLE

2071

記憶容量が不足しています。

MQRC_SYNCPOINT_NOT_AVAILABLE

2072

同期点処理はできません。

MQRC_UNEXPECTED_ERROR

2195

予期しないエラーが発生しました。

MQRC_UNKNOWN_ALIAS_BASE_Q

2082

別名キューのベースキューを認識できません。

MQRC_UNKNOWN_DEF_XMIT_Q

2197

省略時の転送キューを認識できません。

MQRC_UNKNOWN_OBJECT_NAME

2085

オブジェクト名を認識できません。

MQRC_UNKNOWN_OBJECT_Q_MGR

2086

オブジェクトのキューマネジャを認識できません。

MQRC_UNKNOWN_REMOTE_Q_MGR

2087

リモートキューマネジャを認識できません。

MQRC_UNKNOWN_XMIT_Q

2196

転送キューを認識できません。

MQRC_UOW_NOT_AVAILABLE

2255

コミット単位でキューマネジャを使用できません。

MQRC_WRONG_MD_VERSION

2257

MQMD構造体に指定されたバージョンが不正です。

MQRC_XMIT_Q_TYPE_ERROR

2091

転送キューがローカルキューではありません。

MQRC_XMIT_Q_USAGE_ERROR

2092

転送キューの使用方法に誤りがあります。

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

注意事項

キューへメッセージを登録する命令には，MQPUT命令とMQPUT1命令の二つがあります。これらの命令は，状況に応じて使い分けてください。

MQPUT命令は，同じキューへ複数のメッセージを登録するときに使用します。

この方法では，始めにMQOO_OUTPUTオプションを指定してMQOPEN命令を呼び出します。次に，MQPUT命令を一回またはそれ以上呼び出してメッセージを登録してください。最後にMQCLOSE命令を呼び出して，キューをクローズします。この方法でメッセージを登録すると，MQPUT1命令を繰り返して呼び出すよりも効率的です。

MQPUT1命令は，あるキューへメッセージを一つだけ登録するときに使用します。

この方法では，一回の呼び出しでMQOPEN命令，MQPUT命令，およびMQCLOSE命令を兼ねます。このため，命令の呼び出しを少なくできます。

アプリケーションがメッセージグループを使用しないで，連続するメッセージを同じキューに登録する場合，特定の条件が満たされれば，メッセージの順序が保持されます。しかし，ほとんどの環境ではMQPUT1命令はこれらの条件を満たさず，メッセージの順序は保持されません。これらの環境では，代わりにMQPUT命令を使用する必要があります。詳細については，この章の「MQPUT命令　−　メッセージの登録」の「注意事項」を参照してください。

MQPUT1命令は，メッセージを配布リストに登録するのに使用できます。配布リストの登録については，この章の「MQOPEN命令　−　オブジェクトのオープン」および「MQPUT命令　−　メッセージの登録」の注意事項を参照してください。

次に，MQPUT1命令に特有の注意事項を示します。

MQRR構造体の応答レコードがアプリケーションによって指定されるとき，その応答レコードはMQOD構造体を使用して指定されなければなりません。なお，MQPMO構造体によって指定することはできません。

理由コードMQRC_OPEN_FAILEDは，MQPUT1命令では応答レコードに返されません。キューのオープンに失敗すると，そのキューの応答レコードはオープン操作から結果までの理由コードを保持します。キューのオープン操作がMQCC_WARNINGの完了コードで成功すると，そのキューの応答レコードの完了コードと理由コードは，登録操作の結果である完了コードと理由コードで置き換えられます。MQOPEN命令およびMQPUT命令と同様に，キューマネジャは結果が配布リストのすべてのキューで異なるときだけ，応答レコードが指定されている場合は応答レコードを設定します。これは，MQRC_MULTIPLE_REASONSの理由コードで完了することで示されます。

MQPUT1命令がメッセージを配布リストに登録するのに使用されると，アプリケーションがハンドルの最大数，つまり，キューマネジャのMaxHandles属性を超えているかチェックするときに，一つのハンドルとしてカウントされます。これは，配布リストのあて先数とは関係ありません。

ただし，MQOPEN命令が使用されると，配布リストのおのおののあて先が，別々のハンドルとしてカウントされます。

MQPUT1命令がクラスタキューにメッセージを登録するために使用された場合，MQOPEN命令でMQOO_BIND_NOT_FIXEDが指定されたように動作します。

メッセージがアプリケーションメッセージデータの先頭に，一つ以上のMQヘッダ構造体を付けて登録されると，キューマネジャはこれらが正しいか確認するために，ヘッダ構造体をチェックします。詳細については，この章の「MQPUT命令　−　メッセージの登録」の注意事項を参照してください。

CompCode引数を参照したときに一つ以上の警告が発生していると，返却される理由コードの最初のものは次に示すコードのどれかになります。

　MQRC_MULTIPLE_REASONS

　MQRC_INCOMPLETE_MSG

　MQRC_INCOMPLETE_GROUP

　MQRC_PRIORITY_EXCEEDS_MAXIMUM

　MQRC_UNKNOWN_REPORT_OPTION

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

注意事項

整数型属性と文字型属性のセレクタは，二つの異なる範囲で割り当てられています。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引数に設定する文字列の長さを定義した定数です。

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

注意事項

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

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

注意事項

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

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

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

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

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

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

3　オブジェクトの属性

TP1/Message Queueのオブジェクトには，キュー，プロセス，およびキューマネジャがあります。

この章では，APIでアクセスできるTP1/Message Queueオブジェクトの属性について説明します。

キューの属性

キューマネジャは次に示すキュータイプをサポートします。

ローカルキュー

メッセージを保存する物理的なキューです。ローカルキューマネジャにあります。

ローカルキューマネジャに接続したアプリケーションは，このタイプのキューにメッセージを登録したり取り出したりできます。キューのQType属性値はMQQT_LOCALです。

クラスタキュー

メッセージを保存する物理的なキューです。ローカルキューマネジャにあったり，ローカルキューマネジャと同じクラスタ内の一つ以上のキューマネジャにあったりします。

ローカルキューマネジャに接続したアプリケーションは，キューの場所に関係なく，このタイプのキューにメッセージを登録できます。ローカルキューマネジャにクラスタキューがある場合は，ローカルキューと同じ動作をし，ローカルキューマネジャに接続したアプリケーションはクラスタキューからメッセージを取り出せます。キューのQType属性値はMQQT_CLUSTERです。

リモートキューのローカル定義

これは物理的なキューではなく，リモートキューマネジャにあるキューのローカル定義です。リモートキューのローカル定義にある情報は，リモートキューマネジャへのメッセージの送信経路をローカルキューマネジャに知らせます。

ローカルキューマネジャに接続したアプリケーションは，このタイプのキューにメッセージを登録できます。メッセージは実際にはローカルの転送キューに登録されます。転送キューはリモートキューマネジャへのメッセージの転送に使用されるキューです。キューのQType属性値はMQQT_REMOTEです。

また，リモートキューのローカル定義は次に示す目的でも使用できます。

応答キューの別名

定義名が応答キュー名の場合です。名称解決については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

キューマネジャの別名

定義名がキューマネジャの別名の場合です。名称解決については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

別名キュー

これは物理的なキューではなく，ローカルキュー，クラスタキューまたはリモートキューのローカル定義の別名です。別名が解決するキューの名前は，別名キューの属性定義にあります。

ローカルキューマネジャに接続したアプリケーションは，このタイプのキューにメッセージを登録できます。メッセージは実際には別名が解決されたキューに登録されます。別名がローカルキューまたはローカルのクラスタキューに解決される場合，アプリケーションは別名キューからメッセージを取り出せます。キューのQType属性値はMQQT_ALIASです。

モデルキュー

これは物理的なキューではなく，ローカルキューを生成するための属性の定義です。

このタイプのキューにメッセージは登録できません。

キュー属性には，すべてのキューに適用できる属性と，特定のキュータイプに適用できる属性があります。各タイプに適用できる属性を次の表に示します。属性をアルファベット順に示します。

表3‒1　キューの属性

属性

説明

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

BaseQName

ベースキュー名

×

×

○

×

×

ClusterName

キューが属するクラスタの名称

○

×

○

○

×

CreationDate

作成日付

○

×

×

×

×

CreationTime

作成時刻

○

×

×

×

×

CurrentQDepth

メッセージ登録数

○

×

×

×

×

DefBind

デフォルトバインディング

○

×

○

○

○

DefinitionType

定義タイプ

○

○

×

×

×

DefInputOpenOption

省略時の取り出しオプション

○

○

×

×

×

DefPersistence

省略時のメッセージ永続性

○

○

○

○

○

DefPriority

省略時のメッセージ優先度

○

○

○

○

○

DistLists

配布リストのサポート

○

○

×

×

×

HardenGetBackout

ロールバック回数記録方法

○

○

×

×

×

InhibitGet

取り出し許可

○

○

○

×

×

InhibitPut

登録許可

○

○

○

○

○

InitiationQName

イニシエーションキュー名

○

○

×

×

×

MaxMsgLength

最大メッセージ長

○

○

×

×

×

MaxQDepth

最大メッセージ登録数

○

○

×

×

×

MsgDeliverySequence

メッセージ配布順序

○

○

×

×

×

OpenInputCount

入力オープン数

○

×

×

×

×

OpenOutputCount

出力オープン数

○

×

×

×

×

ProcessName

プロセス名

○

○

×

×

×

QDesc

キュー記述子

○

○

○

○

○

QName

キュー名

○

×

○

○

○

QType

キュータイプ

○

×

○

○

○

RemoteQMgrName

リモートキューマネジャ名

×

×

×

○

×

RemoteQName

リモートキュー名

×

×

×

○

×

RetentionInterval

キュー保持時間

○

○

×

×

×

Scope

キューの有効範囲

○

×

○

○

×

Shareability

取り出し時の共用性

○

○

×

×

×

TriggerControl

トリガ制御

○

○

×

×

×

TriggerData

トリガデータ

○

○

×

×

×

TriggerDepth

トリガのためのメッセージ登録数の下限値

○

○

×

×

×

TriggerMsgPriority

トリガのためのメッセージ優先度の下限

○

○

×

×

×

TriggerType

トリガタイプ

○

○

×

×

×

Usage

使用種別

○

○

×

×

×

XmitQName

転送キュー名

×

×

×

○

×

（凡例）

○：該当します。

×：該当しません。

注

モデルキューの欄は，モデルキューから生成されるローカルキューがどの属性を継承するかを示します。

クラスタキューの欄は，クラスタキューが照会用，または照会と登録用にオープンされるときに照会可能な属性を示します。クラスタキューが照会とあわせて，取り出し，検索，または設定の一つ以上のためにオープンされる場合は，代わりにローカルキューの欄を参照してください。

属性

●　BaseQName（MQCHAR48型）

ベースキュー名

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

×

×

○

×

×

（凡例）

○：該当します。

×：該当しません。

別名キューの実体を示します。ローカルキューマネジャに定義されたキューの名称です。キューを含むオブジェクトの命名規則については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。このキューのキュータイプは，次のどれかです。

MQQT_LOCAL：ローカルキュー

MQQT_REMOTE：リモートキューのローカル定義

MQQT_CLUSTER：クラスタキュー

この属性の値を照会するときは，MQINQ命令でMQCA_BASE_Q_NAMEセレクタを使用してください。

この属性の長さは，MQ_Q_NAME_LENGTHに定義されています。

●　ClusterName（MQCHAR48型）

キューが属するクラスタの名称

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

×

○

○

×

キューが所属しているクラスタの名称です。この属性はモデルキューには適用されません。

この属性の値を照会するときは，MQINQ命令でMQCA_CLUSTER_NAMEセレクタを使用してください。この属性の長さはMQ_CLUSTER_NAME_LENGTHに定義されています。

●　CreationDate（MQCHAR12型）

作成日付

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

×

×

×

×

キューを作成した日付です。形式は次のとおりです。

YYYY−MM−DD△△

△△は2文字の空白を表します。この2文字の空白を埋めた12バイトです。

例：1995−09−30△△

例は，1995年9月30日を示します。

この属性の値を照会するときは，MQINQ命令でMQCA_CREATION_DATEセレクタを使用してください。

この属性の長さは，MQ_CREATION_DATE_LENGTHに定義されています。

●　CreationTime（MQCHAR8型）

作成時刻

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

×

×

×

×

キューを作成した時刻です。形式は次のとおりです。

HH.MM.SS

24時間時計を使用し，10時より前の時刻は先頭が0となります。

例：21.10.20

この属性は8文字列を使用します。また，現地時間を使用します。

この属性の値を照会するときは，MQINQ命令でMQCA_CREATION_TIMEセレクタを使用してください。

この属性の長さは，MQ_CREATION_TIME_LENGTHに定義されています。

●　CurrentQDepth（MQLONG型）

メッセージ登録数

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

×

×

×

×

現時点でキューに格納しているメッセージの個数です。MQPUT命令のときとMQGET命令のロールバックのときに，数が増加します。検索用ではないMQGET命令のときとMQPUT命令のロールバックのときに数が減少します。つまり，まだトランザクションがコミットしていないときでも，その中から登録したメッセージは，この数に算入されます。ただし，コミットしていないときのメッセージはMQGET命令で取り出せません。同様に，トランザクションはコミットしていなくてもMQGET命令で取り出された場合はこの数から除かれます。

保持時間を経過したが破棄されていないメッセージも，取り出しはできませんが数に含まれます。MQMD構造体のExpiryフィールドについては，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」を参照してください。

この属性の値は，キューマネジャの操作で変動します。

この属性の値を照会するときは，MQINQ命令でMQIA_CURRENT_Q_DEPTHセレクタを使用してください。

●　DefBind（MQLONG型）

デフォルトバインディング

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

×

○

○

○

MQOPEN命令でMQOO_BIND_AS_Q_DEFが指定され，キューがクラスタキューである場合に使用されるデフォルトのバインディングです。次のどちらかの値を取ります。

MQBND_BIND_ON_OPEN：バインディングはMQOPEN命令で固定されます。

MQBND_BIND_NOT_FIXED：バインディングは固定されません。

この属性の値を照会するときは，MQINQ命令でMQIA_DEF_BINDセレクタを使用してください。

●　DefinitionType（MQLONG型）

定義タイプ

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

×

×

×

キューを定義する種類を示します。次のどれかの値を取ります。

MQQDT_PREDEFINED

定義済みキュー

システム管理者が作成する永続的キューです。システム管理者だけが削除できます。

MQQDT_PERMANENT_DYNAMIC

永続的動的キュー

アプリケーションが呼び出すMQOPEN命令によって，モデルキューの名称で作成される永続的キューです。キューの名称は，オブジェクト記述子であるMQOD構造体に指定します。そのモデルキューのDefinitionType属性はMQQDT_PERMANENT_DYNAMICです。永続的動的キューは，MQCLOSE命令で削除できます。詳細については，「2.　メッセージキューイング機能の命令」の「MQCLOSE命令　−　オブジェクトのクローズ」の説明を参照してください。

MQQDT_TEMPORARY_DYNAMIC

一時的動的キュー

アプリケーションが呼び出すMQOPEN命令によって，モデルキューの名称で作成される一時的キューです。キューの名称は，オブジェクト記述子に指定します。そのモデルキューのDefinitionType属性はMQQDT_TEMPORARY_DYNAMICです。一時的動的キューは，キューを作成したアプリケーションがMQCLOSE命令を呼び出したときに，自動的に削除されます。

モデルキューは常に定義済みであるため，モデルキュー定義のこの属性はMQQDT_PREDEFINEDです。MQINQ命令でモデルキューの属性を照会した場合，このモデルキューを基にして生成された動的キューの属性が照会されます。

この属性の値を照会するときは，MQINQ命令でMQIA_DEFINITION_TYPEセレクタを使用してください。

●　DefInputOpenOption（MQLONG型）

省略時の取り出しオプション

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

×

×

×

取り出し用にキューをオープンしたときの排他方法の省略時解釈値です。MQOPEN命令でMQOO_INPUT_AS_Q_DEFを指定したときに，この属性値が使用されます。次のどちらかの値を取ります。

MQOO_INPUT_EXCLUSIVE

排他アクセスのメッセージ取り出し用にオープンします。

そのキューは，以降のMQGET命令で使用します。そのキューがMQOO_INPUT_SHAREDオプションまたはMQOO_INPUT_EXCLUSIVEオプションのどちらの場合も，ほかのアプリケーションによってすでに取り出し用にオープンされていると，理由コードMQRC_OBJECT_IN_USEでMQOPEN命令は失敗します。

MQOO_INPUT_SHARED

共用アクセスのメッセージ取り出し用にオープンします。

そのキューは，以降のMQGET命令で使用します。そのキューがほかのアプリケーションによってすでにオープンされていても，MQOO_INPUT_SHAREDオプションでオープンされている場合は，MQOPEN命令は成功します。MQOO_INPUT_EXCLUSIVEでオープンされていると，理由コードMQRC_OBJECT_IN_USEでMQOPEN命令は失敗します。

この属性の値を照会するときは，MQINQ命令でMQIA_DEF_INPUT_OPEN_OPTIONセレクタを使用してください。

●　DefPersistence（MQLONG型）

省略時のメッセージ永続性

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

○

○

○

キュー内のメッセージに対する省略時の永続性です。登録時のメッセージ記述子でMQPER_PERSISTENCE_AS_Q_DEFを指定したときに，この属性値が使用されます。

キューの実名をたどるまでに複数の定義がある場合，最初に登録したキューの定義のこの属性が，MQPUTまたはMQPUT1命令の発行時に省略時のメッセージ永続性になります。これは，次に示すオブジェクトに登録する場合に発生します。

別名キュー

ローカルキュー

リモートキューのローカル定義

キューマネジャの別名

転送キュー（例えばDefXmitQNameキュー）

次のどちらかの値を取ります。

MQPER_PERSISTENT

永続メッセージにします。

メッセージは，システム障害が発生したりキューマネジャを再開始したりしても失われません。一時的動的キューは再開始時に失われるので，永続メッセージは一時的動的キューに格納できません。永続メッセージは，永続的動的キューおよび定義済みキューに登録できます。

MQPER_NOT_PERSISTENT

永続メッセージにしません。

メッセージは，システム障害が発生したりキューマネジャを再開始したりすると失われます。再開始の時点で補助記憶装置にメッセージが残っている場合でも，同様です。

永続メッセージと非永続メッセージを，同じキューに格納できます。

この属性の値を照会するときは，MQINQ命令でMQIA_DEF_PERSISTENCEセレクタを使用してください。

●　DefPriority（MQLONG型）

省略時のメッセージ優先度

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

○

○

○

キュー内のメッセージに対する省略時の優先度です。登録時のメッセージ記述子でMQPRI_PRIORITY_AS_Q_DEFを指定したときに，この属性値が使用されます。

キューの実名をたどるまでに複数の定義がある場合，最初に登録したキューの定義のこの属性が，省略時のメッセージ優先度になります。これは，次に示すキューに登録する場合に発生します。

別名キュー

ローカルキュー

リモートキューのローカル定義

キューマネジャの別名

転送キュー（例えばDefXmitQNameキュー）

MsgDeliverySequence属性がMQMDS_PRIORITYのキューでは，メッセージのキュー内の位置は，その優先度に依存します。MsgDeliverySequence属性がMQMDS_FIFOのキューでは，すべてのメッセージは，実体のキューのDefPriority属性の優先度で登録されます。このときは，メッセージ記述子に指定した優先度は関係ありません。詳細については，MsgDeliverySequence属性の説明を参照してください。

メッセージ優先度の範囲は，0からMaxPriority属性の値までです。詳細については，この章の「キューマネジャの属性」でMaxPriority属性の説明を参照してください。

この属性の値を照会するときは，MQINQ命令でMQIA_DEF_PRIORITYセレクタを使用してください。

●　DistLists（MQLONG型）

配布リストのサポート

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

×

×

×

配布リストメッセージを，キューに登録できるかどうか示します。

属性は，チャネルのもう一方のキューマネジャが配布リストをサポートしているか，MCAによってローカルキューに通知するために設定されます。チャネルの向こう側のキューマネジャ（相手キューマネジャ）は，送信MCAによってローカル転送キューから取り出されたあと，メッセージを受け取ります。

DistLists属性は，送信MCAによって，相手キューマネジャ上の受信MCAと接続する時に，常に設定されます。送信MCAは，ローカルキューマネジャが相手キューマネジャが正しく処理できるメッセージだけを転送キューに登録するようにします。

この属性は主に転送キューに使用されますが，記述された処理は，キューに対して定義された使用方法（Usage属性）とは関係なく実行されます。

次の値を取ります。

MQDL_SUPPORTED

配布リストはサポートされています。

配布リストメッセージはキューに格納され，そのままの形式で相手キューマネジャに転送されます。したがって，メッセージを複数のあて先に送信するときの処理を削減します。

MQDL_NOT_SUPPORTED

配布リストはサポートされていません。

配布リストメッセージは，キューに格納されていません。これは，相手キューマネジャが配布リストをサポートしていないためです。アプリケーションが配布リストメッセージを登録し，メッセージがこのキューに登録されると，キューマネジャは配布リストを分割します。そして，代わりにキューにメッセージを登録します。したがって，メッセージを複数のあて先に送信するときの処理が増加します。ただし，メッセージが相手キューマネジャによって正しく処理されることは保証されます。

DistLists属性の値を確定するためには，MQINQ命令で，MQIA_DIST_LISTSセレクタを使用してください。

この属性の値を変更するにはMQSET命令を使用します。

●　HardenGetBackout（MQLONG型）

ロールバック回数記録方法

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

×

×

×

メッセージ記述子（MQMD構造体）のBackoutCountフィールドのロールバック回数に関連する情報です。

TP1/Message Queueでは，この属性は常に次の値になります。

MQQA_BACKOUT_NOT_HARDENED

バックアウト回数がカウントされない場合があります。このキューにあるメッセージのバックアウト回数が正確であることを保証するような記録はしません。回数は実際の値よりも小さい場合があります。

この属性の値を照会するときは，MQINQ命令でMQIA_HARDEN_GET_BACKOUTセレクタを使用してください。

●　InhibitGet（MQLONG型）

取り出し許可

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

○

×

×

このキューからの取り出しを許可するかどうかを制御します。

この属性は，ローカルキュー，モデルキュー，または別名キューのときだけ有効です。

別名キューでMQGET命令が成功するためには，別名キューとそのベースキューの両方で取り出しが許可されている必要があります。

次のどちらかの値を取ります。

MQQA_GET_INHIBITED

取り出しを禁止します。

MQGET命令は，理由コードMQRC_GET_INHIBITEDで失敗します。MQGET命令でMQGMO_BROWSE_FIRSTまたはMQGMO_BROWSE_NEXTオプションを指定した場合も含みます。

注意事項

トランザクション内のMQGET命令が成功したあとに，InhibitGet属性がMQQA_GET_INHIBITEDに変更された場合でも，そのトランザクションはコミットできます。

MQQA_GET_ALLOWED

取り出しを許可します。

この属性の値を照会するときは，MQINQ命令でMQIA_INHIBIT_GETセレクタを使用してください。この属性を変更するときは，MQSET命令を使用してください。

●　InhibitPut（MQLONG型）

登録許可

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

○

○

○

このキューへの登録を許可するかどうかを制御します。

キューの実名をたどるまでに複数の定義がある場合，MQPUT命令およびMQPUT1が成功するためには，キューマネジャの別名の定義も含む，すべての定義で登録が許可されている必要があります。

次のどちらかの値を取ります。

MQQA_PUT_INHIBITED

登録を禁止します。

MQPUT命令およびMQPUT1命令は，理由コードMQRC_PUT_INHIBITEDで失敗します。

注意事項

トランザクション内のMQPUT命令が成功したあとに，InhibitPut属性がMQQA_PUT_INHIBITEDに変更された場合でも，そのトランザクションはコミットできます。

MQQA_PUT_ALLOWED

登録を許可します。

この属性の値を照会するときは，MQINQ命令でMQIA_INHIBIT_PUTセレクタを使用してください。この属性を変更するときは，MQSET命令を使用してください。

●　InitiationQName（MQCHAR48型）

イニシエーションキュー名

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

×

×

×

ローカルキューマネジャに定義されたキューの名称です。つまり，キュータイプがMQQT_LOCALのキューです。イニシエーションキューは，キューマネジャがトリガメッセージを通知するあて先のキューです。トリガメッセージは，メッセージの到着を契機にアプリケーションを起動したいときに，それを要求すると通知されます。トリガメッセージの受信を契機として適切なアプリケーションを起動するために，トリガモニタアプリケーションでイニシエーションキューを監視する必要があります。

この属性の値を照会するときは，MQINQ命令でMQCA_INITIATION_Q_NAMEセレクタを使用してください。

この属性の長さは，MQ_Q_NAME_LENGTHに定義されています。

●　MaxMsgLength（MQLONG型）

最大メッセージ長

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

×

×

×

このキューに格納するメッセージの，アプリケーションデータの最大長です。

キューのMaxMsgLength属性は，キューマネジャのMaxMsgLength属性とは異なる値を設定できます。また，キューに登録できる最も長い物理メッセージは，ローカルキューおよびメッセージキューマネジャのMaxMsgLength属性の値より小さくなります。

MaxMsgLengthの長さを超えるメッセージを登録しようとした場合，命令は，次のどちらかで失敗します。

メッセージがキューに対して大き過ぎる場合，理由コードMQRC_MSG_TOO_BIG_FOR_Qで失敗します。

メッセージがキューマネジャに対しては大きいが，キューに対しては大きくない場合は，理由コードMQRC_MSG_TOO_BIG_FOR_Q_MGRで失敗します。

この属性値の範囲は，0からキューマネジャのMaxMsgLength属性の値までです。

詳細については，「2.　メッセージキューイング機能の命令」の「MQPUT命令　−　メッセージの登録」でBufferLength引数の説明を参照してください。

この属性の値を照会するときは，MQINQ命令でMQIA_MAX_MSG_LENGTHセレクタを使用してください。

●　MaxQDepth（MQLONG型）

最大メッセージ登録数

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

×

×

×

キューに同時に格納できるメッセージの最大数です。MaxQDepthの個数を格納しているキューにさらに登録しようとした場合，理由コードMQRC_Q_FULLで命令は失敗します。

コミット単位の処理およびメッセージのフラグメンテーションによって，キューにある物理メッセージ数がMaxQDepthを超える数になります。ただし，これはメッセージの取り出しには影響しません。キューにあるすべてのメッセージは，MQGET命令で取り出し可能です。

この属性の値は，0以上です。

この属性の値を照会するときは，MQINQ命令でMQIA_MAX_Q_DEPTHセレクタを使用してください。

●　MsgDeliverySequence（MQLONG型）

メッセージ配布順序

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

×

×

×

MQGET命令でアプリケーションに返されるメッセージの順序を示します。

MQMDS_FIFO

FIFO順序（先入れ先出し）でメッセージが返されます。

該当するメッセージの中で最も早く到着したものが，MQGET命令で返されます。このとき，優先度は無視されます。

MQMDS_PRIORITY

優先度の順序でメッセージが返されます。

該当するメッセージの中で最も優先度の高いものが，MQGET命令で返されます。同じ優先度のメッセージでは，FIFO順序（先入れ先出し）で返されます。

キューにメッセージが格納されているときに関連する属性が変更されると，配布順序は次のようになります。

MQGET命令で返されるメッセージの順序は，メッセージを格納したときのMsgDeliverySequence属性とDefPriority属性の値で決まります。

メッセージ到着時のMsgDeliverySequence属性がMQMDS_FIFOの場合，DefPriority属性のメッセージ優先度で格納されます。

メッセージ到着時のMsgDeliverySequence属性がMQMDS_PRIORITYの場合，メッセージ記述子のPriorityフィールドの優先度で格納されます。また，MQMD構造体のPriorityフィールドの値に影響することはありません。メッセージが最初に登録されたときの優先度を保ちます。

キューにメッセージが格納されているときにMsgDeliverySequence属性が変更されても，キュー内のメッセージの順序は変更されません。

DefPriority属性が変更されると，MsgDeliverySequence属性がMQMDS_FIFOの場合でも，必ずしもメッセージがFIFO順序で配布されるとは限りません。優先度の高いメッセージが，先に配布されることがあります。

この属性の値を照会するときは，MQINQ命令でMQIA_MSG_DELIVERY_SEQUENCEセレクタを使用してください。

●　OpenInputCount（MQLONG型）

入力オープン数

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

×

×

×

×

MQGET命令の取り出し用にそのキューを使用している，現時点のハンドルの個数です。このハンドルの総数は，ローカルキューマネジャがつかんでいます。

このキューの別名キューが取り出し用にオープンされた場合のハンドルも，この数に含まれます。検索など，取り出し以外の目的でオープンされた場合は，この数には含まれません。

この属性の値は，キューマネジャの操作で変動します。

この属性の値を照会するときは，MQINQ命令でMQIA_OPEN_INPUT_COUNTセレクタを使用してください。

●　OpenOutputCount（MQLONG型）

出力オープン数

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

×

×

×

×

MQPUT命令の登録用にそのキューを使用している，現時点のハンドルの個数です。このハンドルの総数は，ローカルキューマネジャがつかんでいます。リモートキューマネジャのキューを登録用にオープンした場合は，この数に含まれません。

このキューの別名キューが登録用にオープンされた場合のハンドルも，この数に含まれます。照会など，登録以外の目的でオープンされた場合は，この数に含まれません。

この属性の値は，キューマネジャの操作で変動します。

この属性の値を照会するときは，MQINQ命令でMQIA_OPEN_OUTPUT_COUNTセレクタを使用してください。

●　ProcessName（MQCHAR48型）

プロセス名

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

×

×

×

ローカルキューマネジャに定義されたプロセスオブジェクトの名称です。プロセスオブジェクトは，キューに対してサービスするプログラムを識別します。トリガについては，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

この属性の値を照会するときは，MQINQ命令でMQCA_PROCESS_NAMEセレクタを使用してください。

この属性の長さは，MQ_PROCESS_NAME_LENGTHに定義されています。

●　QDesc（MQCHAR64型）

キュー記述子

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

○

○

○

補足説明を記述するフィールドです。キューマネジャはこの内容を特に使用しません。このフィールドには，表示できる文字だけを使用してください。ヌル文字は使用できません。必要に応じて余りを空白で埋めてください。

注意事項

キューマネジャの文字セットにない，つまりキューマネジャのCodedCharSetId属性で定義されていない文字は，ほかのキューマネジャへ送信したとき，正しく変換されないことがあります。

この属性の値を照会するときは，MQINQ命令でMQCA_Q_DESCセレクタを使用してください。

この属性の長さは，MQ_Q_DESC_LENGTHに定義されています。

●　QName（MQCHAR48型）

キュー名

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

×

○

○

○

ローカルキューマネジャに定義されたキューの名称です。キューを含むオブジェクトの命名規則については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。同じキューマネジャに定義されたキューの場合，キュー名の中に同じ文字列を含みます。このため，ローカルキューと別名キューが同じ名称になることはありません。

この属性の値を照会するときは，MQINQ命令でMQCA_Q_NAMEセレクタを使用してください。

この属性の長さは，MQ_Q_NAME_LENGTHに定義されています。

●　QType（MQLONG型）

キュータイプ

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

×

○

○

○

次のどれかの値を取ります。

MQQT_ALIAS：別名キュー定義

MQQT_CLUSTER：クラスタキュー

MQQT_LOCAL：ローカルキュー

MQQT_MODEL：モデルキュー定義

MQQT_REMOTE：リモートキューのローカル定義

この属性の値を照会するときは，MQINQ命令でMQIA_Q_TYPEセレクタを使用してください。

●　RemoteQMgrName（MQCHAR48型）

リモートキューマネジャ名

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

×

×

×

○

×

RemoteQName属性に示すキューを定義しているリモートキューマネジャの名称です。

アプリケーションがリモートキューのローカル定義をオープンする場合，オープンした時点でRemoteQMgrName属性が空白ではない必要があります。また，ローカルキューマネジャ名でもいけません。オープンした時点でXmitQName属性が空白の場合は，RemoteQMgrName属性と同じ名称のローカルキューが必要です。このキューは，転送キューとして使用されます。

この定義をキューマネジャの別名として使用する場合，RemoteQMgrName属性は，別名を付けられるキューマネジャの名称です。ローカルキューマネジャの名称でもかまいません。オープンした時点でXmitQName属性が空白の場合は，RemoteQMgrName属性と同じ名称のローカルキューが必要です。このキューは，転送キューとして使用されます。

この定義を応答キューの別名として使用する場合は，このRemoteQMgrName属性のキューマネジャ名が，ReplyToQMgrフィールドに設定されます。

注意事項

キューの定義を作成・修正したときには，この属性の内容が正しいかどうかはチェックされません。

この属性の値を照会するときは，MQINQ命令でMQCA_REMOTE_Q_MGR_NAMEセレクタを使用してください。

この属性の長さは，MQ_Q_MGR_NAME_LENGTHに定義されています。

●　RemoteQName（MQCHAR48型）

リモートキュー名

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

×

×

×

○

×

RemoteQMgrName属性で示すリモートキューマネジャに定義されているキューの名称です。

アプリケーションがリモートキューのローカル定義をオープンする場合，オープンした時点でRemoteQName属性が空白ではない必要があります。

この定義をキューマネジャの別名として使用する場合，オープンした時点でRemoteQName属性が空白である必要があります。

この定義を応答キューの別名として使用する場合は，このRemoteQName属性のキュー名が，ReplyToQフィールドに設定されます。

注意事項

キューの定義を作成・修正したときには，この属性の内容が正しいかどうかはチェックされません。

この属性の値を照会するときは，MQINQ命令でMQCA_REMOTE_Q_NAMEセレクタを使用してください。

この属性の長さは，MQ_Q_NAME_LENGTHに定義されています。

●　RetentionInterval（MQLONG型）

キュー保持時間

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

×

×

×

キューを保持する時間です。この時間が経過すると，キューは破棄できる状態になります。

これは，キューが作成された日付および時刻からの時間で，単位は時間です。キューが作成された日付と時刻は，CreationDate属性とCreationTime属性にそれぞれ記録されています。

アプリケーションまたはオペレータは，必要がなくなったキューをRetentionInterval属性の値で判断して削除できます。

注意事項

キューマネジャがこの属性に従ってキューを削除することはありません。また，キュー保持時間が経過していないキューの削除を抑制することもありません。キューはユーザの判断で削除してください。

キュー保持期間は，不要になった永続的動的キューの増加を避けるために使用してください。なお，定義済みキューの場合でも使用できます。

この属性の値を照会するときは，MQINQ命令でMQIA_RETENTION_INTERVALセレクタを使用してください。

●　Scope（MQLONG型）

キューの有効範囲

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

×

○

○

×

セルディレクトリの範囲でこのキューに登録するかどうかを制御します。

次の値を取ります。

MQSCO_Q_MGR

キューマネジャの範囲で使用します。

キューの定義は，キューマネジャの範囲で有効です。つまり，定義したキューマネジャ以外には認識されません。ほかのキューマネジャが登録用にこのキューをオープンするには，キューマネジャ名を指定するか，キューのローカル定義を使用する必要があります。

この属性の値を照会するときは，MQINQ命令でMQIA_SCOPEセレクタを使用してください。

●　Shareability（MQLONG型）

取り出し時の共用性

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

×

×

×

このキューに対して，取り出しのために同時に複数のオープンができるかどうかを示します。次のどちらかの値を取ります。

MQQA_SHAREABLE

キューを共用できます。

MQOO_INPUT_SHAREDオプションでの複数のオープンができます。

MQQA_NOT_SHAREABLE

キューを共用できません。

MQOO_INPUT_SHAREDオプションでのMQOPEN命令は，MQOO_INPUT_EXCLUSIVEと同様に扱われます。

この属性の値を照会するときは，MQINQ命令でMQIA_SHAREABILITYセレクタを使用してください。

●　TriggerControl（MQLONG型）

トリガ制御

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

×

×

×

トリガメッセージをイニシエーションキューに通知させるかどうかを示します。トリガメッセージは，キューに対応するサービスのアプリケーションを起動（開始）する契機となります。トリガによるアプリケーション開始については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

次のどちらかの値を取ります。

MQTC_OFF

トリガメッセージを要求しません。

このキューのイベントでは，トリガメッセージは通知されません。この場合，TriggerType属性は無効です。

MQTC_ON

トリガメッセージを要求します。

該当するトリガイベントがこのキューに発生したときに，トリガメッセージが通知されます。

この属性の値を照会するときは，MQINQ命令でMQIA_TRIGGER_CONTROLセレクタを使用してください。この属性を変更するときは，MQSET命令を使用してください。

●　TriggerData（MQCHAR64型）

トリガデータ

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

×

×

×

任意の形式で設定できるトリガメッセージのデータです。キューマネジャはトリガメッセージを通知するときに，メッセージ内にこのデータを組み込みます。

キューマネジャはこの内容を特に使用しません。イニシエーションキューを監視するトリガモニタアプリケーション，またはトリガモニタアプリケーションによって起動（開始）されたアプリケーションで使用します。トリガによるアプリケーション開始については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

このデータ内では，ヌル文字を使用できません。必要なら，余りを空白で埋めてください。

この属性の値を照会するときは，MQINQ命令でMQCA_TRIGGER_DATAセレクタを使用してください。この属性を変更するときは，MQSET命令を使用してください。

この属性の長さは，MQ_TRIGGER_DATA_LENGTHに定義されています。

●　TriggerDepth（MQLONG型）

トリガのためのメッセージ登録数の下限値

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

×

×

×

トリガメッセージが通知されるまでの，キューのメッセージ登録数です。TriggerType属性がMQTT_DEPTHのときに使用されます。TriggerDepth属性の値は，1以上です。TriggerType属性がMQTT_DEPTH以外のときは，この属性は使用されません。トリガについては，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

この属性の値を照会するときは，MQINQ命令でMQIA_TRIGGER_DEPTHセレクタを使用してください。この属性を変更するときは，MQSET命令を使用してください。

●　TriggerMsgPriority（MQLONG型）

トリガのためのメッセージ優先度の下限値

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

×

×

×

この属性値より低い優先度のメッセージでは，トリガメッセージは通知されません。つまり，キューマネジャがトリガメッセージを通知するかどうかを判断するとき，優先度の低いメッセージは無視されます。この属性値の範囲は，0からMaxPriority属性の値までです。この属性値が0の場合，すべてのメッセージについて，トリガメッセージを通知するかどうかが判断されます。トリガについては，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

この属性の値を照会するときは，MQINQ命令でMQIA_TRIGGER_MSG_PRIORITYセレクタを使用してください。この属性を変更するときは，MQSET命令を使用してください。

●　TriggerType（MQLONG型）

トリガタイプ

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

×

×

×

トリガメッセージを通知させる条件を示します。トリガについては，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

次のどれかの値を取ります。

MQTT_NONE

トリガメッセージは通知されません。

このキューにメッセージが到着しても，トリガメッセージは通知されません。つまり，TriggerControl属性がMQTC_OFFの場合と同様です。

MQTT_FIRST

空ではないときに通知されます。

このキューが空，つまり，メッセージがない状態から，空ではない，つまり，メッセージがある状態に変化したときに，トリガメッセージが通知されます。

MQTT_EVERY

メッセージごとに通知されます。

メッセージがこのキューに到着するごとに，トリガメッセージが通知されます。

MQTT_DEPTH

一定の格納数を超えたときに通知されます。

このキューに一定数（TriggerDepth属性の値）を超えてメッセージが格納されたときに，トリガメッセージが通知されます。トリガメッセージが通知されると，TriggerControl属性がMQTC_OFFになります。これによって，通知が連続することがなくなります。TriggerControl属性は，設定し直すまでMQTC_OFFのままです。

この属性の値を照会するときは，MQINQ命令でMQIA_TRIGGER_TYPEセレクタを使用してください。この属性を変更するときは，MQSET命令を使用してください。

●　Usage（MQLONG型）

使用種別

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

○

○

×

×

×

キューの使用種別を示します。次のどちらかの値を取ります。

MQUS_NORMAL

通常キュー

このキューは，通常のアプリケーションがメッセージを登録・取り出しするために使用されます。転送キューではありません。

MQUS_TRANSMISSION

転送キュー

このキューは，リモートキューマネジャへ送信するメッセージを格納するために使用されます。通常のアプリケーションがメッセージをリモートキューへ送信するとき，メッセージはローカルキューマネジャによって一時的に転送キューに特別な形式で格納されます。その後，MCAが，転送キューからメッセージを取り出してリモートキューマネジャへ送信します。転送キューについては，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

アプリケーションは，転送キューをMQOO_OUTPUTオプションでオープンして，メッセージを直接それに登録できます。ユティリティアプリケーションがこれに当たります。そのアプリケーションは，メッセージデータの形式が正しいかどうか，注意する必要があります。詳細については，「1.　データタイプ」の「MQXQH構造体　−　転送キューヘッダ」を参照してください。メッセージデータの形式が正しくない場合，転送処理中に障害が発生することがあります。コンテキストオプションMQPMO_*のどれかを指定しないと，コンテキストは付けられません。

この属性の値を照会するときは，MQINQ命令でMQIA_USAGEセレクタを使用してください。

●　XmitQName（MQCHAR48型）

転送キュー名

ローカルキュー

モデルキュー

別名キュー

リモートキューのローカル定義

クラスタキュー

×

×

×

○

×

この属性は，リモートキューのローカル定義またはキューマネジャの別名の場合に使用できます。オープンした時点でこの属性が空白ではない場合，メッセージを送信するための転送キューを示します。

XmitQName属性が空白の場合，RemoteQMgrName属性と同じ名称のキューが，代わりに転送キューとして使用されます。

キューマネジャの別名の場合で，RemoteQMgrName属性がローカルキューマネジャ名のとき，この属性は無視されます。

また，応答キューの別名の場合も，この属性は無視されます。

この属性の値を照会するときは，MQINQ命令でMQCA_XMIT_Q_NAMEセレクタを使用してください。

この属性の長さは，MQ_Q_NAME_LENGTHに定義されています。

プロセス定義の属性

プロセス定義には，次の属性があります。

属性

●　ApplId（MQCHAR256型）　アプリケーション識別子

起動させるアプリケーションを識別する文字列です。

この情報は，イニシエーションキューのメッセージを処理するトリガモニタアプリケーションで使用します。トリガメッセージに組み込まれてイニシエーションキューへ送られます。

この情報の意味は，トリガモニタアプリケーションで決めます。例えば，ApplId属性で次を示すことができます。

プログラム名（MQAT_MVSアプリケーションの場合）

CICSトランザクション識別子（MQAT_CICSアプリケーションの場合）

この文字列にはヌル文字は使用できません。必要に応じて余りを空白で埋めてください。

この属性の値を照会するときは，MQINQ命令でMQCA_APPL_IDセレクタを使用してください。

この属性の長さは，MQ_PROCESS_APPL_ID_LENGTHに定義されています。

●　ApplType（MQLONG型）　アプリケーションタイプ

トリガメッセージの受信に応じて起動させるプログラムの種類を示します。

この情報は，イニシエーションキューのメッセージを処理するトリガモニタアプリケーションで使用します。トリガメッセージに組み込まれてイニシエーションキューへ送られます。

ApplType属性はどんな値でもとれます。ただし，通常は，次の標準のアプリケーションタイプです。ユーザが定義するアプリケーションタイプは，MQAT_USER_FIRSTからMQAT_USER_LASTの範囲の値にしてください。

MQAT_AIX：AIXアプリケーション

MQAT_CICS：CICSトランザクション

MQAT_DOS：PC-DOS上のIBM MQクライアントアプリケーション

MQAT_IMS：IMSアプリケーション

MQAT_MVS：MVSまたはTSOアプリケーション

MQAT_OPEN_TP1：OpenTP1アプリケーション

MQAT_OS2：OS/2またはプレゼンテーションマネジャアプリケーション

MQAT_OS400：OS/400アプリケーション

MQAT_UNIX：UNIXアプリケーション

MQAT_TMS_4V：TMS-4V/SPアプリケーション

MQAT_WINDOWS：16ビットWindowsアプリケーション

MQAT_WINDOWS_NT：32ビットWindowsアプリケーション

MQAT_XDM：XDMアプリケーション

MQAT_USER_FIRST：ユーザ定義のアプリケーションタイプの最小値

MQAT_USER_LAST：ユーザ定義のアプリケーションタイプの最大値

この属性の値を照会するときは，MQINQ命令でMQIA_APPL_TYPEセレクタを使用してください。

●　EnvData（MQCHAR128型）　環境データ

起動させるアプリケーションに関連する環境についてのデータです。

この情報は，イニシエーションキューのメッセージを処理するトリガモニタアプリケーションで使用します。トリガメッセージに組み込まれてイニシエーションキューへ送られます。

EnvDataの意味は，トリガモニタアプリケーションで決めます。

この文字列にはヌル文字は使用できません。必要に応じて余りを空白で埋めてください。

この属性の値を照会するときは，MQINQ命令でMQCA_ENV_DATAセレクタを使用してください。

この属性の長さは，MQ_PROCESS_ENV_DATA_LENGTHに定義されています。

●　ProcessDesc（MQCHAR64型）　プロセス記述子

補足説明を記述するフィールドです。キューマネジャはこの内容を特に使用しません。このフィールドには，表示できる文字だけを使用してください。ヌル文字は使用できません。必要に応じて余りを空白で埋めてください。

注意事項

キューマネジャの文字セットにない，つまり，キューマネジャのCodedCharSetId属性で定義されていない文字は，ほかのキューマネジャへ送信したとき，正しく変換されないことがあります。

この属性の値を照会するときは，MQINQ命令でMQCA_PROCESS_DESCセレクタを使用してください。

この属性の長さは，MQ_PROCESS_DESC_LENGTHに定義されています。

●　ProcessName（MQCHAR48型）　プロセス名

ローカルキューマネジャに定義されたプロセス定義の名称です。

一つのキューマネジャに属するプロセス定義は，互いに名称が異なります。ただし，キューなど，ほかのオブジェクトの定義と同じ名称の場合があります。

この属性の値を照会するときは，MQINQ命令でMQCA_PROCESS_NAMEセレクタを使用してください。

この属性の長さは，MQ_PROCESS_NAME_LENGTHに定義されています。

●　UserData（MQCHAR128型）　ユーザデータ

起動させるアプリケーションに関連するユーザ任意の情報です。

この情報は，イニシエーションキューのメッセージを処理するトリガモニタアプリケーションで使用します。トリガメッセージに組み込まれてイニシエーションキューへ送られます。

UserDataの意味は，トリガモニタアプリケーションで決めます。

この文字列にはヌル文字は使用できません。必要に応じて余りを空白で埋めてください。

この属性の値を照会するときは，MQINQ属性でMQCA_USER_DATAセレクタを使用してください。

この属性の長さは，MQ_PROCESS_USER_DATA_LENGTHに定義されています。

キューマネジャの属性

キューマネジャ自身にも，多数の属性があります。これらは，MQOT_Q_MGRオブジェクトをオープンするときと，オープン時に返されたハンドルを使用してMQINQ命令を呼び出すときに必要です。

属性

●　CodedCharSetId（MQLONG型）　文字セット識別子

キューマネジャで使用される文字セットを定義します。この文字セットは，オブジェクトの名称，キューの作成日付・作成時刻などの，MQIで定義するすべての文字列で使用されます。文字セットは，オブジェクト名として有効な1バイト文字を持つ必要があります。この識別子は，メッセージ内のアプリケーションデータには適用されません。

この属性の値を照会するときは，MQINQ命令でMQIA_CODED_CHAR_SET_IDセレクタを使用してください。

●　DeadLetterQName（MQCHAR48型）　デッドレターキュー名

ローカルキューマネジャに定義されたキューの名称です。メッセージがあて先キューに届かなかったときに，そのメッセージがこのキューへ転送されます。

例えば，次の場合にこのキューへ転送されます。

メッセージがキューマネジャに到着したが，キューマネジャにあて先キュー（受信キュー）が定義されていなかった場合

メッセージがキューマネジャに到着したが，次の理由などであて先キュー（受信キュー）に格納できなかった場合

−　キューが満杯のとき

−　登録が禁止されていたとき

−　送信側のノードが，キューへ登録する権限を持っていなかったとき

また，アプリケーションから直接メッセージをデッドレターキューへ登録することもできます。

報告メッセージも，通常のメッセージと同様に扱われます。つまり，報告メッセージが目的のキューに格納できなかった場合も，デッドレターキューへ転送されます。なお，この場合の目的のキューは，通常，登録元メッセージのメッセージ記述子のReplyToQフィールドに指定されたキューになります。

注意事項

保持時間が終了したメッセージが破棄されるときは，このキューへは転送されません。ただし，登録元のアプリケーションが要求していれば，保持時間終了報告メッセージ（MQRO_EXPIRATION）が生成され，ReplyToQフィールドのキューに登録されます。

MQPUT命令またはMQPUT1命令で返される理由コードで，直後にエラーが判明する場合は，メッセージはデッドレターキューへ転送されません。例えば，登録が禁止されているローカルキューへ登録した場合などは，理由コードで直後にエラーが判明します。

デッドレターキューに格納されたメッセージの中には，そのアプリケーションデータの先頭に，MQDLH構造体が付けられているものがあります。この構造体には，デッドレターキューへメッセージが転送された理由が示されます。MQDLH構造体については，「1.　データタイプ」の「MQDLH構造体　−　デッドレターヘッダ」を参照してください。

このキューは，Usage属性がMQUS_NORMALのローカルキューである必要があります。

キューマネジャがデッドレターキューをサポートしていない場合，または定義していない場合は，この名称はすべて空白です。

TP1/Message Queueのすべてのキューマネジャは，デッドレターキューをサポートしていますが，初期値としては定義されていません。

デッドレターキューが未定義，満杯，そのほかの理由で使用できないとき，MCAによって転送されたメッセージは，代わりに転送キューで保持されます。

この属性の値を照会するときは，MQINQ命令でMQCA_DEAD_LETTER_Q_NAMEセレクタを使用してください。

この属性の長さは，MQ_Q_NAME_LENGTHに定義されています。

●　DefXmitQName（MQCHAR48型）　省略時の転送キュー名

リモートキューマネジャへメッセージを送信するときに使用される転送キューの名称です。ほかに転送キューの指定がないときに使用されます。

省略時の転送キューがない場合，この名称は空白です。

この属性の値を照会するときは，MQINQ命令でMQCA_DEF_XMIT_Q_NAMEセレクタを使用してください。

この属性の長さは，MQ_Q_NAME_LENGTHに定義されています。

●　DistLists（MQLONG型）　配布リストのサポート

MQPUT命令およびMQPUT1命令で，ローカルキューマネジャが配布リストをサポートしているかどうかを示します。値は次のどちらかです。

MQDL_SUPPORTED

配布リストはサポートされています。

MQDL_NOT_SUPPORTED

配布リストはサポートされていません

この属性の値を確定するためには，MQINQ命令で，MQIA_DIST_LISTSセレクタを使用してください。値を変更する場合は，MQSET命令を使用してください。

●　MaxHandles（MQLONG型）　最大ハンドル数

一つのタスクで同時にオープンできるハンドルの最大数です。

この属性値の範囲は，1〜999999999です。

この属性の値を照会するときは，MQINQ命令でMQIA_MAX_HANDLESセレクタを使用してください。

●　MaxMsgLength（MQLONG型）　最大メッセージ長

キューマネジャで扱えるメッセージの最大長です。キューのMaxMsgLength属性は，これより大きい値をとれません。

この属性の値を照会するときは，MQINQ命令でMQIA_MAX_MSG_LENGTHセレクタを使用してください。

●　MaxPriority（MQLONG型）　最大メッセージ優先度

キューマネジャがサポートするメッセージ優先度の最大値です。優先度の範囲は，0からMaxPriority属性の値までです。

この属性の値を照会するときは，MQINQ命令でMQIA_MAX_PRIORITYセレクタを使用してください。

●　MaxUncommittedMsgs（MQLONG型）　トランザクション完了待ち最大メッセージ数

TP1/Message Queueでは，この属性は使用されません。

この属性値は，常に0です。

この属性の値を照会するときは，MQINQ命令でMQIA_MAX_UNCOMMITTED_MSGSセレクタを使用してください。

●　Platform（MQLONG型）　プラットフォーム

キューマネジャが動作しているプラットフォームのアーキテクチャを示します。

MQPL_AIX：AIX

MQPL_MVS：MVS/ESA

MQPL_OPEN_TP1：OpenTP1

MQPL_OS2：OS/2

MQPL_OS400：OS/400

MQPL_UNIX：UNIX

MQPL_WINDOWS：Windows 3.1

MQPL_WINDOWS_NT：Windows

MQPL_XDM：XDM

MQPL_TMS_4V：TMS-4V/SP/Message Queue

この属性の値を照会するときは，MQINQ命令でMQIA_PLATFORMセレクタを使用してください。

●　QMgrDesc（MQCHAR64型）　キューマネジャ記述子

補足説明を記述するフィールドです。キューマネジャはこの内容を特に使用しません。このフィールドには，表示できる文字だけを使用してください。ヌル文字は使用できません。必要に応じて余りを空白で埋めてください。

注意事項

キューマネジャの文字セットにない，つまり，キューマネジャのCodedCharSetId属性で定義されていない文字は，ほかのキューマネジャへ送信したとき，正しく変換されないことがあります。

この属性の値を照会するときは，MQINQ命令でMQCA_Q_MGR_DESCセレクタを使用してください。

この属性の長さは，MQ_Q_MGR_DESC_LENGTHに定義されています。

●　QMgrName（MQCHAR48型）　キューマネジャ名

ローカルキューマネジャの名称です。これは，アプリケーションがキューマネジャに接続するために使用する名称です。

名称の先頭の12文字は，ユニークなメッセージ識別子が生成されるときに使用されます。詳細については，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でMsgIdフィールドの説明を参照してください。通信するキューマネジャ同士では，名称の先頭の12文字が互いに異なっている必要があります。これによって，キューマネジャのネットワークで，メッセージ識別子がユニークになります。

この属性の値を照会するときは，MQINQ命令でMQCA_Q_MGR_NAMEセレクタを使用してください。

この属性の長さは，MQ_Q_MGR_NAME_LENGTHに定義されています。

●　SyncPoint（MQLONG型）　トランザクション有効性

MQGET命令，MQPUT命令，およびMQPUT1命令の同期点処理をローカルキューマネジャでサポートするかどうかを示します。

MQSP_AVAILABLE：トランザクションの同期点処理をサポートします。

MQSP_NOT_AVAILABLE：トランザクションの同期点処理をサポートしません。

この属性の値を照会するときは，MQINQ命令でMQIA_SYNCPOINTセレクタを使用してください。

●　TriggerInterval（MQLONG型）　トリガ間隔

トリガメッセージの数を抑制するために使用される時間間隔で，単位はミリ秒です。この属性は，TriggerType属性がMQTT_FIRSTのときだけ有効です。MQTT_FIRSTのときは，通常，空のキューに適切なメッセージが到着したときだけ，トリガメッセージが通知されます。ただし，MQTT_FIRSTの場合でもキューが空ではない場合に特別なトリガメッセージを通知させることができます。これらの特別なトリガメッセージは，TriggerInterval属性の時間間隔より頻繁に通知されることはありません。

トリガについては，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

この属性値の範囲は，0〜999999999です。

この属性の値を照会するときは，MQINQ命令でMQIA_TRIGGER_INTERVALセレクタを使用してください。

付録

付録A　命令および引数の一覧

メッセージキューイング機能で使用する命令ごとに，引数の一覧を示します。また，オプションを指定する引数については，指定できるオプションの一覧を示します。

付録A.1　MQCLOSE命令の引数一覧

MQCLOSE命令で指定できる引数の一覧を次の表に示します。

表A‒1　MQCLOSE命令の引数一覧

引数

データタイプ

向き

内容

Hconn

MQHCONN

i

コネクションハンドル

Hobj

MQHOBJ

i/o

オブジェクトハンドル

Options

MQLONG

i

クローズオプション

CompCode

MQLONG

o

完了コード

Reason

MQLONG

o

理由コード

（凡例）

i：入力用

i/o：入出力用

o：出力用

MQCLOSE命令のOptions引数で指定できるクローズオプションの一覧を次の表に示します。

表A‒2　クローズオプション一覧（MQCLOSE命令のOptions引数）

オプション

指定方法

オープン時に必要なオプション

MQCO_NONE

どれか一つだけ指定

省略不可

なし

MQCO_DELETE

MQCO_DELETE_PURGE

付録A.2　MQCONN命令の引数一覧

MQCONN命令で指定できる引数の一覧を次の表に示します。

表A‒3　MQCONN命令の引数一覧

引数

データタイプ

向き

内容

Name

MQHCHAR48

i

キューマネジャ名

Hconn

MQHCONN

o

コネクションハンドル

CompCode

MQLONG

o

完了コード

Reason

MQLONG

o

理由コード

（凡例）

i：入力用

o：出力用

付録A.3　MQDISC命令の引数一覧

MQDISC命令で指定できる引数の一覧を次の表に示します。

表A‒4　MQDISC命令の引数一覧

引数

データタイプ

向き

内容

Hconn

MQHCONN

i/o

コネクションハンドル

CompCode

MQLONG

o

完了コード

Reason

MQLONG

o

理由コード

（凡例）

i/o：入出力用

o：出力用

付録A.4　MQGET命令の引数一覧

MQGET命令で指定できる引数の一覧を次の表に示します。

表A‒5　MQGET命令の引数一覧

引数

データタイプ

向き

内容

Hconn

MQHCONN

i

コネクションハンドル

Hobj

MQHOBJ

i

オブジェクトハンドル

MsgDesc

MQMD

i/o

メッセージ記述子

フィールド

StrucId

MQCHAR4

i

構造体識別子

Version

MQLONG

i

構造体バージョン番号

Report

MQLONG

o

報告オプション

MsgType

MQLONG

o

メッセージタイプ

Expiry

MQLONG

o

メッセージ保持時間

Feedback

MQLONG

o

報告メッセージ返答コード

Encoding

MQLONG

o

マシンコード形式

CodedCharSetId

MQLONG

o

文字セット識別子

Format

MQCHAR8

o

フォーマット名

Priority

MQLONG

o

メッセージ優先度

Persistence

MQLONG

o

メッセージ永続性

MsgId

MQBYTE24

i/o

メッセージ識別子

CorrelId

MQBYTE24

i/o

相関識別子

BackoutCount

MQLONG

o

ロールバック回数

ReplyToQ

MQCHAR48

o

応答キュー名

ReplyToQMgr

MQCHAR48

o

応答キューマネジャ名

UserIdentifier

MQCHAR12

o

ユーザ識別子

AccountingToken

MQBYTE32

o

課金トークン

ApplIdentityData

MQCHAR32

o

アプリケーション識別データ

PutApplType

MQLONG

o

登録アプリケーションタイプ

PutApplName

MQCHAR28

o

登録アプリケーション名

PutDate

MQCHAR8

o

登録日付

PutTime

MQCHAR8

o

登録時刻

ApplOriginData

MQCHAR4

o

登録元データ

GroupId※1

MQBYTE24

i/o

グループ識別子

MsgSeqNumber※1

MQLONG

i/o

メッセージシーケンス番号

Offset※1

MQLONG

i/o

オフセット

MsgFlags※1

MQLONG

i/o

フラグ

OriginalLength※1

MQLONG

o

登録元メッセージ長

GetMsgOpts

MQGMO

i/o

メッセージ取り出しオプション

フィールド

StrucId

MQCHAR4

i

構造体識別子

Version

MQLONG

i

構造体バージョン番号

Options

MQLONG

i

取り出しオプション

WaitInterval

MQLONG

i

待ち合わせ最大時間

Signal1※2

MQLONG

−

シグナル

Signal2

MQLONG

−

予備

ResolvedQName

MQCHAR48

o

受信キュー名

MatchOptions※1

MQLONG

i

一致オプション

GroupStatus※1

MQCHAR

o

メッセージグループフラグ

SegmentStatus※1

MQCHAR

o

論理メッセージフラグ

Segmentation※1

MQCHAR

o

セグメント分割フラグ

Reserved1※1

MQCHAR

−

予備

BufferLength

MQLONG

i

バッファ長

Buffer

MQBYTE×

BufferLength

o

バッファ

DataLength

MQLONG

o

データ長

CompCode

MQLONG

o

完了コード

Reason

MQLONG

o

理由コード

（凡例）

i：入力用

i/o：入出力用

o：出力用

−：該当しません。

注※1

Versionフィールドが，MQ*_VERSION_2の場合だけ存在するフィールドです。

注※2

TP1/Message Queueでは操作しません。

MQGET命令の引数に対応するオプションには，取り出しオプション（GetMsgOpts引数のOptionsフィールド）と報告オプション（MsgDesc引数のReportフィールド）の2種類があります。ただし，MQGET命令では，MsgDesc引数のReportフィールドは出力用のフィールドとなるため，報告オプションの指定はできません。MsgDesc引数のReportフィールドには，MQPUT命令またはMQPUT1命令でオプションを指定します。Reportフィールドで指定できる報告オプションの一覧については，「付録A.7　MQPUT命令およびMQPUT1命令の引数一覧」を参照してください。

GetMsgOpts引数のOptionsフィールドで指定できる取り出しオプションの一覧を次の表に示します。

表A‒6　取り出しオプション一覧（MQGET命令のGetMsgOpts引数のOptionsフィールド）

オプション

指定方法

オープン時に必要なオプション

MQGMO_WAIT※1

どちらか一つだけ指定

省略可

MQOO_INPUT_*

MQGMO_NO_WAIT

（省略時解釈値）

MQGMO_SYNCPOINT※2

どれか一つだけ指定

省略可※4

MQGMO_NO_SYNCPOINT

MQGMO_SYNCPOINT_IF_PERSISTENT※3

MQGMO_BROWSE_FIRST

必要時にどれか一つだけ指定

MQOO_INPUT_*

MQOO_BROWSE

MQGMO_BROWSE_NEXT

MQGMO_BROWSE_MSG_UNDER_CURSOR

MQGMO_MSG_UNDER_CURSOR

MQOO_INPUT_*

MQGMO_LOCK

必要時に，MQGMO_BROWSE_FIRST，MQGMO_BROWSE_NEXT，またはMQGMO_BROWSE_MSG_UNDER_CURSORと同時に指定

MQGMO_UNLOCK※5

必要時に指定

MQGMO_ACCEPT_TRUNCATED_MSG

MQGMO_FAIL_IF_QUIESCING※6

MQGMO_CONVERT

MQGMO_COMPLETE_MSG

MQGMO_LOGICAL_ORDER

必要時に指定

MQOO_INPUT_*

MQOO_BROWSE

MQGMO_ALL_MSGS_AVAILABLE

MQGMO_ALL_SEGMENTS_AVAILABLE

MQGMO_NONE

ほかの取り出しオプションを指定しない場合に指定

注※1

MQGMO_BROWSE_MSG_UNDER_CURSOR，またはMQGMO_MSG_UNDER_CURSORと同時に指定すると，MQGMO_WAITは無視されます。

注※2

MQGMO_SYNCPOINTは，MQGMO_BROWSE_FIRST，MQGMO_BROWSE_NEXT，またはMQGMO_BROWSE_MSG_UNDER_CURSORと同時に指定できません。

注※3

MQGMO_SYNCPOINT_IF_PERSISTENTは，MQGMO_BROWSE_FIRST，MQGMO_BROWSE_NEXT，MQGMO_BROWSE_MSG_UNDER_CURSOR，MQGMO_COMPLETE_MSG，またはMQGMO_UNLOCKと同時に指定できません。

注※4

省略時解釈値は環境に依存します。TP1/Message Queueでは，トランザクションの範囲内から呼び出したかどうかで決まります。ほかのIBM MQの製品では，省略時解釈値が異なる場合があります。

注※5

MQGMO_NO_WAITおよびMQGMO_NO_SYNCPOINT以外の取り出しオプションと同時に指定できません。

注※6

TP1/Message Queueでは，指定しても動作に影響がありません。

付録A.5　MQINQ命令の引数一覧

MQINQ命令で指定できる引数の一覧を次の表に示します。

表A‒7　MQINQ命令の引数一覧

引数

データタイプ

向き

内容

Hconn

MQHCONN

i

コネクションハンドル

Hobj

MQHOBJ

i

オブジェクトハンドル

SelectorCount

MQLONG

i

セレクタ数

Selectors

MQLONG×

SelectorCount

i

セレクタ

IntAttrCount

MQLONG

i

整数型属性数

IntAttrs

MQLONG×

IntAttrCount

o

整数型属性値

CharAttrLength

MQLONG

i

文字型属性長

CharAttrs

MQCHAR×

CharAttrLength

o

文字型属性値

CompCode

MQLONG

o

完了コード

Reason

MQLONG

o

理由コード

（凡例）

i：入力用

o：出力用

付録A.6　MQOPEN命令の引数一覧

MQOPEN命令で指定できる引数の一覧を次の表に示します。

表A‒8　MQOPEN命令の引数一覧

引数

データタイプ

向き

内容

Hconn

MQHCONN

i

コネクションハンドル

ObjDesc

MQOD

i/o

オブジェクト記述子

フィールド

StrucId

MQLONG

i

構造体識別子

Version

MQLONG

i

構造体バージョン番号

ObjectType

MQLONG

i

オブジェクトタイプ

ObjectName

MQCHAR48

i※1

オブジェクト名

ObjectQMgrName

MQCHAR48

i※1

オブジェクトキューマネジャ名

DynamicQName

MQCHAR48

i

動的キュー名

AlternateUserId

MQCHAR12

i

代替ユーザ識別子

RecsPresent※2

MQLONG

i

オブジェクトレコードの数

KnownDestCount※2

MQLONG

o

ローカルキューの数

UnknownDestCount※2

MQLONG

o

リモートキューの数

InvalidDestCount※2

MQLONG

o

オープンに失敗したキューの数

ObjectRecOffset※2

MQLONG

i

最初のオブジェクトレコードまでのオフセット

ResponseRecOffset※2

MQLONG

i

最初の応答レコードまでのオフセット

ObjectRecPtr※2

MQPTR

i

オブジェクトレコードのアドレス

ResponseRecPtr※2

MQPTR

i

応答レコードのアドレス

AlternateSecurityId※3※4

MQBYTE40

i

代替セキュリティ識別子

ResolvedQName※4

MQCHAR48

o

解決したキュー名称

ResolvedQMgrName※4

MQCHAR48

o

解決したキューマネジャ名称

Options

MQLONG

i

オープンオプション

Hobj

MQHOBJ

o

オブジェクトハンドル

CompCode

MQLONG

o

完了コード

Reason

MQLONG

o

理由コード

（凡例）

i：入力用

i/o：入出力用

o：出力用

注※1

MQOPEN命令でモデルキュー名を指定した場合，入出力用のフィールドとなります。

注※2

Versionフィールドが，MQ*_VERSION_2の場合だけ存在するフィールドです。

注※3

TP1/Message Queueでは操作しません。

注※4

Versionフィールドが，MQ*_VERSION_3の場合だけ存在するフィールドです。

MQOPEN命令のOptions引数で指定できるオープンオプションの一覧を次の表に示します。

表A‒9　オープンオプション一覧（MQOPEN命令のOptions引数）

オプション

指定方法

オープン時に必要なオプション

MQOO_INPUT_AS_Q_DEF

このうち一つ以上指定

（ただし，MQOO_INPUT_*は重複不可）

なし

MQOO_INPUT_SHARED

MQOO_INPUT_EXCLUSIVE

MQOO_BROWSE

MQOO_OUTPUT

MQOO_INQUIRE

MQOO_SET

MQOO_BIND_ON_OPEN

必要時にどれか一つだけ指定

MQOO_BIND_NOT_FIXED

MQOO_BIND_AS_Q_DEF

MQOO_SAVE_ALL_CONTEXT

必要時に，MQOO_INPUTと同時に指定

MQOO_PASS_IDENTITY_CONTEXT

必要時に，MQOO_OUTPUTと同時に指定

（オプションの機能に包含関係があるため，

重複して指定する必要がない場合があります）

MQOO_PASS_ALL_CONTEXT

MQOO_SET_IDENTITY_CONTEXT

MQOO_SET_ALL_CONTEXT

MQOO_ALTERNATE_USER_AUTHORITY

必要時に指定

MQOO_FAIL_IF_QUIESCING※

注※

TP1/Message Queueでは，指定しても動作に影響がありません。

付録A.7　MQPUT命令およびMQPUT1命令の引数一覧

MQPUT命令およびMQPUT1命令で指定できる引数の一覧を次の表に示します。

表A‒10　MQPUT命令およびMQPUT1命令の引数一覧

引数

データタイプ

向き

内容

Hconn

MQHCONN

i

コネクションハンドル

Hobj※1

MQHOBJ

i

オブジェクトハンドル

ObjDesc※2

MQOD

i

オブジェクト記述子

フィールド

StrucId

MQCHAR4

i

構造体識別子

Version

MQLONG

i

構造体バージョン番号

ObjectType

MQLONG

i

オブジェクトタイプ

ObjectName

MQCHAR48

i

オブジェクト名

ObjectQMgrName

MQCHAR48

i

オブジェクトキューマネジャ名

DynamicQName

MQCHAR48

−

動的キュー名

AlternateUserId

MQCHAR12

i

代替ユーザ識別子

RecsPresent※3

MQLONG

i

オブジェクトレコードの数

KnownDestCount※3

MQLONG

o

ローカルキューの数

UnknownDestCount※3

MQLONG

o

リモートキューの数

InvalidDestCount※3

MQLONG

o

オープンに失敗したキューの数

ObjectRecOffset※3

MQLONG

i

最初のオブジェクトレコードまでのオフセット

ResponseRecOffset※3

MQLONG

i

最初の応答レコードまでのオフセット

ObjectRecPtr※3

MQPTR

i

オブジェクトレコードのアドレス

ResponseRecPtr※3

MQPTR

i

応答レコードのアドレス

AlternateSecurityId※4

MQBYTE40

o

代替セキュリティ識別子

ResolvedQName※4

MQCHAR48

o

解決したキュー名称

ResolvedQMgrName※4

MQCHAR48

o

解決したキューマネジャ名称

MsgDesc

MQMD

−

メッセージ記述子

フィールド

StrucId

MQCHAR4

i

構造体識別子

Version

MQLONG

i

構造体バージョン番号

Report

MQLONG

i

報告オプション

MsgType

MQLONG

i

メッセージタイプ

Expiry

MQLONG

i

メッセージ保持時間

Feedback

MQLONG

i

報告メッセージ返答コード

Encoding

MQLONG

i

マシンコード形式

CodedCharSetId

MQLONG

i

文字セット識別子

Format

MQCHAR8

i

フォーマット名

Priority

MQLONG

i

メッセージ優先度

Persistence

MQLONG

i

メッセージ永続性

MsgId

MQBYTE24

i/o

メッセージ識別子

CorrelId

MQBYTE24

i

相関識別子

BackoutCount

MQLONG

−

ロールバック回数

ReplyToQ

MQCHAR48

i

応答キュー名

ReplyToQMgr

MQCHAR48

i

応答キューマネジャ名

UserIdentifier

MQCHAR12

o※5

ユーザ識別子

AccountingToken

MQBYTE32

o※5

課金トークン

ApplIdentityData

MQCHAR32

o※5

アプリケーション識別データ

PutApplType

MQLONG

o※6

登録アプリケーションタイプ

PutApplName

MQCHAR28

o※6

登録アプリケーション名

PutDate

MQCHAR8

o※6

登録日付

PutTime

MQCHAR8

o※6

登録時刻

ApplOriginData

MQCHAR4

o※6

登録元データ

GroupId※3

MQBYTE24

i/o

グループ識別子

MsgSeqNumber※3

MQLONG

i/o

メッセージシーケンス番号

Offset※3

MQLONG

i/o

オフセット

MsgFlags※3

MQLONG

i/o

フラグ

OriginalLength※3

MQLONG

o

登録元メッセージ長

PutMsgOpts

MQPMO

−

メッセージ登録オプション

フィールド

StrucId

MQCHAR4

i

構造体識別子

Version

MQLONG

i

構造体バージョン番号

Options

MQLONG

i

登録オプション

Timeout

MQLONG

−

予備

Context

MQHOBJ

i

コンテキスト

KnownDestCount

MQLONG

o

ローカルキューの数

UnknownDestCount

MQLONG

o

リモートキューの数

InvalidDestCount

MQLONG

o

送信に失敗したキューの数

ResolvedQName

MQCHAR48

o

受信キュー名

ResolvedQMgrName

MQCHAR48

o

受信キューマネジャ名

RecsPresent※3

MQLONG

i

登録メッセージレコードまたは応答レコードの数

PutMsgRecFields※3

MQLONG

i

MQPMR構造体の存在

PutMsgRecOffset※3

MQLONG

i

最初の登録メッセージレコードまでのオフセット

ResponseRecOffset※3

MQLONG

i

最初の応答レコードまでのオフセット

PutMsgRecPtr※3

MQPTR

i

登録メッセージレコードのアドレス

ResponseRecPtr※3

MQPTR

i

応答レコードのアドレス

BufferLength

MQLONG

i

バッファ長

Buffer

MQBYTE×

BufferLength

i

バッファ

CompCode

MQLONG

o

完了コード

Reason

MQLONG

o

理由コード

（凡例）

i：入力用

i/o：入出力用

o：出力用

−：該当しません。

注※1

MQPUT命令で指定してください。

注※2

MQPUT1命令で指定してください。

注※3

Versionフィールドが，MQ*_VERSION_2の場合だけ存在するフィールドです。

注※4

Versionフィールドが，MQ*_VERSION_3の場合だけ存在するフィールドです。

注※5

MQPMO_SET_IDENTITY_CONTEXTまたはMQPMO_SET_ALL_CONTEXTを指定すると，入出力用のフィールドとなります。

注※6

MQPMO_SET_ALL_CONTEXTを指定すると，入出力用のフィールドとなります。

MQPUT命令およびMQPUT1命令の引数に指定できるオプションには，報告オプション（MsgDesc引数のReportフィールド）と登録オプション（PutMsgOpts引数のOptionsフィールド）の2種類があります。

それぞれのフィールドで指定できる報告オプションと登録オプションの一覧を次の各表に示します。

表A‒11　報告オプション一覧（MQPUT命令およびMQPUT1命令のMsgDesc引数のReportフィールド）

オプション

指定方法

オープン時に必要なオプション

MQRO_EXCEPTION

必要時にどれか一つだけ指定

MQOO_OUTPUT※1

MQRO_EXCEPTION_WITH_DATA

MQRO_EXCEPTION_WITH_FULL_DATA

MQRO_EXPIRATION

必要時にどれか一つだけ指定

MQRO_EXPIRATION_WITH_DATA

MQRO_EXPIRATION_WITH_FULL_DATA

MQRO_COA

必要時にどれか一つだけ指定

MQRO_COA_WITH_DATA

MQRO_COA_WITH_FULL_DATA

MQRO_COD

必要時にどれか一つだけ指定

MQRO_COD_WITH_DATA

MQRO_COD_WITH_FULL_DATA

MQRO_PAN

必要時にどれか一つだけ指定

省略可

MQRO_NAN

MQRO_NEW_MSG_ID（省略時解釈値）

MQRO_PASS_MSG_ID

MQRO_COPY_MSG_ID_TO_CORREL_ID（省略時解釈値）

MQRO_PASS_CORREL_ID

MQRO_DEAD_LETTER_Q

必要時にどちらか一つだけ指定

省略可

MQRO_DISCARD_MSG※2

MQRO_NONE

報告を要求しない場合に指定

注※1

MQPUT1命令の場合，キューをオープンしておく必要がないため，この欄は該当しません。

注※2

TP1/Message Queueでは，指定しても動作に影響がありません。

表A‒12　登録オプション一覧（MQPUT命令およびMQPUT1命令のPutMsgOpts引数のOptionsフィールド）

オプション

指定方法

オープン時に必要なオプション

MQPMO_SYNCPOINT

どちらか一つだけ指定

省略可※1

MQOO_OUTPUT※2

MQPMO_NO_SYNCPOINT

MQPMO_NEW_MSG_ID

必要時に指定

MQPMO_NEW_CORREL_ID

MQPMO_LOGICAL_ORDER

MQPMO_NO_CONTEXT

どれか一つだけ指定

省略可

MQPMO_DEFAULT_CONTEXT

（省略時解釈値）

MQPMO_PASS_IDENTITY_CONTEXT※3

MQOO_OUTPUT※2

MQOO_PASS_*※2

MQPMO_PASS_ALL_CONTEXT※3

MQOO_OUTPUT※2

MQOO_PASS_ALL_CONTEXT※2

MQPMO_SET_IDENTITY_CONTEXT

MQOO_OUTPUT※2

MQOO_SET_*※2

MQPMO_SET_ALL_CONTEXT

MQOO_OUTPUT※2

MQOO_SET_ALL_CONTEXT※2

MQPMO_ALTERNATE_USER_AUTHORITY

必要時に指定（MQPUT1命令の場合）

なし

MQPMO_FAIL_IF_QUIESCING※4

必要時に指定

MQOO_OUTPUT※2

MQPMO_NONE

ほかの登録オプションを指定しない場合に指定

注※1

省略時解釈値は環境に依存します。TP1/Message Queueでは，トランザクションの範囲内から呼び出したかどうかで決まります。ほかのIBM MQの製品では，省略時解釈値が異なる場合があります。

注※2

MQPUT1命令の場合，キューをオープンしておく必要がないため，この欄は該当しません。

注※3

MQOO_INPUT_*およびMQOO_SAVE_ALL_CONTEXTでオープンした，キューのハンドル（すでにメッセージを取り出したもの）が必要です。

注※4

TP1/Message Queueでは，指定しても動作に影響がありません。

付録A.8　MQSET命令の引数一覧

MQSET命令で指定できる引数の一覧を次の表に示します。

表A‒13　MQSET命令の引数一覧

引数

データタイプ

向き

内容

Hconn

MQHCONN

i

コネクションハンドル

Hobj

MQHOBJ

i

オブジェクトハンドル

SelectorCount

MQLONG

i

セレクタ数

Selectors

MQLONG×

SelectorCount

i

セレクタ

IntAttrCount

MQLONG

i

整数型属性数

IntAttrs

MQLONG×

IntAttrCount

i

整数型属性値

CharAttrLength

MQLONG

i

文字型属性長

CharAttrs

MQCHAR×

CharAttrLength

i

文字型属性値

CompCode

MQLONG

o

完了コード

Reason

MQLONG

o

理由コード

（凡例）

i：入力用

o：出力用

付録B　エラーコード

キューマネジャは各命令に対し，完了コードおよび理由コードを返し，命令の実行結果を報告します。

一つの命令から複数のエラーが発生した場合，返されるコードは実行環境によって異なります。したがって，返された完了コードまたは理由コード以外のエラーが発生している場合があるため，注意が必要です。各コードの定数値については，「付録F　TP1/Message Queueの定数値」を参照してください。

付録B.1　完了コード

呼び出し元アプリケーションは，完了コード（CompCode）で命令が正常終了，部分終了，または失敗したかどうか即座に確認できます。次に，完了コードを示します。

MQCC_OK

正常終了

命令は完全に完了し，出力引数はすべて設定されました。Reason引数の値はMQRC_NONEになります。

MQCC_WARNING

警告（部分終了）

命令は部分的に完了しました。CompCode引数およびReason引数に加えて幾つかの引数が設定されている場合があります。Reason引数で部分終了の詳細情報を確認できます。

MQCC_FAILED

命令失敗

命令は完了しませんでした。通常，キューマネジャの状態は変更されません。ただし，何らかの理由によって状態が変更される場合があります。その場合は，理由コードを参照してください。CompCode引数およびReason引数の出力引数は設定されました。上記以外の引数は変更されませんが，変更される場合は明確に報告されます。命令失敗の理由には次のようなものがあります。

アプリケーションプログラムの障害

アプリケーションプログラムへの外的要因（アプリケーション権限が取り消されているなど）

Reason引数で命令失敗の詳細情報を確認できます。

付録B.2　理由コード

理由コード（Reason）では，完了コード（CompCode）より詳細な情報で，命令の実行結果を確認できます。報告する事象がない場合は，MQRC_NONEが返されます。命令が正常終了した場合は，MQCC_OKおよびMQRC_NONEが返されます。完了コードがMQCC_WARNINGまたはMQCC_FAILEDの場合，キューマネジャは理由コードを返します。

また，理由コードは次に示すフィールドにも表示されます。

MQDLH構造体（デッドレターキューのメッセージに対する）のReasonフィールド

MQMD構造体（メッセージ記述子）のFeedbackフィールド

次に，理由コードを示します。なお，TP1/Message Queueでは返されない理由コードも含まれています。

値（10進数）

値（16進数）

説明

0

X'00000000'

MQRC_NONE

命令は正常終了しました。完了コード（CompCode）は，MQCC_OKになります。

対処

ありません。

900

X'00000384'

MQRC_APPL_FIRST

データ変換出口によって返されるアプリケーション定義の理由コードの最低値です。データ変換出口はMQRC_APPL_FIRSTからMQRC_APPL_LASTの範囲の理由コードを返し，この出口が検出した特定条件を示します。

対処

データ変換出口の作成者が定義しているとおり処置します。

999

X'000003E7'

MQRC_APPL_LAST

データ変換出口によって返されるアプリケーション定義の理由コードの最高値です。データ変換出口はMQRC_APPL_FIRSTからMQRC_APPL_LASTの範囲の理由コードを返し，この出口が検出した特定条件を示します。

対処

データ変換出口の作成者が定義しているとおり処置します。

2001

X'000007D1'

MQRC_ALIAS_BASE_Q_TYPE_ERROR

あて先を別名キューとして，MQOPEN命令またはMQPUT1命令が呼び出されました。しかし，別名キュー定義のベースキューの名称が，ローカルキューではない，またはリモートキューのローカル定義ではないキューと解釈されています。

対処

キューの定義を訂正してください。

2002

X'000007D2'

MQRC_ALREADY_CONNECTED

MQCONN命令が呼び出されましたが，アプリケーションはすでにキューマネジャに接続されています。

対処

ありません。返されたHconn引数の値は，直前のMQCONN命令で返された値と同じです。

MQCONN命令でこの理由コードが返されても，キューマネジャから切り離すためにMQDISC命令を続けて呼び出す必要はありません。アプリケーションがすでに接続された状態でコールされた場合にこの理由コードが返されるとき，対応するMQDISC命令を呼び出さないでください。MQDISC命令を呼び出すと，元のMQCONN命令を呼び出したアプリケーションも切り離されてしまいます。

2003

X'000007D3'

MQRC_BACKED_OUT

現在のトランザクションに致命的エラーが発生したか，またはロールバックされました。

対処

キューマネジャに対する前の命令のリターン情報を確認してください。例えば，前のMQPUT命令が失敗していた可能性があります。

2004

X'000007D4'

MQRC_BUFFER_ERROR

Buffer引数またはBuffer引数のポインタが不正です。またはBuffer引数のポインタが，MQGET命令で読み出し専用領域，またはBufferLength引数で指定された値より短い領域を指定しています。不正なBuffer引数のポインタを検出できないことがあります。検出されないときの動作は保証しません。

対処

Buffer引数を訂正してください。

2005

X'000007D5'

MQRC_BUFFER_LENGTH_ERROR

BufferLength引数またはBufferLength引数のポインタが不正です。不正なBufferLength引数のポインタを検出できないことがあります。検出されないときの動作は保証しません。

また，AuthorityBufferパラメタが小さ過ぎて，サービスコンポーネントの呼び出し側に返されるデータを格納できない場合にも，MQZ_ENUMERATE_AUTHORITY_DATAインストール可能サービスコンポーネントによって，この理由コードが返されることがあります。

対処

0以上の値を指定してください。

2006

X'000007D6'

MQRC_CHAR_ATTR_LENGTH_ERROR

MQINQ命令またはMQSET命令で，CharAttrLength引数に負の値が指定されています。または，MQSET命令で選択したすべての属性を保持できる長さではありません。この理由コードは，CharAttrLength引数のポインタが不正な場合にも返されます。不正なCharAttrLength引数のポインタを検出できないことがあります。検出されないときの動作は保証しません。

対処

選択した属性値がすべて保持される長さを指定してください。

2007

X'000007D7'

MQRC_CHAR_ATTRS_ERROR

CharAttrs引数またはCharAttrs引数のポインタが不正です。または，CharAttrs引数のポインタがMQINQ命令で，次に示す領域を指定しています。

読み出し専用領域

CharAttrLength引数で指定された値より短い領域

不正なCharAttrs引数のポインタを検出できないことがあります。検出されないときの動作は保証しません。

対処

CharAttrs引数を訂正してください。

2008

X'000007D8'

MQRC_CHAR_ATTRS_TOO_SHORT

MQINQ命令のCharAttrLength引数の値が足りないため，Selectors引数で指定されたMQCA_*セレクタの文字型属性をすべて格納できません。MQINQ命令は，格納できるだけの文字属性をCharAttrs引数の文字列に格納して完了します。格納された文字属性列だけが返されます。属性の全体を格納できる領域がない場合，その属性とあとに続く文字属性は除かれます。属性が格納されない文字列の最後の領域は変化しません。

対処

必要な情報を設定できる値を指定してください。

該当するMQRO_COD_*オプションの指定を解除してください。

2009

X'000007D9'

MQRC_CONNECTION_BROKEN

MQCゲートウェイサーバとのコネクションが消失しました。

MQGMO_WAITオプションを指定したMQGET命令の場合，待ち合わせは取り消されています。コネクションハンドルとオブジェクトハンドルは，すべて無効です。

また，MQCクライアントでローカルトランザクションおよびXA連携使用時は，エラーを検知したMQCゲートウェイサーバが該当するトランザクションに関係したメッセージを自動的にロールバックさせます。

対処

MQCクライアント側UAPでMQCONN命令を呼び出して，コネクションを再確立してください。

ただし，XA連携を使用している場合は，トランザクション内でコミットされていない変更をロールバックしてください。なお，MQCONN命令とロールバックの実行は順序が前後しても問題ありません。

2010

X'000007DA'

MQRC_DATA_LENGTH_ERROR

DataLength引数またはDataLength引数のポインタが不正です。または，DataLength引数のポインタが読み出し専用領域を指定しています。不正なDataLength引数のポインタを検出できないことがあります。検出されないときの動作は保証しません。

対処

DataLength引数を訂正してください。

2011

X'000007DB'

MQRC_DYNAMIC_Q_NAME_ERROR

MQOPEN命令で，ObjDescパラメタのObjectNameフィールドにモデルキューが指定されました。しかし，DynamicQNameフィールドが次に示す理由のため不正です。

キュー名称として不正な文字があります。

アスタリスクが34文字目以降（ヌル文字より前）にあります。

アスタリスクがあり，その後ろにヌル文字でも空白でもない文字が続いています。

対処

正しい名称を指定してください。

2012

X'000007DC'

MQRC_ENVIRONMENT_ERROR

命令が現在の環境に対して不正です。

対処

アプリケーションから不正な命令を取り除いてください。

2013

X'000007DD'

MQRC_EXPIRY_ERROR

MQPUT命令またはMQPUT1命令で，メッセージ記述子（MQMD）のExpiryフィールドに指定された値が不正です。

対処

0以上の値またはMQEI_UNLIMITEDを指定してください。

2014

X'000007DE'

MQRC_FEEDBACK_ERROR

MQPUT命令またはMQPUT1命令で，メッセージ記述子（MQMD）のFeedbackフィールドに指定された値が不正です。指定された値は，MQFB_NONEではありません。また，システムとアプリケーションのフィードバックコードに対して定義された範囲から外れています。

対処

次のどれかの値を指定してください。

・MQFB_NONE

・MQFB_SYSTEM_FIRSTからMQFB_SYSTEM_LASTまでの値

・MQFB_APPL_FIRSTからMQFB_APPL_LASTまでの値

2016

X'000007E0'

MQRC_GET_INHIBITED

キューまたはこのキューの別名キューの実体に対し，MQGET命令が禁止されています。

これは，次のどれかの方法でキューのオブジェクト属性が「キューの取り出し禁止」に設定されたまま解除されていない場合に発生します。

MQSET命令によるオブジェクトの属性の設定

mqasetコマンドによるオブジェクト属性の設定

mqamkqueコマンドによるオブジェクト作成で指定するモデルキューの定義（mqaqueatl定義コマンド）による属性の設定

対処

取り出し要求を，短い時間禁止するようにシステムが設計されている場合，しばらくしたあと，キューからの取り出しを再実行してください。

キュー取り出し禁止をしない運用，またはキュー取り出し禁止を長い時間解除しない運用を前提としてシステムが設計されている場合は，アプリケーションを終了してください。

2017

X'000007E1'

MQRC_HANDLE_NOT_AVAILABLE

MQOPEN命令またはMQPUT1命令が呼び出されましたが，現在実行中のMQCONN命令に対応できるオープンハンドルの最大数にすでに達しています。

対処

アプリケーションが，対応するMQCLOSE命令なしにMQOPEN命令を呼び出しているか確認してください。呼び出していなければ，使用するハンドルの数を減らしてください。一つのMQCONN命令で同時にオープンできるハンドルの最大数はMaxHandlesキューマネジャ属性で定義できます。

2018

X'000007E2'

MQRC_HCONN_ERROR

コネクションハンドル（Hconn）が不正です。この理由コードは，ポインタ引数が不正，またはMQCONN命令で読み出し専用領域を指しているときにも返されます。不正なポインタ引数を検出できないことがあります。検出されないときの動作は保証しません。

対処

キューマネジャに対してMQCONN命令が正常終了し，MQDISC命令がまだ実行されていないことを確認してください。ハンドルが有効範囲の中で使用されているか確認してください。ハンドルの有効範囲については，「2.　メッセージキューイング機能の命令」の「MQCONN命令　−　キューマネジャへの接続」を参照してください。

このエラーは原因を究明できない場合があります。不正なハンドルを受け渡した結果は定義されていません。

2019

X'000007E3'

MQRC_HOBJ_ERROR

オブジェクトハンドル（Hobj）が不正です。この理由コードは，ポインタ引数が不正，またはMQOPEN命令で読み出し専用領域を指しているときにも返されます。不正なポインタ引数を検出できないことがあります。検出されないときの動作は保証しません。

対処

このオブジェクトに対して，MQOPEN命令が正常終了し，MQCLOSE命令がまだ実行されていないことを確認してください。MQGET命令とMQPUT命令に対して，ハンドルがキューオブジェクトを表していることも確認してください。ハンドルが有効範囲の中で使用されているか確認してください。ハンドルの有効範囲については，「2.　メッセージキューイング機能の命令」の「MQOPEN命令　−　オブジェクトのオープン」を参照してください。

2020

X'000007E4'

MQRC_INHIBIT_VALUE_ERROR

MQSET命令の，MQIA_INHIBIT_GETまたはMQIA_INHIBIT_PUT属性で指定された値が不正です。

対処

正しい値を指定してください。

2021

X'000007E5'

MQRC_INT_ATTR_COUNT_ERROR

MQINQ命令またはMQSET命令のIntAttrCount引数が負です。または，MQSET命令のIntAttrCount引数に，Selectors引数に指定された整数属性（MQIA_*）より小さい値が指定されています。ポインタ引数の不正でもこのエラーコードが返されます。不正なポインタ引数を検出できないことがあります。検出されないときの動作は保証しません。

対処

選択した整数属性より大きな値を指定してください。

2022

X'000007E6'

MQRC_INT_ATTR_COUNT_TOO_SMALL

MQINQ命令のIntAttrCount引数に，Selectors引数で指定された整数属性セレクタ（MQIA_*）より小さい値が指定されています。MQINQ命令は，格納できるだけの整数属性をIntAttrs配列に格納し，MQCC_WARNINGで完了します。

対処

値の一部だけを使用しなければ，大きな値を指定してください。

2023

X'000007E7'

MQRC_INT_ATTRS_ARRAY_ERROR

MQINQ命令またはMQSET命令のIntAttrs引数またはIntAttrs引数のポインタが不正です。MQINQ命令の場合，IntAttrs引数のポインタが読み出し専用領域，またはIntAttrCount引数で指定された値より短い領域を指している場合もあります。不正なIntAttrs引数のポインタを検出できないことがあります。検出されないときの動作は保証しません。

対処

引数を訂正してください。

2024

X'000007E8'

MQRC_SYNCPOINT_LIMIT_REACHED

トランザクションでコミットされていないメッセージ数が操作できる最大数を超えました。MQGET命令，MQPUT命令，またはMQPUT1命令が失敗しました。トランザクションのコミットされていないメッセージ数は，トランザクションの開始から次に示すメッセージ数の合計です。

MQPMO_SYNCPOINTを指定して登録したメッセージ数

MQGMO_SYNCPOINTを指定して取り出したメッセージ数

対処

アプリケーションがループしていないか確認してください。ループしていなければ，操作するメッセージ数を減らしてください。

2025

X'000007E9'

MQRC_MAX_CONNS_LIMIT_REACHED

コンカレントコネクション数が最大値を超えたため，MQCONN命令が受け付けられません。

対処

インストールパラメタ値のサイズを大きくする，またはコンカレントコネクション数を削減してください。

2026

X'000007EA'

MQRC_MD_ERROR

MQMD構造体が次のどれかの理由で不正です。

StrucIdフィールドがMQMD_STRUC_IDではありません。

Versionフィールドに無効な値またはサポートされていない値が指定されています。

ポインタ引数が不正です（不正なポインタ引数を検出できないことがあります。検出できないときの動作は保証しません）。

命令が成功しても，変更された構造体をキューマネジャがアプリケーションストレージにコピーできません。例えば，ポインタが読み取り専用ストレージを指している場合に発生します。

対処

メッセージ記述子の定義を訂正してください。また，入力フィールドが正しく設定されているか確認してください。

2027

X'000007EB'

MQRC_MISSING_REPLY_TO_Q

MQPUT命令およびMQPUT1命令で，メッセージ識別子（MQMD構造体）内のReplyToQフィールドは空白です。しかし，次に示すうちの一つまたは両方の要求があります。

応答が要求されました。このとき，メッセージ識別子のMsgTypeフィールドにMQMT_REQUESTが指定されています。

メッセージ識別子のReportフィールドに報告メッセージが要求されました。

対処

応答または報告メッセージを送信するキューの名称を指定してください。

2029

X'000007ED'

MQRC_MSG_TYPE_ERROR

MQPUT命令またはMQPUT1命令で，メッセージ記述子（MQMD）のMsgTypeフィールドに指定した値が不正です。

対処

正しい値を指定してください。

2030

X'000007EE'

MQRC_MSG_TOO_BIG_FOR_Q

MQPUT命令またはMQPUT1命令に，MaxMsgLength属性で定義された最大値より大きいメッセージを登録しようとしました。MaxMsgLength属性については，「3.　オブジェクトの属性」の「キューの属性」を参照してください。この理由コードは，報告メッセージのメッセージ記述子中のFeedbackフィールドにも返されることがあります。これは，メッセージチャネルエージェントがメッセージをリモートキューに登録したときに，エラーが発生したことを示します。

対処

BufferLength引数の指定を確認してください。指定が正しければ，メッセージを分割する，またはMaxMsgLength属性の値を大きくしてください。

2031

X'000007EF'

MQRC_MSG_TOO_BIG_FOR_Q_MGR

リモートキューに登録されたメッセージが，リモートキューマネジャに割り当てられた最大メッセージ長を超えています。このエラーはあて先キューマネジャ，または仲介するキューマネジャで発生している場合もあります。この理由コードは，元のメッセージの送信者が報告メッセージを要求した場合に，報告メッセージのメッセージ記述子のFeedbackフィールドに返されます。Feedbackフィールドの詳細については，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でFeedbackフィールドの説明を参照してください。この理由コードは，ローカルキューマネジャの値より小さいMaxMsgLengthキューマネジャ属性を持つリモートキューマネジャへメッセージを送る場合にだけ返されます。

また，メッセージが渡されるチャネルで，キューマネジャにサポートされた値より小さい値を最大メッセージ長に設定している場合に，メッセージ長がこの値より大きいときにも返されることがあります。

対処

BufferLength引数の指定を確認してください。正しければ，そのメッセージを小さい単位に分割してください。また，チャネルの定義を確認してください。

2033

X'000007F1'

MQRC_NO_MSG_AVAILABLE

MQGET命令が呼び出されましたが，メッセージ記述子で指定された選択基準を満たすメッセージがキューにありません。このエラーは次に示すどちらかが原因です。

MQGMO_WAITが指定されていません。

MQGMO構造体のWaitIntervalフィールドで指定された時間が経過しています。

この理由コードは，カーソルがキューの終端に到着したときの検索指定のMQGET命令でも返されます。

対処

検索指定のMQGET命令を発行した場合は，対処する必要はありません。

キューにメッセージが登録されたかどうかをチェックするようなシステム設計の場合，メッセージが登録されるまでアプリケーションを継続してください。

キューにメッセージが登録されたことが明かな場合にMQGET命令を発行するシステム設計のとき，次のことを確認してください。

・キューにメッセージが正常に登録されたかどうか。

・MQPUTまたはMQPUT1命令に使用されているトランザクションがあれば，正常にコミットしたかどうか。

・キューにメッセージが正しく登録されていた場合，MsgDesc引数でMQMD構造体のMsgIdフィールドおよびCorrelIdフィールドの値が正しく設定されているかどうか。

時間を置いて再度MQGET命令を呼び出すか，Wait時間を長くすることを検討してください。

2034

X'000007F2'

MQRC_NO_MSG_UNDER_CURSOR

次に示すオプションのどちらかを指定して，MQGET命令が呼び出されました。

MQGMO_MSG_UNDER_CURSOR

MQGMO_BROWSE_MSG_UNDER_CURSOR

しかし，検索カーソルが取り出せるメッセージを指していません。原因を次に示します。

検索カーソルが論理的に先頭のメッセージの前を指しています。オープンしてから一度もメッセージを検索していません。

検索カーソルで示すメッセージの検索処理が終了後，ほかのアプリケーションによって取り出そうとしたメッセージがキューから削除，または排他状態にされました。

検索カーソルで示すメッセージの保持時間が終了しています。

対処

メッセージの検索後，複数のサーバがメッセージを取り合うように設計されているアプリケーションの場合は，予期される理由コードです。MQGET命令を再発行してほかのメッセージを取り出してください。

それ以外の場合は，アプリケーションのロジックが正しいかどうかを確認してください。

なお，メッセージの検索後，メッセージがキューから削除，または排他状態にされないようにするには，一つ前の検索MQGET命令にMQGMO_LOCKオプションを指定するようにアプリケーションを設計してください。

2035

X'000007F3'

MQRC_NOT_AUTHORIZED

実行しようとした操作に対して，実行権限がありません。

MQCONN命令で，キューマネジャに接続する権限がありません。

MQOPEN命令またはMQPUT1命令で，指定されたオプションでオブジェクトをオープンする権限がありません。

MQCLOSE命令で，オブジェクトの永続的動的キューを削除する権限がなく指定されるHobj引数は，キューを生成したMQOPEN命令で返されるハンドルではありません。

この理由コードは，報告メッセージ記述子中のFeedbackフィールドにも返される場合があります。これは，メッセージチャネルエージェントがリモートキューにメッセージを登録したときに，エラーが発生したことを示します。

対処

キューマネジャまたはオブジェクトが正しく指定されているか，またはこれらに適切な権限があるか確認してください。

2036

X'000007F4'

MQRC_NOT_OPEN_FOR_BROWSE

次に示すオプションのうちどれかを指定して，MQGET命令が発行されました。

MQGMO_BROWSE_FIRST

MQGMO_BROWSE_NEXT

MQGMO_BROWSE_MSG_UNDER_CURSOR

MQGMO_MSG_UNDER_CURSOR

しかし，キューは検索用にオープンされていません。

対処

キューをオープンするときは，MQOO_BROWSEを指定してください。

2037

X'000007F5'

MQRC_NOT_OPEN_FOR_INPUT

キューからメッセージを取り出すためにMQGET命令が呼び出されましたが，キューは取り出し用にオープンされていません。

対処

キューをオープンするときは，次に示すオプションのうち一つを指定してください。

・MQOO_INPUT_SHARED

・MQOO_INPUT_EXCLUSIVE

・MQOO_INPUT_AS_Q_DEF

2038

X'000007F6'

MQRC_NOT_OPEN_FOR_INQUIRE

オブジェクト属性を照会するためにMQINQ命令が呼び出されましたが，オブジェクトは照会用にオープンされていません。

対処

オブジェクトをオープンするときは，MQOO_INQUIREを指定してください。

2039

X'000007F7'

MQRC_NOT_OPEN_FOR_OUTPUT

キューにメッセージを登録するためにMQPUT命令が呼び出されましたが，キューは出力用にオープンされていません。

対処

キューをオープンするときは，MQOO_OUTPUTを指定してください。

2040

X'000007F8'

MQRC_NOT_OPEN_FOR_SET

オブジェクトの属性を設定するためにMQSET命令が呼び出されましたが，オブジェクトは属性設定用にオープンされていません。

対処

オブジェクトをオープンするときは，MQOO_SETを指定してください。

2041

X'000007F9'

MQRC_OBJECT_CHANGED

この命令で使用されるHobjハンドルが，MQOPEN命令で返されたあと，このオブジェクトに影響するオブジェクト定義が変更されました。

MQPUT命令またはMQPUT1命令で，オブジェクトハンドルがPutMsgOpts引数のContextフィールドに指定されている場合，この理由コードは返されません。

対処

MQCLOSE命令を呼び出してオブジェクトを終了したあと，オブジェクトを再度オープンしてください。なお，オブジェクト定義で変更された内容を確認したい場合は，オブジェクトをオープンしたあとに，MQINQ命令を呼び出して，オブジェクトの新しい属性値を取得できます。

2042

X'000007FA'

MQRC_OBJECT_IN_USE

MQOPEN命令が呼び出されましたが，オブジェクトがOptions引数で指定されたものと矛盾するオプションです。また，それを呼び出したアプリケーションまたは別のアプリケーションによってすでにオープンされています。オブジェクトがすでに排他アクセスでオープンされていて，要求が共用入力の場合にこのエラーが発生します。また，オブジェクトがどんなタイプであっても，すでに入力用にオープンされていて，要求が排他アクセスのときにも発生します。

対処

対象のキューを排他アクセスで使用するシステムでは，先行のアプリケーションがMQCLOSE命令を発行したあとで，このアプリケーションがMQOPEN命令を再発行することで成功します。アプリケーションが待機，再試行，または別の処理を実行するかどうかをシステム設計で設定してください。

対象のキューを排他アクセスで使用しないシステムでは，引数不正が考えられるので，アプリケーションを見直してください。

2043

X'000007FB'

MQRC_OBJECT_TYPE_ERROR

オブジェクトタイプが不正です。

MQOPEN命令またはMQPUT1命令で，MQOD構造体のObjectTypeフィールドに指定された値が不正です。MQPUT1命令の場合，オブジェクトタイプはMQOT_Qです。

対処

正しいオブジェクトタイプを指定してください。

2044

X'000007FC'

MQRC_OD_ERROR

MQOPEN命令またはMQPUT1命令で，MQOD構造体が次のどれかの理由で不正です。

StrucIdフィールドがMQOD_STRUC_IDではありません。

Versionフィールドに無効な値，またはサポートされていない値が指定されています。

ポインタ引数が不正です。不正なポインタ引数を検出できないことがあります。検出されないときの動作は保証しません。

命令は成功しましたが，変更された構造体がアプリケーションの記憶領域にコピーされません。このエラーはポインタ引数が読み出し専用領域を指定している場合にも発生することがあります。

対処

オブジェクト記述子の定義を訂正してください。入力フィールドが正しく設定されているか確認してください。

2045

X'000007FD'

MQRC_OPTION_NOT_VALID_FOR_TYPE

MQOPEN命令またはMQCLOSE命令で，オープンまたはクローズされるオブジェクトやキューのタイプに対し，不正なオプションが指定されています。

MQOPEN命令の場合，次に示すオプションの両方が指定されています。

MQOT_PROCESSオブジェクトに対するMQOO_OUTPUTなど，オブジェクトタイプに指定できないオプション

ローカル定義を持たないリモートキューに対するMQOO_INQUIREなど，キュータイプとしてサポートされていないオプション

MQOPEN命令の場合，キューマネジャの別名を指定するために，オブジェクト記述子のObjectQMgrNameにリモートキューのローカル定義名が指定されています。また，定義のRemoteQMgrName属性に指定されたキューがローカルキューマネジャの名称で，次に示すオプションが含まれる場合も，この理由コードが返されます。

　MQOO_INPUT_AS_Q_DEF

　MQOO_INPUT_SHARED

　MQOO_INPUT_EXCLUSIVE

　MQOO_BROWSE

　MQOO_INQUIRE

　MQOO_SET

MQOO_INQUIREを指定したMQOPEN命令の場合，次のどちらかの理由でこの理由コードが返されます。

オブジェクト記述子のObjectQMgrNameフィールドに，空白，ローカルキューマネジャ名，またはローカルに存在するキューの定義名以外の名称が指定されました。

オブジェクト記述子のObjectQMgrNameフィールドに，キューマネジャの別名定義が指定された場合に，定義内のXmitQName属性が空白で，あて先キューマネジャと同じ名前で定義されているキューが存在しません。

MQCLOSE命令の場合，次に示すどちらかのオプションが指定されましたが，キューが動的キューではありません。

　MQCO_DELETE

　MQCO_DELETE_PURGE

対処

正しいオプションを指定してください。MQOPEN命令のオプションについては，「2.　メッセージキューイング機能の命令」の「MQOPEN命令　−　オブジェクトのオープン」を参照してください。MQCLOSE命令のオプションについては「2.　メッセージキューイング機能の命令」の「MQCLOSE命令　−　オブジェクトのクローズ」を参照してください。MQCLOSE命令の場合，オプションを訂正する，またはキューを作成するために使用したモデルキューの定義タイプを変更してください。

2046

X'000007FE'

MQRC_OPTIONS_ERROR

Options引数またはフィールドのオプションが不正です。または，不正な組み合わせで指定されています。

MQOPEN命令，MQCLOSE命令，およびMQXCNVC命令のOptions引数は，各命令で指定する引数です。この理由コードはポインタ引数が不正な場合にも返されます。不正なポインタ引数を検出できないことがあります。検出されないときの動作は保証しません。

次に示す命令では，Options引数は関連するオプション構造体（MQGMO構造体またはMQPMO構造体）のフィールドです。

−　MQGET命令

−　MQPUT命令

−　MQPUT1命令

対処

正しいオプションを指定してください。不正な組み合わせのオプションは，Optionsパラメタまたはフィールドで確認できます。個々のオプションを一緒に加算して複数オプションが設定されている場合，同じオプションが複数回加算されていないか確認してください。

2047

X'000007FF'

MQRC_PERSISTENCE_ERROR

MQPUT命令またはMQPUT1命令で，メッセージ記述子（MQMD構造体）のPersistenceフィールドに指定された値が不正です。

対処

次に示すオプションのうちどれかを指定してください。

・MQPER_PERSISTENT

・MQPER_NOT_PERSISTENT

・MQPER_PERSISTENCE_AS_Q_DEF

2048

X'00000800'

MQRC_PERSISTENT_NOT_ALLOWED

MQPUT命令またはMQPUT1命令で，メッセージ記述子（MQMD）のPersistenceフィールドにMQPER_PERSISTENTが指定されていますが，登録されるメッセージのキューが一時的動的キューであり，永続メッセージがサポートされていません。永続メッセージは一時動的キューに登録できません。

この理由コードは，報告メッセージのメッセージ記述子のFeedbackフィールドにも返されることがあります。これは，メッセージチャネルエージェントがメッセージをリモートキューに登録したときにエラーが発生したことを示します。

対処

一時的動的キューにメッセージを登録する場合，MQPER_NOT_PERSISTENTを指定してください。永続性メッセージの場合，一時動的キューではなく永続的動的キューまたは定義済みキューを使用してください。共用キューの場合，キューが回復可能であるか確認してください。

アプリケーションサーバでは，元の要求メッセージ（MQMT_REQUEST）と同じ永続性の応答メッセージ（MQMT_REPLY）を送信することが推奨されています。要求メッセージが永続性の場合，メッセージ記述子（MQMD）のReplyToQフィールドに指定される応答キューは一時的動的キューにできません。この場合は，応答キューとして永続的動的キューまたは定義済みキューを使用してください。

2049

X'00000801'

MQRC_PRIORITY_EXCEEDS_MAXIMUM

MQPUT命令またはMQPUT1命令で，メッセージ記述子（MQMD）のPriorityフィールドの値がローカルキューマネジャでサポートされた最大メッセージ優先度を超えています。メッセージはキューマネジャに受け付けられましたが，キューマネジャの最大メッセージ優先度でキューに登録されました。メッセージ記述子のPriorityフィールドはメッセージを登録したアプリケーションで指定された値のままです。最大メッセージ優先度については，「3.　オブジェクトの属性」の「キューマネジャの属性」でMaxPriorityの説明を参照してください。

対処

メッセージを登録したアプリケーションがこの理由コードに対する処理を必要としない場合，対処する必要はありません。

2050

X'00000802'

MQRC_PRIORITY_ERROR

MQPUT命令またはMQPUT1命令で，メッセージ記述子（MQMD）のPriorityフィールドが不正です。キューマネジャによってサポートされている最大優先度は，キューマネジャのMaxPriority属性の指定値です。

対処

0からMaxPriority属性の範囲で値を指定してください。またはMQPRI_PRIORITY_AS_Q_DEFを指定してください。

2051

X'00000803'

MQRC_PUT_INHIBITED

MQPUT命令またはMQPUT1命令が，現在キューまたはこのキューの別名キューの実体に対し禁止されています。

この理由コードは報告メッセージのメッセージ記述子のFeedbackフィールドにも返されることがあります。これは，メッセージチャネルエージェントがメッセージをリモートキューに登録したときに，エラーが発生したことを示します。

対処

システム設計で短い期間の登録要求禁止が許されている場合は，登録を再実行してください。

キュー取り出し禁止をしない運用，またはキュー取り出し禁止を長い時間解除しない運用を前提としてシステムが設計されている場合は，アプリケーションを終了してください。

2052

X'00000804'

MQRC_Q_DELETED

命令で指定されたHobjキューハンドルは，キューがオープンされてから削除された動的キューを参照しています。

対処

MQCLOSE命令を呼び出して，システムにハンドルと対応するリソースを返してください。この場合のMQCLOSE命令は成功します。エラーが発生したアプリケーション設計を確認してください。

2053

X'00000805'

MQRC_Q_FULL

次のどれかの理由で失敗しました。

MQPUT命令またはMQPUT1命令で，キューに格納できるメッセージの最大数を超えました。

報告メッセージのメッセージ記述子のFeedbackフィールドに，理由コードが返される場合は，メッセージチャネルエージェントがメッセージをリモートキューに登録したときに，エラーが発生したことを示します。

キューに格納できるメッセージの最大数については，「3.　オブジェクトの属性」の「キューの属性」でMaxQDepthの説明を参照してください。

対処

しばらくしたあと，登録を再実行してください。

このエラーが頻繁に発生する場合，対象のキューを処理するアプリケーションを増やすことで改善できる可能性があります。

また，メッセージ登録で待ち時間を許容できない場合，システム設計でキューのメッセージ最大数を増やしてください。

2055

X'00000807'

MQRC_Q_NOT_EMPTY

永続動的キューにMQCLOSE命令が発行されましたが，キューが空でないか使用中であるために，命令は失敗しました。次に示すどちらかに該当します。

MQCO_DELETEが指定されましたが，キューにまだメッセージがあります。

MQCO_DELETEまたはMQCO_DELETE_PURGEが指定されましたが，キューに対してコミットされていない取り出しまたは登録命令があります。

対処

キューにメッセージがある原因を調べてください。キューにメッセージが一つ以上あっても，キューのCurrentQDepth属性は0の場合があります。これは，トランザクションで取り出されたメッセージが，コミットされていない場合に発生します。破棄してもよいメッセージであれば，MQCO_DELETE_PURGEを指定してMQCLOSE命令を呼び出したあと，MQCLOSE命令を再実行してください。

2056

X'00000808'

MQRC_Q_SPACE_NOT_AVAILABLE

MQPUT命令またはMQPUT1命令が呼び出されましたが，キューとして使用できる空き領域がディスクまたはほかの記憶装置にありません。

この理由コードは，報告メッセージのメッセージ記述子のFeedbackフィールドにも返されることがあります。これは，メッセージチャネルエージェントがメッセージをリモートキューに登録したときにエラーが発生したことを示します。

対処

システム設計で許容できる（メッセージ数とメッセージサイズの組み合わせ）以上のメッセージが登録されています。

ほかのアプリケーションがメッセージを取り出したあと，MQRC_Q_SPACE_NOT_AVAILABLEを返却されたMQI命令を再発行することで成功する可能性があります。

このエラーが頻繁に発生する場合，キュー用のディスク容量を大きくしてください。または，MQAサービス定義の1メッセージの最大レコード数（mqa_max_msg_recnum）を大きくしてください。

2057

X'00000809'

MQRC_Q_TYPE_ERROR

次に原因を示します。

MQOPEN命令で，オブジェクト記述子のObjectQMgrNameフィールドに，キューマネジャ別名を指定するためのリモートキューのローカル定義名が指定されています。また，RemoteQMgrNameフィールドがローカルキューマネジャの名称になっています。しかし，ObjectNameフィールドはローカルキューマネジャのモデルキューの名称を指定しています。リモートキューおよびローカルキューについては，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

MQPUT1命令で，オブジェクト記述子（MQOD）にモデルキューの名称を指定しています。

対処

キュータイプを訂正してください。

2058

X'0000080A'

MQRC_Q_MGR_NAME_ERROR

MQCONN命令でName引数に指定された値が不正か，または未知の値です。ただし，不正なName引数を検出できないことがあります。検出されないときの動作は保証しません。

対処

影響がなければ，Name引数に空白を指定してください。または，使用中の名称が正しいか確認してください。

Name引数ポインタが正しいか確認してください。

2059

X'0000080B'

MQRC_Q_MGR_NOT_AVAILABLE

MQCONN命令のName引数で指定されたキューマネジャは，この時点では接続に使用できません。

対処

dc_rpc_openが実行されているかどうかを確認してください。

2061

X'0000080D'

MQRC_REPORT_OPTIONS_ERROR

MQPUT命令またはMQPUT1命令が呼び出されましたが，メッセージ記述子（MQMD）のReportフィールドに，ローカルキューマネジャで認識されないオプションがあります。このオプションは，メッセージのあて先によって異なります。

対処

対処方法を次に示します。

1.　メッセージ記述子のReportフィールドが，メッセージ記述子の宣言時に初期化されているかどうかを確認してください。または，MQPUT命令またはMQPUT1命令の前に値を割り当てられているかどうかを確認してください。報告オプションが必要でない場合は，MQRO_NONEを指定してください。

2.　指定された報告オプションが，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」の報告オプションに記載されているか確認してください。記載されていない報告オプションは削除してください。

3.　個々の報告オプションを一緒に加算して複数の報告オプションを設定している場合，同じ報告オプションが複数回加算されていないか確認してください。

4.　矛盾する報告オプションが指定されていないか確認してください。例えば，Reportフィールドに，MQRO_EXCEPTIONおよびMQRO_EXCEPTION_WITH_DATAの両方が加算されているとエラーになります。どちらか一つだけが指定できます。

2062

X'0000080E'

MQRC_SECOND_MARK_NOT_ALLOWED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2063

X'0000080F'

MQRC_SECURITY_ERROR

次に示すどれかの命令が発行されましたが，セキュリティエラーが起こったため失敗しました。

MQCLOSE命令

MQCONN命令

MQOPEN命令

MQPUT1命令

対処

セキュリティマネジャが示すエラーをシステム管理者に連絡してください。

2065

X'00000811'

MQRC_SELECTOR_COUNT_ERROR

SelectorCount引数に不正な値が指定されています。ポインタ引数が不正な場合にもこの理由コードが返されます。不正なポインタ引数を検出できないことがあります。検出されないときの動作は保証しません。

対処

0〜256の範囲で指定してください。

2066

X'00000812'

MQRC_SELECTOR_LIMIT_EXCEEDED

MQINQ命令またはMQSET命令で，SelectorCount引数に最大値（256）より大きい値が指定されています。

対処

命令で指定されたセレクタ数を減らしてください。0〜256の範囲で指定してください。

2067

X'00000813'

MQRC_SELECTOR_ERROR

MQINQ命令またはMQSET命令が発行されましたが，次のどれかの理由で，Selectors配列に含まれるセレクタが無効でした。

セレクタがサポートされていない，または範囲外です。

セレクタが属性を照会または設定しようとしているオブジェクトのタイプに適用されません。

セレクタは，設定できない属性のものです。

対処

セレクタに指定した値が，Hobj引数で示すオブジェクトタイプに合っているかどうかを確認してください。MQSET命令の場合，セレクタが設定できる整数属性になっているかどうかを確認してください。

2068

X'00000814'

MQRC_SELECTOR_NOT_FOR_TYPE

MQINQ命令で，Selectors配列のセレクタが属性の参照されているキュータイプに適用できません。命令はMQCC_WARNINGで完了し，適用できないセレクタの属性値に次に示すものが設定されます。

整数属性の場合，IntAttrsに対応する要素が，MQIAV_NOT_APPLICABLEに設定されます。

文字属性の場合，CharAttrs文字列の適切な部分がすべてアスタリスクで設定されます。

対処

指定されているセレクタが，意図したセレクタであるかどうかを確認してください。

2069

X'00000815'

MQRC_SIGNAL_OUTSTANDING

MQGET命令が，MQGMO_SET_SIGNALまたはMQGMO_WAITを指定して呼び出されました。しかし，すでにオブジェクトハンドルに対して未解決のシグナルがあります。

対処

アプリケーションロジックを確認してください。同じキューに対して未解決のシグナルがある場合，シグナルまたはウェイトの設定が必要なときは，異なるオブジェクトハンドルを使用してください。

2070

X'00000816'

MQRC_SIGNAL_REQUEST_ACCEPTED

GetMsgOpts引数にMQGMO_SET_SIGNALを指定してMQGET命令が呼び出されましたが，利用できるメッセージがありません。命令はすぐに返されます。アプリケーションはシグナルが渡されるまで待つことができます。

対処

シグナルを待ってください。シグナルが到着したとき，シグナルを確認してメッセージが利用できることを確認してください。利用できれば，MQGET命令を再度呼び出してください。

2071

X'00000817'

MQRC_STORAGE_NOT_AVAILABLE

キューマネジャに利用できる記憶領域が少ないため，命令が完了されません。

対処

別のアプリケーションが終了すると，再発行で命令が成功する場合があります。

このエラーが意図せず発生する場合，システムのメモリ設計が正しくないおそれがあります。次のことを確認してください。

・実行中のアプリケーションが正しく動作しているかどうかを確認してください。正しく動作していれば，利用できる記憶領域を増やしてください。

・OpenTP1のロックサービス定義に指定されたMQAサーバの最大同時排他要求数を確認してください。

・キューファイルグループの入出力バッファの値を見直してください。

問題を解決したあと，アプリケーションを再実行してください。

2072

X'00000818'

MQRC_SYNCPOINT_NOT_AVAILABLE

次に示す命令に各オプションが指定されていますが，ローカルキューマネジャがトランザクションをサポートしていません。

MQGMO_SYNCPOINTを指定したMQGET命令

MQPMO_SYNCPOINTを指定したMQPUT命令またはMQPUT1命令

原因を次に示します。

trn_rm_open_close_scope = processの場合，dc_rpc_open()を発行していない。

trn_rm_open_close_scope = transactionの場合，トランザクション開始状態でない。

mqaquemgr（キューマネジャ定義）の-sオプションにsyncを設定していない。

トランザクション制御オブジェクトがアプリケーションにリンケージされていない。

64ビット環境で32ビット製品を使用している場合，トランザクション制御オブジェクトを32ビットモードで作成していない。

対処

原因に対処するか，MQGMO_SYNCPOINTまたはMQPMO_SYNCPOINTの指定を削除してください。

2075

X'0000081B'

MQRC_TRIGGER_CONTROL_ERROR

MQSET命令の，MQIA_TRIGGER_CONTROLセレクタに指定された値が不正です。

対処

MQIA_TRIGGER_CONTROLセレクタの値を訂正してください。MQIA_TRIGGER_CONTROLセレクタについては，「3.　オブジェクトの属性」の「キューの属性」のTriggerControlの説明を参照してください。

2076

X'0000081C'

MQRC_TRIGGER_DEPTH_ERROR

MQSET命令の，MQIA_TRIGGER_DEPTHセレクタに指定された値が不正です。

対処

0より大きい値を指定してください。

2077

X'0000081D'

MQRC_TRIGGER_MSG_PRIORITY_ERR

MQSET命令の，MQIA_TRIGGER_MSG_PRIORITYセレクタに指定された値が不正です。

対処

0からMaxPriorityキューマネジャ属性の範囲で値を指定してください。

2078

X'0000081E'

MQRC_TRIGGER_TYPE_ERROR

MQSET命令の，MQIA_TRIGGER_TYPEセレクタに指定された値が不正です。

対処

MQIA_TRIGGER_TYPEセレクタの値を訂正してください。

2079

X'0000081F'

MQRC_TRUNCATED_MSG_ACCEPTED

MQGET命令で，メッセージ長が大き過ぎたため，用意されたバッファに格納されませんでした。MQGMO_ACCEPT_TRUNCATED_MSGが指定されたため命令は完了しました。メッセージは，トランザクションを考慮してキューから削除されます。または，これが検索操作の場合，検索カーソルがこのメッセージに進められます。DataLength引数が切り捨て前のメッセージの長さに設定され，Buffer引数に入るだけのメッセージが格納されます。MQMD構造体には必要な項目が設定されます。

対処

アプリケーションで設定された処理のため，対処する必要はありません。

2080

X'00000820'

MQRC_TRUNCATED_MSG_FAILED

MQGET命令で，メッセージ長が大き過ぎたため，用意されたバッファに格納されませんでした。MQGMO_ACCEPT_TRUNCATED_MSGが指定されなかったため，メッセージはキューから削除されません。これが検索操作の場合，検索カーソルはコール前にあった位置にあります。しかし，MQGMO_BROWSE_FIRSTが指定された場合，検索カーソルはキューの最も高い優先度のメッセージの前に論理的に位置づけられます。DataLengthフィールドが切り捨て前のメッセージの長さに設定され，Buffer引数に入るだけのメッセージが格納されます。MQMD構造体には必要な項目が設定されます。

対処

アプリケーションがメッセージの全体を必要とする場合，アプリケーションでDataLengthと同じ大きさのバッファを用意してからMQGET命令を再発行してください。

アプリケーションがメッセージデータの一部だけで処理できる場合，MQGMO_ACCEPT_TRUNCATED_MSGを指定したMQGET命令を発行し，BufferLengthに指定したサイズだけ取り出すように，アプリケーションの処理を見直してください。

2082

X'00000822'

MQRC_UNKNOWN_ALIAS_BASE_Q

MQOPEN命令またはMQPUT1命令が別名キューを対象として呼び出されました。しかし，別名キュー属性のBaseQNameがキューの名称として認識されません。

対処

キュー定義を訂正してください。

2085

X'00000825'

MQRC_UNKNOWN_OBJECT_NAME

MQOPENまたはMQPUT1命令が発行されましたが，オブジェクト記述子（MQOD）のObjectNameおよびObjectQMgrNameフィールドに指定されたオブジェクトが見つかりません。次のどちらかに該当します。

ObjectQMgrNameフィールドが次に示すどれかです。

・空白

・ローカルキューマネジャの名前

・RemoteQMgrNameフィールドに指定されたリモートキューのローカル定義（キューマネジャの別名）の名前がローカルキューマネジャの名前です。

しかし，指定されたObjectNameおよびObjectTypeのオブジェクトが，ローカルキューマネジャにありません。

オープンしようとしているオブジェクトがリモートキューマネジャにあるクラスタキューだが，ローカルキューマネジャにリモートキューマネジャへの定義済み経路がありません。

対処

正しいオブジェクト名を指定してください。また，必要に応じて名称の右側が空白で埋まっているか確認してください。正しければ，そのキュー定義を確認してください。クラスタ機能を使用している場合，mqrsup，mqrsppが起動しているかどうか確認してください。

2086

X'00000826'

MQRC_UNKNOWN_OBJECT_Q_MGR

MQOPEN命令またはMQPUT1命令で，オブジェクト記述子（MQOD）のObjectQMgrNameフィールドが不正です。キューマネジャの名称を含むオブジェクトの命名規則については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。この理由コードは，オブジェクト記述子のObjectTypeフィールドにMQOT_Q_MGRが指定され，ObjectQMgrNameフィールドが空白ではなく，また，指定された名称がローカルキューマネジャ名でない場合にも返されます。

対処

正しいキューマネジャ名を指定してください。ローカルキューマネジャを指定する場合は，すべて空白の名前またはヌル文字で始まる名前を使用できます。必要であれば，名称の右側が空白で埋まっているまたは，名称がヌル文字で終わっていることを確認してください。クラスタ機能を使用している場合，mqrsup，mqrsppが起動しているかどうか確認してください。

2087

X'00000827'

MQRC_UNKNOWN_REMOTE_Q_MGR

MQOPEN命令またはMQPUT1命令のキュー名の決定で，エラーが発生しました。原因を次に示します。

ObjectQMgrNameが空白またはローカルキューマネジャの名称です。また，ObjectNameが，空白のXmitQNameを持つリモートキューローカル定義の名称です。しかし，RemoteQMgrNameの名称で定義された転送キューはなく，DefXmitQNameキューマネジャ属性が空白です。

ObjectQMgrNameは，空白のXmitQNameを持つキューマネジャ別名定義の名称です。キューマネジャ別名定義は，リモートキューのローカル定義として保持されます。しかし，RemoteQMgrNameの名称で定義された転送キューはなく，DefXmitQNameキューマネジャ属性が空白です。

指定されたObjectQMgrNameが次に示す名称に当てはまりません。

−　空白

−　ローカルキューマネジャの名称

−　ローカルキューの名称

−　キューマネジャ別名定義の名称（RemoteQNameが空白のリモートキューローカル定義）

ただし，DefXmitQNameキューマネジャ属性は空白です。

ObjectQMgrNameが空白またはローカルキューマネジャの名称です。また，ObjectNameがリモートキューのローカル定義またはローカル定義の別名の名称です。ローカル定義または別名は，RemoteQMgrNameが空白またはローカルキューマネジャの名称です。このエラーはXmitQNameが空白でなくても発生する場合があるので注意が必要です。

ObjectQMgrNameがリモートキューのローカル定義の名称です。この場合，ローカル定義はキューマネジャ別名定義のはずですが，定義中のRemoteQNameが空白ではありません。

ObjectQMgrNameがモデルキューの名称です。

対処

ObjectQMgrNameおよびObjectNameに指定された値を確認してください。正しければ，キュー定義を確認してください。

2090

X'0000082A'

MQRC_WAIT_INTERVAL_ERROR

MQGET命令で，GetMsgOpts引数のWaitIntervalフィールドに指定された値が不正です。

対処

0以上の値を指定してください。無制限に待ち合わせる場合は，MQWI_UNLIMITEDを指定してください。

2091

X'0000082B'

MQRC_XMIT_Q_TYPE_ERROR

MQOPEN命令またはMQPUT1命令で，メッセージがリモートキューマネジャに送信されることになっています。オブジェクト記述子のObjectNameまたはObjectQMgrNameフィールドにリモートキューのローカル定義名が指定されていますが，定義のXmitQName属性が次のどちらかに当てはまります。

XmitQNameが空白でなくても，ローカルキューでないキューを指定します。

XmitQNameが空白であっても，RemoteQMgrNameにローカルキューでないキューを指定します。

対処

ObjectNameおよびObjectQMgrNameに指定された値を確認してください。正しい場合は，キュー定義を確認してください。名称解決については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

2092

X'0000082C'

MQRC_XMIT_Q_USAGE_ERROR

MQOPEN命令またはMQPUT1命令で，メッセージがリモートキューマネジャに送信されますが，次に示す事象のどちらかが発生しました。

ObjectQMgrNameはローカルキューの名称を指定しますが，キューはMQUS_TRANSMISSIONのUsage属性を持っていません。

オブジェクト記述子のObjectNameまたはObjectQMgrNameフィールドにリモートキューのローカル定義名が指定されています。しかし，定義のXmitQName属性に次のどちらかが当てはまります。

−　XmitQNameが空白でなくても，MQUS_TRANSMISSIONのUsage属性を持たないキューが指定されています。

−　XmitQNameが空白であっても，RemoteQMgrNameにMQUS_TRANSMISSIONのUsage属性を持たないキューが指定されています。

対処

ObjectNameおよびObjectQMgrNameに指定された値を確認してください。正しい場合は，キュー定義を確認してください。名称解決については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

2093

X'0000082D'

MQRC_NOT_OPEN_FOR_PASS_ALL

PutMsgOpts引数にMQPMO_PASS_ALL_CONTEXTを指定してMQPUT命令が呼び出されました。しかし，キューはMQOO_PASS_ALL_CONTEXTでオープンされていません。

対処

キューをオープンするときは，MQOO_PASS_ALL_CONTEXT，または，これに相当するオプションを指定してください。

2094

X'0000082E'

MQRC_NOT_OPEN_FOR_PASS_IDENT

PutMsgOpts引数にMQPMO_PASS_IDENTITY_CONTEXTを指定して，MQPUT命令が呼び出されました。しかし，キューはMQOO_PASS_IDENTITY_CONTEXTでオープンされていません。

対処

キューをオープンするときは，MQOO_PASS_IDENTITY_CONTEXT，または，これに相当するオプションを指定してください。

2095

X'0000082F'

MQRC_NOT_OPEN_FOR_SET_ALL

PutMsgOpts引数にMQPMO_SET_ALL_CONTEXTを指定してMQPUT命令が呼び出されました。しかし，キューはMQOO_SET_ALL_CONTEXTでオープンされていません。

対処

キューをオープンするときは，MQOO_SET_ALL_CONTEXTを指定してください。

2096

X'00000830'

MQRC_NOT_OPEN_FOR_SET_IDENT

PutMsgOpts引数にMQPMO_SET_IDENTITY_CONTEXTを指定してMQPUT命令が呼び出されました。しかし，キューはMQOO_SET_IDENTITY_CONTEXTでオープンされていません。

対処

キューをオープンするときは，MQOO_SET_IDENTITY_CONTEXT，または，これに相当するオプションを指定してください。

2097

X'00000831'

MQRC_CONTEXT_HANDLE_ERROR

MQPUT命令またはMQPUT1命令で，次に示すオプションが指定されました。

MQPMO_PASS_IDENTITY_CONTEXT

MQPMO_PASS_ALL_CONTEXT

しかし，PutMsgOpts引数のContextフィールドに指定されたハンドルが不正なキューハンドルです。または，正しいキューハンドルであっても，MQOO_SAVE_ALL_CONTEXTでオープンしたキューではありません。

対処

参照するキューをオープンするときには，MQOO_SAVE_ALL_CONTEXTを指定してください。

2098

X'00000832'

MQRC_CONTEXT_NOT_AVAILABLE

MQPUT命令またはMQPUT1命令で，次に示すオプションが指定されました。

MQPMO_PASS_IDENTITY_CONTEXT

MQPMO_PASS_ALL_CONTEXT

しかし，PutMsgOpts引数のContextフィールド領域に指定されたハンドルに，対応するコンテキストがありません。このエラーは次に示す場合に発生します。

参照されたキューハンドルで取り出しに成功したメッセージがありません。

最後に成功したMQGET命令がメッセージの検索です。

最後に取り出されたメッセージに対応するコンテキストがない場合は発生しません。

対処

参照されたキューハンドルで呼び出された，検索でない取り出しが成功しているか確認してください。

2099

X'00000833'

MQRC_SIGNAL1_ERROR

GetMsgOpts引数にMQGMO_SET_SIGNALを指定してMQGET命令が呼び出されましたが，Signal1フィールドが不正です。

対処

Signal1フィールドの設定を訂正してください。

2100

X'00000834

MQRC_OBJECT_ALREADY_EXISTS

動的キューの作成でMQOPEN命令が呼び出されましたが，作成しようとした動的キューと同じ名称のキューがすでに存在しています。

対処

動的キューの名称を確認してください。正しく設定されている場合，異なる名称にするか，必要でなければ存在しているキューを削除してください。または，キューマネジャが名称を作成できるようにしてください。キューマネジャがその名称の一部または全部を作成する場合，MQOPEN命令を再度呼び出してください。

2101

X'00000835'

MQRC_OBJECT_DAMAGED

命令でアクセスされたオブジェクトが破損して使用できなくなっています。原因を次に示します。

主記憶装置でオブジェクトの定義が矛盾しています。

主記憶装置の定義とディスクの定義が異なっています。

ディスク上の定義が読み出せません。

オブジェクトを削除できます。ただし，対応するユーザ空間を削除できない場合もあります。

対処

キューマネジャを停止して再開始する，またはバックアップ装置からキューマネジャデータを回復してください。

2102

X'00000836'

MQRC_RESOURCE_PROBLEM

命令が正常終了するために必要なシステム資源がありません。TP1/Message Queueでは，オンライン中に使用できるキューの最大数を物理ファイルごとに規定しています。MQOPEN命令で動的キュー生成時に使用できるキューの最大数を超えました。

対処

動的キューを作成するキューファイルがオンラインで使用できるかどうかを確認してください。キューファイルがオンラインで使用できる場合，未使用キューの個数を確認してください。

2103

X'00000837'

MQRC_ANOTHER_Q_MGR_CONNECTED

MQCONN命令が呼び出されましたが，スレッドまたはプロセスがすでに異なるキューマネジャに接続しています。スレッドまたはプロセスは，一度に一つのキューマネジャとだけしか接続できません。

対処

MQDISC命令を呼び出し，すでに接続しているキューマネジャからスレッドまたはプロセスを切り離してください。その後，MQCONN命令を再度呼び出して，新しいキューマネジャに接続してください。

現在のキューマネジャから切り離すと，現在オープンしているキューはすべてクローズされます。そのため，MQDISC命令を呼び出す前に，コミットしていないトランザクションをコミットまたはロールバックしてください。

2104

X'00000838'

MQRC_UNKNOWN_REPORT_OPTION

MQPUT命令またはMQPUT1命令が呼び出されましたが，メッセージ記述子（MQMD）のReportフィールドに，ローカルキューマネジャで認識されないオプションがあります。このオプションが受け付けられます。ローカルキューマネジャで識別されないオプションは，メッセージのあて先によって異なります。

対処

この理由コードが予期される場合，訂正する必要はありません。この理由コードが予期されない場合は，次に示す対処を実行してください。

1.　メッセージ記述子の宣言時に，メッセージ記述子のReportフィールドが初期化されているかどうかを確認してください。または，MQPUT命令またはMQPUT1命令を呼び出す前に，フィールドに値が割り当てられているかどうかを確認してください。

2.　指定された報告オプションが，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」で報告オプションに記載されているかどうかを確認してください。記載されていない報告オプションは削除してください。

3.　個々の報告オプションを一緒に加算して複数オプションが設定されている場合，同じ報告オプションが複数回加算されていないか確認してください。

4.　矛盾している報告オプションが指定されていないことを確認してください。例えば，MQRO_EXCEPTIONおよびMQRO_EXCEPTION_WITH_DATAの両方をReportフィールドに加算するとエラーになります。これらのうち一つだけが指定できます。

2105

X'00000839'

MQRC_STORAGE_CLASS_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2106

X'0000083A'

MQRC_COD_NOT_VALID_FOR_XCF_Q

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2107

X'0000083B'

MQRC_XWAIT_CANCELED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2108

X'0000083C'

MQRC_XWAIT_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2109

X'0000083D'

MQRC_SUPPRESSED_BY_EXIT

MQCONN命令またはMQDISC命令以外の呼び出しで，API間出口が呼び出しを取り消しました。

対処

出口が強制実行するMQI呼び出しの規則に従ってください。規則を調べるには，出口の作成者に問い合わせてください。

2110

X'0000083E'

MQRC_FORMAT_ERROR

GetMsgOpts引数にMQGMO_CONVERTを指定したMQGET命令が発行されましたが，メッセージ形式のエラーがあるためメッセージ変換が正常に実行されません。このエラーには次に示すものがあります。

メッセージのフォーマット名が，MQFMT_NONEです。

メッセージは変換されないでMQGET命令を呼び出すアプリケーションに返されます。MsgDesc引数のCodedCharSetIdフィールドおよびEncodingフィールドの値はオブジェクト記述子の各フィールドに設定されます。また，命令はMQCC_WARNINGで完了します。

対処

メッセージの登録時に指定されたフォーマット名を確認してください。

2111

X'0000083F'

MQRC_SOURCE_CCSID_ERROR

メッセージデータの変換元のコード化文字セット識別子が不正です。またはサポートされていません。この理由コードは，GetMsgOpts引数にMQGMO_CONVERTが指定されたMQGET命令で返されることがあります。エラーとなるコード化文字セット識別子は，取り出されたメッセージのCodedCharSetIdフィールドです。メッセージデータは変換されないで返されます。MsgDesc引数のCodedCharSetIdフィールドおよびEncodingフィールドの値はオブジェクト記述子の各フィールドに設定されます。命令はMQCC_WARNINGで完了します。

対処

メッセージの登録時に指定されたコード化文字セット識別子を確認してください。正しい場合は，キューマネジャ変換がサポートされているか確認してください。サポートされていない場合，変換はアプリケーションで実行してください。コード変換対象となっている文字セット識別子については，「付録G　コード変換対象の文字セット識別子一覧」を参照してください。

2112

X'00000840'

MQRC_SOURCE_INTEGER_ENC_ERROR

GetMsgOpts引数にMQGMO_CONVERTを指定したMQGET命令で取り出されたメッセージのEncodingフィールドに，認識されない2進整数のマシンコード形式を指定しています。

メッセージデータは変換されないで返されます。また，MsgDesc引数の

CodedCharSetIdフィールドおよびEncodingフィールドの値はオブジェクト記述子の各フィールドに設定されます。命令はMQCC_WARNINGで完了します。

対処

メッセージの登録時に指定された，2進整数のマシンコード形式を確認してください。正しい場合は，キューマネジャ変換がサポートされているか確認してください。サポートされていない場合，変換はアプリケーションで実行してください。

2113

X'00000841'

MQRC_SOURCE_DECIMAL_ENC_ERROR

GetMsgOpts引数にMQGMO_CONVERTを指定したMQGET命令で，取り出されたメッセージのEncodingフィールドが，認識されない10パック形式整数のマシンコード形式を指定しています。

メッセージデータは変換されないで返されます。また，MsgDesc引数の

CodedCharSetIdフィールドおよびEncodingフィールドの値は，オブジェクト記述子の各フィールドに設定されます。命令はMQCC_WARNINGで完了します。

対処

メッセージの登録時に指定された，10進パック形式整数のマシンコード形式を確認してください。正しい場合は，キューマネジャ変換がサポートされているか確認してください。サポートされていない場合，変換はアプリケーションで実行してください。

2114

X'00000842'

MQRC_SOURCE_FLOAT_ENC_ERROR

GetMsgOpts引数にMQGMO_CONVERTを指定したMQGET命令で，取り出したメッセージのEncodingフィールドに，認識されない浮動小数点のマシンコード形式を指定しています。

メッセージデータは変換されないで返されます。また，MsgDesc引数の

CodedCharSetIdフィールドおよびEncodingフィールドの値はオブジェクト記述子の各フィールドに設定されます。命令はMQCC_WARNINGで完了します。

対処

メッセージの登録時に指定された，浮動小数点のマシンコード形式を確認してください。正しい場合は，キューマネジャ変換がサポートされているか確認してください。サポートされていない場合，変換はアプリケーションで実行してください。

2115

X'00000843'

MQRC_TARGET_CCSID_ERROR

メッセージデータの変換後のコード化文字セット識別子が不正です。またはサポートされていません。この理由コードは，GetMsgOpts引数にMQGMO_CONVERTが指定されたMQGET命令で返されることがあります。エラーとなるコード化文字セット識別子は，MsgDesc引数のCodedCharSetIdフィールドです。メッセージデータは変換されないで返されます。MsgDesc引数のCodedCharSetIdフィールドおよびEncodingフィールドの値は，オブジェクト記述子の各フィールドに設定されます。命令はMQCC_WARNINGで完了します。

対処

MQGET命令のMsgDesc引数のCodedCharSetIdフィールドに指定されたコード化文字セット識別子を確認してください。正しい場合は，キューマネジャ変換がサポートされているか確認してください。サポートされていない場合，変換はアプリケーションで実行してください。コード変換対象となっている文字セット識別子については，「付録G　コード変換対象の文字セット識別子一覧」を参照してください。

2116

X'00000844'

MQRC_TARGET_INTEGER_ENC_ERROR

GetMsgOpts引数にMQGMO_CONVERTを指定したMQGET命令で，MsgDesc引数のEncodingフィールドに，認識されない2進整数のマシンコード形式を指定しています。

メッセージデータは変換されないで返されます。また，MsgDesc引数のCodedCharSetIdフィールドおよびEncodingフィールドの値はオブジェクト記述子の各フィールドに設定されます。命令はMQCC_WARNINGで完了します。

対処

指定された2進整数のマシンコード形式を確認してください。正しい場合は，キューマネジャ変換がサポートされているか確認してください。サポートされていない場合，変換はアプリケーションで実行してください。

2117

X'00000845'

MQRC_TARGET_DECIMAL_ENC_ERROR

GetMsgOpts引数にMQGMO_CONVERTを指定したMQGET命令で，MsgDesc引数のEncodingフィールドに，認識されない10進パック形式整数のマシンコード形式を指定しています。

メッセージデータは変換されないで返されます。また，MsgDesc引数の

CodedCharSetIdフィールドおよびEncodingフィールドの値はオブジェクト記述子の各フィールドに設定されます。命令はMQCC_WARNINGで完了します。

対処

指定された10進パック形式整数のマシンコード形式を確認してください。正しい場合は，キューマネジャ変換がサポートされているか確認してください。サポートされていない場合，変換はアプリケーションで実行してください。

2118

X'00000846'

MQRC_TARGET_FLOAT_ENC_ERROR

GetMsgOpts引数にMQGMO_CONVERTを指定したMQGET命令で，MsgDesc引数のEncodingフィールドに，認識されない浮動小数点のマシンコード形式を指定しています。

メッセージデータは変換されないで返されます。また，MsgDesc引数の

CodedCharSetIdフィールドおよびEncodingフィールドの値はオブジェクト記述子の各フィールドに設定されます。命令はMQCC_WARNINGで完了します。

対処

指定された浮動小数点のマシンコード形式を確認してください。正しい場合は，キューマネジャ変換がサポートされているか確認してください。サポートされていない場合，変換はアプリケーションで実行してください。

2119

X'00000847'

MQRC_NOT_CONVERTED

GetMsgOpts引数にMQGMO_CONVERTを指定したMQGET命令で，メッセージデータの変換中にエラーが発生しました。メッセージデータは変換されないで返却され，MsgDesc引数のCodedCharSetIdフィールドおよびEncodingフィールドには，未変換のまま返却されるメッセージの値が設定されます。このとき，命令はMQCC_WARNINGで完了します。また，データ変換未サポートの値をパラメタに指定した場合にも，この理由コードが返却されることがあります。

対処

メッセージの登録時に指定したFormat，CodedCharSetId，およびEncodingの引数で，メッセージデータが正しく記述されているか確認してください。また，これらの値とMQGET命令のMsgDesc引数に指定されたCodedCharSetIdおよびEncodingフィールドが，キューマネジャ変換でサポートされているか確認してください。指定した変換がサポートされていない場合，アプリケーションで実行してください。コード変換対象となっている文字セット識別子については，「付録G　コード変換対象の文字セット識別子一覧」を参照してください。

2120

X'00000848'

MQRC_CONVERTED_MSG_TOO_BIG

GetMsgOpts引数にMQGMO_CONVERTオプションを指定したMQGET命令で，メッセージデータがデータ変換の間に拡大されました。そのため，アプリケーションが用意したバッファサイズを超えました。しかし，メッセージデータは変換前に切り捨てをしないで，アプリケーションに格納できました。そのため，メッセージはキューからすでに取り出されています。データが消失されないために，MQGET命令のCompCode引数にMQCC_WARNINGを設定し，メッセージを変換しないで返します。

対処

MQGET命令を呼び出すアプリケーションのBuffer引数に，さらに大きいバッファを用意してください。

2121

X'00000849'

MQRC_NO_EXTERNAL_PARTICIPANTS

キューマネジャが調整したトランザクションを開始するためのMQBEGIN命令が呼び出されましたが，参加するリソースマネジャがキューマネジャに登録されていません。その結果，MQリソースへの変更だけがキューマネジャによってトランザクション内で調整されます。

対処

アプリケーションがトランザクションに参加するためにMQリソース以外のリソースを必要としない場合，この理由コードは無視できるか，MQBEGIN命令の呼び出しが削除されることがあります。それ以外の場合には，プログラマに問い合わせて，必要なリソースマネジャがキューマネジャに登録されなかった原因を調査してください。キューマネジャの構成ファイルにエラーがある可能性があります。

2122

X'0000084A'

MQRC_PARTICIPANT_NOT_AVAILABLE

キューマネジャが調整したトランザクションを開始するためのMQBEGIN命令が呼び出されましたが，キューマネジャに登録済みの，参加するリソースマネジャが利用できません。その結果，リソースへの変更は，キューマネジャによってトランザクション内で調整されません。

対処

アプリケーションがトランザクションに参加するためにMQリソース以外のリソースを必要としない場合，この理由コードは無視できます。それ以外の場合には，プログラマに問い合わせて，必要なリソースマネジャが利用できない原因を調査してください。リソースマネジャは一時的に停止していたことがあるか，キューマネジャの構成ファイルにエラーがある可能性があります。

2123

X'0000084B'

MQRC_OUTCOME_MIXED

キューマネジャが，ほかのリソースマネジャを扱うトランザクションに対してトランザクションコーディネータとして動作していますが，次のどちらかが発生しました。

トランザクションをコミットするためにMQCMIT命令またはMQDISC命令が呼び出されましたが，参加している一つ以上のリソースマネジャがトランザクションをコミットしないでロールバックしました。その結果，トランザクションの結果が混在しています。

トランザクションをロールバックするためにMQBACK命令が呼び出されましたが，参加している一つ以上のリソースマネジャがそのトランザクションをすでにコミットしています。

対処

キューマネジャのエラーログで結果の混在に関連するメッセージを調べてください。そのメッセージによって影響があったリソースマネジャを特定できます。影響があったリソースマネジャにある手順を使用してリソースを再同期させてください。

この理由コードによってアプリケーションがそれ以降のトランザクションの開始を妨げられることはありません。

2124

X'0000084C'

MQRC_OUTCOME_PENDING

ほかのリソースマネジャを扱うトランザクションに対して，キューマネジャがトランザクションコーディネータとして動作していて，トランザクションをコミットするためにMQCMIT命令またはMQDISC命令が呼び出されましたが，参加している一つ以上のリソースマネジャでトランザクションが正常にコミットされたかどうかが確認されていません。

コミット操作はこのあとのどこかの時点で完了しますが，結果が混在する可能性が残っています。

対処

通常のエラー報告機能を使用して，結果が混在しているかどうかを判断してください。混在している場合には，適切な処置をとってリソースを再同期させてください。

この理由コードによってアプリケーションがそれ以降のトランザクションの開始を妨げられることはありません。

2125

X'0000084D'

MQRC_BRIDGE_STARTED

IMSブリッジが開始しました。

対処

ありません。この理由コードは，対応するイベントメッセージを識別するためにだけ使用されます。

2126

X'0000084E'

MQRC_BRIDGE_STOPPED

IMSブリッジが停止しました。

対処

ありません。この理由コードは，対応するイベントメッセージを識別するためにだけ使用されます。

2127

X'0000084F'

MQRC_ADAPTER_STORAGE_SHORTAGE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2128

X'00000850'

MQRC_UOW_IN_PROGRESS

キューマネジャが調整したトランザクションを開始するためにMQBEGIN命令が呼び出されましたが，指定されたコネクションハンドルにすでにトランザクションがあります。このトランザクションは，前のMQBEGIN命令の呼び出しによって開始されたグローバルトランザクションであるか，キューマネジャまたは関連するリソースマネジャのローカルなトランザクションの可能性があります。1コネクションハンドルに同時に二つ以上のトランザクションはできません。

対処

アプリケーションロジックを検討して，既存のトランザクションがある原因を調査してください。MQBEGIN命令をアプリケーションの適切な場所に移動してください。

2129

X'00000851'

MQRC_ADAPTER_CONN_LOAD_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2130

X'00000852'

MQRC_ADAPTER_SERV_LOAD_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2131

X'00000853'

MQRC_ADAPTER_DEFS_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2132

X'00000854'

MQRC_ADAPTER_DEFS_LOAD_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2133

X'00000855'

MQRC_ADAPTER_CONV_LOAD_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2134

X'00000856'

MQRC_BO_ERROR

MQBEGIN命令の呼び出しで，BeginOptions引数のMQBO構造体が次のどれかの理由で無効です。

StrucIdニーモニックアイキャッチャがMQBO_STRUC_IDではありません。

VersionフィールドがMQBO_VERSION_1ではありません。

引数ポインタが無効です。ただし，無効な引数ポインタを必ず検出できるとは限りません。検出できなかった場合には，予期しない結果が発生しています。

キューマネジャは，呼び出しが正常に終了しても，変更された構造体をアプリケーション記憶域へコピーできません。これは，例えば，ポインタが読み取り専用記憶域を指している場合などに起こります。

対処

MQBO構造体の定義を訂正します。必要な入力フィールドが正しく設定されていることを確認してください。

2135

X'00000857'

MQRC_DH_ERROR

MQPUTまたはMQPUT1命令が発行されましたが，メッセージデータに無効なMQDH構造体があります。次のエラーなどがあります。

StrucIdフィールドがMQDH_STRUC_IDではありません。

VersionフィールドがMQDH_VERSION_1ではありません。

StrucLengthフィールドに指定されている値が小さ過ぎて，構造体，およびMQORとMQPMRレコードの配列を格納できません。

CodedCharSetIdフィールドに，0または無効な負の値が指定されています。

命令のBufferLength引数の値が小さ過ぎて，構造体を格納できません（構造体がメッセージの末尾を超えて拡張されています）。

対処

MQDH構造体のフィールドが正しく設定されているか確認してください。また，アプリケーションでCodedCharSetIdフィールドに有効な値が設定されているか確認してください。MQCCSI_DEFAULT，MQCCSI_EMBEDDED，MQCCSI_Q_MGRおよびMQCCSI_UNDEFINEDは，このフィールドに無効です。

2136

X'00000858'

MQRC_MULTIPLE_REASONS

配布リストをオープンしたり，配布リストにメッセージを登録したりするためにMQOPEN命令，MQPUT命令，またはMQPUT1命令が発行されました。その命令の結果が，リスト内のすべてのあて先について同じではありませんでした。要因として，次の場合が考えられます。

一部のあて先については命令が成功したが，そのほかのあて先については失敗した場合

この場合，完了コードはMQCC_WARNINGとなります。

すべてのあて先について命令が失敗したが，失敗の理由はそれぞれ異なる場合

この場合，完了コードはMQCC_FAILEDです。

対処

MQRR構造体の応答レコードを調べて，命令が失敗したあて先と失敗の理由を判定してください。また，アプリケーションが命令に関するエラーを判定するために十分な応答レコードを提供しているかどうかを確認してください。MQPUT1命令の場合，MQPMO構造体でなく，MQOD構造体を使用して応答レコードを指定しなければなりません。

2137

X'00000859'

MQRC_OPEN_FAILED

メッセージを配布リストに登録するためのMQPUT命令が発行されましたが，そのあて先がMQOPEN命令によって正常にオープンできなかったために，この理由コードが適用されるあて先にメッセージを送信できませんでした。この理由コードは，MQRR構造体の応答レコードのReasonフィールドだけに返されます。

対処

MQOPEN命令に指定されたMQRR構造体の応答コードを調べて，キューのオープンに失敗した理由を判定してください。また，アプリケーションがその命令に関するエラーを判定するために十分な応答レコードを提供しているかどうかを確認してください。

2138

X'0000085A'

MQRC_ADAPTER_DISC_LOAD_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2139

X'0000085B'

MQRC_CNO_ERROR

MQCONN命令の呼び出しで，ConnectOpts引数のMQCNO構造体が次のどれかの理由で無効です。

StrucIdニーモニックアイキャッチャがMQCNO_STRUC_IDではありません。

Versionフィールドに無効な値，またはサポートされていない値が指定されています。

引数ポインタが無効です。無効な引数ポインタを必ず検出できるとは限りません。検出できなかった場合には，予期しない結果が発生しています。

キューマネジャは呼び出しが正常に終了しても，変更された構造体をアプリケーション記憶域へコピーできません。これは，例えば，ポインタが読み取り専用記憶域を指している場合などに起こります。

対処

MQCNO構造体の定義を訂正します。必要な入力フィールドが正しく設定されていることを確認してください。

2140

X'0000085C'

MQRC_CICS_WAIT_FAILED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2141

X'0000085D'

MQRC_DLH_ERROR

MQPUTまたはMQPUT1命令が発行されましたが，メッセージデータに無効なMQDLH構造体があります。次のエラーなどがあります。

StrucIdフィールドがMQDLH_STRUC_IDではありません。

VersionフィールドがMQDLH_VERSION_1ではありません。

CodedCharSetIdフィールドに，0または無効な負の値が指定されています。

命令のBufferLength引数の値が小さ過ぎて，構造体を格納できません（構造体がメッセージの末尾を超えて拡張されています）。

対処

MQDLH構造体のフィールドが適切に設定されているか確認してください。また，アプリケーションでCodedCharSetIdフィールドに有効な値が設定されているか確認してください。MQCCSI_DEFAULT，MQCCSI_EMBEDDED，MQCCSI_Q_MGRおよびMQCCSI_UNDEFINEDは，このフィールドに無効です。

2142

X'0000085E'

MQRC_HEADER_ERROR

MQPUTまたはMQPUT1命令が発行されましたが，メッセージデータに無効なMQヘッダ構造体があります。次のエラーなどがあります。

StrucIdフィールドが無効です。

Versionフィールドが無効です。

StrucLengthフィールドに指定されている値が小さ過ぎます。

CodedCharSetIdフィールドに，0または無効な負の値が指定されています。

命令のBufferLength引数の値が小さ過ぎて，構造体を格納できません（構造体がメッセージの末尾を超えて拡張されています）。

対処

MQヘッダ構造体の定義を修正してください。また，フィールドが正しく設定されていることを確認してください。

2143

X'0000085F'

MQRC_SOURCE_LENGTH_ERROR

MQXCNVC命令のSourceLength引数に，負の長さが指定されています。この理由コードはSourceLength引数のポインタが不正な場合にも返されます。不正なSourceLength引数のポインタを検出できないことがあります。検出されないときの動作は保証しません。

対処

0以上の長さを指定してください。

2144

X'00000860'

MQRC_TARGET_LENGTH_ERROR

MQXCNVC命令のTargetLength引数に，負の長さが指定されています。この理由コードはTargetLength引数のポインタが不正な場合にも返されることがあります。不正なTargetLength引数のポインタを検出できないこと場合があります。検出されないときの動作は保証しません。

対処

0以上の長さを指定してください。

2145

X'00000861'

MQRC_SOURCE_BUFFER_ERROR

MQXCNVC命令のSourceBuffer引数のポインタが不正です。または，SourceLength引数で指定された値より短い領域を指しています。不正なポインタを検出できない場合があります。検出されない場合の動作は保証しません。

対処

SourceBuffer引数の指定を訂正してください。

2146

X'00000862'

MQRC_TARGET_BUFFER_ERROR

MQXCNVC命令のTargetBuffer引数のポインタが不正です。または，ポインタが読み出し専用領域，またはTargetLength引数で指定された値より短い領域を指しています。不正なポインタを検出できない場合があります。検出されない場合の動作は保証しません。

対処

引数を訂正してください。

2148

X'00000864'

MQRC_IIH_ERROR

MQPUTまたはMQPUT1命令が発行されましたが，メッセージデータに無効なMQIIH構造体があります。次のエラーなどがあります。

StrucIdフィールドがMQIIH_STRUC_IDではありません。

VersionフィールドがMQIIH_VERSION_1ではありません。

StrucLengthフィールドがMQIIH_LENGTH_1ではありません。

命令のBufferLength引数の値が小さ過ぎて，構造体を格納できません（構造体がメッセージの末尾を超えて拡張されています）。

対処

MQIIH構造体の定義を訂正します。フィールドが正しく設定されていることを確認してください。

2149

X'00000865'

MQRC_PCF_ERROR

PCFデータを含むメッセージを登録するためのMQPUT命令またはMQPUT1命令が発行されましたが，メッセージの長さが，メッセージ内のPCF構造体の長さの合計に一致していません。この理由コードは，次の名称のメッセージで返される場合があります。

MQFMT_ADMIN

MQFMT_EVENT

MQFMT_PCF

対処

MQPUT命令またはMQPUT1命令に指定されたメッセージの長さがメッセージデータ内に含まれているPCF構造体の長さの合計に等しいことを確認してください。

2150

X'00000866'

MQRC_DBCS_ERROR

2バイト文字セット（DBCS）列に変換するときにエラーが発生しました。これは次の場合に発生します。

MQXCNVC命令で，SourceCCSIDパラメタに2バイト文字セット（DBCS）のコード化文字セット識別子が指定されました。しかし，SourceBuffer引数に有効なDBCS列がありません。原因は次に示すどちらかです。

文字列に不正なDBCS文字があります。

文字列がSBCSとDBCS文字列の混合で，シフトアウトとシフトインの制御文字が正しく組み合わされていません。この場合，完了コードはMQCC_FAILEDです。

対処

正しい文字列を指定してください。

2152

X'00000868'

MQRC_OBJECT_NAME_ERROR

MQOD構造体のRecsPresentフィールドが0より大きい状態で，配布リストをオープンするためのMQOPEN命令またはMQPUT1命令が発行されたとき，ObjectNameフィールドが空白でもヌル文字列でもありません。

対処

配布リストをオープンするには，ObjectNameフィールドを空白またはヌル文字列に設定します。配布リストをオープンしない場合は，RecsPresentフィールドを0に設定してください。

2153

X'00000869'

MQRC_OBJECT_Q_MGR_NAME_ERROR

MQOD構造体のRecsPresentフィールドが0より大きい状態で，配布リストをオープンするためのMQOPEN命令またはMQPUT1命令が発行されたとき，ObjectQMgrNameフィールドが空白でもヌル文字列でもありません。

対処

配布リストをオープンする場合は，ObjectQMgrNameフィールドを空白，またはヌル文字列に設定してください。配布リストをオープンしない場合は，RecsPresentフィールドを0に設定してください。

2154

X'0000086A'

MQRC_RECS_PRESENT_ERROR

MQOPEN命令またはMQPUT1命令が，次のどちらかの理由で失敗しました。

MQOD構造体のRecsPresentフィールドが0より小さくなっています。

MQOD構造体のObjectTypeフィールドがMQOT_Qでなく，RecsPresentフィールドが0ではありません。オープン対象のオブジェクトがキューでない場合は，RecsPresentフィールドは0でなければなりません。

対処

配布リストをオープンする場合は，ObjectTypeフィールドにMQOT_Qを設定してください。また，RecsPresentフィールドを，リスト内のあて先の数に設定してください。配布リストをオープンしない場合は，RecsPresentフィールドを0に設定してください。

2155

X'0000086B'

MQRC_OBJECT_RECORDS_ERROR

MQOD構造体のRecsPresentフィールドが0より大きい状態で，配布リストをオープンするためのMQOPEN命令またはMQPUT1命令が発行されたとき，MQOR構造体レコードが正しく指定されていません。次の理由が考えられます。

ObjectRecOffsetフィールドが0で，ObjectRecPtrフィールドがヌルポインタまたは0です。

ObjectRecOffsetフィールドが0以外の数値で，ObjectRecPtrフィールドがヌルポインタでも0でもありません。

ObjectRecPtrフィールドが有効なポインタではありません。

ObjectRecPtrフィールドまたはObjectRecOffsetフィールドが，アクセス不能な記憶領域を指しています。

対処

ObjectRecOffsetフィールドとObjectRecPtrフィールドのどちらか一方が0で，もう一方が0以外の数値になっていることを確認してください。また，使用するフィールドがアクセス可能な記憶領域を指していることも確認してください。

2156

X'0000086C'

MQRC_RESPONSE_RECORDS_ERROR

配布リストをオープンするための，つまり，MQOD構造体のRecsPresentフィールドが0より大きいMQOPEN命令またはMQPUT1命令が発行されましたが，MQRR構造体の応答レコードが正しく指定されていません。次のどれかの場合が該当します。

ResponseRecOffsetフィールドが0でなく，ResponseRecPtrフィールドがヌルポインタでも0でもない場合

ResponseRecPtrフィールドが有効なポインタでない場合

ResponseRecPtrフィールドまたはResponseRecOffsetフィールドが，アクセス不能な記憶領域を指している場合

対処

ResponseRecOffsetフィールドおよびResponseRecPtrフィールドのうち，少なくともどちらか一つが0であることを確認してください。また，使用するフィールドがアクセス可能な記憶領域を指していることを確認してください。

2157

X'0000086D'

MQRC_ASID_MISMATCH

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2158

X'0000086E'

MQRC_PMO_RECORD_FLAGS_ERROR

メッセージを登録するためのMQPUT命令またはMQPUT1命令が発行されましたが，MQPMO構造体のPutMsgRecFieldsフィールドが，次のどれかの理由で無効になっています。

フィールドに無効なフラグが含まれています。

メッセージが配布リストに登録されている最中で，登録メッセージレコードが提供された，つまり，RecsPresentフィールドが0より大きく，PutMsgRecOffsetフィールド，またはPutMsgRecPtrフィールドのどちらか一つが0以外であるが，PutMsgRecFieldsフィールドの値がMQPMRF_NONEになっています。

MQPMRF_ACCOUNTING_TOKENが指定されているが，MQPMO_SET_IDENTITY_CONTEXTも，MQPMO_SET_ALL_CONTEXTも指定されていません。

対処

登録メッセージレコード内にどんなフィールドがあるのか示すための適切なMQPMRF_*フラグを使用して，PutMsgRecFieldsフィールドが設定されていることを確認してください。

MQPMRF_ACCOUNTING_TOKENが指定されている場合は，同時にMQPMO_SET_IDENTITY_CONTEXTまたはMQPMO_SET_ALL_CONTEXTのどちらか一つが指定されていることを確認してください。MQPMRF_ACCOUNTING_TOKENが指定されていない場合は，PutMsgRecOffsetフィールドおよびPutMsgRecPtrフィールドの両方を0に設定してください。

2159

X'0000086F'

MQRC_PUT_MSG_RECORDS_ERROR

メッセージを配布リストに登録するためのMQPUT命令またはMQPUT1命令が発行されましたが，MQPMR構造体のメッセージレコードが正しく指定されていません。次のどれかの場合が該当します。

PutMsgRecOffsetフィールドが0以外の値であり，PutMsgRecPtrフィールドがヌルポインタでも0でもない場合

PutMsgRecPtrフィールドが有効なポインタではない場合

PutMsgRecPtrフィールドまたはPutMsgRecOffsetフィールドが，アクセス不能な記憶域を指している場合

対処

PutMsgRecOffsetフィールドおよびPutMsgRecPtrフィールドのうち，少なくともどちら一つが0であることを確認してください。また，使用するフィールドがアクセス可能な記憶域を指していることを確認してください。

2160

X'00000870'

MQRC_CONN_ID_IN_USE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2161

X'00000871'

MQRC_Q_MGR_QUIESCING

MQI命令が発行されましたが，キューマネジャが休止している（終了の準備をしている）ため，命令が失敗しました。

キューマネジャが停止しているとき，MQOPEN，MQPUT，MQPUT1およびMQGET命令は引き続き正常に実行できます。ただし，アプリケーションは，命令に次の適切なオプションを指定することによって，命令が失敗するよう指定できます。

MQOPEN命令のMQOO_FAIL_IF_QUIESCING

MQPUTまたはMQPUT1命令のMQPMO_FAIL_IF_QUIESCING

MQGET命令のMQGMO_FAIL_IF_QUIESCING

対処

アプリケーションの後処理をして停止します。失敗した命令で，MQOO_FAIL_IF_QUIESCING，MQPMO_FAIL_IF_QUIESCINGまたはMQGMO_FAIL_IF_QUIESCINGオプションを指定した場合は，これらのオプションを削除して，命令を再発行します。これらのオプションを省略することによって，アプリケーションは現在のトランザクションを完了しコミットするために動作し続けます。しかし，別のトランザクションは開始できません。

2162

X'00000872'

MQRC_Q_MGR_STOPPING

MQI命令が発行されましたが，アプリケーションまたはOpenTP1が終了中のため，命令は失敗しました。

アプリケーションまたはOpenTP1の終了処理中に，命令が呼び出されました。MQGMO_WAITを指定したMQGET命令の場合，待ち合わせは取り消されます。メッセージキューイングするMQI命令は呼び出せません。

対処

アプリケーションの後処理をして停止します。アプリケーションが，外部コーディネータによるトランザクションの途中である場合は，アプリケーションで命令を発行してトランザクションをロールバックします。

2163

X'00000873'

MQRC_DUPLICATE_RECOV_COORD

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2173

X'0000087D'

MQRC_PMO_ERROR

MQPUT命令またはMQPUT1命令のMQPMO構造体が次のどれかの理由で不正です。

StrucIdフィールドがMQPMO_STRUC_IDではありません。

Versionフィールドに無効な値，またはサポートされていない値が指定されています。

ポインタ引数が不正です。不正なポインタ引数を検出できないことがあります。検出されないときの動作は保証しません。

命令は成功しましたが，変更された構造体がアプリケーションの記憶領域にコピーされません。これは，ポインタ引数が読み出し専用領域を指している場合にも発生することがあります。

対処

MQPMO構造体の定義を訂正してください。要求された入力フィールドが正しく設定されているか確認してください。

2182

X'00000886'

MQRC_API_EXIT_NOT_FOUND

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2183

X'00000887'

MQRC_API_EXIT_LOAD_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2184

X'00000888'

MQRC_REMOTE_Q_NAME_ERROR

MQOPEN命令またはMQPUT1命令で，次に示すどちらかのエラーが発生しました。

リモートキューのローカル定義または定義の別名が指定されましたが，リモートキュー定義のRemoteQName属性が空白です。なお，このエラーは定義のXmitQNameが空白でない場合にも発生します。

オブジェクト記述子のObjectQMgrNameフィールドが空白，およびローカルキューマネジャ名ではありません。また，ObjectNameフィールドが空白です。

対処

リモートキューのローカル定義を変更して，正しいリモートキュー名を指定してください。または，オブジェクト記述子のObjectNameフィールドに空白でないオブジェクト名を指定してください。

2185

X'00000889'

MQRC_INCONSISTENT_PERSISTENCE

MQPUT命令が発行され，グループのメッセージまたは論理メッセージのセグメントが登録されました。しかし，MQMD構造体のPersistenceフィールドの指定値またはデフォルト値が，キューハンドルに対してキューマネジャが保持する，現在のグループとセグメント情報と矛盾します。グループ内の全メッセージおよび論理メッセージの全セグメントの永続性は同じ値を持つ必要があります。つまり，すべて永続またはすべて非永続である必要があります。

現在の命令がMQPMO_LOGICAL_ORDERを指定する場合，命令は失敗します。現在の命令はMQPMO_LOGICAL_ORDERを指定しないが，直前のMQPUT命令がキューハンドルに指定した場合は，命令は完了コードMQCC_WARNINGで成功します。

対処

グループ内のすべてのメッセージまたは論理メッセージのすべてのセグメントで，永続性について同じ値が使用されるよう，アプリケーションを変更してください。

2186

X'0000088A'

MQRC_GMO_ERROR

MQGET命令の，MQGMO構造体が次のどれかの理由で不正です。

StrucIdフィールドがMQGMO_STRUC_IDではありません。

Versionフィールドに無効な値またはサポートされていない値が指定されています。

ポインタ引数が不正です。ただし，不正なポインタ引数を検出できないことがあります。検出されないときの動作は保証しません。

キューマネジャが変更した構造体をアプリケーション領域にコピーできません。命令が成功してもエラーになります。ポインタ引数が読み出し専用領域を指しているときも，このエラーが発生することがあります。

対処

MQGMO構造体の定義を訂正してください。必要な入力フィールドが正しく設定されているか確認してください。

2187

X'0000088B'

MQRC_CICS_BRIDGE_RESTRICTION

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2188

X'0000088C'

MQRC_STOPPED_BY_CLUSTER_EXIT

オープンまたはメッセージ登録のためにクラスタキューにMQOPEN，MQPUTまたはMQPUT1命令が発行されましたが，クラスタワークロード出口が命令を拒否しました。

対処

クラスタワークロード出口が正しく記述されているか確認してください。クラスタワークロード出口が命令を拒否した理由を調査し，問題を対策してください。

2189

X'0000088D'

MQRC_CLUSTER_RESOLUTION_ERROR

MQOPEN命令，MQPUT命令，またはMQPUT1命令が，クラスタキューへのオープンまたはメッセージ登録のために発行されましたが，リポジトリマネジャからの応答がないため，キュー定義を正しく解決できません。

リポジトリマネジャから応答がない原因として，TP1/MQとフルリポジトリマネジャ間のチャネル障害やリポジトリマネジャの処理遅延が考えられます。

対処

MQRC_CLUSTER_RESOLUTION_ERRORを返却したMQI命令を再発行してください。再発行で解決しない場合は，次に示す対処をしてください。

・リポジトリマネジャが動作していることをチェックしてください。

・キューおよびチャネル定義が正しいことをチェックしてください。

・クラスタ内に登録できるキューおよび使用できるチャネルの組み合わせがあることをチェックしてください（キューやチャネルが削除された場合に，このエラーが発生するおそれがあります）。

問題を解決したあと，アプリケーションを再実行してください。

2190

X'0000088E'

MQRC_CONVERTED_STRING_TOO_BIG

GetMsgOpts引数にMQGMO_CONVERTオプションが指定されているMQGET命令で，メッセージ内の固定長フィールドの文字列がデータ変換時に拡張しフィールド長を超えました。この場合，キューマネジャは，末尾の空白文字および最初のヌル文字に続く文字を廃棄して，文字列をフィールド長に合わせます。しかし，この場合は廃棄するだけの文字がありませんでした。

この理由コードは，フォーマット名がMQFMT_IMS_VAR_STRINGのメッセージの場合も発生することがあります。この場合は，IMS可変文字列が拡張し，その長さがIMS可変文字列の構造体内で2バイトバイナリ長フィールドのサイズを超えてしまいます（キューマネジャはIMS可変文字列内の末尾の空白を廃棄しません）。

MQGET命令のCompCode引数がMQCC_WARNINGに設定され，メッセージは変換されずに返されます。メッセージが幾つかの部分から構成されていて，各部分が独自の文字セットとマシンコードで記述されている場合（例えば，フォーマット名がMQFMT_DEAD_LETTER_HEADERのメッセージ），変換される部分と変換されない部分が発生することがあります。しかし，文字セットとマシンコード形式のフィールドで返される値は，関連するメッセージデータを常に正確に表します。

この理由コードは，末尾の空白文字を廃棄することによって文字列をフィールドに合わせられる場合は発生しません。

対処

メッセージ内のフィールドに正しい値が含まれていること，メッセージの送信側と受信側が指定した文字セット識別子が正しいことを確認してください。正しい場合はメッセージのデータレイアウトを変更し，変換時に文字列が拡張しても十分な余裕があるようにフィールド長を増やします。

2191

X'0000088F'

MQRC_TMC_ERROR

MQPUTまたはMQPUT1命令が発行されましたが，メッセージデータに無効なMQTMC2構造体があります。次のエラーなどがあります。

StrucIdフィールドがMQTMC_STRUC_IDではありません。

VersionフィールドがMQTMC_VERSION_2ではありません。

命令のBufferLength引数の値が小さ過ぎて，構造体を格納できません（構造体がメッセージの末尾を超えて拡張されています）。

対処

MQTMC構造体またはMQTMC2構造体の定義を訂正します。各フィールドを正しく設定してください。

2192

X'00000890'

MQRC_PAGESET_FULL

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2192

X'00000890'

MQRC_STORAGE_MEDIUM_FULL

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2193

X'00000891'

MQRC_PAGESET_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2194

X'00000892'

MQRC_NAME_NOT_VALID_FOR_TYPE

MQOPEN命令を呼び出して，キューマネジャ定義をオープンしました。しかし，ObjDesc引数のObjectNameフィールドに空白が設定されていません。

対処

ObjectNameフィールドに空白を設定してください。

2195

X'00000893'

MQRC_UNEXPECTED_ERROR

予期しないエラーが発生したため，命令が拒否されました。

また，次に示すすべての項目を指定して，キューマネジャがメッセージのセグメント分割をした場合も，この理由コードが返されます。

MQMD構造体のVersionフィールドにMQMD_VERSION_2を指定

MQMD構造体のMsgFlagsフィールドにMQMF_SEGMENTATION_ALLOWEDを指定

MQMD構造体のFormatフィールドにMQFMT_MD_EXTENSIONを指定

ユーザデータにMQMDE構造体を指定

対処

システム管理者に連絡してください。

また，キューマネジャがメッセージをセグメント分割する場合の対処を次に示します。

・MQMD構造体のVersionフィールドにMQMD_VERSION_1を指定

・MQMD構造体のMsgFlagsフィールドにMQMF_NONEを指定

・ユーザデータのMQMDE構造体を削除

2196

X'00000894'

MQRC_UNKNOWN_XMIT_Q

MQOPEN命令またはMQPUT1命令で，メッセージがリモートキューマネジャに送信されることになっています。オブジェクト記述子のObjectNameフィールドまたはObjectQMgrNameフィールドに，リモートキューのローカル定義名が指定されています。なお，ObjectQMgrNameの場合は，キューマネジャ別名が使われています。しかし，定義のXmitQName属性が空白ではなく，ローカルに定義されるキューの名称でもありません。

対処

ObjectNameとObjectQMgrNameに指定された値を確認してください。正しい場合，キュー定義を確認してください。名称解決については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

2197

X'00000895'

MQRC_UNKNOWN_DEF_XMIT_Q

MQOPEN命令またはMQPUT1命令があて先としてリモートキューを指定して呼び出されました。リモートキューのローカル定義が指定された，または，キューマネジャ別名の実名が解釈されていても，ローカル定義のXmitQName属性が空白です。あて先キューマネジャと同じ名称で定義されたキューがありません。そのため，キューマネジャは省略時の転送キューを使用しようとしました。しかし，DefXmitQNameキューマネジャ属性で定義された名称が，ローカルに定義されたキューの名称ではありません。

対処

キュー定義またはキューマネジャ属性を訂正してください。転送キューについては，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

2198

X'00000896'

MQRC_DEF_XMIT_Q_TYPE_ERROR

あて先としてリモートキューを指定して，MQOPEN命令またはMQPUT1命令が呼び出されました。リモートキューのローカル定義が指定された，またはキューマネジャ別名の実名が解釈されましたが，ローカル定義のXmitQName属性が空白です。

あて先キューマネジャと同じ名称で定義された転送キューがないため，ローカルキューマネジャは省略時の転送キューを使用しようとしました。しかし，DefXmitQNameキューマネジャ属性で定義されたキューは，ローカルキューではないため使用できません。

転送キューについては，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

対処

次に示す対処のうちどれかを実行してください。

・リモートキューのローカル定義のXmitQName属性の値として，ローカル転送キューを指定してください。

・リモートキューマネジャと同じ名称でローカル転送キューを定義してください。

・DefXmitQNameキューマネジャ属性の値としてローカル転送キューを指定してください。

2199

X'00000897'

MQRC_DEF_XMIT_Q_USAGE_ERROR

あて先としてリモートキューを指定して，MQOPEN命令またはMQPUT1命令が呼び出されました。リモートキューのローカル定義が指定された，またはキューマネジャ別名の実名が解釈されましたが，ローカル定義のXmitQName属性が空白です。あて先キューマネジャと同じ名称で定義された転送キューがないため，ローカルキューマネジャは省略時の転送キューを使用しようとしました。しかし，DefXmitQNameキューマネジャ属性で定義されたキューが，値MQUS_TRANSMISSIONのUsage属性を持っていないため，使用できません。

転送キューについては，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

対処

次に示す対処のうちどれかを実行してください。

・リモートキューのローカル定義のXmitQName属性の値として，ローカル転送キューを指定してください。

・リモートキューマネジャと同じ名称でローカル転送キューを定義してください。

・DefXmitQNameキューマネジャ属性の値として異なるローカル転送キューを指定してください。

・DefXmitQNameキューのUsage属性をMQUS_TRANSMISSIONに変更してください。

2201

X'00000899'

MQRC_NAME_IN_USE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2202

X'0000089A'

MQRC_CONNECTION_QUIESCING

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2203

X'0000089B'

MQRC_CONNECTION_STOPPING

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2204

X'0000089C'

MQRC_ADAPTER_NOT_AVAILABLE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2206

X'0000089E'

MQRC_MSG_ID_ERROR

選択基準としてメッセージ識別子を使用してメッセージを取り出すMQGET命令が発行されましたが，このキューではメッセージ識別子による選択がサポートされないため，失敗しました。

対処

メッセージ識別子による選択を実行しないようにアプリケーションを変更します。つまり，MsgIdフィールドをMQMI_NONEに設定し，MQGMO構造体でMQMO_MATCH_MSG_IDを指定しません。

2207

X'0000089F'

MQRC_CORREL_ID_ERROR

選択基準として相関識別子を使用してメッセージを取り出すMQGET命令が発行されましたが，このキューでは相関識別子による選択がサポートされないため，失敗しました。

対処

相関識別子による選択を実行しないようにアプリケーションを変更します。つまり，CorrelIdフィールドをMQCI_NONEに設定し，MQGMO構造体でMQMO_MATCH_CORREL_IDを指定しません。

2208

X'000008A0'

MQRC_FILE_SYSTEM_ERROR

キューで操作をしようとしたときに，ファイルシステムから予期しないリターンコードを受け取りました。

この理由コードはVSE/ESAでだけ出力されます。

対処

アクセスしようとしたキューについてのファイルシステム定義をチェックしてください。VSAMファイルの場合は，制御間隔がキューに許可されているメッセージの最大長の処理時間以上であるかどうかをチェックしてください。

2209

X'000008A1'

MQRC_NO_MSG_LOCKED

MQGMO_UNLOCKオプションを指定してMQGET命令が呼び出されましたが，排他状態にされたメッセージはありません。

対処

同一ハンドルを使用して，MQGMO_LOCKを指定した以前のMQGET命令で，メッセージが排他状態にされていないか確認してください。また，呼び出された命令のうち，メッセージの排他状態を解除したものがないか確認してください。

2216

X'000008A8'

MQRC_FILE_NOT_AUDITED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2217

X'000008A9'

MQRC_CONNECTION_NOT_AUTHORIZED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2218

X'000008AA'

MQRC_MSG_TOO_BIG_FOR_CHANNEL

メッセージがリモートキューに書き込まれましたが，その長さが，チャネルによって認められている最大メッセージ長を超えています。この理由コードは，報告メッセージのメッセージ記述子内のFeedbackフィールドに返されます。

対処

チャネル定義を調べてください。チャネルが受信できる最大メッセージ長を大きくするか，そのメッセージを複数の小さいメッセージに分割してください。

2219

X'000008AB'

MQRC_CALL_IN_PROGRESS

コネクションに対して命令がすでに処理されている間に，アプリケーションがほかの命令を呼び出しました。一度に処理できる命令は，アプリケーションコネクション一つにつき1命令です。

アプリケーションがマルチスレッドを使用する場合，またはMQI命令処理の一部として出口が呼ばれる場合，同時並行の命令が発生します。例えば，MQGET命令の処理で呼ばれるデータ変換出口は，MQI命令を発行することがあります。

対処

命令の実行中は，そのほかの命令を発行しないでください。データ変換UOCの中から命令を発行しないでください。

2220

X'000008AC'

MQRC_RMH_ERROR

MQPUTまたはMQPUT1命令が発行されましたが，メッセージデータに無効なMQRMH構造体があります。次のエラーなどがあります。

StrucIdフィールドがMQRMH_STRUC_IDではありません。

VersionフィールドがMQRMH_VERSION_1ではありません。

StrucLengthフィールドに指定されている値が小さ過ぎて，構造体，および構造体の末尾にある可変長データを格納できません。

CodedCharSetIdフィールドに，0または無効な負の値が指定されています。

命令のBufferLength引数の値が小さ過ぎて，構造体を格納できません（構造体がメッセージの末尾を超えて拡張されています）。

対処

MQRMH構造体の定義を修正してください。また，フィールドが正しく設定されていることを確認してください。

2222

X'000008AE'

MQRC_Q_MGR_ACTIVE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2223

X'000008AF'

MQRC_Q_MGR_NOT_ACTIVE

この理由コードは，キューマネジャが停止または静止を要求されたときに返されます。

対処

ありません。この理由コードは，対応するイベントメッセージを識別するためにだけ使用されます。

2224

X'000008B0'

MQRC_Q_DEPTH_HIGH

MQPUT命令またはMQPUT1命令が実行されたために，キューのサイズがQDepthHighLimit属性で指定されている最大値を超えて増加しました。

対処

ありません。この理由コードは，対応するイベントメッセージを識別するためにだけ使用されます。

2225

X'000008B1'

MQRC_Q_DEPTH_LOW

MQGET命令が実行されたために，キューのサイズがQDepthLowLimit属性で指定されている最小値より減少しました。

対処

ありません。この理由コードは，対応するイベントメッセージを識別するためにだけ使用されます。

2226

X'000008B2'

MQRC_Q_SERVICE_INTERVAL_HIGH

QServiceInterval属性に指定された限界よりも長い間隔内で正常な読み取りまたは登録を検出しませんでした。

対処

ありません。この理由コードは，対応するイベントメッセージを識別するためにだけ使用されます。

2227

X'000008B3'

MQRC_Q_SERVICE_INTERVAL_OK

QServiceInterval属性に指定された限界以下の間隔内で正常な読み取りを検出しました。

対処

ありません。この理由コードは，対応するイベントメッセージを識別するためにだけ使用されます。

2232

X'000008B8'

MQRC_UNIT_OF_WORK_NOT_STARTED

トランザクション内でメッセージの取り出しまたは登録を実行するためにMQGET，MQPUTまたはMQPUT1命令が発行されましたが，TM/MPトランザクションが開始していませんでした。MQGET命令にMQGMO_NO_SYNCPOINTが指定されていない場合，およびMQPUTまたはMQPUT1命令にMQPMO_NO_SYNCPOINTが指定されていない場合（デフォルト）は，命令にはトランザクションが必要です。

対処

TM/MPトランザクションが使用可能であることを確認するか，MQGMO_NO_SYNCPOINTオプション指定のMQGET命令，またはMQPMO_NO_SYNCPOINTオプション指定のMQPUTまたはMQPUT1命令を発行してください。これによってトランザクションを自動的に開始します。

2233

X'000008B9'

MQRC_CHANNEL_AUTO_DEF_OK

この理由コードが返されるのは，チャネルの自動定義が正常に終了した場合です。チャネルはメッセージチャネルエージェント（MCA）によって定義されています。

対処

ありません。この理由コードは，対応するイベントメッセージを識別するためにだけ使用されます。

2234

X'000008BA'

MQRC_CHANNEL_AUTO_DEF_ERROR

この理由コードが返されるのは，チャネルの自動定義が失敗した場合です。失敗の理由としては，次のように考えられます。

定義プロセスの実行中にエラーが発生した

チャネルの自動定義出口によって定義が禁止された

イベントメッセージに，失敗の理由を示す追加情報が返されます。

対処

イベントメッセージ中に返された追加情報で，障害の理由を確認してください。

2235

X'000008BB'

MQRC_CFH_ERROR

MQPUTまたはMQPUT1命令で，メッセージデータ内のPCFヘッダであるMQCFH構造体が無効です。

対処

MQCFH構造体の定義を修正してください。フィールドの値が正しく設定されているか確認してください。

2236

X'000008BC'

MQRC_CFIL_ERROR

MQPUT命令またはMQPUT1命令で，メッセージデータ中のPCF整数リストの引数であるMQCFIL構造体が無効です。

対処

MQCFIL構造体の定義を修正してください。また，フィールドが正しく設定されていることを確認してください。

2237

X'000008BD'

MQRC_CFIN_ERROR

MQPUT命令またはMQPUT1命令で，メッセージデータ中のPCF整数の引数となるMQCFIN構造体が無効です。

対処

MQCFIN構造体の定義を修正してください。また，フィールドが正しく設定されていることを確認してください。

2238

X'000008BE'

MQRC_CFSL_ERROR

MQPUT命令またはMQPUT1命令で，メッセージデータ中のPCFストリングリスト引数であるMQCFSL構造体が無効です。

対処

MQCFSL構造体の定義を修正してください。また，フィールドが正しく設定されていることを確認してください。

2239

X'000008BF'

MQRC_CFST_ERROR

MQPUT命令またはMQPUT1命令で，メッセージデータ中のPCFストリングの引数であるMQCFST構造体が無効です。

対処

MQCFST構造体の定義を修正してください。また，フィールドが正しく設定されていることを確認してください。

2241

X'000008C1'

MQRC_INCOMPLETE_GROUP

不完全なメッセージグループのあるキューハンドルを使用して，キューを操作しようとしました。この理由コードが返されるのは，次の場合です。

MQPUT命令で，アプリケーションがグループ内にないメッセージを登録するためにMQPMO_LOGICAL_ORDERを指定する場合

この場合，完了コードはMQCC_FAILEDです。

MQPUT命令で，アプリケーションがMQPMO_LOGICAL_ORDERを指定しないが，キューハンドルに直前のMQPUT命令でMQPMO_LOGICAL_ORDERを指定した場合

この場合，完了コードはMQCC_WARNINGです。

MQGET命令で，アプリケーションがMQGMO_LOGICAL_ORDERを指定しないが，キューハンドルに直前のMQGET命令でMQGMO_LOGICAL_ORDERを指定した場合

この場合，完了コードはMQCC_WARNINGです。

MQCLOSE命令で，アプリケーションが，不完全なメッセージグループがあるキューをクローズする場合

この場合，完了コードはMQCC_WARNINGです。

不完全なメッセージグループと同時に不完全な論理メッセージも存在する場合，理由コードMQRC_INCOMPLETE_MSGがMQRC_INCOMPLETE_GROUPの前に返されます。

対処

この理由コードを意図していた場合は，対処する必要はありません。意図したものでない場合は，そのグループ内の最後のメッセージに対するMQPUT命令にMQMF_LAST_MSG_IN_GROUPが指定されていることを確認してください。

2242

X'000008C2'

MQRC_INCOMPLETE_MSG

不完全な論理メッセージのあるキューハンドルを使用して，キューを操作しようとしました。この理由コードが返されるのは，次の場合です。

MQPUT命令で，アプリケーションがセグメントでないメッセージを登録しようとして，MQPMO_LOGICAL_ORDERを指定した場合

この場合，命令は失敗します。

MQPUT命令で，アプリケーションがMQPMO_LOGICAL_ORDERの指定なしで順番と異なるセグメントのメッセージを登録しようとして，キューハンドル用の直前のMQPUT命令にMQPMO_LOGICAL_ORDERが指定されていた場合

この場合，命令は成功し，完了コードMQCC_WARNINGが返されます。

MQGET命令で，アプリケーションがMQGMO_LOGICAL_ORDERの指定なしで順番と異なるセグメントのメッセージを取り出そうとして，キューハンドル用の直前のMQGET命令にMQGMO_LOGICAL_ORDERが指定されていた場合

この場合，命令は成功し，完了コードMQCC_WARNINGが返されます。

MQCLOSE命令で，アプリケーションが不完全な論理メッセージのあるキューをクローズしようとした場合

この場合，命令は成功し，完了コードMQCC_WARNINGが返されます。

MQPUT命令で，セグメントのMQMF_LAST_MSG_IN_GROUPフラグの設定が，直前のメッセージセグメントと異なる場合

対処

この理由コードを意図していた場合は，対処する必要はありません。意図したものでない場合は，最後のセグメントに対するMQPUT命令にMQMF_LAST_SEGMENTが指定されていることを確認してください。

2243

X'000008C3'

MQRC_INCONSISTENT_CCSIDS

MQGMO_COMPLETE_MSGオプションを指定したMQGET命令が発行されましたが，検索対象のメッセージはMQMD構造体のCodedCharSetIdフィールド中の，値の異なる複数のセグメントで構成されています。

この理由コードが返されるのは，セグメントがネットワークを経由して異なるパスを通り，それらのパスの一部でMCAセンダ側の変換が使用できる場合です。この場合命令は成功し，完了コードMQCC_WARNINGが返されますが，同一の文字セットIDを持つセグメントの初期値と等しい数のセグメントだけが戻ります。

対処

MQGET命令からMQGMO_COMPLETE_MSGオプションを解除し，残りのメッセージセグメントを一つずつ取り出してください。

2244

X'000008C4'

MQRC_INCONSISTENT_ENCODINGS

MQGMO_COMPLETE_MSGオプションを指定したMQGET命令が発行されましたが，取り出し対象のメッセージは，MQMD構造体のEncodingフィールド中の，値の異なる複数のセグメントで構成されています。

この理由コードが返されるのは，セグメントがネットワークを経由して異なるパスを通り，それらのパスの一部でMCAセンダ側の変換が使用できる場合です。このとき命令は成功し，完了コードMQCC_WARNINGが返されますが，同一のマシンコード形式を持つセグメントの初期値と等しい数のセグメントだけが返されます。

対処

MQGET命令からMQGMO_COMPLETE_MSGオプションを解除し，残りのメッセージセグメントを一つずつ取り出してください。

2245

X'000008C5'

MQRC_INCONSISTENT_UOW

次のどれかが該当します。

グループ内のメッセージまたは論理メッセージのセグメントを登録するために，MQPUT命令が発行されました。しかし，MQPMO_SYNCPOINTオプションの指定値または初期値と，キューハンドル用にキューマネジャが保存している現在のグループおよびセグメントの情報が矛盾しています。

現在の命令にMQPMO_LOGICAL_ORDERが指定されている場合は，その命令は失敗します。MQPMO_LOGICAL_ORDERが現在の命令には指定されないで，キューハンドルに対する直前のMQPUT命令に指定されていた場合は，命令は成功して完了コードMQCC_WARNINGが返されます。

グループ内のメッセージまたは論理メッセージのセグメントをキューから取り出すためにMQGET命令が発行されました。しかし，MQGMO_SYNCPOINTオプションの指定値またはデフォルト値と，キューハンドル用にキューマネジャが保存している現在のグループおよびセグメントの情報が矛盾しています。

現在の命令にMQGMO_LOGICAL_ORDERが指定されている場合は，その命令は失敗します。MQGMO_LOGICAL_ORDERが現在の命令には指定されないで，キューハンドルに対する直前のMQGET命令に指定されていた場合は，命令は成功して完了コードMQCC_WARNINGが返されます。

セグメント方式（mqtalccha定義コマンドの-gオプションに"buftype=seg"を指定）の受信側チャネル（mqtalccha定義コマンドの-yオプションに"type=receiver"，"type=requester"，または"type=clusrcvr"を指定）が，MQMDE構造体のMsgFlagsフィールドにMQMF_SEGMENTATION_ALLOWEDが設定されているメッセージを受信しました。しかし，受信メッセージ長が，登録しようとしたキューの最大メッセージ長よりも大きいです。

対処

要因1.，2.に対しては，アプリケーションを修正して，グループ内のすべてのメッセージ，または論理メッセージのすべてのセグメントについて，同じトランザクションを指定してください。

要因3.に対しては，メッセージ方式（mqtalccha定義コマンドの-gオプションに"buftype=msg"を指定）に変更するか，キューの最大メッセージ長を大きくしてください。

2246

X'000008C6'

MQRC_INVALID_MSG_UNDER_CURSOR

MQGMO_MSG_UNDER_CURSORオプションまたはMQGMO_BROWSE_MSG_UNDER_CURSORオプションのどちらかとともに，MQGMO_COMPLETE_MSGオプションを指定したMQGET命令が発行されましたが，カーソルの下にあるメッセージには，0より大きいOffsetフィールドを指定したMQMD構造体があります。

MQGMO_COMPLETE_MSGオプションが指定されているので，このメッセージは検索用として無効です。

対処

ブラウズカーソルの位置を変更し，MQMD構造体のOffsetフィールドが0になっているメッセージにカーソルを置いてください。または，MQGMO_COMPLETE_MSGオプションを解除してください。

2247

X'000008C7'

MQRC_MATCH_OPTIONS_ERROR

MQGET命令が発行されましたが，GetMsgOpts引数のMatchOptionsフィールドの値が次のどちらかの理由で無効です。

未定義のオプションが指定されています。

次のすべてが当てはまります。

・MQGMO_LOGICAL_ORDERが指定されています。

・キューハンドル用の現在のメッセージグループまたは論理メッセージがあります。

・次のオプションがどちらも指定されていません。

　　MQGMO_BROWSE_MSG_UNDER_CURSOR

　　MQGMO_MSG_UNDER_CURSOR

・一つ以上のMQMO_*オプションが指定されています。

・指定されているMQMO_*オプションに対応するMsgDesc引数のフィールドの値が，次に返されるメッセージ用のMQMD構造体の対応するフィールドの値と異なっています。

対処

フィールドに有効なオプションだけが指定されていることを確認してください。

2248

X'000008C8'

MQRC_MDE_ERROR

MQPUTまたはMQPUT1命令が発行されましたが，メッセージデータに無効なMQMDE構造体が含まれています。エラーとして，次のことが考えられます。

StrucIdフィールドの値が，MQMDE_STRUC_IDではありません。

VersionフィールドがMQMDE_VERSION_2ではありません。

StrucLengthフィールドの値がMQMDE_LENGTH_2ではありません。

CodedCharSetIdフィールドに，0または無効な負の値が指定されました。

命令のBufferLength引数の値が小さ過ぎて，構造体を格納できません（構造体がメッセージの末尾を超えて拡張されています）。

対処

メッセージ記述子の拡張の定義を修正してください。入力されなければならないフィールドが正しく設定されているか確認してください。

2249

X'000008C9'

MQRC_MSG_FLAGS_ERROR

MQPUT命令またはMQPUT1命令が発行されましたが，メッセージ記述子MQMD構造体のMsgFlagsフィールドに，ローカルキューマネジャが認識できないメッセージフラグが一つ以上あります。この理由コードが返される原因になったメッセージフラグは，メッセージのあて先によって異なります。

この理由コードは，報告メッセージのMQMD構造体のFeedbackフィールド，またはデッドレターキューへ登録したメッセージのMQDLH構造体のReasonフィールドに返されることもあります。どちらの場合も，メッセージの送信元が指定したメッセージフラグの中に，あて先キューマネジャがサポートしていないものが一つ以上あることを示しています。

対処

次に示す内容を確認してください。

・メッセージ記述子のMsgFlagsフィールドが，メッセージ記述子の宣言時の値を使用して初期設定されているかどうか，またはMQPUTかMQPUT1命令より前にMsgFlagsフィールドに値が割り当てられているかどうか。メッセージフラグが不要な場合は，MQMF_NONEを指定します。

・指定されたメッセージフラグが有効であるかどうか。フラグについては，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」を参照してください。

・個々のメッセージフラグを追加することによって複数のメッセージフラグを設定している場合は，同じメッセージフラグを2回追加していないか確認してください。

2250

X'000008CA'

MQRC_MSG_SEQ_NUMBER_ERROR

MQGET命令，MQPUT命令，またはMQPUT1命令が発行されましたが，MQMD構造体またはMQMDE構造体のMsgSeqNumberフィールドに，1より小さい値か999999999より大きい値が指定されています。MQPUT命令で，実行結果としてMsgSeqNumberフィールドが999999999より大きくなった場合も，このエラーが発生することがあります。

対処

1〜999999999の範囲内の値を指定してください。999999999個を超えるメッセージを含むメッセージグループを作成しないでください。

2251

X'000008CB'

MQRC_OFFSET_ERROR

MQPUT命令またはMQPUT1命令が発行されましたが，MQMD構造体またはMQMDE構造体のOffsetフィールドに，0より小さいか，999999999より大きい値が指定されています。

MQPUT命令で，実行結果としてOffsetフィールドが999999999より大きくなった場合にも，このエラーが発生することがあります。

対処

0〜999999999の範囲内の値を指定してください。オフセットが999999999を超えるようなメッセージセグメントを作成しないでください。

2252

X'000008CC'

MQRC_ORIGINAL_LENGTH_ERROR

セグメントである報告メッセージを登録するためのMQPUT命令またはMQPUT1命令が発行されましたが，MQMD構造体またはMQMDE構造体のOriginalLengthフィールドが，次のどれかに該当しています。

メッセージ内のデータの長さより小さい

1より小さい（最後のセグメント以外のセグメントの場合）

0より小さい（最後のセグメントの場合）

対処

0より大きい値を指定してください。0は，最後のセグメントにだけ有効です。

2253

X'000008CD'

MQRC_SEGMENT_LENGTH_ZERO

論理メッセージの開始位置，または中間のセグメントを登録するためのMQPUT命令またはMQPUT1命令が発行されましたが，そのセグメントの存在する可能性のあるMQヘッダをすべて除いたアプリケーションメッセージデータ長が0です。開始位置，または中間のセグメントの長さは，少なくとも1でなければなりません。

対処

アプリケーションを調査して，セグメントが1以上の長さで登録されているか確認してください。ただし，論理メッセージの最後のセグメントだけは，セグメント長が0でもかまいません。

2255

X'000008CF'

MQRC_UOW_NOT_AVAILABLE

トランザクションの外部で，メッセージの取り出しや登録をするためのMQGET命令，MQPUT命令，またはMQPUT1命令が発行されましたが，その命令に指定されているオプションでは，キューマネジャがトランザクション内部で命令を処理する必要があります。しかし，ユーザ定義のトランザクションがすでに存在しているので，キューマネジャは，命令の実行中に使用する一時的なトランザクションを作成できませんでした。

この理由コードは次の場合に返されます。

MQGET命令で，MQGMO構造体にMQGMO_COMPLETE_MSGオプションが指定されていて，取り出す論理メッセージが永続メッセージであり，かつ，二つ以上のセグメントで構成されている場合

MQPUT命令またはMQPUT1命令で，MQMD構造体にMQMF_SEGMENTATION_ALLOWEDフラグを指定することによって，メッセージのセグメント化が必要な場合

対処

MQGET命令，MQPUT命令，またはMQPUT1命令を，ユーザ定義のトランザクションの内部で発行してください。MQPUT命令またはMQPUT1命令の場合は，キューマネジャによるセグメント化を防ぐために，メッセージサイズを小さくすることもできます。

2256

X'000008D0'

MQRC_WRONG_GMO_VERSION

バージョン番号がMQGMO_VERSION_2以降のMQGMO構造体を必要とするオプションを指定したMQGET命令で，提供されたMQGMO構造体は，条件を満たしていません。

対処

バージョン2のMQGMO構造体を渡すようにプログラムを変更してください。プログラムを調査して，MQGMO構造体のVersionフィールドがMQGMO_VERSION_2に設定されていることを確認してください。または，バージョン2のMQGMO構造体を必要とするオプションを解除してください。

2257

X'000008D1'

MQRC_WRONG_MD_VERSION

バージョン番号がMQMD_VERSION_2以降のMQMD構造体を必要とするオプションを指定したMQGET命令，MQPUT命令，またはMQPUT1命令で，提供されたMQMD構造体は，条件を満たしていません。

対処

バージョン2のMQMD構造体を渡すように，アプリケーションを変更してください。アプリケーションを調査して，MQMD構造体のVersionフィールドがMQMD_VERSION_2に設定されていることを確認してください。または，バージョン2のMQMD構造体を必要とするオプションを解除してください。

2258

X'000008D2'

MQRC_GROUP_ID_ERROR

グループ内のメッセージ，メッセージセグメントおよびセグメント化が許可されている配布リストメッセージを書き込むためのMQPUT命令またはMQPUT1命令が発行されましたが，指定したオプションと値の組み合わせが無効です。次に示す理由が考えられます。

MQPMO構造体のOptionsフィールドに，MQPMO_LOGICAL_ORDERが指定されていません。

MQPMO構造体から提供されるレコードの数が少な過ぎます。またはMQPMR構造体のレコードにGroupIdフィールドがありません。

MQMD構造体またはMQMDE構造体のMsgFlagsフィールドに，次の一つ以上のフラグが指定されています。

　MQMF_SEGMENTATION_ALLOWED

　MQMF_*_MSG_IN_GROUP

　MQMF_*_SEGMENT

MQMD構造体またはMQMDE構造体のGroupIdフィールドが，MQGI_NONEではありません。

上記の組み合わせのオプションと値を指定すると，同じグループIDがあて先リストにあるすべてのあて先に使用されることになります。これは，キューマネジャによって許可されない組み合わせです。

対処

MQMD構造体またはMQMDE構造体のGroupIdフィールドに，MQGI_NONEを指定してください。ただし，MQPUT命令の場合は，MQPMO構造体のOptionsフィールドにMQPMO_LOGICAL_ORDERを指定してください。

2259

X'000008D3'

MQRC_INCONSISTENT_BROWSE

MQGMO_BROWSE_NEXTオプションを指定したMQGET命令が発行されましたが，そのMQGET命令用のMQGMO_LOGICAL_ORDERオプションの指定と，キューハンドル用の直前のMQGET命令のMQGMO_LOGICAL_ORDERオプションの指定が異なっています。両方の命令にMQGMO_LOGICAL_ORDERを指定するか，どちらの命令にもMQGMO_LOGICAL_ORDERを指定しないかの，どちらかにしなければなりません。

対処

MQGMO_LOGICAL_ORDERオプションを指定するか，解除するか，適切な方の処置をとってください。MQGMO_LOGICAL_ORDERオプションの代わりに，論理順序と物理順序を切り替えるためには，MQGET命令にMQGMO_BROWSE_FIRSTオプションを指定して，キューの先頭からメッセージを取り出します。このとき，必要に応じてMQGMO_LOGICAL_ORDERを指定または省略します。

2260

X'000008D4'

MQRC_XQH_ERROR

MQPUTまたはMQPUT1命令が発行されましたが，メッセージデータに無効なMQXQH構造体があります。次のエラーなどがあります。

StrucIdフィールドがMQXQH_STRUC_IDではありません。

VersionフィールドがMQXQH_VERSION_1ではありません。

命令のBufferLength引数の値が小さ過ぎて，構造体を格納できません（構造体がメッセージの末尾を超えて拡張されています）。

対処

MQXQH構造体の定義を修正してください。また，フィールドが正しく設定されていることを確認してください。

2261

X'000008D5'

MQRC_SRC_ENV_ERROR

この理由コードは，参照メッセージを処理するチャネル出口が，参照メッセージヘッダ（MQRMH構造体）の送信元環境データでエラーを検出したときに出されます。次のどれかの状態になっています。

SrcEnvLengthが0よりも小さくなっています。

SrcEnvLengthがゼロより大きいが，送信元環境データがありません。

SrcEnvLengthがゼロより大きいが，SrcEnvOffsetが負の値またはゼロです。またはMQRMH構造体の固定部分の長さより小さくなっています。

SrcEnvLengthがゼロより大きいが，SrcEnvOffsetにSrcEnvLengthを加えた値が，StrucLengthより大きくなっています。

出口はこの理由コードをMQCXP構造体のFeedbackフィールドに返します。例外報告が要求されていれば，報告に関連するMQMD構造体のFeedbackフィールドにコピーされます。

対処

送信元環境データを正しく指定してください。

2262

X'000008D6'

MQRC_SRC_NAME_ERROR

この理由コードは，参照メッセージを処理するチャネル出口が，参照メッセージヘッダ（MQRMH構造体）の送信元オブジェクト名データでエラーを検出したときに出されます。次のどれかの状態になっています。

SrcNameLengthが0よりも小さくなっています。

SrcNameLengthがゼロより大きいが，送信元名データがありません。

SrcNameLengthがゼロより大きいが，SrcNameOffsetが負の値またはゼロです。またはMQRMH構造体の固定部分の長さより小さくなっています。

SrcNameLengthがゼロより大きいが，SrcNameOffsetにSrcNameLengthを加えた値が，StrucLengthより大きくなっています。

出口はこの理由コードをMQCXP構造体のFeedbackフィールドに返します。例外報告が要求されていれば，報告に関連するMQMD構造体のFeedbackフィールドにコピーされます。

対処

送信元オブジェクト名データを正しく指定してください。

2263

X'000008D7'

MQRC_DEST_ENV_ERROR

この理由コードは，参照メッセージを処理するチャネル出口が，参照メッセージヘッダ（MQRMH構造体）のあて先環境データでエラーを検出したときに出されます。次のどれかの状態になっています。

DestEnvLengthが0よりも小さくなっています。

DestEnvLengthがゼロより大きいが，あて先環境データがありません。

DestEnvLengthがゼロより大きいが，DestEnvOffsetが負の値またはゼロです。またはMQRMH構造体の固定部分の長さより小さくなっています。

DestEnvLengthがゼロより大きいが，DestEnvOffsetにDestEnvLengthを加えた値が，StrucLengthより大きくなっています。

出口はこの理由コードをMQCXP構造体のFeedbackフィールドに返します。例外報告が要求されていれば，報告に関連するMQMD構造体のFeedbackフィールドにコピーされます。

対処

あて先環境データを正しく指定してください。

2264

X'000008D8'

MQRC_DEST_NAME_ERROR

この理由コードは，参照メッセージを処理するチャネル出口が，参照メッセージヘッダ（MQRMH構造体）のあて先オブジェクト名データでエラーを検出したときに出されます。次のどれかの状態になっています。

DestNameLengthが0よりも小さくなっています。

DestNameLengthがゼロより大きいが，あて先名データがありません。

DestNameLengthがゼロより大きいが，DestNameOffsetが負の値か，またはMQRMHの固定部分の長さより小さくなっています。

DestNameLengthがゼロより大きいが，DestNameOffsetにDestNameLengthを加えた値が，StrucLengthより大きくなっています。

出口はこの理由コードをMQCXP構造体のFeedbackフィールドに返します。例外報告が要求されていれば，報告に関連するMQMD構造体のFeedbackフィールドにコピーされます。

対処

あて先オブジェクト名データを正しく指定してください。

2265

X'000008D9'

MQRC_TM_ERROR

MQPUTまたはMQPUT1命令が発行されましたが，メッセージデータに無効なMQTM構造体があります。次のエラーなどがあります。

StrucIdフィールドがMQTM_STRUC_IDではありません。

VersionフィールドがMQTM_VERSION_1ではありません。

命令のBufferLength引数の値が小さ過ぎて，構造体を格納できません（構造体がメッセージの末尾を超えて拡張されています）。

対処

MQTMC構造体の定義を訂正します。各フィールドを正しく設定してください。

2266

X'000008DA'

MQRC_CLUSTER_EXIT_ERROR

オープンまたはメッセージ登録のためにクラスタキューにMQOPEN，MQPUTまたはMQPUT1命令が発行されましたが，キューマネジャのClusterWorkloadExit属性で定義したクラスタワークロード出口が失敗したか，または時間内に応答しませんでした。このキューハンドルに対する以降のMQOPEN，MQPUTおよびMQPUT1命令は，ClusterWorkloadExit属性が空白として処理されます。

対処

クラスタワークロード出口が正しく記述されているか確認してください。

2267

X'000008DB'

MQRC_CLUSTER_EXIT_LOAD_ERROR

キューマネジャに接続するためにMQCONNまたはMQCONNX命令が発行されましたが，キューマネジャのClusterWorkloadExit属性で定義されたクラスタワークロード出口をロードできなかったため，命令は失敗しました。

対処

クラスタワークロード出口が正しい場所にインストールされているか確認してください。

2268

X'000008DC'

MQRC_CLUSTER_PUT_INHIBITED

MQOPEN命令が，MQOO_OUTPUTおよびMQOO_BIND_ON_OPENオプションを指定して，クラスタキューに発行されましたが，次のすべての条件を満たしたため，失敗しました。

すべてのクラスタキューが，現在は登録禁止です（つまり，すべてのキューで，InhibitPut属性にMQQA_PUT_INHIBITEDが設定されています）。

キューのローカルインスタンスがありません。ローカルインスタンスがある場合は，ローカルインスタンスが登録禁止であってもMQOPEN命令は成功します。

クラスタワークロード出口がキューにない，またはあってもキューインスタンスを選択していません。クラスタワークロード出口がキューインスタンスを選択している場合は，そのインスタンスが登録禁止であってもMQOPEN命令は成功します。

MQOO_BIND_NOT_FIXEDオプションがMQOPEN命令に指定される場合，クラスタ内のすべてのキューが登録禁止であっても成功することがあります。しかし，以降のMQPUT命令は，発行時にすべてのキューが登録禁止のままであると失敗することがあります。

対処

システム設計で短い期間の登録要求禁止が許されている場合は，MQOPEN命令を再発行してください。

キュー取り出し禁止をしない運用，またはキュー取り出し禁止を長い時間解除しない運用を前提としてシステムが設計されている場合は，アプリケーションを終了してください。

2269

X'000008DD'

MQRC_CLUSTER_RESOURCE_ERROR

クラスタキューにMQOPEN，MQPUTまたはMQPUT1命令が発行されましたが，クラスタに必要なリソースを使用するときにエラーが発生しました。

対処

次に示す対処を行ってください。

・SYSTEM.CLUSTER.*キューが登録禁止または満杯になっていないことを確認します。

・フルリポジトリキューマネジャが使用可能であることを確認します。

2270

X'000008DE'

MQRC_NO_DESTINATIONS_AVAILABLE

MQPUT命令またはMQPUT1命令がクラスタキューにメッセージを登録するために発行されましたが，発行時にクラスタにはキューがなくなってしまっていたため，メッセージが送信できません。

この状況は，キューをオープンするMQOPEN命令でMQOO_BIND_NOT_FIXEDが指定された延長でMQPUT命令でメッセージを登録するとき，またはMQPUT1命令でメッセージを登録するときに発生します。

対処

MQRC_NO_DESTINATIONS_AVAILABLEが返却されたMQI命令がMQPUT命令の場合は，MQOPEN命令から再発行してください。MQPUT1命令の場合は，MQPUT1命令を再発行してください。

再発行で解決しない場合は，すべてのキューがクラスタから削除された理由を特定するために，キューの定義とキューの状態をチェックしてください。

問題を解決したあと，アプリケーションを再実行してください。

2271

X'000008DF'

MQRC_CONN_TAG_IN_USE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2272

X'000008E0'

MQRC_PARTIALLY_CONVERTED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2273

X'000008E1'

MQRC_CONNECTION_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2274

X'000008E2'

MQRC_OPTION_ENVIRONMENT_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2277

X'000008E5'

MQRC_CD_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2278

X'000008E6'

MQRC_CLIENT_CONN_ERROR

キューマネジャに接続するためにMQCONNX命令を発行しましたが，MQCDチャネル定義構造体が正しく指定されていません。次に示すどれかが該当します。

ClientConnOffsetがゼロではなく，ClientConnPtrがゼロまたはヌルポインタのどちらでもありません。

ClientConnPtrが無効なポインタです。

ClientConnPtrまたはClientConnOffsetが，アクセス不可能なストレージを指しています。

対処

ClientConnOffsetおよびClientConnPtrの少なくとも一方がゼロであることを確認してください。使用しているフィールドがアクセス可能なストレージを指していることを確認します。

2279

X'000008E7'

MQRC_CHANNEL_STOPPED_BY_USER

チャネルがオペレータによって停止されていた場合にこの状況が検出されます。理由修飾子が停止理由を示します。

対処

ありません。この理由コードは対応するイベントメッセージの識別に使用されるだけです。

2280

X'000008E8'

MQRC_HCONFIG_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2281

X'000008E9'

MQRC_FUNCTION_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2282

X'000008EA'

MQRC_CHANNEL_STARTED

これは，次のどちらかの場合です。

オペレータがStart Channel（チャネル開始）コマンドを発行した場合

チャネルのインスタンスの確立に成功した場合

この理由コードは，初期データの転送が完了していて，必要な場合には，再度同期化してメッセージのネゴシエーションを続行できるときに返されます。

対処

ありません。この理由コードは，対応するイベントメッセージを識別するためにだけ使用されます。

2283

X'000008EB'

MQRC_CHANNEL_STOPPED

この理由コードは，チャネルが停止したときに返されます。理由修飾子は停止の理由を表します。

対処

ありません。この理由コードは，対応するイベントメッセージを識別するためにだけ使用されます。

2284

X'000008EC'

MQRC_CHANNEL_CONV_ERROR

この理由コードが返されるのは，チャネルがデータ変換を実行できないで，転送キューからメッセージを読み取るMQGET命令がデータ変換エラーの原因となった場合です。変換理由コードで障害の理由を確認してください。

対処

ありません。この理由コードは，対応するイベントメッセージを識別するためにだけ使用されます。

2285

X'000008ED'

MQRC_SERVICE_NOT_AVAILABLE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2286

X'000008EE'

MQRC_INITIALIZATION_FAILED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2287

X'000008EF'

MQRC_TERMINATION_FAILED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2288

X'000008F0'

MQRC_UNKNOWN_Q_NAME

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2289

X'000008F1'

MQRC_SERVICE_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2290

X'000008F2'

MQRC_Q_ALREADY_EXISTS

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2291

X'000008F3'

MQRC_USER_ID_NOT_AVAILABLE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2292

X'000008F4'

MQRC_UNKNOWN_ENTITY

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2293

X'000008F5'

MQRC_UNKNOWN_AUTH_ENTITY

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2294

X'000008F6'

MQRC_UNKNOWN_REF_OBJECT

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2295

X'000008F7'

MQRC_CHANNEL_ACTIVATED

この理由コードが返されるのは，Channel Not Activatedイベントの生成対象になっていたチャネルが活動状態になるのを待っている場合，別のチャネルが活動状態のスロットを解放したために活動状態となったときです。Channel Not Activatedイベントは，活動スロットが解放されるのを待たないで活動できるチャネルに対しては生成されません。

対処

ありません。この理由コードは，対応するイベントメッセージを識別するためにだけ使用されます。

2296

X'000008F8'

MQRC_CHANNEL_NOT_ACTIVATED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2297

X'000008F9'

MQRC_UOW_CANCELED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2298

X'000008FA'

MQRC_FUNCTION_NOT_SUPPORTED

要求された機能は，現在の環境では利用できません。

対処

アプリケーションから命令を削除してください。

2299

X'000008FB'

MQRC_SELECTOR_TYPE_ERROR

Selector引数のデータ型が間違っています。この引数はlong型でなければいけません。

対処

Selector引数をlongとして宣言してください。

2300

X'000008FC'

MQRC_COMMAND_TYPE_ERROR

mqExecute命令が発行されましたが，管理バッグ内のMQIASY_TYPEデータ項目の値がMQCFT_COMMANDではありません。

対処

管理バッグ内のMQIASY_TYPEデータ項目の値がMQCFT_COMMANDであることを確認してください。

2301

X'000008FD'

MQRC_MULTIPLE_INSTANCE_ERROR

Selector引数でシステムセレクタ（MQIASY_*値の一つ）を指定していますが，ItemIndex引数がMQIND_NONEではありません。各システムセレクタのインスタンスは一つだけバッグ内に存在できます。

対処

ItemIndex引数の値にMQIND_NONEを指定してください。

2302

X'000008FE'

MQRC_SYSTEM_ITEM_NOT_ALTERABLE

バッグ内のシステムデータ項目（MQIASY_*セレクタの一つのあるデータ項目）の値を変更する命令が発行されましたが，データ項目をアプリケーションで変更できないため，命令は失敗しました。

対処

ユーザ定義データ項目のセレクタを指定するか，命令を削除してください。

2303

X'000008FF'

MQRC_BAG_CONVERSION_ERROR

mqBufferToBagまたはmqGetBag命令が発行されましたが，バッファまたはメッセージ内のデータをバッグに変換できませんでした。変換するデータが無効なPCFの場合に発生します。

対処

バッファまたはメッセージを作成したアプリケーションのロジックを確認して，バッファまたはメッセージに有効なPCFが含まれることを確認してください。

メッセージに無効なPCFがある場合，そのメッセージはmqGetBag命令で取り出せません。

・MQGMO_BROWSE_*オプションの一つが指定されると，メッセージはキューに残り，MQGET命令で取り出せます。

・その他の場合は，メッセージがキューからすでに削除され廃棄されています。メッセージがトランザクション内で取り出された場合，トランザクションをロールバックしてMQGET命令でメッセージを取り出せます。

2304

X'00000900'

MQRC_SELECTOR_OUT_OF_RANGE

Selector引数の値が，命令の有効範囲外です。バッグがMQCBO_CHECK_SELECTORSオプションで作成された場合は，次に示す条件を満たしてください。

mqAddInteger命令のとき，値はMQIA_FIRSTからMQIA_LASTまでの範囲です。

mqAddString命令のとき，値はMQCA_FIRSTからMQCA_LASTまでの範囲です。

バッグがMQCBO_CHECK_SELECTORSオプションで作成されなかった場合，値はゼロ以上でなければいけません。

対処

有効な値を指定してください。

2305

X'00000901'

MQRC_SELECTOR_NOT_UNIQUE

ItemIndex引数の値がMQIND_NONEですが，バッグにはSelector引数で指定されたセレクタ値を持つデータ項目が複数あります。MQIND_NONEの場合，バッグには指定セレクタのオカレンスを一つだけ含められます。

この理由コードは，セレクタを一つしか許可しない必要引数に二つ以上のセレクタのオカレンスが管理バッグにあるときにも，mqExecute命令で発生します。

対処

バッグを作成したアプリケーションのロジックを確認してください。ロジックが正しい場合は，ItemIndexにゼロ以上の値を指定し，バッグ内の全セレクタのオカレンスを処理するためのアプリケーションロジックを追加します。

発行する管理コマンドの記述を見直して，バッグ内にすべての必要引数が正しく定義されていることを確認します。

2306

X'00000902'

MQRC_INDEX_NOT_PRESENT

指定された索引がありません。

バッグの場合には，Selector引数で指定したセレクタ値を持つデータ項目が一つ以上バッグにあるが，どのデータ項目も索引値がItemIndex引数で指定されていないことを示します。SelectorおよびItemIndex引数で指定したデータ項目がバッグ内に必要です。

ネームリストの場合には，索引引数値が大き過ぎて，有効な値の範囲外であることを示します。

対処

バッグまたはネームリストにあるデータ項目の索引を指定してください。mqCountItems命令を使用してバッグにあるセレクタを持つデータ項目の数を確認したり，nameCountメソッドを使用してネームリスト内の名前の数を確認したりします。

2307

X'00000903'

MQRC_STRING_ERROR

String引数が無効です。引数ポインタが無効または読み取り専用ストレージを指しています。無効な引数ポインタを必ずしも検出できません。検出されなかった場合は予期しない結果が発生します。

対処

引数を訂正してください。

2308

X'00000904'

MQRC_ENCODING_NOT_SUPPORTED

メッセージ記述子MQMD構造体のEncodingフィールドにサポートされない値があります。

mqPutBag命令の場合，エラーに示されているフィールドは命令のMsgDesc引数内にあります。

mqGetBag命令の場合，エラーに示されているフィールドは次に示す場所にあります。

−MQGMO_CONVERTオプションが指定された場合は，命令のMsgDesc引数です。

−MQGMO_CONVERTが指定されなかった場合は，取り出すメッセージのメッセージ記述子です。

対処

値はMQENC_NATIVEでなくてはなりません。

メッセージ内のEncodingフィールドの値が無効な場合，メッセージはmqGetBag命令で取り出せません。

・MQGMO_BROWSE_*オプションの一つが指定されると，メッセージはキューに残り，MQGET命令で取り出せます。

・その他の場合は，メッセージがキューからすでに削除され廃棄されています。メッセージがトランザクション内で取り出された場合，トランザクションをロールバックしMQGET命令でメッセージを取り出せます。

2309

X'00000905'

MQRC_SELECTOR_NOT_PRESENT

Selector引数に，バッグにないセレクタが指定されています。

対処

バッグにあるセレクタを指定してください。

2310

X'00000906'

MQRC_OUT_SELECTOR_ERROR

OutSelector引数が無効です。引数ポインタが無効かまたは読み取り専用ストレージを指しています。無効な引数ポインタを必ずしも検出できません。検出されなかった場合は予期しない結果が発生します。

対処

引数を修正してください。

2311

X'00000907'

MQRC_STRING_TRUNCATED

命令によって返された文字列が長過ぎてバッファに入りません。文字列はバッファに入るように切り捨てられました。

対処

文字列の全体が必要な場合は，バッファを大きくしてください。mqInquireString命令ではStringLength引数を設定し，切り捨てないで文字列全体が入るバッファサイズを指定します。

2312

X'00000908'

MQRC_SELECTOR_WRONG_TYPE

指定のセレクタを持つデータ項目がバッグ内にありますが，そのデータ項目のデータ型が，使用する命令のデータ型と矛盾します。例えば，データ項目が整数データ型で，使用する命令は文字データ型のmqSetStringという場合があります。

mqBagToBuffer，mqExecuteおよびmqPutBag命令でも，MQIACF_INQUIRYデータ項目をバッグに追加するためにmqAddStringまたはmqSetStringが使用された場合にこの理由コードが発生します。

対処

mqSetIntegerおよびmqSetString命令の場合，MQIND_ALLをItemIndex引数に指定して，必要なデータ型の新規オカレンスを作成する前に指定セレクタの既存の全オカレンスをバッグから削除してください。

mqInquireBag，mqInquireIntegerおよびmqInquireString命令の場合，mqInquireItemInfo命令を使用して指定セレクタを持つデータ項目のデータ型を決定し，次に適切な命令を使用してデータ項目の値を決定します。

mqBagToBuffer，mqExecuteおよびmqPutBag命令の場合は，mqAddIntegerまたはmqSetInteger命令を使用してMQIACF_INQUIRYデータ項目を必ずバッグに追加します。

2313

X'00000909'

MQRC_INCONSISTENT_ITEM_TYPE

指定セレクタの異なるオカレンスをバッグに追加するためにmqAddIntegerまたはmqAddString命令が発行されましたが，オカレンスのデータ型が最初のオカレンスのデータ型と異なりました。

mqBufferToBagおよびmqGetBag命令で，バッファまたはメッセージ内のPCFに複数のオカレンスがあるセレクタが含まれていて，それらのオカレンスのデータ型が不一致な場合にも，この理由コードが発生することがあります。

対処

mqAddIntegerおよびmqAddString命令の場合は，バッグ内のセレクタで最初のオカレンスのデータ型に適した命令を使用してください。

mqBufferToBagおよびmqGetBag命令の場合は，バッファを作成したか，またはメッセージを送信したアプリケーションのロジックを確認して，セレクタの複数オカレンスのデータ型が同じであるか確認します。セレクタのデータ型が混在しているメッセージは，mqGetBag命令では取り出せません。

・MQGMO_BROWSE_*オプションの一つが指定されると，メッセージはキューに残り，MQGET命令で取り出せます。

・その他の場合は，メッセージがキューからすでに削除され廃棄されています。メッセージがトランザクション内で取り出された場合，トランザクションをロールバックしメッセージをMQGET命令で取り出せます。

2314

X'0000090A'

MQRC_INDEX_ERROR

命令またはメソッドの索引引数に無効な値があります。値はゼロ以上でなければいけません。バッグ命令の場合は特定のMQIND_*値も指定できます。

mqDeleteItem，mqSetIntegerおよびmqSetString命令の場合は，MQIND_ALLとMQIND_NONEが有効です。

mqInquireBag，mqInquireInteger，mqInquireStringおよびmqInquireItemInfo命令の場合は，MQIND_NONEが有効です。

対処

有効な値を指定してください。

2315

X'0000090B'

MQRC_SYSTEM_BAG_NOT_ALTERABLE

バッグへデータ項目を追加したり，バッグ内の既存データ項目値を変更したり，メッセージを取り出してバッグへ挿入したりする目的で命令が発行されました。しかし，前回のmqExecute命令の結果としてシステムが作成したバッグであるため，命令は失敗しました。アプリケーションからシステムバッグを変更できません。

対処

アプリケーションによって作成されたバッグのハンドルを指定するか，命令を削除してください。

2316

X'0000090C'

MQRC_ITEM_COUNT_ERROR

mqTruncateBag命令が発行されましたが，ItemCount引数に指定された値が無効です。値がゼロより小さいか，バッグ内のユーザ定義のデータ項目数より大きな値です。

mqCountItems命令でも，引数ポインタが無効か引数ポインタが読み取り専用ストレージを指していると，この理由コードが発生します。無効な引数ポインタを必ずしも検出できません。検出されなかった場合は予期しない結果が発生します。

対処

有効な値を指定してください。mqCountItems命令を使用して，バッグ内のユーザ定義のデータ項目数を確認します。

2317

X'0000090D'

MQRC_FORMAT_NOT_SUPPORTED

メッセージ記述子MQMD構造体のFormatフィールドにサポートされない値があります。

mqPutBag命令の場合，エラーに示されているフィールドは命令のMsgDesc引数内にあります。

mqGetBag命令の場合，エラーに示されているフィールドは，取り出すメッセージのメッセージ記述子にあります。

対処

値は次に示すどれかです。

・MQFMT_ADMIN

・MQFMT_EVENT

・MQFMT_PCF

メッセージ内のFormatフィールドの値が上記のどれでもない場合，メッセージはmqGetBag命令で取り出せません。

・MQGMO_BROWSE_*オプションの一つが指定されると，メッセージはキューに残り，MQGET命令で取り出せます。

・その他の場合は，メッセージがキューからすでに削除され，廃棄されています。メッセージがトランザクション内で取り出された場合，トランザクションをロールバックしMQGET命令でメッセージを取り出せます。

2318

X'0000090E'

MQRC_SELECTOR_NOT_SUPPORTED

Selector引数にシステムセレクタである値（負の値）が指定されていますが，そのシステムセレクタは，命令でサポートされている値ではありません。

対処

サポートされているセレクタ値を指定してください。

2319

X'0000090F'

MQRC_ITEM_VALUE_ERROR

mqInquireBagまたはmqInquireInteger命令が発行されましたが，ItemValue引数が無効です。引数ポインタが無効か，または読み取り専用ストレージを指しています。無効な引数ポインタを必ずしも検出できません。検出されなかった場合は予期しない結果が発生します。

対処

引数を訂正してください。

2320

X'00000910'

MQRC_HBAG_ERROR

引数としてバッグハンドルが指定された命令が発行されましたが，ハンドルが無効です。出力引数の場合，引数ポインタが無効か引数ポインタが読み取り専用ストレージを指しているときも，この理由コードが発生します。無効な引数ポインタを必ずしも検出できません。検出されなかった場合は予期しない結果が発生します。

対処

引数を訂正してください。

2321

X'00000911'

MQRC_PARAMETER_MISSING

管理メッセージには，管理バッグ内にない引数が必要です。この理由コードは，MQCBO_ADMIN_BAGまたはMQCBO_REORDER_AS_REQUIREDオプションによって作成されたバッグだけに発生します。

対処

発行する管理コマンドの記述を見直して，バッグ内にすべての必要な引数があることを確認してください。

2322

X'00000912'

MQRC_CMD_SERVER_NOT_AVAILABLE

管理コマンドを処理するコマンドサーバが使用できません。

対処

コマンドサーバを開始してください。

2323

X'00000913'

MQRC_STRING_LENGTH_ERROR

StringLength引数が無効です。引数ポインタが無効か，または読み取り専用ストレージを指しています。無効な引数ポインタを必ずしも検出できません。検出されなかった場合は予期しない結果が発生します。

対処

引数を訂正してください。

2324

X'00000914'

MQRC_INQUIRY_COMMAND_ERROR

事前にmqAddInquiryによって属性セレクタがバッグに追加されましたが，mqBagToBuffer，mqExecuteまたはmqPutBag命令に使用するコマンドコードが認識されません。その結果，正しいPCFメッセージは生成されません。

対処

mqAddInquiry命令を削除し，代わりに適切なMQIACF_*_ATTRSまたはMQIACH_*_ATTRSセレクタを指定したmqAddInteger命令を使用してください。

2325

X'00000915'

MQRC_NESTED_BAG_NOT_SUPPORTED

命令への入力であるバッグにネストバッグがあります。ネストバッグは，命令からの出力であるバッグの場合だけサポートされます。

対処

異なるバッグを命令への入力として使用してください。

2326

X'00000916'

MQRC_BAG_WRONG_TYPE

命令に対して不正な型のバッグのハンドルが，Bag引数に指定されています。バッグは管理バッグでなくてはいけません。つまり，MQCBO_ADMIN_BAGオプションを指定したmqCreateBag命令で作成するバッグの必要があります。

対処

バッグを作成するときにMQCBO_ADMIN_BAGオプションを指定してください。

2327

X'00000917'

MQRC_ITEM_TYPE_ERROR

mqInquireItemInfo命令が発行されましたが，ItemType引数が無効です。引数ポインタが無効かまたは読み取り専用ストレージを指しています。無効な引数ポインタを必ずしも検出できません。検出されなかった場合は予期しない結果が発生します。

対処

引数を訂正してください。

2328

X'00000918'

MQRC_SYSTEM_BAG_NOT_DELETABLE

バッグを削除するためにmqDeleteBag命令が発行されました。しかし，前回のmqExecute命令の結果システムが作成したバッグだったため，命令は失敗しました。アプリケーションでシステムバッグを削除できません。

対処

アプリケーションによって作成されたバッグのハンドルを指定するか，命令を削除してください。

2329

X'00000919'

MQRC_SYSTEM_ITEM_NOT_DELETABLE

バッグからシステムデータ項目（MQIASY_*セレクタの一つを持つデータ項目）の値を削除するための命令が発行されました。しかし，そのデータ項目はアプリケーションで削除できないため命令は失敗しました。

対処

ユーザ定義データ項目のセレクタを指定するか，命令を削除してください。

2330

X'0000091A'

MQRC_CODED_CHAR_SET_ID_ERROR

CodedCharSetId引数が無効です。引数ポインタが無効かまたは読み取り専用ストレージを指しています。無効な引数ポインタを必ずしも検出できません。検出されなかった場合は予期しない結果が発生します。

対処

引数を訂正してください。

2331

X'0000091B'

MQRC_MSG_TOKEN_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2332

X'0000091C'

MQRC_MISSING_WIH

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2333

X'0000091D'

MQRC_WIH_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2334

X'0000091E'

MQRC_RFH_ERROR

MQPUTまたはMQPUT1命令が発行されましたが，メッセージデータに無効なMQRFHまたはMQRFH2構造体があります。次に示すエラーの可能性があります。

StrucIdフィールドがMQRFH_STRUC_IDではありません。

VersionフィールドがMQRFH_VERSION_1（MQRFH構造体）またはMQRFH_VERSION_2（MQRFH2構造体）ではありません。

StrucLengthフィールドで指定する値が小さ過ぎるため，構造体および構造体の末尾にある可変長データを入れることができません。

CodedCharSetIdフィールドに，0または無効な負の値が指定されています。

命令のBufferLength引数の値が小さ過ぎるため，構造体を入れることができません。構造体がメッセージの末尾を超えて拡張されています。

対処

メッセージを生成したアプリケーションを変更して，有効なMQRFH構造体がメッセージデータに配置されるようにしてください。

2335

X'0000091F'

MQRC_RFH_STRING_ERROR

MQRFH構造体のNameValueStringフィールドの内容が無効です。NameValueStringは，次に示す規則に正確に従ってください。

文字列は，一つ以上の空白で区切られたゼロ以上の名前と値の対で構成されなければなりません。この場合の空白は有意ではありません。

名前または値に有意のブランクが含まれている場合は，その名前または値を二重引用符で囲んでください。

名前または値それ自体に一つ以上の二重引用符が含まれている場合は，その名前または値を二重引用符で囲み，かつ組み込まれている二重引用符は二重にしてください。

名前または値には，区切り文字の役割を持つヌル以外のどの文字でも含めることができます。ヌルおよびそれに続く文字は，NameValueStringに定義された長さまで無視されます。

NameValueStringを次に示します。

Famous_Words "The program displayed ""Hello World"""

対処

メッセージを生成したアプリケーションを変更して，このアプリケーションが上記の規則に正確に従ったデータをNameValueStringフィールドに配置するようにします。StrucLengthフィールドが正しい値に設定されていることを確認してください。

2336

X'00000920'

MQRC_RFH_COMMAND_ERROR

メッセージにMQRFH構造体がありますが，NameValueStringフィールドに含まれているコマンド名は無効です。

対処

メッセージを生成したアプリケーションを変更して，このアプリケーションが有効なコマンド名をNameValueStringフィールドに配置するようにしてください。

2337

X'00000921'

MQRC_RFH_PARM_ERROR

メッセージにMQRFH構造体がありますが，NameValueStringフィールドにある引数名は指定されたコマンドには無効です。

対処

メッセージを生成したアプリケーションを変更して，このアプリケーションがNameValueStringフィールドに指定したコマンドに有効な引数だけを配置するようにしてください。

2338

X'00000922'

MQRC_RFH_DUPLICATE_PARM

メッセージにMQRFH構造体があります。しかし，指定したコマンドに引数の出現は1回だけが有効であるのに，NameValueStringフィールドに2回以上出現しています。

対処

メッセージを生成したアプリケーションを変更して，NameValueStringフィールドに引数が1回だけ出現するようにしてください。

2339

X'00000923'

MQRC_RFH_PARM_MISSING

メッセージにMQRFH構造体があります。しかし，NameValueStringフィールドに指定するコマンドには，必要な引数が不足しています。

対処

メッセージを生成したアプリケーションを変更して，指定したコマンドに必要なすべての引数をNameValueStringフィールドに配置してください。

2340

X'00000924'

MQRC_CHAR_CONVERSION_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2341

X'00000925'

MQRC_UCS2_CONVERSION_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2342

X'00000926'

MQRC_DB2_NOT_AVAILABLE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2343

X'00000927'

MQRC_OBJECT_NOT_UNIQUE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2344

X'00000928'

MQRC_CONN_TAG_NOT_RELEASED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2345

X'00000929'

MQRC_CF_NOT_AVAILABLE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2346

X'0000092A'

MQRC_CF_STRUC_IN_USE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2347

X'0000092B'

MQRC_CF_STRUC_LIST_HDR_IN_USE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2348

X'0000092C'

MQRC_CF_STRUC_AUTH_FAILED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2349

X'0000092D'

MQRC_CF_STRUC_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2350

X'0000092E'

MQRC_CONN_TAG_NOT_USABLE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2351

X'0000092F'

MQRC_GLOBAL_UOW_CONFLICT

グローバルトランザクションの内部で，ほかのグローバルトランザクションに参加中の接続ハンドルを使用しようとしました。異なるDTCトランザクションに関係するオブジェクト間で，アプリケーションが接続ハンドルを渡すとこのエラーが発生することがあります。トランザクションの完了は非同期であるため，アプリケーションが最初のオブジェクトを完了してトランザクションをコミットしたあとでこのエラーが発生することがあります。

このエラーは，非トランザクションMQI命令の場合には発生しません。

この理由コードはWindows環境でだけ発生します。

対処

オブジェクトのクラスに定義されているMTS Transaction Support属性が正しく設定されているか確認してください。必要な場合には，異なるトランザクション内で実行中のオブジェクトによって接続ハンドルが使用されないようにアプリケーションを訂正してください。

2352

X'00000930'

MQRC_LOCAL_UOW_CONFLICT

グローバルトランザクションの内部で，キューマネジャが調整するローカルトランザクションに参加中の接続ハンドルを使用しようとしました。アプリケーションがオブジェクト間で接続ハンドルを渡すとき，一方のオブジェクトがDTCトランザクションに関係していて他方が関係していない場合に，このエラーが発生することがあります。

このエラーは，非トランザクションMQI命令の場合には発生しません。

この理由コードはWindowsの環境でだけ返されます。

対処

オブジェクトのクラスに定義されているMTS Transaction Support属性が正しく設定されているか確認してください。必要な場合には，接続ハンドルが異なるトランザクション内で実行中のオブジェクトによって使用されないようにアプリケーションを訂正してください。

2353

X'00000931'

MQRC_HANDLE_IN_USE_FOR_UOW

トランザクション外で，グローバルトランザクションに参加中の接続ハンドルを使用しようとしました。

アプリケーションがオブジェクト間で接続ハンドルを渡すとき，一方のオブジェクトがDTCトランザクションに関係していて他方が関係していない場合に，このエラーが発生することがあります。トランザクションの完了が非同期であるため，アプリケーションが最初のオブジェクトを完了してそのトランザクションをコミットしたあとでこのエラーが発生することがあります。

トランザクションとともに作成され，トランザクションに関連づけられた単一オブジェクトが実行中にその関連を失った場合にも，このエラーが発生することがあります。DTCがMTSとは独立してそのトランザクションを終了するとき，関連は失われます。この終了は，トランザクションがタイムアウトになったか，DTCが停止されたためである可能性があります。

このエラーは，非トランザクションMQI命令の場合には発生しません。

この理由コードはWindowsの環境でだけ返されます。

対処

オブジェクトのクラスに定義されているMTS Transaction Support属性が正しく設定されているか確認してください。必要な場合には，異なるトランザクション内で実行中のオブジェクトが同じ接続ハンドルの使用を試行しないようにアプリケーションを訂正してください。

2354

X'00000932'

MQRC_UOW_ENLISTMENT_ERROR

この理由コードはいろいろな理由で発生することがあります。最もよくある理由は，DTCトランザクションによって作成されたオブジェクトが，DTCトランザクションがタイムアウトするまでにトランザクションのMQI命令を発行しないことです。トランザクションのMQI命令が発行されたあとでDTCトランザクションがタイムアウトになる場合，MQI命令の失敗によって理由コードMQRC_HANDLE_IN_USE_FOR_UOWが返されます。

MQRC_UOW_ENLISTMENT_ERRORが返されるほかの理由は，不正なインストールです。Windows NT Service PackはWindows NT Option Packのあとにインストールしてください。

この理由コードはWindows環境でだけ返されます。

対処

DTCのTransaction timeout値を確認してください。必要な場合には，インストール順序を確認してください。

2355

X'00000933'

MQRC_UOW_MIX_NOT_SUPPORTED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2356

X'00000934'

MQRC_WXP_ERROR

チェーンから次のレコードのアドレスを取得するために，クラスタワークロード出口からMQXCLWLN命令が発行されました。次に示すどれかの理由で，ワークロード出口引数構造体ExitParmsが有効ではありません。

引数ポインタが無効です。無効な引数およびポインタを必ず検出できるわけではありません。検出されなかった場合は予期しない結果が発生します。

StrucIdフィールドがMQWXP_STRUC_IDではありません。

VersionフィールドがMQWXP_VERSION_2ではありません。

対処

ExitParmsに指定された引数が，出口が呼び出されたときに出口に渡されたMQWXP構造体であることを確認してください。

2357

X'00000935'

MQRC_CURRENT_RECORD_ERROR

チェーンの次のレコードアドレスを取得するために，クラスタワークロード出口からMQXCLWLN命令が発行されましたが，CurrentRecord引数によって指定されたアドレスが有効なレコードのアドレスではありません。CurrentRecordはクラスタキャッシュ内にあるあて先レコード（MQWDR），キューレコード（MQWQR），またはクラスタレコード（MQWCR）でなければなりません。

対処

クラスタワークロード出口がクラスタキャッシュにある有効なレコードのアドレスを渡していることを確認してください。

2358

X'00000936'

MQRC_NEXT_OFFSET_ERROR

チェーンの次のレコードアドレスを取得するために，クラスタワークロード出口からMQXCLWLN命令が発行されましたが，NextOffset引数によって指定されたオフセットが有効ではありません。NextOffsetは以下のフィールドのどれかの値でなければなりません。

MQWDRのChannelDefOffsetフィールド

MQWDRのClusterRecOffsetフィールド

MQWQRのClusterRecOffsetフィールド

MQWCRのClusterRecOffsetフィールド

対処

NextOffset引数に指定されている値が，上記のフィールドのどれかの値であることを確認してください。

2359

X'00000937'

MQRC_NO_RECORD_AVAILABLE

チェーンの次のレコードアドレスを取得するために，クラスタワークロード出口からMQXCLWLN命令が発行されましたが，現行レコードがチェーン内の最後のレコードです。

対処

ありません。

2360

X'00000938'

MQRC_OBJECT_LEVEL_INCOMPATIBLE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2361

X'00000939'

MQRC_NEXT_RECORD_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2362

X'0000093A'

MQRC_BACKOUT_THRESHOLD_REACHED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2363

X'0000093B'

MQRC_MSG_NOT_MATCHED

この理由コードは，MQDLH構造体のReasonフィールドまたは報告メッセージのMQMD構造体のFeedbackフィールドにだけ発生します。

ポイントツーポイントメッセージングを実行している間に，JMSは，キューをモニタするConnectionConsumerのセレクタに合わないメッセージを検知しました。性能を維持するため，そのメッセージはMQMD構造体のReportフィールドの後処理オプションに従って処理されました。

ReportフィールドでMQRO_EXCEPTION_*オプションのどれかを指定する場合，この理由コードが報告メッセージのFeedbackフィールドに出力されます。ReportフィールドでMQRO_DEAD_LETTER_Qを指定するか，または後処理オプションがデフォルトのままの場合，この理由コードがMQDLH構造体のReasonフィールドに出力されます。

対処

キューをモニタするConnectionConsumerが十分なセレクタを提供していることを確認してください。または，メッセージを保持するようにQueueConnectionFactoryを設定します。

2364

X'0000093C'

MQRC_JMS_FORMAT_ERROR

この理由コードは，パースできないというメッセージをJMSが検出した場合に発生します。JMS ConnectionConsumerによってこのようなメッセージが検出された場合，そのメッセージはMQMD構造体のReportフィールドの後処理オプションに従って処理されます。

ReportフィールドでMQRO_EXCEPTION_*オプションのどれかを指定する場合，この理由コードが報告メッセージのFeedbackフィールドに出力されます。ReportフィールドでMQRO_DEAD_LETTER_Qを指定するか，または後処理オプションがデフォルトのままの場合，この理由コードがMQDLH構造体のReasonフィールドに出力されます。

対処

メッセージの発行元を調査してください。

2365

X'0000093D'

MQRC_SEGMENTS_NOT_SUPPORTED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2366

X'0000093E'

MQRC_WRONG_CF_LEVEL

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2367

X'0000093F'

MQRC_CONFIG_CREATE_OBJECT

この状態は，オブジェクトが作成される場合に検出されます。

対処

ありません。この理由コードは，対応するイベントメッセージの識別にだけ使用されます。

2368

X'00000940'

MQRC_CONFIG_CHANGE_OBJECT

この状態は，オブジェクトが変更される場合に検出されます。

対処

ありません。この理由コードは，対応するイベントメッセージの識別にだけ使用されます。

2369

X'00000941'

MQRC_CONFIG_DELETE_OBJECT

この状態は，オブジェクトが削除される場合に検出されます。

対処

ありません。この理由コードは，対応するイベントメッセージの識別にだけ使用されます。

2370

X'00000942'

MQRC_CONFIG_REFRESH_OBJECT

この状態は，オブジェクトが更新される場合に検出されます。

対処

ありません。この理由コードは，対応するイベントメッセージの識別にだけ使用されます。

2371

X'00000943'

MQRC_CHANNEL_SSL_ERROR

この状態は，SSLキー交換または認証の失敗のために接続が確立できない場合に検出されます。

対処

ありません。この理由コードは，対応するイベントメッセージの識別にだけ使用されます。

2373

X'00000945'

MQRC_CF_STRUC_FAILED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2374

X'00000946'

MQRC_API_EXIT_ERROR

API出口機能が無効な応答コードを返したか，またはほかの理由で失敗しました。

対処

出口のロジックを調べ，出口がMQAXP構造体のExitResponseフィールドまたはExitResponse2フィールドに有効な値を返すことを確認してください。FFSTレコードを調べて問題の詳細情報があるか確認してください。

2375

X'00000947'

MQRC_API_EXIT_INIT_ERROR

API出口機能のための実行環境の初期化中に，キューマネジャでエラーが発生しました。

問題についての詳細情報を取得するために，FFSTレコードを調査してください。

2376

X'00000948'

MQRC_API_EXIT_TERM_ERROR

API出口機能のための実行環境の終了中に，キューマネジャでエラーが発生しました。

問題についての詳細情報を取得するために，FFSTレコードを調査してください。

2377

X'00000949'

MQRC_EXIT_REASON_ERROR

API出口機能によってMQXEP命令が発行されましたが，ExitReason引数に指定された値が無効か，または指定された機能識別子Functionでサポートされていません。

対処

Functionに指定された値に対して有効な値をExitReasonに指定するよう，出口機能を変更してください。

2378

X'0000094A'

MQRC_RESERVED_VALUE_ERROR

API出口機能によってMQXEP命令が発行されましたが，Reserved引数に指定された値が無効です。値はヌルポインタにしてください。

対処

Reserved引数の値としてヌルポインタを指定するように出口を変更してください。

2379

X'0000094B'

MQRC_NO_DATA_AVAILABLE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2380

X'0000094C'

MQRC_SCO_ERROR

MQCONNX命令で，次に示すどちらかの理由によってMQSCO構造体が無効です。

StrucIdフィールドがMQSCO_STRUC_IDです。

VersionフィールドがMQSCO_VERSION_1ではありません。

対処

MQSCO構造体の定義を訂正してください。

2381

X'0000094D'

MQRC_KEY_REPOSITORY_ERROR

MQCONNまたはMQCONNX命令で，キーリポジトリの位置が指定されていないか，無効か，または位置を指定してキーリポジトリにアクセスするとエラーが発生します。キーリポジトリの位置は，次に示すどちらかによって指定されます。

MQSSLKEYR環境変数（MQCONNまたはMQCONNX命令の場合）

MQSCO構造体のKeyRepositoryフィールドの値（MQCONNX命令の場合）

MQCONNX命令でMQSSLKEYRとKeyRepositoryの両方が指定されている場合，KeyRepositoryが使用されます。

対処

キーリポジトリに有効な位置を指定してください。

2382

X'0000094E'

MQRC_CRYPTO_HARDWARE_ERROR

MQCONNまたはMQCONNX命令で，暗号ハードウェアの構成文字列が無効か，または構成文字列を使用して暗号ハードウェアを構成するとエラーが発生します。構成文字列は，次に示すどちらかによって指定されます。

MQSSLCRYP環境変数（MQCONNまたはMQCONNX命令の場合）

MQSCO構造体のCryptoHardwareフィールドの値（MQCONNX命令の場合）

MQCONNX命令でMQSSLCRYPとCryptoHardwareの両方が指定されている場合，CryptoHardwareが使用されます。

対処

暗号ハードウェアに有効な構成文字列を指定してください。

2383

X'0000094F'

MQRC_AUTH_INFO_REC_COUNT_ERROR

MQCONNX命令で，MQSCO構造体のAuthInfoRecCountフィールドに，0より小さい値が指定されています。

対処

AuthInfoRecCountフィールドにゼロ以上の値を指定してください。

2384

X'00000950'

MQRC_AUTH_INFO_REC_ERROR

MQCONNX命令で，MQSCO構造体にMQAIRレコードのアドレスが正確に指定されていません。次に示すどれかが該当します。

AuthInfoRecCountはゼロより大きいが，AuthInfoRecOffsetがゼロであり，AuthInfoRecPtrがヌルポインタです。

AuthInfoRecOffsetがゼロではなく，AuthInfoRecPtrがヌルポインタではありません。

AuthInfoRecPtrが無効なポインタです。

AuthInfoRecOffsetまたはAuthInfoRecPtrが，アクセス不可能なストレージを指しています。

対処

AuthInfoRecOffsetまたはAuthInfoRecPtrの一方がゼロで，もう一方がゼロ以外の数値にしてください。使用しているフィールドがアクセス可能なストレージを指していることを確認します。

2385

X'00000951'

MQRC_AIR_ERROR

MQCONNX命令でMQAIRレコードが無効です。その理由は次に示すどちらかです。

StrucIdフィールドがMQAIR_STRUC_IDではありません。

VersionフィールドがMQAIR_VERSION_1ではありません。

対処

MQAIRレコードの定義を訂正してください。

2386

X'00000952'

MQRC_AUTH_INFO_TYPE_ERROR

MQCONNX命令で，MQAIRレコードのAuthInfoTypeフィールドに無効な値が指定されています。

対処

AuthInfoTypeにMQAIT_CRL_LDAPを指定してください。

2387

X'00000953'

MQRC_AUTH_INFO_CONN_NAME_ERROR

MQCONNX命令で，MQAIRレコードのAuthInfoConnNameフィールドに無効な値が指定されています。

対処

有効な接続名を指定してください。

2388

X'00000954'

MQRC_LDAP_USER_NAME_ERROR

MQCONNX命令で，MQAIRレコードのLDAPユーザ名が正しく指定されていません。次に示すどれかが該当します。

LDAPUserNameLengthがゼロより大きいが，LDAPUserNameOffsetがゼロであり，LDAPUserNamePtrがヌルポインタです。

LDAPUserNameOffsetがゼロではなく，LDAPUserNamePtrがヌルポインタではありません。

LDAPUserNamePtrが無効なポインタです。

LDAPUserNameOffsetまたはLDAPUserNamePtrが，アクセスできないストレージを指しています。

対処

LDAPUserNameOffsetまたはLDAPUserNamePtrの一方がゼロで，もう一方がゼロ以外の数値にしてください。使用しているフィールドがアクセスできるストレージを指していることを確認します。

2389

X'00000955'

MQRC_LDAP_USER_NAME_LENGTH_ERR

MQCONNX命令で，MQAIRレコードのLDAPUserNameLengthフィールドにゼロより小さい値が指定されています。

対処

LDAPUserNameLengthに，ゼロ以上の値を指定してください。

2390

X'00000956'

MQRC_LDAP_PASSWORD_ERROR

MQCONNX命令で，MQAIRレコードのLDAPPasswordフィールドに値が指定されていますが，このフィールドには値を指定できません。

対処

ブランクまたはヌルの値を指定してください。

2391

X'00000957'

MQRC_SSL_ALREADY_INITIALIZED

SSL構成オプションを指定してMQCONNまたはMQCONNX命令が発行されましたが，SSL環境は初期化済みです。キューマネジャとの接続は正常に完了しましたが，命令に指定されたSSL構成オプションは無視されました。代わりに既存のSSL環境が使用されました。

対処

MQCONNまたはMQCONNX命令に定義したSSL構成オプションでアプリケーションを実行する場合，MQDISC命令を使用してキューマネジャとの接続を切断して，アプリケーションを終了してください。または，SSL環境が初期設定されていないときにアプリケーションをあとで実行してください。

2392

X'00000958'

MQRC_SSL_CONFIG_ERROR

MQCONNX命令で，MQCNO構造体はMQSCO構造体を正しく指定していません。次に示すどれかが該当します。

SSLConfigOffsetがゼロではなく，SSLConfigPtrがヌルポインタではありません。

SSLConfigPtrが無効なポインタです。

SSLConfigOffsetまたはSSLConfigPtrが，アクセスできないストレージを指しています。

対処

SSLConfigOffsetまたはSSLConfigPtrの一方がゼロで，もう一方がゼロ以外の数値にしてください。使用しているフィールドがアクセスできるストレージを指していることを確認します。

2393

X'00000959'

MQRC_SSL_INITIALIZATION_ERROR

SSL構成オプションを指定してMQCONNまたはMQCONNX命令が発行されましたが，SSL環境の初期化中にエラーが発生しました。

対処

SSLのインストールが正しいことを確認してください。

2394

X'0000095A'

MQRC_Q_INDEX_TYPE_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

2396

X'0000095C'

MQRC_SSL_NOT_ALLOWED

SSL暗号化を指定したキューマネジャへの接続が要求されました。しかし，要求された接続モード（バインディング接続など）ではSSLがサポートされていません。

この理由コードは，Javaアプリケーションの場合だけ発生します。

対処

クライアント接続モードを要求するか，またはSSL暗号化を使用不可にするよう，アプリケーションを訂正してください。

2397

X'0000095D'

MQRC_JSSE_ERROR

JSSEがエラー（SSL暗号化を使用したキューマネジャとの接続中など）を報告しました。この理由コードを含むMQExceptionオブジェクトは，JSSEがスローする例外を参照します。これは，MQException.getCause()メソッドを使用して取得できます。JMSでは，MQExceptionはスローされたJMSExceptionにリンクされます。

この理由コードは，Javaアプリケーションの場合だけ発生します。

対処

原因となった例外を調査して，JSSEエラーを確認してください。

2398

X'0000095E'

MQRC_SSL_PEER_NAME_MISMATCH

アプリケーションはSSL暗号化を使用してキューマネジャに接続しようとしましたが，キューマネジャによって示された識別名は，指定されたパターンと一致しません。

この理由コードは，Javaアプリケーションの場合だけ発生します。

対処

キューマネジャの識別で使用する証明書を調査してください。また，アプリケーションによって指定されているsslPeerNameプロパティの値も調査してください。

2399

X'0000095F'

MQRC_SSL_PEER_NAME_ERROR

アプリケーションに指定されているピア名の形式が不正です。

この理由コードは，Javaアプリケーションの場合だけ発生します。

対処

アプリケーションによって指定されているsslPeerNameプロパティの値を調査してください。

2400

X'00000960'

MQRC_UNSUPPORTED_CIPHER_SUITE

SSL暗号化を指定したキューマネジャへの接続が要求されました。しかし，アプリケーションに指定されているCipherSuiteはサポートされていないことがJSSEによって報告されました。

この理由コードは，Javaアプリケーションの場合だけ発生します。

対処

アプリケーションに指定されているCipherSuiteを調査してください。JSSECipherSuiteの名前は，キューマネジャで使用される同等のCipherSpecとは異なることに注意してください。

また，JSSEが正しくインストールされているか確認してください。

2401

X'00000961'

MQRC_SSL_CERTIFICATE_REVOKED

SSL暗号化を指定したキューマネジャへの接続が要求されました。しかし，キューマネジャによって示された証明書は，指定されたCertStoreの一つによって取り消されていました。

この理由コードは，Javaアプリケーションの場合だけ発生します。

対処

キューマネジャの識別に使用する証明書を調査してください。

2402

X'00000962'

MQRC_SSL_CERT_STORE_ERROR

SSL暗号化を指定したキューマネジャへの接続が要求されました。しかし，アプリケーションが提供するCertStoreオブジェクトの中から，キューマネジャによって示される証明書を検索できませんでした。この理由コードのあるMQExceptionオブジェクトは，最初のCertStoreの検索時に検出されるExceptionを参照します。これはMQException.getCause()メソッドを使用して取得できます。JMSでは，MQExceptionはスローされるJMSExceptionにリンクされます。

この理由コードは，Javaアプリケーションの場合だけ発生します。

対処

原因となった例外を調査して，エラーを確認してください。アプリケーションが提供するCertStoreオブジェクトを調査してください。原因となった例外がjava.lang.NoSuchElementExceptionの場合，アプリケーションでCertStoreオブジェクトの空のコレクションを指定していないか確認してください。

6100

X'000017D4'

MQRC_REOPEN_EXCL_INPUT_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6101

X'000017D5'

MQRC_REOPEN_INQUIRE_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6102

X'000017D6'

MQRC_REOPEN_SAVED_CONTEXT_ERR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6103

X'000017D7'

MQRC_REOPEN_TEMPORARY_Q_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6104

X'000017D8'

MQRC_ATTRIBUTE_LOCKED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6105

X'000017D9'

MQRC_CURSOR_NOT_VALID

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6106

X'000017DA'

MQRC_ENCODING_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6107

X'000017DB'

MQRC_STRUC_ID_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6108

X'000017DC'

MQRC_NULL_POINTER

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6109

X'000017DD'

MQRC_NO_CONNECTION_REFERENCE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6110

X'000017DE'

MQRC_NO_BUFFER

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6111

X'000017DF'

MQRC_BINARY_DATA_LENGTH_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6112

X'000017E0'

MQRC_BUFFER_NOT_AUTOMATIC

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6113

X'000017E1'

MQRC_INSUFFICIENT_BUFFER

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6114

X'000017E2'

MQRC_INSUFFICIENT_DATA

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6115

X'000017E3'

MQRC_DATA_TRUNCATED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6116

X'000017E4'

MQRC_ZERO_LENGTH

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6117

X'000017E5'

MQRC_NEGATIVE_LENGTH

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6118

X'000017E6'

MQRC_NEGATIVE_OFFSET

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6119

X'000017E7'

MQRC_INCONSISTENT_FORMAT

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6120

X'000017E8'

MQRC_INCONSISTENT_OBJECT_STATE

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6121

X'000017E9'

MQRC_CONTEXT_OBJECT_NOT_VALID

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6122

X'000017EA'

MQRC_CONTEXT_OPEN_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6123

X'000017EB'

MQRC_STRUC_LENGTH_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6124

X'000017EC'

MQRC_NOT_CONNECTED

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6125

X'000017ED'

MQRC_NOT_OPEN

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6126

X'000017EE'

MQRC_DISTRIBUTION_LIST_EMPTY

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6127

X'000017EF'

MQRC_INCONSISTENT_OPEN_OPTIONS

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6128

X'000017F0'

MQRC_WRONG_VERSION

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

6129

X'000017F1'

MQRC_REFERENCE_ERROR

この値はTP1/Message Queueでは返りません。詳細については，IBM MQのマニュアルを参照してください。

付録C　マシンコード形式

メッセージデータのEncodingフィールドの構造について説明します。メッセージの構成およびメッセージデータの形式については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

Encodingフィールドは，次に示す四つのサブフィールドで構成される32ビット整数です。

2進整数に必要なマシンコード形式

10進パック形式整数に必要なマシンコード形式

浮動小数点数に必要なマシンコード形式

予備ビット

サブフィールドは，ビットマスクで識別されます。ビットマスクは，各サブフィールドに対応する位置のビットが1で，そのほかのビットは0です。最上位のビットは0，最下位のビットは31のようにナンバリングされ，各マスクは次のように定義されています。

MQENC_INTEGER_MASK

2進整数マシンコード形式用のマスク

Encodingフィールド中のビット28〜31を使用します。

MQENC_DECIMAL_MASK

10進パック形式整数のマシンコード形式用のマスク

Encodingフィールド中のビット24〜27を使用します。

MQENC_FLOAT_MASK

浮動小数点マシンコード形式用のマスク

Encodingフィールド中のビット20〜23を使用します。

MQENC_RESERVED_MASK

予約ビット用のマスク

Encodingフィールド中のビット0〜19を使用します。

付録C.1　2進整数のマシンコード形式

2進整数のマシンコード形式に有効なオプションを次に示します。

MQENC_INTEGER_UNDEFINED

未定義整数のマシンコード形式

2進整数は，未定義のマシンコード形式で表現されます。

MQENC_INTEGER_NORMAL

通常の整数のマシンコード形式

2進整数は，次に示す形式で表現されます。

ある数の中にある最下位のバイトは，最も高位なアドレスを持ち，最上位のバイトは，最も低位なアドレスを持ちます。

各バイトの最下位のビットは，次の高位アドレスを持つバイトと隣接しています。

各バイトの最上位ビットは，次の低位アドレスを持つバイトと隣接しています。

MQENC_INTEGER_REVERSED

整数マシンコード形式の反転

2進整数は，MQENC_INTEGER_NORMALと同じ方法で表現されますが，バイトは逆の順序に配列されます。各バイト中のビットは，MQENC_INTEGER_NORMALと同じ方法で配列されます。

付録C.2　10進パック形式整数のマシンコード形式

10進パック形式整数のマシンコード形式に有効なオプションを次に示します。

MQENC_DECIMAL_UNDEFINED

未定義の10進パック形式のマシンコード形式

10進パック形式整数は，未定義のマシンコード形式で表現されます。

MQENC_DECIMAL_NORMAL

通常の10進パック形式のマシンコード形式

10進パック形式整数は，通常の方法で表現されます。

各10進数字は，X'0'〜X'9'のうち，一つの16進数字を使って10進パック形式で表現されます。各16進数字は4ビットを使用します。10進パック形式の各バイトは，二つの10進数字を表現します。

10進パック形式の最下位のバイトは，最下位の10進数字を持つバイトです。その最下位のバイト中にある上位の4ビットに最下位の10進数字を持ち，下位4ビットに符号を持ちます。その符号は，X'C'（正符号），X'D'（負符号），X'F'（符号なし）のどれかです。

数字の最下位のバイトは高位アドレスを持ち，最上位のバイトは低位アドレスを持ちます。

各バイトの最下位のビットは，次の高位アドレスを持つバイトと隣接しています。バイトの最上位ビットは，次の低位アドレスを持つバイトと隣接しています。

MQENC_DECIMAL_REVERSED

10進パック形式のマシンコード形式の反転

10進パック形式整数は，MQENC_DECIMAL_NORMALと同じ方法で表現されますが，バイト単位では反転した順序に配列されます。各バイト中のビットは，MQENC_DECIMAL_NORMALと同じ方法で配置されます。

付録C.3　浮動小数点のマシンコード形式

浮動小数点のマシンコード形式に有効なオプションを次に示します。

MQENC_FLOAT_UNDEFINED

未定義の浮動小数点のマシンコード形式

浮動小数点数は，未定義のマシンコード形式で表現されます。

MQENC_FLOAT_IEEE_NORMAL

通常のIEEEフロートのマシンコード形式

浮動小数点数は，標準のIEEE（The Institute of Electrical and Electronics Engineers：米国電気電子学会）で使用している浮動小数点フォーマットで表現されます。バイト中の配列を次に示します。

仮数の最下位バイトは最も高位なアドレスを持ち，べき指数を含むバイトは最も低位なアドレスを持ちます。

各バイトの最下位のビットは，次の高位アドレスを持つバイトと隣接しています。

各バイトの最上位ビットは，次の低位アドレスを持つバイトと隣接しています。

MQENC_FLOAT_IEEE_REVERSED

IEEEフロートのマシンコード形式の反転

浮動小数点数は，MQENC_FLOAT_IEEE_NORMALと同じ方法で表現されますが，バイト単位では，反転した順序に配列されます。各バイト中のビットは，MQENC_FLOAT_IEEE_NORMALと同じ方法で配置されます。

MQENC_FLOAT_S390

System/390アーキテクチャフロートのマシンコード形式

浮動小数点数は，標準のSystem/390浮動小数点フォーマットで表現されます。これは，System/370でも使用されています。

付録C.4　マシンコード形式の作成と検証

Encodingフィールドの値を作成するには，要求されたマシンコード形式を示す適切な定数値を，論理的ORで結合します。論理的オペレーションをサポートしていない言語では，定数を加算できます。ただし，同じ定数は2回以上加算できません。

特定のマシンコード形式についてEncodingフィールドをテストするには，そのフィールドを論理的ANDで要求されるマシンコード形式のマスクで結合してください。また，そのマシンコード形式に有効な値と値が同じかどうか確認してください。マシンコード形式に有効な値は，MQENC_INTEGER_*，MQENC_DECIMAL_*，またはMQENC_FLOAT_*です。

論理的オペレーションがサポートされていない言語では，次に示す方法で各マシンコード形式化の値を確認できます。

要求されたマシンコード形式に対応する値を選択し，その値を"A"とします。

2進整数の場合：1

10進パック形式の場合：16

浮動小数点の場合：256

Encodingフィールドの値を"A"で割り，その結果を"B"とします。

"B"を16で割り，その結果を"C"とします。

"C"に16を掛けた値を"B"から引きます。その結果を"D"とします。

"D"に"A"を掛け，その結果を"E"とします。

"E"が要求されるマシンコード形式に有効な値と等しいか確認してください。

付録C.5　マシンアーキテクチャのマシンコード形式の要約

マシンアーキテクチャのマシンコード形式の要約を次の表に示します。

表C‒1　マシンアーキテクチャのマシンコード形式の要約

マシンアーキテクチャ

2進整数

マシンコード形式

10進パック形式

マシンコード形式

浮動小数点

マシンコード形式

3500，3050RXシリーズ

通常

通常

IEEE　通常

AS/400

通常

通常

IEEE　通常

EP8000

通常

通常

IEEE　通常

H9000，H9000Vシリーズ

通常

通常

IEEE　通常

Mシリーズ

通常

通常

IEEE　通常

PC/AT互換機

反転

反転

IEEE　反転

PS/2

反転

反転

IEEE　反転

RS/6000

通常

通常

IEEE　通常

System/390

通常

通常

System/390

付録D　報告オプションとメッセージフラグ

付録D.1　報告オプション

MQPUT命令およびMQPUT1命令で指定される，メッセージ記述子のReportフィールドの処理について説明します。Reportフィールドの詳細については，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」を参照してください。

Reportフィールドは三つのサブフィールドに分けられた32ビット整数です。三つのサブフィールドが示す報告オプションを次に示します。

ローカルキューマネジャが認識できない場合拒否される報告オプション

ローカルキューマネジャが認識できなくても受け付けられる報告オプション

ある条件が満たされたときに受け付けられる報告オプション

各サブフィールドはサブフィールドに対応する位置にビットが立ち，そのほかの位置にはビットが立っていないビットマスクで識別されます。サブフィールドの各ビットは隣接している必要はありません。ビットは，ビット0が最大重要ビットでありビット31が最小重要ビットです。次に示すマスクはサブフィールドを識別するために定義されています。

MQRO_REJECT_UNSUP_MASK

未サポートの報告オプションの場合拒否されるオプションのマスク

ローカルキューマネジャにサポートされていないため，MQPUT命令またはMQPUT1命令が，次に示すコードでエラーとなる報告オプションのReportフィールド中のビット位置を示します。

この場合に返される完了コードと理由コードを次に示します。

完了コード：MQCC_FAILED

理由コード：MQRC_REPORT_OPTIONS_ERROR

このサブフィールドはビット位置3と，ビット位置11〜13を使用します。

MQRO_ACCEPT_UNSUP_MASK

未サポートの報告オプションでも受け付けられるオプションのマスク

このマスクは報告フィールド内で，ローカルキューマネジャにサポートされていなくても，MQPUT命令またはMQPUT1命令を受け付ける報告オプションのビット位置を示します。

この場合に返される完了コードと理由コードを次に示します。

完了コード：MQCC_WARNING

理由コード：MQRC_UNKNOWN_REPORT_OPTION

このサブフィールドは，ビット位置0〜2，ビット位置4〜10，ビット位置24〜31を使用します。

MQRO_ACCEPT_UNSUP_IF_XMIT_MASK

ある条件のときだけ受け付けられる報告オプションのマスク

このマスクは報告フィールド内で，ローカルキューマネジャにサポートされていなくても，次に示す条件がすべて満たされたとき，MQPUT命令またはMQPUT1命令を受け付ける報告オプションのビット位置を示します。

メッセージが置かれる最初のキューが転送キューです。

アプリケーションは直接転送キューに登録していません。

これらの条件が満たされた場合は，次に示す完了コードと理由コードが返されます。

完了コード：MQCC_WARNING

理由コード：MQRC_UNKNOWN_REPORT_OPTION

また，条件が満たされない場合は，次に示す完了コードと理由コードが返されます。

完了コード：MQCC_FAILED

理由コード：MQRC_REPORT_OPTIONS_ERROR

Reportフィールドにキューマネジャが認識しないオプションを指定した場合，キューマネジャは，ReportフィールドとサブフィールドのマスクをビットごとにAND結合して，各サブフィールドを順番に確認します。AND結合の結果が0でなかった場合，完了コードと理由コードは上記に示した値が返されます。

MQCC_WARNINGが返される場合，ほかの警告条件があるときはどんな理由コードが返却されるかは定義されていません。

ローカルキューマネジャで認識できない報告オプションの指定および受け付けができれば，リモートキューマネジャで認識され処置される報告オプションを持つメッセージを送信するときに便利です。

付録D.2　メッセージフラグ

MsgFlagsフィールドは三つのサブフィールドに分けられた32ビット整数です。三つのサブフィールドが示すメッセージフラグを次に示します。

ローカルキューマネジャが認識できない場合，拒否されるメッセージフラグ

ローカルキューマネジャが認識できなくても受け付けられるメッセージフラグ

ある条件が満たされたときに受け付けられるメッセージフラグ

注意

MsgFlagsフィールドのすべてのサブフィールドは，キューマネジャが使用するために予約されています。

各サブフィールドはサブフィールドに対応する位置にビットが立ち，そのほかの位置にはビットが立っていないビットマスクで識別されます。ビットは，ビット0が最大重要ビットでありビット31が最小重要ビットです。次に示すマスクはサブフィールドを識別するために定義されています。

MQMF_REJECT_UNSUP_MASK

未サポートのメッセージフラグの場合，拒否されるメッセージフラグのマスク

ローカルキューマネジャにサポートされていないため，MQPUT命令またはMQPUT1命令が，次に示すコードでエラーとなるメッセージフラグフィールドのMsgFlagsフィールドの中のビット位置を示します。

この場合に返される完了コードと理由コードを次に示します。

完了コード：MQCC_FAILED

理由コード：MQRC_MSG_FLAGS_ERROR

このサブフィールドは，ビット位置20〜31を使用します。

なお，このサブフィールドには，次のメッセージフラグがあります。

MQMF_LAST_MSG_IN_GROUP

MQMF_LAST_SEGMENT

MQMF_MSG_IN_GROUP

MQMF_SEGMENT

MQMF_SEGMENTATION_ALLOWED

MQMF_ACCEPT_UNSUP_MASK

未サポートのメッセージフラグでも受け付けられるメッセージフラグのマスク

このマスクは，メッセージフラグがローカルキューマネジャによってサポートされていなくても，MQPUT命令またはMQPUT1命令で受け付けるMsgFlagsフィールドのビット位置を示します。この場合，完了コードはMQCC_OKです。

このサブフィールドは，ビット位置0〜11を使用します。

MQMF_ACCEPT_UNSUP_IF_XMIT_MASK

ある条件のときだけ受け付けられる，未サポートメッセージフラグのマスク

このマスクは，メッセージフラグがローカルキューマネジャによってサポートされていなくても，メッセージフラグをMQPUT命令またはMQPUT1命令で受け付けるMsgFlagsフィールドのビット位置を示します。ただし，次の条件を満たす場合だけです。

メッセージのあて先が，リモートキューマネジャです。

アプリケーションが直接ローカルの転送キューにメッセージを登録していません。つまり，MQOPEN命令またはMQPUT1命令の呼び出しによって指定されたオブジェクト記述子のObjectQMgrNameフィールドおよびObjectNameフィールドによって識別されるキューが，ローカルの転送キューではありません。

これらの条件が二つとも満たされた場合は，次に示す完了コードが返されます。

完了コード：MQCC_OK

また，条件が満たされない場合は，次に示す完了コードと理由コードが返されます。

完了コード：MQCC_FAILED

理由コード：MQRC_MSG_FLAGS_ERROR

このサブフィールドは，ビット位置12〜19を使用します。

MsgFlagsフィールドにキューマネジャが認識しないオプションを指定した場合，キューマネジャはMsgFlagsフィールドとサブフィールドのマスクをビットごとにAND結合して，各サブフィールドを順番に確認します。AND結合の結果が0でなかった場合は，完了コードと理由コードは上記に示した値が返されます。

付録E　各プログラミング言語での実現例

C言語およびCOBOL言語を使用する場合の，メッセージキューイング機能の呼び出し，引数，およびデータタイプの宣言の方法について説明します。

付録E.1　C言語での実現例

(1)　C言語での注意事項

(a)　ヘッダファイル

ヘッダファイルは，メッセージキューイング機能で使用する定数などを定義し，C言語で記述されたアプリケーションプログラムでメッセージキューイング機能を使用できるようにします。ヘッダファイルを次に示します。

CMQC：MQIのプロトタイプ宣言，データタイプ，および定数を定義します。

なお，ヘッダファイルのファイル名を次に示すように，#include指令で指定するとアプリケーションの移植性が良くなります。

＃include "cmqc.h"

(b)　関数

入力専用，MQHCONN型，MQHOBJ型，またはMQLONG型の引数は値渡しです。そのほかの引数はアドレス渡しです。

関数が呼び出されるとき，アドレス渡しの引数を常に指定する必要はありません。特定の引数が必要でない場合，引数データにあるアドレスの関数の呼び出しでは，引数のアドレスとしてヌルを指定できます。引数のアドレスとしてヌルを指定できる引数については，「2.　メッセージキューイング機能の命令」の各命令の説明を参照してください。

C言語では，関数の戻り値はありません。すべてvoid型で宣言されています。

(c)　データタイプとして宣言されない引数

MQGET，MQPUT，およびMQPUT1関数には，データタイプとして宣言されない引数やバッファ引数があります。この引数はアプリケーションメッセージデータの受け渡しをするときに使用します。

データタイプとして宣言されない引数は，MQBYTE型の配列として宣言します。この方法で引数を宣言するほかに，メッセージのデータ構造を示す構造体として宣言することもできます。実際の関数の引数は，void型のポインタとして宣言されているため，どんなデータのアドレスも関数呼び出しの引数として指定できます。

(d)　データタイプ

すべてのデータタイプは，C言語の記憶域クラス指定子typedefで定義されます。また，各データタイプのポインタ型のデータタイプも定義されます。ポインタ型のデータタイプ名は，ポインタを意味する"P"を先頭に付けた基本データタイプ名または構造体データタイプ名になります。ポインタの属性はMQPOINTER変数で定義します。次にポインタデータタイプの宣言の方法を示します。

#define MQPOINTER *               /* *を設定します          */
・・・
typedef MQLONG MQPOINTER PMQLONG; /* MQLONG型へのポインタ   */
typedef MQMD  MQPOINTER PMQMD;    /* MQMD型へのポインタ     */

(e)　ビット列の操作

ビット列は，MQBYTEn型の一つとして宣言されます。この型のフィールドが複写，比較，または設定される場合は，C言語の関数（memcpy，memcmp，memset）を使用してください。次に使用例を示します。

#include <string.h>
#include "cmqc.h"

MQMD MyMsgDesc;

memcpy(MyMsgDesc.MsgId, /* ヌルをMsgIdフィールドに設定します */
       MQMI_NONE,       /* 定数を使用して設定します           */
       sizeof(MyMsgDesc.MsgId));

memset(MyMsgDesc.CorrelId,
                     /* ヌルをCorrelIdフィールドに設定します */
       0x00,         /* 定数を使用しないで設定します          */
       sizeof(MQBYTE24));

文字列を操作する関数（strcpy，strcmp，strncpy，strncmp）は，MQBYTEn型で宣言されたデータには使用できません。

(f)　文字列の操作

キューマネジャがアプリケーションに文字データを返す場合，そのデータ長がフィールド長に足りないときは余りを空白で埋めます。また，キューマネジャはヌルで終わる文字列を返しません。そのため，文字列を操作する関数（strncpy，strncmp，strncat）を使用してください。

ヌルで終わる文字列を操作する関数（strcpy，strcmp，strcat）は使用しないでください。フィールド長を調べるときは，sizeof演算子を使用してください。文字列の長さを決めるstrlen関数は使用しないでください。

(g)　構造体の初期値

ヘッダファイル（CMQC）は，MQの構造体に初期値を設定するときに使用するマクロ変数を定義します。これらのマクロ変数は，MQXXX_DEFAULTという形式の名称です。MQXXXは構造体の名称を示します。次にマクロ変数の使用例を示します。

MQMD  MyMsgDesc = {MQMD_DEFAULT};
MQPMO MyPutOpts = {MQPMO_DEFAULT};

MQIが定義した値には，文字列のフィールドに設定できる値もあります。この値は次に示す二つの方法で定義されています。

文字列の長さと一致するマクロ変数として定義します。

定義されたフィールド長と同じ長さの文字列として定義します。なお，この長さにはヌルは含みません。MQMD構造体のFormatフィールドには，次のマクロ変数を定義します。

#define MQFMT_STRING "MQSTR△△△"  （△△△は空白を示します）

このマクロを使用するときは，memcpy関数およびmemcmp関数で操作してください。

文字の配列として定義します。

このマクロ変数の名称の最後には，"_ARRAY"が付きます。次にマクロ変数の定義例を示します。

#define MQFMT_STRING_ARRAY 'M','Q','S','T','R','△','△','△'

C++の場合，MQMD_DEFAULTマクロ変数で初期値が設定されています。この初期値と異なる値を使用したい場合は，この形式のマクロを使用してください。

(h)　動的構造体の初期値

必要な構造体の個数が決まっていない場合，calloc関数またはmalloc関数を使用して，動的にメモリを確保します。このようなフィールドを初期化する方法を次に示します。

構造体を初期化するため，MQXXX_DEFAULTマクロ変数を使用して構造体の変数を宣言します。この変数はほかの変数の初期値になります。

MQMD Model = {MQMD_DEFAULT};   /* 初期値の変数の定義 */

静的変数か動的変数かを決めるために，staticまたはautoを指定できます。

calloc関数またはmalloc関数を使用して，構造体の動的変数用のメモリを確保します。

PMQMD Instance;
Instance = malloc(sizeof(MQMD));
           /* 動的変数用のメモリの取得 */

memcpy関数を使用して，初期値の変数を動的変数に複写します。

memcpy(Instance,&Model,sizeof(MQMD)); /* 動的変数の初期化 */

(i)　C++での使用

C++では次に示すステートメントが，ヘッダファイルに記述されています。

#ifdef_cplusplus
 extern "C"{
#endif
・
・
・
#ifdef_cplusplus
 }
#endif

(j)　リンケージ方法

HP-UX，Windows，およびLinuxの場合，リンケージのコマンドに引数（-lmqa）を指定してください。

AIXの場合，リンケージのコマンドに引数（-lmqa2）を指定してください。

一つのロードモジュールにC言語およびCOBOL言語を混在できません。

(2)　関数

(a)　MQCLOSE命令　−　オブジェクトのクローズ

MQCLOSE(Hconn, &Hobj, Options, &CompCode, &Reason);

引数の宣言方法を次に示します。

MQHCONN Hconn;    /* コネクションハンドル */
MQHOBJ  Hobj;     /* オブジェクトハンドル */
MQLONG  Options;  /* クローズオプション   */
MQLONG  CompCode; /* 完了コード           */
MQLONG  Reason;   /* 理由コード           */

(b)　MQCONN命令　−　キューマネジャへの接続

MQCONN(Name, &Hconn, &CompCode, &Reason);

引数の宣言方法を次に示します。

MQCHAR48 Name;     /* キューマネジャ名     */
MQHCONN  Hconn;    /* コネクションハンドル */
MQLONG   CompCode; /* 完了コード           */
MQLONG   Reason;   /* 理由コード           */

(c)　MQDISC命令　−　キューマネジャからの切り離し

MQDISC(&Hconn, &CompCode, &Reason);

引数の宣言方法を次に示します。

MQHCONN Hconn;    /* コネクションハンドル */
MQLONG  CompCode; /* 完了コード           */
MQLONG  Reason;   /* 理由コード           */

(d)　MQGET命令　−　メッセージの取り出し

MQGET(Hconn, Hobj, &MsgDesc, &GetMsgOpts, BufferLength, Buffer,
&DataLength, &CompCode, &Reason);

引数の宣言方法を次に示します。

MQHCONN Hconn;        /* コネクションハンドル         */
MQHOBJ  Hobj;         /* オブジェクトハンドル         */
MQMD    MsgDesc;      /* メッセージ記述子             */
MQGMO   GetMsgOpts;   /* メッセージ取り出しオプション */
MQLONG  BufferLength; /* バッファ長                   */
MQBYTE  Buffer[n];    /* バッファ                     */
MQLONG  DataLength;   /* データ長                     */
MQLONG  CompCode;     /* 完了コード                   */
MQLONG  Reason;       /* 理由コード                   */

(e)　MQINQ命令　−　オブジェクトの属性の照会

MQINQ(Hconn, Hobj, SelectorCount, Selectors, IntAttrCount,
IntAttrs, CharAttrLength, CharAttrs, &CompCode, &Reason);

引数の宣言方法を次に示します。

MQHCONN Hconn;          /* コネクションハンドル */
MQHOBJ  Hobj;           /* オブジェクトハンドル */
MQLONG  SelectorCount;  /* セレクタ数           */
MQLONG  Selectors[n];   /* セレクタ             */
MQLONG  IntAttrCount;   /* 整数型属性数         */
MQLONG  IntAttrs[n];    /* 整数型属性値         */
MQLONG  CharAttrLength; /* 文字型属性長         */
MQCHAR  CharAttrs[n];   /* 文字型属性値         */
MQLONG  CompCode;       /* 完了コード           */
MQLONG  Reason;         /* 理由コード           */

(f)　MQOPEN命令　−　オブジェクトのオープン

MQOPEN(Hconn, &ObjDesc, Options, &Hobj, &CompCode, &Reason);

引数の宣言方法を次に示します。

MQHCONN Hconn;    /* コネクションハンドル */
MQOD    ObjDesc;  /* オブジェクト記述子   */
MQLONG  Options;  /* オープンオプション   */
MQHOBJ  Hobj;     /* オブジェクトハンドル */
MQLONG  CompCode; /* 完了コード           */
MQLONG  Reason;   /* 理由コード           */

(g)　MQPUT命令　−　メッセージの登録

MQPUT(Hconn, Hobj, &MsgDesc, &PutMsgOpts, BufferLength, Buffer,
&CompCode, &Reason);

引数の宣言方法を次に示します。

MQHCONN Hconn;        /* コネクションハンドル     */
MQHOBJ  Hobj;         /* オブジェクトハンドル     */
MQMD    MsgDesc;      /* メッセージ記述子         */
MQPMO   PutMsgOpts;   /* メッセージ登録オプション */
MQLONG  BufferLength; /* バッファ長               */
MQBYTE  Buffer[n];    /* バッファ                 */
MQLONG  CompCode;     /* 完了コード               */
MQLONG  Reason;       /* 理由コード               */

(h)　MQPUT1命令　−　1メッセージの登録

MQPUT1(Hconn, &ObjDesc, &MsgDesc, &PutMsgOpts, BufferLength,
Buffer, &CompCode, &Reason);

引数の宣言方法を次に示します。

MQHCONN Hconn;        /* コネクションハンドル     */
MQOD    ObjDesc;      /* オブジェクト記述子       */
MQMD    MsgDesc;      /* メッセージ記述子         */
MQPMO   PutMsgOpts;   /* メッセージ登録オプション */
MQLONG  BufferLength; /* バッファ長               */
MQBYTE  Buffer[n];    /* バッファ                 */
MQLONG  CompCode;     /* 完了コード               */
MQLONG  Reason;       /* 理由コード               */

(i)　MQSET命令　−　オブジェクトの属性の設定

MQSET(Hconn, Hobj, SelectorCount, Selectors, IntAttrCount,
IntAttrs, CharAttrLength, CharAttrs, &CompCode, &Reason);

引数の宣言方法を次に示します。

MQHCONN Hconn;          /* コネクションハンドル */
MQHOBJ  Hobj;           /* オブジェクトハンドル */
MQLONG  SelectorCount;  /* セレクタ数           */
MQLONG  Selectors[n];   /* セレクタ             */
MQLONG  IntAttrCount;   /* 整数型属性数         */
MQLONG  IntAttrs[n];    /* 整数型属性値         */
MQLONG  CharAttrLength; /* 文字型属性長         */
MQCHAR  CharAttrs[n];   /* 文字型属性値         */
MQLONG  CompCode;       /* 完了コード           */
MQLONG  Reason;         /* 理由コード           */

(3)　基本データタイプ

基本データタイプの宣言を，表E-1に示します。

表E‒1　基本データタイプの宣言（C言語）

データタイプ

表記

MQBYTE型

typedef unsigned char MQBYTE;

MQBYTE8型

typedef MQBYTE MQBYTE8[8];

MQBYTE16型

typedef MQBYTE MQBYTE16[16];

MQBYTE24型

typedef MQBYTE MQBYTE24[24];

MQBYTE32型

typedef MQBYTE MQBYTE32[32];

MQBYTE40型

typedef MQBYTE MQBYTE40[40];

MQBYTE128型

typedef MQBYTE MQBYTE128[128];

MQCHAR型

typedef char MQCHAR;

MQCHAR4型

typedef MQCHAR MQCHAR4[4];

MQCHAR8型

typedef MQCHAR MQCHAR8[8];

MQCHAR12型

typedef MQCHAR MQCHAR12[12];

MQCHAR20型

typedef MQCHAR MQCHAR20[20];

MQCHAR28型

typedef MQCHAR MQCHAR28[28];

MQCHAR32型

typedef MQCHAR MQCHAR32[32];

MQCHAR48型

typedef MQCHAR MQCHAR48[48];

MQCHAR64型

typedef MQCHAR MQCHAR64[64];

MQCHAR128型

typedef MQCHAR MQCHAR128[128];

MQCHAR256型

typedef MQCHAR MQCHAR256[256];

MQHCONN型

typedef MQLONG MQHCONN;

MQHOBJ型

typedef MQLONG MQHOBJ;

MQLONG型

LP64データ型モデルの場合

　typedef int MQLONG;

その他の場合

　typedef long MQLONG;

MQPTR型

typedef void MQPOINTER MQPTR;

MQULONG型

LP64データ型モデルの場合

　typedef unsigned int MQULONG;

その他の場合

　typedef unsigned long MQULONG;

PMQBYTE型

typedef MQBYTE MQPOINTER PMQBYTE;

PMQBYTE8型

typedef MQBYTE8[8] MQPOINTER PMQBYTE8[8];

PMQBYTE16型

typedef MQBYTE16[16] MQPOINTER PMQBYTE16[16];

PMQBYTE24型

typedef MQBYTE24[24] MQPOINTER PMQBYTE24[24];

PMQBYTE32型

typedef MQBYTE32[32] MQPOINTER PMQBYTE32[32];

PMQBYTE40型

typedef MQBYTE40[40] MQPOINTER PMQBYTE40[40];

PMQBYTE128型

typedef MQBYTE128[128] MQPOINTER PMQBYTE128[128];

PMQCHAR型

typedef MQCHAR MQPOINTER PMQCHAR;

PMQCHAR4型

typedef MQCHAR4[4] MQPOINTER PMQCHAR4[4];

PMQCHAR8型

typedef MQCHAR8[8] MQPOINTER PMQCHAR8[8];

PMQCHAR12型

typedef MQCHAR12[12] MQPOINTER PMQCHAR12[12];

PMQCHAR20型

typedef MQCHAR20[20] MQPOINTER PMQCHAR20[20];

PMQCHAR28型

typedef MQCHAR28[28] MQPOINTER PMQCHAR28[28];

PMQCHAR32型

typedef MQCHAR32[32] MQPOINTER PMQCHAR32[32];

PMQCHAR48型

typedef MQCHAR48[48] MQPOINTER PMQCHAR48[48];

PMQCHAR64型

typedef MQCHAR64[64] MQPOINTER PMQCHAR64[64];

PMQCHAR128型

typedef MQCHAR128[128] MQPOINTER PMQCHAR128[128];

PMQCHAR256型

typedef MQCHAR256[256] MQPOINTER PMQCHAR256[256];

PMQCHAR264型

typedef MQCHAR264[264] MQPOINTER PMQCHAR264[264];

PMQDLH型

typedef MQDLH MQPOINTER PMQDLH;

PMQGMO型

typedef MQGMO MQPOINTER PMQGMO;

PMQHCONN型

typedef MQHCONN MQPOINTER PMQHCONN;

PMQHOBJ型

typedef MQHOBJ MQPOINTER PMQHOBJ;

PMQLONG型

typedef MQLONG MQPOINTER PMQLONG;

PMQMD型

typedef MQMD MQPOINTER PMQMD;

PMQMD1型

typedef MQMD1[1] MQPOINTER PMQMD1[1];

PMQMDE型

typedef MQMDE MQPOINTER PMQMDE;

PMQOD型

typedef MQOD MQPOINTER PMQOD;

PMQPMO型

typedef MQPMO MQPOINTER PMQPMO;

PMQPTR型

typedef MQPTR MQPOINTER PMQPTR;

PMQRMH型

typedef MQRMH MQPOINTER PMQRMH;

PMQTM型

typedef MQTM MQPOINTER PMQTM;

PMQULONG型

typedef MQULONG MQPOINTER PMQULONG;

PMQVOID型

typedef void MQPOINTER PMQVOID;

PMQXQH型

typedef MQXQH MQPOINTER PMQXQH;

PPMQBYTE型

typedef PMQBYTE MQPOINTER PPMQBYTE;

PPMQCHAR型

typedef PMQCHAR MQPOINTER PPMQCHAR;

PPMQGMO型

typedef PMQGMO MQPOINTER PPMQGMO;

PPMQHCONN型

typedef PMQHCONN MQPOINTER PPMQHCONN;

PPMQHOBJ型

typedef PMQHOBJ MQPOINTER PPMQHOBJ;

PPMQLONG型

typedef PMQLONG MQPOINTER PPMQLONG;

PPMQMD型

typedef PMQMD MQPOINTER PPMQMD;

PPMQOD型

typedef PMQOD MQPOINTER PPMQOD;

PPMQPMO型

typedef PMQPMO MQPOINTER PPMQPMO;

PPMQULONG型

typedef PMQULONG MQPOINTER PPMQULONG;

PPMQVOID型

typedef PMQVOID MQPOINTER PPMQVOID;

(4)　構造体データタイプ

(a)　MQCFH構造体　−　PCFヘッダ

typedef struct tagMQCFH {
  MQLONG  Type;            /* 構造体タイプ             */
  MQLONG  StrucLength;     /* 構造体長                 */
  MQLONG  Version;         /* 構造体バージョン番号     */
  MQLONG  Command;         /* 命令識別子               */
  MQLONG  MsgSeqNumber;    /* メッセージシーケンス番号 */
  MQLONG  Control;         /* 制御オプション           */
  MQLONG  CompCode;        /* 完了コード               */
  MQLONG  Reason;          /* 理由コード               */
  MQLONG  ParameterCount;  /* 引数構造体の数           */
} MQCFH;

(b)　MQCFIL構造体　−　PCF整数リスト引数

typedef struct tagMQCFIL {
  MQLONG  Type;            /* 構造体タイプ */
  MQLONG  StrucLength;     /* 構造体長     */
  MQLONG  Parameter;       /* 引数識別子   */
  MQLONG  Count;           /* 引数値の数   */
  MQLONG  Values[1];       /* 引数の値     */
} MQCFIL;

(c)　MQCFIN構造体　−　PCF整数引数

typedef struct tagMQCFIN {
  MQLONG  Type;            /* 構造体タイプ */
  MQLONG  StrucLength;     /* 構造体長     */
  MQLONG  Parameter;       /* 引数識別子   */
  MQLONG  Value;           /* 引数の値     */
} MQCFIN;

(d)　MQCFSL構造体　−　PCF文字列リスト引数

typedef struct tagMQCFSL {
  MQLONG   Type;            /* 構造体タイプ     */
  MQLONG   StrucLength;     /* 構造体長         */
  MQLONG   Parameter;       /* 引数識別子       */
  MQLONG   CodedCharSetId;  /* 文字セット識別子 */
  MQLONG   Count;           /* 引数の値の数     */
  MQLONG   StringLength;    /* 文字列長         */
  MQCHAR   Strings;         /* 文字列の値       */
} MQCFSL;

(e)　MQCFST構造体　−　PCFストリング引数

typedef struct tagMQCFST {
  MQLONG  Type;            /* 構造体タイプ     */
  MQLONG  StrucLength;     /* 構造体長         */
  MQLONG  Parameter;       /* 引数識別子       */
  MQLONG  CodedCharSetId;  /* 文字セット識別子 */
  MQLONG  StringLength;    /* 文字列長         */
  MQCHAR  String[1];       /* 文字列の値       */
} MQCFST;

(f)　MQDH構造体　−　配布ヘッダ

typedef struct tagMQDH {
  MQCHAR4  StrucId;         /* 構造体識別子                         */
  MQLONG   Version;         /* 構造体バージョン番号                 */
  MQLONG   StrucLength;     /* MQDH構造体とそれに続く
                               MQOR構造体とMQPMR構造体を足した長さ  */
  MQLONG   Encoding;        /* MQOR構造体およびMQPMR構造体に続く
                               データのマシンコード形式             */
  MQLONG   CodedCharSetId;  /* MQOR構造体およびMQPMR構造体に続く
                               データの文字セット識別子             */
  MQCHAR8  Format;          /* MQOR構造体およびMQPMR構造体に続く
                               データのフォーマット名               */
  MQLONG   Flags;           /* フラグ                               */
  MQLONG   PutMsgRecFields; /* MQPMR構造体フィールドの存在          */
  MQLONG   RecsPresent;     /* MQOR構造体の数                       */
  MQLONG   ObjectRecOffset; /* 最初のMQOR構造体までのオフセット     */
  MQLONG   PutMsgRecOffset; /* 最初のMQPMR構造体までのオフセット    */
} MQDH;

(g)　MQDLH構造体　−　デッドレターヘッダ

typedef struct tagMQDLH {
  MQCHAR4  StrucId;        /* 構造体識別子               */
  MQLONG   Version;        /* 構造体バージョン番号       */
  MQLONG   Reason;         /* メッセージ通知理由         */

  MQCHAR48 DestQName;      /* あて先キュー名             */
  MQCHAR48 DestQMgrName;   /* あて先キューマネジャ名     */
  MQLONG   Encoding;       /* MQDLH構造体に続く
                              データのマシンコード形式   */
  MQLONG   CodedCharSetId; /* MQDLH構造体に続く
                              データの文字セット識別子   */
  MQCHAR8  Format;         /* MQDLH構造体に続く
                              データのフォーマット名     */
  MQLONG   PutApplType;    /* 登録アプリケーションタイプ */
  MQCHAR28 PutApplName;    /* 登録アプリケーション名     */
  MQCHAR8  PutDate;        /* 登録日付                   */
  MQCHAR8  PutTime;        /* 登録時刻                   */
} MQDLH;

(h)　MQGMO構造体　−　メッセージ取り出しオプション

typedef struct tagMQGMO {
  MQCHAR4  StrucId;       /* 構造体識別子             */
  MQLONG   Version;       /* 構造体バージョン番号     */
  MQLONG   Options;       /* 取り出しオプション       */
  MQLONG   WaitInterval;  /* 待ち合わせ最大時間       */
  MQLONG   Signal1;       /* シグナル                 */
  MQLONG   Signal2;       /* 予備                     */
  MQCHAR48 ResolvedQName; /* 受信キュー名             */
  MQLONG   MatchOptions;  /* 一致オプション           */
  MQCHAR   GroupStatus;   /* メッセージグループフラグ */
  MQCHAR   SegmentStatus; /* 論理メッセージフラグ     */
  MQCHAR   Segmentation;  /* セグメント分割フラグ     */
  MQCHAR   Reserved1;     /* 予備                     */
} MQGMO;

(i)　MQMD構造体　−　メッセージ記述子

typedef struct tagMQMD {
  MQCHAR4  StrucId;          /* 構造体識別子               */
  MQLONG   Version;          /* 構造体バージョン番号       */
  MQLONG   Report;           /* 報告メッセージオプション   */
  MQLONG   MsgType;          /* メッセージタイプ           */
  MQLONG   Expiry;           /* メッセージ保持時間         */
  MQLONG   Feedback;         /* 報告メッセージ返答コード   */
  MQLONG   Encoding;         /* メッセージデータの
                                          マシンコード形式 */
  MQLONG   CodedCharSetId;   /* メッセージデータの
                                          文字セット識別子 */
  MQCHAR8  Format;           /* メッセージデータの
                                            フォーマット名 */
  MQLONG   Priority;         /* メッセージ優先度           */
  MQLONG   Persistence;      /* メッセージ永続性           */
  MQBYTE24 MsgId;            /* メッセージ識別子           */
  MQBYTE24 CorrelId;         /* 相関識別子                 */
  MQLONG   BackoutCount;     /* ロールバック回数           */
  MQCHAR48 ReplyToQ;         /* 応答キュー名               */
  MQCHAR48 ReplyToQMgr;      /* 応答キューマネジャ名       */
  MQCHAR12 UserIdentifier;   /* ユーザ識別子               */
  MQBYTE32 AccountingToken;  /* 課金トークン               */
  MQCHAR32 ApplIdentityData; /* アプリケーション識別データ */
  MQLONG   PutApplType;      /* 登録アプリケーションタイプ */
  MQCHAR28 PutApplName;      /* 登録アプリケーション名     */
  MQCHAR8  PutDate;          /* 登録日付                   */
  MQCHAR8  PutTime;          /* 登録時刻                   */
  MQCHAR4  ApplOriginData;   /* 登録元データ               */
  MQBYTE24 GroupId;          /* グループ識別子             */
  MQLONG   MsgSeqNumber;     /* メッセージシーケンス番号   */
  MQLONG   Offset;           /* オフセット                 */
  MQLONG   MsgFlags;         /* メッセージフラグ           */
  MQLONG   OriginalLength;   /* 登録元メッセージ長         */
} MQMD;

(j)　MQMDE構造体　−　メッセージ記述子の拡張

typedef struct tagMQMDE {
  MQCHAR4  StrucId;          /* 構造体識別子             */
  MQLONG   Version;          /* 構造体バージョン番号     */
  MQLONG   StrucLength       /* 構造体長                 */
  MQLONG   Encoding;         /* MQMDE構造体に続くデータの
                                        マシンコード形式 */
  MQLONG   CodedCharSetId;   /* MQMDE構造体に続くデータの
                                        文字セット識別子 */
  MQCHAR8  Format;           /* MQMDE構造体に続くデータの
                                          フォーマット名 */
  MQLONG   Flags;            /* フラグ                   */
  MQBYTE24 GroupId;          /* グループ識別子           */
  MQLONG   MsgSeqNumber;     /* メッセージシーケンス番号 */
  MQLONG   Offset;           /* オフセット               */
  MQLONG   MsgFlags;         /* メッセージフラグ         */
  MQLONG   OriginalLength;   /* 登録元メッセージ長       */
} MQMDE;

(k)　MQOD構造体　−　オブジェクト記述子

typedef struct tagMQOD {
  MQCHAR4  StrucId;           /* 構造体識別子                         */
  MQLONG   Version;           /* 構造体バージョン番号                 */
  MQLONG   ObjectType;        /* オブジェクトタイプ                   */
  MQCHAR48 ObjectName;        /* オブジェクト名                       */
  MQCHAR48 ObjectQMgrName;    /* オブジェクトキューマネジャ名         */
  MQCHAR48 DynamicQName;      /* 動的キュー名                         */
  MQCHAR12 AlternateUserId;   /* 代替ユーザ識別子                     */
  MQLONG   RecsPresent;       /* オブジェクトレコード数               */
  MQLONG   KnownDestCount;    /* ローカルキューの数                   */
  MQLONG   UnknownDestCount;  /* リモートキューの数                   */
  MQLONG   InvalidDestCount;  /* オープンに失敗したキューの数         */
  MQLONG   ObjectRecOffset;   /* 最初のオブジェクトレコードまでの
                                                       オフセット     */
  MQLONG   ResponseRecOffset; /* 最初の応答レコードまでのオフセット  */
  MQPTR    ObjectRecPtr;      /* 最初のオブジェクトレコードのアドレス */
  MQPTR    ResponseRecPtr;    /* 最初の応答レコードのアドレス         */
  MQBYTE40 AlternateSecurityId; /* 代替セキュリティ識別子          */
  MQCHAR48 ResolvedQName;     /* 解決したキュー名称                */
  MQCHAR48 ResolvedQMgrName;  /* 解決したキューマネジャ名称        */
} MQOD;

(l)　MQOR構造体　−　オブジェクトレコード

typedef struct tagMQOR {
  MQCHAR48 ObjectName;       /* オブジェクトキュー名         */
  MQCHAR48 ObjectQMgrName;   /* オブジェクトキューマネジャ名 */
} MQOR;

(m)　MQPMO構造体　−　メッセージ登録オプション

typedef struct tagMQPMO {
  MQCHAR4  StrucId;             /* 構造体識別子                     */
  MQLONG   Version;             /* 構造体バージョン番号             */
  MQLONG   Options;             /* 登録オプション                   */
  MQLONG   Timeout;             /* 予備                             */
  MQHOBJ   Context;             /* コンテキスト                     */
  MQLONG   KnownDestCount;      /* ローカルキューの数               */
  MQLONG   UnknownDestCount;    /* リモートキューの数               */
  MQLONG   InvalidDestCount;    /* 送信に失敗したキューの数         */
  MQCHAR48 ResolvedQName;       /* 受信キュー名                     */
  MQCHAR48 ResolvedQMgrName;    /* 受信キューマネジャ名             */
  MQLONG   RecsPresent;         /* 登録メッセージレコード数
                                     または応答レコード数 */
  MQLONG   PutMsgRecFields;     /* MQPMR構造体フィールドの存在      */
  MQLONG   PutMsgRecOffset;     /* 最初の登録メッセージレコードまでの
                                                         オフセット */
  MQLONG   ResponseRecOffset;   /* 最初の応答レコードまでの
                                                         オフセット */
  MQLONG   PutMsgRecPtr;        /* 最初の登録メッセージレコードの
                                                         アドレス   */
  MQLONG   ResponseRecPtr;      /* 最初の応答レコードのアドレス     */
} MQPMO;

(n)　MQPMR構造体　−　登録メッセージレコード

typedef struct tagMQPMR {
  MQBYTE24   MsgId;           /* メッセージ識別子         */
  MQBYTE24   CorrelId;        /* 相関識別子               */
  MQBYTE24   GroupId;         /* グループ識別子           */
  MQLONG     Feedback;        /* 報告メッセージ返答コード */
  MQBYTE32   AccountingToken; /* 課金トークン             */
} MQPMR;

(o)　MQRMH構造体　−メッセージ参照ヘッダ

typedef struct tagMQRMH {
  MQCHAR4  StrucId;           /* 構造体識別子                   */
  MQLONG   Version;           /* 構造体バージョン番号           */
  MQLONG   StrucLength;       /* 構造体長                       */
  MQLONG   Encoding;          /* 長大データのマシンコード形式   */
  MQLONG   CodedCharSetId;    /* 長大データの文字セット識別子   */
  MQCHAR8  Format;            /* 長大データのフォーマット名     */
  MQLONG   Flags;             /* フラグ                         */
  MQCHAR8  ObjectType;        /* オブジェクトタイプ             */
  MQBYTE24 ObjectInstanceId;  /* オブジェクトインスタンス識別子 */
  MQLONG   SrcEnvLength       /* 送信元環境データ長             */
  MQLONG   SrcEnvOffset       /* 送信元環境データオフセット     */
  MQLONG   SrcNameLength      /* 送信元オブジェクト名長         */
  MQLONG   SrcNameOffset      /* 送信元オブジェクトのオフセット */
  MQLONG   DestEnvLength      /* あて先環境データ長             */
  MQLONG   DestEnvOffset      /* あて先環境データオフセット     */
  MQLONG   DestNameLength     /* あて先オブジェクト名長         */
  MQLONG   DestNameOffset     /* あて先オブジェクトのオフセット */
  MQLONG   DataLogicalLength  /* 長大データ長                   */
  MQLONG   DataLogicalOffset   /* 長大データ低位オフセット      */
  MQLONG   DataLogicalOffset2 /* 長大データ高位オフセット       */
} MQRMH;

(p)　MQRR構造体　-　応答レコード

typedef struct tagMQRR {
  MQLONG     CompCode; /* 完了コード */
  MQLONG     Reason;   /* 理由コード */
} MQRR;

(q)　MQTM構造体　−　トリガメッセージ

typedef struct tagMQTM {
  MQCHAR4   StrucId;     /* 構造体識別子           */
  MQLONG    Version;     /* 構造体バージョン番号   */
  MQCHAR48  QName;       /* イベント発生キュー名   */
  MQCHAR48  ProcessName; /* プロセス名             */
  MQCHAR64  TriggerData; /* トリガデータ           */
  MQLONG    ApplType;    /* アプリケーションタイプ */
  MQCHAR256 ApplId;      /* アプリケーション識別子 */
  MQCHAR128 EnvData;     /* 環境データ             */
  MQCHAR128 UserData;    /* ユーザデータ           */
} MQTM;

(r)　MQXQH構造体　−　転送キューヘッダ

typedef struct tagMQXQH {
  MQCHAR4  StrucId;        /* 構造体識別子             */
  MQLONG   Version;        /* 構造体バージョン番号     */
  MQCHAR48 RemoteQName;    /* リモートキュー名         */
  MQCHAR48 RemoteQMgrName; /* リモートキューマネジャ名 */
  MQMD1    MsgDesc;        /* 登録元メッセージ記述子   */
} MQXQH;

付録E.2　COBOL言語での実現例

(1)　COBOL言語での注意事項

(a)　コピーファイル

コピーファイルは，メッセージキューイング機能を定義し，COBOL言語で記述されたアプリケーションプログラムでメッセージキューイング機能を使用できるようにします。コピーファイルには定数を含む二つのファイルおよび各構造体に二つのファイルがあります。

各構造体には，二つの形式があります。初期値がある形式と初期値がない形式です。

初期値がある構造体は作業場所節で使用でき，"V"が最後に付く名称のコピーファイルに含まれています。

初期値がない構造体は連絡節で使用でき，"L"が最後に付く名称のコピーファイルに含まれています。

表E-2にコピーファイルの一覧を示します。

表E‒2　コピーファイルの一覧

ファイル名

内容

初期値がある形式

初期値がない形式

CMQCFHV

CMQCFHL

PCFヘッダの構造体

CMQCFILV

CMQCFILL

PCF整数リスト引数の構造体

CMQCFINV

CMQCFINL

PCF整数引数の構造体

CMQCFSLV

CMQCFSLL

PCF文字列リスト引数の構造体

CMQCFSTV

CMQCFSTL

PCFストリング引数の構造体

CMQCFV

−

PCFの定数

CMQDHV

CMQDHL

配布ヘッダの構造体

CMQDLHV

CMQDLHL

デッドレターヘッダの構造体

CMQGMOV

CMQGMOL

取り出し動作オプションの構造体

CMQMD1V

CMQMD1L

バージョン1のメッセージ記述子の構造体

CMQMDEV

CMQMDEL

メッセージ記述子拡張の構造体

CMQMDV

CMQMDL

メッセージ記述子の構造体

CMQODV

CMQODL

オブジェクト記述子の構造体

CMQORV

CMQORL

オブジェクトレコードの構造体

CMQPMOV

CMQPMOL

登録動作オプションの構造体

CMQRMHV

CMQRMHL

メッセージ参照ヘッダの構造体

CMQRRV

CMQRRL

応答レコードの構造体

CMQTMV

CMQTML

トリガメッセージの構造体

CMQXQHV

CMQXQHL

転送キューヘッダの構造体

CMQV

−

MQIの定数

（凡例）

−：該当しません。

(b)　データ構造

各構造の宣言をレベル番号10の項目で始めます。このようにすることで，データ項目をレベル番号01の宣言でコーディングしたあと，残りのデータ項目をコピー文で複写して，幾つかのインスタンスを宣言できます。インスタンスを参照するときは，INを指定できます。

* Declare two instances of MQMD
 01 MY_MQMD.
    COPY CMQMDV.
 01 MY_OTHER_MQMD.
    COPY CMQMDV.
*
* Set MSGTYPE field in MY_OTHER_MQMD
    MOVE MQMT_REQUEST TO MQMD_MSGTYPE IN MY_OTHER_MQMD.

4バイト単位でバウンダリ調整してください。レベル番号01でない項目に続く構造体にコピー文を使用している場合，レベル番号01の項目の始まりから，4バイトの倍数に位置するように構造体を宣言してください。

「1.　データタイプ」の「データタイプの概要」で示す，構造体のフィールド名には接頭語がありません。COBOL言語では，フィールド名は構造体の名称にハイフンが付けられた形式で表現されます。MSGTYPEという名称をCOBOL言語で表記すると，MQMD-MSGTYPEになります。

Vが最後に付く名称の構造体では，初期値が設定されています。そのため，初期値と異なる値を使用したい場合はフィールドを初期化してください。

(c)　定数

このマニュアルでは，定数にアンダスコア（_）が使用されていますが，COBOL言語では，アンダスコアの代わりにハイフン（−）を使用してください。

文字列値を含む定数では，文字列のデリミタとしてシングルコーテーションを使用しています。そのため，環境によってはコンパイラオプションを指定して，コンパイラが文字列のデリミタとしてシングルコーテーションを受け取るようにする必要があります。

定数は，コピーファイルにレベル番号10の項目として宣言されています。定数を使用するには，レベル番号01の項目として定義してから，定義の宣言でコピー文を使用します。

*構造体を大域データとして定義します
 01  MY_MQ_CONSTANTS.
   COPY CMQV.

この方法で定数が定義された場合，定数がプログラム中の領域を占有します。プログラムが幾つかの部分に分かれた場合は，定数が多重に複写されます。定数が多重に複写されるとメモリが必要以上に使用されるため，次に示す方法を使用してください。

グローバル句をレベル番号01で指定してください。

* 定数を大域データとして宣言します
 01  MY_MQ_CONSTANTS GLOBAL.
     COPY CMQV.

このようにすると，定数が一つの領域で割り当てられ，それぞれのプログラムで参照できます。なお，グローバル句は一部の環境ではサポートされていません。

プログラムから参照するデータだけを選んで複写してください。すべての定数を複写することはしないでください。

(d)　リンケージ方法

HP-UX，Windows，およびLinuxの場合，リンケージのコマンドに引数（-lmqacb）を指定してください。

AIXの場合，リンケージのコマンドに引数（-lmqacb2）を指定してください。

一つのロードモジュールにC言語およびCOBOL言語を混在できません。

(2)　呼ぶプログラム

(a)　MQCLOSE命令　−　オブジェクトのクローズ

PROCEDURE DIVISIONの指定

CALL 'MQCLOSE' USING HCONN,HOBJ,OPTIONS,COMPCODE,REASON.

DATA DIVISIONの指定

**  コネクションハンドル
 01 HCONN    PIC S9(9) BINARY.
**  オブジェクトハンドル
 01 HOBJ     PIC S9(9) BINARY.
**  クローズオプション
 01 OPTIONS  PIC S9(9) BINARY.
**  完了コード
 01 COMPCODE PIC S9(9) BINARY.
**  理由コード
 01 REASON   PIC S9(9) BINARY.

(b)　MQCONN命令　−　キューマネジャへの接続

PROCEDURE DIVISIONの指定

CALL 'MQCONN' USING NAME,HCONN,COMPCODE,REASON.

DATA DIVISIONの指定

**  キューマネジャ名
 01 NAME     PIC X(48).
**  コネクションハンドル
 01 HCONN    PIC S9(9) BINARY.
**  完了コード
 01 COMPCODE PIC S9(9) BINARY.
**  理由コード
 01 REASON   PIC S9(9) BINARY.

(c)　MQDISC命令　−　キューマネジャからの切り離し

PROCEDURE DIVISIONの指定

CALL 'MQDISC' USING HCONN,COMPCODE,REASON.

DATA DIVISIONの指定

**  コネクションハンドル
 01 HCONN    PIC S9(9) BINARY.
**  完了コード
 01 COMPCODE PIC S9(9) BINARY.
**  理由コード
 01 REASON   PIC S9(9) BINARY.

(d)　MQGET命令　−　メッセージの取り出し

PROCEDURE DIVISIONの指定

CALL 'MQGET' USING
HCONN,HOBJ,MSGDESC,GETMSGOPTS,BUFFERLENGTH,
BUFFER,DATALENGTH,COMPCODE,REASON.

DATA DIVISIONの指定

**  コネクションハンドル
 01 HCONN        PIC S9(9) BINARY.
**  オブジェクトハンドル
 01 HOBJ         PIC S9(9) BINARY.
**  メッセージ記述子
 01 MSGDESC.
    COPY CMQMDV.
**  メッセージ取り出しオプション
 01 GETMSGOPTS.
    COPY CMQGMOV.
**  バッファ長
 01 BUFFERLENGTH PIC S9(9) BINARY.
**  バッファ
 01 BUFFER       PIC X(n).
**  データ長
 01 DATALENGTH   PIC S9(9) BINARY.
**  完了コード
 01 COMPCODE     PIC S9(9) BINARY.
**  理由コード
 01 REASON       PIC S9(9) BINARY.

(e)　MQINQ命令　−　オブジェクトの属性の照会

PROCEDURE DIVISIONの指定

CALL 'MQINQ' USING
HCONN,HOBJ,SELECTORCOUNT,SELECTORS,INTATTRCOUNT,
INTATTRS,CHARATTRLENGTH,CHARATTRS,COMPCODE,
REASON.

DATA DIVISIONの指定

**  コネクションハンドル
 01 HCONN          PIC S9(9) BINARY.
**  オブジェクトハンドル
 01 HOBJ           PIC S9(9) BINARY.
**  セレクタ数
 01 SELECTORCOUNT  PIC S9(9) BINARY.
**  セレクタ
 01 SELECTORS.
  02 SELECTORS     PIC S9(9) BINARY OCCURS n TIMES.
**  整数型属性数
 01 INTATTRCOUNT   PIC S9(9) BINARY.
**  整数型属性値
 01 INTATTRS.
  02 INTATTRS      PIC S9(9) BINARY OCCURS n TIMES.
**  文字型属性長
 01 CHARATTRLENGTH PIC S9(9) BINARY.
**  文字型属性値
 01 CHARATTRS      PIC X(n).
**  完了コード
 01 COMPCODE       PIC S9(9) BINARY.
**  理由コード
 01 REASON         PIC S9(9) BINARY.

(f)　MQOPEN命令　−　オブジェクトのオープン

PROCEDURE DIVISIONの指定

CALL 'MQOPEN' USING
HCONN,OBJDESC,OPTIONS,HOBJ,COMPCODE,REASON.

DATA DIVISIONの指定

**  コネクションハンドル
 01 HCONN     PIC S9(9) BINARY.
**  オブジェクト記述子
 01 OBJDESC.
    COPY CMQODV.
**  オープンオプション
 01 OPTIONS   PIC S9(9) BINARY.
**  オブジェクトハンドル
 01 HOBJ      PIC S9(9) BINARY.
**  完了コード
 01 COMPCODE  PIC S9(9) BINARY.
**  理由コード
 01 REASON    PIC S9(9) BINARY.

(g)　MQPUT命令　−　メッセージの登録

PROCEDURE DIVISIONの指定

CALL 'MQPUT' USING
HCONN,HOBJ,MSGDESC,PUTMSGOPTS,BUFFERLENGTH,
BUFFER,COMPCODE,REASON.

DATA DIVISIONの指定

**  コネクションハンドル
 01 HCONN        PIC S9(9) BINARY.
**  オブジェクトハンドル
 01 HOBJ         PIC S9(9) BINARY.
**  メッセージ記述子
 01 MSGDESC.
    COPY CMQMDV.
**  メッセージ登録オプション
 01 PUTMSGOPTS.
    COPY CMQPMOV.
**  バッファ長
 01 BUFFERLENGTH PIC S9(9) BINARY.
**  バッファ
 01 BUFFER       PIC X(n).
**  完了コード
 01 COMPCODE     PIC S9(9) BINARY.
**  理由コード
 01 REASON       PIC S9(9) BINARY.

(h)　MQPUT1命令　−　1メッセージの登録

PROCEDURE DIVISIONの指定

CALL 'MQPUT1' USING
HCONN,OBJDESC,MSGDESC,PUTMSGOPTS,BUFFERLENGTH,
BUFFER,COMPCODE,REASON.

DATA DIVISIONの指定

**  コネクションハンドル
 01 HCONN        PIC S9(9) BINARY.
**  オブジェクト記述子
 01 OBJDESC.
    COPY CMQODV.
**  メッセージ記述子
 01 MSGDESC.
    COPY CMQMDV.
**  メッセージ登録オプション
 01 PUTMSGOPTS.
    COPY CMQPMOV.
**  バッファ長
 01 BUFFERLENGTH PIC S9(9) BINARY.
**  バッファ
 01 BUFFER       PIC X(n).
**  完了コード
 01 COMPCODE     PIC S9(9) BINARY.
**  理由コード
 01 REASON       PIC S9(9) BINARY.

(i)　MQSET命令　−　オブジェクトの属性の設定

PROCEDURE DIVISIONの指定

CALL 'MQSET' USING
HCONN,HOBJ,SELECTORCOUNT,SELECTORS,INTATTRCOUNT,
INTATTRS,CHARATTRLENGTH,CHARATTRS,COMPCODE,REASON.

DATA DIVISIONの指定

**  コネクションハンドル
 01 HCONN      PIC S9(9) BINARY.
**  オブジェクトハンドル
 01 HOBJ           PIC S9(9) BINARY.
**  セレクタ数
 01 SELECTORCOUNT  PIC S9(9) BINARY.
**  セレクタ
 01 SELECTORS.
  02 SELECTORS     PIC S9(9) BINARY OCCURS n TIMES.
**  整数型属性数
 01 INTATTRCOUNT   PIC S9(9) BINARY.
**  整数型属性値
 01 INTATTRS.
  02 INTATTRS      PIC S9(9) BINARY OCCURS n TIMES.
**  文字型属性長
 01 CHARATTRLENGTH PIC S9(9) BINARY.
**  文字型属性値
 01 CHARATTRS       PIC X(n).
**  完了コード
 01 COMPCODE       PIC S9(9) BINARY.
**  理由コード
 01 REASON         PIC S9(9) BINARY.

(3)　基本データタイプ

基本データタイプの宣言を次の表に示します。

表E‒3　基本データタイプの宣言（COBOL言語）

データタイプ

表記

MQBYTE型

PIC X

MQBYTE8型

PIC X(8)

MQBYTE16型

PIC X(16)

MQBYTE24型

PIC X(24)

MQBYTE32型

PIC X(32)

MQBYTE40型

PIC X(40)

MQCHAR型

PIC X

MQCHAR4型

PIC X(4)

MQCHAR8型

PIC X(8)

MQCHAR12型

PIC X(12)

MQCHAR20型

PIC X(20)

MQCHAR28型

PIC X(28)

MQCHAR32型

PIC X(32)

MQCHAR48型

PIC X(48)

MQCHAR64型

PIC X(64)

MQCHAR128型

PIC X(128)

MQCHAR256型

PIC X(256)

MQHCONN型

PIC S9(9) BINARY

MQHOBJ型

PIC S9(9) BINARY

MQLONG型

PIC S9(9) BINARY

MQPTR

POINTER

(4)　構造体データタイプ

(a)　MQCFH構造体　−　PCFヘッダ

**  MQCFH構造体
 10 MQCFH.
**  構造体タイプ
  15 MQCFH-TYPE           PIC S9(9) BINARY.
**  構造体長
  15 MQCFH-STRUCLENGTH    PIC S9(9) BINARY.
**  構造体バージョン番号
  15 MQCFH-VERSION        PIC S9(9) BINARY.
**  命令識別子
  15 MQCFH-COMMAND        PIC S9(9) BINARY.
**  メッセージシーケンス番号
  15 MQCFH-MSGSEQNUMBER   PIC S9(9) BINARY.
**  制御オプション
  15 MQCFH-CONTROL        PIC S9(9) BINARY.
**  完了コード
  15 MQCFH-COMPCODE       PIC S9(9) BINARY.
**  理由コード
  15 MQCFH-REASON         PIC S9(9) BINARY.
** 引数構造体の数
  15 MQCFH-PARAMETERCOUNT PIC S9(9) BINARY.

(b)　MQCFIL構造体　−　PCF整数リスト引数

**  MQCFIL構造体
 10 MQCFIL.
**  構造体タイプ
  15 MQCFIL-TYPE        PIC S9(9) BINARY.
**  構造体長
  15 MQCFIL-STRUCLENGTH PIC S9(9) BINARY.
**  引数識別子
  15 MQCFIL-PARAMETER   PIC S9(9) BINARY.
**  引数の値の数
  15 MQCFIL-COUNT       PIC S9(9) BINARY.

(c)　MQCFIN構造体　−　PCF整数引数

**  MQCFIN構造体
 10 MQCFIN.
**  構造体タイプ
  15 MQCFIN-TYPE        PIC S9(9) BINARY.
**  構造体長
  15 MQCFIN-STRUCLENGTH PIC S9(9) BINARY.
**  引数識別子
  15 MQCFIN-PARAMETER   PIC S9(9) BINARY.
**  引数の値
  15 MQCFIN-VALUE       PIC S9(9) BINARY.

(d)　MQCFSL構造体　−　PCF文字列リスト引数

**  MQCFSL構造体
 10 MQCFSL.
**  構造体タイプ
  15 MQCFSL-TYPE           PIC S9(9) BINARY.
**  構造体長
  15 MQCFSL-STRUCLENGTH    PIC S9(9) BINARY.
**  引数識別子
  15 MQCFSL-PARAMETER      PIC S9(9) BINARY.
**  文字セット識別子
  15 MQCFSL-CODEDCHARSETID PIC S9(9) BINARY.
**  引数の値の数
  15 MQCFSL-COUNT          PIC S9(9) BINARY.
**  文字列長
  15 MQCFSL-STRINGLENGTH   PIC S9(9) BINARY.

(e)　MQCFST構造体　−　PCFストリング引数

**  MQCFST構造体
 10 MQCFST.
**  構造体タイプ
  15 MQCFST-TYPE           PIC S9(9) BINARY.
**  構造体長
  15 MQCFST-STRUCLENGTH    PIC S9(9) BINARY.
**  引数識別子
  15 MQCFST-PARAMETER      PIC S9(9) BINARY.
**  文字コード識別子
  15 MQCFST-CODEDCHARSETID PIC S9(9) BINARY.
**  文字列長
  15 MQCFST-STRINGLENGTH   PIC S9(9) BINARY.

(f)　MQDH構造体　−　配布ヘッダ

**  MQDH構造体
 10 MQDH.
**  構造体識別子
  15 MQDH-STRUCID           PIC X(4).
**  構造体バージョン番号
  15 MQDH-VERSION           PIC S9(9) BINARY.
**  MQDH構造体とそれに続くMQOR構造体とMQPMR構造体を足した長さ
  15 MQDH-STRUCLENGTH       PIC S9(9) BINARY.
**  MQOR構造体およびMQPMR構造体に続くデータのマシンコード形式
  15 MQDH-ENCODING          PIC S9(9) BINARY.
**  MQOR構造体およびMQPMR構造体に続くデータの文字セット識別子
  15 MQDH-CODEDCHARSETID    PIC S9(9) BINARY.
**  MQOR構造体およびMQPMR構造体に続くデータのフォーマット名
  15 MQDH-FORMAT            PIC X(8).
**  フラグ
  15 MQDH-FLAGS             PIC S9(9) BINARY.
**  MQPMR構造体フィールドの存在
  15 MQDH-PUTMSGRECFIELDS   PIC S9(9) BINARY.
**  MQOR構造体の数
  15 MQDH-RECSPRESENT       PIC S9(9) BINARY.
**  最初のMQOR構造体までのオフセット
  15 MQDH-OBJECTRECOFFSET   PIC S9(9) BINARY.
**  最初のMQPMR構造体までのオフセット
  15 MQDH-PUTMSGRECOFFSET   PIC S9(9) BINARY.

(g)　MQDLH構造体　−　デッドレターヘッダ

**  MQDLH構造体
 10 MQDLH.
**  構造体識別子
  15 MQDLH-STRUCID        PIC X(4).
**  構造体バージョン番号
  15 MQDLH-VERSION        PIC S9(9) BINARY.
**  メッセージ通知理由
  15 MQDLH-REASON         PIC S9(9) BINARY.
**  あて先キュー名
  15 MQDLH-DESTQNAME      PIC X(48).
**  あて先キューマネジャ名
  15 MQDLH-DESTQMGRNAME   PIC X(48).
**  MQDLH構造体に続くデータのマシンコード形式
  15 MQDLH-ENCODING       PIC S9(9) BINARY.
**  MQDLH構造体に続くデータの文字セット識別子
  15 MQDLH-CODEDCHARSETID PIC S9(9) BINARY.
**  MQDLH構造体に続くデータのフォーマット名
  15 MQDLH-FORMAT         PIC X(8).
**  登録アプリケーションタイプ
  15 MQDLH-PUTAPPLTYPE    PIC S9(9) BINARY.
**  登録アプリケーション名
  15 MQDLH-PUTAPPLNAME    PIC X(28).
**  登録日付
  15 MQDLH-PUTDATE        PIC X(8).
**  登録時刻
  15 MQDLH-PUTTIME        PIC X(8).

(h)　MQGMO構造体　−　メッセージ取り出しオプション

**  MQGMO構造体
 10 MQGMO.
**  構造体識別子
  15 MQGMO-STRUCID       PIC X(4).
**  構造体バージョン番号
  15 MQGMO-VERSION       PIC S9(9) BINARY.
**  取り出しオプション
  15 MQGMO-OPTIONS       PIC S9(9) BINARY.
**  待ち合わせ最大時間
  15 MQGMO-WAITINTERVAL  PIC S9(9) BINARY.
**  シグナル
  15 MQGMO-SIGNAL1       PIC S9(9) BINARY.
**  予備
  15 MQGMO-SIGNAL2       PIC S9(9) BINARY.
**  受信キュー名
  15 MQGMO-RESOLVEDQNAME PIC X(48).
**  一致オプション
  15 MQGMO-MATCHOPTIONS  PIC S9(9) BINARY.
**  メッセージグループフラグ
  15 MQGMO-GROUPSTATUS   PIC X.
**  論理メッセージフラグ
  15 MQGMO-SEGMENTSTATUS PIC X.
**  セグメント分割フラグ
  15 MQGMO-SEGMENTATION  PIC X.
**  予備
  15 MQGMO-RESERVED1     PIC X.

(i)　MQMD構造体　−　メッセージ記述子

**  MQMD構造体
 10 MQMD.
**  構造体識別子
  15 MQMD-STRUCID          PIC X(4).
**  構造体バージョン番号
  15 MQMD-VERSION          PIC S9(9) BINARY.
**  報告メッセージオプション
  15 MQMD-REPORT           PIC S9(9) BINARY.
**  メッセージタイプ
  15 MQMD-MSGTYPE          PIC S9(9) BINARY.
**  メッセージ保持時間
  15 MQMD-EXPIRY           PIC S9(9) BINARY.
**  報告メッセージ返答コード
  15 MQMD-FEEDBACK         PIC S9(9) BINARY.
**  メッセージデータのマシンコード形式
  15 MQMD-ENCODING         PIC S9(9) BINARY.
**  メッセージデータの文字セット識別子
  15 MQMD-CODEDCHARSETID   PIC S9(9) BINARY.
**  メッセージデータのフォーマット名
  15 MQMD-FORMAT           PIC X(8).
**  メッセージ優先度
  15 MQMD-PRIORITY         PIC S9(9) BINARY.
**  メッセージ永続性
  15 MQMD-PERSISTENCE      PIC S9(9) BINARY.
**  メッセージ識別子
  15 MQMD-MSGID            PIC X(24).
**  相関識別子
  15 MQMD-CORRELID         PIC X(24).
**  ロールバック回数
  15 MQMD-BACKOUTCOUNT     PIC S9(9) BINARY.
**  応答キュー名
  15 MQMD-REPLYTOQ         PIC X(48).
**  応答キューマネジャ名
  15 MQMD-REPLYTOQMGR      PIC X(48).
**  ユーザ識別子
  15 MQMD-USERIDENTIFIER   PIC X(12).
**  課金トークン
  15 MQMD-ACCOUNTINGTOKEN  PIC X(32).
**   アプリケーション識別データ
  15 MQMD-APPLIDENTITYDATA PIC X(32).
**  登録アプリケーションタイプ
  15 MQMD-PUTAPPLTYPE      PIC S9(9) BINARY.
**  登録アプリケーション名
  15 MQMD-PUTAPPLNAME      PIC X(28).
**  登録日付
  15 MQMD-PUTDATE          PIC X(8).
**  登録時刻
  15 MQMD-PUTTIME          PIC X(8).
**  登録元データ
  15 MQMD-APPLORIGINDATA   PIC X(4).
**  グループ識別子
  15 MQMD-GROUPID          PIC X(24).
**  メッセージシーケンス番号
  15 MQMD-MSGSEQNUMBER     PIC S9(9) BINARY.
**  オフセット
  15 MQMD-OFFSET           PIC S9(9) BINARY.
**  メッセージフラグ
  15 MQMD-MSGFLAGS         PIC S9(9) BINARY.
**  登録元メッセージ長
  15 MQMD-ORIGINALLENGTH   PIC S9(9) BINARY.

(j)　MQMDE構造体　−　メッセージ記述子の拡張

**  MQMDE構造体
 10 MQMDE.
**  構造体識別子
  15 MQMDE-STRUCID        PIC X(4).
**  構造体バージョン番号
  15 MQMDE-VERSION        PIC S9(9) BINARY.
**  構造体長
  15 MQMDE-STRUCLENGTH    PIC S9(9) BINARY.
**  MQMDE構造体に続くデータのマシンコード形式
  15 MQMDE-ENCODING       PIC S9(9) BINARY.
**  MQMDE構造体に続くデータの文字セット識別子
  15 MQMDE-CODEDCHARSETID PIC S9(9) BINARY.
**  MQMDE構造体に続くデータのフォーマット名
  15 MQMDE-FORMAT         PIC X(8).
**  フラグ
  15 MQMDE-FLAGS          PIC S9(9) BINARY.
**  グループ識別子
  15 MQMDE-GROUPID        PIC X(24).
**  メッセージシーケンス番号
  15 MQMDE-MSGSEQNUMBER   PIC S9(9) BINARY.
**  オフセット
  15 MQMDE-OFFSET         PIC S9(9) BINARY.
**  メッセージフラグ
  15 MQMDE-MSGFLAGS       PIC S9(9) BINARY.
**  登録元メッセージ長
  15 MQMDE-ORIGINALLENGTH PIC S9(9) BINARY.

(k)　MQOD構造体　−　オブジェクト記述子

**  MQOD構造体
 10 MQOD.
**  構造体識別子
  15 MQOD-STRUCID             PIC X(4).
**  構造体バージョン番号
  15 MQOD-VERSION             PIC S9(9) BINARY.
**  オブジェクトタイプ
  15 MQOD-OBJECTTYPE          PIC S9(9) BINARY.
**  オブジェクト名
  15 MQOD-OBJECTNAME          PIC X(48).
**  オブジェクトキューマネジャ名
  15 MQOD-OBJECTQMGRNAME      PIC X(48).
**  動的キュー名
  15 MQOD-DYNAMICQNAME        PIC X(48).
**  代替ユーザ識別子
  15 MQOD-ALTERNATEUSERID     PIC X(12).
**  オブジェクトレコード数
  15 MQOD-RECSPRESENT         PIC S9(9) BINARY.
**  ローカルキューの数
  15 MQOD-KNOWNDESTCOUNT      PIC S9(9) BINARY.
**  リモートキューの数
  15 MQOD-UNKNOWNDESTCOUNT    PIC S9(9) BINARY.
**  オープンに失敗したキューの数
  15 MQOD-INVALIDDESTCOUNT    PIC S9(9) BINARY.
**  最初のオブジェクトレコードまでのオフセット
  15 MQOD-OBJECTRECOFFSET     PIC S9(9) BINARY.
**  最初の応答レコードまでのオフセット
  15 MQOD-RESPONSERECOFFSET   PIC S9(9) BINARY.
**  最初のオブジェクトレコードのアドレス
  15 MQOD-OBJECTRECPTR        POINTER.
**  最初の応答レコードのアドレス
  15 MQOD-RESPONSERECPTR      POINTER.
**  代替セキュリティ識別子
  15 MQOD-ALTERNATESECURITYID PIC X(40).
**  解決したキュー名称
  15 MQOD-RESOLVEDQNAME       PIC X(48).
**  解決したキューマネジャ名称
  15 MQOD-RESOLVEDQMGRNAME    PIC X(48).

(l)　MQOR構造体　−　オブジェクトレコード

**  MQOR構造体
 10 MQOR.
**  オブジェクト名
  15 MQOR-OBJECTNAME         PIC X(48).
**  オブジェクトキューマネジャ名
  15 MQOR-OBJECTQMGRNAME     PIC X(48).

(m)　MQPMO構造体　−　メッセージ登録オプション

**  MQPMO構造体
 10 MQPMO.
**  構造体識別子
  15 MQPMO-STRUCID            PIC X(4).
**  構造体バージョン番号
  15 MQPMO-VERSION            PIC S9(9) BINARY.
**  登録オプション
  15 MQPMO-OPTIONS            PIC S9(9) BINARY.
**  予備
  15 MQPMO-TIMEOUT            PIC S9(9) BINARY.
**  コンテキスト
  15 MQPMO-CONTEXT            PIC S9(9) BINARY.
**  ローカルキューの数
  15 MQPMO-KNOWNDESTCOUNT     PIC S9(9) BINARY.
**  リモートキューの数
  15 MQPMO-UNKNOWNDESTCOUNT   PIC S9(9) BINARY.
**  送信に失敗したキューの数
  15 MQPMO-INVALIDDESTCOUNT   PIC S9(9) BINARY.
**  受信キュー名
  15 MQPMO-RESOLVEDQNAME      PIC X(48).
**  受信キューマネジャ名
  15 MQPMO-RESOLVEDQMGRNAME   PIC X(48).
**  登録メッセージレコード数または応答レコード数
  15 MQPMO-RECSPRESENT        PIC S9(9) BINARY.
**  MQPMR構造体フィールドの存在
  15 MQPMO-PUTMSGRECFIELDS    PIC S9(9) BINARY.
**  最初の登録メッセージレコードまでのオフセット
  15 MQPMO-PUTMSGRECOFFSET    PIC S9(9) BINARY.
**  最初の応答レコードまでのオフセット
  15 MQPMO-RESPONSERECOFFSET  PIC S9(9) BINARY.
**  最初の登録メッセージレコードのアドレス
  15 MQPMO-PUTMSGRECPTR       POINTER.
**  最初の応答レコードのアドレス
  15 MQPMO-RESPONSERECPTR     POINTER.

(n)　MQPMR構造体　−　登録メッセージレコード

**  MQPMR構造体
 10 MQPMR.
**  メッセージ識別子
  15 MQPMR-MSGID              PIC X(24).
**  相関識別子
  15 MQPMR-CORRELID           PIC X(24).
**  グループ識別子
  15 MQPMR-GROUPID            PIC X(24).
**  報告メッセージ返答コード
  15 MQPMR-FEEDBACK           PIC S(9) BINARY.
**  課金トークン
  15 MQPMR-ACCOUNTINGTOKEN    PIC X(32).

(o)　MQRMH構造体　−　メッセージ参照ヘッダ

**  MQRMH構造体
 10 MQRMH.
**  構造体識別子
  15 MQRMH-STRUCID            PIC X(4).
**  構造体バージョン番号
  15 MQRMH-VERSION            PIC S9(9) BINARY.
**  構造体長
  15 MQRMH-STRUCLENGTH        PIC S9(9) BINARY.
**  長大データのマシンコード形式
  15 MQRMH-ENCODING           PIC S9(9) BINARY.
**  長大データの文字セット識別子
  15 MQRMH-CODEDCHARSETID     PIC S9(9) BINARY.
**  長大データのフォーマット名
  15 MQRMH-FORMAT             PIC X(8).
**  フラグ
  15 MQRMH-FLAGS              PIC S9(9) BINARY.
**  オブジェクトタイプ
  15 MQRMH-OBJECTTYPE         PIC X(8).
**  オブジェクトインスタンス識別子
  15 MQRMH-OBJECTINSTANCEID   PIC X(24).
**  送信元環境データ長
  15 MQRMH-SRCENVLENGTH       PIC S9(9) BINARY.
**  送信元環境データオフセット
  15 MQRMH-SRCENVOFFSET       PIC S9(9) BINARY.
**  送信元オブジェクト名長
  15 MQRMH-SRCNAMELENGTH      PIC S9(9) BINARY.
**  送信元オブジェクトのオフセット
  15 MQRMH-SRCNAMEOFFSET      PIC S9(9) BINARY.
**  あて先環境データ長
  15 MQRMH-DESTENVLENGTH      PIC S9(9) BINARY.
**  あて先環境データオフセット
  15 MQRMH-DESTENVOFFSET      PIC S9(9) BINARY.
**  あて先オブジェクト名長
  15 MQRMH-DESTNAMELENGTH     PIC S9(9) BINARY.
**  あて先オブジェクトのオフセット
  15 MQRMH-DESTNAMEOFFSET     PIC S9(9) BINARY.
**  長大データ長
  15 MQRMH-DATALOGICALLENGTH  PIC S9(9) BINARY.
**  長大データ低位オフセット
  15 MQRMH-DATALOGICALOFFSET  PIC S9(9) BINARY.
**  長大データ高位オフセット
  15 MQRMH-DATALOGICALOFFSET2 PIC S9(9) BINARY.

(p)　MQRR構造体　−　応答レコード

**  MQRR構造体
 10 MQRR.
**  完了コード
  15 MQRR-COMPCODE            PIC S9(9) BINARY.
**  理由コード
  15 MQRR-REASON              PIC S9(9) BINARY.

(q)　MQTM構造体　−　トリガメッセージ

**  MQTM構造体
 10 MQTM.
**  構造体識別子
  15 MQTM-STRUCID             PIC X(4).
**  構造体バージョン番号
  15 MQTM-VERSION             PIC S9(9) BINARY.
**  イベント発生キュー名
  15 MQTM-QNAME               PIC X(48).
**  プロセス名
  15 MQTM-PROCESSNAME         PIC X(48).
**  トリガデータ
  15 MQTM-TRIGGERDATA         PIC X(64).
**  アプリケーションタイプ
  15 MQTM-APPLTYPE            PIC S9(9) BINARY.
**  アプリケーション識別子
  15 MQTM-APPLID              PIC X(256).
**  環境データ
  15 MQTM-ENVDATA             PIC X(128).
**  ユーザデータ
  15 MQTM-USERDATA            PIC X(128).

(r)　MQXQH構造体　−　キューヘッダ

**  MQXQH構造体
 10 MQXQH.
**  構造体識別子
  15 MQXQH-STRUCID                  PIC X(4).
**  構造体バージョン番号
  15 MQXQH-VERSION                  PIC S9(9) BINARY.
**  リモートキュー名
  15 MQXQH-REMOTEQNAME              PIC X(48).
**  リモートキューマネジャ名
  15 MQXQH-REMOTEQMGRNAME           PIC X(48).
**  登録元メッセージ記述子
  15 MQXQH-MSGDESC.
**  構造体識別子
  20 MQXQH-MSGDESC-STRUCID          PIC X(4).
**  構造体バージョン番号
  20 MQXQH-MSGDESC-VERSION          PIC S9(9) BINARY.
**   報告オプション
  20 MQXQH-MSGDESC-REPORT           PIC S9(9) BINARY.
**  メッセージタイプ
  20 MQXQH-MSGDESC-MSGTYPE          PIC S9(9) BINARY.
**  メッセージ保持時間
  20 MQXQH-MSGDESC-EXPIRY           PIC S9(9) BINARY.
**  報告メッセージ返答コードまたは理由コード
  20 MQXQH-MSGDESC-FEEDBACK         PIC S9(9) BINARY.
**  メッセージデータのマシンコード形式
  20 MQXQH-MSGDESC-ENCODING         PIC S9(9) BINARY.
**  メッセージデータの文字セット識別子
  20 MQXQH-MSGDESC-CODEDCHARSETID   PIC S9(9) BINARY.
**  メッセージデータのフォーマット名
  20 MQXQH-MSGDESC-FORMAT           PIC X(8).
**  メッセージ優先度
  20 MQXQH-MSGDESC-PRIORITY         PIC S9(9) BINARY.
**  メッセージ永続性
  20 MQXQH-MSGDESC-PERSISTENCE      PIC S9(9) BINARY.
**  メッセージ識別子
  20 MQXQH-MSGDESC-MSGID            PIC X(24).
**  相関識別子
  20 MQXQH-MSGDESC-CORRELID         PIC X(24).
**  ロールバック回数
  20 MQXQH-MSGDESC-BACKOUTCOUNT     PIC S9(9) BINARY.
**  応答キュー名
  20 MQXQH-MSGDESC-REPLYTOQ         PIC X(48).
**  応答キューマネジャ名
  20 MQXQH-MSGDESC-REPLYTOQMGR      PIC X(48).
**  ユーザ識別子
  20 MQXQH-MSGDESC-USERIDENTIFIER   PIC X(12).
**  課金トークン
  20 MQXQH-MSGDESC-ACCOUNTINGTOKEN  PIC X(32).
**  アプリケーション識別データ
  20 MQXQH-MSGDESC-APPLIDENTITYDATA PIC X(32).
**  登録アプリケーションタイプ
  20 MQXQH-MSGDESC-PUTAPPLTYPE      PIC S9(9) BINARY.
**  登録アプリケーション名
  20 MQXQH-MSGDESC-PUTAPPLNAME      PIC X(28).
**  登録日付
  20 MQXQH-MSGDESC-PUTDATE          PIC X(8).
**  登録時刻
  20 MQXQH-MSGDESC-PUTTIME          PIC X(8).
**  登録元データ
  20 MQXQH-MSGDESC-APPLORIGINDATA   PIC X(4).

付録F　TP1/Message Queueの定数値

TP1/Message Queueで使用する定数について，定数名とその値を示します。定数名は，関連するフィールドまたはパラメタに従ってグループ化されます。一つのグループに属するすべての定数名は，先頭に同じ文字列を持ちます。

ここでは，定数名のグループをアルファベット順に示します。

定数値の表記形式を次に示します。

MQxxxx_*          10進数　16進数　または　文字
（定数名）

xxxx：0から4文字の任意の文字

*：任意の文字列

10進数：10進数です。

16進数：X'nnnnnnnn'の形式で表される16進数です。（n：16進数字）

文字：文字または文字列です。文字は'　'で囲み，文字列は"　"で囲みます。

MQ_*（文字列および，バイト列の長さ）

MQ_*は，文字列，およびバイト列の長さを表す定数です。次に定数とその値を示します。

MQ_ACCOUNTING_TOKEN_LENGTH                  32  X'00000020'
MQ_APPL_IDENTITY_DATA_LENGTH                32  X'00000020'
MQ_APPL_ORIGIN_DATA_LENGTH                   4  X'00000004'
MQ_CHANNEL_NAME_LENGTH                      20  X'00000014'
MQ_CLUSTER_NAME_LENGTH                      48  X'00000030'
MQ_CORREL_ID_LENGTH                         24  X'00000018'
MQ_CREATION_DATE_LENGTH                     12  X'0000000C'
MQ_CREATION_TIME_LENGTH                      8  X'00000008'
MQ_FORMAT_LENGTH                             8  X'00000008'
MQ_GROUP_ID_LENGTH                          24  X'00000018'
MQ_MODE_NAME_LENGTH                          8  X'00000008'
MQ_MSG_HEADER_LENGTH                      4000  X'00000FA0'
MQ_MSG_ID_LENGTH                            24  X'00000018'
MQ_PROCESS_APPL_ID_LENGTH                  256  X'00000100'
MQ_PROCESS_DESC_LENGTH                      64  X'00000040'
MQ_PROCESS_ENV_DATA_LENGTH                 128  X'00000080'
MQ_PROCESS_NAME_LENGTH                      48  X'00000030'
MQ_PROCESS_USER_DATA_LENGTH                128  X'00000080'
MQ_PUT_APPL_NAME_LENGTH                     28  X'0000001C'
MQ_PUT_DATE_LENGTH                           8  X'00000008'
MQ_PUT_TIME_LENGTH                           8  X'00000008'
MQ_Q_DESC_LENGTH                            64  X'00000040'
MQ_Q_MGR_DESC_LENGTH                        64  X'00000040'
MQ_Q_MGR_NAME_LENGTH                        48  X'00000030'
MQ_Q_NAME_LENGTH                            48  X'00000030'
MQ_TRIGGER_DATA_LENGTH                      64  X'00000040'
MQ_USER_ID_LENGTH                           12  X'0000000C'

MQACT_*（課金トークン）

MQACT_*は，課金トークンを表す定数です。課金トークンについては，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でAccountingTokenフィールドを参照してください。次に定数とその値を示します。

MQACT_NONE        "¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0
                   ¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0"
MQACT_NONE_ARRAY  '¥0','¥0','¥0','¥0','¥0','¥0','¥0','¥0',
                  '¥0','¥0','¥0','¥0','¥0','¥0','¥0','¥0',
                  '¥0','¥0','¥0','¥0','¥0','¥0','¥0','¥0',
                  '¥0','¥0','¥0','¥0','¥0','¥0','¥0','¥0'

MQAT_*（アプリケーションタイプ）

MQAT_*は，アプリケーションタイプを表す定数です。登録アプリケーションタイプについては，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でPutApplTypeフィールドを参照してください。アプリケーションタイプについては，「1.　データタイプ」の「MQTM構造体　−　トリガメッセージ」でApplTypeフィールドを参照してください。次に定数とその値を示します。

MQAT_UNKNOWN                               -1  X'FFFFFFFF'
MQAT_NO_CONTEXT                             0  X'00000000'
MQAT_CICS                                   1  X'00000001'
MQAT_MVS                                    2  X'00000002'
MQAT_ZOS                                    2  X'00000002'
MQAT_IMS                                    3  X'00000003'
MQAT_OS2                                    4  X'00000004'
MQAT_DOS                                    5  X'00000005'
MQAT_AIX                                    6  X'00000006'
MQAT_UNIX                                   6  X'00000006'
MQAT_QMGR                                   7  X'00000007'
MQAT_OS400                                  8  X'00000008'
MQAT_WINDOWS                                9  X'00000009'
MQAT_CICS_VSE                              10  X'0000000A'
MQAT_WINDOWS_NT                            11  X'0000000B'
MQAT_VMS                                   12  X'0000000C'
MQAT_GUARDIAN                              13  X'0000000D'
MQAT_VOS                                   14  X'0000000E'
MQAT_OPEN_TP1                              15  X'0000000F'
MQAT_XDM                                   16  X'00000010'
MQAT_TMS_4V                                17  X'00000011'
MQAT_BROKER                                26  X'0000001A'
MQAT_JAVA                                  28  X'0000001C'
MQAT_DQM                                   29  X'0000001D'
MQAT_WLM                                   31  X'0000001F'
MQAT_USER_FIRST                         65536  X'00010000'
MQAT_USER_LAST                      999999999  X'3B9AC9FF'
MQAT_DEFAULT                           （環境に依存します）

MQCA_*（文字型属性のセレクタ）

MQCA_*は，文字型属性のセレクタを表す定数です。文字型属性のセレクタについては，「2.　メッセージキューイング機能の命令」の「MQINQ命令　−　オブジェクトの属性の照会」および「MQSET命令　−　オブジェクトの属性の設定」でSelectors引数を参照してください。次に定数とその値を示します。

MQCA_FIRST                                  2001  X'000007D1'
MQCA_APPL_ID                                2001  X'000007D1'
MQCA_BASE_Q_NAME                            2002  X'000007D2'
MQCA_CREATION_DATE                          2004  X'000007D4'
MQCA_CREATION_TIME                          2005  X'000007D5'
MQCA_DEAD_LETTER_Q_NAME                     2006  X'000007D6'
MQCA_ENV_DATA                               2007  X'000007D7'
MQCA_INITIATION_Q_NAME                      2008  X'000007D8'
MQCA_PROCESS_DESC                           2011  X'000007DB'
MQCA_PROCESS_NAME                           2012  X'000007DC'
MQCA_Q_DESC                                 2013  X'000007DD'
MQCA_Q_MGR_DESC                             2014  X'000007DE'
MQCA_Q_MGR_NAME                             2015  X'000007DF'
MQCA_Q_NAME                                 2016  X'000007E0'
MQCA_REMOTE_Q_MGR_NAME                      2017  X'000007E1'
MQCA_REMOTE_Q_NAME                          2018  X'000007E2'
MQCA_NAMES                                  2020  X'000007E4'
MQCA_USER_DATA                              2021  X'000007E5'
MQCA_TRIGGER_DATA                           2023  X'000007E7'
MQCA_XMIT_Q_NAME                            2024  X'000007E8'
MQCA_DEF_XMIT_Q_NAME                        2025  X'000007E9'
MQCA_LAST_USED                              2026  X'000007EA'
MQCA_CLUSTER_NAME                           2029  X'000007ED'
MQCA_LAST                                   4000  X'00000FA0'

MQCC_*（完了コード）

MQCC_*は，完了コードを表す定数です。完了コードについては，「付録B.1　完了コード」を参照してください。次に定数とその値を示します。

MQCC_OK                                     0  X'00000000'
MQCC_WARNING                                1  X'00000001'
MQCC_FAILED                                 2  X'00000002'

MQCCSI_*（文字セット識別子）

MQCCSI_*は，文字セット識別子を表す定数です。文字セット識別子については，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でCodedCharSetIdフィールドを参照してください。次に定数とその値を示します。

MQCCSI_INHERIT                             -2  X'FFFFFFFE'
MQCCSI_EMBEDDED                            -1  X'FFFFFFFF'
MQCCSI_DEFAULT                              0  X'00000000'
MQCCSI_Q_MGR                                0  X'00000000'
MQCCSI_UNDEFINED                            0  X'00000000'

MQCFH_*（構造体識別子）

MQCFH_*は，構造体識別子を表す定数です。構造体識別子については，「1.　データタイプ」の「MQCFH構造体　−　PCFヘッダ」でStrucLengthフィールド，Versionフィールド，およびControlフィールドを参照してください。次に定数とその値を示します。

MQCFH_STRUC_LENGTH                         36    X'00000024'
MQCFH_VERSION_1                             1    X'00000001'
MQCFC_LAST                                  1    X'00000001'
MQCFC_NOT_LAST                              0    X'00000000'

MQCFIL_*（構造体識別子）

MQCFIL_*は，構造体識別子を表す定数です。構造体識別子については，「1.　データタイプ」の「MQCFIL構造体　−　PCF整数リスト引数」でStrucLengthフィールドを参照してください。次に定数とその値を示します。

MQCFIL_STRUC_LENGTH                       16    X'00000010'

MQCFIN_*（構造体識別子）

MQCFIN_*は，構造体識別子を表す定数です。構造体識別子については，「1.　データタイプ」の「MQCFIN構造体　−　PCF整数引数」でStrucLengthフィールドを参照してください。次に定数とその値を示します。

MQCFIN_STRUC_LENGTH                        16    X'00000010'

MQCFST_*（構造体識別子）

MQCFST_*は，構造体識別子を表す定数です。構造体識別子については，「1.　データタイプ」の「MQCFST構造体　−　PCFストリング引数」でStrucLengthフィールドを参照してください。次に定数とその値を示します。

MQCFST_STRUC_LENGTH                        20    X'00000014'

MQCFT_*（構造体タイプ）

MQCFT_*は，構造体タイプを表す定数です。構造体タイプについては，「1.　データタイプ」の「MQCFH構造体　−　PCFヘッダ」，「MQCFIN構造体　−　PCF整数引数」，「MQCFST構造体　−　PCFストリング引数」，および「MQCFIL構造体　−　PCF整数リスト引数」でTypeフィールドを参照してください。次に定数とその値を示します。

MQCFT_COMMAND                               1    X'00000001'
MQCFT_INTEGER                               3    X'00000003'
MQCFT_STRING                                4    X'00000004'
MQCFT_INTEGER_LIST                          5    X'00000005'

MQCI_*（相関識別子）

MQCI_*は，相関識別子を表す定数です。相関識別子については，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でCorrelIdフィールドを参照してください。次に定数とその値を示します。

MQCI_NONE "¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0"
MQCI_NONE_ARRAY     '¥0','¥0','¥0','¥0','¥0','¥0','¥0','¥0',
                    '¥0','¥0','¥0','¥0','¥0','¥0','¥0','¥0',
                    '¥0','¥0','¥0','¥0','¥0','¥0','¥0','¥0'

MQCO_*（クローズオプション）

MQCO_*は，クローズオプションを表す定数です。クローズオプションについては，「2.　メッセージキューイング機能の命令」の「MQCLOSE命令　−　オブジェクトのクローズ」でOptions引数を参照してください。次に定数とその値を示します。

MQCO_NONE                                   0  X'00000000'
MQCO_DELETE                                 1  X'00000001'
MQCO_DELETE_PURGE                           2  X'00000002'

MQDCC_*（変換文字列オプション）

MQDCC_*は，変換文字列オプションを表す定数です。次に定数とその値を示します。

MQDCC_NONE                                  0  X'00000000'

MQDH_*（配布ヘッダ構造体識別子）

MQDH_*は，配布ヘッダ構造体識別子を表す定数です。配布ヘッダ構造体識別子については，「1.　データタイプ」の「MQDH構造体　−　配布ヘッダ」を参照してください。次に定数とその値を示します。

MQDH_STRUC_ID                               "DH"
MQDH_VERSION_1                              1  X'00000001'
MQDH_CURRENT_VERSION                        1  X'00000001'

MQDHF_*（配布ヘッダフラグ）

MQDHF_*は，配布ヘッダフラグを表す定数です。配布ヘッダフラグについては，「1.　データタイプ」の「MQDH構造体　−　配布ヘッダ」を参照してください。次に定数とその値を示します。

MQDHF_NONE                                  0  X'00000000'
MQDHF_NEW_MSG_IDS                           1  X'00000001'

MQDL_*（配布リストのサポート）

MQDL_*は，配布リストを表す定数です。配布リストのサポートについては，「1.　データタイプ」の「MQDH構造体　−　配布ヘッダ」を参照してください。次に定数とその値を示します。

MQDL_NOT_SUPPORTED                          0  X'00000000'
MQDL_SUPPORTED                              1  X'00000001'

MQDLH_STRUC_*（デッドレターヘッダの構造体識別子）

MQDLH_STRUC_*は，デッドレターヘッダの構造体識別子を表す定数です。デッドレターヘッダの構造体識別子については，「1.　データタイプ」の「MQDLH構造体　−　デッドレターヘッダ」でStrucIdフィールドを参照してください。次に定数とその値を示します。

MQDLH_STRUC_ID                              "DLH "
MQDLH_STRUC_ID_ARRAY                        'D','L','H',' '

MQDLH_VERSION_*（デッドレターヘッダの構造体バージョン番号）

MQDLH_VERSION_*は，デッドレターヘッダの構造体バージョン番号を表す定数です。デッドレターヘッダの構造体バージョン番号については，「1.　データタイプ」の「MQDLH構造体　−　デッドレターヘッダ」でVersionフィールドを参照してください。次に定数とその値を示します。

MQDLH_VERSION_1                             1  X'00000001'
MQDLH_CURRENT_VERSION                       1  X'00000001'

MQDXP_*（データ変換出力引数の構造体識別子）

MQDXP_*は，データ変換出力引数の構造体識別子を表す定数です。次に定数とその値を示します。

MQDXP_STRUC_ID                              "DXP "
MQDXP_STRUC_ID_ARRAY                        'D','X','P',' '

MQEI_*（メッセージ保持時間）

MQEI_*は，メッセージ保持時間を表す定数です。メッセージ保持時間については，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でExpiryフィールドを参照してください。次に定数とその値を示します。

MQEI_UNLIMITED                             -1  X'FFFFFFFF'

MQENC_*（マシンコード形式）

MQENC_*は，マシンコード形式を表す定数です。マシンコード形式については，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でEncodingフィールドを参照してください。次に定数とその値を示します。

MQENC_NATIVE                      （プラットフォームに依存します）

MQENC_*（マシンコード形式マスク）

MQENC_*は，マシンコード形式マスクを表す定数です。マシンコード形式については，「付録C　マシンコード形式」を参照してください。次に定数とその値を示します。

MQENC_INTEGER_MASK                         15  X'0x0000000F'
MQENC_DECIMAL_MASK                        240  X'0x000000F0'
MQENC_FLOAT_MASK                         3840  X'0x00000F00'
MQENC_RESERVED_MASK                     -4096  X'0xFFFFF000'

MQENC_DECIMAL_*（10進パック形式整数）

MQENC_DECIMAL_*は，10進パック形式整数を表す定数です。10進パック形式整数については，「付録C.2　10進パック形式整数のマシンコード形式」を参照してください。次に定数とその値を示します。

MQENC_DECIMAL_UNDEFINED                     0  X'00000000'
MQENC_DECIMAL_NORMAL                       16  X'00000010'
MQENC_DECIMAL_REVERSED                     32  X'00000020'

MQENC_FLOAT_*（浮動小数点）

MQENC_FLOAT_*は，浮動小数点を表す定数です。浮動小数点については，「付録C.3　浮動小数点のマシンコード形式」を参照してください。次に定数とその値を示します。

MQENC_FLOAT_IEEE_UNDEFINED                    0  X'00000000'
MQENC_FLOAT_IEEE_NORMAL                     256  X'00000100'
MQENC_FLOAT_IEEE_REVERSED                   512  X'00000200'
MQENC_FLOAT_S390                            768  X'00000300'

MQENC_INTEGER_*（2進整数のマシンコード形式）

MQENC_INTEGER_*は，2進整数のマシンコード形式を表す定数です。2進整数のマシンコード形式については，「付録C.1　2進整数のマシンコード形式」を参照してください。次に定数とその値を示します。

MQENC_INTEGER_UNDEFINED                     0  X'00000000'
MQENC_INTEGER_NORMAL                        1  X'00000001'
MQENC_INTEGER_REVERSED                      2  X'00000002'

MQFB_*（報告メッセージ返答コード，メッセージ通知理由）

MQFB_*は，報告メッセージ返答コード，メッセージ通知理由を表す定数です。報告メッセージ返答コードについては，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でFeedbackフィールドを参照してください。メッセージ通知理由については，「1.　データタイプ」の「MQDLH構造体　−　デッドレターヘッダ」でReasonフィールドを参照してください。次に定数とその値を示します。

MQFB_NONE                                   0  X'00000000'
MQFB_SYSTEM_FIRST                           1  X'00000001'
MQFB_QUIT                                 256  X'00000100'
MQFB_EXPIRATION                           258  X'00000102'
MQFB_COA                                  259  X'00000103'
MQFB_COD                                  260  X'00000104'
MQFB_CHANNEL_COMPLETED                    262  X'00000106'
MQFB_CHANNEL_FAIL_RETRY                   263  X'00000107'
MQFB_CHANNEL_FAIL                         264  X'00000108'
MQFB_APPL_CANNOT_BE_STARTED               265  X'00000109'
MQFB_TM_ERROR                             266  X'0000010A'
MQFB_APPL_TYPE_ERROR                      267  X'0000010B'
MQFB_XMIT_Q_MSG_ERROR                     271  X'0000010F'
MQFB_PAN                                  275  X'00000113'
MQFB_NAN                                  276  X'00000114'
MQFB_STOPPED_BY_CHAD_EXIT                 277  X'00000115'
MQFB_STOPPED_BY_PUBSUB_EXIT               279  X'00000117'
MQFB_NOT_A_REPOSITORY_MSG                 280  X'00000118'
MQFB_BIND_OPEN_CLUSRCVR_DEL               281  X'00000119'
MQFB_DATA_LENGTH_ZERO                     291  X'00000123'
MQFB_DATA_LENGTH_NEGATIVE                 292  X'00000124'
MQFB_DATA_LENGTH_TOO_BIG                  293  X'00000125'
MQFB_BUFFER_OVERFLOW                      294  X'00000126'
MQFB_LENGTH_OFF_BY_ONE                    295  X'00000127'
MQFB_IIH_ERROR                            296  X'00000128'
MQFB_NOT_AUTHORIZED_FOR_IMS               298  X'0000012A'
MQFB_IMS_ERROR                            300  X'0000012C'
MQFB_IMS_FIRST                            301  X'0000012D'
MQFB_IMS_LAST                             399  X'0000018F'
MQFB_CICS_INTERNAL_ERROR                  401  X'00000191'
MQFB_CICS_NOT_AUTHORIZED                  402  X'00000192'
MQFB_CICS_BRIDGE_FAILURE                  403  X'00000193'
MQFB_CICS_CORREL_ID_ERROR                 404  X'00000194'
MQFB_CICS_CCSID_ERROR                     405  X'00000195'
MQFB_CICS_ENCODING_ERROR                  406  X'00000196'
MQFB_CICS_CIH_ERROR                       407  X'00000197'
MQFB_CICS_UOW_ERROR                       408  X'00000198'
MQFB_CICS_COMMAREA_ERROR                  409  X'00000199'
MQFB_CICS_APPL_NOT_STARTED                410  X'0000019A'
MQFB_CICS_APPL_ABENDED                    411  X'0000019B'
MQFB_CICS_DLQ_ERROR                       412  X'0000019C'
MQFB_CICS_UOW_BACKED_OUT                  413  X'0000019D'
MQFB_SYSTEM_LAST                        65535  X'0000FFFF'
MQFB_APPL_FIRST                         65536  X'00010000'
MQFB_APPL_LAST                      999999999  X'3B9AC9FF'

MQFMT_*（フォーマット名）

MQFMT_*は，フォーマット名を表す定数です。フォーマット名については，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でFormatフィールドを参照してください。次に定数とその値を示します。

MQFMT_NONE                                  "        "
MQFMT_ADMIN                                 "MQADMIN "
MQFMT_DEAD_LETTER_HEADER                    "MQDEAD  "
MQFMT_DIST_HEADER                           "MQHDIST  "
MQFMT_EVENT                                 "MQEVENT "
MQFMT_MD_EXTENSION                          "MQHMDE  "
MQFMT_PCF                                   "MQPCF   "
MQFMT_REF_MSG_HEADER                        "MQHREF  "
MQFMT_STRING                                "MQSTR   "
MQFMT_TRIGGER                               "MQTRIG  "
MQFMT_XMIT_Q_HEADER                         "MQXMIT  "
MQFMT_NONE_ARRAY             ' ',' ',' ',' ',' ',' ',' ',' '
MQFMT_ADMIN_ARRAY            'M','Q','A','D','M','I','N',' '
MQFMT_DEAD_LETTER_HEADER_ARRAY
                             'M','Q','D','E','A','D',' ',' '
MQFMT_DIST_HEADER_ARRAY      'M','Q','H','D','I','S','T',' '
MQFMT_EVENT_ARRAY            'M','Q','E','V','E','N','T',' '
MQFMT_MD_EXTENSION_ARRAY     'M','Q','H','M','D','E',' ',' '
MQFMT_PCF_ARRAY              'M','Q','P','C','F',' ',' ',' '
MQFMT_REF_MSG_HEADER_ARRAY   'M','Q','H','R','E','F',' ',' '
MQFMT_STRING_ARRAY           'M','Q','S','T','R',' ',' ',' '
MQFMT_TRIGGER_ARRAY          'M','Q','T','R','I','G',' ',' '
MQFMT_XMIT_Q_HEADER_ARRAY    'M','Q','X','M','I','T',' ',' '

MQGI_*（グループ識別子）

MQGI_*は，グループ識別子を表す定数です。グループ識別子については，「1.　データタイプ」の「MQGMO構造体　−　メッセージ取り出しオプション」でOptionsフィールドを参照してください。次に定数とその値を示します。

MQGI_NONE            "¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0"
MQCI_NONE_ARRAY      '¥0','¥0','¥0','¥0','¥0','¥0','¥0','¥0',
                     '¥0','¥0','¥0','¥0','¥0','¥0','¥0','¥0',
                     '¥0','¥0','¥0','¥0','¥0','¥0','¥0','¥0'

MQGMO_*（取り出しオプション）

MQGMO_*は，取り出しオプションを表す定数です。取り出しオプションについては，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でGroupIdフィールドを参照してください。次に定数とその値を示します。

MQGMO_NO_WAIT                               0  X'00000000'
MQGMO_NONE                                  0  X'00000000'
MQGMO_WAIT                                  1  X'00000001'
MQGMO_SYNCPOINT                             2  X'00000002'
MQGMO_NO_SYNCPOINT                          4  X'00000004'
MQGMO_BROWSE_FIRST                         16  X'00000010'
MQGMO_BROWSE_NEXT                          32  X'00000020'
MQGMO_ACCEPT_TRUNCATED_MSG                 64  X'00000040'
MQGMO_MSG_UNDER_CURSOR                    256  X'00000100'
MQGMO_LOCK                                512  X'00000200'
MQGMO_UNLOCK                             1024  X'00000400'
MQGMO_BROWSE_MSG_UNDER_CURSOR            2048  X'00000800'
MQGMO_SYNCPOINT_IF_PERSISTENT            4096  X'00001000'
MQGMO_FAIL_IF_QUIESCING                  8192  X'00002000'
MQGMO_CONVERT                           16384  X'00004000'
MQGMO_LOGICAL_ORDER                     32768  X'00008000'
MQGMO_COMPLETE_MSG                      65536  X'00010000'
MQGMO_ALL_MSGS_AVAILABLE               131072  X'00020000'
MQGMO_ALL_SEGMENTS_AVAILABLE           262144  X'00040000'

MQGMO_STRUC_*（構造体識別子）

MQGMO_STRUC_*は，構造体識別子を表す定数です。構造体識別子については，「1.　データタイプ」の「MQGMO構造体　−　メッセージ取り出しオプション」でStrucIdフィールドを参照してください。次に定数とその値を示します。

MQGMO_STRUC_ID                              "GMO "
MQGMO_STRUC_ID_ARRAY                        'G','M','O',' '

MQGMO_VERSION_*（構造体バージョン番号）

MQGMO_VERSION_*は，構造体バージョン番号を表す定数です。構造体バージョン番号については，「1.　データタイプ」の「MQGMO構造体　−　メッセージ取り出しオプション」でVersionフィールドを参照してください。次に定数とその値を示します。

MQGMO_VERSION_1                             1  X'00000001'
MQGMO_VERSION_2                             2  X'00000002'
MQGMO_CURRENT_VERSION                       2  X'00000002'

MQGS_*（グループフラグ）

MQGS_*は，グループフラグを表す定数です。グループフラグは取り出されたメッセージがグループに属するかどうかを示します。グループフラグについては，「1.　データタイプ」の「MQGMO構造体　−　メッセージ取り出しオプション」でGroupStatusフィールドを参照してください。次に定数とその値を示します。

MQGS_NOT_IN_GROUP                           ' '
MQGS_MSG_IN_GROUP                           'G'
MQGS_LAST_MSG_IN_GROUP                      'L'

MQHC_*（コネクションハンドル）

MQHC_*は，コネクションハンドルを表す定数です。コネクションハンドルについては，「1.　データタイプ」の「MQDISC命令　−　キューマネジャからの切り離し」でHconn引数を参照してください。次に定数とその値を示します。

MQHC_UNUSABLE_HCONN                        -1  X'FFFFFFFF'

MQHO_*（オブジェクトハンドル）

MQHO_*は，オブジェクトハンドルを表す定数です。オブジェクトハンドルについては，「2.　メッセージキューイング機能の命令」の「MQCLOSE命令　−　オブジェクトのクローズ」でHobj引数を参照してください。次に定数とその値を示します。

MQHO_UNUSABLE_HOBJ                        -1  X'FFFFFFFF'

MQIA_*（整数型属性のセレクタ）

MQIA_*は，整数型属性のセレクタを表す定数です。整数型属性のセレクタについては，「2.　メッセージキューイング機能の命令」の「MQINQ命令　−　オブジェクトの属性の照会」および「MQSET命令　−　オブジェクトの属性の設定」でSelectors引数を参照してください。次に定数とその値を示します。

MQIA_FIRST                                  1  X'00000001'
MQIA_APPL_TYPE                              1  X'00000001'
MQIA_CODED_CHAR_SET_ID                      2  X'00000002'
MQIA_CURRENT_Q_DEPTH                        3  X'00000003'
MQIA_DEF_INPUT_OPEN_OPTION                  4  X'00000004'
MQIA_DEF_PERSISTENCE                        5  X'00000005'
MQIA_DEF_PRIORITY                           6  X'00000006'
MQIA_DEFINITION_TYPE                        7  X'00000007'
MQIA_HARDEN_GET_BACKOUT                     8  X'00000008'
MQIA_INHIBIT_GET                            9  X'00000009'
MQIA_INHIBIT_PUT                           10  X'0000000A'
MQIA_MAX_HANDLES                           11  X'0000000B'
MQIA_USAGE                                 12  X'0000000C'
MQIA_MAX_MSG_LENGTH                        13  X'0000000D'
MQIA_MAX_PRIORITY                          14  X'0000000E'
MQIA_MAX_Q_DEPTH                           15  X'0000000F'
MQIA_MSG_DELIVERY_SEQUENCE                 16  X'00000010'
MQIA_OPEN_INPUT_COUNT                      17  X'00000011'
MQIA_OPEN_OUTPUT_COUNT                     18  X'00000012'
MQIA_NAME_COUNT                            19  X'00000013'
MQIA_Q_TYPE                                20  X'00000014'
MQIA_RETENTION_INTERVAL                    21  X'00000015'
MQIA_SHAREABILITY                          23  X'00000017'
MQIA_TRIGGER_CONTROL                       24  X'00000018'
MQIA_TRIGGER_INTERVAL                      25  X'00000019'
MQIA_TRIGGER_MSG_PRIORITY                  26  X'0000001A'
MQIA_TRIGGER_TYPE                          28  X'0000001C'
MQIA_TRIGGER_DEPTH                         29  X'0000001D'
MQIA_SYNCPOINT                             30  X'0000001E'
MQIA_PLATFORM                              32  X'00000020'
MQIA_MAX_UNCOMMITTED_MSGS                  33  X'00000021'
MQIA_DIST_LISTS                            34  X'00000022'
MQIA_SCOPE                                 45  X'0000002D'
MQIA_LAST_USED                             56  X'00000038'
MQIA_DEF_BIND                              61  X'0000003D'
MQIA_LAST                                2000  X'000007D0'

MQIAV_*（整数型属性の値）

MQIAV_*は，整数型属性の値を表す定数です。次に定数とその値を示します。

MQIAV_NOT_APPLICABLE                        -1  X'FFFFFFFF'

MQMD_STRUC_*（メッセージ記述子の構造体識別子）

MQMD_STRUC_*は，メッセージ記述子の構造体識別子を表す定数です。メッセージ記述子の構造体識別子については，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でStrucIdフィールドを参照してください。次に定数とその値を示します。

MQMD_STRUC_ID                               "MD  "
MQMD_STRUC_ID_ARRAY                         'M','D',' ',' '

MQMD_VERSION_*（構造体バージョン番号）

MQMD_VERSION_*は，構造体バージョン番号を表す定数です。構造体バージョン番号については，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でVersionフィールドを参照してください。次に定数とその値を示します。

MQMD_VERSION_1                              1  X'00000001'
MQMD_VERSION_2                              2  X'00000002'
MQMD_CURRENT_VERSION                        2  X'00000002'

MQMDE_*（構造体長）

MQMDE_*は，構造体長を表す定数です。構造体長はメッセージ記述子の拡張の長さを示します。メッセージ記述子の拡張の長さについては，「1.　データタイプ」の「MQMDE構造体　−　メッセージ記述子の拡張」でVersionフィールドを参照してください。次に定数とその値を示します。

MQMDE_LENGTH_2                              72  X'00000048'

MQMDE_*（構造体識別子）

MQMDE_*は，メッセージ記述子の拡張の構造体識別子を表す定数です。メッセージ記述子の拡張の構造体識別子については，「1.　データタイプ」の「MQMDE構造体　−　メッセージ記述子の拡張」でVersionフィールドを参照してください。次に定数とその値を示します。

MQMDE_STRUC_ID                              'MDE '
MQMDE_STRUC_ID_ARRAY                        'M','D','E',' '

MQMDE_*（構造体バージョン番号）

MQMDE_*は，構造体バージョン番号を表す定数です。構造体バージョン番号はメッセージ記述子の拡張のバージョンを示します。メッセージ記述子の拡張のバージョンについては，「1.　データタイプ」の「MQMDE構造体　−　メッセージ記述子の拡張」でVersionフィールドを参照してください。次に定数とその値を示します。

MQMDE_VERSION_2                             2  X'00000002'
MQMDE_CURRENT_VERSION                       2  X'00000002'

MQMDEF_*（メッセージ記述子拡張フラグ）

MQMDEF_*は，メッセージ記述子の拡張フラグを表す定数です。メッセージ記述子の拡張フラグについては，「1.　データタイプ」の「MQMDE構造体　−　メッセージ記述子の拡張」でFlagsフィールドを参照してください。次に定数とその値を示します。

MQMDEF_NONE                                 0  X'00000000'

MQMDS_*（メッセージ配布順序）

MQMDS_*は，メッセージ配布順序を表す定数です。メッセージ配布順序については，「3.　オブジェクトの属性」の「キューの属性」でMsgDeliverySequence属性を参照してください。次に定数とその値を示します。

MQMDS_PRIORITY                              0  X'00000000'
MQMDS_FIFO                                  1  X'00000001'

MQMF_*（メッセージフラグ）

MQMF_*は，メッセージフラグを表す定数です。メッセージフラグについては，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でMsgFlagsフィールドを参照してください。次に定数とその値を示します。

MQMF_SEGMENTATION_INHIBITED                 0  X'00000000'
MQMF_NONE                                   0  X'00000000'
MQMF_SEGMENTATION_ALLOWED                   1  X'00000001'
MQMF_SEGMENT                                2  X'00000002'
MQMF_LAST_SEGMENT                           4  X'00000004'
MQMF_MSG_IN_GROUP                           8  X'00000008'
MQMF_LAST_MSG_IN_GROUP                     16  X'00000010'

MQMI_*（メッセージ識別子）

MQMI_*は，メッセージ識別子を表す定数です。メッセージ識別子については，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でMsgIdフィールドを参照してください。次に定数とその値を示します。

MQMI_NONE           "¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0"
MQMI_NONE_ARRAY     '¥0','¥0','¥0','¥0','¥0','¥0','¥0','¥0',
                    '¥0','¥0','¥0','¥0','¥0','¥0','¥0','¥0',
                    '¥0','¥0','¥0','¥0','¥0','¥0','¥0','¥0'

MQMO_*（一致オプション）

MQMO_*は，一致オプションを表す定数です。一致オプションについては，「1.　データタイプ」の「MQGMO構造体　−　メッセージ取り出しオプション」でMatchOptionsフィールドを参照してください。次に定数とその値を示します。

MQMO_NONE                                   0  X'00000000'
MQMO_MATCH_MSG_ID                           1  X'00000001'
MQMO_MATCH_CORREL_ID                        2  X'00000002'
MQMO_MATCH_GROUP_ID                         4  X'00000004'
MQMO_MATCH_MSG_SEQ_NUMBER                   8  X'00000008'
MQMO_MATCH_OFFSET                          16  X'00000010'

MQMT_*（メッセージタイプ）

MQMT_*は，メッセージタイプを表す定数です。メッセージタイプについては，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でMsgTypeフィールドを参照してください。次に定数とその値を示します。

MQMT_SYSTEM_FIRST                           1  X'00000001'
MQMT_REQUEST                                1  X'00000001'
MQMT_REPLY                                  2  X'00000002'
MQMT_REPORT                                 4  X'00000004'
MQMT_DATAGRAM                               8  X'00000008'
MQMT_SYSTEM_LAST                        65535  X'0000FFFF'
MQMT_APPL_FIRST                         65536  X'00010000'
MQMT_APPL_LAST                      999999999  X'3B9AC9FF'

MQOD_*（オブジェクト記述子長）

MQOD_*は，オブジェクト記述子の長さを表します。オブジェクト記述子長については，「1.　データタイプ」の「MQOD構造体　−　オブジェクト記述子」を参照してください。次に定数とその値を示します。

MQOD_CURRENT_LENGTH                          （環境に依存します）

MQOD_STRUC_*（構造体識別子）

MQOD_STRUC_*は，構造体識別子を表す定数です。構造体識別子については，「1.　データタイプ」の「MQOD構造体　−　オブジェクト記述子」でStrucIdフィールドを参照してください。次に定数とその値を示します。

MQOD_STRUC_ID                               "OD  "
MQOD_STRUC_ID_ARRAY                         'O','D',' ',' '

MQOD_VERSION_*（構造体バージョン番号）

MQOD_VERSION_*は，構造体バージョン番号を表す定数です。構造体バージョン番号については，「1.　データタイプ」の「MQOD構造体　−　オブジェクト記述子」でVersionフィールドを参照してください。次に定数とその値を示します。

MQOD_VERSION_1                              1  X'00000001'
MQOD_VERSION_2                              2  X'00000002'
MQOD_VERSION_3                              3  X'00000003'
MQOD_CURRENT_VERSION                        3  X'00000003'

MQOII_*（オブジェクトインスタンス識別子）

MQOII_*は，オブジェクトインスタンス識別子を表す定数です。オブジェクトインスタンス識別子については，「1.　データタイプ」の「MQRMH構造体　−　メッセージ参照ヘッダ」でObjectInstanceIdフィールドを参照してください。次に定数とその値を示します。

MQOII_NONE           "¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0"
MQOII_NONE_ARRAY     '¥0','¥0','¥0','¥0','¥0','¥0','¥0','¥0',
                     '¥0','¥0','¥0','¥0','¥0','¥0','¥0','¥0',
                     '¥0','¥0','¥0','¥0','¥0','¥0','¥0','¥0'

MQOL_*（登録元データ長）

MQOL_*は，登録元のデータ長を表す定数です。登録元データ長については，「1.　データタイプ」の「MQOD構造体　−　オブジェクト記述子」でOriginalLengthフィールド参照してください。次に定数とその値を示します。

MQOL_UNDEFINED                          -1  X'FFFFFFFF'

MQOO_*（オープンオプション）

MQOO_*は，オープンオプションを表す定数です。オープンオプションについては，「2.　メッセージキューイング機能の命令」の「MQOPEN命令　−　オブジェクトのオープン」でOptions引数を参照してください。次に定数とその値を示します。

MQOO_BIND_AS_Q_DEF                          0  X'00000000'
MQOO_INPUT_AS_Q_DEF                         1  X'00000001'
MQOO_INPUT_SHARED                           2  X'00000002'
MQOO_INPUT_EXCLUSIVE                        4  X'00000004'
MQOO_BROWSE                                 8  X'00000008'
MQOO_OUTPUT                                16  X'00000010'
MQOO_INQUIRE                               32  X'00000020'
MQOO_SET                                   64  X'00000040'
MQOO_SAVE_ALL_CONTEXT                     128  X'00000080'
MQOO_PASS_IDENTITY_CONTEXT                256  X'00000100'
MQOO_PASS_ALL_CONTEXT                     512  X'00000200'
MQOO_SET_IDENTITY_CONTEXT                1024  X'00000400'
MQOO_SET_ALL_CONTEXT                     2048  X'00000800'
MQOO_ALTERNATE_USER_AUTHORITY            4096  X'00001000'
MQOO_FAIL_IF_QUIESCING                   8192  X'00002000'
MQOO_BIND_ON_OPEN                       16384  X'00004000'
MQOO_BIND_NOT_FIXED                     32768  X'00008000'

MQOT_*（オブジェクトタイプ）

MQOT_*は，オブジェクトタイプを表す定数です。オブジェクトタイプについては，「1.　データタイプ」の「MQOD構造体　−　オブジェクト記述子」でObjectTypeフィールドを参照してください。次に定数とその値を示します。

MQOT_Q                                      1  X'00000001'
MQOT_PROCESS                                3  X'00000003'
MQOT_Q_MGR                                  5  X'00000005'

MQPER_*（メッセージ永続性）

MQPER_*は，メッセージ永続性を表す定数です。メッセージ永続性については，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でPersistenceフィールドを参照してください。次に定数とその値を示します。

MQPER_NOT_PERSISTENT                        0  X'00000000'
MQPER_PERSISTENT                            1  X'00000001'
MQPER_PERSISTENCE_AS_Q_DEF                  2  X'00000002'

MQPL_*（プラットフォーム）

MQPL_*は，プラットフォームを表す定数です。プラットフォームについては，「3.　オブジェクトの属性」の「キューマネジャの属性」でPlatform属性を参照してください。次に定数とその値を示します。

MQPL_MVS                                    1  X'00000001'
MQPL_OS2                                    2  X'00000002'
MQPL_AIX                                    3  X'00000003'
MQPL_UNIX                                   3  X'00000003'
MQPL_OS400                                  4  X'00000004'
MQPL_WINDOWS                                5  X'00000005'
MQPL_WINDOWS_NT                            11  X'0000000B'
MQPL_OPEN_TP1                              15  X'0000000F'
MQPL_XDM                                   16  X'00000010'
MQPL_TMS_4V                                17  X'00000011'

MQPMO_*（メッセージ登録オプション）

MQPMO_*は，メッセージ登録オプションを表す定数です。メッセージ登録オプションについては，「1.　データタイプ」の「MQPMO構造体　−　メッセージ登録オプション」でOptionsフィールドを参照してください。次に定数とその値を示します。

MQPMO_NONE                                  0  X'00000000'
MQPMO_SYNCPOINT                             2  X'00000002'
MQPMO_NO_SYNCPOINT                          4  X'00000004'
MQPMO_DEFAULT_CONTEXT                      32  X'00000020'
MQPMO_NEW_MSG_ID                           64  X'00000040'
MQPMO_NEW_CORREL_ID                       128  X'00000080'
MQPMO_PASS_IDENTITY_CONTEXT               256  X'00000100'
MQPMO_PASS_ALL_CONTEXT                    512  X'00000200'
MQPMO_SET_IDENTITY_CONTEXT               1024  X'00000400'
MQPMO_SET_ALL_CONTEXT                    2048  X'00000800'
MQPMO_ALTERNATE_USER_AUTHORITY           4096  X'00001000'
MQPMO_FAIL_IF_QUIESCING                  8192  X'00002000'
MQPMO_NO_CONTEXT                        16384  X'00004000'
MQPMO_LOGICAL_ORDER                     32768  X'00008000'

MQPMO_*（メッセージ登録オプションの構造体長）

MQPMO_*は，メッセージ登録オプションの構造体長を表す定数です。次に定数とその値を示します。

MQPMO_CURRENT_LENGTH                        環境に依存

MQPMO_STRUC_*（メッセージ登録オプションの構造体識別子）

MQPMO_STRUC_*は，メッセージ登録オプションの構造体識別子を表す定数です。メッセージ登録オプションの構造体識別子については，「1.　データタイプ」の「MQPMO構造体　−　メッセージ登録オプション」でStrucIdフィールドを参照してください。次に定数とその値を示します。

MQPMO_STRUC_ID                              "PMO "
MQPMO_STRUC_ID_ARRAY                        'P','M','O',' '

MQPMO_VERSION_*（構造体バージョン番号）

MQPMO_VERSION_*は，構造体バージョン番号を表す定数です。構造体バージョン番号については，「1.　データタイプ」の「MQPMO構造体　−　メッセージ登録オプション」でVersionフィールドを参照してください。次に定数とその値を示します。

MQPMO_VERSION_1                             1  X'00000001'
MQPMO_VERSION_2                             2  X'00000002'
MQPMO_CURRENT_VERSION                       2  X'00000002'

MQPMRF_*（メッセージ登録レコードフィールドのフラグ）

MQPMRF_*は，メッセージ登録レコードフィールドのフラグを表す定数です。メッセージ登録レコードフィールドのフラグについては，「1.　データタイプ」の「MQDH構造体　−　配布ヘッダ」でPutMsgRecFieldsフィールドを参照してください。次に定数とその値を示します。

MQPMRF_NONE                                 0  X'00000000'
MQPMRF_MSG_ID                               1  X'00000001'
MQPMRF_CORREL_ID                            2  X'00000002'
MQPMRF_GROUP_ID                             4  X'00000004'
MQPMRF_FEEDBACK                             8  X'00000008'
MQPMRF_ACCOUNTING_TOKEN                    16  X'00000010'

MQPRI_*（メッセージ優先度）

MQPRI_*は，メッセージ優先度を表す定数です。メッセージ優先度については，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でPriorityフィールドを参照してください。次に定数とその値を示します。

MQPRI_PRIORITY_AS_Q_DEF                     -1  X'FFFFFFFF'

MQQA_BACKOUT_*（ロールバック回数記録方法）

MQQA_BACKOUT_*は，ロールバック回数記録方法を表す定数です。ロールバック回数記録方法については，「3.　オブジェクトの属性」の「キューの属性」でHardenGetBackout属性を参照してください。次に定数とその値を示します。

MQQA_BACKOUT_NOT_HARDENED                    0  X'00000000'
MQQA_BACKOUT_HARDENED                        1  X'00000001'

MQQA_GET_*（取り出し許可）

MQQA_GET_*は，取り出し許可を表す定数です。取り出し許可については，「3.　オブジェクトの属性」の「キューの属性」でInhibitGet属性を参照してください。次に定数とその値を示します。

MQQA_GET_ALLOWED                            0  X'00000000'
MQQA_GET_INHIBITED                          1  X'00000001'

MQQA_PUT_*（登録許可）

MQQA_PUT_*は，登録許可を表す定数です。登録許可については，「3.　オブジェクトの属性」の「キューの属性」でInhibitPut属性を参照してください。次に定数とその値を示します。

MQQA_PUT_ALLOWED                            0  X'00000000'
MQQA_PUT_INHIBITED                          1  X'00000001'

MQQA_*_SHAREABLE（共用性）

MQQA_*_SHAREABLEは，共用性を表す定数です。共用性については，「3.　オブジェクトの属性」の「キューの属性」でShareability属性を参照してください。次に定数とその値を示します。

MQQA_NOT_SHAREABLE                          0  X'00000000'
MQQA_SHAREABLE                              1  X'00000001'

MQQDT_*（定義タイプ）

MQQDT_*は，定義タイプを表す定数です。定義タイプについては，「3.　オブジェクトの属性」の「キューの属性」でDefinitionType属性を参照してください。次に定数とその値を示します。

MQQDT_PREDEFINED                            1  X'00000001'
MQQDT_PERMANENT_DYNAMIC                     2  X'00000002'
MQQDT_TEMPORARY_DYNAMIC                     3  X'00000003'

MQQT_*（キュータイプ）

MQQT_*は，キュータイプを表す定数です。キュータイプについては，「3.　オブジェクトの属性」の「キューの属性」でQType属性を参照してください。次に定数とその値を示します。

MQQT_LOCAL                                  1  X'00000001'
MQQT_MODEL                                  2  X'00000002'
MQQT_ALIAS                                  3  X'00000003'
MQQT_REMOTE                                 6  X'00000006'
MQQT_CLUSTER                                7  X'00000007'

MQRC_*（理由コード）

MQRC_*は，理由コードを表す定数です。理由コードについては，「付録B.2　理由コード」を参照してください。次に定数とその値を示します。

MQRC_NONE                                      0  X'00000000'
MQRC_APPL_FIRST                              900  X'00000384'
MQRC_APPL_LAST                               999  X'000003E7'
MQRC_ALIAS_BASE_Q_TYPE_ERROR                2001  X'000007D1'
MQRC_ALREADY_CONNECTED                      2002  X'000007D2'
MQRC_BACKED_OUT                             2003  X'000007D3'
MQRC_BUFFER_ERROR                           2004  X'000007D4'
MQRC_BUFFER_LENGTH_ERROR                    2005  X'000007D5'
MQRC_CHAR_ATTR_LENGTH_ERROR                 2006  X'000007D6'
MQRC_CHAR_ATTRS_ERROR                       2007  X'000007D7'
MQRC_CHAR_ATTRS_TOO_SHORT                   2008  X'000007D8'
MQRC_CONNECTION_BROKEN                      2009  X'000007D9'
MQRC_DATA_LENGTH_ERROR                      2010  X'000007DA'
MQRC_DYNAMIC_Q_NAME_ERROR                   2011  X'000007DB'
MQRC_ENVIRONMENT_ERROR                      2012  X'000007DC'
MQRC_EXPIRY_ERROR                           2013  X'000007DD'
MQRC_FEEDBACK_ERROR                         2014  X'000007DE'
MQRC_GET_INHIBITED                          2016  X'000007E0'
MQRC_HANDLE_NOT_AVAILABLE                   2017  X'000007E1'
MQRC_HCONN_ERROR                            2018  X'000007E2'
MQRC_HOBJ_ERROR                             2019  X'000007E3'
MQRC_INHIBIT_VALUE_ERROR                    2020  X'000007E4'
MQRC_INT_ATTR_COUNT_ERROR                   2021  X'000007E5'
MQRC_INT_ATTR_COUNT_TOO_SMALL               2022  X'000007E6'
MQRC_INT_ATTRS_ARRAY_ERROR                  2023  X'000007E7'
MQRC_SYNCPOINT_LIMIT_REACHED                2024  X'000007E8'
MQRC_MAX_CONNS_LIMIT_REACHED                2025  X'000007E9'
MQRC_MD_ERROR                               2026  X'000007EA'
MQRC_MISSING_REPLY_TO_Q                     2027  X'000007EB'
MQRC_MSG_TYPE_ERROR                         2029  X'000007ED'
MQRC_MSG_TOO_BIG_FOR_Q                      2030  X'000007EE'
MQRC_MSG_TOO_BIG_FOR_Q_MGR                  2031  X'000007EF'
MQRC_NO_MSG_AVAILABLE                       2033  X'000007F1'
MQRC_NO_MSG_UNDER_CURSOR                    2034  X'000007F2'
MQRC_NOT_AUTHORIZED                         2035  X'000007F3'
MQRC_NOT_OPEN_FOR_BROWSE                    2036  X'000007F4'
MQRC_NOT_OPEN_FOR_INPUT                     2037  X'000007F5'
MQRC_NOT_OPEN_FOR_INQUIRE                   2038  X'000007F6'
MQRC_NOT_OPEN_FOR_OUTPUT                    2039  X'000007F7'
MQRC_NOT_OPEN_FOR_SET                       2040  X'000007F8'
MQRC_OBJECT_CHANGED                         2041  X'000007F9'
MQRC_OBJECT_IN_USE                          2042  X'000007FA'
MQRC_OBJECT_TYPE_ERROR                      2043  X'000007FB'
MQRC_OD_ERROR                               2044  X'000007FC'
MQRC_OPTION_NOT_VALID_FOR_TYPE              2045  X'000007FD'
MQRC_OPTIONS_ERROR                          2046  X'000007FE'
MQRC_PERSISTENCE_ERROR                      2047  X'000007FF'
MQRC_PERSISTENT_NOT_ALLOWED                 2048  X'00000800'
MQRC_PRIORITY_EXCEEDS_MAXIMUM               2049  X'00000801'
MQRC_PRIORITY_ERROR                         2050  X'00000802'
MQRC_PUT_INHIBITED                          2051  X'00000803'
MQRC_Q_DELETED                              2052  X'00000804'
MQRC_Q_FULL                                 2053  X'00000805'
MQRC_Q_NOT_EMPTY                            2055  X'00000807'
MQRC_Q_SPACE_NOT_AVAILABLE                  2056  X'00000808'
MQRC_Q_TYPE_ERROR                           2057  X'00000809'
MQRC_Q_MGR_NAME_ERROR                       2058  X'0000080A'
MQRC_Q_MGR_NOT_AVAILABLE                    2059  X'0000080B'
MQRC_REPORT_OPTIONS_ERROR                   2061  X'0000080D'
MQRC_SECOND_MARK_NOT_ALLOWED                2062  X'0000080E'
MQRC_SECURITY_ERROR                         2063  X'0000080F'
MQRC_SELECTOR_COUNT_ERROR                   2065  X'00000811'
MQRC_SELECTOR_LIMIT_EXCEEDED                2066  X'00000812'
MQRC_SELECTOR_ERROR                         2067  X'00000813'
MQRC_SELECTOR_NOT_FOR_TYPE                  2068  X'00000814'
MQRC_SIGNAL_OUTSTANDING                     2069  X'00000815'
MQRC_SIGNAL_REQUEST_ACCEPTED                2070  X'00000816'
MQRC_STORAGE_NOT_AVAILABLE                  2071  X'00000817'
MQRC_SYNCPOINT_NOT_AVAILABLE                2072  X'00000818'
MQRC_TRIGGER_CONTROL_ERROR                  2075  X'0000081B'
MQRC_TRIGGER_DEPTH_ERROR                    2076  X'0000081C'
MQRC_TRIGGER_MSG_PRIORITY_ERR               2077  X'0000081D'
MQRC_TRIGGER_TYPE_ERROR                     2078  X'0000081E'
MQRC_TRUNCATED_MSG_ACCEPTED                 2079  X'0000081F'
MQRC_TRUNCATED_MSG_FAILED                   2080  X'00000820'
MQRC_UNKNOWN_ALIAS_BASE_Q                   2082  X'00000822'
MQRC_UNKNOWN_OBJECT_NAME                    2085  X'00000825'
MQRC_UNKNOWN_OBJECT_Q_MGR                   2086  X'00000826'
MQRC_UNKNOWN_REMOTE_Q_MGR                   2087  X'00000827'
MQRC_WAIT_INTERVAL_ERROR                    2090  X'0000082A'
MQRC_XMIT_Q_TYPE_ERROR                      2091  X'0000082B'
MQRC_XMIT_Q_USAGE_ERROR                     2092  X'0000082C'
MQRC_NOT_OPEN_FOR_PASS_ALL                  2093  X'0000082D'
MQRC_NOT_OPEN_FOR_PASS_IDENT                2094  X'0000082E'
MQRC_NOT_OPEN_FOR_SET_ALL                   2095  X'0000082F'
MQRC_NOT_OPEN_FOR_SET_IDENT                 2096  X'00000830'
MQRC_CONTEXT_HANDLE_ERROR                   2097  X'00000831'
MQRC_CONTEXT_NOT_AVAILABLE                  2098  X'00000832'
MQRC_SIGNAL1_ERROR                          2099  X'00000833'
MQRC_OBJECT_ALREADY_EXISTS                  2100  X'00000834'
MQRC_OBJECT_DAMAGED                         2101  X'00000835'
MQRC_RESOURCE_PROBLEM                       2102  X'00000836'
MQRC_ANOTHER_Q_MGR_CONNECTED                2103  X'00000837'
MQRC_UNKNOWN_REPORT_OPTION                  2104  X'00000838'
MQRC_STORAGE_CLASS_ERROR                    2105  X'00000839'
MQRC_COD_NOT_VALID_FOR_XCF_Q                2106  X'0000083A'
MQRC_XWAIT_CANCELED                         2107  X'0000083B'
MQRC_XWAIT_ERROR                            2108  X'0000083C'
MQRC_SUPPRESSED_BY_EXIT                     2109  X'0000083D'
MQRC_FORMAT_ERROR                           2110  X'0000083E'
MQRC_SOURCE_CCSID_ERROR                     2111  X'0000083F'
MQRC_SOURCE_INTEGER_ENC_ERROR               2112  X'00000840'
MQRC_SOURCE_DECIMAL_ENC_ERROR               2113  X'00000841'
MQRC_SOURCE_FLOAT_ENC_ERROR                 2114  X'00000842'
MQRC_TARGET_CCSID_ERROR                     2115  X'00000843'
MQRC_TARGET_INTEGER_ENC_ERROR               2116  X'00000844'
MQRC_TARGET_DECIMAL_ENC_ERROR               2117  X'00000845'
MQRC_TARGET_FLOAT_ENC_ERROR                 2118  X'00000846'
MQRC_NOT_CONVERTED                          2119  X'00000847'
MQRC_CONVERTED_MSG_TOO_BIG                  2120  X'00000848'
MQRC_NO_EXTERNAL_PARTICIPANTS               2121  X'00000849'
MQRC_PARTICIPANT_NOT_AVAILABLE              2122  X'0000084A'
MQRC_OUTCOME_MIXED                          2123  X'0000084B'
MQRC_OUTCOME_PENDING                        2124  X'0000084C'
MQRC_BRIDGE_STARTED                         2125  X'0000084D'
MQRC_BRIDGE_STOPPED                         2126  X'0000084E'
MQRC_ADAPTER_STORAGE_SHORTAGE               2127  X'0000084F'
MQRC_UOW_IN_PROGRESS                        2128  X'00000850'
MQRC_ADAPTER_CONN_LOAD_ERROR                2129  X'00000851'
MQRC_ADAPTER_SERV_LOAD_ERROR                2130  X'00000852'
MQRC_ADAPTER_DEFS_ERROR                     2131  X'00000853'
MQRC_ADAPTER_DEFS_LOAD_ERROR                2132  X'00000854'
MQRC_ADAPTER_CONV_LOAD_ERROR                2133  X'00000855'
MQRC_BO_ERROR                               2134  X'00000856'
MQRC_DH_ERROR                               2135  X'00000857'
MQRC_MULTIPLE_REASONS                       2136  X'00000858'
MQRC_OPEN_FAILED                            2137  X'00000859'
MQRC_ADAPTER_DISC_LOAD_ERROR                2138  X'0000085A'
MQRC_CNO_ERROR                              2139  X'0000085B'
MQRC_CICS_WAIT_FAILED                       2140  X'0000085C'
MQRC_DLH_ERROR                              2141  X'0000085D'
MQRC_HEADER_ERROR                           2142  X'0000085E'
MQRC_SOURCE_LENGTH_ERROR                    2143  X'0000085F'
MQRC_TARGET_LENGTH_ERROR                    2144  X'00000860'
MQRC_SOURCE_BUFFER_ERROR                    2145  X'00000861'
MQRC_TARGET_BUFFER_ERROR                    2146  X'00000862'
MQRC_IIH_ERROR                              2148  X'00000864'
MQRC_PCF_ERROR                              2149  X'00000865'
MQRC_DBCS_ERROR                             2150  X'00000866'
MQRC_OBJECT_NAME_ERROR                      2152  X'00000868'
MQRC_OBJECT_Q_MGR_NAME_ERROR                2153  X'00000869'
MQRC_RECS_PRESENT_ERROR                     2154  X'0000086A'
MQRC_OBJECT_RECORDS_ERROR                   2155  X'0000086B'
MQRC_RESPONSE_RECORDS_ERROR                 2156  X'0000086C'
MQRC_ASID_MISMATCH                          2157  X'0000086D'
MQRC_PMO_RECORD_FLAGS_ERROR                 2158  X'0000086E'
MQRC_PUT_MSG_RECORDS_ERROR                  2159  X'0000086F'
MQRC_CONN_ID_IN_USE                         2160  X'00000870'
MQRC_Q_MGR_QUIESCING                        2161  X'00000871'
MQRC_Q_MGR_STOPPING                         2162  X'00000872'
MQRC_DUPLICATE_RECOV_COORD                  2163  X'00000873'
MQRC_PMO_ERROR                              2173  X'0000087D'
MQRC_API_EXIT_NOT_FOUND                     2182  X'00000886'
MQRC_API_EXIT_LOAD_ERROR                    2183  X'00000887'
MQRC_REMOTE_Q_NAME_ERROR                    2184  X'00000888'
MQRC_INCONSISTENT_PERSISTENCE               2185  X'00000889'
MQRC_GMO_ERROR                              2186  X'0000088A'
MQRC_CICS_BRIDGE_RESTRICTION                2187  X'0000088B'
MQRC_STOPPED_BY_CLUSTER_EXIT                2188  X'0000088C'
MQRC_CLUSTER_RESOLUTION_ERROR               2189  X'0000088D'
MQRC_CONVERTED_STRING_TOO_BIG               2190  X'0000088E'
MQRC_TMC_ERROR                              2191  X'0000088F'
MQRC_PAGESET_FULL                           2192  X'00000890'
MQRC_STORAGE_MEDIUM_FULL                    2192  X'00000890'
MQRC_PAGESET_ERROR                          2193  X'00000891'
MQRC_NAME_NOT_VALID_FOR_TYPE                2194  X'00000892'
MQRC_UNEXPECTED_ERROR                       2195  X'00000893'
MQRC_UNKNOWN_XMIT_Q                         2196  X'00000894'
MQRC_UNKNOWN_DEF_XMIT_Q                     2197  X'00000895'
MQRC_DEF_XMIT_Q_TYPE_ERROR                  2198  X'00000896'
MQRC_DEF_XMIT_Q_USAGE_ERROR                 2199  X'00000897'
MQRC_NAME_IN_USE                            2201  X'00000899'
MQRC_CONNECTION_QUIESCING                   2202  X'0000089A'
MQRC_CONNECTION_STOPPING                    2203  X'0000089B'
MQRC_ADAPTER_NOT_AVAILABLE                  2204  X'0000089C'
MQRC_MSG_ID_ERROR                           2206  X'0000089D'
MQRC_CORREL_ID_ERROR                        2207  X'0000089E'
MQRC_FILE_SYSTEM_ERROR                      2208  X'0000089F'
MQRC_NO_MSG_LOCKED                          2209  X'000008A1'
MQRC_FILE_NOT_AUDITED                       2216  X'000008A8'
MQRC_CONNECTION_NOT_AUTHORIZED              2217  X'000008A9'
MQRC_MSG_TOO_BIG_FOR_CHANNEL                2218  X'000008AA'
MQRC_CALL_IN_PROGRESS                       2219  X'000008AB'
MQRC_RMH_ERROR                              2220  X'000008AC'
MQRC_Q_MGR_ACTIVE                           2222  X'000008AE'
MQRC_Q_MGR_NOT_ACTIVE                       2223  X'000008AF'
MQRC_Q_DEPTH_HIGH                           2224  X'000008B0'
MQRC_Q_DEPTH_LOW                            2225  X'000008B1'
MQRC_Q_SERVICE_INTERVAL_HIGH                2226  X'000008B2'
MQRC_Q_SERVICE_INTERVAL_OK                  2227  X'000008B3'
MQRC_UNIT_OF_WORK_NOT_STARTED               2232  X'000008B8'
MQRC_CHANNEL_AUTO_DEF_OK                    2233  X'000008B9'
MQRC_CHANNEL_AUTO_DEF_ERROR                 2234  X'000008BA'
MQRC_CFH_ERROR                              2235  X'000008BB'
MQRC_CFIL_ERROR                             2236  X'000008BC'
MQRC_CFIN_ERROR                             2237  X'000008BD'
MQRC_CFSL_ERROR                             2238  X'000008BE'
MQRC_CFST_ERROR                             2239  X'000008BF'
MQRC_INCOMPLETE_GROUP                       2241  X'000008C1'
MQRC_INCOMPLETE_MSG                         2242  X'000008C2'
MQRC_INCONSISTENT_CCSIDS                    2243  X'000008C3'
MQRC_INCONSISTENT_ENCODINGS                 2244  X'000008C4'
MQRC_INCONSISTENT_UOW                       2245  X'000008C5'
MQRC_INVALID_MSG_UNDER_CURSOR               2246  X'000008C6'
MQRC_MATCH_OPTIONS_ERROR                    2247  x'000008C7'
MQRC_MDE_ERROR                              2248  X'000008C8'
MQRC_MSG_FLAGS_ERROR                        2249  X'000008C9'
MQRC_MSG_SEQ_NUMBER_ERROR                   2250  X'000008CA'
MQRC_OFFSET_ERROR                           2251  X'000008CB'
MQRC_ORIGINAL_LENGTH_ERROR                  2252  X'000008CC'
MQRC_SEGMENT_LENGTH_ZERO                    2253  X'000008CD'
MQRC_UOW_NOT_AVAILABLE                      2255  X'000008CF'
MQRC_WRONG_GMO_VERSION                      2256  X'000008D0'
MQRC_WRONG_MD_VERSION                       2257  X'000008D1'
MQRC_GROUP_ID_ERROR                         2258  X'000008D2'
MQRC_INCONSISTENT_BROWSE                    2259  X'000008D3'
MQRC_XQH_ERROR                              2260  X'000008D4'
MQRC_SRC_ENV_ERROR                          2261  X'000008D5'
MQRC_SRC_NAME_ERROR                         2262  X'000008D6'
MQRC_DEST_ENV_ERROR                         2263  X'000008D7'
MQRC_DEST_NAME_ERROR                        2264  X'000008D8'
MQRC_TM_ERROR                               2265  X'000008D9'
MQRC_CLUSTER_EXIT_ERROR                     2266  X'000008DA'
MQRC_CLUSTER_EXIT_LOAD_ERROR                2267  X'000008DB'
MQRC_CLUSTER_PUT_INHIBITED                  2268  X'000008DC'
MQRC_CLUSTER_RESOURCE_ERROR                 2269  X'000008DD'
MQRC_NO_DESTINATIONS_AVAILABLE              2270  X'000008DE'
MQRC_CONN_TAG_IN_USE                        2271  X'000008DF'
MQRC_PARTIALLY_CONVERTED                    2272  X'000008E0'
MQRC_CONNECTION_ERROR                       2273  X'000008E1'
MQRC_OPTION_ENVIRONMENT_ERROR               2274  X'000008E2'
MQRC_CD_ERROR                               2277  X'000008E5'
MQRC_CLIENT_CONN_ERROR                      2278  X'000008E6'
MQRC_CHANNEL_STOPPED_BY_USER                2279  X'000008E7'
MQRC_HCONFIG_ERROR                          2280  X'000008E8'
MQRC_FUNCTION_ERROR                         2281  X'000008E9'
MQRC_CHANNEL_STARTED                        2282  X'000008EA'
MQRC_CHANNEL_STOPPED                        2283  X'000008EB'
MQRC_CHANNEL_CONV_ERROR                     2284  X'000008EC'
MQRC_SERVICE_NOT_AVAILABLE                  2285  X'000008ED'
MQRC_INITIALIZATION_FAILED                  2286  X'000008EE'
MQRC_TERMINATION_FAILED                     2287  X'000008EF'
MQRC_UNKNOWN_Q_NAME                         2288  X'000008F0'
MQRC_SERVICE_ERROR                          2289  X'000008F1'
MQRC_Q_ALREADY_EXISTS                       2290  X'000008F2'
MQRC_USER_ID_NOT_AVAILABLE                  2291  X'000008F3'
MQRC_UNKNOWN_ENTITY                         2292  X'000008F4'
MQRC_UNKNOWN_AUTH_ENTITY                    2293  X'000008F5'
MQRC_UNKNOWN_REF_OBJECT                     2294  X'000008F6'
MQRC_CHANNEL_ACTIVATED                      2295  X'000008F7'
MQRC_CHANNEL_NOT_ACTIVATED                  2296  X'000008F8'
MQRC_UOW_CANCELED                           2297  X'000008F9'
MQRC_FUNCTION_NOT_SUPPORTED                 2298  X'000008FA'
MQRC_SELECTOR_TYPE_ERROR                    2299  X'000008FB'
MQRC_COMMAND_TYPE_ERROR                     2300  X'000008FC'
MQRC_MULTIPLE_INSTANCE_ERROR                2301  X'000008FD'
MQRC_SYSTEM_ITEM_NOT_ALTERABLE              2302  X'000008FE'
MQRC_BAG_CONVERSION_ERROR                   2303  X'000008FF'
MQRC_SELECTOR_OUT_OF_RANGE                  2304  X'00000900'
MQRC_SELECTOR_NOT_UNIQUE                    2305  X'00000901'
MQRC_INDEX_NOT_PRESENT                      2306  X'00000902'
MQRC_STRING_ERROR                           2307  X'00000903'
MQRC_ENCODING_NOT_SUPPORTED                 2308  X'00000904'
MQRC_SELECTOR_NOT_PRESENT                   2309  X'00000905'
MQRC_OUT_SELECTOR_ERROR                     2310  X'00000906'
MQRC_STRING_TRUNCATED                       2311  X'00000907'
MQRC_SELECTOR_WRONG_TYPE                    2312  X'00000908'
MQRC_INCONSISTENT_ITEM_TYPE                 2313  X'00000909'
MQRC_INDEX_ERROR                            2314  X'0000090A'
MQRC_SYSTEM_BAG_NOT_ALTERABLE               2315  X'0000090B'
MQRC_ITEM_COUNT_ERROR                       2316  X'0000090C'
MQRC_FORMAT_NOT_SUPPORTED                   2317  X'0000090D'
MQRC_SELECTOR_NOT_SUPPORTED                 2318  X'0000090E'
MQRC_ITEM_VALUE_ERROR                       2319  X'0000090F'
MQRC_HBAG_ERROR                             2320  X'00000910'
MQRC_PARAMETER_MISSING                      2321  X'00000911'
MQRC_CMD_SERVER_NOT_AVAILABLE               2322  X'00000912'
MQRC_STRING_LENGTH_ERROR                    2323  X'00000913'
MQRC_INQUIRY_COMMAND_ERROR                  2324  X'00000914'
MQRC_NESTED_BAG_NOT_SUPPORTED               2325  X'00000915'
MQRC_BAG_WRONG_TYPE                         2326  X'00000916'
MQRC_ITEM_TYPE_ERROR                        2327  X'00000917'
MQRC_SYSTEM_BAG_NOT_DELETABLE               2328  X'00000918'
MQRC_SYSTEM_ITEM_NOT_DELETABLE              2329  X'00000919'
MQRC_CODED_CHAR_SET_ID_ERROR                2330  X'0000091A'
MQRC_MSG_TOKEN_ERROR                        2331  X'0000091B'
MQRC_MISSING_WIH                            2332  X'0000091C'
MQRC_WIH_ERROR                              2333  X'0000091D'
MQRC_RFH_ERROR                              2334  X'0000091E'
MQRC_RFH_STRING_ERROR                       2335  X'0000091F'
MQRC_RFH_COMMAND_ERROR                      2336  X'00000920'
MQRC_RFH_PARM_ERROR                         2337  X'00000921'
MQRC_RFH_DUPLICATE_PARM                     2338  X'00000922'
MQRC_RFH_PARM_MISSING                       2339  X'00000923'
MQRC_CHAR_CONVERSION_ERROR                  2340  X'00000924'
MQRC_UCS2_CONVERSION_ERROR                  2341  X'00000925'
MQRC_DB2_NOT_AVAILABLE                      2342  X'00000926'
MQRC_OBJECT_NOT_UNIQUE                      2343  X'00000927'
MQRC_CONN_TAG_NOT_RELEASED                  2344  X'00000928'
MQRC_CF_NOT_AVAILABLE                       2345  X'00000929'
MQRC_CF_STRUC_IN_USE                        2346  X'0000092A'
MQRC_CF_STRUC_LIST_HDR_IN_USE               2347  X'0000092B'
MQRC_CF_STRUC_AUTH_FAILED                   2348  X'0000092C'
MQRC_CF_STRUC_ERROR                         2349  X'0000092D'
MQRC_CONN_TAG_NOT_USABLE                    2350  X'0000092E'
MQRC_GLOBAL_UOW_CONFLICT                    2351  X'0000092F'
MQRC_LOCAL_UOW_CONFLICT                     2352  X'00000930'
MQRC_HANDLE_IN_USE_FOR_UOW                  2353  X'00000931'
MQRC_UOW_ENLISTMENT_ERROR                   2354  X'00000932'
MQRC_UOW_MIX_NOT_SUPPORTED                  2355  X'00000933'
MQRC_WXP_ERROR                              2356  X'00000934'
MQRC_CURRENT_RECORD_ERROR                   2357  X'00000935'
MQRC_NEXT_OFFSET_ERROR                      2358  X'00000936'
MQRC_NO_RECORD_AVAILABLE                    2359  X'00000937'
MQRC_OBJECT_LEVEL_INCOMPATIBLE              2360  X'00000938'
MQRC_NEXT_RECORD_ERROR                      2361  X'00000939'
MQRC_BACKOUT_THRESHOLD_REACHED              2362  X'0000093A'
MQRC_MSG_NOT_MATCHED                        2363  X'0000093B'
MQRC_JMS_FORMAT_ERROR                       2364  X'0000093C'
MQRC_SEGMENTS_NOT_SUPPORTED                 2365  X'0000093D'
MQRC_WRONG_CF_LEVEL                         2366  X'0000093E'
MQRC_CONFIG_CREATE_OBJECT                   2367  X'0000093F'
MQRC_CONFIG_CHANGE_OBJECT                   2368  X'00000940'
MQRC_CONFIG_DELETE_OBJECT                   2369  X'00000941'
MQRC_CONFIG_REFRESH_OBJECT                  2370  X'00000942'
MQRC_CHANNEL_SSL_ERROR                      2371  X'00000943'
MQRC_CF_STRUC_FAILED                        2373  X'00000945'
MQRC_API_EXIT_ERROR                         2374  X'00000946'
MQRC_API_EXIT_INIT_ERROR                    2375  X'00000947'
MQRC_API_EXIT_TERM_ERROR                    2376  X'00000948'
MQRC_EXIT_REASON_ERROR                      2377  X'00000949'
MQRC_RESERVED_VALUE_ERROR                   2378  X'0000094A'
MQRC_NO_DATA_AVAILABLE                      2379  X'0000094B'
MQRC_SCO_ERROR                              2380  X'0000094C'
MQRC_KEY_REPOSITORY_ERROR                   2381  X'0000094D'
MQRC_CRYPTO_HARDWARE_ERROR                  2382  X'0000094E'
MQRC_AUTH_INFO_REC_COUNT_ERROR              2383  X'0000094F'
MQRC_AUTH_INFO_REC_ERROR                    2384  X'00000950'
MQRC_AIR_ERROR                              2385  X'00000951'
MQRC_AUTH_INFO_TYPE_ERROR                   2386  X'00000952'
MQRC_AUTH_INFO_CONN_NAME_ERROR              2387  X'00000953'
MQRC_LDAP_USER_NAME_ERROR                   2388  X'00000954'
MQRC_LDAP_USER_NAME_LENGTH_ERR              2389  X'00000955'
MQRC_LDAP_PASSWORD_ERROR                    2390  X'00000956'
MQRC_SSL_ALREADY_INITIALIZED                2391  X'00000957'
MQRC_SSL_CONFIG_ERROR                       2392  X'00000958'
MQRC_SSL_INITIALIZATION_ERROR               2393  X'00000959'
MQRC_Q_INDEX_TYPE_ERROR                     2394  X'0000095A'
MQRC_SSL_NOT_ALLOWED                        2396  X'0000095C'
MQRC_JSSE_ERROR                             2397  X'0000095D'
MQRC_SSL_PEER_NAME_MISMATCH                 2398  X'0000095E'
MQRC_SSL_PEER_NAME_ERROR                    2399  X'0000095F'
MQRC_UNSUPPORTED_CIPHER_SUITE               2400  X'00000960'
MQRC_SSL_CERTIFICATE_REVOKED                2401  X'00000961'
MQRC_SSL_CERT_STORE_ERROR                   2402  X'00000962'
MQRC_REOPEN_EXCL_INPUT_ERROR                6100  X'000017D4'
MQRC_REOPEN_INQUIRE_ERROR                   6101  X'000017D5'
MQRC_REOPEN_SAVED_CONTEXT_ERR               6102  X'000017D6'
MQRC_REOPEN_TEMPORARY_Q_ERROR               6103  X'000017D7'
MQRC_ATTRIBUTE_LOCKED                       6104  X'000017D8'
MQRC_CURSOR_NOT_VALID                       6105  X'000017D9'
MQRC_ENCODING_ERROR                         6106  X'000017DA'
MQRC_STRUC_ID_ERROR                         6107  X'000017DB'
MQRC_NULL_POINTER                           6108  X'000017DC'
MQRC_NO_CONNECTION_REFERENCE                6109  X'000017DD'
MQRC_NO_BUFFER                              6110  X'000017DE'
MQRC_BINARY_DATA_LENGTH_ERROR               6111  X'000017DF'
MQRC_BUFFER_NOT_AUTOMATIC                   6112  X'000017E0'
MQRC_INSUFFICIENT_BUFFER                    6113  X'000017E1'
MQRC_INSUFFICIENT_DATA                      6114  X'000017E2'
MQRC_DATA_TRUNCATED                         6115  X'000017E3'
MQRC_ZERO_LENGTH                            6116  X'000017E4'
MQRC_NEGATIVE_LENGTH                        6117  X'000017E5'
MQRC_NEGATIVE_OFFSET                        6118  X'000017E6'
MQRC_INCONSISTENT_FORMAT                    6119  X'000017E7'
MQRC_INCONSISTENT_OBJECT_STATE              6120  X'000017E8'
MQRC_CONTEXT_OBJECT_NOT_VALID               6121  X'000017E9'
MQRC_CONTEXT_OPEN_ERROR                     6122  X'000017EA'
MQRC_STRUC_LENGTH_ERROR                     6123  X'000017EB'
MQRC_NOT_CONNECTED                          6124  X'000017EC'
MQRC_NOT_OPEN                               6125  X'000017ED'
MQRC_DISTRIBUTION_LIST_EMPTY                6126  X'000017EE'
MQRC_INCONSISTENT_OPEN_OPTIONS              6127  X'000017EF'
MQRC_WRONG_VERSION                          6128  X'000017F0'
MQRC_REFERENCE_ERROR                        6129  X'000017F1'

MQRMH_STRUC_*（参照メッセージヘッダ構造体識別子）

MQRMH_STRUC_*は，参照メッセージヘッダ構造体識別子を表す定数です。参照メッセージヘッダ構造体識別子については，「1.　データタイプ」の「MQRMH構造体　−　メッセージ参照ヘッダ」でStrucIdフィールドを参照してください。次に定数とその値を示します。

MQRMH_STRUC_ID                              "RMH "
MQRMH_STRUC_ID_ARRAY                        'R','M','H',' '

MQRMH_VERSION_*（構造体バージョン番号）

MQRMH_VERSION_*は，構造体バージョン番号を表す定数です。構造体バージョン番号については，「1.　データタイプ」の「MQRMH構造体　−　メッセージ参照ヘッダ」でStrucIdフィールドを参照してください。次に定数とその値を示します。

MQRMH_VERSION_1                                1  X'00000001'
MQRMH_CURRENT_VERSION                          1  X'00000001'

MQRMHF_*（参照メッセージヘッダフラグ）

MQRMHF_*は，参照メッセージヘッダフラグを表す定数です。参照メッセージヘッダフラグについては，「1.　データタイプ」の「MQRMH構造体　−　メッセージ参照ヘッダ」でFlagsフィールドを参照してください。次に定数とその値を示します。

MQRMHF_NOT_LAST                                0  X'0000000'
MQRMHF_LAST                                    1  X'0000001'

MQRO_*（報告オプション）

MQRO_*は，報告オプションを表す定数です。報告オプションについては，「1.　データタイプ」の「MQMD構造体　−　メッセージ記述子」でReportフィールドを参照してください。次に定数とその値を示します。

MQRO_COPY_MSG_ID_TO_CORREL_ID                  0  X'00000000'
MQRO_NEW_MSG_ID                                0  X'00000000'
MQRO_DEAD_LETTER_Q                             0  X'00000000'
MQRO_NONE                                      0  X'00000000'
MQRO_PAN                                       1  X'00000001'
MQRO_NAN                                       2  X'00000002'
MQRO_PASS_CORREL_ID                           64  X'00000040'
MQRO_PASS_MSG_ID                             128  X'00000080'
MQRO_COA                                     256  X'00000100'
MQRO_COA_WITH_DATA                           768  X'00000300'
MQRO_COA_WITH_FULL_DATA                     1792  X'00000700'
MQRO_COD                                    2048  X'00000800'
MQRO_COD_WITH_DATA                          6144  X'00001800'
MQRO_COD_WITH_FULL_DATA                    14336  X'00003800'
MQRO_EXPIRATION                          2097152  X'00200000'
MQRO_EXPIRATION_WITH_DATA                6291456  X'00600000'
MQRO_EXPIRATION_WITH_FULL_DATA          14680064  X'00E00000'
MQRO_EXCEPTION                          16777216  X'01000000'
MQRO_EXCEPTION_WITH_DATA                50331648  X'03000000'
MQRO_EXCEPTION_WITH_FULL_DATA          117440512  X'07000000'
MQRO_DISCARD_MSG                       134217728  X'08000000'

MQRO_*_MASK（報告オプションのマスク）

MQRO_*_MASKは，報告オプションのマスクを表す定数です。次に定数とその値を示します。

MQRO_REJECT_UNSUP_MASK             270270464  X'101C0000'
MQRO_ACCEPT_UNSUP_MASK            -270532353  X'EFE000FF'
MQRO_ACCEPT_UNSUP_IF_XMIT_MASK        261888  X'0003FF00'

MQSCO_*（キューの有効範囲）

MQSCO_*は，キューの有効範囲を表す定数です。キューの有効範囲については，「3.　オブジェクトの属性」の「キューの属性」でScope属性を参照してください。次に定数とその値を示します。

MQSCO_Q_MGR                                1  X'00000001'
MQSCO_CELL                                 2  X'00000002'

MQSEG_*（セグメント分割）

MQSEG_*は，セグメント分割を表す定数です。セグメント分割については，「1.　データタイプ」の「MQGMO構造体　−　メッセージ取り出しオプション」でSegmentationフィールドを参照してください。次に定数とその値を示します。

MQSEG_INHIBITED                             ' '
MQSEG_ALLOWED                               'A'

MQSIDT_*（代替セキュリティ識別子）

MQSIDT_*は，代替セキュリティ識別子を表す定数です。代替セキュリティ識別子については，「1.　データタイプ」の「MQOD構造体　−　オブジェクト記述子」でAlternateSecurityIdフィールドを参照してください。次に定数とその値を示します。

MQSIDT_NONE                                 '¥x00'
MQSIDT_NT_SECURITY_ID                       '¥x01'

MQSP_*（トランザクション有効性）

MQSP_*は，トランザクション有効性を表す定数です。トランザクション有効性については，「3.　オブジェクトの属性」の「キューマネジャの属性」でSyncPoint属性を参照してください。次に定数とその値を示します。

MQSP_NOT_AVAILABLE                          0  X'00000000'
MQSP_AVAILABLE                              1  X'00000001'

MQSS_*（セグメント状態）

MQSS_*は，セグメント状態を表す定数です。セグメント状態については，「1.　データタイプ」の「MQGMO構造体　−　メッセージ取り出しオプション」でSegmentStatusフィールドを参照してください。次に定数とその値を示します。

MQSS_NOT_A_SEGMENT                          ' '
MQSS_LAST_SEGMENT                           'L'
MQSS_SEGMENT                                'S'

MQTC_*（トリガ制御）

MQTC_*は，トリガ制御を表す定数です。トリガ制御については，「3.　オブジェクトの属性」の「キューの属性」でTriggerControl属性を参照してください。次に定数とその値を示します。

MQTC_OFF                                    0  X'00000000'
MQTC_ON                                     1  X'00000001'

MQTM_STRUC_*（トリガメッセージの構造体識別子）

MQTM_STRUC_*は，トリガメッセージの構造体識別子を表す定数です。トリガメッセージの構造体識別子については，「1.　データタイプ」の「MQTM構造体　−　トリガメッセージ」でStrucIdフィールドを参照してください。次に定数とその値を示します。

MQTM_STRUC_ID                               "TM  "
MQTM_STRUC_ID_ARRAY                         'T','M',' ',' '

MQTM_VERSION_*（トリガメッセージの構造体バージョン番号）

MQTM_VERSION_*は，トリガメッセージの構造体バージョン番号を表す定数です。トリガメッセージの構造体バージョン番号については，「1.　データタイプ」の「MQTM構造体　−　トリガメッセージ」でVersionフィールドを参照してください。次に定数とその値を示します。

MQTM_VERSION_1                              1  X'00000001'
MQTM_CURRENT_VERSION                        1  X'00000001'

MQTT_*（トリガタイプ）

MQTT_*は，トリガタイプを表す定数です。トリガタイプについては，「3.　オブジェクトの属性」の「キューの属性」でTriggerType属性を参照してください。次に定数とその値を示します。

MQTT_NONE                                   0  X'00000000'
MQTT_FIRST                                  1  X'00000001'
MQTT_EVERY                                  2  X'00000002'
MQTT_DEPTH                                  3  X'00000003'

MQUS_*（使用種別）

MQUS_*は，使用種別を表す定数です。使用種別については，「3.　オブジェクトの属性」の「キューの属性」でUsage属性を参照してください。次に定数とその値を示します。

MQUS_NORMAL                                 0  X'00000000'
MQUS_TRANSMISSION                           1  X'00000001'

MQWI_*（待ち合わせ最大時間）

MQWI_*は，待ち合わせ最大時間を表す定数です。待ち合わせ最大時間については，「1.　データタイプ」の「MQGMO構造体　−　メッセージ取り出しオプション」でWaitIntervalフィールドを参照してください。次に定数とその値を示します。

MQWI_UNLIMITED                             -1  X'FFFFFFFF'

MQXDR_*（データ変換出力応答）

MQXDR_*は，データ変換出力応答を表す定数です。次に定数とその値を示します。

MQXDR_OK                                    0  X'00000000'
MQXDR_CONVERSION_FAILED                     1  X'00000001'

MQXQH_*（構造体識別子）

MQXQH_*は，構造体識別子を表す定数です。構造体識別子については，「1.　データタイプ」の「MQXQH構造体　−　転送キューヘッダ」を参照してください。次に定数とその値を示します。

MQXQH_STRUC_ID                               "XQH "
MQXQH_STRUC_ID_ARRAY                         'X','Q','H',' '

MQXQH_*（構造体バージョン番号）

MQXQH_*は，構造体バージョン番号を表す定数です。構造体バージョン番号については，「1.　データタイプ」の「MQXQH構造体　−　転送キューヘッダ」を参照してください。次に定数とその値を示します。

MQXQH_VERSION_1                             1  X'00000001'
MQXQH_CURRENT_VERSION                       1  X'00000001'

付録G　コード変換対象の文字セット識別子一覧

ここでは，文字セット識別子と各OSでサポートされている文字コードセットとの対応，および日立コード変換を使用した場合の文字コードの対応について説明します。

付録G.1　文字セット識別子と各OSでサポートされている文字コードセットとの対応

MQGET命令のMQGMO_CONVERTオプション，またはmqtalccha（チャネル定義）の-dオプションでcnvccsidオペランドを指定してコード変換する場合，文字セット識別子は，ここで説明するコード変換対象の文字コードセットで対応づけられた文字コードセットとして変換されます。

HP-UXの場合，次に示す機能によって変換されます。

文字セット識別子1279以外：OSの機能（iconv関数）

文字セット識別子1279：日立コード変換

Windowsの場合，日立コード変換の機能によって変換されます。

Linux，またはAIXの場合，次に示す機能によって変換されます。

文字セット識別子1200と1279：日立コード変換

文字セット識別子1200と1279以外：OSの機能（iconv関数）

日立コード変換を使用した場合の変換については，「付録G.2　日立コード変換を使用した場合の文字コードの対応」を参照してください。日立コード変換については，マニュアル「日立コード変換 ユーザーズガイド」を参照してください。

文字セット識別子と，HP-UX，Windows，Linux，およびAIXでサポートされている文字コードセットとの対応を，次の表に示します。

表G‒1　コード変換対象の文字コードセット

文字セット識別子

HP-UX

Windows

Linux

AIX

37

cp037

−

IBM037

IBM-037

277

cp277

−

IBM277

IBM-277

437

cp437

−

IBM437

−

500

cp500

−

IBM500

IBM-500

813

iso88597

−

ISO88597

ISO8859-7

819

iso88591

−

ISO88591

ISO8859-1

850

sjis※1

sjis※1

IBM850

IBM-850

852

cp852

−

IBM852

IBM-852

866

cp866

−

IBM866

−

870

cp870

−

IBM870

IBM-870

880

cp880

−

IBM880

IBM-880

897

sjis※1

sjis※1

−

−

912

iso88592

−

ISO88592

ISO8859-2

915

iso88595

−

ISO88595

ISO8859-5

916

iso88598

−

ISO88598

ISO8859-8

920

iso88599

−

ISO88599

ISO8859-9

930

cp930

cp930

IBM930

IBM-930

932

sjis

sjis

SJIS

IBM-932

938

ccdc

−

−

−

939

cp939

cp939

IBM939

IBM-939

950

big5

−

BIG5

big5

954

ujis

ujis

UJIS

IBM-eucJP

964

eucTW

−

EUCTW

IBM-eucTW

970

eucKR

−

EUCKR

IBM-eucKR

1051

roman8

−

ROMAN8

−

1089

iso88596

−

ISO88596

ISO8859-6

1200

−

Unicode

Unicode※2

Unicode※3

1208

−

−

UTF-8

−

1279

KEIS※4

KEIS

KEIS※2

KEIS※3

1381

hp15CN

−

−

−

5026

cp930

cp930

IBM930

IBM-930

5035

cp939

cp939

IBM939

IBM-939

5050

ujis

ujis

UJIS

IBM-eucJP

33722

ujis

ujis

UJIS

IBM-eucJP

（凡例）

−：該当しません。

注※1

文字セット識別子850および897は1バイト文字コードであり，コード変換時には，シフトJISコードとして扱います。

注※2

文字セット識別子1200および1279は，32ビット版のLinux（P-8164-C311）では変換対象外です。

注※3

文字セット識別子1200および1279は，64ビット版のAIX（P-1M64-D121）では変換対象外です。

注※4

文字セット識別子1279は，64ビット版のHP-UX（P-1J64-C581）では変換対象外です。

付録G.2　日立コード変換を使用した場合の文字コードの対応

ここでは，日立コード変換を使用した場合の文字コード変換の対応表を，OS別に説明します。

(1)　HP-UX

HP-UX使用時の，日立コード変換を使用した場合の文字コード変換の対応を次に示します。

表G‒2　日立コード変換を使用した場合の文字コード変換の対応（HP-UX）

文字セット

識別子

（変換元）

文字セット識別子（変換先）

850

897

930

932

939

954

1200

1208

1279

5026

5035

5050

33722

sjis

sjis

cp930

sjis

cp939

ujis

KEIS

cp930

cp939

ujis

ujis

850

sjis

−

−

／

−

／

／

×₃

×₃

△

／

／

／

／

897

sjis

−

−

／

−

／

／

×₃

×₃

△

／

／

／

／

930

cp930

／

／

−

／

／

／

×₃

×₃

×₁

−

／

／

／

932

sjis

−

−

／

−

／

／

×₃

×₃

△

／

／

／

／

939

cp939

／

／

／

／

−

／

×₃

×₃

×₁

／

−

／

／

954

ujis

／

／

／

／

／

−

×₃

×₃

△

／

／

−

−

1200

×₂

×₂

×₂

×₂

×₂

×₂

−

×₂

×₂

×₂

×₂

×₂

×₂

1208

×₂

×₂

×₂

×₂

×₂

×₂

×₂

−

×₂

×₂

×₂

×₂

×₂

1279

KEIS

△

△

×₁

△

×₁

△

×₃

×₃

−

×₁

×₁

△

△

5026

cp930

／

／

−

／

／

／

×₃

×₃

×₁

−

／

／

／

5035

cp939

／

／

／

／

−

／

×₃

×₃

×₁

／

−

／

／

5050

ujis

／

／

／

／

／

−

×₃

×₃

△

／

／

−

−

33722

ujis

／

／

／

／

／

−

×₃

×₃

△

／

／

−

−

（凡例）

−：同一文字コードセットのため変換処理は実行されません。

△：変換できます。ただし，64ビット版のTP1/Message Queueの場合は×₂，または×₃となります。

／：OSの機能（iconv関数）による変換のため，この表の対象外です。

×₁：変換できません。MQGET命令が理由コード「MQRC_NOT_CONVERTED」を返却，またはチャネル送信時にエラーを検知します。

×₂：変換できません。MQGET命令が理由コード「MQRC_SOURCE_CCSID_ERROR」を返却，またはチャネル送信時にエラーを検知します。

×₃：変換できません。MQGET命令が理由コード「MQRC_TARGET_CCSID_ERROR」を返却，またはチャネル送信時にエラーを検知します。

注意事項

対応表に記載がない文字セット識別子を使った文字コード変換は，OSの機能（iconv関数）での変換となります。ただし，表G-1の文字コードセットに「−」が記載されているものは，OSの機能（iconv関数）での変換もできません（×₂または×₃）。

iconv関数で変換できるかどうかについては，OSの仕様を確認してください。

(2)　Windows

Windows使用時の，日立コード変換を使用した場合の文字コード変換を次に示します。

表G‒3　日立コード変換を使用した場合の文字コード変換の対応（Windows）

文字セット

識別子

（変換元）

文字セット識別子（変換先）

850

897

930

932

939

954

1200

1208

1279

5026

5035

5050

33722

sjis

sjis

cp930

sjis

cp939

ujis

Unicode

UTF-8

KEIS

cp930

cp939

ujis

ujis

850

sjis

−

−

○

−

○

○

○

×

○

○

○

○

○

897

sjis

−

−

○

−

○

○

○

×

○

○

○

○

○

930

cp930

○

○

−

○

×

○

○

×

×

−

×

○

○

932

sjis

−

−

○

−

○

○

○

×

○

○

○

○

○

939

cp939

○

○

×

○

−

○

○

×

×

×

−

○

○

954

ujis

○

○

○

○

○

−

○

×

○

○

○

−

−

1200

Unicode

○

○

○

○

○

○

−

×

○

○

○

○

○

1208

UTF-8

×

×

×

×

×

×

×

−

×

×

×

×

×

1279

KEIS

○

○

×

○

×

○

○

×

−

×

×

○

○

5026

cp930

○

○

−

○

×

○

○

×

×

−

×

○

○

5035

cp939

○

○

×

○

−

○

○

×

×

×

−

○

○

5050

ujis

○

○

○

○

○

−

○

×

○

○

○

−

−

33722

ujis

○

○

○

○

○

−

○

×

○

○

○

−

−

（凡例）

−：同一文字コードセットのため変換処理は実行されません。

○：変換できます。

×：変換できません。MQGET命令が理由コード「MQRC_NOT_CONVERTED」を返却，またはチャネル送信時にエラーを検知します。

注意事項

対応表に記載がない文字セット識別子を使った文字コード変換はできません（×）。

(3)　Linux

Linux使用時の，日立コード変換を使用した場合の文字コード変換を次に示します。

表G‒4　日立コード変換を使用した場合の文字コード変換の対応（Linux）

文字セット

識別子

（変換元）

文字セット識別子（変換先）

850

897

930

932

939

954

1200

1208

1279

5026

5035

5050

33722

IBM850

IBM930

SJIS

IBM939

UJIS

Unicode

UTF-8

KEIS

IBM930

IBM939

UJIS

UJIS

850

IBM850

−

×₃

／

／

／

／

×₁

／

×₁

／

／

／

／

897

×₂

−

×₂

×₂

×₂

×₂

×₂

×₂

×₂

×₂

×₂

×₂

×₂

930

IBM930

／

×₃

−

／

／

／

△

／

×₁

−

／

／

／

932

SJIS

／

×₃

／

−

／

／

△

／

△

／

／

／

／

939

IBM939

／

×₃

／

／

−

／

△

／

×₁

／

−

／

／

954

UJIS

／

×₃

／

／

／

−

△

／

△

／

／

−

−

1200

Unicode

×₁

×₃

△

△

△

△

−

△

△

△

△

△

△

1208

UTF-8

／

×₃

／

／

／

／

△

−

△

／

／

／

／

1279

KEIS

×₁

×₃

×₁

△

×₁

△

△

△

−

×₁

×₁

△

△

5026

IBM930

／

×₃

−

／

／

／

△

／

×₁

−

／

／

／

5035

IBM939

／

×₃

／

／

−

／

△

／

×₁

／

−

／

／

5050

UJIS

／

×₃

／

／

／

−

△

／

△

／

／

−

−

33722

UJIS

／

×₃

／

／

／

−

△

／

△

／

／

−

−

（凡例）

−：同一文字コードセットのため変換処理は実行されません。

△：変換できます。ただし，32ビット版のTP1/Message Queueの場合は×₂，または×₃となります。

／：OSの機能（iconv関数）による変換のため，この表の対象外です。

×₁：変換できません。MQGET命令が理由コード「MQRC_NOT_CONVERTED」を返却，またはチャネル送信時にエラーを検知します。

×₂：変換できません。MQGET命令が理由コード「MQRC_SOURCE_CCSID_ERROR」を返却，またはチャネル送信時にエラーを検知します。

×₃：変換できません。MQGET命令が理由コード「MQRC_TARGET_CCSID_ERROR」を返却，またはチャネル送信時にエラーを検知します。

注意事項

対応表に記載がない文字セット識別子を使った文字コード変換は，OSの機能（iconv関数）での変換となります。ただし，表G-1の文字コードセットに「−」が記載されているものは，OSの機能（iconv関数）での変換もできません（×₂または×₃）。

iconv関数で変換できるかどうかについては，OSの仕様を確認してください。

(4)　AIX

AIX使用時の，日立コード変換を使用した場合の文字コード変換を次に示します。

表G‒5　日立コード変換を使用した場合の文字コード変換の対応（AIX）

文字セット

識別子

（変換元）

文字セット識別子（変換先）

850

897

930

932

939

954

1200

1208

1279

5026

5035

5050

33722

IBM-850

IBM-930

IBM-932

IBM-939

IBM-eucJP

Unicode

KEIS

IBM-930

IBM-939

IBM-eucJP

IBM-eucJP

850

IBM-850

−

×₃

／

／

／

／

×₁

×₃

×₁

／

／

／

／

897

×₂

−

×₂

×₂

×₂

×₂

×₂

×₂

×₂

×₂

×₂

×₂

×₂

930

IBM-930

／

×₃

−

／

／

／

△

×₃

×₁

−

／

／

／

932

IBM-932

／

×₃

／

−

／

／

△

×₃

△

／

／

／

／

939

IBM-939

／

×₃

／

／

−

／

△

×₃

×₁

／

−

／

／

954

IBM-eucJP

／

×₃

／

／

／

−

△

×₃

△

／

／

−

−

1200

Unicode

×₁

×₃

△

△

△

△

−

×₃

△

△

△

△

△

1208

×₂

×₂

×₂

×₂

×₂

×₂

×₂

−

×₂

×₂

×₂

×₂

×₂

1279

KEIS

×₁

×₃

×₁

△

×₁

△

△

×₃

−

×₁

×₁

△

△

5026

IBM-930

／

×₃

−

／

／

／

△

×₃

×₁

−

／

／

／

5035

IBM-939

／

×₃

／

／

−

／

△

×₃

×₁

／

−

／

／

5050

IBM-eucJP

／

×₃

／

／

／

−

△

×₃

△

／

／

−

−

33722

IBM-eucJP

／

×₃

／

／

／

−

△

×₃

△

／

／

−

−

（凡例）

−：同一文字コードセットのため変換処理は実行されません。

△：変換できます。ただし，64ビット版のTP1/Message Queueの場合は×₂，または×₃となります。

／：OSの機能（iconv関数）による変換のため，この表の対象外です。

×₁：変換できません。MQGET命令が理由コード「MQRC_NOT_CONVERTED」を返却，またはチャネル送信時にエラーを検知します。

×₂：変換できません。MQGET命令が理由コード「MQRC_SOURCE_CCSID_ERROR」を返却，またはチャネル送信時にエラーを検知します。

×₃：変換できません。MQGET命令が理由コード「MQRC_TARGET_CCSID_ERROR」を返却，またはチャネル送信時にエラーを検知します。

注意事項

対応表に記載がない文字セット識別子を使った文字コード変換は，OSの機能（iconv関数）での変換となります。ただし，表G-1の文字コードセットに「−」が記載されているものは，OSの機能（iconv関数）での変換もできません（×₂または×₃）。

iconv関数で変換できるかどうかについては，OSの仕様を確認してください。

索引

数字

10進パック形式整数のマシンコード形式[1]

2進整数のマシンコード形式[1]

C

C++での使用[1]

COBOL言語での実現例[1]

C言語での実現例[1]

M

MQACT_NONE〔MQMD構造体（AccountingToken）〕[1]

MQAT_AIX〔MQMD構造体（PutApplType）〕[1]

MQAT_AIX〔MQTM構造体（ApplType）〕[1]

MQAT_AIX〔プロセス定義の属性（ApplType）〕[1]

MQAT_BROKER〔MQMD構造体（PutApplType）〕[1]

MQAT_CICS〔MQMD構造体（PutApplType）〕[1]

MQAT_CICS〔MQTM構造体（ApplType）〕[1]

MQAT_CICS〔プロセス定義の属性（ApplType）〕[1]

MQAT_DEFAULT〔MQMD構造体（PutApplType）〕[1]

MQAT_DOS〔MQMD構造体（PutApplType）〕[1]

MQAT_DOS〔MQTM構造体（ApplType）〕[1]

MQAT_DOS〔プロセス定義の属性（ApplType）〕[1]

MQAT_DQM〔MQMD構造体（PutApplType）〕[1]

MQAT_IMS〔MQMD構造体（PutApplType）〕[1]

MQAT_IMS〔MQTM構造体（ApplType）〕[1]

MQAT_IMS〔プロセス定義の属性（ApplType）〕[1]

MQAT_JAVA〔MQMD構造体（PutApplType）〕[1]

MQAT_MVS〔MQMD構造体（PutApplType）〕[1]

MQAT_MVS〔MQTM構造体（ApplType）〕[1]

MQAT_MVS〔プロセス定義の属性（ApplType）〕[1]

MQAT_NO_CONTEXT〔MQMD構造体（PutApplType）〕[1]

MQAT_OPEN_TP1〔MQMD構造体（PutApplType）〕[1]

MQAT_OPEN_TP1〔MQTM構造体（ApplType）〕[1]

MQAT_OPEN_TP1〔プロセス定義の属性（ApplType）〕[1]

MQAT_OS2〔MQMD構造体（PutApplType）〕[1]

MQAT_OS2〔MQTM構造体（ApplType）〕[1]

MQAT_OS2〔プロセス定義の属性（ApplType）〕[1]

MQAT_OS400〔MQMD構造体（PutApplType）〕[1]

MQAT_OS400〔MQTM構造体（ApplType）〕[1]

MQAT_OS400〔プロセス定義の属性（ApplType）〕[1]

MQAT_QMGR〔MQMD構造体（PutApplType）〕[1]

MQAT_TMS_4V〔MQMD構造体（PutApplType）〕[1]

MQAT_TMS_4V〔MQTM構造体（ApplType）〕[1]

MQAT_TMS_4V〔プロセス定義の属性（ApplType）〕[1]

MQAT_UNIX〔MQTM構造体（ApplType）〕[1]

MQAT_UNIX〔プロセス定義の属性（ApplType）〕[1]

MQAT_UNKNOWN〔MQMD構造体（PutApplType）〕[1]

MQAT_USER_FIRST〔MQMD構造体（PutApplType）〕[1]

MQAT_USER_FIRST〔MQTM構造体（ApplType）〕[1]

MQAT_USER_FIRST〔プロセス定義の属性（ApplType）〕[1]

MQAT_USER_LAST〔MQMD構造体（PutApplType）〕[1]

MQAT_USER_LAST〔MQTM構造体（ApplType）〕[1]

MQAT_USER_LAST〔プロセス定義の属性（ApplType）〕[1]

MQAT_WINDOWS_NT〔MQTM構造体（ApplType）〕[1]

MQAT_WINDOWS_NT〔プロセス定義の属性（ApplType）〕[1]

MQAT_WINDOWS〔MQMD構造体（PutApplType）〕[1]

MQAT_WINDOWS〔MQTM構造体（ApplType）〕[1]

MQAT_WINDOWS〔プロセス定義の属性（ApplType）〕[1]

MQAT_WLM〔MQMD構造体（PutApplType）〕[1]

MQAT_XDM〔MQMD構造体（PutApplType）〕[1]

MQAT_XDM〔MQTM構造体（ApplType）〕[1]

MQAT_XDM〔プロセス定義の属性（ApplType）〕[1]

MQAT_ZOS〔MQMD構造体（PutApplType）〕[1]

MQBND_BIND_NOT_FIXED〔キューの属性（DefBind）〕[1]

MQBND_BIND_ON_OPEN〔キューの属性（DefBind）〕[1]

MQCA_APPL_ID〔MQINQ命令（Selectors）〕[1]

MQCA_BASE_Q_NAME〔MQINQ命令（Selectors）〕[1]

MQCA_CLUSTER_NAME〔MQINQ命令（Selectors）〕[1]

MQCA_CREATION_DATE〔MQINQ命令（Selectors）〕[1]

MQCA_CREATION_TIME〔MQINQ命令（Selectors）〕[1]

MQCA_DEAD_LETTER_Q_NAME〔MQINQ命令（Selectors）〕[1]

MQCA_DEF_XMIT_Q_NAME〔MQINQ命令（Selectors）〕[1]

MQCA_ENV_DATA〔MQINQ命令（Selectors）〕[1]

MQCA_INITIATION_Q_NAME〔MQINQ命令（Selectors）〕[1]

MQCA_PROCESS_DESC〔MQINQ命令（Selectors）〕[1]

MQCA_PROCESS_NAME〔MQINQ命令（Selectors）（キュー用）〕[1]

MQCA_PROCESS_NAME〔MQINQ命令（Selectors）（プロセス定義用）〕[1]

MQCA_Q_DESC〔MQINQ命令（Selectors）〕[1]

MQCA_Q_MGR_DESC〔MQINQ命令（Selectors）〕[1]

MQCA_Q_MGR_NAME〔MQINQ命令（Selectors）〕[1]

MQCA_Q_NAME〔MQINQ命令（Selectors）〕[1]

MQCA_REMOTE_Q_MGR_NAME〔MQINQ命令（Selectors）〕[1]

MQCA_REMOTE_Q_NAME〔MQINQ命令（Selectors）〕[1]

MQCA_REPOSITORY_NAME〔MQINQ命令（Selectors）〕[1]

MQCA_TRIGGER_DATA〔MQINQ命令（Selectors）〕[1]

MQCA_TRIGGER_DATA〔MQSET命令（Selectors）〕[1]

MQCA_USER_DATA〔MQINQ命令（Selectors）〕[1]

MQCA_XMIT_Q_NAME〔MQINQ命令（Selectors）〕[1]

MQCC_FAILED[1]

MQCC_OK[1]

MQCC_WARNING[1]

MQCCSI_DEFAULT〔MQCFSL構造体（CodedCharSetId）〕[1]

MQCCSI_DEFAULT〔MQCFST構造体（CodedCharSetId）〕[1]

MQCCSI_DEFAULT〔MQMD構造体（CodedCharSetId）〕[1]

MQCCSI_EMBEDDED〔MQMD構造体（CodedCharSetId）〕[1]

MQCCSI_INHERIT〔MQDH構造体（CodedCharSetId）〕[1]

MQCCSI_INHERIT〔MQDLH構造体（CodedCharSetId）〕[1]

MQCCSI_INHERIT〔MQMDE構造体（CodedCharSetId）〕[1]

MQCCSI_INHERIT〔MQMD構造体（CodedCharSetId）〕[1]

MQCCSI_INHERIT〔MQRMH構造体（CodedCharSetId）〕[1]

MQCCSI_Q_MGR〔MQMD構造体（CodedCharSetId）〕[1]

MQCFC_LAST〔MQCFH構造体（Control）〕[1]

MQCFC_NOT_LAST〔MQCFH構造体（Control）〕[1]

MQCFH_CURRENT_VERSION〔MQCFH構造体（Version）〕[1]

MQCFH_STRUC_LENGTH〔MQCFH構造体（StrucLength）〕[1]

MQCFH_VERSION_1〔MQCFH構造体（Version）〕[1]

MQCFH構造体[1]

MQCFIL_STRUC_LENGTH_FIXED〔MQCFIL構造体（StrucLength）〕[1]

MQCFIL構造体[1]

MQCFIN_STRUC_LENGTH〔MQCFIN構造体（StrucLength）〕[1]

MQCFIN構造体[1]

MQCFSL_STRUC_LENGTH_FIXED〔MQCFSL構造体（StrucLength）〕[1]

MQCFSL構造体[1]

MQCFST_STRUC_LENGTH_FIXED〔MQCFST構造体（StrucLength）〕[1]

MQCFST構造体[1]

MQCFT_INTEGER_LIST〔MQCFIL構造体（Type）〕[1]

MQCFT_INTEGER〔MQCFIN構造体（Type）〕[1]

MQCFT_STRING_LIST〔MQCFSL構造体（Type）〕[1]

MQCFT_STRING〔MQCFST構造体（Type）〕[1]

MQCI_NONE〔MQMD構造体（CorrelId）〕[1]

MQCLOSE命令[1]

MQCLOSE命令の引数一覧[1]

MQCO_DELETE_PURGE〔MQCLOSE命令（Options）〕[1]

MQCO_DELETE〔MQCLOSE命令（Options）〕[1]

MQCO_NONE〔MQCLOSE命令（Options）〕[1]

MQCONN命令[1]

MQCONN命令の引数一覧[1]

MQDH_CURRENT_VERSION〔MQDH構造体（Version）〕[1]

MQDH_STRUC_ID〔MQDH構造体（StrucId）〕[1]

MQDH_VERSION_1〔MQDH構造体（Version）〕[1]

MQDHF_NEW_MSG_IDS〔MQDH構造体（Flags）〕[1]

MQDHF_NONE〔MQDH構造体（Flags）〕[1]

MQDH構造体[1]

MQDH構造体とそれに続くMQOR構造体およびMQPMR構造体を足した長さ〔MQDH構造体（StrucLength）〕[1]

MQDISC命令[1]

MQDISC命令の引数一覧[1]

MQDL_NOT_SUPPORTED〔キューの属性（DistLists）〕[1]

MQDL_NOT_SUPPORTED〔キューマネジャの属性（DistLists）〕[1]

MQDL_SUPPORTED〔キューの属性（DistLists）〕[1]

MQDL_SUPPORTED〔キューマネジャの属性（DistLists）〕[1]

MQDLH_CURRENT_VERSION〔MQDLH構造体（Version）〕[1]

MQDLH_STRUC_ID〔MQDLH構造体（StrucId）〕[1]

MQDLH_VERSION_1〔MQDLH構造体（Version）〕[1]

MQDLH構造体[1]

MQEI_UNLIMITED〔MQMD構造体（Expiry）〕[1]

MQENC_DECIMAL_MASK[1]

MQENC_DECIMAL_NORMAL[1]

MQENC_DECIMAL_REVERSED[1]

MQENC_DECIMAL_UNDEFINED[1]

MQENC_FLOAT_IEEE_NORMAL[1]

MQENC_FLOAT_IEEE_REVERSED[1]

MQENC_FLOAT_MASK[1]

MQENC_FLOAT_S390[1]

MQENC_FLOAT_UNDEFINED[1]

MQENC_INTEGER_MASK[1]

MQENC_INTEGER_NORMAL[1]

MQENC_INTEGER_REVERSED[1]

MQENC_INTEGER_UNDEFINED[1]

MQENC_NATIVE〔MQMD構造体（Encoding）〕[1]

MQENC_RESERVED_MASK[1]

MQFB_APPL_CANNOT_BE_STARTED〔MQDLH構造体（Reason）〕[1]

MQFB_APPL_FIRST〔MQMD構造体（Feedback）〕[1]

MQFB_APPL_LAST〔MQMD構造体（Feedback）〕[1]

MQFB_APPL_TYPE_ERROR〔MQDLH構造体（Reason）〕[1]

MQFB_BIND_OPEN_CLUSRCVR_DEL〔MQDLH構造体（Reason）〕[1]

MQFB_BUFFER_OVERFLOW〔MQMD構造体（Feedback）〕[1]

MQFB_CICS_APPL_ABENDED〔MQMD構造体（Feedback）〕[1]

MQFB_CICS_APPL_NOT_STARTED〔MQMD構造体（Feedback）〕[1]

MQFB_CICS_BRIDGE_FAILURE〔MQMD構造体（Feedback）〕[1]

MQFB_CICS_CCSID_ERROR〔MQMD構造体（Feedback）〕[1]

MQFB_CICS_CIH_ERROR〔MQMD構造体（Feedback）〕[1]

MQFB_CICS_COMMAREA_ERROR〔MQMD構造体（Feedback）〕[1]

MQFB_CICS_CORREL_ID_ERROR〔MQMD構造体（Feedback）〕[1]

MQFB_CICS_DLQ_ERROR〔MQMD構造体（Feedback）〕[1]

MQFB_CICS_ENCODING_ERROR〔MQMD構造体（Feedback）〕[1]

MQFB_CICS_INTERNAL_ERROR〔MQMD構造体（Feedback）〕[1]

MQFB_CICS_NOT_AUTHORIZED〔MQMD構造体（Feedback）〕[1]

MQFB_CICS_UOW_BACKED_OUT〔MQMD構造体（Feedback）〕[1]

MQFB_CICS_UOW_ERROR〔MQMD構造体（Feedback）〕[1]

MQFB_COA〔MQMD構造体（Feedback）〕[1]

MQFB_COD〔MQMD構造体（Feedback）〕[1]

MQFB_DATA_LENGTH_NEGATIVE〔MQMD構造体（Feedback）〕[1]

MQFB_DATA_LENGTH_TOO_BIG〔MQMD構造体（Feedback）〕[1]

MQFB_DATA_LENGTH_ZERO〔MQMD構造体（Feedback）〕[1]

MQFB_EXPIRATION〔MQMD構造体（Feedback）〕[1]

MQFB_IIH_ERROR〔MQMD構造体（Feedback）〕[1]

MQFB_IMS_ERROR〔MQMD構造体（Feedback）〕[1]

MQFB_IMS_FIRST〔MQMD構造体（Feedback）〕[1]

MQFB_IMS_LAST〔MQMD構造体（Feedback）〕[1]

MQFB_LENGTH_OFF_BY_ONE〔MQMD構造体（Feedback）〕[1]

MQFB_NAN〔MQMD構造体（Feedback）〕[1]

MQFB_NONE〔MQMD構造体（Feedback）〕[1]

MQFB_NOT_A_REPOSITORY_MSG〔MQDLH構造体（Reason）〕[1]

MQFB_NOT_AUTHORIZED_FOR_IMS〔MQMD構造体（Feedback）〕[1]

MQFB_PAN〔MQMD構造体（Feedback）〕[1]

MQFB_QUIT〔MQMD構造体（Feedback）〕[1]

MQFB_STOPPED_BY_CHAD_EXIT〔MQDLH構造体（Reason）〕[1]

MQFB_SYSTEM_FIRST〔MQMD構造体（Feedback）〕[1]

MQFB_SYSTEM_LAST〔MQMD構造体（Feedback）〕[1]

MQFB_TM_ERROR〔MQDLH構造体（Reason）〕[1]

MQFB_XMIT_Q_MSG_ERROR〔MQDLH構造体（Reason）〕[1]

MQFMT_ADMIN〔MQMD構造体（Format）〕[1]

MQFMT_DEAD_LETTER_HEADER〔MQMD構造体（Format）〕[1]

MQFMT_DIST_HEADER〔MQMD構造体（Format）〕[1]

MQFMT_EVENT〔MQMD構造体（Format）〕[1]

MQFMT_MD_EXTENSION〔MQMD構造体（Format）〕[1]

MQFMT_NONE〔MQMD構造体（Format）〕[1]

MQFMT_PCF〔MQMD構造体（Format）〕[1]

MQFMT_REF_MSG_HEADER〔MQMD構造体（Format）〕[1]

MQFMT_STRING〔MQMD構造体（Format）〕[1]

MQFMT_TRIGGER〔MQMD構造体（Format）〕[1]

MQFMT_XMIT_Q_HEADER〔MQMD構造体（Format）〕[1]

MQGET命令[1]

MQGET命令の引数一覧[1]

MQGI_NONE〔MQMD構造体（GroupId）〕[1]

MQGMO_ACCEPT_TRUNCATED_MSG〔MQGMO構造体（Options）〕[1]

MQGMO_ALL_MSGS_AVAILABLE〔MQGMO構造体（Options）〕[1]

MQGMO_ALL_SEGMENTS_AVAILABLE〔MQGMO構造体（Options）〕[1]

MQGMO_BROWSE_FIRST〔MQGMO構造体（Options）〕[1]

MQGMO_BROWSE_MSG_UNDER_CURSOR〔MQGMO構造体（Options）〕[1]

MQGMO_BROWSE_NEXT〔MQGMO構造体（Options）〕[1]

MQGMO_COMPLETE_MSG〔MQGMO構造体（Options）〕[1]

MQGMO_CONVERT〔MQGMO構造体（Options）〕[1]

MQGMO_CURRENT_VERSION〔MQGMO構造体（Version）〕[1]

MQGMO_FAIL_IF_QUIESCING〔MQGMO構造体（Options）〕[1]

MQGMO_LOCK〔MQGMO構造体（Options）〕[1]

MQGMO_LOGICAL_ORDER〔MQGMO構造体（Options）〕[1]

MQGMO_MSG_UNDER_CURSOR〔MQGMO構造体（Options）〕[1]

MQGMO_NO_SYNCPOINT〔MQGMO構造体（Options）〕[1]

MQGMO_NO_WAIT〔MQGMO構造体（Options）〕[1]

MQGMO_NONE〔MQGMO構造体（Options）〕[1]

MQGMO_STRUC_ID〔MQGMO構造体（StrucId）〕[1]

MQGMO_SYNCPOINT_IF_PERSISTENT〔MQGMO構造体（Options）〕[1]

MQGMO_SYNCPOINT〔MQGMO構造体（Options）〕[1]

MQGMO_UNLOCK〔MQGMO構造体（Options）〕[1]

MQGMO_VERSION_1〔MQGMO構造体（Version）〕[1]

MQGMO_VERSION_2〔MQGMO構造体（Version）〕[1]

MQGMO_WAIT〔MQGMO構造体（Options）〕[1]

MQGMO構造体[1]

MQGS_LAST_MSG_IN_GROUP〔MQGMO構造体（GroupStatus）〕[1]

MQGS_MSG_IN_GROUP〔MQGMO構造体（GroupStatus）〕[1]

MQGS_NOT_IN_GROUP〔MQGMO構造体（GroupStatus）〕[1]

MQHC_UNUSABLE_HCONN〔MQDISC命令（Hconn）〕[1]

MQHO_UNUSABLE_HOBJ〔MQCLOSE命令（Hobj）〕[1]

MQIA_APPL_TYPE〔MQINQ命令（Selectors）〕[1]

MQIA_CODED_CHAR_SET_ID〔MQINQ命令（Selectors）〕[1]

MQIA_CURRENT_Q_DEPTH〔MQINQ命令（Selectors）〕[1]

MQIA_DEF_BIND〔MQINQ命令（Selectors）〕[1]

MQIA_DEF_INPUT_OPEN_OPTION〔MQINQ命令（Selectors）〕[1]

MQIA_DEF_PERSISTENCE〔MQINQ命令（Selectors）〕[1]

MQIA_DEF_PRIORITY〔MQINQ命令（Selectors）〕[1]

MQIA_DEFINITION_TYPE〔MQINQ命令（Selectors）〕[1]

MQIA_DIST_LISTS〔MQINQ命令（Selectors）（キューマネジャ用）〕[1]

MQIA_DIST_LISTS〔MQINQ命令（Selectors）（キュー用）〕[1]

MQIA_DIST_LISTS〔MQSET命令（Selectors）〕[1]

MQIA_HARDEN_GET_BACKOUT〔MQINQ命令（Selectors）〕[1]

MQIA_INHIBIT_GET〔MQINQ命令（Selectors）〕[1]

MQIA_INHIBIT_GET〔MQSET命令（Selectors）〕[1]

MQIA_INHIBIT_PUT〔MQINQ命令（Selectors）〕[1]

MQIA_INHIBIT_PUT〔MQSET命令（Selectors）〕[1]

MQIA_MAX_HANDLES〔MQINQ命令（Selectors）〕[1]

MQIA_MAX_MSG_LENGTH〔MQINQ命令（Selectors）（キューマネジャ用）〕[1]

MQIA_MAX_MSG_LENGTH〔MQINQ命令（Selectors）（キュー用）〕[1]

MQIA_MAX_PRIORITY〔MQINQ命令（Selectors）〕[1]

MQIA_MAX_Q_DEPTH〔MQINQ命令（Selectors）〕[1]

MQIA_MAX_UNCOMMITTED_MSGS〔MQINQ命令（Selectors）〕[1]

MQIA_MSG_DELIVERY_SEQUENCE〔MQINQ命令（Selectors）〕[1]

MQIA_OPEN_INPUT_COUNT〔MQINQ命令（Selectors）〕[1]

MQIA_OPEN_OUTPUT_COUNT〔MQINQ命令（Selectors）〕[1]

MQIA_PLATFORM〔MQINQ命令（Selectors）〕[1]

MQIA_Q_TYPE〔MQINQ命令（Selectors）〕[1]

MQIA_RETENTION_INTERVAL〔MQINQ命令（Selectors）〕[1]

MQIA_SCOPE〔MQINQ命令（Selectors）〕[1]

MQIA_SHAREABILITY〔MQINQ命令（Selectors）〕[1]

MQIA_SYNCPOINT〔MQINQ命令（Selectors）〕[1]

MQIA_TRIGGER_CONTROL〔MQINQ命令（Selectors）〕[1]

MQIA_TRIGGER_CONTROL〔MQSET命令（Selectors）〕[1]

MQIA_TRIGGER_DEPTH〔MQINQ命令（Selectors）〕[1]

MQIA_TRIGGER_DEPTH〔MQSET命令（Selectors）〕[1]

MQIA_TRIGGER_INTERVAL〔MQINQ命令（Selectors）〕[1]

MQIA_TRIGGER_MSG_PRIORITY〔MQINQ命令（Selectors）〕[1]

MQIA_TRIGGER_MSG_PRIORITY〔MQSET命令（Selectors）〕[1]

MQIA_TRIGGER_TYPE〔MQINQ命令（Selectors）〕[1]

MQIA_TRIGGER_TYPE〔MQSET命令（Selectors）〕[1]

MQIA_USAGE〔MQINQ命令（Selectors）〕[1]

MQINQ命令[1]

MQINQ命令の引数一覧[1]

MQMD_CURRENT_VERSION〔MQMD構造体（Version）〕[1]

MQMD_STRUC_ID〔MQMD構造体（StrucId）〕[1]

MQMD_VERSION_1〔MQMD構造体（Version）〕[1]

MQMD_VERSION_2〔MQMD構造体（Version）〕[1]

MQMDE_CURRENT_VERSION〔MQMDE構造体（Version）〕[1]

MQMDE_LENGTH_2〔MQMDE構造体（StrucLength）〕[1]

MQMDE_STRUC_ID〔MQMDE構造体（StrucId）〕[1]

MQMDE_VERSION_2〔MQMDE構造体（Version）〕[1]

MQMDEF_NONE〔MQMDE構造体（Flags）〕[1]

MQMDE構造体[1]

MQMDS_FIFO〔キューの属性（MsgDeliverySequence）〕[1]

MQMDS_PRIORITY〔キューの属性（MsgDeliverySequence）〕[1]

MQMD構造体[1]

MQMF_ACCEPT_UNSUP_IF_XMIT_MASK[1]

MQMF_ACCEPT_UNSUP_MASK[1]

MQMF_LAST_MSG_IN_GROUP〔MQMD構造体（MsgFlags）〕[1]

MQMF_LAST_SEGMENT〔MQMD構造体（MsgFlags）〕[1]

MQMF_MSG_IN_GROUP〔MQMD構造体（MsgFlags）〕[1]

MQMF_NONE〔MQMD構造体（MsgFlags）〕[1]

MQMF_REJECT_UNSUP_MASK[1]

MQMF_SEGMENTATION_ALLOWED〔MQMD構造体（MsgFlags）〕[1]

MQMF_SEGMENTATION_INHIBITED〔MQMD構造体（MsgFlags）〕[1]

MQMF_SEGMENT〔MQMD構造体（MsgFlags）〕[1]

MQMI_NONE〔MQMD構造体（MsgId）〕[1]

MQMO_MATCH_CORREL_ID〔MQGMO構造体（MatchOptions）〕[1]

MQMO_MATCH_GROUP_ID〔MQGMO構造体（MatchOptions）〕[1]

MQMO_MATCH_MSG_ID〔MQGMO構造体（MatchOptions）〕[1]

MQMO_MATCH_MSG_SEQ_NUMBER〔MQGMO構造体（MatchOptions）〕[1]

MQMO_MATCH_OFFSET〔MQGMO構造体（MatchOptions）〕[1]

MQMO_NONE〔MQGMO構造体（MatchOptions）〕[1]

MQMT_APPL_FIRST〔MQMD構造体（MsgType）〕[1]

MQMT_APPL_LAST〔MQMD構造体（MsgType）〕[1]

MQMT_DATAGRAM〔MQMD構造体（MsgType）〕[1]

MQMT_REPLY〔MQMD構造体（MsgType）〕[1]

MQMT_REPORT〔MQMD構造体（MsgType）〕[1]

MQMT_REQUEST〔MQMD構造体（MsgType）〕[1]

MQMT_SYSTEM_FIRST〔MQMD構造体（MsgType）〕[1]

MQMT_SYSTEM_LAST〔MQMD構造体（MsgType）〕[1]

MQOD_CURRENT_VERSION〔MQOD構造体（Version）〕[1]

MQOD_STRUC_ID〔MQOD構造体（StrucId）〕[1]

MQOD_VERSION_1〔MQOD構造体（Version）〕[1]

MQOD_VERSION_2〔MQOD構造体（Version）〕[1]

MQOD_VERSION_3〔MQOD構造体（Version）〕[1]

MQOD構造体[1]

MQOII_NONE〔MQRMH構造体（ObjectInstanceId）〕[1]

MQOL_UNDEFINED〔MQMD構造体（OriginalLength）〕[1]

MQOO_ALTERNATE_USER_AUTHORITY〔MQOPEN命令（Options）〕[1]

MQOO_BIND_AS_Q_DEF〔MQOPEN命令（Options）〕[1]

MQOO_BIND_NOT_FIXED〔MQOPEN命令（Options）〕[1]

MQOO_BIND_ON_OPEN〔MQOPEN命令（Options）〕[1]

MQOO_BROWSE〔MQOPEN命令（Options）〕[1]

MQOO_FAIL_IF_QUIESCING〔MQOPEN命令（Options）〕[1]

MQOO_INPUT_AS_Q_DEF〔MQOPEN命令（Options）〕[1]

MQOO_INPUT_EXCLUSIVE〔MQOPEN命令（Options）〕[1]

MQOO_INPUT_EXCLUSIVE〔キューの属性（DefInputOpenOption）〕[1]

MQOO_INPUT_SHARED〔MQOPEN命令（Options）〕[1]

MQOO_INPUT_SHARED〔キューの属性（DefInputOpenOption）〕[1]

MQOO_INQUIRE〔MQOPEN命令（Options）〕[1]

MQOO_OUTPUT〔MQOPEN命令（Options）〕[1]

MQOO_PASS_ALL_CONTEXT〔MQOPEN命令（Options）〕[1]

MQOO_PASS_IDENTITY_CONTEXT〔MQOPEN命令（Options）〕[1]

MQOO_SAVE_ALL_CONTEXT〔MQOPEN命令（Options）〕[1]

MQOO_SET_ALL_CONTEXT〔MQOPEN命令（Options）〕[1]

MQOO_SET_IDENTITY_CONTEXT〔MQOPEN命令（Options）〕[1]

MQOO_SET〔MQOPEN命令（Options）〕[1]

MQOPEN命令[1]

MQOPEN命令の引数一覧[1]

MQOR構造体[1]

MQOR構造体の数〔MQDH構造体（RecsPresent）〕[1]

MQOT_PROCESS〔MQOD構造体（ObjectType）〕[1]

MQOT_Q_MGR〔MQOD構造体（ObjectType）〕[1]

MQOT_Q〔MQOD構造体（ObjectType）〕[1]

MQPER_NOT_PERSISTENT〔MQMD構造体（Persistence）〕[1]

MQPER_NOT_PERSISTENT〔キューの属性（DefPersistence）〕[1]

MQPER_PERSISTENCE_AS_Q_DEF〔MQMD構造体（Persistence）〕[1]

MQPER_PERSISTENT〔MQMD構造体（Persistence）〕[1]

MQPER_PERSISTENT〔キューの属性（DefPersistence）〕[1]

MQPL_AIX〔キューマネジャの属性（Platform）〕[1]

MQPL_MVS〔キューマネジャの属性（Platform）〕[1]

MQPL_OPEN_TP1〔キューマネジャの属性（Platform）〕[1]

MQPL_OS2〔キューマネジャの属性（Platform）〕[1]

MQPL_OS400〔キューマネジャの属性（Platform）〕[1]

MQPL_TMS_4V〔キューマネジャの属性（Platform）〕[1]

MQPL_UNIX〔キューマネジャの属性（Platform）〕[1]

MQPL_WINDOWS_NT〔キューマネジャの属性（Platform）〕[1]

MQPL_WINDOWS〔キューマネジャの属性（Platform）〕[1]

MQPL_XDM〔キューマネジャの属性（Platform）〕[1]

MQPMO_ALTERNATE_USER_AUTHORITY〔MQPMO構造体（Options）〕[1]

MQPMO_CURRENT_VERSION〔MQPMO構造体（Version）〕[1]

MQPMO_DEFAULT_CONTEXT〔MQPMO構造体（Options）〕[1]

MQPMO_FAIL_IF_QUIESCING〔MQPMO構造体（Options）〕[1]

MQPMO_LOGICAL_ORDER〔MQPMO構造体（Options）〕[1]

MQPMO_NEW_CORREL_ID〔MQPMO構造体（Options）〕[1]

MQPMO_NEW_MSG_ID〔MQPMO構造体（Options）〕[1]

MQPMO_NO_CONTEXT〔MQPMO構造体（Options）〕[1]

MQPMO_NO_SYNCPOINT〔MQPMO構造体（Options）〕[1]

MQPMO_NONE〔MQPMO構造体（Options）〕[1]

MQPMO_PASS_ALL_CONTEXT〔MQPMO構造体（Options）〕[1]

MQPMO_PASS_IDENTITY_CONTEXT〔MQPMO構造体（Options）〕[1]

MQPMO_SET_ALL_CONTEXT〔MQPMO構造体（Options）〕[1]

MQPMO_SET_IDENTITY_CONTEXT〔MQPMO構造体（Options）〕[1]

MQPMO_STRUC_ID〔MQPMO構造体（StrucId）〕[1]

MQPMO_SYNCPOINT〔MQPMO構造体（Options）〕[1]

MQPMO_VERSION_1〔MQPMO構造体（Version）〕[1]

MQPMO_VERSION_2〔MQPMO構造体（Version）〕[1]

MQPMO構造体[1]

MQPMRF_ACCOUNTING_TOKEN〔MQDH構造体（PutMsgRecFields）〕[1]

MQPMRF_ACCOUNTING_TOKEN〔MQPMO構造体（PutMsgRecFields）〕[1]

MQPMRF_CORREL_ID〔MQDH構造体（PutMsgRecFields）〕[1]

MQPMRF_CORREL_ID〔MQPMO構造体（PutMsgRecFields）〕[1]

MQPMRF_FEEDBACK〔MQDH構造体（PutMsgRecFields）〕[1]

MQPMRF_FEEDBACK〔MQPMO構造体（PutMsgRecFields）〕[1]

MQPMRF_GROUP_ID〔MQDH構造体（PutMsgRecFields）〕[1]

MQPMRF_GROUP_ID〔MQPMO構造体（PutMsgRecFields）〕[1]

MQPMRF_MSG_ID〔MQDH構造体（PutMsgRecFields）〕[1]

MQPMRF_MSG_ID〔MQPMO構造体（PutMsgRecFields）〕[1]

MQPMRF_NONE〔MQDH構造体（PutMsgRecFields）〕[1]

MQPMRF_NONE〔MQPMO構造体（PutMsgRecFields）〕[1]

MQPMR構造体[1]

MQPMR構造体フィールドの存在〔MQDH構造体（PutMsgRecFields）〕[1]

MQPMR構造体フィールドの存在〔MQPMO構造体（PutMsgRecFields）〕[1]

MQPRI_PRIORITY_AS_Q_DEF〔MQMD構造体（Priority）〕[1]

MQPUT1命令[1]

MQPUT命令[1]

MQPUT命令およびMQPUT1命令の引数一覧[1]

MQQA_BACKOUT_NOT_HARDENED〔キューの属性（HardenGetBackout）〕[1]

MQQA_GET_ALLOWED〔キューの属性（InhibitGet）〕[1]

MQQA_GET_INHIBITED〔キューの属性（InhibitGet）〕[1]

MQQA_NOT_SHAREABLE〔キューの属性（Shareability）〕[1]

MQQA_PUT_ALLOWED〔キューの属性（InhibitPut）〕[1]

MQQA_PUT_INHIBITED〔キューの属性（InhibitPut）〕[1]

MQQA_SHAREABLE〔キューの属性（Shareability）〕[1]

MQQDT_PERMANENT_DYNAMIC〔キューの属性（DefinitionType）〕[1]

MQQDT_PREDEFINED〔キューの属性（DefinitionType）〕[1]

MQQDT_TEMPORARY_DYNAMIC〔キューの属性（DefinitionType）〕[1]

MQQT_ALIAS〔キューの属性（QType）〕[1]

MQQT_CLUSTER〔キューの属性（BaseQName）〕[1]

MQQT_CLUSTER〔キューの属性（QType）〕[1]

MQQT_LOCAL〔キューの属性（BaseQName）〕[1]

MQQT_LOCAL〔キューの属性（QType）〕[1]

MQQT_MODEL〔キューの属性（QType）〕[1]

MQQT_REMOTE〔キューの属性（BaseQName）〕[1]

MQQT_REMOTE〔キューの属性（QType）〕[1]

MQRC_ADAPTER_CONN_LOAD_ERROR[1]

MQRC_ADAPTER_CONV_LOAD_ERROR[1]

MQRC_ADAPTER_DEFS_ERROR[1]

MQRC_ADAPTER_DEFS_LOAD_ERROR[1]

MQRC_ADAPTER_DISC_LOAD_ERROR[1]

MQRC_ADAPTER_NOT_AVAILABLE[1]

MQRC_ADAPTER_SERV_LOAD_ERROR[1]

MQRC_ADAPTER_STORAGE_SHORTAGE[1]

MQRC_AIR_ERROR[1]

MQRC_ALIAS_BASE_Q_TYPE_ERROR[1]

MQRC_ALREADY_CONNECTED[1]

MQRC_ANOTHER_Q_MGR_CONNECTED[1]

MQRC_API_EXIT_ERROR[1]

MQRC_API_EXIT_INIT_ERROR[1]

MQRC_API_EXIT_LOAD_ERROR[1]

MQRC_API_EXIT_NOT_FOUND[1]

MQRC_API_EXIT_TERM_ERROR[1]

MQRC_APPL_FIRST[1]

MQRC_APPL_LAST[1]

MQRC_ASID_MISMATCH[1]

MQRC_ATTRIBUTE_LOCKED[1]

MQRC_AUTH_INFO_CONN_NAME_ERROR[1]

MQRC_AUTH_INFO_REC_COUNT_ERROR[1]

MQRC_AUTH_INFO_REC_ERROR[1]

MQRC_AUTH_INFO_TYPE_ERROR[1]

MQRC_BACKED_OUT[1]

MQRC_BACKOUT_THRESHOLD_REACHED[1]

MQRC_BAG_CONVERSION_ERROR[1]

MQRC_BAG_WRONG_TYPE[1]

MQRC_BINARY_DATA_LENGTH_ERROR[1]

MQRC_BO_ERROR[1]

MQRC_BRIDGE_STARTED[1]

MQRC_BRIDGE_STOPPED[1]

MQRC_BUFFER_ERROR[1]

MQRC_BUFFER_LENGTH_ERROR[1]

MQRC_BUFFER_NOT_AUTOMATIC[1]

MQRC_CALL_IN_PROGRESS[1]

MQRC_CD_ERROR[1]

MQRC_CF_NOT_AVAILABLE[1]

MQRC_CF_STRUC_AUTH_FAILED[1]

MQRC_CF_STRUC_ERROR[1]

MQRC_CF_STRUC_FAILED[1]

MQRC_CF_STRUC_IN_USE[1]

MQRC_CF_STRUC_LIST_HDR_IN_USE[1]

MQRC_CFH_ERROR[1]

MQRC_CFIL_ERROR[1]

MQRC_CFIN_ERROR[1]

MQRC_CFSL_ERROR[1]

MQRC_CFST_ERROR[1]

MQRC_CHANNEL_ACTIVATED[1]

MQRC_CHANNEL_AUTO_DEF_ERROR[1]

MQRC_CHANNEL_AUTO_DEF_OK[1]

MQRC_CHANNEL_CONV_ERROR[1]

MQRC_CHANNEL_NOT_ACTIVATED[1]

MQRC_CHANNEL_SSL_ERROR[1]

MQRC_CHANNEL_STARTED[1]

MQRC_CHANNEL_STOPPED[1]

MQRC_CHANNEL_STOPPED_BY_USER[1]

MQRC_CHAR_ATTR_LENGTH_ERROR[1]

MQRC_CHAR_ATTRS_ERROR[1]

MQRC_CHAR_ATTRS_TOO_SHORT[1]

MQRC_CHAR_CONVERSION_ERROR[1]

MQRC_CICS_BRIDGE_RESTRICTION[1]

MQRC_CICS_WAIT_FAILED[1]

MQRC_CLIENT_CONN_ERROR[1]

MQRC_CLUSTER_EXIT_ERROR[1]

MQRC_CLUSTER_EXIT_LOAD_ERROR[1]

MQRC_CLUSTER_PUT_INHIBITED[1]

MQRC_CLUSTER_RESOLUTION_ERROR[1]

MQRC_CLUSTER_RESOURCE_ERROR[1]

MQRC_CMD_SERVER_NOT_AVAILABLE[1]

MQRC_CNO_ERROR[1]

MQRC_COD_NOT_VALID_FOR_XCF_Q[1]

MQRC_CODED_CHAR_SET_ID_ERROR[1]

MQRC_COMMAND_TYPE_ERROR[1]

MQRC_CONFIG_CHANGE_OBJECT[1]

MQRC_CONFIG_CREATE_OBJECT[1]

MQRC_CONFIG_DELETE_OBJECT[1]

MQRC_CONFIG_REFRESH_OBJECT[1]

MQRC_CONN_ID_IN_USE[1]

MQRC_CONN_TAG_IN_USE[1]

MQRC_CONN_TAG_NOT_RELEASED[1]

MQRC_CONN_TAG_NOT_USABLE[1]

MQRC_CONNECTION_BROKEN[1]

MQRC_CONNECTION_ERROR[1]

MQRC_CONNECTION_NOT_AUTHORIZED[1]

MQRC_CONNECTION_QUIESCING[1]

MQRC_CONNECTION_STOPPING[1]

MQRC_CONTEXT_HANDLE_ERROR[1]

MQRC_CONTEXT_NOT_AVAILABLE[1]

MQRC_CONTEXT_OBJECT_NOT_VALID[1]

MQRC_CONTEXT_OPEN_ERROR[1]

MQRC_CONVERTED_MSG_TOO_BIG[1]

MQRC_CONVERTED_STRING_TOO_BIG[1]

MQRC_CORREL_ID_ERROR[1]

MQRC_CRYPTO_HARDWARE_ERROR[1]

MQRC_CURRENT_RECORD_ERROR[1]

MQRC_CURSOR_NOT_VALID[1]

MQRC_DATA_LENGTH_ERROR[1]

MQRC_DATA_TRUNCATED[1]

MQRC_DB2_NOT_AVAILABLE[1]

MQRC_DBCS_ERROR[1]

MQRC_DEF_XMIT_Q_TYPE_ERROR[1]

MQRC_DEF_XMIT_Q_USAGE_ERROR[1]

MQRC_DEST_ENV_ERROR[1]

MQRC_DEST_NAME_ERROR[1]

MQRC_DH_ERROR[1]

MQRC_DISTRIBUTION_LIST_EMPTY[1]

MQRC_DLH_ERROR[1]

MQRC_DUPLICATE_RECOV_COORD[1]

MQRC_DYNAMIC_Q_NAME_ERROR[1]

MQRC_ENCODING_ERROR[1]

MQRC_ENCODING_NOT_SUPPORTED[1]

MQRC_ENVIRONMENT_ERROR[1]

MQRC_EXIT_REASON_ERROR[1]

MQRC_EXPIRY_ERROR[1]

MQRC_FEEDBACK_ERROR[1]

MQRC_FILE_NOT_AUDITED[1]

MQRC_FILE_SYSTEM_ERROR[1]

MQRC_FORMAT_ERROR[1]

MQRC_FUNCTION_ERROR[1]

MQRC_FUNCTION_NOT_SUPPORTED[1]

MQRC_GET_INHIBITED[1]

MQRC_GLOBAL_UOW_CONFLICT[1]

MQRC_GMO_ERROR[1]

MQRC_GROUP_ID_ERROR[1]

MQRC_HANDLE_IN_USE_FOR_UOW[1]

MQRC_HANDLE_NOT_AVAILABLE[1]

MQRC_HBAG_ERROR[1]

MQRC_HCONFIG_ERROR[1]

MQRC_HCONN_ERROR[1]

MQRC_HEADER_ERROR[1]

MQRC_HOBJ_ERROR[1]

MQRC_IIH_ERROR[1]

MQRC_INCOMPLETE_GROUP[1]

MQRC_INCOMPLETE_MSG[1]

MQRC_INCONSISTENT_BROWSE[1]

MQRC_INCONSISTENT_CCSIDS[1]

MQRC_INCONSISTENT_ENCODINGS[1]

MQRC_INCONSISTENT_FORMAT[1]

MQRC_INCONSISTENT_ITEM_TYPE[1]

MQRC_INCONSISTENT_OBJECT_STATE[1]

MQRC_INCONSISTENT_OPEN_OPTIONS[1]

MQRC_INCONSISTENT_PERSISTENCE[1]

MQRC_INCONSISTENT_UOW[1]

MQRC_INDEX_ERROR[1]

MQRC_INDEX_NOT_PRESENT[1]

MQRC_INHIBIT_VALUE_ERROR[1]

MQRC_INITIALIZATION_FAILED[1]

MQRC_INQUIRY_COMMAND_ERROR[1]

MQRC_INSUFFICIENT_BUFFER[1]

MQRC_INSUFFICIENT_DATA[1]

MQRC_INT_ATTR_COUNT_ERROR[1]

MQRC_INT_ATTR_COUNT_TOO_SMALL[1]

MQRC_INT_ATTRS_ARRAY_ERROR[1]

MQRC_INVALID_MSG_UNDER_CURSOR[1]

MQRC_ITEM_COUNT_ERROR[1]

MQRC_ITEM_TYPE_ERROR[1]

MQRC_ITEM_VALUE_ERROR[1]

MQRC_JMS_FORMAT_ERROR[1]

MQRC_JSSE_ERROR[1]

MQRC_KEY_REPOSITORY_ERROR[1]

MQRC_LDAP_PASSWORD_ERROR[1]

MQRC_LDAP_USER_NAME_ERROR[1]

MQRC_LDAP_USER_NAME_LENGTH_ERR[1]

MQRC_LOCAL_UOW_CONFLICT[1]

MQRC_MATCH_OPTIONS_ERROR[1]

MQRC_MAX_CONNS_LIMIT_REACHED[1]

MQRC_MD_ERROR[1]

MQRC_MDE_ERROR[1]

MQRC_MISSING_REPLY_TO_Q[1]

MQRC_MISSING_WIH[1]

MQRC_MSG_FLAGS_ERROR[1]

MQRC_MSG_ID_ERROR[1]

MQRC_MSG_NOT_MATCHED[1]

MQRC_MSG_SEQ_NUMBER_ERROR[1]

MQRC_MSG_TOKEN_ERROR[1]

MQRC_MSG_TOO_BIG_FOR_CHANNEL[1]

MQRC_MSG_TOO_BIG_FOR_Q[1]

MQRC_MSG_TOO_BIG_FOR_Q_MGR[1]

MQRC_MSG_TOO_BIG_FOR_Q_MGR〔MQMD構造体（Feedback）〕[1]

MQRC_MSG_TOO_BIG_FOR_Q〔MQMD構造体（Feedback）〕[1]

MQRC_MSG_TYPE_ERROR[1]

MQRC_MULTIPLE_INSTANCE_ERROR[1]

MQRC_MULTIPLE_REASONS[1]

MQRC_NAME_IN_USE[1]

MQRC_NAME_NOT_VALID_FOR_TYPE[1]

MQRC_NEGATIVE_LENGTH[1]

MQRC_NEGATIVE_OFFSET[1]

MQRC_NESTED_BAG_NOT_SUPPORTED[1]

MQRC_NEXT_OFFSET_ERROR[1]

MQRC_NEXT_RECORD_ERROR[1]

MQRC_NO_BUFFER[1]

MQRC_NO_CONNECTION_REFERENCE[1]

MQRC_NO_DATA_AVAILABLE[1]

MQRC_NO_DESTINATIONS_AVAILABLE[1]

MQRC_NO_EXTERNAL_PARTICIPANTS[1]

MQRC_NO_MSG_AVAILABLE[1]

MQRC_NO_MSG_LOCKED[1]

MQRC_NO_MSG_UNDER_CURSOR[1]

MQRC_NO_RECORD_AVAILABLE[1]

MQRC_NONE[1]

MQRC_NOT_AUTHORIZED[1]

MQRC_NOT_AUTHORIZED〔MQMD構造体（Feedback）〕[1]

MQRC_NOT_CONNECTED[1]

MQRC_NOT_CONVERTED[1]

MQRC_NOT_OPEN[1]

MQRC_NOT_OPEN_FOR_BROWSE[1]

MQRC_NOT_OPEN_FOR_INPUT[1]

MQRC_NOT_OPEN_FOR_INQUIRE[1]

MQRC_NOT_OPEN_FOR_OUTPUT[1]

MQRC_NOT_OPEN_FOR_PASS_ALL[1]

MQRC_NOT_OPEN_FOR_PASS_IDENT[1]

MQRC_NOT_OPEN_FOR_SET[1]

MQRC_NOT_OPEN_FOR_SET_ALL[1]

MQRC_NOT_OPEN_FOR_SET_IDENT[1]

MQRC_NULL_POINTER[1]

MQRC_OBJECT_ALREADY_EXISTS[1]

MQRC_OBJECT_CHANGED[1]

MQRC_OBJECT_DAMAGED[1]

MQRC_OBJECT_IN_USE[1]

MQRC_OBJECT_LEVEL_INCOMPATIBLE[1]

MQRC_OBJECT_NAME_ERROR[1]

MQRC_OBJECT_NOT_UNIQUE[1]

MQRC_OBJECT_Q_MGR_NAME_ERROR[1]

MQRC_OBJECT_RECORDS_ERROR[1]

MQRC_OBJECT_TYPE_ERROR[1]

MQRC_OD_ERROR[1]

MQRC_OFFSET_ERROR[1]

MQRC_OPEN_FAILED[1]

MQRC_OPTION_ENVIRONMENT_ERROR[1]

MQRC_OPTION_NOT_VALID_FOR_TYPE[1]

MQRC_OPTIONS_ERROR[1]

MQRC_ORIGINAL_LENGTH_ERROR[1]

MQRC_OUT_SELECTOR_ERROR[1]

MQRC_OUTCOME_MIXED[1]

MQRC_OUTCOME_PENDING[1]

MQRC_PAGESET_ERROR[1]

MQRC_PAGESET_FULL[1]

MQRC_PARAMETER_MISSING[1]

MQRC_PARTIALLY_CONVERTED[1]

MQRC_PARTICIPANT_NOT_AVAILABLE[1]

MQRC_PCF_ERROR[1]

MQRC_PERSISTENCE_ERROR[1]

MQRC_PERSISTENT_NOT_ALLOWED[1]

MQRC_PERSISTENT_NOT_ALLOWED〔MQMD構造体（Feedback）〕[1]

MQRC_PMO_ERROR[1]

MQRC_PMO_RECORD_FLAGS_ERROR[1]

MQRC_PRIORITY_ERROR[1]

MQRC_PRIORITY_EXCEEDS_MAXIMUM[1]

MQRC_PUT_INHIBITED[1]

MQRC_PUT_INHIBITED〔MQMD構造体（Feedback）〕[1]

MQRC_PUT_MSG_RECORDS_ERROR[1]

MQRC_Q_ALREADY_EXISTS[1]

MQRC_Q_DELETED[1]

MQRC_Q_DEPTH_HIGH[1]

MQRC_Q_DEPTH_LOW[1]

MQRC_Q_FULL[1]

MQRC_Q_FULL〔MQMD構造体（Feedback）〕[1]

MQRC_Q_INDEX_TYPE_ERROR[1]

MQRC_Q_MGR_ACTIVE[1]

MQRC_Q_MGR_NAME_ERROR[1]

MQRC_Q_MGR_NOT_ACTIVE[1]

MQRC_Q_MGR_NOT_AVAILABLE[1]

MQRC_Q_MGR_QUIESCING[1]

MQRC_Q_MGR_STOPPING[1]

MQRC_Q_NOT_EMPTY[1]

MQRC_Q_SERVICE_INTERVAL_HIGH[1]

MQRC_Q_SERVICE_INTERVAL_OK[1]

MQRC_Q_SPACE_NOT_AVAILABLE[1]

MQRC_Q_SPACE_NOT_AVAILABLE〔MQMD構造体（Feedback）〕[1]

MQRC_Q_TYPE_ERROR[1]

MQRC_RECS_PRESENT_ERROR[1]

MQRC_REFERENCE_ERROR[1]

MQRC_REMOTE_Q_NAME_ERROR[1]

MQRC_REOPEN_EXCL_INPUT_ERROR[1]

MQRC_REOPEN_INQUIRE_ERROR[1]

MQRC_REOPEN_SAVED_CONTEXT_ERR[1]

MQRC_REOPEN_TEMPORARY_Q_ERROR[1]

MQRC_REPORT_OPTIONS_ERROR[1]

MQRC_RESERVED_VALUE_ERROR[1]

MQRC_RESOURCE_PROBLEM[1]

MQRC_RESPONSE_RECORDS_ERROR[1]

MQRC_RFH_COMMAND_ERROR[1]

MQRC_RFH_DUPLICATE_PARM[1]

MQRC_RFH_ERROR[1]

MQRC_RFH_PARM_ERROR[1]

MQRC_RFH_PARM_MISSING[1]

MQRC_RFH_STRING_ERROR[1]

MQRC_RMH_ERROR[1]

MQRC_SCO_ERROR[1]

MQRC_SECOND_MARK_NOT_ALLOWED[1]

MQRC_SECURITY_ERROR[1]

MQRC_SEGMENT_LENGTH_ZERO[1]

MQRC_SEGMENTS_NOT_SUPPORTED[1]

MQRC_SELECTOR_COUNT_ERROR[1]

MQRC_SELECTOR_ERROR[1]

MQRC_SELECTOR_LIMIT_EXCEEDED[1]

MQRC_SELECTOR_NOT_FOR_TYPE[1]

MQRC_SELECTOR_NOT_PRESENT[1]

MQRC_SELECTOR_NOT_SUPPORTED[1]

MQRC_SELECTOR_NOT_UNIQUE[1]

MQRC_SELECTOR_OUT_OF_RANGE[1]

MQRC_SELECTOR_TYPE_ERROR[1]

MQRC_SELECTOR_WRONG_TYPE[1]

MQRC_SERVICE_ERROR[1]

MQRC_SERVICE_NOT_AVAILABLE[1]

MQRC_SIGNAL_OUTSTANDING[1]

MQRC_SIGNAL_REQUEST_ACCEPTED[1]

MQRC_SIGNAL1_ERROR[1]

MQRC_SOURCE_BUFFER_ERROR[1]

MQRC_SOURCE_CCSID_ERROR[1]

MQRC_SOURCE_DECIMAL_ENC_ERROR[1]

MQRC_SOURCE_FLOAT_ENC_ERROR[1]

MQRC_SOURCE_INTEGER_ENC_ERROR[1]

MQRC_SOURCE_LENGTH_ERROR[1]

MQRC_SRC_ENV_ERROR[1]

MQRC_SRC_NAME_ERROR[1]

MQRC_SSL_ALREADY_INITIALIZED[1]

MQRC_SSL_CERT_STORE_ERROR[1]

MQRC_SSL_CERTIFICATE_REVOKED[1]

MQRC_SSL_CONFIG_ERROR[1]

MQRC_SSL_INITIALIZATION_ERROR[1]

MQRC_SSL_NOT_ALLOWED[1]

MQRC_SSL_PEER_NAME_ERROR[1]

MQRC_SSL_PEER_NAME_MISMATCH[1]

MQRC_STOPPED_BY_CLUSTER_EXIT[1]

MQRC_STORAGE_CLASS_ERROR[1]

MQRC_STORAGE_MEDIUM_FULL[1]

MQRC_STORAGE_NOT_AVAILABLE[1]

MQRC_STRING_ERROR[1]

MQRC_STRING_LENGTH_ERROR[1]

MQRC_STRING_TRUNCATED[1]

MQRC_STRUC_ID_ERROR[1]

MQRC_STRUC_LENGTH_ERROR[1]

MQRC_SUPPRESSED_BY_EXIT[1]

MQRC_SYNCPOINT_LIMIT_REACHED[1]

MQRC_SYNCPOINT_NOT_AVAILABLE[1]

MQRC_SYSTEM_BAG_NOT_ALTERABLE[1]

MQRC_SYSTEM_BAG_NOT_DELETABLE[1]

MQRC_SYSTEM_ITEM_NOT_ALTERABLE[1]

MQRC_SYSTEM_ITEM_NOT_DELETABLE[1]

MQRC_TARGET_BUFFER_ERROR[1]

MQRC_TARGET_CCSID_ERROR[1]

MQRC_TARGET_DECIMAL_ENC_ERROR[1]

MQRC_TARGET_FLOAT_ENC_ERROR[1]

MQRC_TARGET_INTEGER_ENC_ERROR[1]

MQRC_TARGET_LENGTH_ERROR[1]

MQRC_TERMINATION_FAILED[1]

MQRC_TM_ERROR[1]

MQRC_TMC_ERROR[1]

MQRC_TRIGGER_CONTROL_ERROR[1]

MQRC_TRIGGER_DEPTH_ERROR[1]

MQRC_TRIGGER_MSG_PRIORITY_ERR[1]

MQRC_TRIGGER_TYPE_ERROR[1]

MQRC_TRUNCATED_MSG_ACCEPTED[1]

MQRC_TRUNCATED_MSG_FAILED[1]

MQRC_UCS2_CONVERSION_ERROR[1]

MQRC_UNEXPECTED_ERROR[1]

MQRC_UNIT_OF_WORK_NOT_STARTED[1]

MQRC_UNKNOWN_ALIAS_BASE_Q[1]

MQRC_UNKNOWN_AUTH_ENTITY[1]

MQRC_UNKNOWN_DEF_XMIT_Q[1]

MQRC_UNKNOWN_ENTITY[1]

MQRC_UNKNOWN_OBJECT_NAME[1]

MQRC_UNKNOWN_OBJECT_Q_MGR[1]

MQRC_UNKNOWN_Q_NAME[1]

MQRC_UNKNOWN_REF_OBJECT[1]

MQRC_UNKNOWN_REMOTE_Q_MGR[1]

MQRC_UNKNOWN_REPORT_OPTION[1]

MQRC_UNKNOWN_XMIT_Q[1]

MQRC_UNSUPPORTED_CIPHER_SUITE[1]

MQRC_UOW_CANCELED[1]

MQRC_UOW_ENLISTMENT_ERROR[1]

MQRC_UOW_IN_PROGRESS[1]

MQRC_UOW_MIX_NOT_SUPPORTED[1]

MQRC_UOW_NOT_AVAILABLE[1]

MQRC_USER_ID_NOT_AVAILABLE[1]

MQRC_WAIT_INTERVAL_ERROR[1]

MQRC_WIH_ERROR[1]

MQRC_WRONG_CF_LEVEL[1]

MQRC_WRONG_GMO_VERSION[1]

MQRC_WRONG_MD_VERSION[1]

MQRC_WRONG_VERSION[1]

MQRC_WXP_ERROR[1]

MQRC_XMIT_Q_TYPE_ERROR[1]

MQRC_XMIT_Q_USAGE_ERROR[1]

MQRC_XQH_ERROR[1]

MQRC_XWAIT_CANCELED[1]

MQRC_XWAIT_ERROR[1]

MQRC_ZERO_LENGTH[1]

MQRMH_CURRENT_VERSION〔MQRMH構造体（Version）〕[1]

MQRMH_STRUC_ID〔MQRMH構造体（StrucId）〕[1]

MQRMH_VERSION_1〔MQRMH構造体（Version）〕[1]

MQRMHF_LAST〔MQRMH構造体（Flags）〕[1]

MQRMHF_NOT_LAST〔MQRMH構造体（Flags）〕[1]

MQRMH構造体[1]

MQRO_ACCEPT_UNSUP_IF_XMIT_MASK[1]

MQRO_ACCEPT_UNSUP_MASK[1]

MQRO_COA_WITH_DATA〔MQMD構造体（Report）〕[1]

MQRO_COA_WITH_FULL_DATA〔MQMD構造体（Report）〕[1]

MQRO_COA〔MQMD構造体（Report）〕[1]

MQRO_COD_WITH_DATA〔MQMD構造体（Report）〕[1]

MQRO_COD_WITH_FULL_DATA〔MQMD構造体（Report）〕[1]

MQRO_COD〔MQMD構造体（Report）〕[1]

MQRO_COPY_MSG_ID_TO_CORREL_ID〔MQMD構造体（Report）〕[1]

MQRO_DEAD_LETTER_Q〔MQMD構造体（Report）〕[1]

MQRO_DISCARD_MSG〔MQMD構造体（Report）〕[1]

MQRO_EXCEPTION_WITH_DATA〔MQMD構造体（Report）〕[1]

MQRO_EXCEPTION_WITH_FULL_DATA〔MQMD構造体（Report）〕[1]

MQRO_EXCEPTION〔MQMD構造体（Report）〕[1]

MQRO_EXPIRATION_WITH_DATA〔MQMD構造体（Report）〕[1]

MQRO_EXPIRATION_WITH_FULL_DATA〔MQMD構造体（Report）〕[1]

MQRO_EXPIRATION〔MQMD構造体（Report）〕[1]

MQRO_NAN〔MQMD構造体（Report）〕[1]

MQRO_NEW_MSG_ID〔MQMD構造体（Report）〕[1]

MQRO_NONE〔MQMD構造体（Report）〕[1]

MQRO_PAN〔MQMD構造体（Report）〕[1]

MQRO_PASS_CORREL_ID〔MQMD構造体（Report）〕[1]

MQRO_PASS_MSG_ID〔MQMD構造体（Report）〕[1]

MQRO_REJECT_UNSUP_MASK[1]

MQRR構造体[1]

MQSCO_Q_MGR〔キューの属性（Scope）〕[1]

MQSEG_ALLOWED〔MQGMO構造体（Segmentation）〕[1]

MQSEG_INHIBITED〔MQGMO構造体（Segmentation）〕[1]

MQSET命令[1]

MQSET命令の引数一覧[1]

MQSP_AVAILABLE〔キューマネジャの属性（SyncPoint）〕[1]

MQSP_NOT_AVAILABLE〔キューマネジャの属性（SyncPoint）〕[1]

MQSS_LAST_SEGMENT〔MQGMO構造体（SegmentStatus）〕[1]

MQSS_NOT_A_SEGMENT〔MQGMO構造体（SegmentStatus）〕[1]

MQSS_SEGMENT〔MQGMO構造体（SegmentStatus）〕[1]

MQTC_OFF〔キューの属性（TriggerControl）〕[1]

MQTC_ON〔キューの属性（TriggerControl）〕[1]

MQTM_CURRENT_VERSION〔MQTM構造体（Version）〕[1]

MQTM_STRUC_ID〔MQTM構造体（StrucId）〕[1]

MQTM_VERSION_1〔MQTM構造体（Version）〕[1]

MQTM構造体[1]

MQTT_DEPTH〔キューの属性（TriggerType）〕[1]

MQTT_EVERY〔キューの属性（TriggerType）〕[1]

MQTT_FIRST〔キューの属性（TriggerType）〕[1]

MQTT_NONE〔キューの属性（TriggerType）〕[1]

MQUS_NORMAL〔キューの属性（Usage）〕[1]

MQUS_TRANSMISSION〔キューの属性（Usage）〕[1]

MQWI_UNLIMITED〔MQGMO構造体（WaitInterval）〕[1]

MQXQH_CURRENT_VERSION〔MQXQH構造体（Version）〕[1]

MQXQH_STRUC_ID〔MQXQH構造体（StrucId）〕[1]

MQXQH_VERSION_1〔MQXQH構造体（Version）〕[1]

MQXQH構造体[1]

T

TP1/Message Queueの定数値[1]

あ

あて先オブジェクトのオフセット〔MQRMH構造体（DestNameOffset）〕[1]

あて先オブジェクト名長〔MQRMH構造体（DestNameLength）〕[1]

あて先環境データオフセット〔MQRMH構造体（DestEnvOffset）〕[1]

あて先環境データ長〔MQRMH構造体（DestEnvLength）〕[1]

あて先キューマネジャ名〔MQDLH構造体（DestQMgrName）〕[1]

あて先キュー名〔MQDLH構造体（DestQName）〕[1]

アプリケーション識別子〔MQTM構造体（ApplId）〕[1]

アプリケーション識別子〔プロセス定義の属性（ApplId）〕[1]

アプリケーション識別データ〔MQMD構造体（ApplIdentityData）〕[1]

アプリケーションタイプ〔MQTM構造体（ApplType）〕[1]

アプリケーションタイプ〔プロセス定義の属性（ApplType）〕[1]

い

一致オプション〔MQGMO構造体（MatchOptions）〕[1]

イニシエーションキュー名〔キューの属性（InitiationQName）〕[1]

イベント発生キュー名〔MQTM構造体（QName）〕[1]

え

エラーコード[1]

お

応答キューマネジャ名〔MQMD構造体（ReplyToQMgr）〕[1]

応答キュー名〔MQMD構造体（ReplyToQ）〕[1]

オープンに失敗したキューの数〔MQOD構造体（InvalidDestCount）〕[1]

オブジェクトインスタンス識別子〔MQRMH構造体（ObjectInstanceId）〕[1]

オブジェクトキューマネジャ名〔MQOD構造体（ObjectQMgrName）〕[1]

オブジェクトキューマネジャ名〔MQOR構造体（ObjectQMgrName）〕[1]

オブジェクトタイプ〔MQOD構造体（ObjectType）〕[1]

オブジェクトタイプ〔MQRMH構造体（ObjectType）〕[1]

オブジェクト名〔MQOD構造体（ObjectName）〕[1]

オブジェクト名〔MQOR構造体（ObjectName）〕[1]

オブジェクトレコード数〔MQOD構造体（RecsPresent）〕[1]

オフセット〔MQMDE構造体（Offset）〕[1]

オフセット〔MQMD構造体（Offset）〕[1]

か

解決したキューマネジャ名称〔MQOD構造体（ResolvedQMgrName）〕[1]

解決したキュー名称〔MQOD構造体（ResolvedQName）〕[1]

課金トークン〔MQMD構造体（AccountingToken）〕[1]

課金トークン〔MQPMR構造体（AccountingToken）〕[1]

環境データ〔MQTM構造体（EnvData）〕[1]

環境データ〔プロセス定義の属性（EnvData）〕[1]

完了コード[1]

完了コード〔MQCFH構造体（CompCode）〕[1]

完了コード〔MQRR構造体（CompCode）〕[1]

き

基本データタイプ〔COBOL言語での実現例〕[1]

基本データタイプ〔C言語での実現例〕[1]

キューが属するクラスタの名称〔キューの属性（ClusterName）〕[1]

キュー記述子〔キューの属性（QDesc）〕[1]

キュータイプ〔キューの属性（QType）〕[1]

キューの属性[1]

キューの有効範囲〔キューの属性（Scope）〕[1]

キュー保持時間〔キューの属性（RetentionInterval）〕[1]

キューマネジャ記述子〔キューマネジャの属性（QMgrDesc）〕[1]

キューマネジャの属性[1]

キューマネジャ名〔キューマネジャの属性（QMgrName）〕[1]

キュー名〔キューの属性（QName）〕[1]

く

グループ識別子〔MQMDE構造体（GroupId）〕[1]

グループ識別子〔MQMD構造体（GroupId）〕[1]

グループ識別子〔MQPMR構造体（GroupId）〕[1]

こ

構造体識別子〔MQDH構造体（StrucId）〕[1]

構造体識別子〔MQDLH構造体（StrucId）〕[1]

構造体識別子〔MQGMO構造体（StrucId）〕[1]

構造体識別子〔MQMDE構造体（StrucId）〕[1]

構造体識別子〔MQMD構造体（StrucId）〕[1]

構造体識別子〔MQOD構造体（StrucId）〕[1]

構造体識別子〔MQPMO構造体（StrucId）〕[1]

構造体識別子〔MQRMH構造体（StrucId）〕[1]

構造体識別子〔MQTM構造体（StrucId）〕[1]

構造体識別子〔MQXQH構造体（StrucId）〕[1]

構造体タイプ〔MQCFH構造体（Type）〕[1]

構造体タイプ〔MQCFIL構造体（Type）〕[1]

構造体タイプ〔MQCFIN構造体（Type）〕[1]

構造体タイプ〔MQCFSL構造体（Type）〕[1]

構造体タイプ〔MQCFST構造体（Type）〕[1]

構造体長〔MQCFH構造体（StrucLength）〕[1]

構造体長〔MQCFIL構造体（StrucLength）〕[1]

構造体長〔MQCFIN構造体（StrucLength）〕[1]

構造体長〔MQCFSL構造体（StrucLength）〕[1]

構造体長〔MQCFST構造体（StrucLength）〕[1]

構造体長〔MQMDE構造体（StrucLength）〕[1]

構造体長〔MQRMH構造体（StrucLength）〕[1]

構造体バージョン番号〔MQCFH構造体（Version）〕[1]

構造体バージョン番号〔MQDH構造体（Version）〕[1]

構造体バージョン番号〔MQDLH構造体（Version）〕[1]

構造体バージョン番号〔MQGMO構造体（Version）〕[1]

構造体バージョン番号〔MQMDE構造体（Version）〕[1]

構造体バージョン番号〔MQMD構造体（Version）〕[1]

構造体バージョン番号〔MQOD構造体（Version）〕[1]

構造体バージョン番号〔MQPMO構造体（Version）〕[1]

構造体バージョン番号〔MQRMH構造体（Version）〕[1]

構造体バージョン番号〔MQTM構造体（Version）〕[1]

構造体バージョン番号〔MQXQH構造体（Version）〕[1]

コード変換対象の文字コードセット[1]

コード変換対象の文字セット識別子一覧[1]

コピーファイル〔COBOL言語での実現例〕[1]

コンテキスト〔MQPMO構造体（Context）〕[1]

さ

最初のMQPMR構造体までのオフセット〔MQDH構造体（PutMsgRecOffset）〕[1]

最初の応答レコードのアドレス〔MQOD構造体（ResponseRecPtr）〕[1]

最初の応答レコードのアドレス〔MQPMO構造体（ResponseRecPtr）〕[1]

最初の応答レコードまでのオフセット〔MQOD構造体（ResponseRecOffset）〕[1]

最初の応答レコードまでのオフセット〔MQPMO構造体（ResponseRecOffset）〕[1]

最初のオブジェクトレコードのアドレス〔MQOD構造体（ObjectRecPtr）〕[1]

最初のオブジェクトレコードまでのオフセット〔MQDH構造体（ObjectRecOffset）〕[1]

最初のオブジェクトレコードまでのオフセット〔MQOD構造体（ObjectRecOffset）〕[1]

最初の登録メッセージレコードのアドレス〔MQPMO構造体（PutMsgRecPtr）〕[1]

最初の登録メッセージレコードまでのオフセット〔MQPMO構造体（PutMsgRecOffset）〕[1]

最大ハンドル数〔キューマネジャの属性（MaxHandles）〕[1]

最大メッセージ長〔キューの属性（MaxMsgLength）〕[1]

最大メッセージ長〔キューマネジャの属性（MaxMsgLength）〕[1]

最大メッセージ登録数〔キューの属性（MaxQDepth）〕[1]

最大メッセージ優先度〔キューマネジャの属性（MaxPriority）〕[1]

作成時刻〔キューの属性（CreationTime）〕[1]

作成日付〔キューの属性（CreationDate）〕[1]

し

シグナル〔MQGMO構造体（Signal1）〕[1]

受信キューマネジャ名〔MQPMO構造体（ResolvedQMgrName）〕[1]

受信キュー名〔MQGMO構造体（ResolvedQName）〕[1]

受信キュー名〔MQPMO構造体（ResolvedQName）〕[1]

出力オープン数〔キューの属性（OpenOutputCount）〕[1]

使用種別〔キューの属性（Usage）〕[1]

省略時の転送キュー名〔キューマネジャの属性（DefXmitQName）〕[1]

省略時の取り出しオプション〔キューの属性（DefInputOpenOption）〕[1]

省略時のメッセージ永続性〔キューの属性（DefPersistence）〕[1]

省略時のメッセージ優先度〔キューの属性（DefPriority）〕[1]

せ

制御オプション〔MQCFH構造体（Control）〕[1]

セグメント分割フラグ〔MQGMO構造体（Segmentation）〕[1]

そ

相関識別子〔MQMD構造体（CorrelId）〕[1]

相関識別子〔MQPMR構造体（CorrelId）〕[1]

送信に失敗したキューの数〔MQPMO構造体（InvalidDestCount）〕[1]

送信元オブジェクトのオフセット〔MQRMH構造体（SrcNameOffset）〕[1]

送信元オブジェクト名長〔MQRMH構造体（SrcNameLength）〕[1]

送信元環境データオフセット〔MQRMH構造体（SrcEnvOffset）〕[1]

送信元環境データ長〔MQRMH構造体（SrcEnvLength）〕[1]

た

代替セキュリティ識別子〔MQOD構造体（AlternateSecurityId）〕[1]

代替ユーザ識別子〔MQOD構造体（AlternateUserId）〕[1]

ち

長大データ高位オフセット〔MQRMH構造体（DataLogicalOffset2）〕[1]

長大データ長〔MQRMH構造体（DataLogicalLength）〕[1]

長大データ低位オフセット〔MQRMH構造体（DataLogicalOffset）〕[1]

て

定義タイプ〔キューの属性（DefinitionType）〕[1]

定数[1]

デッドレターキュー名〔キューマネジャの属性（DeadLetterQName）〕[1]

デフォルトバインディング〔キューの属性（DefBind）〕[1]

転送キュー名〔キューの属性（XmitQName）〕[1]

と

動的キュー名〔MQOD構造体（DynamicQName）〕[1]

登録アプリケーションタイプ〔MQDLH構造体（PutApplType）〕[1]

登録アプリケーションタイプ〔MQMD構造体（PutApplType）〕[1]

登録アプリケーション名〔MQDLH構造体（PutApplName）〕[1]

登録アプリケーション名〔MQMD構造体（PutApplName）〕[1]

登録オプション〔MQPMO構造体（Options）〕[1]

登録許可〔キューの属性（InhibitPut）〕[1]

登録時刻〔MQDLH構造体（PutTime）〕[1]

登録時刻〔MQMD構造体（PutTime）〕[1]

登録日付〔MQDLH構造体（PutDate）〕[1]

登録日付〔MQMD構造体（PutDate）〕[1]

登録メッセージレコード数または応答レコード数〔MQPMO構造体（RecsPresent）〕[1]

登録元データ〔MQMD構造体（ApplOriginData）〕[1]

登録元メッセージ記述子〔MQXQH構造体（MsgDesc）〕[1]

登録元メッセージ長〔MQMDE構造体（OriginalLength）〕[1]

登録元メッセージ長〔MQMD構造体（OriginalLength）〕[1]

トランザクション完了待ち最大メッセージ数〔キューマネジャの属性（MaxUncommittedMsgs）〕[1]

トランザクション有効性〔キューマネジャの属性（SyncPoint）〕[1]

トリガ間隔〔キューマネジャの属性（TriggerInterval）〕[1]

トリガ制御〔キューの属性（TriggerControl）〕[1]

トリガタイプ〔キューの属性（TriggerType）〕[1]

トリガデータ〔MQTM構造体（TriggerData）〕[1]

トリガデータ〔キューの属性（TriggerData）〕[1]

トリガのためのメッセージ登録数の下限値〔キューの属性（TriggerDepth）〕[1]

トリガのためのメッセージ優先度の下限値〔キューの属性（TriggerMsgPriority）〕[1]

取り出しオプション〔MQGMO構造体（Options）〕[1]

取り出し許可〔キューの属性（InhibitGet）〕[1]

取り出し時の共用性〔キューの属性（Shareability）〕[1]

に

入力オープン数〔キューの属性（OpenInputCount）〕[1]

は

配布リストのサポート〔キューの属性（DistLists）〕[1]

配布リストのサポート〔キューマネジャの属性（DistLists）〕[1]

ひ

引数構造体の数〔MQCFH構造体（ParameterCount）〕[1]

引数識別子〔MQCFIL構造体（Parameter）〕[1]

引数識別子〔MQCFIN構造体（Parameter）〕[1]

引数識別子〔MQCFSL構造体（Parameter）〕[1]

引数識別子〔MQCFST構造体（Parameter）〕[1]

引数の値〔MQCFIL構造体（Values）〕[1]

引数の値〔MQCFIN構造体（Value）〕[1]

引数の値の数〔MQCFIL構造体（Count）〕[1]

引数の値の数〔MQCFSL構造体（Count）〕[1]

日立コード変換を使用した場合の文字コードの対応[1]

ふ

フォーマット名〔MQDH構造体（Format）〕[1]

フォーマット名〔MQDLH構造体（Format）〕[1]

フォーマット名〔MQMDE構造体（Format）〕[1]

フォーマット名〔MQMD構造体（Format）〕[1]

フォーマット名〔MQRMH構造体（Format）〕[1]

物理メッセージ〔MQGMO構造体（Options）〕[1]

物理メッセージ〔MQPMO構造体（Options）〕[1]

浮動小数点のマシンコード形式[1]

フラグ〔MQDH構造体（Flags）〕[1]

フラグ〔MQMDE構造体（Flags）〕[1]

フラグ〔MQRMH構造体（Flags）〕[1]

プラットフォーム〔キューマネジャの属性（Platform）〕[1]

プロセス記述子〔プロセス定義の属性（ProcessDesc）〕[1]

プロセス定義の属性[1]

プロセス名〔MQTM構造体（ProcessName）〕[1]

プロセス名〔キューの属性（ProcessName）〕[1]

プロセス名〔プロセス定義の属性（ProcessName）〕[1]

へ

ベースキュー名〔キューの属性（BaseQName）〕[1]

ヘッダファイル〔C言語での実現例〕[1]

ほ

報告オプション〔MQMD構造体（Report）〕[1]

報告オプションとメッセージフラグ[1]

報告メッセージ返答コード〔MQMD構造体（Feedback）〕[1]

報告メッセージ返答コード〔MQPMR構造体（Feedback）〕[1]

ま

マシンアーキテクチャのマシンコード形式の要約[1]

マシンコード形式[1]

マシンコード形式〔MQDH構造体（Encoding）〕[1]

マシンコード形式〔MQDLH構造体（Encoding）〕[1]

マシンコード形式〔MQMDE構造体（Encoding）〕[1]

マシンコード形式〔MQMD構造体（Encoding）〕[1]

マシンコード形式〔MQRMH構造体（Encoding）〕[1]

マシンコード形式の作成と検証[1]

待ち合わせ最大時間〔MQGMO構造体（WaitInterval）〕[1]

め

命令識別子〔MQCFH構造体（Command）〕[1]

メッセージ永続性〔MQMD構造体（Persistence）〕[1]

メッセージグループ〔MQGMO構造体（Options）〕[1]

メッセージグループ〔MQPMO構造体（Options）〕[1]

メッセージグループフラグ〔MQGMO構造体（GroupStatus）〕[1]

メッセージシーケンス番号〔MQCFH構造体（MsgSeqNumber）〕[1]

メッセージシーケンス番号〔MQMDE構造体（MsgSeqNumber）〕[1]

メッセージシーケンス番号〔MQMD構造体（MsgSeqNumber）〕[1]

メッセージ識別子〔MQMD構造体（MsgId）〕[1]

メッセージ識別子〔MQPMR構造体（MsgId）〕[1]

メッセージタイプ〔MQMD構造体（MsgType）〕[1]

メッセージ通知理由〔MQDLH構造体（Reason）〕[1]

メッセージ登録数〔キューの属性（CurrentQDepth）〕[1]

メッセージ配布順序〔キューの属性（MsgDeliverySequence）〕[1]

メッセージフラグ〔MQMDE構造体（MsgFlags）〕[1]

メッセージフラグ〔MQMD構造体（MsgFlags）〕[1]

メッセージ保持時間〔MQMD構造体（Expiry）〕[1]

メッセージ優先度〔MQMD構造体（Priority）〕[1]

も

文字セット識別子[1]

文字セット識別子〔MQCFSL構造体（CodedCharSetId）〕[1]

文字セット識別子〔MQCFST構造体（CodedCharSetId）〕[1]

文字セット識別子〔MQDH構造体（CodedCharSetId）〕[1]

文字セット識別子〔MQDLH構造体（CodedCharSetId）〕[1]

文字セット識別子〔MQMDE構造体（CodedCharSetId）〕[1]

文字セット識別子〔MQMD構造体（CodedCharSetId）〕[1]

文字セット識別子〔MQRMH構造体（CodedCharSetId）〕[1]

文字セット識別子〔キューマネジャの属性（CodedCharSetId）〕[1]

文字列長〔MQCFSL構造体（StringLength）〕[1]

文字列長〔MQCFST構造体（StringLength）〕[1]

文字列の値〔MQCFSL構造体（Strings）〕[1]

文字列の値〔MQCFST構造体（String）〕[1]

ゆ

ユーザ識別子〔MQMD構造体（UserIdentifier）〕[1]

ユーザデータ〔MQTM構造体（UserData）〕[1]

ユーザデータ〔プロセス定義の属性（UserData）〕[1]

り

リモートキューの数〔MQOD構造体（UnknownDestCount）〕[1]

リモートキューの数〔MQPMO構造体（UnknownDestCount）〕[1]

リモートキューマネジャ名〔MQXQH構造体（RemoteQMgrName）〕[1]

リモートキューマネジャ名〔キューの属性（RemoteQMgrName）〕[1]

リモートキュー名〔MQXQH構造体（RemoteQName）〕[1]

リモートキュー名〔キューの属性（RemoteQName）〕[1]

理由コード[1]

理由コード〔MQCFH構造体（Reason）〕[1]

理由コード〔MQRR構造体（Reason）〕[1]

リンケージ方法〔COBOL言語での実現例〕[1]

リンケージ方法〔C言語での実現例〕[1]

ろ

ローカルキューの数〔MQOD構造体（KnownDestCount）〕[1]

ローカルキューの数〔MQPMO構造体（KnownDestCount）〕[1]

ロールバック回数〔MQMD構造体（BackoutCount）〕[1]

ロールバック回数記録方法〔キューの属性（HardenGetBackout）〕[1]

論理メッセージ〔MQGMO構造体（Options）〕[1]

論理メッセージ〔MQPMO構造体（Options）〕[1]

論理メッセージフラグ〔MQGMO構造体（SegmentStatus）〕[1]