You are on page 1of 6

IDENTIFICATION DIVISION.

PROGRAM-ID. DB2D46P3.
AUTHOR. LATA.
DATE-WRITTEN. AUGUST 07,2012.
DATE-COMPILED. AUGUST 07,2012.
******************************************************************
***
BRIEF PROGRAM DESCRIPTION
***
******************************************************************
*DATE-WRITTEN
: AUGUST 07,2012
*PROGRAM OBJECTIVE : THIS PROGRAM GIVES THE NAME OF THE VENDOR
*
: WITH vendor'S address who supplies the car
*
: FERRARI.
*INPUT
: TB_EMP
*OUTPUT
: PS FILE
*ENTRY FROM
: NO OTHER PROGRAM CALLS THIS PROGRAM.
*REMARKS
: SAMPLE PROGRAM FOR CURSOR.
*TABLES INSERTED
: NONE.
*TABLES SELECTED
: TB_EMP.
*TABLES UPDATED
: NONE.
*TABLES USED
: TB_EMP
*INPUT FILES
: NONE.
*OUTPUT FILES
: PS-FILE
******************************************************************
*
MAINTENANCE LOG
******************************************************************
* REVISION NO.| DATE MODIFIED | AUTHOR
| COMMENTS
******************************************************************
*
V1.0
| 21-MAR-2012 | COGNIZANT | INITIAL VERSION
******************************************************************
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT PS-OUTPUT-FILE ASSIGN TO OUTFILE
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WS-FST-EMPDET.
DATA DIVISION.
*
FILE SECTION.
FD PS-OUTPUT-FILE.
01 WS-OUTPUT-REC.
05 WS-VEND-NAME
PIC X(15).
05 FILLER
PIC X(01).
05 WS-PROD-NAME
PIC X(15).
05 FILLER
PIC X(49).
WORKING-STORAGE SECTION.
************************************************************
*VARIABLES TO HOLD FILE STATUS
****************************************************************
*
01 WS-G-FILE-STATUS.
05 WS-FST-EMPDET
PIC X(02).
88 C01-IND-FS1-SUCCESS
VALUE '00'.
88 C01-IND-FS1-EOF
VALUE '10'.
88 C01-IND-FS1-REC-NOT-FND
VALUE '23'.
*
******************************************************************
*VARIABLES TO HOLD TEMP VARIABLES
******************************************************************
*

01 W01-G-TEMP-VAR.
05 WS-EMP-FILE-LEN

PIC 9(04).

*
01 WS-DISPLAY-MSG.
05 WS-EMP-FILE-CLSD

PIC X(15)
VALUE 'EMP FILE CLOSED'.
05 WS-EMP-FILE-NTCLSD
PIC X(20)
VALUE 'EMP FILE NOT CLOSED'.
05 WS-EMP-FILE-OPEN
PIC X(15)
VALUE 'EMP FILE OPENED'.
05 WS-EMP-FILE-NTOPEN
PIC X(20)
VALUE 'EMP FILE NOT OPENED'.
05 WS-EMP-FILE-READ-SUCS
PIC X(20)
VALUE 'FILE READ SUCCESS'.
05 WS-EMP-FILE-READERR
PIC X(20)
VALUE 'EMP FILE READ ERROR'.
******************************************************************
*VARIABLES TO HOLD SQL ERROR MESSAGES
******************************************************************
01 WSS-ERR-MSG.
05 WS-ERR-MSG.
10 WS-ERR-LEN
PIC S9(4) COMP VALUE 800.
10 WS-ERR-TEXT
PIC X(80)
OCCURS 10 TIMES.
05 WS-ERR-LRECL
PIC S9(9) COMP VALUE 80.
01 WS-DB2-ERRMSG-IDX
PIC S9(4) COMP.
*
******************************************************************
*VARIABLES TO HOLD SQL ERROR CODES
******************************************************************
*
01 WS-SQL-ERR-CODE
PIC S9(3)
SIGN LEADING SEPARATE.
88 WS-END-OF-TABLE
VALUE +100.
88 WS-SQL-OPERATION-SUCCESS
VALUE +000.
88 WS-TABLE-NOT-FOUND
VALUE -204.
88 WS-CURSOR-OPEN-FAIL
VALUE -501.
88 WS-CURSOR-ALREADY-OPEN
VALUE -502.
88 WS-ILLEGAL-SYMBOL
VALUE -104,-199.
*
******************************************************************
*VARIABLES TO HOLD VARCHAR VALUES FROM TABLE
******************************************************************
*
* 01 WS-VEND-NAME.
* 05 WS-VEND-NAME-LEN
PIC S9(4) USAGE COMP.
* 05 WS-VEND-NAME-TEXT
PIC X(15).
*01 WS-VEND-ST-ADDRESS.
* 05 WS-VEND-ST-ADDRESS-LEN
PIC S9(4) USAGE COMP.
* 05 WS-VEND-ST-ADDRESS-TEXT
PIC X(30).
*
******************************************************************
*THIS WILL INCLUDE THE DCLGEN.
******************************************************************
*
EXEC SQL
INCLUDE DCLPRD
END-EXEC.
*
EXEC SQL

INCLUDE DCLVND
END-EXEC.
*
EXEC SQL
INCLUDE DCLPVD
END-EXEC.
******************************************************************
*THIS WILL INCLUDE THE COPYBOOK SQL COMMUNICATION AREA.
******************************************************************
*
EXEC SQL
INCLUDE SQLCA
END-EXEC.
*
******************************************************************
*DECLARE THE CURSOR TO READ FROM TB_PROD_VEND FOR VEND ID
******************************************************************
*
EXEC SQL
DECLARE CS_TB_PROD_VEND
CURSOR FOR
SELECT
VEND_NAME
,PROD_NAME
FROM
TB_PROD A,TB_VEND B,TB_PROD_VEND C
WHERE B.VEND_ID=C.PROD_VEND_VEND_ID AND
C.PROD_VEND_PROD_ID=A.PROD_NO
END-EXEC.
******************************************************************
PROCEDURE DIVISION.
*
************************************************************
0000-MAIN-PARA.
************************************************************
*
PERFORM 1000-INITIALIZATION-PARA
THRU 1000-INITIALIZATION-PARA-EXIT
PERFORM 2000-PROCESS-PARA
THRU 2000-PROCESS-PARA-EXIT
*
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
.
*
************************************************************
0000-MAIN-PARA-EXIT.
************************************************************
*
EXIT
.
*
************************************************************
*PROGRAMS STARTS HERE
*
************************************************************
************************************************************
1000-INITIALIZATION-PARA.
************************************************************
*

INITIALIZE WS-SQL-ERR-CODE
.
************************************************************
1000-INITIALIZATION-PARA-EXIT.
************************************************************
*
EXIT
.
*
******************************************************************
2000-PROCESS-PARA.
******************************************************************
*
OPEN EXTEND PS-OUTPUT-FILE
EVALUATE TRUE
WHEN C01-IND-FS1-SUCCESS
DISPLAY WS-EMP-FILE-OPEN
WHEN OTHER
DISPLAY WS-EMP-FILE-NTOPEN
DISPLAY WS-FST-EMPDET
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
END-EVALUATE
.
******************************************************************
*OPENING THE CURSOR
******************************************************************
*
EXEC SQL
OPEN CS_TB_PROD_VEND
END-EXEC.
*
MOVE SQLCODE TO WS-SQL-ERR-CODE
*
EVALUATE TRUE
WHEN WS-SQL-OPERATION-SUCCESS
DISPLAY 'CURSOR OPENED'
PERFORM 3000-CURSOR-FETCH-PARA
THRU
3000-CURSOR-FETCH-PARA-EXIT
UNTIL SQLCODE = +100
WHEN WS-CURSOR-ALREADY-OPEN
PERFORM 4000-CURSOR-CLOSE-PARA
THRU
4000-CURSOR-CLOSE-PARA-exit
WHEN WS-CURSOR-OPEN-FAIL
PERFORM 9000-TERMINATION-PARA
THRU
9000-TERMINATION-PARA-EXIT
WHEN OTHER
CALL 'DSNTIAR' USING SQLCA,
WS-ERR-MSG,
WS-ERR-LRECL
PERFORM VARYING WS-DB2-ERRMSG-IDX
FROM 1 BY 1 UNTIL WS-DB2-ERRMSG-IDX > 10
DISPLAY WS-ERR-TEXT(WS-DB2-ERRMSG-IDX)
END-PERFORM
PERFORM 9000-TERMINATION-PARA
THRU
9000-TERMINATION-PARA-EXIT

END-EVALUATE
.
************************************************************
2000-PROCESS-PARA-EXIT.
************************************************************
*
EXIT
.
*
******************************************************************
3000-CURSOR-FETCH-PARA.
******************************************************************
*
EXEC SQL
FETCH CS_TB_PROD_VEND
INTO :HVVEND-NAME
,:HVPROD-NAME
END-EXEC.
*
MOVE SQLCODE TO WS-SQL-ERR-CODE
*
EVALUATE TRUE
WHEN WS-SQL-OPERATION-SUCCESS
DISPLAY 'SELECTION PERFORMED'
PERFORM 5000-WRITE-PARA
THRU
5000-WRITE-PARA-EXIT
PERFORM 9000-TERMINATION-PARA
THRU
9000-TERMINATION-PARA-EXIT
WHEN OTHER
CALL 'DSNTIAR' USING SQLCA,
WS-ERR-MSG,
WS-ERR-LRECL
PERFORM VARYING WS-DB2-ERRMSG-IDX
FROM 1 BY 1 UNTIL WS-DB2-ERRMSG-IDX > 10
DISPLAY WS-ERR-TEXT(WS-DB2-ERRMSG-IDX)
END-PERFORM
PERFORM 9000-TERMINATION-PARA
THRU
9000-TERMINATION-PARA-EXIT
END-EVALUATE
.
3000-CURSOR-FETCH-PARA-EXIT.
EXIT
.
******************************************************************
5000-WRITE-PARA.
******************************************************************
*
MOVE
HVPROD-NAME
TO WS-PROD-NAME
MOVE
HVVEND-NAME
TO WS-VEND-NAME
WRITE WS-OUTPUT-REC.
.
*
************************************************************
5000-WRITE-PARA-EXIT.
************************************************************
*

EXIT
.

*
******************************************************************
4000-CURSOR-CLOSE-PARA.
******************************************************************
*
CLOSE PS-OUTPUT-FILE
EXEC SQL
CLOSE CS_TB_PROD_VEND
END-EXEC
*
EVALUATE TRUE
WHEN WS-SQL-OPERATION-SUCCESS
PERFORM 9000-TERMINATION-PARA
THRU
9000-TERMINATION-PARA-EXIT
END-EVALUATE
.
*
************************************************************
4000-CURSOR-CLOSE-PARA-EXIT.
************************************************************
*
EXIT
.
*
************************************************************
*PROGRAM TERMINATES HERE.
************************************************************
*
************************************************************
9000-TERMINATION-PARA.
************************************************************
*
STOP RUN.
*
************************************************************
9000-TERMINATION-PARA-EXIT.
************************************************************
*
EXIT.
*

You might also like