単純なホスト変数

埋め込み SQL 文でホスト変数を使用するには、その前にホスト変数を宣言する必要があります。

単純なホスト変数の宣言

通常、ホスト変数の宣言は、埋め込み SQL 文の BEGIN DECLARE SECTION と END DECLARE SECTION で囲んでデータ項目としてコードします。次の規則も適用されます。
  • データ項目の集団を単一のホスト変数として使用できます。ただし、集団項目は WHERE 句では使用できません。
  • OpenESQL は、文字型のホスト変数から後続空白文字を取り除きます。ホスト変数が空白文字のみで構成される場合は、長さ 0 の文字列を NULL として扱うサーバーもあるため、OpenESQL は先頭の空白文字を残します。
  • OpenESQL と DB2 ECM の場合のみ、COBOL データ項目は、BEGIN DECLARE SECTION および END DECLARE SECTION を使用して宣言されていなくてもホスト変数として使用できます。
  • ホスト変数名は COBOL におけるデータ項目の命名規則に準拠する必要があります。
  • ホスト変数の宣言は、COBOL データ項目を宣言できる部分であればどこにでも記述できます。
  • DIALECT"MF" (デフォルトの設定) または DIALECT"ENTCOBOL" を使用してコンパイルする場合にのみ、ホスト変数名でアンダースコア (_) を使用できます。

単純なホスト変数の参照

埋め込み SQL 文からホスト変数を参照します。埋め込み SQL 文内でホスト変数名を記述する場合は、先頭にコロン (:) を付け、コンパイラがホスト変数と同じ名前のテーブルまたはカラムを区別できるようにします。

 EXEC SQL
     BEGIN DECLARE SECTION
 END-EXEC
 01 id             pic x(4).
 01 name           pic x(30).
 01 book-title     pic x(40).
 01 book-id        pic x(5).
 EXEC SQL
    END DECLARE SECTION
 END-EXEC
    . . .
     display "Type your identification number: "
     accept id.

* The following statement retrieves the name of the
* employee whose ID is the same as the contents of 
* the host variable "id". The name is returned in
* the host variable "name".

     EXEC SQL
         SELECT emp_name INTO :name FROM employees
          WHERE emp_id=:id
     END-EXEC
     display "Hello " name.

* In the following statement, :book-id is an input 
* host variable that contains the ID of the book to 
* search for, while :book-title is an output host 
* variable that returns the result of the search.

     EXEC SQL
        SELECT title INTO :book-title FROM titles
           WHERE title_id=:book-id 
     END-EXEC