IDENTIFICATION DIVISION. PROGRAM-ID. MARKSHEET. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE-READ ASSIGN TO DISK ORGANIZATION IS LINE SEQUENTIAL. SELECT FILE-WRITE ASSIGN TO DISK ORGANIZATION IS LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD FILE-READ VALUE OF FILE-ID IS \"RESULT.DAT\". 01 F-REC-IN. 02 ROLL-IN PIC 9(2). 02 NAME-IN PIC X(28). 02 MARKS-IN PIC 9(2) OCCURS 5 TIMES. FD FILE-WRITE VALUE OF FILE-ID IS \"MARKSHET.RPT\". 01 F-WRITE-OUT PIC X(83). WORKING-STORAGE SECTION. 77 COUNT-DIST PIC 99 VALUE ZEROS. 77 COUNT-FIRST PIC 99 VALUE ZEROS. 77 COUNT-SEC PIC 99 VALUE ZEROS. 77 COUNT-PASS PIC 99 VALUE ZEROS. 77 COUNT-FAIL PIC 99 VALUE ZEROS. 77 EOF PIC X VALUE \'Y\'. 77 IND PIC 9 VALUE 1. 77 TOTAL-TEMP PIC 9999 VALUE ZEROS. 77 PER-TEMP PIC 99V99. 88 DIST VALUE 70 THRU 100. 88 FIRST1 VALUE 60 THRU 69. 88 SECOND VALUE 50 THRU 59. 88 PASS VALUE 40 THRU 49. 77 HEAD-LINE1 PIC X(83) VALUE \"<---------------------------------MARKSHEET---------- - \"----------------------->\". 77 HEAD-LINE2 PIC X(83) VALUE \"ROLL NAME <---MARKS----> TO - \"TAL AVG CLASS\". 77 HEAD-LINE3 PIC X(83) VALUE \" NO S1 S2 S3 S4 S5\". 77 DASH-LINE PIC X(77) VALUE ALL \"-\". 77 FOOTER1 PIC X(20) VALUE \" DISTINCTION :\". 77 FOOTER2 PIC X(20) VALUE \" FIRST CLASS :\". 77 FOOTER3 PIC X(20) VALUE \" SECOND CLASS :\". 77 FOOTER4 PIC X(20) VALUE \" PASS CLASS :\". 77 FOOTER5 PIC X(20) VALUE \" FAIL :\". * 1 2 3 4 5 7 8 *1234567890123456789012345678901234567890123456789012345678901234567890123456789 *<-----------------------------MARKSHEET------------------------------> *ROLL NAME <---MARKS----> TOTAL PER CLASS * NO S1 S2 S3 S4 S5 999 99.99 * DISTINCTION : * FIRST CLASS : * SECOND CLASS : * PASS CLASS : * FAIL : 01 REC-OUT. 02 ROLL-OUT PIC ZZZ9. 02 PIC XX. 02 NAME-OUT PIC X(27). 02 PIC XX. 02 MARKS-OUT PIC ZZ9 OCCURS 5 TIMES. 02 TOTAL-OUT PIC ZZZZ9. 02 PER-OUT PIC ZZ99.99. 02 PIC XX. 02 CLASS-OUT PIC X(12). PROCEDURE DIVISION. BEGIN. OPEN INPUT FILE-READ. OPEN OUTPUT FILE-WRITE. PERFORM HEADING-PARA. PERFORM UNTIL EOF = \'N\' READ FILE-READ AT END MOVE \'N\' TO EOF NOT AT END PERFORM PROCESS-PARA END-PERFORM. PERFORM SUMMERY-PARA. CLOSE FILE-READ. CLOSE FILE-WRITE. STOP RUN. HEADING-PARA. WRITE F-WRITE-OUT FROM HEAD-LINE1 WRITE F-WRITE-OUT FROM HEAD-LINE2 AFTER ADVANCING 1 LINES. WRITE F-WRITE-OUT FROM HEAD-LINE3 AFTER ADVANCING 1 LINES. WRITE F-WRITE-OUT FROM DASH-LINE AFTER ADVANCING 1 LINES. PROCESS-PARA. MOVE ROLL-IN TO ROLL-OUT MOVE NAME-IN TO NAME-OUT MOVE ZEROS TO TOTAL-TEMP PERFORM 5 TIMES COMPUTE TOTAL-TEMP = TOTAL-TEMP + MARKS-IN (IND) MOVE MARKS-IN (IND) TO MARKS-OUT (IND) ADD 1 TO IND END-PERFORM MOVE 1 TO IND MOVE TOTAL-TEMP TO TOTAL-OUT DIVIDE 5 INTO TOTAL-TEMP GIVING PER-OUT PER-TEMP EVALUATE TRUE WHEN DIST MOVE \"DISTINCTION\" TO CLASS-OUT ADD 1 TO COUNT-DIST WHEN FIRST1 MOVE \"FIRST CLASS\" TO CLASS-OUT ADD 1 TO COUNT-FIRST WHEN SECOND MOVE \"SECOND CLASS\" TO CLASS-OUT ADD 1 TO COUNT-SEC WHEN PASS MOVE \"PASS CLASS\" TO CLASS-OUT ADD 1 TO COUNT-PASS WHEN OTHER MOVE \"FAIL\" TO CLASS-OUT ADD 1 TO COUNT-FAIL END-EVALUATE WRITE F-WRITE-OUT FROM REC-OUT AFTER ADVANCING 1 LINES. SUMMERY-PARA. WRITE F-WRITE-OUT FROM DASH-LINE AFTER ADVANCING 1 LINES WRITE F-WRITE-OUT FROM FOOTER1 AFTER ADVANCING 1 LINES WRITE F-WRITE-OUT FROM COUNT-DIST WRITE F-WRITE-OUT FROM FOOTER2 AFTER ADVANCING 1 LINES WRITE F-WRITE-OUT FROM COUNT-FIRST WRITE F-WRITE-OUT FROM FOOTER3 AFTER ADVANCING 1 LINES WRITE F-WRITE-OUT FROM COUNT-SEC WRITE F-WRITE-OUT FROM FOOTER4 AFTER ADVANCING 1 LINES WRITE F-WRITE-OUT FROM COUNT-PASS WRITE F-WRITE-OUT FROM FOOTER5 AFTER ADVANCING 1 LINES WRITE F-WRITE-OUT FROM COUNT-FAIL.