Db2 MQ CCSID 変換
メッセージが送信されると、Db2® によって、送信されたメッセージはジョブの CCSID に変換されるかもしれない。メッセージが読み込まれたり受信されたりすると、Websphere MQ によって指定された CCSID に変換されるかもしれない。
MQSEND 関数の msg-data パラメーターは、ジョブ CCSID を使用すると定義されています。 ストリングが msg-data に渡される場合、ジョブ CCSID に変換されます。 例えば、CCSID が 1200 のストリングが msg-data に渡される場合、 ジョブ CCSID に変換された後にメッセージ・データが Websphere MQ に渡されます。 ストリングがビット・データとして定義されているか、またはストリングの CCSID がジョブ CCSID である場合、変換は行われません。
Websphere MQ は、MQSEND が実行されるときにはメッセージ・データの CCSID 変換を行いません。 Db2 から渡されるメッセージ・データは、メッセージ・データの解釈方法をメッセージの受信側に通知する CCSID とともに、変更されずに送信されます。 送信される CCSID は、MQSEND 関数で使用されるサービスの CODEDCHARSETID に指定される値に依存します。 CODEDCHARSETID のデフォルトは -3 です。この場合、渡される CCSID がデフォルトのジョブ CCSID であることを示します。 CODEDCHARSETID に -3 以外の値が使用されている場合、呼び出し元は、MQSEND に渡されたメッセージ・データが Db2 によってジョブ CCSID に変換されないこと、および文字列がその指定された CCSID でエンコードされていることを確認しなければならない。
Db2 MQ スカラー関数または表関数によってメッセージの読み取りまたは受信が行われると、 msg-data 戻りパラメーター (および Db2 MQ 表関数の MSG 結果列) もジョブ・デフォルト CCSID に定義されます。 Db2 は変換を行わず、必要な変換を実行するために Websphere MQ に依存します。 Websphere がメッセージ・データを変換するかどうかは、指定したポリシーで RCV_CONVERT 値を「N」に設定することで制御できます。
指定されたサービスの CODEDCHARSETID の値が -3 の場合、Db2 は読み書きされるメッセージをジョブ CCSID に変換するよう Websphere MQ に指示する。 CODEDCHARSETID に -3 以外の値が使用されている場合、Db2 は Websphere MQ に対して、読み書きされるメッセージをその CCSID に変換するように指示する。 msg-dataリターン・パラメータとMSG結果カラムはDb2によってジョブ・デフォルトのCCSIDで定義されているため、メッセージの読み取りや受信に使われるサービスでCODEDCHARSETIDに-3以外のものを指定することは推奨されません。
メッセージを読み取るか受信するときに、切り捨てが生じることがあります。 指定したポリシーで RCV_ACCEPT_TRUNC_MSG の値が「Y」の場合、メッセージは警告なしで切り捨てられることがあります。 RCV_ACCEPT_TRUNC_MSG の値が「N」の場合、メッセージが長すぎると、関数はエラーを出して終了します。