EXEC SQL ステートメントで使用する文字データのホスト変数を記述するのに、以下の USAGE 節のいずれかをコーディングできます。すなわち、1 バイトまたは UTF-8 データの場合は USAGE DISPLAY、DBCS データの場合は USAGE DISPLAY-1、または UTF-16 データの場合は USAGE NATIONAL です。
独立型 DB2 プリコンパイラーを使用する場合、USAGE NATIONAL で宣言されたホスト変数に関して、EXEC SQL DECLARE ステートメントでコード・ページ (CCSID) を指定する必要があります。 USAGE DISPLAY または DISPLAY-1 で宣言されたホスト変数のコード・ページを指定しなければならないのは、COBOL CODEPAGE コンパイラー・オプションで有効な CCSID が、文字および図形データ用に DB2 が使用する CCSID と一致しない場合のみです。
次のコードを見てください。統合 DB2 coprocessor を使用する場合には (下記の関連概念に詳述されているように、SQLCCSID コンパイラー・オプションを使用して)、強調表示された 2 つのステートメントは不要です。コード・ページ情報は暗黙的に処理されるからです。
CBL CODEPAGE(1140) NSYMBOL(NATIONAL)
. . .
WORKING-STORAGE SECTION.
EXEC SQL INCLUDE SQLCA END-EXEC.
01 INT1 PIC S9(4) USAGE COMP.
01 C1140.
49 C1140-LEN PIC S9(4) USAGE COMP.
49 C1140-TEXT PIC X(50).
EXEC SQL DECLARE :C1140 VARIABLE CCSID 1140 END-EXEC.
01 G1200.
49 G1200-LEN PIC S9(4) USAGE COMP.
49 G1200-TEXT PIC N(50) USAGE NATIONAL.
EXEC SQL DECLARE :G1200 VARIABLE CCSID 1200 END-EXEC.
. . .
EXEC SQL FETCH C1 INTO :INT1, :C1140, :G1200 END-EXEC.
EXEC SQL DECLARE variable-name VARIABLE CCSID nnnn END-EXEC を 指定した場合は、その指定によって暗黙の CCSID がオーバーライドされます。例えば、次のようなコードを使用 すると、DB2 は、C1208-TEXT を、COBOL の CODEPAGE コンパイラー・ オプションに対して有効な CCSID としてではなく、UTF-8 (CCSID 1208) でエンコードされているものとして扱います。
01 C1208.
49 C1208-LEN PIC S9(4) USAGE COMP.
49 C1208-TEXT PIC X(50).
EXEC SQL DECLARE :C1208 VARIABLE CCSID 1208 END-EXEC.
NSYMBOL コンパイラー・オプションは、EXEC SQL ステート メントの内部の文字リテラルには影響を及ぼしません。EXEC SQL ステートメントの文字リテラルは、文字定数についての SQL の規則に従います。
関連タスク
DB2 アプリケーション・プログラミングおよび SQL ガイド (COBOL アプリケーションでの SQL ステートメントのコーディング)