3.4.4 メッセージ形式の設定例

TP1/Message Queueが使用するメッセージの文字セット識別子およびマシンコード形式は,先頭に付加されるMQ構造体によって示されます。ここでは,アプリケーションがメッセージを転送キューに登録し,相手システムに送信されるまでのメッセージ形式の設定例について説明します。

メッセージ形式の設定例について,次の図に示します。

図3-2 メッセージ形式の設定例

[図データ]

図中の番号について説明します。

  1. アプリケーションがMQPUT命令またはMQPUT1命令でメッセージを登録します。
    このとき,MQMD構造体のCodedCharSetIdおよびEncodingフィールドの指定を省略したとします。転送キュー上のメッセージにあるMQXQH構造体は,次に示す形式で作成されます。
    • 文字セット識別子
      キューマネジャの文字セット識別子(MQAサービス定義のmqa_local_ccsidオペランド指定値)
    • マシンコード形式
      キューマネジャが動作するコンピュータのマシンコード形式
    MQXQH構造体に格納されているMQMD構造体のフィールドは,次に示す値が設定されます。
    • CodedCharSetIdフィールド
      MQCCSI_Q_MGR(0L,X'00000000')が設定されます。
    • Encodingフィールド
      MQENC_NATIVE(計算機固有のマシンコード形式を表す値)が設定されます。
    アプリケーションがMQMD構造体のVersionフィールドにMQMD_VERSION_2を指定した場合には,MQMDE構造体がMQXQH構造体の後ろに付加されます。付加される条件については,マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。
    MQXQH構造体に付加されるMQMDE構造体のフィールドは,次に示す値が設定されます。
    • CodedCharSetIdフィールド
      MQCCSI_Q_MGR(0L,X'00000000')が設定されます。
    • Encodingフィールド
      MQENC_NATIVE(計算機固有のマシンコード形式を表す値)が設定されます。
  2. MQ構造体が変換されます。
    メッセージは転送キューから取り出され相手システムに送信されます。チャネルの開始時に自システム側でコード・ページ変換が必要になった場合,MQ構造体(図3-2ではMQXQHおよびMQMDE構造体)はコード・ページ変換判定結果の文字セット識別子およびマシンコード形式で作成されます。
  3. アプリケーションデータが変換されます。
    文字コード変換後の文字セット識別子(mqtalccha定義コマンドの-d cnvccsidオペランド指定値)が送信側チャネルに指定されている場合,アプリケーションデータは該当する文字セットに変換されます。このとき,MQXQH構造体に格納されているMQMD構造体のCodedCharSetIdフィールドは変換後の文字セット識別子に変更されます。
    MQMDE構造体があるときは,MQMD構造体ではなくMQMDE構造体のCodedCharSetIdフィールドが,変換後の文字セット識別子に変更されます。

図中の番号とメッセージの変更内容について,次の表に示します。

表3-1 メッセージの変更内容

図中の番号条件メッセージの変更内容
MQXQH構造体の作成時に使用する形式MQXQH構造体内のMQMD構造体のフィールドMQMDE構造体のフィールドアプリケーションデータ
文字コード変換指定※1MQMDE構造体の有無文字セット識別子マシンコード形式Coded
CharSetId
Enco
ding
Coded
CharSetId
Enco
ding
文字セット識別子
1.なしキューマネジャの文字セット識別子コンピュータのマシンコード形式MQCCSI_
Q_MGR
MQENC_
NATIVE
登録時の文字セット識別子
1.ありキューマネジャの文字セット識別子コンピュータのマシンコード形式MQCCSI_
Q_MGR
MQENC_
NATIVE
MQCCSI_
Q_MGR
MQENC
_NATIVE
登録時の文字セット識別子
2.判定結果※2判定結果※2判定結果※2判定結果※2
3.なしなし
3.なしあり
3.ありなし変換後の文字セット識別子変換後の文字セット識別子
3.ありあり変換後の文字セット識別子変換後の文字セット識別子
(凡例)
-:該当しません。
△:以前の状態を引き継ぎます。
注※1
mqtalccha定義コマンドの-d cnvccsidオペランドの指定です。
注※2
チャネルの開始時に自システム側でコード・ページ変換が必要になった場合,コード・ページ変換の判定結果で作成されます。