注意:
UES サポートを使用するには、バージョン 7 以降の Adabas SVC またはルーターを使用する必要があります。
このドキュメントでは、次のトピックについて説明します。
ユニバーサルエンコーディングサポート(UES)は Adabas が次の処理を行なうことを可能にするデータベースオプションです。
データ変換の実行
ワイド文字エンコードの処理
照合順序などの国際化対応タスクの基礎の設定
データ変換は、異なるシステムとの通信時に必要です。例えば、英数字データを異なるコードページに変換したり、異なるマシンアーキテクチャに合わせて数値データを変換したりする必要があります(「複数プラットフォームのサポート」も参照)。
アジア言語環境ではワイド文字のエンコードが使用されます。 多数の各種文字の要求のために、非 1 バイト文字セットが定義されました。 また、Unicode(汎用文字セット)がより頻繁に使用されます(「ワイド文字のエンコード」も参照)。
頻繁にリストされる国際化対応タスクは、エンコードによって定義されるように、バイナリ順ではなく、言語固有の順番でデータを検索し、ソートすることです(「ユーザー出口」内の「照合ディスクリプタ出口」も参照)。
たいていの場合、アジアのテキスト文字は、単一バイトを使用してエンコードすることはできません。 例えば、10,000 文字以上の日本語セットは、1 文字あたりに 2 バイト以上を使用してエンコードされます。 必要なエンコードにより、これらは 2 バイト文字セット(DBCS)またはマルチバイト文字セット(MBCS)と呼ばれ、大部分の西洋言語の特徴である 1 バイト文字セット(SBCS)と相反します。
以前のバージョンの Adabas は、DBCS にエンコードしたデータを英数字フィールドに保存していました。 この解決方法には、次の問題点がありました。
英数字フィールドのデフォルトの空白が、2 バイトまたはマルチバイト文字フィールドに必要な空白と異なる可能性があります。
長さで上書きするフィールドの切り詰めが、無効または変更された文字列になる場合があります(文字列が、文字境界ではなくバイト境界で切り捨てられます)。
クライアントおよびサーバーが、異なるエンコードを 2 バイトまたはマルチバイト文字セットに使用する場合、クライアント/サーバーアプリケーションの実装が困難です。
Adabas バージョン 7 は、英数字フィールドの DBCS エンコードデータの保存をサポートしていますが、適切に定義されたエンコードおよび文字セットでデータを保存するために、ワイド文字(W)フィールドフォーマットを導入しています。
ワイド文字フォーマットのデフォルトエンコードは、ストレージおよびユーザーに対して Unicode です。 このデフォルトはユーザーおよびストレージレベルで、意図された使用方法に合わせたエンコードに変更することができます。
次の図では、日本語かな(最初の 2 つ)および漢字(次の 2 つ)文字は、メインフレームモーダル(ミックス)および非モーダル(ピュア)にエンコードされます。
EBCDIC ベースのマシンに使用する DBCS
ASCII ベースのマシンに使用する JIS
Unicode では、固定 2 バイトのエンコードは他のエンコードよりも一般的であり、Adabas のデフォルトエンコードとして使用されます。
モーダルエンコードは、1 バイトおよび 2 バイト文字エンコードの間を前後にシフトします。 混在する DBCS 文字列は、常に 1 バイトモードで開始および終了します。
2 バイト文字のみのフィールド長は、偶数バイトでなければなりません。
EBCDIC エンコードでは、パディングまたは空白文字は、X'40' または X'4040' です。 日立マシンでは、ワイドスペースは X'A1A1'、1 バイトスペースは X'40' です。 Adabas では、モード切換えなしで、1 バイトスペースを 2 バイトモードで使用することができます。
Adabas は、次のワイド文字データをサポートします。
拡張英数字フォーマットフィールド
ワイド文字フォーマットフィールド
既存のデータベースまたはファイルのために、エンコードは ADADBS ユーティリティを使用して英数字フィールドまたはワイド文字フィールドに割り当てられます(アンロード/リロードなし)。 フィールドレベルのオプション NV(変換されていないフィールドをコール元に、またはコール元から渡す)が使用可能です。
Adabas は、データベースおよびファイルレベルの両方にエンコードキーを定義することで、ワイド文字データをサポートするために英数字フィールドを拡張します。ファイルレベルのエンコードは、データベースエンコードよりも優先します。 エンコードは、データを保存するフォーマットを指定します。 これは、ローカルユーザーと交換するデータのデフォルトフォーマットとしても使用されます。
エンコードは、EBCDIC と互換性がなければなりません。つまり、スペース文字は X'40' でなければなりません。 内部的な処理の理由により、次のエンコードファミリの中から 1 つだけがファイルにサポートされます。
EBCDIC(1 バイト文字セット)
混在ホスト DBCS
DBCS オンリーオプションを持つホスト DBCS
拡張英数字フィールドを使用する利点は次のとおりです。
DBCS データを含む既存データベースを迅速にサポートします。
Natural のようなアプリケーションが、変更なしで実行を継続します。
同一のエンコード/アーキテクチャからのコールに、Adabas ニュークリアスのロジック変更はありません(英数字フィールドが内部的なコーディングを定義しないため)。
短所は、DBCS がユニバーサルエンコードではなく、Unicode と異なり世界中の言語が使用するすべての文字をサポートしないことです。
アプリケーションに対して、すべての英数字フィールドが同一のエンコードを持ちます。 同一セッションの異なるフィールドに異なるエンコードを使用することはできません。
純粋な 1 バイト文字エンコードから変換するとき、可変フィールドのフィールド長は、変換レコードのシフトを必要とすることがあります。
Adabas は、フィールドにワイド文字(W)フォーマットを定義します。 W フォーマットフィールドは、英数字(A)フォーマットフィールドに類似しており、エンコードキーはデータベースおよびファイルレベルの両方に定義されます。ファイルエンコードは、データベースエンコードよりも優先します。 A フィールドエンコードと異なる点は次のとおりです。
エンコードが指定されない場合、デフォルトの Unicode エンコードが使用されます。
内部的なエンコードにより、保存データのフォーマットが決まります。
ユーザーエンコードにより、ユーザーに提示されるデータのデフォルトフォーマットが決まります。
A ディスクリプタは、内部的なエンコードで保存(およびソート)されます。
ワイド文字(W)フィールドを使用する利点は次のとおりです。
ローカルエンコードの文字セットは、ユーザーおよび特殊エンコードの全文字セットのスーパーセットになることができるので、問題の往復を避けます。
内部エンコードは、ECS によってサポートされる場合、UTF-8 の使用を認めるので、スペースが節約されます。
ネイティブ Unicode(ユーザーエンコード)、標準 Java テキストエンコードをダイレクトに保存および取り出すことができます。
不利な点は次のとおりです。
Natural およびその他の商品は、新しいフォーマットをすぐにはサポートしません。
W フォーマットフィールドのサポートには、現在制限があります(次のセクションにリスト)。いくつかは、将来の Adabas リリースで解決される予定です。
アプリケーションに対して、すべてのワイド文字(W)フィールドは同一のエンコードを持ちます。 同一セッションの異なるフィールドに異なるエンコードを使用することはできません。
W フィールドは、フォネティックディスクリプタまたはハイパーディスクリプタの親フィールドにすることはできません。
数字(U、P、B、F)から W フォーマットへのフォーマット変換は不可能です。
W フィールドは、カップリングフィールド(物理的またはソフト)の一部にすることはできません。
W フィールドは、フォーマット選択基準(条件フォーマット)の一部になることはできません。 この制限は、主に基準入力(フォーマットバッファ、サーチバッファ、およびユーティリティ)の 1 バイト文字エンコードに原因があります。
W フィールドは、セキュリティバイバリュー基準の一部にすることはできません。
W フィールドを編集マスク付きで使用することはできません。
フォーマットバッファのリテラルは、変換不可能な 1 バイト文字列として処理されます。
混在 DBCS および DBCS オンリーデータを使用する既存のアプリケーションから、円滑に変換できるように、特殊フォーマット変換規則が定義されました。
1 バイトおよび 2 バイト文字のスーパーセットを構成するモーダル DBCS エンコードは、英数字フィールドでは混在 DBCS エンコードとして、ワイド文字フィールドでは DBCS オンリーエンコードとして扱われます。
ワイド文字 DBCS オンリーから、ユーザーの英数字混在 DBCS エンコードに変換するとき、エンコードの違いは無視されます。
例えば、英数字フォーマットおよびワイドフォーマットの両方のユーザーエンコードが DBCS として定義され、FDT では、フィールド AA は英数字として定義され、フィールド WW はワイドとして定義されている場合があります。
フォーマットバッファ | ユーザーバッファの値 |
---|---|
AA[,A] | 混合 DBCS |
AA,W | DBCS オンリー |
WW,A | DBCS オンリー |
WW[,W] | DBCS オンリー |