WRITE A PROGRAM TO GENERATE A STUDENT MARKSHEET USING FILE READ AND WRITE OPERATION.
IDENTIFICATION DIVISION. PROGRAM-ID. T1. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INP-FILE ASSIGN TO DISK ORGANIZATION IS LINE SEQUENTIAL. SELECT OUT-FILE ASSIGN TO DISK ORGANIZATION IS LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD INP-FILE VALUE OF FILE-ID IS "RESULT.DAT". 01 IN-REC. 05 IN-ROLL PIC 99. 05 IN-NAME PIC X(28). 05 IN-MARKS PIC 99 OCCURS 5 TIMES. FD OUT-FILE VALUE OF FILE-ID IS "STUREP.RPT". 01 REC-OUT. 05 OUT-ROLL PIC 99. 05 FILLER PIC XXXX. 05 OUT-NAME PIC X(10). 05 OUT-MARKS PIC Z99 OCCURS 5 TIMES. 05 FILLER PIC X. 05 OUT-TOTAL PIC 999 VALUE ZEROS. 05 FILLER PIC X. 05 OUT-PER PIC 99.99 VALUE ZEROS. 05 FILLER PIC X. 05 OUT-RES PIC X(15). 05 FILLER PIC X. WORKING-STORAGE SECTION. 01 PLINE PIC X(80) VALUE ALL "=". 01 HEAD-LINE PIC X(50) VALUE "NO NAME MARK TOT PER CLASS ". 01 DETAIL-LINE. 05 FILLER PIC X(7) VALUE "DIST:". 05 T-DIST PIC 99 VALUE 0. 05 FILLER PIC X(1). 05 FILLER PIC X(8) VALUE "FIRST:". 05 T-FIRST PIC 99 VALUE 0. 05 FILLER PIC X(1). 05 FILLER PIC X(9) VALUE "SECOND:". 05 T-SEC PIC 99 VALUE 0. 05 FILLER PIC X(1). 05 FILLER PIC X(7) VALUE "PASS:". 05 T-PASS PIC 99 VALUE 0. 05 FILLER PIC X(1). 05 FILLER PIC X(7) VALUE "FAIL:". 05 T-FAIL PIC 99 VALUE 0. 01 EOF PIC X VALUE 'Y'. 01 I PIC 9. 01 T-MARKS PIC 99 OCCURS 5 TIMES. 01 T-TOTAL PIC 999 VALUE 0. 01 T-PER PIC 99V99. PROCEDURE DIVISION. PARA1. OPEN INPUT INP-FILE. OPEN OUTPUT OUT-FILE. WRITE REC-OUT FROM PLINE. WRITE REC-OUT FROM HEAD-LINE BEFORE ADVANCING 1 LINE. WRITE REC-OUT FROM PLINE. PERFORM UNTIL EOF = 'N' READ INP-FILE AT END MOVE 'N' TO EOF NOT AT END PERFORM PARA2 END-READ END-PERFORM. WRITE REC-OUT FROM PLINE. WRITE REC-OUT FROM DETAIL-LINE AFTER ADVANCING 1 LINES. CLOSE INP-FILE. CLOSE OUT-FILE. STOP RUN. PARA2. MOVE SPACE TO REC-OUT. MOVE IN-ROLL TO OUT-ROLL. MOVE IN-NAME TO OUT-NAME. PERFORM VARYING I FROM 1 BY 1 UNTIL I > 5 COMPUTE T-TOTAL=T-TOTAL + IN-MARKS(I) MOVE IN-MARKS(I) TO OUT-MARKS(I) END-PERFORM. COMPUTE T-PER=T-TOTAL / 5. MOVE T-TOTAL TO OUT-TOTAL. MOVE T-PER TO OUT-PER. PERFORM VARYING I FROM 1 BY 1 UNTIL I > 5 IF IN-MARKS(I) < 40 MOVE ZEROS TO T-PER END-IF END-PERFORM. EVALUATE T-PER WHEN 70 THRU 100 MOVE "DISTINCTION" TO OUT-RES ADD 1 TO T-DIST * MOVE ZEROS TO T-DST WHEN 60 THRU 69 MOVE "FIRST CLASS" TO OUT-RES ADD 1 TO T-FIRST WHEN 50 THRU 59 MOVE "SECPND CLASS" TO OUT-RES ADD 1 TO T-SEC WHEN 45 THRU 49 MOVE "PASS" TO OUT-RES ADD 1 TO T-PASS WHEN 0 THRU 44 MOVE "FAIL" TO OUT-RES ADD 1 TO T-FAIL END-EVALUATE. WRITE REC-OUT. MOVE 0 TO T-TOTAL. /********************************************************************************************* INPUT FILE - RESULT.DAT*********************************************************************************************/ 01vd 9990898888 02JAYANT 9090909090 03VISHAL 4040404040 04DHIREN 6040609090 05FALGUN 5050305060 /********************************************************************************************* OUTPUT FILE - STUREP.RPT*********************************************************************************************/ ========================================================== NO NAME MARK TOT PER CLASS ========================================================== 01 vd 99 90 89 88 88 454 90.80 DISTINCTION 02 JAYANT 90 90 90 90 90 450 90.00 DISTINCTION 03 VISHAL 40 40 40 40 40 200 40.00 FAIL 04 DHIREN 60 40 60 90 90 340 68.00 FIRST CLASS 05 FALGUN 50 50 30 50 60 240 48.00 FAIL ========================================================== DIST: 02 FIRST: 01 SECOND: 00 PASS: 00 FAIL: 02