SQL データ・コードおよび EGL ホスト変数

SQL データ・コードというプロパティーは、EGL ホスト変数と関連付ける SQL データ型を示しています。SQL データ・コードは、宣言時、検証時、または生成したプログラムの実行時に、データベース管理システムによって使用されます。

プリミティブ型である CHAR、DBCHAR、HEX、または UNICODE に該当するホスト変数の SQL データ・コードは、変更することができます。ただし、ホスト変数がこれら以外のいずれかのプリミティブ型である場合、SQL データ・コードは固定です。

EGL によってデータベース管理システムから列定義を検索した場合、検索結果に SQL データ・コードがあった場合は、これに変更を加えないでください。

これ以降の説明内容を次に示します。

変数と固定長の列

テーブル列が可変長か固定長かを指定するには、次の表に示すように、対応するホスト変数の SQL データ・コードを該当する値に設定します。

EGL プリミティブ型 SQL データ型 可変長または固定長 SQL データ・コード
CHAR CHAR (デフォルト) 固定長 453
VARCHAR、長さ < 255 可変長 449
VARCHAR、長さ > 254 可変長 457
DBCHAR、 UNICODE GRAPHIC (デフォルト) 固定長 469
VARGRAPHIC、長さ < 128 可変長 465
VARGRAPHIC、長さ > 127 可変長 473
注: SQL データ型では null 標識の使用が必要な場合がありますが、この要件が EGL プログラムのコード記述方法に影響を与えることはありません。null の詳細については、『SQL サポート』を参照してください。

SQL データ型と EGL プリミティブ型との互換性

EGL ホスト変数とこれに対応する SQL テーブル列に互換性のある状態は、次のいずれかです。
  • SQL 列の書式が文字データの書式であり、EGL ホスト変数の型が CHAR で、その長さが SQL 列の長さ以下である場合。
  • SQL 列の書式が DBCHAR データの書式であり、EGL ホスト変数の型が DBCHAR で、その長さが SQL 列の長さ以下である場合。
  • SQL 列の書式が数値の書式であり、EGL ホスト変数の型が次のいずれかである場合。
    • BIN (2 バイトまたは 4 バイトで、小数点以下の桁がないもの)。
    • DECIMAL (小数点以下の桁を含み、最大 18 桁)。 DECIMAL 変数の桁数は、EGL ホスト変数や SQL 列の桁数と同じであること。
    • SMALLINT
  • SQL 列のデータ型に制限がなく、EGL ホスト変数の型は HEX であり、SQL 列とホスト変数のバイト数が同じ場合。データはデータ転送時に変換されない。

    型が HEX の EGL ホスト変数では、EGL プリミティブ型に対応しないデータ型の SQL 列であれば、どのような SQL 列へのアクセスでもサポートされています。

文字データを SQL テーブル列から読み取って、長さの短いホスト変数に変換する場合、その内容は右端から切り捨てられます。切り捨てのテストを行うには、EGL の if ステートメントで予約語 trunc を使用します。

数値データを SQL テーブル列から読み取って長さの短いホスト変数に変換する場合、先頭のゼロの桁は左端から切り捨てられます。ゼロの桁を切り捨てても桁数がホスト変数より大きい場合は、(10 進数の) 小数点以下が右端から削除されます。このときエラーは表示されません。小数点以下が削除されても桁数が多すぎる場合は、負の SQL コードが戻り、オーバーフロー条件になっていることが表示されます。

次の表に、EGL エディターの検索機能によってデータベース管理システムから情報が抽出されたときに割り当てられる EGL ホスト変数特性を示します。

SQL データ型 EGL ホスト変数特性 SQL データ・コード (SQLTYPE)
  プリミティブ型 長さ バイト数  
BIGINT HEX 16 8 493
CHAR CHAR 1 から 32767 1 から 32767 453
DATE CHAR 10 10 453
DECIMAL DECIMAL 1 から 18 1 から 10 485
DOUBLE HEX 16 8 481
FLOAT HEX 16 8 481
GRAPHIC DBCHAR 1 から 16383 2 から 32766 469
INTEGER BIN 9 4 497
LONG VARBINARY HEX 65534 32767 481
LONG VARCHAR CHAR >4000 >4000 457
LONG VARGRAPHIC DBCHAR >2000 >4000 473
NUMERIC DECIMAL 1 から 18 1 から 10 485
REAL HEX 8 4 481
SMALLINT BIN 4 2 501
TIME CHAR 8 8 453
TIMESTAMP CHAR 26 26 453
VARBINARY HEX 2 から 65534 1 から 32767 481
VARCHAR CHAR ≤4000 ≤4000 449
VARGRAPHIC DBCHAR ≤2000 ≤4000 465
次に示す SQL データ型を持つ列には、生成された COBOL プログラムからはアクセスできません。COBOL には等価なデータ型が存在しないためです。
  • 460、461: null 終了文字ストリング
  • 476、477: Pascal で使用するような可変長文字ストリング

VARCHAR、VARGRAPHIC、および関連する LONG データ型

VARCHAR 型または VARGRAPHIC 型の SQL テーブル列には最大長が定義されており、retrieve コマンドでは、この最大長を使用して EGL ホスト変数に長さを割り当てます。ただし、LONG VARCHAR 型または LONG VARGRAPHIC 型の SQL テーブル列には最大長が定義されていないので、retrieve コマンドでは、SQL データ型の最大長を使用して長さを割り当てます。

DATE、TIME、および TIMESTAMP

EGL システム・デフォルトの長いグレゴリオ形式で使用される形式が、SQL データベース・マネージャーで指定される日付形式と同じであることを確認してください。EGL 形式の設定方法については、 『VGVar.currentFormattedGregorianDate』を参照してください。

システム変数 VGVar.currentFormattedGregorianDate で提供される日付が SQL データベース・マネージャーで使用される形式になるように、この 2 つの形式を一致させることができます。

関連する概念
SQL サポート

ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.
(C) Copyright IBM Japan 2005.