Symfoware Server SQLビギナーズガイド - FUJITSU -
目次 索引 前ページ次ページ

付録A SQLのデータ型と対応するホスト変数のデータ型

SQLのデータ型と対応するCホスト変のデータ型を以下に示します。

[表:SQLのデータ型と対応するCホスト変数のデータ型]

SQLデータ型

C変数定義

文字列型

CHARACTER(n)

char 変数名[n+1]
char * 変数名[n+1] (注1)

CHARACTER VARYING(n)

VARCHAR 変数名[n+1] (注2)
VARCHAR * 変数名[n+1] (注1)(注3)

各国語
文字列型

NATIONAL CHARACTER(n)

char CHARACTER SET[IS]
NCHAR 変数名[n*2+1]
char CHARACTER SET[IS]
NCHAR * 変数名 (注1)

NATIONAL CHARACTER VARYING(n)

VARCHAR CHARACTER SET[IS]NCHAR
変数名[n*2+1] (注2)
VARCHAR CHARACTER SET[IS]NCHAR
* 変数名 (注1)(注3)

真数型

NUMERIC(p,q)

NUMERIC(p,q) 変数名 (注4)
NUMERIC(p,q) * 変数名 (注1)

DECIMAL(p,q)

DECIMAL(p,q) 変数名 (注5)
DECIMAL(p,q) * 変数名 (注1)

SMALLINT

short 変数名
short * 変数名 (注1)

INTEGER

long 変数名 (注6)
long * 変数名 (注1)

概数型

REAL

float 変数名
float * 変数名 (注1)

DOUBLE PRECISION

double 変数名
double * 変数名 (注1)

日時型

DATE

char 変数名[11]

TIME

char 変数名[9]

TIMESTAMP

char 変数名[20]

時間隔型

INTERVAL

時間隔型と対応するCホスト変数のデータ型”参照

BLOB型

BINARY LARGE OBJECT(n単位)

SQL TYPE IS BLOB(n単位) 変数名 (注7)
SQL TYPE IS BLOB * 変数名 (注1) (注8)

ROW_ID

ROW_ID

ROW_ID 変数名
ROW_ID * 変数名 (注1)

n:長さ、p:精度、q:位取り、単位:K(キロバイト)、 M(メガバイト)、G(ギガバイト)

注1) 各型のポインタ変数を宣言する場合は、変数名の前に*を指定します。

注2) 可変長文字列の場合、コンパイル時に以下の構造体に展開されます。

struct {
short sqllen;
char sqlvar[n+1];
} 変数名

注3) 可変長文字列のポインタ変数の場合、コンパイル時に以下の構造体に展開されます。

struct 変数名_SQLVAR{
short sqllen;
char sqlvar[1];
} *変数名

注4) NUMERIC型の場合、コンパイル時に以下のように展開されます。

char 変数名 [p+1];

注5) DECIMAL型の場合、コンパイル時に以下のように展開されます。

char 変数名 [(p÷2)+1];

注6) 64ビットのSQL埋込みCプログラムの場合、対応するC変数定義はintです。

注7) BLOB型の場合、コンパイル時に以下の構造体に展開されます。

struct {
long 変数名_reserved; 注)
unsigned long 変数名_length; 注)
char 変数名_data[n*1024];
} 変数名

注8) BLOB型のポインタ変数の場合、コンパイル時に以下の構造体に展開されます。

struct 変数名_SQLBLOB{
long 変数名_reserved; 注)
unsigned long 変数名_length;
char 変数名_data[1];
} *変数名

注)64ビットのSQL埋込みCプログラムの場合、longはintに展開されます。

 

時間隔型と対応するCホスト変数のデータ型を以下に示します。

[表:時間隔型と対応するCホスト変数のデータ型]

時間隔型

C変数定義

年月型

INTERVAL YEAR[(n)] TO MONTH

char 変数名[n+5]

INTERVAL YEAR[(n)]

char 変数名[n+2]
long 変数名 (注)

INTERVAL MONTH[(n)]

char 変数名[n+2]
long 変数名 (注)

日時型

INTERVAL DAY[(n)] TO HOUR

char 変数名[n+5]

INTERVAL DAY[(n)] TO MINUTE

char 変数名[n+8]

INTERVAL DAY[(n)] TO SECOND

char 変数名[n+11]

INTERVAL DAY[(n)]

char 変数名[n+2]
long 変数名 (注)

INTERVAL HOUR[(n)] TO MINUTE

char 変数名[n+5]

INTERVAL HOUR[(n)] TO SECOND

char 変数名[n+8]

INTERVAL HOUR[(n)]

char 変数名[n+2]
long 変数名 (注)

INTERVAL MINUTE[(n)] TO SECOND

char 変数名[n+5]

INTERVAL MINUTE[(n)]

char 変数名[n+2]
long 変数名 (注)

INTERVAL SECOND[(n)]

char 変数名[n+2]
long 変数名 (注)

n:桁数(1〜9)

注) 位取り0の真数型が指定可能なので、以下のデータ型も指定できます。

short 変数名 ( n<5の場合 )

 

SQLのデータ型と対応するCOBOLホスト変のデータ型を以下に示します。

[表:SQLのデータ型と対応するCOBOLホスト変数のデータ型]

SQLデータ型

COBOL変数定義

文字列型

CHARACTER(n)

01 変数名 PIC X(n).

CHARACTER VARYING(n)

01 変数名-1.
49 変数名-2 PIC S9({4|9}) {BINARY|COMP}.
49 変数名-3 PIC X(n).

各国語
文字列型

NATIONAL CHARACTER(n)

01 変数名 PIC N(n).

NATIONAL CHARACTER VARYING(n)

01 変数名-1.
49 変数名-2 PIC S9({4|9}) {BINARY|COMP}.
49 変数名-3 PIC N(n).

真数型

NUMERIC(p,q)

01 変数名 PIC S9(p-q)V9(q) DISPLAY [SIGN] {LEADING SEPARATE [CHARACTER]|TRAILING}.

DECIMAL(p,q)

01 変数名 PIC S9(p-q)V9(q) {PACKED-DECIMAL|COMP-3}.

SMALLINT

01 変数名 PIC S9(4) {BINARY|COMP}.

INTEGER

01 変数名 PIC S9(9) {BINARY|COMP}.

概数型

REAL

01 変数名 COMP-1.

DOUBLE PRECISION

01 変数名 COMP-2.

日時型

DATE

01 変数名 PIC X(10).

TIME

01 変数名 PIC X(8).

TIMESTAMP

01 変数名 PIC X(19).

時間隔型

INTERVAL

“表:時間隔型と対応するCOBOLホスト変数のデータ型”参照

BLOB型

BINARY LARGE OBJECT(n単位)

01 変数名 SQL TYPE IS BLOB(n単位). (注)

ROW_ID

ROW_ID

01 変数名 ROW_ID.

n:長さ、p:精度、q:位取り、単位:K(キロバイト)、M(メガバイト)、G(ギガバイト)

注) BLOB型の場合、コンパイル時に以下の構造体に展開されます(単位がKの場合)。

01 変数名.
49 変数名-RESERVED PIC S9(9) USAGE IS BINARY.

49 変数名-LENGTH PIC S9(9) USAGE IS BINARY.

49 変数名-DATA PIC X(n*1024).

 

時間隔型と対応するCOBOLホスト変数のデータ型を以下に示します。

[表:時間隔型と対応するCOBOLホスト変数のデータ型]

時間隔型

COBOL変数定義

年月型

INTERVAL YEAR[(n)] TO MONTH

01 変数名 PIC X(n+4).

INTERVAL YEAR[(n)]

01 変数名 PIC X(n+1).
01 変数名 PIC S9(9) {BINARY|COMP}. (注)

INTERVAL MONTH[(n)]

01 変数名 PIC X(n+1).
01 変数名 PIC S9(9) {BINARY|COMP}. (注)

日時型

INTERVAL DAY[(n)] TO HOUR

01 変数名 PIC X(n+4).

INTERVAL DAY[(n)] TO MINUTE

01 変数名 PIC X(n+7).

INTERVAL DAY[(n)] TO SECOND

01 変数名 PIC X(n+10).

INTERVAL DAY[(n)]

01 変数名 PIC X(n+1).
01 変数名 PIC S9(9) {BINARY|COMP}. (注)

INTERVAL HOUR[(n)] TO MINUTE

01 変数名 PIC X(n+4).

INTERVAL HOUR[(n)] TO SECOND

01 変数名 PIC X(n+7).

INTERVAL HOUR[(n)]

01 変数名 PIC X(n+1).
01 変数名 PIC S9(9) {BINARY|COMP}. (注)

INTERVAL MINUTE[(n)] TO SECOND

01 変数名 PIC X(n+4).

INTERVAL MINUTE[(n)]

01 変数名 PIC X(n+1).
01 変数名 PIC S9(9) {BINARY|COMP}. (注)

INTERVAL SECOND[(n)]

01 変数名 PIC X(n+1).
01 変数名 PIC S9(9) {BINARY|COMP}. (注)

n:桁数(1〜9)

注) 位取り0の真数型が指定可能なので、以下のデータ型も指定できます。

01 変数名 PIC S9(n) DISPLAY [SIGN] {LEADING SEPARATE [CHARACTER]|TRAILING}.

01 変数名 PIC S9(n) {PACKED-DECIMAL|COMP-3}.

01 変数名 PIC S9(4) {BINARY|COMP}. ( n<5の場合 )


目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 2006