文字コード化スキーム

それぞれの文字ストリングは、さらに以下の 4 つのタイプのいずれかとして定義されます。

ビット・データ
コード化文字セットに関連付けられていないデータ (したがって、変換が行われることのないデータ)。 ビット・データの CCSID は 65535 です。

注: ビット・データは、文字データの形式です。ビット・データへの割り当ての場合、埋め込み文字はブランクです。2 進データへの割り当ての場合、埋め込み文字は X'00' です。ビット・データには、文字の代わりに、2 進データ・タイプの使用をお勧めします。

SBCS データ
すべての文字が単一バイトで表現されているデータ。SBCS データ文字ストリングはそれぞれ、関連する CCSID を持っています。 SBCS ストリングは、演算での使用に先立って、必要に応じて異なる CCSID を持つ文字ストリングに変換されます。
MIXED (混合) データ
1 バイト文字セット (SBCS) の文字と 2 バイト文字セット (DBCS) の文字を混用することができるデータ。混合ストリングはそれぞれ、関連の CCSID を持っています。 混合データ文字ストリングは、演算に先立って、必要に応じて異なる CCSID を持つ文字ストリングに変換されます。混合データに DBCS 文字が含まれている場合は、SBCS データに変換することはできません。
Unicode データ
1 バイト以上で表現される文字を含んだデータ。 各 Unicode 文字ストリングは、UTF-8 でコード化されています。 UTF-8 の CCSID は 1208 です。

データベース・マネージャーは、2 バイト文字のサブクラスを認識しません。また、個々の 2 バイト・コードに特定の意味を割り当てることもありません。ただし、混合データの中では、次に示す 2 つの 1 バイト EBCDIC コードに特殊な意味が割り当てられています。

  • X'0E' (「シフトアウト」文字)。一連の 2 バイト・コードの始めを示すのに使用されます。
  • X'0F' (「シフトイン」文字)。一連の 2 バイト・コードの終わりを示すのに使用されます。

以下の条件に該当する場合に、データベース・マネージャーは、混合データ文字ストリングの 2 バイト文字を認識します。

  • ストリング中の 2 バイト文字は、シフトアウト文字とシフトイン文字の対で囲まれていなければなりません。

    シフトアウト文字とシフトイン文字の対は、ストリングを左から右に読み取ったときに検出されます。X'0E' というコードは、その後に X'0F' が見つかった場合は、シフトアウト文字として認識されますが、見つからない場合は、そのコードは無効です。X'0E' の後で 2 バイト境界上で見つかった最初の X'0F' を、対のシフトイン文字として扱います。2 バイト境界上にない X'0F' は、認識されません。

    シフトアウト文字とシフトイン文字の間にあるバイトの数は偶数でなければなりません。バイトの各対 (2 バイト) が、それぞれ 1 つの 2 バイト文字であると見なされます。 ストリング中には、シフトアウト文字とシフトイン文字の対が複数存在しても構いません。

混合データ文字ストリングの長さとは、その合計バイト数です。2 バイト文字については、それぞれ 2 バイトとして数え、シフトアウト文字またはシフトイン文字については、それぞれ 1 バイトとして数えます。

ジョブの CCSID が、DBCS が使用可能であることを示しており、しかも FOR BIT DATA、FOR SBCS DATA、または SBCS CCSID が指定されていない場合は、CREATE TABLE は、文字の列を DBCS 混用フィールドとして作成します。このような列は、SQL ユーザーからは文字フィールドのように見えますが、システム・データベースのサポートは、DBCS 混用フィールドとして扱います。 DBCS 混用フィールドの定義については、「データベース・プログラミング」トピック集 を参照してください。