Symfoware Parallel Server RDBユーザーズガイド 応用プログラム開発編 |
目次
索引
![]() ![]() |
第2章 データベースを処理する応用プログラムの開発の概要 | > 2.2 SQL埋込みCOBOLプログラムの作成方法 |
データベースの複数列を集団項目として操作できるホスト変数を、集団項目ホスト変数と呼びます。集団項目ホスト変数を宣言すると、集団項目に属する基本項目が、データベースの各列に対応するように扱われます。このとき、標識変数を使用する場合は、集団項目繰返し標識変数を宣言します。集団項目ホスト変数に対応した標識変数定義を繰り返し記述できます。集団項目ホスト変数を指定する場合は、翻訳オプションに-Gを指定する必要があります。
集団項目ホスト変数は、繰返し指定ができます。集団項目ホスト変数に繰返し指定を指定する場合は、翻訳オプションに-E1を指定する必要があります。なお、-Gは省略できます。
集団項目ホスト変数をINSERT文に指定することにより、複数の行を一括して挿入することができます。
なお、集団項目ホスト変数や集団項目繰返しホスト変数の宣言中に、別の集団項目ホスト変数や集団項目繰返しホスト変数を入れ子で宣言することはできません。
以下に、翻訳オプションの指定例と、集団項目ホスト変数の使用例を示します。
例1
集団項目を指定する場合の翻訳オプションの指定例
sqlcobol -G demo09main.scob -M -o ../bin/demo09 demo09sub.o
例2
集団項目ホスト変数の使用例
WORKING-STORAGE SECTION. EXEC SQL BEGIN DECLARE SECTION. 01 SQLSTATE PIC X(5). 01 SQLMSG PIC X(255). 01 G1. * 02 HOST1 PIC S9(4) BINARY. | 02 HOST2 PIC N(10). *(1)集団項目ホスト変数の宣言 02 HOST3 PIC S9(9) BINARY. | 02 HOST4 PIC S9(4) BINARY. * 01 G2. * 02 IND PIC S9(4) BINARY OCCURS 4. *集団項目繰返し標識変数 EXEC SQL END DECLARE SECTION. * の宣言 PROCEDURE DIVISION. * 変数初期化 INITIALIZE SQLSTATE. INITIALIZE SQLMSG. INITIALIZE G1. INITIALIZE G2. * SQL呼出し EXEC SQL SELECT COL1, COL2, COL3, COL4 * INTO :G1 :G2 FROM S.T1 *(2)値の代入 WHERE COL1= 100 END-EXEC. * * DISPLAY "COL1=" HOST1. DISPLAY "IND= " IND(1). DISPLAY "COL2=" HOST2. DISPLAY "IND= " IND(2). DISPLAY "COL3=" HOST3. DISPLAY "IND= " IND(3). DISPLAY "COL4=" HOST4. DISPLAY "IND= " IND(4). 〜(1) 集団項目ホスト変数“G1”を定義します。
(2) 集団項目ホスト変数“G1”の各基本項目に対して、単一行SELECT文で、 データベースからデータを取り出します。
例1
集団項目繰返しホスト変数の翻訳オプションの指定例
sqlcobol -E1 demo09main.scob -M -o ../bin/demo09 demo09sub.o
例2
集団項目繰返しホスト変数および複数行の一括挿入の使用例
WORKING-STORAGE SECTION. EXEC SQL BEGIN DECLARE SECTION. 01 SQLSTATE PIC X(5). 01 SQLMSG PIC X(255). 01 CTR PIC S9(4) BINARY. 01 G1. * 02 G-REP OCCURS 3. | 03 HOST1 PIC S9(4) BINARY. | 03 HOST2 PIC X(10). *(1)集団項目繰返しホスト変数の宣言 03 HOST3 PIC S9(9) BINARY. | 03 HOST4 PIC S9(4) BINARY. | 01 G2. * 02 HOST1 PIC S9(4) BINARY. 02 HOST2 PIC X(10). 02 HOST3 PIC S9(9) BINARY. 02 HOST4 PIC S9(4) BINARY. 01 G3. * 02 IND PIC S9(4) BINARY OCCURS 4.*集団項目繰返し標識変数の宣言 EXEC SQL END DECLARE SECTION. * PROCEDURE DIVISION. * 変数初期化 INITIALIZE SQLSTATE. INITIALIZE SQLMSG. INITIALIZE G1. INITIALIZE G2. INITIALIZE G3. * 値の設定 PERFORM TEST BEFORE VARYING CTR FROM 1 BY 1 UNTIL CTR > 3 COMPUTE HOST1 OF G-REP OF G1(CTR) = CTR END-PERFORM. * MOVE "AAA" TO HOST2 OF G-REP OF G1(1). MOVE "BBB" TO HOST2 OF G-REP OF G1(2). MOVE "CCC" TO HOST2 OF G-REP OF G1(3). * COMPUTE HOST3 OF G-REP OF G1(1) = 11111111. COMPUTE HOST3 OF G-REP OF G1(2) = 22222222. COMPUTE HOST3 OF G-REP OF G1(3) = 33333333. * COMPUTE HOST4 OF G-REP OF G1(1) = 1111. COMPUTE HOST4 OF G-REP OF G1(2) = 2222. COMPUTE HOST4 OF G-REP OF G1(3) = 3333. * INSERT EXEC SQL INSERT INTO S.T(COL1,COL2,COL3,COL4) * VALUES(:G1.G-REP) *(2)複数行のINSERT FOR 3 * END-EXEC. * カーソル宣言 EXEC SQL DECLARE CU1 CURSOR FOR SELECT COL1,COL2,COL3,COL4 FROM S.T WHERE COL1 < 100 END-EXEC. * EXEC SQL OPEN CU1 END-EXEC. * PERFORM TEST BEFORE VARYING CTR FROM 1 BY 1 UNTIL CTR > 3 * FETCH EXEC SQL FETCH CU1 INTO :G2 INDICATOR :G3 END-EXEC * DISPLAY DISPLAY "COL1=" HOST1 OF G2 DISPLAY "IND= " IND(1) DISPLAY "COL2=" HOST2 OF G2 DISPLAY "IND= " IND(2) DISPLAY "COL3=" HOST3 OF G2 DISPLAY "IND= " IND(3) DISPLAY "COL4=" HOST4 OF G2 DISPLAY "IND= " IND(4) END-PERFORM. 〜(1) 集団項目ホスト変数“G-REP”に対して、繰返し“OCCURS 3”を定義します。
(2) 繰返しの基本項目に値を設定しておいて、集団項目ホスト変数“G-REP”をINSERT文に指定して、複数行のデータをデータベースに挿入します。
目次
索引
![]() ![]() |