WebSphere Message Service Clients for C/C++ and .NET, Version 1.2 オペレーティング・システム: Linux, Windows

コード化文字セット ID (CCSID)

C または C++ では、XMS との間でオブジェクトの受け渡しを行う一連の文字データは、変換が必要な場合があります。 オブジェクトの XMSC_CLIENT_CCSID プロパティーは、オブジェクトが使用しているコード・ページを XMS に通知する機能を持っています。

C または C++ アプリケーションのオブジェクトが文字データのストリングを API を介して XMS に渡すと、 XMS は、必要に応じて、 オブジェクトが使用するコード・ページから XMS がデータに対して設定する必要があるコード・ページへストリング内の文字データを変換します。 同様に、オブジェクトが API を介して文字データのストリングを XMS から受け取ると、XMS は、必要に応じて、ストリング内の文字データが現在使用しているコード・ページから、オブジェクトが使用しているコード・ページに文字データを変換します。 このため、ストリング内の文字データを変換するには、オブジェクトが使用しているコード・ページを XMS が認識する必要があります。

ConnectionFactory、Connection、Session、MessageProducer、MessageConsumer の各オブジェクトの XMSC_CLIENT_CCSID プロパティーは、オブジェクトが使用するコード・ページを指定するプロパティーです。 XMSC_CLIENT_CCSID プロパティーの値は、コード・ページを識別するコード化文字セット ID (CCSID) です。 XMS は、これらのうちいずれかのオブジェクトをアプリケーションが作成するとプロパティーを設定しますが、アプリケーションは後でその値を変更できます。

アプリケーションが始動すると、XMS は、アプリケーションが実行されている環境から、アプリケーションに合わせて適切な CCSID を導出します。 この CCSID のことをプロセス CCSID といいます。 アプリケーションは、xmsSetClientCCSID() を呼び出すことにより、プロセス CCSID を随時変更できます。 これはいずれのクラスにも属さない C 関数ですが、C++ アプリケーションはこの関数も同様に使用できます。

アプリケーションが接続ファクトリーを作成すると、XMS はオブジェクトの XMSC_CLIENT_CCSID プロパティーを設定します。接続ファクトリーが、管理対象オブジェクトのリポジトリーから取り出したオブジェクト定義を基に作成され、このオブジェクト定義によって XMSC_CLIENT_CCSID プロパティーの値が指定される場合、 XMS は、この値を使用してこのプロパティーを設定します。 それ以外の場合、XMS はこのプロパティーを特殊値 XMSC_CCSID_PROCESS に設定します。これは、接続ファクトリーが使用しているコード・ページは、プロセス CCSID で指定されたコード・ページであるという意味です。

アプリケーションが接続ファクトリーを使用して接続経路を作成すると、XMS は、ConnectionFactory オブジェクトの XMSC_CLIENT_CCSID プロパティーを、新しく作成した Connection オブジェクトにコピーします。 XMS がプロパティーをコピーするのは、アプリケーションが接続経路を作成するときに限られます。 アプリケーションが ConnectionFactory オブジェクトの XMSC_CLIENT_CCSID プロパティーの値を後で変更した場合、XMS は、この変更内容を Connection オブジェクトの XMSC_CLIENT_CCSID プロパティーには波及させません。

同様に、アプリケーションが接続経路を使用してセッションを作成すると、XMS は、Connection オブジェクトの XMSC_CLIENT_CCSID プロパティーを、新しく作成した Session オブジェクトにコピーします。 さらに、アプリケーションがセッションを使用してメッセージ・プロデューサーまたはメッセージ・コンシューマーを作成すると、XMS は、Session オブジェクトの XMSC_CLIENT_CCSID プロパティーを、新しく作成した MessageProducer オブジェクトまたは MessageConsumer オブジェクトにコピーします。 いずれの場合も、XMS がプロパティーをコピーするのは、アプリケーションがオブジェクトを作成するときだけです。

アプリケーションは、PropertyContext クラスの Set Integer Property メソッドを呼び出すことにより、オブジェクトの XMSC_CLIENT_CCSID プロパティーの値を随時変更できます。 アプリケーションは、このプロパティーを以下のいずれかの値に設定できます。
コード化文字セット ID (CCSID)
オブジェクトは、指定した CCSID で指定されたコード・ページを使用します。アプリケーションが無効な CCSID を指定するか、プラットフォームがコード・ページ変換をサポートしていない CCSID を指定すると、呼び出しは失敗し、XMS はエラー・コード XMS_E_ILLEGAL_PROPERTY_VALUE を戻します。
XMSC_CCSID_UTF8
オブジェクトは Unicode データの UTF-8 表示を使用します。
XMSC_CCSID_UTF16
オブジェクトは Unicode データの UTF-16 表示を使用します。
XMSC_CCSID_UTF32
オブジェクトは Unicode データの UTF-32 表示を使用します。
XMSC_CCSID_PROCESS
オブジェクトは、プロセス CCSID で指定されたコード・ページを使用します。XMS は、オブジェクトが使用しているコード・ページを確認する必要がある場合、そのつどプロセス CCSID を照会します。 アプリケーションが xmsSetClientCCSID() を呼び出すことによってプロセス CCSID を変更すると、XMS は、オブジェクトが使用しているコード・ページを確認する必要性が次に発生したときに、この変更内容を検出します。

これはプロパティーの特殊値であり、実際の CCSID ではありません。

XMSC_CCSID_HOST
オブジェクトは、アプリケーションが実行されている環境から導出された CCSID で指定されたコード・ページを使用します。 この CCSID は、アプリケーションが xmsSetClientCCSID() を呼び出してプロセス CCSID を変更していない限り、プロセス CCSID と同じです。

これはプロパティーの特殊値であり、実際の CCSID ではありません。

XMSC_CCSID_NO_CONVERSION
オブジェクトが受け取った一連の文字データは変換されません。

これはプロパティーの特殊値であり、実際の CCSID ではありません。

アプリケーションが XMS との間で受け渡しを行う一連の文字データにはメッセージ内のストリングがありますが、必ずしもそれだけに限定されるわけではありません。 変換が必要なストリングは、メッセージ内の以下のいずれの部分にも存在する可能性があります。

XMS が出力メッセージ内のストリングを変換する必要がある場合、XMS は、そのメッセージを作成したセッションに関連したコード・ページを使用します。XMS が着信メッセージ内のストリングを変換する必要がある場合、XMS は、そのメッセージを受信したメッセージ・コンシューマーに関連したコード・ページを使用します。XMS は、関連する Session オブジェクトまたは MessageConsumer オブジェクトの XMSC_CLIENT_CCSID プロパティーの値を基にコード・ページを判別します。

メッセージ内のストリングの変換は、変換が必要なデータの量や変換頻度に応じてパフォーマンスに影響を与える場合があります。メッセージのスループットを最大化するようアプリケーションを設計する場合は、必要とするデータ変換の量を低減する方法を検討することが必要な場合があります。 以下に、この実行方法の例を 2 つ示します。
注: XMSC_CLIENT_CCSID プロパティーは、.NET アプリケーションには必要ありません。 .NET では、すべてのストリングがネイティブの .NET ストリング・クラスを使用して渡されます。 このクラスのエンコード方式は固定であるため、クラスを解釈するためにこれ以上の情報は必要ありません。

Concept topic

ご利用条件 | フィードバック (英語のみ)

Timestamp icon最終更新: 8 Jun 2006
(C) Copyright IBM Corporation 2005, 2006. All Rights Reserved.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)