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

MQPMO_CURRENT_VERSION

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

現在のバージョンのメッセージ登録オプションの構造体バージョン番号 これは常に入力用のフィールドです。

このフィールドの初期値は 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 外にあるバイトは,

データ変換後に廃棄されるか,未定義の値になります。長大データは,次に示すすべての条件が満たされ る場合に変換されます。

• データが変換されるときに長大データがメッセージに存在する場合

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