You are on page 1of 2

Sample program to show how we need to code a cursor using MULTI-ROW-FETCH Concept.

Note: This is just a small illustration, to show that we can use MULTI-ROW-FETCH Concept
to fetch more rows and process them in the program . For more details on this please refer
the IBM DB2 books.

Please take a look at the validation done when the fetch is performed. Very Important......

IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE3.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-COUNT PIC 9(10) VALUE ZERO.
01 WS-EOF-CUR1 PIC X(1).
88 EOF-CUR1 VALUE 'N'.
01 WS-EOF-CUR2 PIC X(1).
88 EOF-CUR2 VALUE 'N'.
01 WS-F-DATA.
05 WS-GRP-CLIENT-AGN PIC S9(09) COMP OCCURS 1000 TIMES.
05 WS-FULL-GROUP-NO PIC X(18) OCCURS 1000 TIMES.
05 WS-CLT-GROUP-EFF-DATE PIC X(10) OCCURS 1000 TIMES.
EXEC SQL INCLUDE SQLCA END-EXEC.
EXEC SQL INCLUDE CBMCLT00 END-EXEC.
EXEC SQL INCLUDE CBMCPO00 END-EXEC.

EXEC SQL
DECLARE JD-SUP-CUR1 CURSOR WITH ROWSET POSITIONING FOR
SELECT A.CLIENT_AGN
,A.OPERATIONAL_ID
,A.EFF_DTE
FROM CBMCLT00 A
WHERE A.CLIENT_AGN IN
(SELECT C.CLIENT_AGN_ID
FROM CBMCPO00 C
WHERE C.ACSTR_CLNT_AGN_ID = 4920002
AND C.HIERARCHY_ID = 2800
AND C.GENERATION_RNK = 6
AND C.END_DTE = '2999-12-31')
AND A.CLIENT_TYPE_CDE = 'GR'
AND A.ROW_DEL_TMS > CURRENT TIMESTAMP
AND A.END_DTE >= CURRENT DATE
ORDER BY A.OPERATIONAL_ID, A.EFF_DTE DESC
END-EXEC.
*****
PROCEDURE DIVISION.
*******************
0000-MAIN-CONTROL.
*******************
EXEC SQL
OPEN JD-SUP-CUR1
END-EXEC.
DISPLAY 'OPEN SUCC'.
PERFORM 0001-FETCH-PARA UNTIL EOF-CUR1 OR EOF-CUR2.
DISPLAY 'NO OF ENTITIES FETCHED : ' WS-COUNT
EXEC SQL
CLOSE JD-SUP-CUR1
END-EXEC.
DISPLAY 'CLOSE SUCC'.
GOBACK.
*******************
0001-FETCH-PARA.

INITIALIZE WS-F-DATA.

EXEC SQL
FETCH NEXT ROWSET JD-SUP-CUR1 FOR 1000 ROWS
INTO :WS-GRP-CLIENT-AGN
,:WS-FULL-GROUP-NO
,:WS-CLT-GROUP-EFF-DATE
END-EXEC

EVALUATE TRUE
WHEN ((SQLCODE=100 OR SQLCODE=0) AND SQLERRD(3) > 0)
ADD SQLERRD(3) TO WS-COUNT
WHEN SQLCODE=100 AND SQLERRD(3) = 0
SET EOF-CUR1 TO TRUE
WHEN OTHER
MOVE SQLCODE TO SQLCDE
DISPLAY 'SQLCODE=' SQLCDE
SET EOF-CUR2 TO TRUE
END-EVALUATE.

0001-EXIT.
EXIT.

Below are few of my other documents :

UNDERSTANDING SDF II TOOL LEARN VISUALLY WITH EXAMPLES


http://www.scribd.com/doc/24006897/SDF-II-TOOL-2

UNDERSTANDING SCROLL CURSORS LEARN VISUALLY WITH EXAMPLES


http://www.scribd.com/doc/24006883/Scroll-Cursors-2

HOW TO CREATE DATABASE IN ADABAS


http://www.scribd.com/doc/39059895/Adabas-Database

HOW TO CREATE DDM IN NATURAL-ADABAS


http://www.scribd.com/doc/39059971/DDM

Javeed Ahmed

You might also like