You are on page 1of 3

ID DIVISION.

00010008
PROGRAM-ID. UPDATEP1. 00020007
AUTHOR. PRASADGL. 00030000
DATE-WRITTEN. TODAY. 00040000
00050000
ENVIRONMENT DIVISION. 00060000
INPUT-OUTPUT SECTION. 00070000
FILE-CONTROL. 00080000
SELECT OTFILE ASSIGN TO OTFILEDD 00090000
ORGANIZATION IS SEQUENTIAL 00100000
ACCESS MODE IS SEQUENTIAL 00110000
FILE STATUS IS FS-OTF. 00120000
00130000
DATA DIVISION. 00140000
FILE SECTION. 00150000
FD OTFILE. 00160000
COPY COPYPOLC. 00170001
00180000
WORKING-STORAGE SECTION. 00190000
01 FS-OTF PIC X(02) VALUE SPACE. 00200009
EXEC SQL INCLUDE SQLCA END-EXEC. 00210000
EXEC SQL INCLUDE DCLPOLCY END-EXEC. 00220000
EXEC SQL 00230000
DECLARE CURSOR-1 CURSOR FOR 00240000
SELECT POLICY_NUMBER, 00250004
CUST_NAME, 00260004
INSURED_AMOUNT, 00270004
POLICY_TYPE, 00280004
START_DATE, 00290004
EXP_DATE, 00300004
POLICY_STATUS 00310004
FROM POLICY_TABLE 00320006
FOR FETCH ONLY 00330004
END-EXEC. 00340003
EXEC SQL DECLARE CURSOR-2 CURSOR WITH ROWSET POSITIONING FOR 00341014
SELECT INSURED_AMOUNT 00341112
FROM POLICY_TABLE 00342012
END-EXEC. 00351012
00353012
00354012
01 IN-REC-CNT PIC 9(02) VALUE ZERO. 00360003
01 OT-REC-CNT PIC 9(02) VALUE ZERO. 00370003
01 UPDATE-REC-CNT PIC 9(02) VALUE ZERO. 00380003
01 WS-SQLCODE PIC X(09) VALUE SPACE. 00390003
01 WS-NULL-IND PIC S9(04) COMP. 00400003
01 WS-ABENDPGM PIC X(08) VALUE "PGMABEND". 00401009
01 WS-ARRAY PIC 9(02) VALUE ZERO. 00401112
01 WS-ROWSET. 00402012
05 ROWSET-ARRAY OCCURS 10 TIMES PIC 9(03)V9(02). 00403012
00410003
PROCEDURE DIVISION. 00420003
0000-MAIN-PARA. 00430003
DISPLAY "UPDATEP1 STARTED" 00440003
PERFORM 100-INITIAL-PARA THRU 100-EXIT. 00450003
PERFORM 200-FETCH-PARA THRU 200-EXIT UNTIL SQLCODE = 100. 00460003
PERFORM 300-ROWSET-PARA THRU 300-EXIT. 00461012
00470003
CLOSE OTFILE. 00480003
EXEC SQL CLOSE CURSOR-1 END-EXEC. 00490003
EXEC SQL CLOSE CURSOR-2 END-EXEC. 00491012
DISPLAY " INREC COUNT: " IN-REC-CNT. 00500003
DISPLAY " OUTREC COUNT: " OT-REC-CNT. 00510003
DISPLAY " UPDATE COUNT: " UPDATE-REC-CNT. 00520003
00530003
GOBACK. 00540003
00550003
100-INITIAL-PARA. 00560003
MOVE ZERO TO IN-REC-CNT 00570003
OT-REC-CNT 00580003
UPDATE-REC-CNT 00590003
OPEN OUTPUT OTFILE 00591003
EXEC SQL OPEN CURSOR-1 END-EXEC. 00591105
EVALUATE TRUE 00591312
WHEN FS-OTF NOT = "00" 00591403
WHEN SQLCODE NOT = 000 00591503
DISPLAY "ERROR IN 100-INITIAL-PARA" 00593003
DISPLAY "FILE STATUS IS: " FS-OTF 00594003
MOVE SQLCODE TO WS-SQLCODE 00594103
DISPLAY "CURSOR OPEN STATUS IS: " WS-SQLCODE 00594203
CALL WS-ABENDPGM 00595003
END-EVALUATE. 00596003
100-EXIT. EXIT. 00598003
00599003
200-FETCH-PARA. 00600003
INITIALIZE POLICY-DETAILS DCL-POLICY-DETAILS 00610003
EXEC SQL 00620003
FETCH CURSOR-1 INTO 00630003
:DCL-POLICY-NUMBER, 00640003
:DCL-CUST-NAME, 00640103
:DCL-INSURED-AMOUNT, 00640203
:DCL-POLICY-TYPE, 00640303
:DCL-START-DATE, 00640403
:DCL-EXP-DATE, 00640503
:DCL-POLICY-STATUS:WS-NULL-IND 00640610
END-EXEC. 00650003
EVALUATE TRUE 00660003
WHEN SQLCODE = 000 00670003
ADD +1 TO IN-REC-CNT 00680003
IF WS-NULL-IND < 0 00681010
MOVE SPACE TO DCL-POLICY-STATUS 00682010
END-IF 00683010
PERFORM 210-MOVE-PARA THRU 210-EXIT 00690012
WHEN SQLCODE = 100 00700003
CONTINUE 00710003
WHEN OTHER 00720003
DISPLAY "ERROR IN 200-FETCH-PARA" 00730003
MOVE SQLCODE TO WS-SQLCODE 00731003
DISPLAY "SQL STATUS CODE IS: " WS-SQLCODE 00740003
DISPLAY "ERROR RECORD IS: " DCL-POLICY-NUMBER 00750003
CALL WS-ABENDPGM 00760003
END-EVALUATE. 00770003
200-EXIT. EXIT. 00780003
210-MOVE-PARA. 00790012
MOVE DCL-POLICY-NUMBER TO POLICY-NUMBER 00800003
MOVE DCL-CUST-NAME TO CUST-NAME 00810003
MOVE DCL-INSURED-AMOUNT TO INSURED-AMOUNT 00820003
MOVE DCL-POLICY-TYPE TO POLICY-TYPE 00830003
MOVE DCL-START-DATE TO START-DATE 00840003
MOVE DCL-EXP-DATE TO EXP-DATE 00850003
MOVE DCL-POLICY-STATUS TO POLICY-STATUS 00860003
00861003
WRITE POLICY-DETAILS. 00870003
IF FS-OTF NOT = "00" THEN 00880003
DISPLAY "ERROR IN 210-MOVE-PARA" 00890012
DISPLAY "FILE STATUS IS: " FS-OTF 00900003
DISPLAY "ERROR RECORD IS: " DCL-POLICY-NUMBER 00910003
CALL WS-ABENDPGM 00920003
END-IF. 00930003
ADD +1 TO OT-REC-CNT. 00940003
210-EXIT. EXIT. 00950012
00960012
300-ROWSET-PARA. 00970012
EXEC SQL OPEN CURSOR-2 END-EXEC. 00971012
EVALUATE TRUE 00972012
WHEN SQLCODE NOT = 000 00974012
DISPLAY "ERROR IN 300-ROWSET-PARA" 00975012
MOVE SQLCODE TO WS-SQLCODE 00977012
DISPLAY "CURSOR OPEN STATUS IS: " WS-SQLCODE 00978012
CALL WS-ABENDPGM 00979012
END-EVALUATE. 00979112
EXEC SQL 00980012
FETCH FIRST ROWSET FROM CURSOR-2 FOR 10 ROWS 00990013
INTO :WS-ROWSET 01000012
END-EXEC. 01010012
IF SQLCODE = 000 01020012
PERFORM VARYING WS-ARRAY FROM 1 BY 1 UNTIL WS-ARRAY > 10 01030012
DISPLAY "INSURED VALUE: " ROWSET-ARRAY(I) 01040012
END-PERFORM 01050012
ELSE IF SQLCODE = 100 01060012
CONTINUE 01070012
ELSE 01080012
DISPLAY "ERROR IN 300-PARA" 01090012
DISPLAY "INSURED VALUE: " ROWSET-ARRAY(I) 01100012
CALL WS-ABEND-PGM 01110012
END-IF 01120012
END-IF. 01130012
DISPLAY "SQLERRD VALUE: " SQLERRD(3). 01131012
300-EXIT. EXIT. 01140012

You might also like