DB2 MQ の CCSID 変換

メッセージが送信されるとき、送信されるメッセージが DB2® によってジョブ CCSID に変換されることがあります。 メッセージが読み取られるか受信されるとき、指定された CCSID に Websphere MQ によって変換されることがあります。

MQSEND 関数の msg-data パラメーターは、ジョブ CCSID を使用すると定義されています。 ストリングが msg-data に渡される場合、ジョブ CCSID に変換されます。 例えば、CCSID が 1200 のストリングが msg-data に渡される場合、 ジョブ CCSID に変換された後にメッセージ・データが Websphere MQ に渡されます。 ストリングがビット・データとして定義されているか、またはストリングの CCSID がジョブ CCSID である場合、変換は行われません。

Websphere MQ は、MQSEND が実行されるときにはメッセージ・データの CCSID 変換を行いません。 DB2 から渡されるメッセージ・データは、変更されずに CCSID を付けて送信されます。 この CCSID を使って、メッセージの受信側にメッセージ・データの解釈方法を知らせます。 送信される CCSID は、MQSEND 関数で使用されるサービスの CODEDCHARSETID に指定される値に依存します。 CODEDCHARSETID のデフォルトは -3 です。この場合、渡される CCSID がデフォルトのジョブ CCSID であることを示します。 -3 以外の値が CODEDCHARSETID に使用されている場合、呼び出し側は、 MQSEND に渡されるメッセージ・データが DB2 によってジョブ CCSID に変換されないこと、 およびその指定された CCSID でストリングがエンコードされることを確認する必要があります。

メッセージが DB2 MQ スカラー関数または表関数で読み取られるか受信されるとき、msg-data 戻りパラメーター (および DB2 MQ 表関数の MSG 結果列) もデフォルトのジョブ CCSID を使用するように定義されます。 DB2 は変換を行わず、必要な変換の実行はすべて Websphere MQ に依存します。 Websphere がメッセージ・データを変換するかどうかは、指定したポリシーで RCV_CONVERT 値を「N」に設定することで制御できます。

指定のサービスで CODEDCHARSETID の値が -3 の場合、DB2 は、 読み取るか受信するメッセージを Websphere MQ がジョブ CCSID に変換するように指示します。 -3 以外の値が CODEDCHARSETID に使用されている場合、DB2 は、 読み取るか受信するメッセージを Websphere MQ がその CCSID に変換するように指示します。 msg-data 戻りパラメーターおよび MSG 結果列ではデフォルトのジョブ CCSID を使用するように DB2 で定義されているため、 メッセージの読み取りまたは受信に使用されるサービスでは、CODEDCHARSETID に -3 以外の値を指定することは勧められていません。

メッセージを読み取るか受信するときに、切り捨てが生じることがあります。 指定したポリシーで RCV_ACCEPT_TRUNC_MSG の値が「Y」の場合、メッセージは警告なしで切り捨てられることがあります。 RCV_ACCEPT_TRUNC_MSG の値が「N」の場合、メッセージが長すぎると、関数はエラーを出して終了します。