Hitachi

ノンストップデータベース HiRDB Version 10 UAP開発ガイド


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

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

〈この項の構成〉

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

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

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

[図データ]

注1

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

注2

nはSQLCVARNに指定したSQLCVARの数を示します。

mはSQLCSNNに指定したSQLCSNの数を示します。

注3

( )の[ ]内の値は,64ビットモードの場合の長さです。なお,64ビットモードのWindowsの場合は32ビットモードと同じになります。

注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〜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の要素番号の最大値が設定されます。

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の場合は32ビットモードと同じになります。

(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,又は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の属性を次の表に示します。

表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の有効値)