機能
ホストプログラムとしてCOBOLを使用するために必要な各種の定義を行います。
記述形式


参照項番
埋込みSQL文 → “6.1 Embedded SQL文(埋込みSQL文)”
INCLUDE文 → “6.2 INCLUDE文”
データ型 → “2.2 データ型”
一般規則
COBOLテキストは、COBOL97、PowerCOBOL97またはNetCOBOLの文法規則に準拠します。
SQL埋込みCOBOLプログラムは、COBOLテキストおよびSQLテキストからなるコンパイル単位とします。COBOLテキストは、COBOL97、PowerCOBOL97またはNetCOBOLの文法規則に準拠します。SQLテキストは、1つ以上の省略可能な埋込みSQL宣言節と、1つ以上の埋込みSQL文から構成されます。
COBOLホスト識別子は、COBOL97、PowerCOBOL97またはNetCOBOLで規定される変数名です。ただし、変数名が日本語文字でない場合以下を満たすことが必要です。
“SQL”以外で始まる変数名とします。これらは、英大文字を等価な英小文字に置き換えた場合にも同じです。
COBOLホスト識別子に集団項目ホスト変数を指定する場合の一般規則を以下に示します。
集団項目に属する基本項目はそれぞれ、COBOL変数定義で規定されている記述しかできません。
集団項目に属する基本項目のレベル番号は、02から48のいずれかであることが必要です。なお、可変長文字列の従属項目はレベル49です。
集団項目に属する基本項目のレベル番号は、すべて同一であることが必要です。
コンパイル単位で集団項目名は一意であることが必要です。
集団項目に属する基本項目名は、同一の集団項目中では一意であることが必要です。
集団項目ホスト変数や集団項目繰り返しホスト変数の宣言中に、別の集団項目ホスト変数や集団項目繰り返しホスト変数を入れ子で宣言することはできません。
集団項目ホスト変数のSQL文中での記述形式を以下に示します。
参照
指定例については、“アプリケーション開発ガイド(埋込みSQL編)”を参照してください。
:<集団項目名> |:<集団項目名>.<集団項目に属する基本項目名>
注意
集団項目ホスト変数の並び順は、選択リストの並び順に対応します。
集団項目に属する基本項目名は、集団項目名の修飾なしでSQL文中に記述できません。
集団項目名のみの指定は、INTO句およびVALUES句以外には記述できません。
COBOL集団項目変数定義
01 G1. 02 HOST1 PIC S9(4) BINARY. 02 HOST2 PIC X(10). 02 HOST3 PIC S9(4) BINARY. 02 HOST4 PIC S9(4) BINARY.
COBOLホスト識別子に集団項目繰り返しホスト変数を指定する場合の一般規則を以下に示します。
集団項目に属する基本項目はそれぞれ、COBOL変数定義で規定されている記述しかできません。
集団項目に属する基本項目のレベル番号-1は、02から47のいずれかであることが必要です。
集団項目に属する基本項目のレベル番号-2は、03から48のいずれかであることが必要です。なお、可変長文字列の従属項目はレベル49です。
集団項目に属する基本項目のレベル番号-2は、レベル番号-1より大きくなければなりません。
集団項目に属する基本項目のレベル番号-2は、すべて同一であることが必要です。
集団項目に属する基本項目のレベル番号-1は、複数指定することはできません。
コンパイル単位で集団項目名は一意であることが必要です。
集団項目に属する基本項目名は、同一の集団項目中では一意であることが必要です。
集団項目ホスト変数や集団項目繰り返しホスト変数の宣言中に、別の集団項目ホスト変数や集団項目繰り返しホスト変数を入れ子で宣言することはできません。
集団項目繰り返しホスト変数のSQL文中での記述形式を以下に示します。
:<集団項目名>.<集団項目に属する基本項目名>
注意
集団項目繰り返しホスト変数の並び順は、選択リストの並び順に対応します。
集団項目に属する基本項目名は、レベル番号-1の基本項目名を指定します。
基本項目繰り返しホスト変数は、INSERT文(一括指定)のVALUES句以外には記述できません。INSERT文の詳細については“3.48 INSERT文”を参照してください。
COBOL集団項目繰り返し変数定義
01 G1.
02 G2 OCCURS 10 TIMES.
03 HOST1 PIC S9(4) BINARY.
03 HOST2 PIC X(10).
03 HOST3 PIC S9(4) BINARY.
03 HOST4 PIC S9(4) BINARY.COBOLホスト識別子に集団項目繰り返し標識変数を指定する場合の一般規則を以下に示します。
集団項目繰り返し標識変数は、標識変数を集団項目とする変数です。
集団項目繰り返し標識変数は集団項目ホスト変数に対応した標識変数定義を繰り返し記述することができます。
集団項目に属する基本項目のレベル番号は、02から48のいずれかであることが必要です。
集団項目繰り返し標識変数に指定する整数の範囲は、1~2147483647であることが必要です。
集団項目繰り返し標識変数のSQL文中での記述形式を以下に示します。
:<集団項目名> |INDICATOR:<集団項目名>
注意
集団項目繰り返し標識変数の繰り返し順は、選択リストの並び順および集団項目ホスト変数の並び順に対応します。
集団項目に属する基本項目名は、SQL文中に記述できません。
集団項目繰り返し標識変数の繰り返し数が、集団項目ホスト変数に属する基本項目の数より少ない場合、不足分は標識変数が指定されなかったものと解釈します。また、集団項目繰り返し標識変数の繰り返し数が、集団項目ホスト変数に属する基本項目の数より多い場合、余りの標識変数は無視されます。
SQLのデータ型と対応するCOBOL変数定義を以下に示します。
n: 長さ、p: 精度、q: 位取り、単位: K(キロバイト)、M(メガバイト)、G(ギガバイト)
注) BLOB型の場合、コンパイル時に以下の構造体に展開されます(単位がKの場合)
01 変数名.
49 変数名-RESERVED PIC S9(9) USAGE IS BINARY.
49 変数名-LENGTH PIC S9(9) USAGE IS BINARY.
49 変数名-DATA PIC X(n*1024).SQLの時間隔型と対応するCOBOL変数定義を以下に示します。
時間隔型 | COBOL変数定義 | |
|---|---|---|
年月型 | INTERVAL YEAR[(n)] TO MONTH | 01 変数名 PIC X(n+4). |
INTERVAL YEAR[(n)] | 01 変数名 PIC X(n+1). | |
INTERVAL MONTH[(n)] | 01 変数名 PIC X(n+1). | |
日時型 | INTERVAL DAY[(n)] TO HOUR | 01 変数名 PIC X(n+4). |
INTERVAL DAY[(n)] TO MINUTE | 01 変数名 PIC X(n+7). | |
INTERVAL DAY[(n)] TO SECOND | 01 変数名 PIC X(n+10). | |
INTERVAL DAY[(n)] | 01 変数名 PIC X(n+1). | |
INTERVAL HOUR[(n)] TO MINUTE | 01 変数名 PIC X(n+4). | |
INTERVAL HOUR[(n)] TO SECOND | 01 変数名 PIC X(n+7). | |
INTERVAL HOUR[(n)] | 01 変数名 PIC X(n+1). | |
INTERVAL MINUTE[(n)] TO SECOND | 01 変数名 PIC X(n+4). | |
INTERVAL MINUTE[(n)] | 01 変数名 PIC X(n+1). | |
INTERVAL SECOND[(n)] | 01 変数名 PIC X(n+1). 01 変数名 PIC S9(9) {BINARY|COMP}. (注) | |
n: 桁数(1~9)
注) 位取り0の真数型が指定可能なので、以下のデータ型も指定できます。
01 変数名 PIC S9(n) DISPLAY [SIGN] {LEADING SEPARATE [CHARACTER]|TRAILING}
01 変数名 PIC S9(n) {PACKED-DECIMAL|COMP-3}
01 変数名 PIC S9(4) {BINARY|COMP}. (n<5の場合)