8.4.3 COBOL2002のUnicode機能を使用したUAPの実行
COBOL2002のUnicode機能を使用するUAPでは,UTF-16の文字データを格納する日本語項目を,埋込み変数として使用できます。
(1) SQLに関係する文字データの文字コード
COBOL2002のUnicode機能を使用するUAPでの,UAP内の文字データと文字コードを次の表に示します。
UAP内の文字データ |
文字コード |
|
---|---|---|
SQL文 |
UTF-8 |
|
埋込み変数 |
英数字項目 |
UTF-8 |
日本語項目 |
UTF-16LE又はUTF-16BE |
(2) HiRDBサーバが行う文字コード変換
COBOL2002のUnicode機能を使用するUAPでSQLを実行する場合に,HiRDBサーバが行う文字コード変換を次の表に示します。
UAP内の文字データ |
SQL実行時にHiRDBサーバが行う文字コード変換 |
|
---|---|---|
SQL文 |
クライアント側とサーバ側の文字コードは両方ともUTF-8のため,変換しません。 |
|
埋込み変数 |
英数字項目 |
代入,比較処理の対象となるサーバ側の文字データの文字集合がUTF-16の場合,文字コードを変換します。※ |
日本語項目 |
代入,比較処理の対象となるサーバ側の文字データの文字集合が既定文字集合(UTF-8)の場合,文字コードを変換します。※ なお,変換前のデータに半角文字がある場合は,半角文字(UTF-16では2バイト)を格納します。 また,埋込み変数内のデータは-XU16オプションの指定に従って,文字集合名UTF-16LE,又はUTF-16BEを指定した文字データ型(CHAR又はVARCHAR)のデータとして扱います。 |
- 注※
-
変換(代入,比較)できるデータ型については,マニュアル「HiRDB SQLリファレンス」を参照してください。
(3) SQLを実行できる条件
COBOL2002のUnicode機能を使用するUAPでSQLを実行するには,次に示す条件をすべて満たす必要があります。
-
HiRDBサーバの既定文字集合がUTF-8,又はIVS対応UTF-8である
-
SQLプリプロセサ実行時に-XU16オプションを指定する
-
埋込みSQL文中にJIS X0213の第3・4水準漢字コードの文字を含まない
-
クライアント環境定義PDCLTCNVMODEにNOUSE(省略値)を指定する
(a) HiRDBサーバの既定文字集合
pdntenvコマンド(UNIX版の場合はpdsetupコマンド)で,文字コード種別にutf-8,又はIVS対応UTF-8を指定した場合に,HiRDBサーバの既定文字集合がUTF-8になります。
(b) プリプロセスオプション
-XU16オプションについては,表「プリプロセスオプション(UNIX環境のCOBOL言語の場合)」,又は表「プリプロセスオプション(Windows環境のCOBOL言語の場合)」を参照してください。
(c) 埋込みSQL文中の文字の制限
UAPのソース中に埋め込んだSQL文にJIS X0213の第3・4水準漢字コードの文字が含まれていると,プリプロセス時にエラーになります。なお,埋込み変数に格納する文字データは,COBOL2002のUnicode機能がサポートする範囲の文字をすべて使用できます。
(d) クライアント環境定義
HiRDBクライアントが文字コード変換を行わないように,クライアント環境定義PDCLTCNVMODEにNOUSEを指定します。