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データ型には対応していません。