ページの先頭行へ戻る
Symfoware Server V11.0.x SQLリファレンス
Symfoware

6.4 SQL埋込みCOBOLプログラム

機能

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

記述形式

COBOL数値型変数定義
COBOL外部10進型変数定義

COBOL内部10進型変数定義

COBOL2進型変数定義

COBOL内部浮動小数点型変数定義

COBOL文字型変数定義
COBOL固定長文字型変数定義

COBOL可変長文字型変数定義

COBOL各国語文字型変数定義
COBOL固定長各国語文字型変数定義

COBOL可変長各国語文字型変数定義

COBOL BLOB型変数定義

COBOL集団項目変数定義

COBOL集団項目繰り返し変数定義

COBOL集団項目繰り返し標識変数定義

COBOL ROW_ID型変数定義

構文の構成

参照項番

一般規則

埋込みSQL宣言節
  • 埋込みSQL宣言節は、データ部の作業場所節または連絡節に記述します。

COBOLテキストおよびSQLテキスト
  • COBOLテキストは、COBOL97、PowerCOBOL97またはNetCOBOLの文法規則に準拠します。

  • SQL埋込みCOBOLプログラムは、COBOLテキストおよびSQLテキストからなるコンパイル単位とします。COBOLテキストは、COBOL97、PowerCOBOL97またはNetCOBOLの文法規則に準拠します。SQLテキストは、1つ以上の省略可能な埋込みSQL宣言節と、1つ以上の埋込みSQL文から構成されます。

COBOLホスト識別子
  • 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文中に記述できません。

    • 集団項目繰り返し標識変数の繰り返し数が、集団項目ホスト変数に属する基本項目の数より少ない場合、不足分は標識変数が指定されなかったものと解釈します。また、集団項目繰り返し標識変数の繰り返し数が、集団項目ホスト変数に属する基本項目の数より多い場合、余りの標識変数は無視されます。

COBOL変数定義
  • SQLのデータ型と対応するCOBOL変数定義を以下に示します。

    表6.3 SQLのデータ型と対応するCOBOL変数定義

    SQLデータ型

    COBOL変数定義

    文字列型

    CHARACTER(n)

    01 変数名 PIC X(n).

    CHARACTER VARYING(n)

    01 変数名-1.
    49 変数名-2 PIC S9({4|9}) {BINARY|COMP}.
    49 変数名-3 PIC X(n).

    各国語文字列型

    NATIONAL CHARACTER(n)

    01 変数名 PIC N(n).

    NATIONAL CHARACTER

    VARYING(n)

    01 変数名-1.
    49 変数名-2 PIC S9({4|9}) {BINARY|COMP}.
    49 変数名-3 PIC N(n).

    真数型

    NUMERIC(p,q)

    01 変数名 PIC S9(p-q)V9(q) DISPLAY
    [SIGN] {LEADING SEPARATE
    [CHARACTER]|TRAILING}.

    DECIMAL(p,q)

    01 変数名 PIC S9(p-q)V9(q)
    {PACKED-DECIMAL|COMP-3}.

    SMALLINT

    01 変数名 PIC S9(4) {BINARY|COMP}.

    INTEGER

    01 変数名 PIC S9(9) {BINARY|COMP}.

    概数型

    REAL

    01 変数名 COMP-1.

    DOUBLE PRECISION

    01 変数名 COMP-2.

    日時型

    DATE

    01 変数名 PIC X(10).

    TIME

    01 変数名 PIC X(8).

    TIMESTAMP

    01 変数名 PIC X(19).

    時間隔型

    INTERVAL

    “表:SQLの時間隔型と対応するCOBOL変数定義”参照

    BLOB型

    BINARY LARGE OBJECT(n単位)

    01 変数名 SQL TYPE IS BLOB(n単位). (注)

    ROW_ID

    ROW_ID

    01 変数名 ROW_ID.

    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変数定義を以下に示します。

    表6.4 SQLの時間隔型と対応するCOBOL変数定義

    時間隔型

    COBOL変数定義

    年月型

    INTERVAL YEAR[(n)] TO MONTH

    01 変数名 PIC X(n+4).

    INTERVAL YEAR[(n)]

    01 変数名 PIC X(n+1).
    01 変数名 PIC S9(9) {BINARY|COMP}. (注)

    INTERVAL MONTH[(n)]

    01 変数名 PIC X(n+1).
    01 変数名 PIC S9(9) {BINARY|COMP}. (注)

    日時型

    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).
    01 変数名 PIC S9(9) {BINARY|COMP}. (注)

    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).
    01 変数名 PIC S9(9) {BINARY|COMP}. (注)

    INTERVAL MINUTE[(n)] TO SECOND

    01 変数名 PIC X(n+4).

    INTERVAL MINUTE[(n)]

    01 変数名 PIC X(n+1).
    01 変数名 PIC S9(9) {BINARY|COMP}. (注)

    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の場合)