ここでは、SQL埋め込みCOBOLプリプロセッサを用いて、各国語データ型を使用する方法を説明します。
各国語データ型に対応するCOBOL言語変数型は、下表のとおりです。また、ホスト変数の長さには、各国語データ型に指定する文字数を指定します。
各国語データ型 | COBOL言語変数型 |
---|---|
CHARACTER(n) NATIONAL CHARACTER(n) | 変数名 PIC N(n) |
CHARACTER VARYING(n) NATIONAL CHARACTER VARYING(n) | 変数名 PIC N(n) VARYING |
各国語データ型に対応するCOBOL言語変数型を使用する場合は、環境変数ECOBPG_NCHARを指定する必要があります。
Linux/Windows(R)の場合
ECOBPG_NCHAR={ UTF16LE | UTF16BE | UTF32LE | UTF32BE | SJIS }
Solaris場合
ECOBPG_NCHAR={ UTF16LE | UTF16BE | UTF32LE | UTF32BE | SJIS | COBOL_EUC }
COBOL言語による埋込みSQLを使用したアプリケーションの各国語データ型に対応するCOBOL言語変数型のエンコードを指定します。
UTF16LE:UTF-16のリトルエンディアン
UTF16BE:UTF-16のビッグエンディアン
UTF32LE:UTF-32のリトルエンディアン
UTF32BE:UTF-32のビッグエンディアン
SJIS:シフトSJIS
COBOL_EUC:NetCOBOL独自の16ビットワイドキャラクタ
本環境変数を省略した場合はクライアントの符号化方式によって決定されます。
UTF8の場合:UTF16 (エンディアンはクライアントシステムのエンディアンに従います)
SJISの場合:SJIS
EUC_JPの場合:COBOL_EUC
注意
環境変数ECOBPG_NCHARにCOBOL_EUCを指定する場合、クライアントの符号化方式はEUC_JPである必要があります。
NetCOBOLによるコンパイル時に翻訳オプションでエンコードを指定した場合は、各国語データ型に指定したエンコードを環境変数ECOBPG_NCHARに指定する必要があります。
NetCOBOLの翻訳オプションと、指定する環境変数ECOBPG_NCHARの値の対応は、以下となります。
NetCOBOLの翻訳オプション | 環境変数ECOBPG_NCHAR |
---|---|
ENCODE(UTF8,UTF16,LE) RCS(UTF16,LE) | UTF16LE |
ENCODE(UTF8,UTF16,BE) RCS(UTF16,BE) | UTF16BE |
ENCODE(UTF8,UTF32,LE) | UTF32LE |
ENCODE(UTF8,UTF32,BE) | UTF32BE |
ENCODE(SJIS,SJIS) | SJIS |
指定なし | 指定不要 |
NetCOBOLによるコンパイル時およびアプリケーション実行時の環境変数LANGの値に対応した、各国語データ型のエンコードを環境変数ECOBPG_NCHARに指定する必要があります。
環境変数LANGと、指定する環境変数ECOBPG_NCHARの値の対応は、以下となります。
環境変数LANG | 環境変数ECOBPG_NCHAR |
---|---|
ja_JP.eucJP | COBOL_EUC |
ja_JP.UTF-8 | UTF16BE |
ja_JP.PCK | SJIS |
また、コンパイル後のアプリケーションのエンコードとアプリケーション実行時のロケールが異なる場合は、クライアントの符号化方式をアプリケーションのエンコードに指定する必要があります。
アプリケーションのエンコードと、アプリケーション実行時のロケールと、設定するクライアントの符号化方式の値の対応は、以下となります。
アプリケーションのエンコード | アプリケーション実行時のロケール | クライアントの符号化方式 |
---|---|---|
UTF8 | UTF8 | UTF8 |
SJIS | UTF8 | |
SJIS | UTF8 | SJIS |
SJIS | SJIS |
アプリケーションのエンコード | アプリケーション実行時のロケール | クライアントの符号化方式 |
---|---|---|
UTF8 | UTF8 | UTF8 |
SJIS | SJIS | SJIS |
EUC | EUC | EUC_JP |
クライアントの符号化方式の設定方法については、“7.2.2 メッセージの言語およびアプリケーションが使用する符号化方式の設定”を参照してください。
以下に、各国語データ型のホスト変数の宣言例を示します。
01 DATA1 PIC N(10). 01 DATA2 PIC N(10) VARYING.
注意
各国語データ型のCOBOL言語変数には半角文字を格納しないでください。
アプリケーションで取得する各国語データ型の列属性もCHAR型となります。
NetCOBOLの機能である、ENCODING句によるエンコードの指定は使用できません。