COBOL2002 操作ガイド

[目次][用語][索引][前へ][次へ]

5.2 レコード定義生成の説明

ODBCレコード定義生成機能は,データソースに依存する列情報を,いったんデータソースに依存しないODBCのSQLデータ型に変換します。そして,変換したSQLデータ型を基にCOBOL2002のレコード定義を生成します。

ここでは,その規則について説明します。

<この節の構成>
(1) データソース中の表から求められる列の情報
(2) COBOL2002のレコード定義を生成するときの規則

(1) データソース中の表から求められる列の情報

データソース中の表から求められる列情報の意味,およびその列情報がどのような値をとるのかを次に示します。

表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が返される。

データ型の詳細については,各ODBCドライバのマニュアルを参照してください。

(2) COBOL2002のレコード定義を生成するときの規則

COBOL2002のレコード定義を生成するとき,01レベルのデータ名称は表名になります。02レベル以降の変換規則については,次に示すSQLのデータ型から生成されるCOBOL2002のレコード定義に従います。

表5-2 SQLのデータ型から生成されるCOBOL2002のレコード定義

SQLデータ型 符号付き/
符号なし
生成されるCOBOL2002のレコード定義
CHAR(n)
02 列名 PIC X(n).
VARCHAR(n)
02 列名.
 03 ODBC-length PIC S9(9)
        USAGE BINARY.
 03 ODBC-char PIC X(n).
LONG VARCHAR
02 列名.
 03 ODBC-length PIC S9(9)
        USAGE BINARY.
 03 ODBC-char PIC X(2000).
DECIMAL(p,s)
02 列名 PIC S9(p-s)V9(s)
        SIGN LEADING SEPARATE.
NUMERIC(p,s)
02 列名 PIC S9(p-s)V9(s)
        SIGN LEADING SEPARATE.
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 列名.
 03 FILLER  PIC 1(7)
         USAGE BIT VALUE ZERO.
 03 ODBC-bit  PIC 1(1) USAGE BIT.
TINYINT
02 列名 PIC X(1).
BIGINT
02 列名 PIC X(20).
BINARY(n)
02 列名 PIC X(n).
VARBINARY(n)
02 列名.
 03 ODBC-length PIC S9(9)
         USAGE BINARY.
 03 ODBC-binary PIC X(n).
LONG VARBINARY
02 列名.
 03 ODBC-length PIC S9(9)
         USAGE BINARY.
 03 ODBC-binary PIC X(2000).
DATE
02 列名.
 03 ODBC-year PIC S9(4)
         USAGE BINARY.
 03 ODBC-month PIC 9(4)
         USAGE BINARY.
 03 ODBC-day PIC 9(4)
         USAGE BINARY.
TIME
02 列名.
 03 ODBC-hour PIC 9(4)
         USAGE BINARY.
 03 ODBC-minute PIC 9(4)
         USAGE BINARY.
 03 ODBC-second PIC 9(4)
         USAGE BINARY.
TIMESTAMP
02 列名.
 03 ODBC-year PIC S9(4)
         USAGE BINARY.
 03 ODBC-month PIC 9(4)
         USAGE BINARY.
 03 ODBC-day  PIC 9(4)
         USAGE BINARY.
 03 ODBC-hour PIC 9(4)
         USAGE BINARY.
 03 ODBC-minute PIC 9(4)
         USAGE BINARY.
 03 ODBC-second PIC 9(4)
         USAGE BINARY.
 03 ODBC-fraction PIC 9(9)
         USAGE BINARY.

(凡例)
n:長さ(LENGTH)
p:精度(PRECISION)
s:位取り(SCALE)
−:該当しない

表5-2 SQLのデータ型から生成されるCOBOL2002のレコード定義」以外のSQLデータ型には対応していません。