ODBCレコード定義生成機能は,データソースに依存する列情報を,いったんデータソースに依存しないODBCのSQLデータ型に変換します。そして,変換したSQLデータ型を基にCOBOL2002のレコード定義を生成します。
ここでは,その規則について説明します。
データソース中の表から求められる列情報の意味,およびその列情報がどのような値をとるのかを次に示します。
表5-1 データソース中の表から求められる列情報と変換されるSQLデータ型
表の列情報(型名) | SQLデータ型 | 列情報の意味 |
---|---|---|
表名(TABLE_NAME) | Varchar(128) not NULL | 表の識別子。 |
列名(COLUMN_NAME) | Varchar(128) not NULL | 列の識別子。 |
データ型 (DATA_TYPE) | Smallint not NULL | SQLのデータ型。 ODBC SQL,またはドライバ特有のSQLのデータ型である。 |
型名(TYPE_NAME) | Varchar(128) not NULL | データソースに依存するデータ型の名称。 例えば,"CHAR","VARCHAR","MONEY","LONG VARBINARY",または"CHAR ( ) FOR BIT DATA"など。 |
精度(PRECISION) | Integer | 列の精度。 |
長さ(LENGTH) | Integer | 列の長さ。 SQL_C_DEFAULTが指定されているとSQLGetData,またはSQLFetchに送られたデータのバイト長。 数値データについてのサイズは,データソース上に格納されたデータのサイズと異なる場合がある。 この値は,文字またはバイナリデータ時には,列の精度と同じになる。 |
スケール(SCALE) | Smallint | 列のスケール。 スケールが適用できないデータ型には,NULLが返される。 |
COBOL2002のレコード定義を生成するとき,01レベルのデータ名称は表名になります。02レベル以降の変換規則については,次に示すSQLのデータ型から生成されるCOBOL2002のレコード定義に従います。
表5-2 SQLのデータ型から生成されるCOBOL2002のレコード定義
SQLデータ型 | 符号付き/ 符号なし | 生成されるCOBOL2002のレコード定義 |
---|---|---|
CHAR(n) | - | 02 列名 PIC X(n). |
VARCHAR(n) | - | 02 列名. |
LONG VARCHAR | - | 02 列名. |
DECIMAL(p,s) | - | 02 列名 PIC S9(p-s)V9(s) |
NUMERIC(p,s) | - | 02 列名 PIC S9(p-s)V9(s) |
SMALLINT | 符号付き | 02 列名 PIC S9(4) USAGE BINARY. |
符号なし | 02 列名 PIC 9(4) USAGE BINARY. | |
INTEGER | 符号付き | 02 列名 PIC S9(9) USAGE BINARY. |
符号なし | 02 列名 PIC 9(9) USAGE BINARY. | |
REAL | - | 02 列名 USAGE COMP-1. |
FLOAT | - | 02 列名 USAGE COMP-2. |
DOUBLE PRECISION | - | 02 列名 USAGE COMP-2. |
BIT | - | 02 列名. |
TINYINT | - | 02 列名 PIC X(1). |
BIGINT | - | 02 列名 PIC X(20). |
BINARY(n) | - | 02 列名 PIC X(n). |
VARBINARY(n) | - | 02 列名. |
LONG VARBINARY | - | 02 列名. |
DATE | - | 02 列名. |
TIME | - | 02 列名. |
TIMESTAMP | - | 02 列名. |