Program to print marksheet of a student with grades.
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.