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フィールド」を参照してください。
これは入出力用のフィールドです。