付録E.1 文字集合名記述領域の構成と内容
UAP実行時に動的に決定した入出力変数の文字集合名を記述する領域の構成,及び内容について説明します。
(1) 文字集合名記述領域の構成
文字集合名記述領域の構成を次の図に示します。
- 注1
-
( )内は領域の長さ(バイト)を示します。
- 注2
-
nはSQLCVARNに指定したSQLCVARの数を示します。
mはSQLCSNNに指定したSQLCSNの数を示します。
- 注3
-
( )の[ ]内の値は,64ビットモードの場合の長さです。なお,64ビットモードのWindowsの場合は32ビットモードと同じになります。
- 注4
-
64ビットモードでのSQLCSNBCの長さは,プラットフォームごとのlong型のサイズになります。
(2) 文字集合名記述領域の内容
文字集合名記述領域の内容を次の表に示します。
レベル 番号※1 |
記述領域名 |
データ型 |
長さ (バイト) |
値の 設定元 |
内 容 |
---|---|---|---|---|---|
1 |
SQLCSNA |
− |
32[36]※2 +2×n +64×m |
− |
文字集合名記述領域全体の名前です。 |
2 |
SQLCSNID |
char |
8 |
HiRDB |
SQLCSNAを示すID 'SQLCSNA△'です。DESCRIBE文,DESCRIBE CURSOR文,又はPREPARE文を発行したとき格納されます。 |
2 |
SQLCSNBC |
long |
4 [8]※2 |
HiRDB |
SQLCSNAの長さです。DESCRIBE文,DESCRIBE CURSOR文,又はPREPARE文を発行したとき格納されます。 |
2 |
SQLCVARN |
short |
2 |
UAP |
SQLCSNAの領域を確保したとき,又はSQLCSNAを使用するとき,確保したSQLCSNA領域のSQLCVARの個数(1〜30000)を指定します。 |
HiRDB |
DESCRIBE文,DESCRIBE CURSOR文,又はPREPARE文を発行したときSQLCSNAの領域が不足(SQLCVARN<SQLCVARD)する場合,2進数の0が格納されます。 |
||||
2 |
SQLCVARD |
short |
2 |
UAP |
OPEN文,EXECUTE文,EXECUTE IMMEDIATE文,又はFETCH文を発行するとき,入力?パラメタに対する文字集合情報を指定したSQLCVARの要素番号の最大値を指定します。 |
HiRDB |
DESCRIBE[OUTPUT],DESCRIBE CURSOR文,又はPREPARE文を発行したとき,2進数の0,検索項目数,又は出力?パラメタに対応する文字集合情報が設定されたSQLCVARの要素番号の最大値が設定されます。
DESCRIBE INPUT文,又はPREPARE文を発行したとき,2進数の0,又は入力?パラメタに対応する文字集合情報が設定されたSQLCVARの要素番号の最大値が設定されます。
|
||||
2 |
SQLCSNN |
short |
2 |
UAP |
SQLCSNAの領域を確保したとき,確保したSQLCSN領域の個数(1)を指定します。 |
HiRDB |
DESCRIBE文,DESCRIBE CURSOR文,又はPREPARE文を発行したとき,SQLCSNの領域が不足(SQLCSNN<SQLCSND)する場合,2進数の0が格納されます。 |
||||
2 |
SQLCSND |
short |
2 |
UAP |
OPEN文,EXECUTE文,EXECUTE IMMEDIATE文,又はFETCH文を発行するとき,入力?パラメタで使用する文字集合数(1)を指定します。 |
HiRDB |
DESCRIBE[OUTPUT],DESCRIBE CURSOR文,又はPREPARE文を発行した場合,SQLCSNの領域が不足(SQLCSNN<SQLCSND)するとき,2進数の0,検索項目,又は出力?パラメタで使用する文字集合数が格納されます。
DESCRIBE INPUT文,又はPREPARE文を発行したとき,2進数の0,又は入力?パラメタで使用している文字集合数が設定されます。
|
||||
2 |
SQLCSNEX |
− |
12 |
− |
未使用 |
2 |
SQLCVAR |
− |
2×n |
− |
SQLCSNXから構成される領域。この領域は,SQLDAのSQLVARに対応する領域であり,SQLCVARNで指定した個数分を繰り返し定義する必要があります。 |
3 |
SQLCSNX |
short |
2 |
UAP |
OPEN文,EXECUTE文,EXECUTE IMMEDIATE文,又はFETCH文を発行するとき,入力?パラメタに対する文字集合名を持つSQLCSNの要素番号を指定します。 |
HiRDB |
DESCRIBE文,DESCRIBE CURSOR文,又はPREPARE文を発行したとき,検索項目又は?パラメタで使用している文字集合名を持つSQLCSNの要素番号が格納されます。検索項目,又は出力?パラメタ中に文字集合指定がない場合は,2進数の0が格納されます。 DESCRIBE INPUT文,PREPARE文を発行したとき,入力?パラメタで使用している文字集合名を持つSQLCSNの要素番号が格納されます。入力?パラメタ中に文字集合指定がない場合は,2進数の0が格納されます。 |
||||
2 |
SQLCSN |
− |
64×m |
− |
SQLCSOL,SQLCSOC,SQLCSNL,及びSQLCSNCから構成される領域。この領域は文字集合情報ごとの領域であり,SQLCSNNで指定した個数の領域を繰り返し定義する必要があります。 |
3 |
SQLCSOL |
short |
2 |
UAP |
OPEN文,EXECUTE文,EXECUTE IMMEDIATE文,又はFETCH文を発行するとき,認可識別子の長さを指定します。 |
HiRDB |
DESCRIBE文,DESCRIBE CURSOR文,又はPREPARE文を発行したとき,認可識別子の長さが格納されます。 |
||||
3 |
SQLCSOC |
char |
30 |
UAP |
OPEN文,EXECUTE文,EXECUTE IMMEDIATE文,又はFETCH文を発行するとき,認可識別子を指定します。 |
HiRDB |
DESCRIBE文,DESCRIBE CURSOR文,又はPREPARE文を発行したとき,認可識別子が格納されます。 |
||||
3 |
SQLCSNL |
short |
2 |
UAP |
OPEN文,EXECUTE文,EXECUTE IMMEDIATE文,又はFETCH文を発行するとき,文字集合名の長さを指定します。 |
HiRDB |
DESCRIBE文,DESCRIBE CURSOR文,又はPREPARE文を発行したとき,文字集合名の長さが格納されます。 |
||||
3 |
SQLCSNC |
char |
30 |
UAP |
OPEN文,EXECUTE文,EXECUTE IMMEDIATE文,又はFETCH文を発行するとき,文字集合名を指定します。 |
HiRDB |
DESCRIBE文,DESCRIBE CURSOR文,又はPREPARE文を発行したとき,文字集合名が格納されます。 |
- (凡例)
-
△:空白を示します。
−:該当しません。
- 注※1
-
表のレベル番号は,文字集合名記述領域の包含関係を示しています。例えば,レベル番号2の記述領域はレベル番号3の記述領域から構成されることを示します。
- 注※2
-
長さの[ ]内の値は,64ビットモードの場合の長さです。なお,64ビットモードのWindowsの場合は32ビットモードと同じになります。
(3) 文字集合名記述領域のSQLCSNに設定できる文字集合情報
UAPがSQLCSNに設定できる文字集合情報の内容を次の表に示します。
SQLCSOL |
SQLCSOC |
SQLCSNL |
SQLCSNC |
---|---|---|---|
6 |
MASTER |
6 |
EBCDIK※1 |
6 |
MASTER |
8 |
UTF-16LE※2 |
6 |
MASTER |
8 |
UTF-16BE※2 |
6 |
MASTER |
5 |
UTF16※2 |
- 注※1
-
pdntenvコマンド(UNIX版の場合はpdsetupコマンド)で,文字コード種別にsjisを指定した場合にだけ使用できます。
- 注※2
-
pdntenvコマンド(UNIX版の場合はpdsetupコマンド)で,文字コード種別にutf-8,又はutf-8_ivsを指定した場合にだけ使用できます。
C言語のUTF-16のデータ記述を使用する場合,又はCOBOL2002のUnicode機能を使用して,COBOL言語の日本語項目(PICTURE N)を含むデータ記述を使用する場合,文字集合UTF16,UTF-16LE及びUTF-16BEを設定します。
C言語のUTF-16のデータ記述については,「SQLのデータ型とC言語のデータ記述」を参照してください。COBOL言語の日本語項目(PICTURE N)を含むデータ記述については,「SQLのデータ型とCOBOL言語のデータ記述」を参照してください。
文字集合UTF16,UTF-16LE及びUTF-16BEの属性を次の表に示します。
文字集合名 |
使用形式 |
文字レパートリ |
---|---|---|
UTF-16LE |
UTF-16リトルエンディアン |
UTF-16でコード化できるUnicodeの文字 |
UTF-16BE,UTF16 |
UTF-16ビッグエンディアン |
結果の文字集合がUTF16となるSQLの検索項目,又は?パラメタに対してDESCRIBE文,DESCRIBE TYPE文,DESCRIBE CURSOR文,PREPARE文を発行した場合,HiRDBは文字集合名記述領域に文字集合名としてUTF16を設定します。
OPEN文,EXECUTE文,EXECUTE IMMEDIATE文,FETCH文で結果の文字集合がUTF16となるSQLの検索項目,又は?パラメタのデータを取り出す場合,又はUTF-16で表現されたデータを?パラメタを用いてHiRDBにデータを渡す場合,文字集合名にUTF16,UTF-16LE,又はUTF-16BEを指定してください。