• 検索結果がありません。

MQMD_CURRENT_VERSION

ドキュメント内 TP1/Message Queue プログラム作成リファレンス (ページ 124-128)

現在のバージョンのメッセージ記述子の構造体バージョン番号 現在のバージョンのバージョン番号を指定します。

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

このフィールドの初期値は 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)が正しく設定されていなかった場合。詳細については,WebSphere MQ のマニュアルを参照してください。

転送キューにあるメッセージの MQMDE 構造体

転送キューにあるメッセージには,MQXQH 構造体が前に付いています。その MQXQH 構造体にはバー ジョン 1 の MQMD 構造体が含まれています。MQMDE 構造体は一つ以上のフィールドで初期値以外の 値を持つときだけ,MQXQH 構造体とアプリケーションデータの間に存在します。

ほかの MQ ヘッダ構造体が,MQXQH 構造体とアプリケーションデータの間に現れる場合もあります。

例えば,MQDH 構造体,または MQDLH 構造体が存在し,メッセージがセグメントではない場合,現れ る順序は次のとおりです。

1. MQXQH 構造体(バージョン 1 の MQMD 構造体を含む)

2. MQDH 構造体または MQDLH 構造体 3. MQMDE 構造体

4. アプリケーションデータ

フィールド

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

● 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

ドキュメント内 TP1/Message Queue プログラム作成リファレンス (ページ 124-128)