| Symfoware Server SQLビギナーズガイド - FUJITSU - | 
| 目次
			索引    | 
SQLのデータ型と対応するCホスト変数のデータ型を以下に示します。
| SQLデータ型 | C変数定義 | |
|---|---|---|
| 文字列型 | CHARACTER(n) | char 変数名[n+1] | 
| CHARACTER VARYING(n) | VARCHAR 変数名[n+1] (注2) | |
| 各国語  | NATIONAL CHARACTER(n) | char CHARACTER SET[IS] | 
| NATIONAL CHARACTER VARYING(n) | VARCHAR CHARACTER SET[IS]NCHAR | |
| 真数型 | NUMERIC(p,q) | NUMERIC(p,q) 変数名 (注4) | 
| DECIMAL(p,q) | DECIMAL(p,q) 変数名 (注5) | |
| SMALLINT | short 変数名 | |
| INTEGER | long 変数名 (注6) | |
| 概数型 | REAL | float 変数名 | 
| DOUBLE PRECISION | double 変数名 | |
| 日時型 | DATE | char 変数名[11] | 
| TIME | char 変数名[9] | |
| TIMESTAMP | char 変数名[20] | |
| 時間隔型 | INTERVAL | |
| BLOB型 | BINARY LARGE OBJECT(n単位) | SQL TYPE IS BLOB(n単位) 変数名 (注7) | 
| ROW_ID | ROW_ID | ROW_ID 変数名 | 
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変数定義 | |
|---|---|---|
| 年月型 | INTERVAL YEAR[(n)] TO MONTH | char 変数名[n+5] | 
| INTERVAL YEAR[(n)] | char 変数名[n+2] | |
| INTERVAL MONTH[(n)] | char 変数名[n+2] | |
| 日時型 | 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] | |
| INTERVAL HOUR[(n)] TO MINUTE | char 変数名[n+5] | |
| INTERVAL HOUR[(n)] TO SECOND | char 変数名[n+8] | |
| INTERVAL HOUR[(n)] | char 変数名[n+2] | |
| INTERVAL MINUTE[(n)] TO SECOND | char 変数名[n+5] | |
| INTERVAL MINUTE[(n)] | char 変数名[n+2] | |
| INTERVAL SECOND[(n)] | char 変数名[n+2] | |
n:桁数(1〜9)
注) 位取り0の真数型が指定可能なので、以下のデータ型も指定できます。
short 変数名 ( n<5の場合 )
SQLのデータ型と対応するCOBOLホスト変数のデータ型を以下に示します。
| SQLデータ型 | COBOL変数定義 | |
|---|---|---|
| 文字列型 | CHARACTER(n) | 01 変数名 PIC X(n). | 
| CHARACTER VARYING(n) | 01 変数名-1. | |
| 各国語  | NATIONAL CHARACTER(n) | 01 変数名 PIC N(n). | 
| NATIONAL CHARACTER VARYING(n) | 01 変数名-1. | |
| 真数型 | 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変数定義 | |
|---|---|---|
| 年月型 | INTERVAL YEAR[(n)] TO MONTH | 01 変数名 PIC X(n+4). | 
| INTERVAL YEAR[(n)] | 01 変数名 PIC X(n+1). | |
| INTERVAL MONTH[(n)] | 01 変数名 PIC X(n+1). | |
| 日時型 | 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). | |
| 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). | |
| INTERVAL MINUTE[(n)] TO SECOND | 01 変数名 PIC X(n+4). | |
| INTERVAL MINUTE[(n)] | 01 変数名 PIC X(n+1). | |
| INTERVAL SECOND[(n)] | 01 変数名 PIC X(n+1). | |
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の場合 )
| 目次
			索引    |