IDENTIFICATION DIVISION.
00010000
PROGRAM-ID. EMPCURS. 00020000
ENVIRONMENT DIVISION. 00030000
DATA DIVISION. 00040000
WORKING-STORAGE SECTION. 00050000
EXEC SQL 00060000
INCLUDE SQLCA 00070000
END-EXEC. 00080000
EXEC SQL 00081001
INCLUDE EMPDCL 00082001
END-EXEC. 00083001
EXEC SQL 00081001
DECLARE EMPCUR CURSOR
FOR SELECT EID, ENAME
FROM EMP
END-EXEC.
77 WS-DATE PIC X(19) VALUE SPACES. 00090000
77 WS-LINE PIC X(35) VALUE SPACES. 00090000
77 WS-SQLCODE PIC +9(03) VALUE SPACES. 00090000
77 WS-EMP-COUNT PIC 9(03) VALUE ZEROS. 00090000
77 WS-EMP-COUNT-EDIT PIC Z(03). 00090000
77 WS-ENAME-IND PIC S9(04) COMP. 00100000
77 WS-EOC PIC X(01) VALUE 'N'.
PROCEDURE DIVISION. 00110000
0000-MAIN-PARA. 00120000
PERFORM 1000-INIT-PARA
THRU 1000-INIT-EXIT.
PERFORM 2000-SYSDATE-PARA 00120101
THRU 2000-SYSDATE-EXIT.
PERFORM 3000-OPEN-EMPCUR 00120202
THRU 3000-OPEN-EXIT.
PERFORM 0020-HEADER-PARA 00120301
THRU 0020-HEADER-EXIT.
PERFORM 4000-FETCH-EMPCUR 00120301
THRU 4000-FETCH-EXIT
UNTIL WS-EOC = 'Y'.
PERFORM 0030-FOOTER-PARA
THRU 0030-FOOTER-EXIT.
PERFORM 5000-CLOSE-EMPCUR 00120403
THRU 5000-CLOSE-EXIT.
PERFORM 9000-END-PARA 00120503
THRU 9000-END-EXIT.
1000-INIT-PARA. 00121001
MOVE LOW-VALUES TO DCLEMP.
MOVE LOW-VALUES TO WS-DATE WS-LINE.
MOVE ZERO TO WS-EMP-COUNT.
1000-INIT-EXIT.
EXIT.
2000-SYSDATE-PARA. 00121001
EXEC SQL 00130000
SELECT SYSDATE
INTO :WS-DATE
FROM SYSIBM.SYSDUMMY1
END-EXEC. 00150000
IF SQLCODE = 0 00160000
DISPLAY " TODAY IS " WS-DATE 00170000
ELSE 00180000
MOVE SQLCODE TO WS-SQLCODE 00190000
DISPLAY ' SYSDATE SQL FAILED : ' WS-SQLCODE 00200000
PERFORM 9000-END-PARA
THRU 9000-END-EXIT
END-IF. 00210000
2000-SYSDATE-EXIT.
EXIT.
3000-OPEN-EMPCUR. 00211002
EXEC SQL 00211104
OPEN EMPCUR
END-EXEC. 00211204
IF SQLCODE = 0 00160000
DISPLAY " EMPCUR OPEN SUCCESSFUL!" 00170000
ELSE 00180000
MOVE SQLCODE TO WS-SQLCODE 00190000
DISPLAY ' EMPCUR OPEN ERROR : ' WS-SQLCODE 00200000
PERFORM 9000-END-PARA
THRU 9000-END-EXIT
END-IF. 00210000
3000-OPEN-EXIT.
EXIT.
4000-FETCH-EMPCUR. 00211302
EXEC SQL 00212001
FETCH EMPCUR
INTO :HV-EID,:HV-ENAME:WS-ENAME-IND 002
END-EXEC. 00214001
IF SQLCODE = 0 THEN 00215001
IF WS-ENAME-IND = -1 THEN
MOVE SPACES TO HV-ENAME
END-IF
ADD 1 TO WS-EMP-COUNT
DISPLAY WS-EMP-COUNT SPACE HV-EID SPACE HV-ENAME
ELSE IF SQLCODE = 100 THEN 00217001
MOVE 'Y' TO WS-EOC
ELSE
MOVE SQLCODE TO WS-SQLCODE 00218001
DISPLAY ' EMPCUR FETCH ERROR: ' WS-SQLCODE 00219002
PERFORM 9000-END-PARA
THRU 9000-END-EXIT
END-IF. 00219101
4000-FETCH-EXIT.
EXIT.
5000-CLOSE-EMPCUR. 00211002
EXEC SQL 00211104
CLOSE EMPCUR
END-EXEC. 00211204
IF SQLCODE = 0 00160000
DISPLAY " EMPCUR CLOSED SUCCESSFUL!" 00170000
ELSE 00180000
MOVE SQLCODE TO WS-SQLCODE 00190000
DISPLAY ' EMPCUR CLOSE ERROR : ' WS-SQLCODE 00200000
PERFORM 9000-END-PARA
THRU 9000-END-EXIT
END-IF. 00210000
5000-CLOSE-EXIT.
EXIT.
0010-LINE-PARA. 00222002
MOVE ALL "*" TO WS-LINE.
DISPLAY WS-LINE.
0010-LINE-EXIT.
EXIT.
0020-HEADER-PARA. 00222002
PERFORM 0010-LINE-PARA
THRU 0010-LINE-EXIT.
DISPLAY " EMPLOYEE DETAILS". 00216002
DISPLAY " ~~~~~~~~~~~~~~~~". 00216002
DISPLAY " S# EMPID NAME ". 00216002
DISPLAY "-----------------". 00216002
0020-HEADER-EXIT. 00222002
EXIT.
0030-FOOTER-PARA. 00222002
PERFORM 0010-LINE-PARA
THRU 0010-LINE-EXIT.
MOVE WS-EMP-COUNT TO WS-EMP-COUNT-EDIT
DISPLAY " EMPLOYEE COUNT : " WS-EMP-COUNT-EDIT.
0030-FOOTER-EXIT. 00222002
EXIT.
9000-END-PARA.
STOP RUN. 00230000
9000-END-EXIT.
EXIT.