付録E.2 文字集合名記述領域の展開
文字集合名記述領域は,UAP内で宣言することで確保します。
ここでは,ソースプログラム中に展開する文字集合名記述領域の形,及び使用例を示します。
(1) 文字集合名記述領域の展開形
(a) C言語の場合
C言語の場合の文字集合名記述領域の展開形を次に示します。
struct { char sqlcsnid[8]; /* SQLCSNAを示す名称 */ long sqlcsnbc; /* SQLCSNAの長さ */ short sqlcvarn; /* SQLCVAR配列の要素数 */ short sqlcvard; /* SQLCVARの有効数 */ short sqlcsnn; /* SQLCSN配列の要素数 */ short sqlcsnd; /* SQLCSNの有効数 */ char sqlcsnex[12]; /* 予備 */ struct sqlcvar { short sqlcsnx; /* 対応する文字集合名を持つ */ /* SQLCSNの番号 */ } SQLCVAR[m]; ※1 struct sqlcsn { short sqlcsol; /* 認可識別子の有効長 */ char sqlcsoc[30]; /* 認可識別子格納エリア */ short sqlcsnl; /* 文字集合名の有効長 */ char sqlcsnc[30]; /* 文字集合名格納エリア */ } SQLCSN[n]; ※2 } sqlcsna; ※3
注※1 mは,必要な個数(1〜30000)を指定します。
注※2 nは,必要な個数(1)を指定します。
注※3 構造体名称( 'sqlcsna' の部分)は,任意の文字列を指定してください。なお,構造体名称に'SQL'で始まる文字列は指定できません。
(b) COBOL言語の場合
COBOL言語の場合の文字集合名記述領域の展開形を次に示します。
01 USQLCSNA.※1 02 USQLCSNID PIC X(8) VALUE 'SQLCSNA'. 02 USQLCSNBC PIC S9(9) COMP.※4 02 USQLCVARN PIC S9(4) COMP. 02 USQLCVARD PIC S9(4) COMP. 02 USQLCSNN PIC S9(4) COMP. 02 USQLCSND PIC S9(4) COMP. 02 USQLCSNEX PIC X(12). 02 USQLCVAR OCCURS m TIMES. ※2 03 USQLCSNX PIC S9(4) COMP. 02 USQLCSN OCCURS n TIMES. ※3 03 USQLCSOL PIC S9(4) COMP. 03 USQLCSOC PIC X(30). 03 USQLCSNL PIC S9(4) COMP. 03 USQLCSNC PIC X(30).
注※1 集合項目の名称('USQLCSNA'の部分)は,任意の名称を指定してください。なお,データ項目にSQLで始まる文字列は指定できません。
注※2 mは必要な個数(1〜30000)を指定します。
注※3 nは必要な個数(1)を指定します。
注※4 64ビットモードのUNIXの場合は,USQLCSNBCのPICTURE句をS9(18)に変更してください。
(2) 文字集合名記述領域の展開方法
文字集合名記述領域の展開方法を次の表に示します。
言語 |
インクルードファイルを利用する |
ユーザが直接記述する |
---|---|---|
C |
#include <pdbsqlcsna.h> PDUSRSQLCSNA(m,n) usrsqlcsna m,n,usrsqlcsnaについては,「文字集合名記述領域操作用マクロ」を参照してください。 |
文字集合名記述領域の展開形を直接コーディングします。 |
COBOL |
COPY SQLCSNA※ [ REPLACING 256 BY m ==OCCURS 1 == BY ==OCCURS n == ]. |
文字集合名記述領域の展開形を直接コーディングします。必ず01レベルから記述してください。 |
注※ 64ビットモードの場合は,SQLCSNAをSQLCSNA64に変更してください。
(3) 文字集合名記述領域操作用マクロ
C言語では,SQLCSNAの宣言,及び値の設定・参照用に各種のマクロが定義されています。これらのマクロは専用のヘッダファイル(pdbsqlcsna.h)をUAPにインクルードすることで使用できます。文字集合名記述領域操作用マクロを次の表に示します。
マクロ名 |
機能 |
---|---|
PDUSRSQLCSNA(m,n) |
ユーザ用SQLCSNAを宣言します。 |
PDSETCSNASIZE(usrsqlcsna,m,n) |
SQLCSNAのサイズを設定します。 |
PDSQLCVARN(usrsqlcsna) |
SQLCVAR配列の要素数を設定します。 |
PDSQLCVARD(usrsqlcsna) |
SQLCVARの有効数を設定・参照します。 |
PDSQLCSNN(usrsqlcsna) |
SQLCSN配列の要素数を設定します。 |
PDSQLCSND(usrsqlcsna) |
SQLCSNの有効数を設定・参照します。 |
PDSQLCSNX(usrsqlcsna,o) |
対応する文字集合名を持つSQLCSNの番号を設定・参照します。 |
PDSQLCSOL(usrsqlcsna,p) |
文字集合の認可識別子の長さを設定・参照します。 |
PDSQLCSOC(usrsqlcsna,p) |
文字集合の認可識別子を設定・参照します。 |
PDSQLCSNL(usrsqlcsna,p) |
文字集合の文字集合名の長さを設定・参照します。 |
PDSQLCSNC(usrsqlcsnaa,p) |
文字集合の文字集合名を設定・参照します。 |
- (凡例)
-
usrsqlcsna:ユーザ定義の文字集合名記述領域名。任意の値を指定してください。
m:?パラメタの個数(1〜30000)
n:文字集合名の個数(0〜1)
o:設定,若しくは参照する?パラメタ,又は検索項目の番号(0〜29999)
p:設定,又は参照する文字集合名の番号(0)
文字集合名指定用マクロを次の表に示します。
マクロ名 |
機能 |
---|---|
PDSQL_CS_MASTER_L |
認可識別子MASTERの長さ |
PDSQL_CS_MASTER_C |
認可識別子MASTERの文字列 |
PDSQL_CS_EBCDIK_L |
文字集合名EBCDIKの長さ |
PDSQL_CS_EBCDIK_C |
文字集合名EBCDIKの文字列 |
PDSQL_CS_UTF16_L |
文字集合名UTF16の長さ |
PDSQL_CS_UTF16_C |
文字集合名UTF16の文字列 |
PDSQL_CS_UTF_16LE_L |
文字集合名UTF-16LEの長さ |
PDSQL_CS_UTF_16LE_C |
文字集合名UTF-16LEの文字列 |
PDSQL_CS_UTF_16BE_L |
文字集合名UTF-16BEの長さ |
PDSQL_CS_UTF_16BE_C |
文字集合名UTF-16BEの文字列 |