File Rewrite

You might also like

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 6

IDENTIFICATION DIVISION.

PROGRAM-ID. TABTASK1.
AUTHOR. COGNIZANT.
DATE-WRITTEN. MARCH 23,2012.
DATE-COMPILED. MARCH 29,2012.
******************************************************************
***
BRIEF PROGRAM DESCRIPTION
***
******************************************************************
*AUTHOR
: COGNIZANT.
*DATE-WRITTEN
: 23-MAR-2012
*PROGRAM OBJECTIVE : THIS PROGRAM READS A RECORD FROM A
*
TB_CATP TABLE AND REWRITE INTO FL_CATP FILE.
*INPUT
: TB_CATP.
*OUTPUT
: FL_CATP.
*ENTRY FROM
: NO OTHER PROGRAM CALLS THIS PROGRAM.
*REMARKS
: SAMPLE PROGRAM FOR
*
: SELECT ONE ROW FROM TB_CATP TABLE AND
*
: REWRITE INTO FL_CATP FLAT FILE.
*TABLES INSERTED
: NONE.
*TABLES SELECTED
: TB_CATP.
*TABLES UPDATED
: NONE.
*TABLES USED
: TB_CATP.
*INPUT FILES
: NONE.
*OUTPUT FILES
: FL_CATP.
******************************************************************
*
MAINTENANCE LOG
******************************************************************
* REVISION NO.| DATE MODIFIED | AUTHOR
| COMMENTS
******************************************************************
*
V1.0
| 21-MAR-2012 | COGNIZANT | INITIAL VERSION
*
V1.0
| 29-MAR-2012 | COGNIZANT | REVISED VERSION
*--------------|---------------|--------- |---------------------*
******************************************************************
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
* OUTPUT FILE - KSDS FILE
SELECT FL01-CATP ASSIGN TO CATPFILE
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
RECORD KEY IS CATP-REG
FILE STATUS WS-FILE-STATUS.
DATA DIVISION.
FILE SECTION.
* DECLARE RECORD STRUCTURE OF THE CATP FILE FL01-CATP
FD FL01-CATP.
01 FL01-CATP-REC.
05 CATP-REG
PIC S9(4) USAGE COMP.
05 FILLER
PIC X(01).
05 CATP-NAME
PIC X(10).
05 FILLER
PIC X(01).
05 CATP-UNIT
PIC X(03).
05 FILLER
PIC X(01).
05 CATP-SALARY
PIC S9(5)V9(2) USAGE COMP-3.
05 FILLER
PIC X(03).
WORKING-STORAGE SECTION.
*
******************************************************************
*VARIABLES TO HOLD SQL ERROR MESSAGES

******************************************************************
01 WS-ERR-MSG.
05 WS-ERR-LEN
PIC S9(4) COMP
VALUE +1000.
05 WS-ERR-TEXT
PIC X(100) OCCURS 10 TIMES
INDEXED BY WS-ERR-IND.
05 WS-ERR-TEXT-LEN
PIC S9(9) COMP
VALUE +100.
******************************************************************
*FILE STATUS VARIABLES DECLARED HERE ALONG WITH STATUS CODE.
******************************************************************
01 WS-FILE-STATUS
PIC X(02).
88 WS-FILE-OPER-SUCCESS
VALUE '00','04'.
88 WS-END-OF-FILE
VALUE '10'.
88 WS-REWRITE-WITHOUT-OPEN-IO VALUE '49'.
88 WS-REWRITE-RECORD-TOO-BIC
VALUE '44'.
88 WS-CLOSE-FILE-CLOSED
VALUE '42'.
*
******************************************************************
*VARIABLES TO HOLD SQL ERROR CODES
******************************************************************
*
01 WS-FILE-STATUS-MESSAGE
PIC X(40).
*
01 WS-SQL-ERR-CODE
PIC S9(3)
SIGN LEADING SEPARATE.
88 WS-END-OF-RECORD
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.
88 WS-MULTIPLE-ROW-FETCH
VALUE -811.
******************************************************************
*THIS IS A DCLGEN FOR SQL COMMUNICATION AREA
*
******************************************************************
EXEC SQL
INCLUDE SQLCA
END-EXEC.
*
******************************************************************
*THIS IS A DCLGEN FOR TB_EMPLOYEE TABLE
******************************************************************
*
EXEC SQL
INCLUDE DCLCATP
END-EXEC.
*
PROCEDURE DIVISION.
************************************************************
0000-MAINLINE.
************************************************************
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-MAINLINE-EXIT.
************************************************************
*
EXIT.
*
************************************************************
*PROGRAMS STARTS HERE
*
*TRUE IS SET TO ALL THE WS-SQL-ERR-CODE
*
*THIS PARA WILL OPEN A FILE AND CHECKS THE STATUS.
************************************************************
************************************************************
************************************************************
1000-INITIALIZATION-PARA.
************************************************************
*
INITIALIZE WS-ERR-MSG.
SET WS-END-OF-RECORD
TO TRUE.
SET WS-SQL-OPERATION-SUCCESS TO TRUE.
SET WS-TABLE-NOT-FOUND
TO TRUE.
SET WS-CURSOR-OPEN-FAIL
TO TRUE.
SET WS-CURSOR-ALREADY-OPEN
TO TRUE.
SET WS-ILLEGAL-SYMBOL
TO TRUE.
SET WS-MULTIPLE-ROW-FETCH
TO TRUE.
*
OPEN I-O FL01-CATP.
*
EVALUATE TRUE
WHEN WS-FILE-OPER-SUCCESS
PERFORM 2000-PROCESS-PARA
THRU
2000-PROCESS-PARA
WHEN OTHER
DISPLAY 'FILE STATUS IS '
WS-FILE-STATUS-MESSAGE
PERFORM 9000-TERMINATION-PARA
THRU
9000-TERMINATION-PARA-EXIT
END-EVALUATE.
************************************************************
1000-INITIALIZATION-PARA-EXIT.
************************************************************
EXIT.
*
******************************************************************
*THIS PARA READS A PARTICULAR ROW FROM THE TB_EMPLOYEE TABLE.
*VALUE IS PASSED TO THE WHERE CONDITION THROUGH MOVE VERB.
******************************************************************
******************************************************************
2000-PROCESS-PARA.
******************************************************************
*
MOVE 30001 TO DCL-TB-CATP-REG.
EXEC SQL
SELECT
TB_CATP_NAME
,TB_CATP_UNIT
,TB_CATP_SALARY
INTO
:DCL-TB-CATP-NAME
,:DCL-TB-CATP-UNIT

,:DCL-TB-CATP-SALARY
FROM
TB_CATP
WHERE
TB_CATP_REG = :DCL-TB-CATP-REG
WITH UR
END-EXEC.
*
MOVE SQLCODE TO WS-SQL-ERR-CODE.
*
EVALUATE TRUE
WHEN WS-SQL-OPERATION-SUCCESS
PERFORM 5000-FILE-REWRITE-PARA
THRU
5000-FILE-REWRITE-PARA-EXIT
PERFORM 5000-FILE-CLOSE-PARA
THRU
5000-FILE-CLOSE-PARA-EXIT
PERFORM 9000-TERMINATION-PARA
THRU
9000-TERMINATION-PARA-EXIT
WHEN WS-END-OF-RECORD
DISPLAY 'END OF RECORD' SPACE SQLCODE
PERFORM 9000-TERMINATION-PARA
THRU
9000-TERMINATION-PARA-EXIT
WHEN WS-TABLE-NOT-FOUND
DISPLAY 'TABLE NOT FOUND' SPACE SQLCODE
PERFORM 9000-TERMINATION-PARA
THRU
9000-TERMINATION-PARA-EXIT
WHEN WS-ILLEGAL-SYMBOL
DISPLAY 'ILLEGAL KEYS' SPACE SQLCODE
PERFORM 9000-TERMINATION-PARA
THRU
9000-TERMINATION-PARA-EXIT
WHEN OTHER
DISPLAY 'SELECT IS UNSUCCESSFUL & SQLCODE : ' SQLCODE
CALL 'DSNTIAR' USING SQLCA
,WS-ERR-MSG
,WS-ERR-TEXT-LEN
DISPLAY WS-ERR-MSG
PERFORM 9000-TERMINATION-PARA
THRU
9000-TERMINATION-PARA-EXIT
END-EVALUATE.
************************************************************
2000-PROCESS-PARA-EXIT.
************************************************************
*
EXIT.
*
******************************************************************
*THIS PARA REWRITE A PARTICULAR FIELD FROM THE TABLE.
*THIS PARA CHECKS THE STATUS FOR THE REWRITE STATEMENT.
******************************************************************
******************************************************************
5000-FILE-REWRITE-PARA.
******************************************************************
COMPUTE DCL-TB-CATP-SALARY = DCL-TB-CATP-SALARY * 5.
MOVE DCL-TB-CATP-SALARY TO CATP-SALARY.
DISPLAY 'DCL-TB-CATP-SALARY' DCL-TB-CATP-SALARY.
*
REWRITE FL01-CATP-REC.
DISPLAY 'REWRT SUCCESS'.
DISPLAY 'WRITE FILE STATUS IS ' WS-FILE-STATUS.
EVALUATE TRUE

WHEN WS-FILE-OPER-SUCCESS
PERFORM 5000-FILE-CLOSE-PARA
THRU
5000-FILE-CLOSE-PARA-EXIT
PERFORM 9000-TERMINATION-PARA
THRU
9000-TERMINATION-PARA-EXIT
WHEN WS-REWRITE-WITHOUT-OPEN-IO
DISPLAY 'TRYING TO REWRITE WITHOUT OPEN THE FILE IN'
'I-O MODE' WS-FILE-STATUS-MESSAGE
PERFORM 5000-FILE-CLOSE-PARA
THRU
5000-FILE-CLOSE-PARA-EXIT
PERFORM 9000-TERMINATION-PARA
THRU
9000-TERMINATION-PARA-EXIT
WHEN WS-REWRITE-RECORD-TOO-BIC
DISPLAY 'TRYING TO REWRITE, BUT THE RECORD SIZE IS '
'TOO BIG '
WS-FILE-STATUS-MESSAGE
PERFORM 5000-FILE-CLOSE-PARA
THRU
5000-FILE-CLOSE-PARA-EXIT
PERFORM 9000-TERMINATION-PARA
THRU
9000-TERMINATION-PARA-EXIT
END-EVALUATE.
************************************************************
5000-FILE-REWRITE-PARA-EXIT.
************************************************************
*
EXIT.
*
************************************************************
*THIS PARA WILL CLOSE A OPENED FILE AND CHECKS THE STATUS.
************************************************************
************************************************************
5000-FILE-CLOSE-PARA.
************************************************************
*
CLOSE FL01-CATP.
*
EVALUATE TRUE
WHEN WS-FILE-OPER-SUCCESS
PERFORM 9000-TERMINATION-PARA
THRU
9000-TERMINATION-PARA-EXIT
WHEN WS-CLOSE-FILE-CLOSED
DISPLAY 'FILE IS ALREADY CLOSED'
WS-FILE-STATUS-MESSAGE
PERFORM 9000-TERMINATION-PARA
THRU
9000-TERMINATION-PARA-EXIT
WHEN OTHER
DISPLAY 'FILE STATUS IS '
WS-FILE-STATUS-MESSAGE
PERFORM 9000-TERMINATION-PARA
THRU
9000-TERMINATION-PARA-EXIT
END-EVALUATE.
************************************************************
************************************************************
5000-FILE-CLOSE-PARA-EXIT.
************************************************************
*
EXIT.
*
************************************************************
*PROGRAM TERMINATES HERE.
************************************************************

************************************************************
9000-TERMINATION-PARA.
************************************************************
*
STOP RUN.
*
************************************************************
9000-TERMINATION-PARA-EXIT.
************************************************************
*
EXIT.
*

You might also like