スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド

[目次][索引][前へ][次へ]

付録E.1 文字集合名記述領域の構成

UAP実行時に動的に決定した入出力変数の文字集合名を記述する領域の構成,及び内容について説明します。

<この項の構成>
(1) 文字集合名記述領域の構成
(2) 文字集合名記述領域の内容
(3) 文字集合名記述領域のSQLCSNに設定できる文字集合情報
(4) SQL記述領域との関係

(1) 文字集合名記述領域の構成

文字集合名記述領域の構成を次の図に示します。

図E-1 文字集合名記述領域の構成

[図データ]

注1
( )内は領域の長さ(バイト)を示します。

注2
nはSQLCVARNに指定したSQLCVARの数を示します。
mはSQLCSNNに指定したSQLCSNの数を示します。

注3
( )の[ ]内の値は,64ビットモードの場合の長さです。64ビットモードのWindowsの場合,SQLCSNAは36+2n+64mバイトとなります。

注4
64ビットモードでのSQLCSNBCの長さは,プラットフォームごとのlong型のサイズになります。

(2) 文字集合名記述領域の内容

文字集合名記述領域の内容を次の表に示します。

表E-1 文字集合名記述領域の内容

レベル
番号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〜4000)を指定します。
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の要素番号の最大値が設定されます。

0:
次のどれかの場合に設定されます。
  • SQLがSELECT文以外で,かつ出力?パラメタがあるCALL文以外である
  • 検索項目,又は出力?パラメタが既定文字集合以外の文字集合を持たない

最大要素番号:
次のすべての条件を満たす場合に設定されます。
  • SQLがSELECT文,又は出力?パラメタがあるCALL文である
  • 検索項目,出力?パラメタが既定文字集合以外の文字集合を持つ
DESCRIBE INPUT文,又はPREPARE文を発行したとき,2進数の0,又は入力?パラメタに対応する文字集合情報が設定されたSQLCVARの要素番号の最大値が設定されます。

0:
次のどれかの場合に設定されます。
  • SQL文中に入力?パラメタを含まない
  • 入力?パラメタが既定文字集合以外の文字集合を持たない

最大要素番号:
次のすべての条件を満たす場合に設定されます。
  • SQL文中に入力?パラメタを含む
  • 入力?パラメタが既定文字集合以外の文字集合を持つ
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,検索項目,又は出力?パラメタで使用する文字集合数が格納されます。

0:
次のどれかの場合に設定されます。
  • SQLがSELECT文以外で,かつ出力?パラメタがあるCALL文以外である
  • 検索項目,又は出力?パラメタが既定文字集合以外の文字集合を持たない

最大要素番号:
次のすべての条件を満たす場合に設定されます。
  • SQLがSELECT文,又は出力?パラメタがあるCALL文である
  • 検索項目,出力?パラメタが既定文字集合以外の文字集合を持つ
DESCRIBE INPUT文,又はPREPARE文を発行したとき,2進数の0,又は入力?パラメタで使用している文字集合数が設定されます。

0:
次のどれかの場合に設定されます。
  • SQL文中に入力?パラメタを含まない
  • 入力?パラメタが既定文字集合以外の文字集合を持たない

最大要素番号:
次のすべての条件を満たす場合に設定されます。
  • SQL文中に入力?パラメタを含む
  • 入力?パラメタが既定文字集合以外の文字集合を持つ
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の場合,SQLCSNAは36+2n+64mバイトとなります。

(3) 文字集合名記述領域のSQLCSNに設定できる文字集合情報

UAPがSQLCSNに設定できる文字集合情報の内容を次の表に示します。

表E-2 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を指定した場合にだけ使用できます。

C言語のUTF-16のデータ記述を使用する場合,又はCOBOL2002のUnicode機能を使用して,COBOL言語の日本語項目(PICTURE N)を含むデータ記述を使用する場合,文字集合UTF16,UTF-16LE及びUTF-16BEを設定します。

C言語のUTF-16のデータ記述については,「付録F.1 SQLのデータ型とC言語のデータ記述」を参照してください。COBOL言語の日本語項目(PICTURE N)を含むデータ記述については,「付録F.2 SQLのデータ型とCOBOL言語のデータ記述」を参照してください。

文字集合UTF16,UTF-16LE及びUTF-16BEの属性を次の表に示します。

表E-3 文字集合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を指定してください。

(4) SQL記述領域との関係

SQL記述領域と文字集合名記述領域の関係を次の図に示します。

図E-2 SQL記述領域と文字集合名記述領域の関係

[図データ]

(凡例)
N:SQLN設定値(SQLVARの最大数)
D:SQLD設定値(SQLVARの有効数)
n:SQLCVARN設定値(SQLCVARの最大数)
dn:SQLCVARD設定値(SQLCVARの有効数)
m:SQLCSNN設定値(SQLCSNの最大値)
dm:SQLCSND設定値(SQLCSNの有効値)