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フィールドに指定します。
使用方法
アプリケーションがメッセージを配布リストに登録する場合,その幾つかまたはすべてのあて先がリモートであるとき,キューマネジャはアプリケーションデータの前にMQXQH構造体とMQDH構造体を付けます。その後,対応する転送キューにそのメッセージを登録します。そのため,転送キューにあるメッセージのデータは次の順序となります。
あて先によっては,そのようなメッセージが一つ以上,キューマネジャによって生成されて,異なる転送キューに登録されます。この場合,それらのメッセージのMQDH構造体は,アプリケーションがオープンした配布リストによって指定したあて先の中で異なる組み合わせを示します。
配布リストメッセージを直接転送キューに登録するアプリケーションは,上記の順序や,そのMQDH構造体が正しいことを保証しなければなりません。MQDH構造体が誤っている場合,キューマネジャは,MQPUT命令またはMQPUT1命令をMQRC_DH_ERRORの理由コードで失敗させることがあります。
メッセージは,キューが配布リストメッセージをサポートすると定義してある場合だけ,配布リスト形式でキューに登録されます。配布リストをサポートしていないキューに,アプリケーションが直接配布リストメッセージを登録した場合,キューマネジャは配布リストメッセージを個々のメッセージに分解し,キューに登録します。
フィールド
構造体を構成するフィールドについて,アルファベット順に説明します。
● CodedCharSetId(MQLONG型) 文字セット識別子
MQORおよびMQPMR構造体の配列に続くデータの文字セット識別子です。
MQORおよびMQPMR構造体の配列に続くデータの文字セット識別子を指定します。MQDH構造体自身の文字データには適用されません。
MQPUTまたはMQPUT1命令では,アプリケーションはデータに合った値をこのフィールドに設定する必要があります。
このフィールドの初期値はMQCCSI_UNDEFINEDです。
● Encoding(MQLONG型) マシンコード形式
MQORおよびMQPMR構造体の配列に続くデータのマシンコード形式です。
MQORおよびMQPMR構造体の配列に続くデータのマシンコード形式を指定します。MQDH構造体自身の数値データには適用されません。
MQPUTまたはMQPUT1命令では,アプリケーションはデータに合った値をこのフィールドに設定する必要があります。
このフィールドの初期値は0です。
● Flags(MQLONG型) フラグ
次に示すフラグが指定できます。
フラグが必要ない場合は,次の指定ができます。
このフィールドの初期値は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または次に示すフラグが指定できます。
MQPMR構造体フィールドが存在しない場合,次のフラグが指定できます。
このフィールドの初期値は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です。
● StrucLength(MQLONG型) MQDH構造体とそれに続くMQOR構造体およびMQPMR構造体を足した長さ
MQDH構造体長とそれに続くレコードを足した長さです。
これは,MQDH構造体の先頭から,MQOR構造体,またはMQPMR構造体レコードの配列に続くメッセージデータの先頭までのバイト数です。データは次の順序で現れます。
MQOR構造体,MQPMR構造体レコードの配列は,MQDH構造体に含まれるオフセット値によって位置づけられます。それらのオフセットが,MQDH構造体およびレコードの配列とメッセージデータの間に使用されないバイトを生じさせた場合,使用されないバイト数もStrucLengthフィールドの値に含まれなければなりません。ただし,使用されないバイトの内容を,キューマネジャは保存しません。なお,MQPMR構造体のレコードの配列は,MQOR構造体にあるレコードの配列の前にあるとき有効です。
このフィールドの初期値は0です。
● Version(MQLONG型) 構造体バージョン番号
次の値を取ります。
次の値は,現在のバージョンのバージョン番号を示します。
このフィールドの初期値はMQDH_VERSION_1です。