Sie sind auf Seite 1von 11

IDENTIFICATION

PROGRAM-ID.
AUTHOR.
DATE-WRITTEN.
DATE-COMPILED.

DIVISION.
VARNULLP.
DEBRAJ.
AUGUST 09, 2013.
AUGUST 09, 2013.

******************************************************************
***
BRIEF PROGRAM DESCRIPTION
***
******************************************************************
*AUTHOR
: DEBRAJ.
*DATE-WRITTEN
: 09-AUGUST-2013.
*PROGRAM OBJECTIVE : 1) TO READ FROM AN INPUT PS FILE AND INSERT
*
THE RECORDS INTO SQL TABLE "TB_PRODUCT"
*
AND WRITE ALL THE INSERTED RECORDS INTO
*
AN OUTPUT PS FILE.
*INPUT
: NONE.
*OUTPUT
: NONE.
*ENTRY FROM
: NO OTHER PROGRAM CALLS THIS PROGRAM.
*REMARKS
: PRODUCT DETAILS PROGRAM.
*TABLES INSERTED
: TB_PRODUCT.
*TABLES SELECTED
: TB_PRODUCT.
*TABLES UPDATED
: NONE.
*TABLES USED
: TB_PRODUCT.
*INPUT FILES
: TCHN142.MJ004.DB2.VARNULL.PSIN.
*OUTPUT FILES
: TCHN142.MJ004.DB2.VARNULL.PSOUT.
******************************************************************
*
MAINTENANCE LOG
******************************************************************
* REVISION NO.| DATE MODIFIED | AUTHOR
| COMMENTS
******************************************************************
*
V1.0
|09-AUGUST-2013 | DEBRAJ
| INITIAL VERSION
*--------------|---------------|-----------|---------------------******************************************************************
*----------------------------------------------------------------ENVIRONMENT DIVISION.
*----------------------------------------------------------------INPUT-OUTPUT SECTION.
*----------------------------------------------------------------FILE-CONTROL.
***TO DEFINE THE FILE STRUCTURE OF THE I/P PS FILE
SELECT BI001-PRODUCTFILE
ASSIGN TO PRODINPS
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WS-FS1.
***TO DEFINE THE FILE STRUCTURE OF THE O/P PS FILE FOR NORMAL
SELECT BO001-PRODUCTFILE
ASSIGN TO PRODOTPS
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WS-FS2.
***TO DEFINE THE FILE STRUCTURE OF THE O/P PS FILE FOR CURSOR
SELECT BO002-PRODUCTFILE
ASSIGN TO PRODOTPS
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WS-FS3.
*----------------------------------------------------------------DATA DIVISION.

*----------------------------------------------------------------FILE SECTION.
*----------------------------------------------------------------***TO DEFINE THE RECORD STRUCTURE OF THE I/P PS FILE
FD BI001-PRODUCTFILE.
01 BI001-PRODUCTREC.
05 BI001-PRODID
PIC X(05).
05 FILLER
PIC X(01).
05 BI001-PRODNAME
PIC X(15).
05 FILLER
PIC X(01).
05 BI001-PRODDES
PIC X(20).
05 FILLER
PIC X(01).
05 BI001-PRODDOM
PIC X(10).
05 FILLER
PIC X(01).
05 BI001-PRODCOM
PIC X(10).
05 FILLER
PIC X(16).
***TO DEFINE THE RECORD STRUCTURE OF THE O/P PS FILE FOR NORMAL
FD BO001-PRODUCTFILE.
01 BO001-PRODUCTREC.
05 BO001-PRODID
PIC X(05).
05 FILLER
PIC X(01).
05 BO001-PRODNAME
PIC X(15).
05 FILLER
PIC X(01).
05 BO001-PRODDES
PIC X(20).
05 FILLER
PIC X(01).
05 BO001-PRODDOM
PIC X(10).
05 FILLER
PIC X(01).
05 BO001-PRODCOM
PIC X(10).
05 FILLER
PIC X(16).
***TO DEFINE THE RECORD STRUCTURE OF THE O/P PS FILE FOR CURSOR
FD BO002-PRODUCTFILE.
01 BO002-PRODUCTREC.
05 BO002-PRODID
PIC X(05).
05 FILLER
PIC X(01).
05 BO002-PRODNAME
PIC X(15).
05 FILLER
PIC X(01).
05 BO002-PRODDES
PIC X(20).
05 FILLER
PIC X(01).
05 BO002-PRODDOM
PIC X(10).
05 FILLER
PIC X(01).
05 BO002-PRODCOM
PIC X(10).
05 FILLER
PIC X(16).
*----------------------------------------------------------------WORKING-STORAGE SECTION.
*----------------------------------------------------------------***VARIABLES TO HOLD THE FILE STATUS OF THE I/P PS FILE
01 WS-FS1
PIC 9(02).
88 CS-FS1-SUCC
VALUE 00.
88 CS-FS1-EOF
VALUE 10.
88 CS-FS1-SIZE-ERROR
VALUE 39.
88 CS-FS1-ALRDY-OPEN
VALUE 41.
88 CS-FS1-CLOSE-NOT-OPEN
VALUE 42.
88 CS-FS1-READ-WRNG-MODE
VALUE 47.
***VARIABLES TO HOLD THE FILE STATUS OF THE O/P PS FILE
01 WS-FS2
PIC 9(02).
88 CS-FS2-SUCC
VALUE 00.

88
88
88
88

CS-FS2-SIZE-ERROR
CS-FS2-ALRDY-OPEN
CS-FS2-CLOSE-NOT-OPEN
CS-FS2-WRITE-WRNG-MODE

***VARIABLES TO HOLD SQL ERRORS


01 WS-SQLCODE
88
88
88
88
88
88
88
88
88
88
88
88

CS-SQL-SUCC
CS-SQL-ILLEGAL-SYMBOL
CS-SQL-DATE-FRMT-WRNG
CS-SQL-TABLE-NOT-FND
CS-SQL-COLUMN-NOT-FND
CS-SQL-NULL-HANDLING-WRNG
CS-SQL-CURSOR-OPEN-FAIL
CS-SQL-CURSOR-ALRDY-OPEN
CS-SQL-DUPLICATE-REC-EXTS
CS-SQL-PLAN-NOT-FND
CS-SQL-TIMESTMP-WRNG
CS-SQL-RESRC-NOT-AVLBLE

VALUE
VALUE
VALUE
VALUE

39.
41.
42.
48.

PIC S9(03)
SIGN IS LEADING SEPARATE.
VALUE +000.
VALUE -104.
VALUE -180.
VALUE -204.
VALUE -206.
VALUE -305.
VALUE -501.
VALUE -502.
VALUE -803.
VALUE -805.
VALUE -818.
VALUE -905.

***VARIABLES TO HOLD SQL ERROR MESSAGES


01 WS-SQL-ERR-MSG.
05 WS-SQL-ERR-LEN
PIC S9(04) COMP
VALUE 800.
05 WS-SQL-ERR-TEXT
PIC X(80)
OCCURS 10 TIMES INDEXED BY INDX.
05 WS-SQL-ERR-TEXT-LEN
PIC S9(09) COMP
VALUE 80.
***VARIABLES TO HANDLE NULL FIELD
01 WS-NULL-IND-DES

PIC S9(04) COMP.

***VARIABLES TO HOLD TEMPORARY DATA FOR CALCULATION


01 WS-SPACES
PIC X(20) VALUE SPACES.
01 WS-NEG
PIC S9(01) VALUE -1.
01 WS-ZERO
PIC 9(01) VALUE 0.
***THIS IS THE DECLARATION OF THE SQL COMMUNICATION AREA
EXEC SQL
INCLUDE SQLCA
END-EXEC.
***THIS IS THE DECLARATION OF THE SQL DCLGEN FOR TABLE
***"TB_PRODUCT"
EXEC SQL
INCLUDE DCLPRODN
END-EXEC.
***THIS IS TO DECLARE CURSOR
EXEC SQL
DECLARE CS_PRODN CURSOR
FOR
SELECT PROD_ID
,PROD_NAME
,PROD_DES
,PROD_DOM
,PROD_COM
FROM TB_PRODUCT
END-EXEC.

*----------------------------------------------------------------LINKAGE SECTION.
*----------------------------------------------------------------*----------------------------------------------------------------PROCEDURE DIVISION.
*----------------------------------------------------------------0000-MAIN-PARA.
***TO DEFINE INITIALIZE, PROCESS AND TERMINATION 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.
*----------------------------------------------------------------1000-INITIALIZATION-PARA.
***TO INITIALIZE WORKING STORAGE VARIABLES
*----------------------------------------------------------------INITIALIZE WS-FS1
INITIALIZE WS-FS2
.
1000-INITIALIZATION-PARA-EXIT.
EXIT.
*----------------------------------------------------------------2000-PROCESS-PARA.
***TO PROCESS OPEN, READ AND CLOSE PARA
*----------------------------------------------------------------PERFORM 2100-OPEN-FILE-PARA
THRU 2100-OPEN-FILE-PARA-EXIT
PERFORM 2200-OPEN-CURSOR-PARA
THRU 2200-OPEN-CURSOR-PARA-EXIT
PERFORM 2300-READ-FILE-PARA
THRU 2300-READ-FILE-PARA-EXIT UNTIL CS-FS1-EOF
PERFORM 2400-FETCH-CURSOR-PARA
THRU 2400-FETCH-CURSOR-PARA-EXIT
PERFORM 2500-CLOSE-FILE-PARA
THRU 2500-CLOSE-FILE-PARA-EXIT
PERFORM 2600-CLOSE-CURSOR-PARA
THRU 2600-CLOSE-CURSOR-PARA-EXIT
.
2000-PROCESS-PARA-EXIT.
EXIT.
*----------------------------------------------------------------2100-OPEN-FILE-PARA.

***TO OPEN THE I/P AND O/P FILE ACCORDING TO THEIR CORRESPONDING
***MODES
*----------------------------------------------------------------OPEN INPUT BI001-PRODUCTFILE
EVALUATE TRUE
WHEN CS-FS1-SUCC
DISPLAY "I/P PS FILE HAS BEEN OPENED SUCCESSFULLY"
WHEN CS-FS1-SIZE-ERROR
DISPLAY "I/P PS FILE SIZE ERROR"
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN CS-FS1-ALRDY-OPEN
DISPLAY "I/P PS FILE ALREADY OPEN"
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN OTHER
DISPLAY "ERROR OPENING I/P PS FILE : " WS-FS1
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
END-EVALUATE
OPEN OUTPUT BO001-PRODUCTFILE
EVALUATE TRUE
WHEN CS-FS2-SUCC
DISPLAY "O/P PS FILE HAS BEEN OPENED SUCCESSFULLY"
WHEN CS-FS2-SIZE-ERROR
DISPLAY "O/P PS FILE SIZE ERROR"
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN CS-FS2-ALRDY-OPEN
DISPLAY "O/P PS FILE ALREADY OPEN"
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN OTHER
DISPLAY "ERROR OPENING O/P PS FILE : " WS-FS2
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
END-EVALUATE
.
2100-OPEN-FILE-PARA-EXIT.
EXIT.
*----------------------------------------------------------------2200-OPEN-CURSOR-PARA.
***TO OPEN THE CURSOR
*----------------------------------------------------------------EXEC SQL
OPEN CS_PRODN
END-EXEC
MOVE SQLCODE

TO WS-SQLCODE

EVALUATE TRUE
WHEN CS-SQL-SUCC
DISPLAY "CURSOR HAS BEEN OPENED SUCCESSFULLY"
WHEN CS-SQL-CURSOR-OPEN-FAIL
DISPLAY 'CURSOR OPEN FAIL'
PERFORM 9000-TERMINATION-PARA

THRU 9000-TERMINATION-PARA-EXIT
WHEN CS-SQL-CURSOR-ALRDY-OPEN
DISPLAY 'CURSOR ALREADY OPEN'
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN OTHER
CALL 'DSNTIAR'
USING SQLCA
, WS-SQL-ERR-MSG
, WS-SQL-ERR-TEXT-LEN
PERFORM VARYING INDX FROM 1 BY 1 UNTIL INDX > 10
DISPLAY WS-SQL-ERR-TEXT(INDX)
END-PERFORM
END-EVALUATE
.
2200-OPEN-CURSOR-PARA-EXIT.
EXIT.
*----------------------------------------------------------------2300-READ-FILE-PARA.
***TO READ THE I/P PS FILE UNTIL END OF FILE IS REACHED
*----------------------------------------------------------------READ BI001-PRODUCTFILE
EVALUATE TRUE
WHEN CS-FS1-SUCC
PERFORM 2310-MOVE-INSERT-PARA
THRU 2310-MOVE-INSERT-PARA-EXIT
WHEN CS-FS1-EOF
CONTINUE
WHEN CS-FS1-READ-WRNG-MODE
DISPLAY "TRIED TO READ WHICH IS NOT OPEN"
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN OTHER
DISPLAY "ERROR READING I/P PS FILE : " WS-FS1
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
END-EVALUATE
.
2300-READ-FILE-PARA-EXIT.
EXIT.
*--------------------------------------------------------------2310-MOVE-INSERT-PARA.
***TO MOVE THE INPUT VARIABLES INTO HOST VARIABLES AND INSERT
***THE RECORDS INTO THE TABLE "TB_PRODUCT"
*--------------------------------------------------------------MOVE BI001-PRODID
TO HV-PROD-ID
***TO HANDLE VARCHAR FIELD
MOVE SPACES
MOVE BI001-PRODNAME
MOVE LENGTH OF HV-PROD-NAME-TEXT

TO HV-PROD-NAME-TEXT
TO HV-PROD-NAME-TEXT
TO HV-PROD-NAME-LEN

***TO HANDLE NULL VALUE


IF BI001-PRODDES = WS-SPACES
MOVE WS-NEG
ELSE
MOVE WS-ZERO
END-IF

TO WS-NULL-IND-DES
TO WS-NULL-IND-DES

MOVE BI001-PRODDES
MOVE BI001-PRODDOM
MOVE BI001-PRODCOM

TO HV-PROD-DES
TO HV-PROD-DOM
TO HV-PROD-COM

EXEC SQL
INSERT INTO TB_PRODUCT
VALUES(:HV-PROD-ID
,:HV-PROD-NAME
,:HV-PROD-DES :WS-NULL-IND-DES
,:HV-PROD-DOM
,:HV-PROD-COM
)
END-EXEC
MOVE SQLCODE

TO WS-SQLCODE

EVALUATE TRUE
WHEN CS-SQL-SUCC
DISPLAY "RECORD HAS BEEN INSERTED SUCCESSFULLY"
PERFORM 2311-MOVE-WRITE-PARA
THRU 2311-MOVE-WRITE-PARA-EXIT
WHEN CS-SQL-ILLEGAL-SYMBOL
DISPLAY "ILLEGAL SYMBOL FOR THE SQL QUERY"
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN CS-SQL-DATE-FRMT-WRNG
DISPLAY "DATE FORMAT WRONG"
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN CS-SQL-TABLE-NOT-FND
DISPLAY "TABLE NOT FOUND"
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN CS-SQL-COLUMN-NOT-FND
DISPLAY "COLUMN NOT FOUND"
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN CS-SQL-NULL-HANDLING-WRNG
DISPLAY "NULL HANDLING NOT FOUND"
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN CS-SQL-DUPLICATE-REC-EXTS
DISPLAY "DUPLICATE RECORD EXISTS"
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN CS-SQL-PLAN-NOT-FND
DISPLAY "PLAN NOT FOUND"
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN CS-SQL-TIMESTMP-WRNG
DISPLAY "TIME STAMP DOES NOT MATCH"
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN CS-SQL-RESRC-NOT-AVLBLE
DISPLAY "RESOURCE NOT AVAILABLE"
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN OTHER
CALL "DSNTIAR"
USING SQLCA

, WS-SQL-ERR-MSG
, WS-SQL-ERR-TEXT-LEN
PERFORM VARYING INDX FROM 1 BY 1 UNTIL INDX > 10
DISPLAY WS-SQL-ERR-TEXT(INDX)
END-PERFORM
END-EVALUATE
.
2310-MOVE-INSERT-PARA-EXIT.
EXIT.
*--------------------------------------------------------------2311-MOVE-WRITE-PARA.
***TO MOVE HOST VARIABLES INTO OUTPUT VARIABLES AND WRITE THOSE
***RECORDS INTO THE O/P PS FILE
*--------------------------------------------------------------MOVE SPACES
TO BO001-PRODUCTREC
MOVE HV-PROD-ID
TO BO001-PRODID
MOVE HV-PROD-NAME-TEXT
TO BO001-PRODNAME
IF WS-NULL-IND-DES = WS-NEG
MOVE WS-SPACES
ELSE
MOVE HV-PROD-DES
END-IF
MOVE HV-PROD-DOM
MOVE HV-PROD-COM

TO BO001-PRODDES
TO BO001-PRODDES
TO BO001-PRODDOM
TO BO001-PRODCOM

WRITE BO001-PRODUCTREC
EVALUATE TRUE
WHEN CS-FS2-SUCC
DISPLAY 'WRITE HAS BEEN DONE SUCCESSFULLY'
WHEN CS-FS2-WRITE-WRNG-MODE
DISPLAY 'TRIED TO WRITE BUT THE O/P FILE IS NOT OPEN'
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN OTHER
DISPLAY 'ERROR WRITING O/P PS FILE : ' WS-FS2
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
END-EVALUATE
.
2311-MOVE-WRITE-PARA-EXIT.
EXIT.
*--------------------------------------------------------------2400-FETCH-CURSOR-PARA.
***TO FETCH THE CURSOR FOR RETRIEVING RECORDS FROM THE TABLE
*--------------------------------------------------------------EXEC SQL
FETCH CS_PRODN
INTO :HV-PROD-ID
,:HV-PROD-NAME
,:HV-PROD-DES :WS-NULL-IND-DES
,:HV-PROD-DOM
,:HV-PROD-COM
END-EXEC
MOVE SQLCODE

TO WS-SQLCODE

EVALUATE TRUE
WHEN CS-SQL-SUCC
DISPLAY 'CURSOR HAS BEEN FETCHED SUCCESSFULLY'
PERFORM 2410-MOVE-WRITE-PARA
THRU 2410-MOVE-WRITE-PARA-EXIT
WHEN CS-SQL-CURSOR-OPEN-FAIL
DISPLAY 'CURSOR OPEN FAIL'
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN CS-SQL-CURSOR-ALRDY-OPEN
DISPLAY 'CURSOR ALREADY OPEN'
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN OTHER
CALL 'DSNTIAR'
USING SQLCA
, WS-SQL-ERR-MSG
, WS-SQL-ERR-TEXT-LEN
PERFORM VARYING INDX FROM 1 BY 1 UNTIL INDX > 10
DISPLAY WS-SQL-ERR-TEXT(INDX)
END-PERFORM
END-EVALUATE
.
2400-FETCH-CURSOR-PARA-EXIT.
EXIT.
*--------------------------------------------------------------2410-MOVE-WRITE-PARA.
***TO MOVE THE HOST VARIABLES INTO THE O/P VARIABLES AND THEN
***WRITE THE RECORDS INTO AN O/P PS FILE
*--------------------------------------------------------------MOVE SPACES
TO BO002-PRODUCTREC
MOVE HV-PROD-ID
TO BO002-PRODID
MOVE HV-PROD-NAME-TEXT
TO BO002-PRODNAME
IF WS-NULL-IND-DES = WS-NEG
MOVE WS-SPACES
ELSE
MOVE HV-PROD-DES
END-IF
MOVE HV-PROD-DOM
MOVE HV-PROD-COM

TO BO002-PRODDES
TO BO002-PRODDES
TO BO002-PRODDOM
TO BO002-PRODCOM

WRITE BO002-PRODUCTREC
EVALUATE TRUE
WHEN CS-FS3-SUCC
DISPLAY 'WRITE HAS BEEN DONE SUCCESSFULLY'
WHEN CS-FS3-WRITE-WRNG-MODE
DISPLAY 'TRIED TO WRITE BUT THE O/P FILE IS NOT OPEN'
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN OTHER
DISPLAY 'ERROR WRITING O/P PS FILE : ' WS-FS3
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
END-EVALUATE
.

*--------------------------------------------------------------2500-CLOSE-FILE-PARA.
***TO CLOSE THE I/P AND O/P PS FILES
*--------------------------------------------------------------CLOSE BI001-PRODUCTFILE
EVALUATE TRUE
WHEN CS-FS1-SUCC
DISPLAY "I/P PS FILE HAS BEEN CLOSED SUCCESSFULLY"
WHEN CS-FS1-CLOSE-NOT-OPEN
DISPLAY "TRIED TO CLOSE BUT THE I/P FILE CLOSED"
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN OTHER
DISPLAY "ERROR CLOSING I/P PS FILE : " WS-FS1
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
END-EVALUATE
CLOSE BO001-PRODUCTFILE
EVALUATE TRUE
WHEN CS-FS2-SUCC
DISPLAY "O/P PS FILE HAS BEEN CLOSED SUCCESSFULLY"
WHEN CS-FS2-CLOSE-NOT-OPEN
DISPLAY "TRIED TO CLOSE BUT THE O/P FILE CLOSED"
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN OTHER
DISPLAY "ERROR CLOSING O/P PS FILE : " WS-FS2
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
END-EVALUATE
CLOSE BO002-PRODUCTFILE
EVALUATE TRUE
WHEN CS-FS3-SUCC
DISPLAY "O/P PS FILE HAS BEEN CLOSED SUCCESSFULLY"
WHEN CS-FS3-CLOSE-NOT-OPEN
DISPLAY "TRIED TO CLOSE BUT THE O/P FILE CLOSED"
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN OTHER
DISPLAY "ERROR CLOSING O/P PS FILE : " WS-FS3
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
END-EVALUATE
.
2500-CLOSE-FILE-PARA-EXIT.
EXIT.
*--------------------------------------------------------------2600-CLOSE-CURSOR-PARA.
***TO CLOSE THE CURSOR
*--------------------------------------------------------------EXEC SQL
CLOSE CS_PRODN
END-EXEC

MOVE SQLCODE

TO WS-SQLCODE

EVALUATE TRUE
WHEN CS-SQL-SUCC
DISPLAY 'CURSOR HAS BEEN CLOSED SUCCESSFULLY'
WHEN CS-SQL-CURSOR-OPEN-FAIL
DISPLAY 'CURSOR OPEN FAIL'
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN CS-SQL-CURSOR-ALRDY-OPEN
DISPLAY 'CURSOR ALREADY OPEN'
PERFORM 9000-TERMINATION-PARA
THRU 9000-TERMINATION-PARA-EXIT
WHEN OTHER
CALL 'DSNTIAR'
USING SQLCA
, WS-SQL-ERR-MSG
, WS-SQL-ERR-TEXT-LEN
PERFORM VARYING INDX FROM 1 BY 1 UNTIL INDX > 10
DISPLAY WS-SQL-ERR-TEXT(INDX)
END-PERFORM
END-EVALUATE
.
2600-CLOSE-CURSOR-PARA-EXIT.
EXIT.

*--------------------------------------------------------------9000-TERMINATION-PARA.
***TO TERMINATE THE PROGRAM
*--------------------------------------------------------------STOP RUN
.
9000-TERMINATION-PARA-EXIT.
EXIT.

Das könnte Ihnen auch gefallen