BEGIN DECLARE SECTION ステートメント
BEGIN DECLARE SECTION ステートメントは、ホスト変数宣言セクションの始まりを示します。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込む方法のみ可能です。 これは、実行可能ステートメントではありません。 REXX で指定してはなりません。
許可
必要ありません。
構文
説明
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 ステートメントで使用することによって、 暗黙に定義されています。