Pro*COBOLプリコンパイラでは、次の機能により、マルチバイトのグローバリゼーション・サポート・キャラクタ・セットのサポートが拡張されています。
プリコンパイラによる埋込みSQL文中のマルチバイト・キャラクタ文字列の認識。
ANSI標準COBOLのPIC Nデータ型宣言句で、ホスト文字変数を2バイト文字の文字列として解釈するようにプリコンパイラに指示します。
Oracleでは、プリコンパイラのランタイム・ライブラリSQLLIBにより、マルチバイト文字列がサポートされています。
動的SQL文はプリコンパイル時には処理されず、Oracleではマルチバイトのグローバリゼーション・サポート文字列自体は処理されないため、動的SQL文にはグローバリゼーション・サポートのマルチバイト文字列を埋め込むことはできません。
グローバリゼーション・サポートのマルチバイト・データを格納する列は、埋込みのデータ定義言語(DDL)文では使用できません。この制限はプリコンパイル時には適用されないため、NCHARなどの拡張された列型を埋込みDDL文で使用すると、プリコンパイル・エラーではなく実行エラーになります。
Pro*COBOLプリコンパイラでは、ANSI規格PIC N句を使用して、マルチバイト文字データのホスト変数を宣言します。PIC N句を使用して宣言された変数は、2バイト文字の文字列変数として認識されます。
Globalization Support_LOCAL
VARCHAR
これらのオプションの詳細は、Oracleプリコンパイラの実行を参照してください。
表は使用できません。
PIC Nデータ型を使用して宣言されたホスト変数は、表に使用できません。
奇数バイト幅はありません。マルチバイトのグローバリゼーション・サポート文字の格納に、Oracle CHAR
列を使用しないでください。奇数バイトのデータがシングルバイト列からマルチバイトのグローバリゼーション・サポート(PIC N)・ホスト変数にフェッチされると、ランタイム・エラーが発生します。
ホスト変数の同値化は行えません。マルチバイトのグローバリゼーション・サポート文字変数は、EXEC
SQL
VAR
文を使用して同値化できません。
動的SQLは使用できません。Pro*COBOLでは、グローバリゼーション・サポートのマルチバイト文字に動的SQLを使用できません。
Pro*COBOL文字変数をマルチバイトのグローバリゼーション・サポート変数として定義すると、その変数の外部データ型に応じて、次の空白埋込みおよび空白削除の規則が適用されます。『Pro*COBOLプログラマーズ・ガイド』の「外部データ型」を参照してください。
CHARF。これは、マルチバイト文字列が定義されるときのデフォルトの文字型です。入力データから、後続のダブルバイトの空白文字が削除されます。ただし、文字列がダブルバイト空白文字のみで構成されている場合は、インディケータとしてダブルバイトの空白文字が1つバッファに残されます。
出力ホスト変数では、ダブルバイトの空白文字で空白が埋め込まれます。
VARCHAR。入力時に、ホスト変数からは後続のダブルバイト空白文字が削除されません。lengthコンポーネントは、バイト単位ではなく文字単位のデータの長さとみなされます。
出力では、ホスト変数には空白は埋め込まれません。バッファの長さは、バイト単位ではなく文字単位のデータの長さに設定されます。
STRING/LONG VARCHAR。これらのホスト変数を指定するには動的SQLまたはデータ型の同値化を使用する必要がありますが、グローバリゼーション・サポート・データはそのどちらにも対応していないためです。
マルチバイトのグローバリゼーション・サポート文字変数でも、他の変数の場合と同様に、インディケータ変数を使用できますが、列の長さの値はバイト単位ではなく文字単位で表されます。使用可能な値の一覧は、インジケータ変数の使用についてを参照してください。