BEGIN DECLARE SECTION ステートメント

BEGIN DECLARE SECTION ステートメントは、ホスト変数宣言セクションの始まりを示します。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込む方法のみ可能です。 これは、実行可能ステートメントではありません。 REXX で指定してはなりません。

許可

必要ありません。

構文

Read syntax diagramSkip visual syntax diagramBEGIN DECLARE SECTION

説明

BEGIN DECLARE SECTION ステートメントは、 ホスト言語の規則に従って変数宣言が許される個所であれば、 アプリケーション・プログラムのどのような個所にもコーディングできます。 これは、ホスト変数宣言セクションの始まりを示すのに使用されます。 ホスト変数セクションは、 END DECLARE SECTION ステートメントで終了します。

ルール

  • BEGIN DECLARE SECTION と END DECLARE SECTION ステートメントは、 対にして使用する必要があり、ネストすることはできません。
  • 宣言セクションに SQL ステートメントを含めることはできません。
  • SQL ステートメントで参照される変数は、REXX 以外のすべてのホスト言語の宣言セクションで宣言する必要があります。 また、そのセクションは、変数に対する最初の参照より前になければなりません。 通常、ホスト変数は、LOB ロケーターおよびファイル参照変数を除き、REXX では宣言されません。 それらは BEGIN DECLARE SECTION では宣言されません。
  • 宣言セクションの外部で宣言される変数の名前を、 宣言セクションで宣言されている変数と同じ名前にすることはできません。
  • LOB データ・タイプのデータ・タイプと長さの前には、 SQL TYPE IS キーワードを付ける必要があります。

  • 例 1: C プログラムで、 ホスト変数 hv_smint (smallint)、hv_vchar24 (varchar(24))、hv_double (double)、 hv_blob_50k (blob(51200))、hv_struct (構造化タイプ "struct_type" は blob(10240)) を定義します。
      
       EXEC SQL  BEGIN DECLARE SECTION;
         short  hv_smint;
         struct {
         short hv_vchar24_len;
         char  hv_vchar24_value[24];
        }                              hv_vchar24;
         double hv_double;
         SQL TYPE IS BLOB(50K) hv_blob_50k;
         SQL TYPE IS struct_type AS BLOB(10k) hv_struct;
       EXEC SQL  END DECLARE SECTION;
  • 例 2: COBOL プログラムで、ホスト変数 HV-SMINT (smallint)、 HV-VCHAR24 (varchar(24))、HV-DEC72 (dec(7,2))、および HV-BLOB-50k (blob(51200)) を定義します。
      
       WORKING-STORAGE SECTION.
             EXEC SQL BEGIN DECLARE SECTION  END-EXEC.
       01  HV-SMINT              PIC S9(4)       COMP-4.
       01  HV-VCHAR24.
           49 HV-VCHAR24-LENGTH  PIC S9(4)       COMP-4.
           49 HV-VCHAR24-VALUE   PIC X(24).
       01  HV-DEC72              PIC S9(5)V9(2)  COMP-3.
       01 HV-BLOB-50K            USAGE SQL TYPE IS BLOB(50K).
             EXEC SQL END DECLARE SECTION  END-EXEC.
  • 例 3: FORTRAN プログラムで、ホスト変数 HVSMINT (smallint)、 HVVCHAR24 (char(24))、HVDOUBLE (double)、および HVBLOB50k (blob(51200)) を定義します。
       EXEC SQL  BEGIN DECLARE SECTION
         INTEGER*2      HVSMINT
         CHARACTER*24   HVVCHAR24
         REAL*8         HVDOUBLE
         SQL TYPE IS BLOB(50K)  HVBLOB50K
       EXEC SQL  END DECLARE SECTION
    注: Fortranでは、予期される値が 254 バイトより大きい場合は、CLOB ホスト変数を使用する必要があります。
  • 例 4: REXX プログラムでホスト変数 HVSMINT (smallint)、 HVBLOB50K (blob (51200))、および HVCLOBLOC (CLOB ロケーター) を定義します。
       DECLARE :HVCLOBLOC  LANGUAGE TYPE CLOB LOCATOR
       call sqlexec 'FETCH c1 INTO :HVSMINT, :HVBLOB50K'

    変数 HVSMINT と HVBLOB50K は、FETCH ステートメントで使用することによって、 暗黙に定義されています。