COBOL2002 操作ガイド


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

ODBCレコード定義生成機能は,データソースに依存する列情報を,いったんデータソースに依存しないODBCのSQLデータ型に変換します。そして,変換したSQLデータ型を基に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データ型には対応していません。