Sie sind auf Seite 1von 3

IDENTIFICATION DIVISION.

PROGRAM-ID. INS347.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
************************ASSIGNING THE FILES AS WELL AS********
**************************STATUS VARIABLES********************
SELECT MASTER ASSIGN TO DDMASTER
ORGANIZATION IS SEQUENTIAL
FILE STATUS FSMASTER.
SELECT OUTLOG ASSIGN TO DDOUTLOG
ORGANIZATION IS SEQUENTIAL
FILE STATUS FSOUTLOG.
DATA DIVISION.
FILE SECTION.
************************ DECLARING FILE VARIABLES************
FD MASTER.
01 FD-STU-RECORD.
02 FD-STU-ID PIC X(6).
02 FD-STU-CLASS PIC X(1).
02 FD-STU-NAME PIC X(20).
02 FD-MARKS-LANG PIC X(3).
02 FD-MARKS-MATH PIC 9(3).
02 FD-MARKS-SCIENCE PIC 9(3).
02 FD-MARKS-SS PIC 9(3).
02 FILLER PIC X(61).
FD OUTLOG.
01 FD-OUTLOG-RECORD.
02 OUTLOG-ID PIC X(6).
02 OUTLOG-MESSAGE PIC X(94).
WORKING-STORAGE SECTION.
EXEC SQL
INCLUDE SQLCA
END-EXEC.
EXEC SQL
INCLUDE STUD347
END-EXEC.
01 WS-SQLCODE PIC -Z(4).
01 WS-STU-ID PIC X(6).
01 WS-LOGMESSAGE PIC X(74).
01 WS-EOF-M PIC X(1) VALUE 'N'.
88 EOF-M VALUE 'Y'.
77 FSMASTER PIC 9(2).
77 FSOUTLOG PIC 9(2).
77 NUM-RECS-READ PIC 9(3) VALUE 0.
77 NUM-RECS-INSERTED PIC 9(3) VALUE 0.
77 NUM-RECS-NON-INS PIC 9(3) VALUE 0.
PROCEDURE DIVISION.
PERFORM 1000-INITIALIZE-PARA THRU 1000-EXIT.
PERFORM 2000-READ-PARA THRU 2000-EXIT UNTIL EOF-M.
PERFORM 5000-CLOSE-PARA THRU 5000-EXIT.
*************OPENING FILES INVOLVED AND CHECKING************
**************** THEIR VALIDITY*****************************
1000-INITIALIZE-PARA.
OPEN INPUT MASTER.
IF FSMASTER = 0
DISPLAY "MASTER FILE OPENED SUCCESSFULLY."
ELSE
DISPLAY "ERROR IN OPENING MASTER FILE-" FSMASTER
PERFORM 5000-CLOSE-PARA THRU 5000-EXIT.

00010000
00020000
00030000
00040000
00050000
00051018
00052018
00060000
00070000
00080000
00090000
00100000
00110000
00120000
00130000
00131018
00140000
00150010
00160000
00170000
00180000
00190001
00200001
00210001
00220001
00221015
00230001
00240001
00250001
00260014
00270001
00280002
00290002
00300017
00310002
00320003
00330002
00340001
00350001
00360001
00370001
00380001
00390001
00400001
00410001
00420001
00430001
00440001
00450001
00460001
00470001
00470118
00470218
00471001
00472001
00473001
00474018
00475001
00476018
00477001

OPEN OUTPUT OUTLOG.


IF FSOUTLOG = 0
DISPLAY "OUTLOG FILE OPENED SUCCESSFULLY."
ELSE
DISPLAY "ERROR IN OPENING OUTLOG FILE-" FSOUTLOG
PERFORM 5000-CLOSE-PARA THRU 5000-EXIT
END-IF.
1000-EXIT.
EXIT.
************************ READING FROM THE MASTER FILE**********
****************************CALL MOVE AND WRITE****************
2000-READ-PARA.
READ MASTER.
EVALUATE FSMASTER
WHEN 0
DISPLAY "READ SUCCESFULL."
COMPUTE NUM-RECS-READ = NUM-RECS-READ + 1
PERFORM 3000-MOVE-PARA THRU 3000-EXIT
PERFORM 4000-INSERT-PARA THRU 4000-EXIT
WHEN 10
MOVE 'Y' TO WS-EOF-M
DISPLAY "NO OF RECORDS READ-" NUM-RECS-READ
DISPLAY "NO OF RECORDS INSERTED-" NUM-RECS-INSERTED
DISPLAY "NO OF RECORDS NOT INSERTED-" NUM-RECS-NON-INS
MOVE NUM-RECS-READ TO OUTLOG-ID
MOVE "-NO OF RECORDS READ" TO OUTLOG-MESSAGE
WRITE FD-OUTLOG-RECORD
MOVE NUM-RECS-INSERTED TO OUTLOG-ID
MOVE "-NO OF RECORDS INSERTED" TO OUTLOG-MESSAGE
MOVE NUM-RECS-NON-INS TO OUTLOG-ID
MOVE "-NO OF RECORDS NOT INSERTED" TO OUTLOG-MESSAGE
WRITE FD-OUTLOG-RECORD
WHEN OTHER
DISPLAY "READ FAILED WITH FS-" FSMASTER
END-EVALUATE.
2000-EXIT.
EXIT.
****************************MOVE THE VALUES FROM FILE*********
******************************TO HOST VARIABLES***************
3000-MOVE-PARA.
MOVE FD-STU-ID TO HV-STU-ID.
MOVE FD-STU-CLASS TO HV-STU-CLASS.
MOVE FD-STU-NAME TO HV-STU-NAME-TEXT.
MOVE LENGTH OF FD-STU-NAME TO HV-STU-NAME-LEN.
MOVE FD-MARKS-LANG TO HV-MARKS-LANG.
MOVE FD-MARKS-MATH TO HV-MARKS-MATH.
MOVE FD-MARKS-SCIENCE TO HV-MARKS-SCIENCE.
MOVE FD-MARKS-SS TO HV-MARKS-SS.
3000-EXIT.
EXIT.
*********************INSERT A TUPPLE INTO STUDENT DETAILS*****
**************************TABLE*******************************
4000-INSERT-PARA.
EXEC SQL
INSERT INTO TRNGGRP.STU_DTLS_TBL347
(
STU_ID,STU_CLASS,STU_NAME,
MARKS_LANG,MARKS_MATH,MARKS_SCIENCE,MARKS_SS
)
VALUES

00477110
00478001
00479018
00480001
00490018
00500007
00510001
00520001
00530001
00531018
00532018
00540001
00550001
00560008
00570018
00580018
00590018
00600001
00610001
00620018
00630018
00640018
00650018
00660018
00670009
00680009
00690018
00700009
00710009
00720009
00730009
00740018
00750018
00760018
00770001
00780001
00790001
00791018
00792018
00800001
00840001
00850001
00860001
00870001
00880001
00890001
00900001
00910001
00940001
00950001
00951018
00952018
00960001
00970001
00980018
00990018
01000018
01010018
01020018
01030018

(
:HV-STU-ID,:HV-STU-CLASS,:HV-STU-NAME,
:HV-MARKS-LANG,:HV-MARKS-MATH,:HV-MARKS-SCIENCE,
:HV-MARKS-SS
)
END-EXEC
**************************ID DATA IS COPIED TO******************
********************OUTPUT FILE'S VARIABLE**********************
MOVE FD-STU-ID TO OUTLOG-ID
EVALUATE SQLCODE
WHEN 0
DISPLAY 'INSERT SUCCESSFUL'
COMPUTE NUM-RECS-INSERTED = NUM-RECS-INSERTED + 1
MOVE 'RECORDS SUCCESSFULLY INSERTED' TO OUTLOG-MESSAGE
WRITE FD-OUTLOG-RECORD
WHEN -803
DISPLAY 'INSERT FAILED DUE TO DUPLICATE KEY'
COMPUTE NUM-RECS-NON-INS = NUM-RECS-NON-INS + 1
MOVE 'INSERT FAILED-DUPLIACTE-KEY' TO OUTLOG-MESSAGE
WRITE FD-OUTLOG-RECORD
WHEN OTHER
MOVE SQLCODE TO WS-SQLCODE
MOVE 'INSERT FAILED-DUPLICATE KEY' TO OUTLOG-MESSAGE
DISPLAY 'INSERT FAILED WITH OTHER REASON-' WS-SQLCODE
MOVE 'INSERT FAILED-' TO OUTLOG-MESSAGE
MOVE 'WITH SQLCODE-' TO OUTLOG-MESSAGE
MOVE WS-SQLCODE TO OUTLOG-MESSAGE
END-EVALUATE.
4000-EXIT.
EXIT.
******************CLOSE THE FILE ******************************
5000-CLOSE-PARA.
CLOSE MASTER.
CLOSE OUTLOG.
STOP RUN.
5000-EXIT.
EXIT.

01040018
01041018
01042018
01050018
01060018
01070002
01071018
01072018
01080009
01090002
01100002
01110002
01120018
01130018
01140018
01150002
01160002
01170018
01180018
01190018
01200002
01210002
01220018
01230018
01240009
01250009
01260009
01270002
01280002
01290002
01291018
01300002
01310002
01320002
01330002
01340002
01350002

Das könnte Ihnen auch gefallen