0% found this document useful (0 votes)
99 views

Multi Row Fetch

This document provides an example COBOL program that uses a multi-row cursor to select and fetch data from a DB2 table. The program declares a cursor called ECURSOR to select employee number, name, and commission from the EMPLOYEE table. It then opens the cursor, fetches rows of data in a loop until all rows are processed, and displays the retrieved data. Any errors encountered are trapped and handled.

Uploaded by

Kiran
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
99 views

Multi Row Fetch

This document provides an example COBOL program that uses a multi-row cursor to select and fetch data from a DB2 table. The program declares a cursor called ECURSOR to select employee number, name, and commission from the EMPLOYEE table. It then opens the cursor, fetches rows of data in a loop until all rows are processed, and displays the retrieved data. Any errors encountered are trapped and handled.

Uploaded by

Kiran
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

http://mainframewiki.

com/mainframe-reference
==============================================

https://www.mainframestechhelp.com/tutorials/db2/db2-introduction.htm
=======================================================================

000100 IDENTIFICATION DIVISION.


000200 PROGRAM-ID. DB2MULSE.
000300*AUTHOR. SUSHANTH BOBBY.
000400*DATE-WRITTEN. NOVEMBER 2008.
000500*REMARKS. A SAMPLE DB2 COBOL MULTI-ROW SELECT FETCH PROGRAM ***
000600
000700****************************************************************
000800* THIS IS A SIMPLE COBOL-DB2 CURSOR PROGRAM.
000900* THIS PROGRAM SELECT'S ALL THE ROW IN THE TABLE.
001000* THERE IS NO INPUT TO THIS PROGRAM.
001100****************************************************************
001200 ENVIRONMENT DIVISION.
001300
001400 DATA DIVISION.
001500
001600****************************************************************
001700 WORKING-STORAGE SECTION.
001800****************************************************************
001900 01 WS-TEMP-VAR.
002000 05 END-OF-LOOP PIC X(1).
002100 05 IO-COUNT PIC 9(7).
002200 05 RECORD-COUNT PIC 9(7).
002300 05 WS0-SALARY PIC S9(7)V99.
002400 05 WS0-INCREMENT PIC 9(3).
002500 05 I PIC 9(3).
002600 05 WS0-COMMM PIC S9(7)V99 USAGE COMP-3.
002700 05 WS1-COMMM PIC 9(7)V99.
002800 05 WS2-COMMM PIC Z(7).99.
002810 05 INI-DUMP-TEST PIC 9(7).
002900 01 LOOP PIC S9(3) USAGE COMP VALUE 20.
003000
003100 01 WS-TEMP-EMP-ARRAY.
003200 10 WS-EMPNO PIC X(6) OCCURS 20 TIMES.
003300 10 FILLER PIC X(1).
003400 10 WS-FIRSTNME OCCURS 20 TIMES.
003500 49 WS-FIRSTNME-LEN PIC S9(4) USAGE COMP.
003600 49 WS-FIRSTNME-TEXT PIC X(12).
003700 10 WS-INDI PIC S9(4) USAGE COMP OCCURS 20 TIMES.
003800 10 WS-COMMM PIC S9(7)V99 USAGE COMP-3 OCCURS 20 TIMES.
003900 COPY DUMPT.
004000* ***********************************************************
004100* SQL CONTROL BLOCK
004200* ***********************************************************
004300 EXEC SQL INCLUDE SQLCA END-EXEC.
004400
004500* ***********************************************************
004600* SQL/DEFINITION OF EMPLOYEE
004700* ***********************************************************
004800 EXEC SQL INCLUDE EMPLOYEE END-EXEC.
004900
005000* ************************************************************
005100* MULTI-ROW CURSOR FETCH DECLARATION
005200* ************************************************************
005300* ***********************************************************
006700 PROCEDURE DIVISION.
006800 INITIALIZE WS-TEMP-VAR
006900 INITIALIZE WS-TEMP-EMP-ARRAY
007000 EXEC SQL
007100 DECLARE ECURSOR CURSOR WITH ROWSET POSITIONING
007200 FOR
007300 SELECT EMPNO,FIRSTNME,COMM
007400 FROM EMPLOYEE
007500 END-EXEC.
007600* ***********************************************************
007700* OPENING ECURSOR
007800* ***********************************************************
007900 EXEC SQL
008000 OPEN ECURSOR
008100 END-EXEC.
008110 DISPLAY 'AFTER OPEN SQLERRD(3) = 'SQLERRD(3).
008200
008300 0000-START-PROGRAM.
008400 EXEC SQL
008500 WHENEVER SQLERROR
008600 GOTO 9000-DB-ERROR
008700 END-EXEC.
008800
008900 EXEC SQL
009000 WHENEVER SQLWARNING
009100 CONTINUE
009200 END-EXEC.
009300
009400 EXEC SQL
009500 WHENEVER NOT FOUND
009600 CONTINUE
009700 END-EXEC.
009800
009900 PERFORM 0100-READ-PARA.
010000 EXEC SQL
010100 CLOSE ECURSOR
010200 END-EXEC.
010300 GO TO 1000-END-PROGRAM.
010400
010500 0100-READ-PARA.
010600 PERFORM UNTIL END-OF-LOOP = 'Y'
010700 INITIALIZE WS-TEMP-EMP-ARRAY
010800 EXEC SQL
010900 FETCH NEXT ROWSET FROM ECURSOR FOR :LOOP ROWS
011000 INTO :WS-EMPNO :WS-INDI ,:WS-FIRSTNME, :WS-COMMM
011100 END-EXEC
011400 DISPLAY 'SQLERRD(3) = 'SQLERRD(3)
011700 EVALUATE SQLCODE
011800 WHEN 0
011900 PERFORM 0200-READ-ARRAY
012000
012100 WHEN +100
012200 IF SQLERRD(3) > 0
012300 MOVE SQLERRD(3) TO LOOP
012400 PERFORM 0200-READ-ARRAY
012500 END-IF
012600 DISPLAY 'TOTAL NUMBER OF RECORDS = ' RECORD-COUNT
012700 DISPLAY 'TOTAL I/O STATUS = ' IO-COUNT
012800 MOVE 'Y' TO END-OF-LOOP
012900
013000 WHEN OTHER
013100 DISPLAY 'ERROR IN RETREVING DATA'
013200 DISPLAY 'SQLCODE = ' SQLCODE
013300
013400 END-EVALUATE
013500 END-PERFORM.
013600
013700 0200-READ-ARRAY.
013800 MOVE 1 TO I
013900 PERFORM LOOP TIMES
014000 MOVE WS-COMMM(I) TO WS1-COMMM
014100 MOVE WS1-COMMM TO WS2-COMMM
014200 DISPLAY WS-EMPNO(I)' 'WS-FIRSTNME(I)' 'WS-INDI(I)' 'WS2-COMMM
014300 ADD 1 TO I
014400 ADD 1 TO RECORD-COUNT
014500 END-PERFORM
014600 ADD 1 TO IO-COUNT.
014700
014800 1000-END-PROGRAM.
014900 GOBACK.
015000
015100 9000-DB-ERROR.
015200 GO TO 1000-END-PROGRAM.
015300

Read more: http://ibmmainframes.com/post-282428.html#ixzz6AFyRhSnp

===================================================================================
=============================

You might also like