Hitachi

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


付録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) 文字集合名記述領域の展開方法

文字集合名記述領域の展開方法を次の表に示します。

表E‒4 文字集合名記述領域の展開方法

言語

インクルードファイルを利用する

ユーザが直接記述する

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にインクルードすることで使用できます。文字集合名記述領域操作用マクロを次の表に示します。

表E‒5 文字集合名記述領域操作用マクロ

マクロ名

機能

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)

文字集合名指定用マクロを次の表に示します。

表E‒6 文字集合名指定用マクロ

マクロ名

機能

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の文字列