unsplash-image-maJDOJSmMoo.jpg

COBOL - Tuition Payment System

Tuition Payment System - COBOL


This is a program written in COBOL to implement a tuition payment program from an external list of users. The program allows user input for a specified tuition payment amount and generates a report of students with the updated information.

This program first converts a list of students into an indexed file to enable easier reading and writing for updating the student records. The second part of the program utilizes COBOL “screens” to allow for user input to search for a student and input a tuition payment amount. The third and final part of the program generates a human readable student report with the updated tuition information as a text file from the information in the indexed file.

A video demonstrating the output and the code is shown below:


Alternate Link

View the Source Code below, or view the full codebase on GitHub

Part 1
Part 2
Part 3
P3 Sub-program
P3 Table
STUFILE input
PROGRAM input
REPORT output
Exported from Notepad++
1 ****************************************************************** 2 * Authors: MOSTAPHA ABDELAZIZ 3 * Purpose: CONVERTS A TEXT FILE TO AN INDEXED SEQUENTIAL FILE 4 ****************************************************************** 5 IDENTIFICATION DIVISION. 6 PROGRAM-ID. PROJECT03_P1. 7 ENVIRONMENT DIVISION. 8 INPUT-OUTPUT SECTION. 9 FILE-CONTROL. 10 * EXTERNAL FILE WITH STUDENT RECORDS 11 SELECT STUDENT-FILE-IN 12 ASSIGN TO "../STUFILE3.TXT" 13 ORGANIZATION IS LINE SEQUENTIAL. 14 15 * EXTERNAL FILE TO WRITE STUDENT REPORTS TO 16 SELECT STUDENT-FILE-OUT 17 ASSIGN TO "../INDEXED-STUFILE3.IND" 18 ORGANIZATION IS INDEXED 19 ACCESS MODE IS RANDOM 20 RECORD KEY IS STUDENT-NUMBER-OUT 21 ALTERNATE KEY STUDENT-NAME-OUT WITH DUPLICATES 22 FILE STATUS IS STATUS-FILED. 23 24 DATA DIVISION. 25 FILE SECTION. 26 * STUDENT RECORD READ FROM EXTERNAL FILE 27 FD STUDENT-FILE-IN. 28 01 STUDENT-RECORD-IN. 29 05 STUDENT-NUMBER-IN PIC 9(6). 30 05 TUITION-OWED-IN PIC 9(4)V99. 31 05 STUDENT-NAME-IN PIC X(40). 32 05 PROGRAM-OF-STUDY-IN PIC X(5). 33 05 COURSE-CODE-1-IN PIC X(7). 34 05 COURSE-AVERAGE-1-IN PIC 9(3). 35 05 COURSE-CODE-2-IN PIC X(7). 36 05 COURSE-AVERAGE-2-IN PIC 9(3). 37 05 COURSE-CODE-3-IN PIC X(7). 38 05 COURSE-AVERAGE-3-IN PIC 9(3). 39 05 COURSE-CODE-4-IN PIC X(7). 40 05 COURSE-AVERAGE-4-IN PIC 9(3). 41 05 COURSE-CODE-5-IN PIC X(7). 42 05 COURSE-AVERAGE-5-IN PIC 9(3). 43 44 * STUDENT RECORD WRITTEN TO AN EXTERNAL FILE 45 FD STUDENT-FILE-OUT. 46 01 STUDENT-RECORD-OUT. 47 05 STUDENT-NUMBER-OUT PIC 9(6). 48 05 TUITION-OWED-OUT PIC 9(4)V99. 49 05 STUDENT-NAME-OUT PIC X(40). 50 05 PROGRAM-OF-STUDY-OUT PIC X(5). 51 05 COURSE-CODE-1-OUT PIC X(7). 52 05 COURSE-AVERAGE-1-OUT PIC 9(3). 53 05 COURSE-CODE-2-OUT PIC X(7). 54 05 COURSE-AVERAGE-2-OUT PIC 9(3). 55 05 COURSE-CODE-3-OUT PIC X(7). 56 05 COURSE-AVERAGE-3-OUT PIC 9(3). 57 05 COURSE-CODE-4-OUT PIC X(7). 58 05 COURSE-AVERAGE-4-OUT PIC 9(3). 59 05 COURSE-CODE-5-OUT PIC X(7). 60 05 COURSE-AVERAGE-5-OUT PIC 9(3). 61 62 WORKING-STORAGE SECTION. 63 01 CONTROL-FIELDS. 64 * END OF FILE FLAG 65 05 EOF-FLAG PIC A. 66 * STORES STATUS OF WRITING TO INDEXED FILE 67 01 STATUS-FILED PIC X(2). 68 69 PROCEDURE DIVISION. 70 100-CREATE-INDEXED-FILE. 71 PERFORM 201-INITIALIZE 72 * LOOP UNTIL THE END OF FILE 73 PERFORM 202-MOVE-RECORDS 74 UNTIL EOF-FLAG EQUALS "Y". 75 PERFORM 203-TERMINATE. 76 STOP RUN. 77 78 * OPEN THE FILES WE ARE READING AND WRITING 79 201-INITIALIZE. 80 PERFORM 301-OPEN-FILES. 81 PERFORM 302-READ-RECORDS. 82 83 * MOVES THE RECORDS 84 202-MOVE-RECORDS. 85 PERFORM 303-WRITE-RECORDS. 86 PERFORM 302-READ-RECORDS. 87 88 * CLOSES THE FILES 89 203-TERMINATE. 90 CLOSE STUDENT-FILE-IN 91 STUDENT-FILE-OUT. 92 93 * OPENS THE FILES 94 301-OPEN-FILES. 95 OPEN INPUT STUDENT-FILE-IN. 96 OPEN OUTPUT STUDENT-FILE-OUT. 97 98 * READS A RECORD 99 302-READ-RECORDS. 100 READ STUDENT-FILE-IN AT END MOVE "Y" TO EOF-FLAG. 101 102 * WRITES A RECORD 103 303-WRITE-RECORDS. 104 MOVE STUDENT-RECORD-IN TO STUDENT-RECORD-OUT. 105 WRITE STUDENT-RECORD-OUT 106 INVALID KEY 107 DISPLAY "INVALID KEY FOR " STUDENT-NUMBER-OUT 108 " STATUS FILED IS " STATUS-FILED 109 NOT INVALID KEY 110 DISPLAY "INDEXED STUDENT " STUDENT-NUMBER-OUT 111 END-WRITE. 112 113 END PROGRAM PROJECT03_P1. 114
Exported from Notepad++
1 ****************************************************************** 2 * Authors: MOSTAPHA ABDELAZIZ 3 * Purpose: TAKES USER INPUT USING SCREENS 4 ****************************************************************** 5 IDENTIFICATION DIVISION. 6 PROGRAM-ID. PROJECT03_P2. 7 ENVIRONMENT DIVISION. 8 INPUT-OUTPUT SECTION. 9 FILE-CONTROL. 10 SELECT STUDENT-FILE 11 ASSIGN "..\INDEXED-STUFILE3.IND" 12 ORGANIZATION IS INDEXED 13 ACCESS MODE IS RANDOM 14 RECORD KEY IS STUDENT-NUMBER 15 FILE STATUS IS STATUS-FIELD. 16 17 DATA DIVISION. 18 FILE SECTION. 19 * STUDENT FILE TO BE READ FROMM AND WRITTEN TO 20 FD STUDENT-FILE. 21 01 STUDENT-RECORD. 22 05 STUDENT-NUMBER PIC 9(6). 23 05 TUITION-OWED PIC 9(4)V99. 24 05 STUDENT-NAME PIC X(40). 25 05 PROGRAM-OF-STUDY PIC X(5). 26 05 COURSE-CODE-1 PIC X(7). 27 05 COURSE-AVERAGE-1 PIC 9(3). 28 05 COURSE-CODE-2 PIC X(7). 29 05 COURSE-AVERAGE-2 PIC 9(3). 30 05 COURSE-CODE-3 PIC X(7). 31 05 COURSE-AVERAGE-3 PIC 9(3). 32 05 COURSE-CODE-4 PIC X(7). 33 05 COURSE-AVERAGE-4 PIC 9(3). 34 05 COURSE-CODE-5 PIC X(7). 35 05 COURSE-AVERAGE-5 PIC 9(3). 36 37 WORKING-STORAGE SECTION. 38 01 CONTROL-FIELDS. 39 * STATUS OF THE RECORD KEY WHEN READ OR WRITTEN 40 05 STATUS-FIELD PIC X(2). 41 * IF RECORD IS FOUND 42 05 FOUND-FLAG PIC X VALUE "N". 43 44 01 SCREEN-FIELDS. 45 * USER INPUT OF STUDENT NUMBER TO PROCESS PAYMENT FOR 46 05 STUDENT-NUMBER-SEARCH PIC 9(6). 47 * USER INPUT OF TUITION PAYMENT PIC9(5)V99 AS SPECIFIED 48 05 TUITION-PAYMENT PIC 9(5)V99. 49 * ERROR MESSAGE TO BE DISPLAYED 50 05 ERROR-MESSAGE PIC X(30). 51 * EMPTY INPUT FOR SCREEN PROMPT 52 05 EMPTY-INPUT PIC X. 53 54 SCREEN SECTION. 55 * ASK FOR STUDENT NUMBER 56 01 STUDENT-PROMPT-SCREEN. 57 05 VALUE "SEARCH" BLANK SCREEN LINE 1 COL 35. 58 05 VALUE "STUDENT NUMBER:" LINE 5 COL 20. 59 05 STUDENT-NUMBER-IN LINE 5 COL 36 PIC X(6) 60 TO STUDENT-NUMBER-SEARCH. 61 62 * ASK FOR TUITION PAYMENT 63 01 STUDENT-PAYMENT-SCREEN. 64 05 VALUE "MAKE A PAYMENT" BLANK SCREEN LINE 1 COL 35. 65 05 VALUE "STUDENT NUMBER:" LINE 3 COL 5. 66 05 STUDENT-NUMBER-OUT LINE 3 COL 25 PIC X(6) 67 FROM STUDENT-NUMBER. 68 05 VALUE "STUDENT NAME:" LINE 4 COL 5. 69 05 STUDENT-NAME-OUT LINE 4 COL 25 PIC X(40) 70 FROM STUDENT-NAME. 71 05 VALUE "PROGRAM:" LINE 5 COL 5. 72 05 PROGRAM-SCREEN LINE 5 COL 25 73 PIC X(20) FROM PROGRAM-OF-STUDY. 74 05 VALUE "TUITION-OWED:" LINE 6 COL 5. 75 05 TUITION-OWED-OUT LINE 6 COL 25 PIC $$$$9.99 76 FROM TUITION-OWED. 77 05 VALUE "TUITION PAYMENT:" LINE 7 COL 5. 78 05 TUITION-PAYMENT-IN LINE 7 COL 25 PIC $9999.99 79 TO TUITION-PAYMENT. 80 81 * DISPLAY THE UPDATED RECORD 82 01 STUDENT-UPDATED-SCREEN. 83 05 VALUE "UPDATED RECORD" BLANK SCREEN LINE 1 COL 35. 84 05 VALUE "STUDENT NUMBER:" LINE 3 COL 5. 85 05 STUDENT-NUMBER-SOUT LINE 3 COL 25 PIC X(6) 86 FROM STUDENT-NUMBER. 87 05 VALUE "STUDENT NAME:" LINE 4 COL 5. 88 05 STUDENT-NAME-OUT LINE 4 COL 25 PIC X(40) 89 FROM STUDENT-NAME. 90 05 VALUE "PROGRAM:" LINE 5 COL 5. 91 05 PROGRAM-SCREEN LINE 5 COL 25 92 PIC X(20) FROM PROGRAM-OF-STUDY. 93 05 VALUE "TUITION-OWED:" LINE 6 COL 5. 94 05 TUITION-OWED-OUT LINE 6 COL 25 PIC $$$$9.99 95 FROM TUITION-OWED. 96 05 EXIT-PROMPT LINE 1 COL 34 PIC X 97 TO EMPTY-INPUT. 98 99 * DISPLAY AN ERROR MESSAGE 100 01 ERROR-SCREEN. 101 05 VALUE "ERROR" BLANK SCREEN LINE 1 COL 35. 102 05 ERROR-MESSAGE-SCREEN LINE 5 COL 5 PIC X(30) 103 FROM ERROR-MESSAGE. 104 05 EXIT-PROMPT LINE 1 COL 34 PIC X 105 TO EMPTY-INPUT. 106 107 PROCEDURE DIVISION. 108 100-PROCESS-TUITION-PAYMENTS. 109 PERFORM 201-INITIALIZE. 110 IF FOUND-FLAG EQUALS "Y" 111 PERFORM 202-PROCESS-PAYMENT 112 END-IF. 113 PERFORM 203-TERMINATE. 114 STOP RUN. 115 116 * OPENS THE FILE AND TAKES SEARCHES FOR USER SUBMITTED STUDENT NUMBER 117 201-INITIALIZE. 118 PERFORM 301-OPEN-FILES. 119 PERFORM 302-STUDENT-PROMPT-SCREEN. 120 PERFORM 303-FIND-STUDENT. 121 122 * TAKES USER INPUT FOR PAYMENT AMOUNT AND UPDATES RECORD 123 202-PROCESS-PAYMENT. 124 PERFORM 304-PAYMENT-PROMPT-SCREEN. 125 PERFORM 305-COMPUTE-TUITON-OWED. 126 PERFORM 306-UPDATE-STUDENT-RECORD. 127 PERFORM 307-DISPLAY-UPDATE. 128 129 * CLOSES THE FILE 130 203-TERMINATE. 131 CLOSE STUDENT-FILE. 132 133 301-OPEN-FILES. 134 OPEN I-O STUDENT-FILE. 135 136 302-STUDENT-PROMPT-SCREEN. 137 DISPLAY STUDENT-PROMPT-SCREEN 138 ACCEPT STUDENT-PROMPT-SCREEN. 139 140 303-FIND-STUDENT. 141 MOVE STUDENT-NUMBER-IN TO STUDENT-NUMBER. 142 READ STUDENT-FILE 143 INVALID KEY 144 MOVE "STUDENT NOT FOUND" TO ERROR-MESSAGE 145 DISPLAY ERROR-SCREEN 146 ACCEPT ERROR-SCREEN 147 MOVE "N" TO FOUND-FLAG 148 NOT INVALID KEY 149 MOVE "Y" TO FOUND-FLAG 150 END-READ. 151 152 304-PAYMENT-PROMPT-SCREEN. 153 DISPLAY STUDENT-PAYMENT-SCREEN 154 ACCEPT STUDENT-PAYMENT-SCREEN. 155 156 305-COMPUTE-TUITON-OWED. 157 IF TUITION-PAYMENT IS GREATER THAN TUITION-OWED 158 COMPUTE TUITION-OWED = 0 159 ELSE 160 COMPUTE TUITION-OWED = TUITION-OWED - TUITION-PAYMENT 161 END-IF. 162 163 306-UPDATE-STUDENT-RECORD. 164 REWRITE STUDENT-RECORD 165 INVALID KEY 166 MOVE "N" TO FOUND-FLAG 167 NOT INVALID KEY 168 MOVE "Y" TO FOUND-FLAG 169 END-REWRITE. 170 171 307-DISPLAY-UPDATE. 172 IF FOUND-FLAG EQUALS "Y" 173 DISPLAY STUDENT-UPDATED-SCREEN 174 ACCEPT STUDENT-UPDATED-SCREEN 175 ELSE 176 MOVE "STUDENT UNABLE TO BE UPDATED" TO ERROR-MESSAGE 177 DISPLAY ERROR-SCREEN 178 ACCEPT ERROR-SCREEN. 179 180 END PROGRAM PROJECT03_P2. 181
Exported from Notepad++
1 ****************************************************************** 2 * Authors: MOSTAPHA ABDELAZIZ 3 * Purpose: READS STUDENT AND COURSE RECORDS FROM EXTERNAL FILES 4 * AND WRITES STUDENT REPORT TO AN EXTERNAL FILE 5 ****************************************************************** 6 IDENTIFICATION DIVISION. 7 PROGRAM-ID. PROJECT03_P3. 8 9 ENVIRONMENT DIVISION. 10 INPUT-OUTPUT SECTION. 11 FILE-CONTROL. 12 * EXTERNAL FILE WITH STUDENT RECORDS 13 SELECT STUDENT-FILE-IN 14 ASSIGN TO "../INDEXED-STUFILE3.IND" 15 ORGANIZATION IS INDEXED 16 ACCESS MODE IS SEQUENTIAL 17 RECORD KEY IS STUDENT-NUMBER 18 FILE STATUS IS STATUS-FILED. 19 20 * EXTERNAL FILE WITH PROGRAM NAMES 21 SELECT PROGRAM-FILE-IN 22 ASSIGN TO "../PROGRAM.TXT" 23 ORGANIZATION IS LINE SEQUENTIAL. 24 25 * EXTERNAL FILE TO WRITE STUDENT REPORTS TO 26 SELECT STUDENT-REPORT-FILE-OUT 27 ASSIGN TO "../STUDENT-REPORT.TXT" 28 ORGANIZATION IS LINE SEQUENTIAL. 29 30 DATA DIVISION. 31 FILE SECTION. 32 * STUDENT RECORD READ FROM EXTERNAL FILE 33 FD STUDENT-FILE-IN. 34 01 STUDENT-RECORD-IN. 35 05 STUDENT-NUMBER PIC 9(6). 36 05 TUITION-OWED PIC 9(4)V99. 37 05 STUDENT-NAME PIC X(40). 38 05 PROGRAM-OF-STUDY PIC X(5). 39 05 COURSE-CODE-1 PIC X(7). 40 05 COURSE-AVERAGE-1 PIC 9(3). 41 05 COURSE-CODE-2 PIC X(7). 42 05 COURSE-AVERAGE-2 PIC 9(3). 43 05 COURSE-CODE-3 PIC X(7). 44 05 COURSE-AVERAGE-3 PIC 9(3). 45 05 COURSE-CODE-4 PIC X(7). 46 05 COURSE-AVERAGE-4 PIC 9(3). 47 05 COURSE-CODE-5 PIC X(7). 48 05 COURSE-AVERAGE-5 PIC 9(3). 49 50 * PROGRAM RECORD READ FROM EXTERNAL FILE 51 COPY './TABLE-COPY.TXT'. 52 53 * STUDENT RECORD WRITTEN TO AN EXTERNAL FILE 54 FD STUDENT-REPORT-FILE-OUT. 55 01 STUDENT-RECORD-OUT PIC X(130). 56 57 WORKING-STORAGE SECTION. 58 * FORMATTED RECORD STRUCTURE TO WRITE TO EXTERNAL FILE 59 01 STUDENT-REPORT-RECORD-OUT. 60 05 STUDENT-NAME-OUT PIC X(40). 61 05 FILLER PIC X(3) VALUE SPACES. 62 05 STUDENT-AVERAGE-OUT PIC ZZ9. 63 05 FILLER PIC X(4) VALUE "%". 64 05 PROGRAM-NAME-OUT PIC X(20). 65 05 FILLER PIC X(4) VALUE SPACES. 66 05 TUITION-OWED-OUT PIC $$,$$9.99. 67 68 * HEADER TO WRITE TO FILE FOR FORMATTING PURPOSES 69 01 STUDENT-REPORT-HEADER. 70 05 FILLER PIC X(42) VALUE "NAME". 71 * 05 FILLER PIC X(3) VALUE SPACES. 72 05 FILLER PIC X(8) VALUE "AVERAGE". 73 05 FILLER PIC X(24) VALUE "PROGRAM". 74 05 FILLER PIC X(12) VALUE "TUITION OWED". 75 76 * LINE TO SEPARATE HEADER FROM DATA 77 01 HEADER-LINE. 78 05 FILLER PIC X(130) VALUE ALL "-". 79 80 * TABLE TO STORE PROGRAM DATA FOR EASIER SEARCHING 81 01 PROGRAM-DATA. 82 05 PROGRAM-TABLE OCCURS 20 TIMES. 83 10 PROGRAM-CODE-CLM PIC X(5). 84 10 PROGRAM-NAME-CLM PIC X(20). 85 86 01 CONTROL-FIELDS. 87 * END OF FILE FLAGS 88 05 EOF-FLAG-STU PIC A. 89 05 EOF-FLAG-PRO PIC A. 90 * COUNTERS FOR AUDITING 91 05 READ-COUNTER PIC 9(2) VALUE 0. 92 05 WRITE-COUNTER PIC 9(2) VALUE 0. 93 * SUBSCRIPT TO ACCESS TABLE COLUMNS 94 05 SUB PIC 9(2). 95 * FLAG FOR SEARCHING 96 05 FOUND-FLAG PIC A. 97 * USED IN EXTERNAL ROUTINE 98 05 AVERAGE-GRADE PIC 9(3). 99 05 STATUS-FILED PIC X(2). 100 101 PROCEDURE DIVISION. 102 100-CREATE-STUDENT-REPORTS. 103 * OPEN FILES AND STORES PROGRAM DATA 104 PERFORM 201-INITIALIZE-STUDENT-REPORTS. 105 * CREATE AND WRITE A SINGLE STUDENT REPORT 106 PERFORM 202-CREATE-STUDENT-REPORT 107 * LOOP UNTIL END OF FILE IS REACHED 108 UNTIL EOF-FLAG-STU EQUALS "Y". 109 * DISPLAY AUDIT AND CLOSE FILES 110 PERFORM 203-TERMINATE. 111 * END PROGRAM 112 STOP RUN. 113 114 * OPEN FILES AND STORES PROGRAM DATA 115 201-INITIALIZE-STUDENT-REPORTS. 116 PERFORM 301-OPEN-FILES. 117 PERFORM 302-LOAD-PROGRAM-TABLE 118 VARYING SUB FROM 1 BY 1 UNTIL SUB > 20 OR 119 EOF-FLAG-PRO = "Y". 120 PERFORM 303-WRITE-REPORT-HEADER. 121 PERFORM 304-READ-STUDENT-RECORD. 122 123 * CREATE AND WRITE A SINGLE STUDENT REPORT 124 202-CREATE-STUDENT-REPORT. 125 * RESET FOUND FLAG FOR SEARCHING 126 MOVE "N" TO FOUND-FLAG. 127 * SEARCH FOR A PROGRAM UNTIL FOUND OR MAXIMUM IS REACHED 128 PERFORM 305-SEARCH-PROGRAMS-TABLE 129 VARYING SUB FROM 1 BY 1 UNTIL SUB > 20 130 OR FOUND-FLAG = "Y". 131 * CALCULATE THE STUDENTS AVERAGE MARK 132 PERFORM 306-CALCULATE-AVERAGE. 133 * WRITE STUDENT REPORT TO FILE 134 PERFORM 307-WRITE-STUDENT-REPORT. 135 * READ THE NEXT STUDENT RECORD 136 PERFORM 304-READ-STUDENT-RECORD. 137 138 * DISPLAY AUDIT AND CLOSE FILES 139 203-TERMINATE. 140 PERFORM 308-DISPLAY-RECORDS-COUNT. 141 PERFORM 309-CLOSE-FILES. 142 143 * OPEN THE EXTERNAL FILES USED 144 301-OPEN-FILES. 145 OPEN INPUT STUDENT-FILE-IN 146 PROGRAM-FILE-IN. 147 OPEN OUTPUT STUDENT-REPORT-FILE-OUT. 148 149 * READ PROGRAM NAMES AND CODES INTO DEFINED TABLE 150 302-LOAD-PROGRAM-TABLE. 151 * IF THE END OF FILE IS REACHED SET FLAG OTHERWISE STORE DATA 152 READ PROGRAM-FILE-IN 153 AT END 154 MOVE "Y" TO EOF-FLAG-PRO 155 NOT AT END 156 MOVE PROGRAM-CODE TO PROGRAM-CODE-CLM(SUB) 157 MOVE PROGRAM-NAME TO PROGRAM-NAME-CLM(SUB). 158 159 * WRITE THE HEADER OF THE STUDENTS REPORTS FILE 160 303-WRITE-REPORT-HEADER. 161 WRITE STUDENT-RECORD-OUT FROM STUDENT-REPORT-HEADER. 162 WRITE STUDENT-RECORD-OUT FROM HEADER-LINE. 163 164 * READ STUDENT RECORD FROM EXTERTNAL FILE 165 304-READ-STUDENT-RECORD. 166 * IF THE END OF FILE IS REACHED SET FLAG OR ADD TO COUNTER 167 READ STUDENT-FILE-IN 168 AT END 169 MOVE "Y" TO EOF-FLAG-STU 170 NOT AT END 171 ADD 1 TO READ-COUNTER. 172 173 * SEARCH PROGRAMS TABLE FOR SPECIFIED PROGRAM CODE 174 305-SEARCH-PROGRAMS-TABLE. 175 IF PROGRAM-OF-STUDY EQUALS PROGRAM-CODE-CLM(SUB) 176 MOVE PROGRAM-NAME-CLM(SUB) TO PROGRAM-NAME-OUT 177 MOVE "Y" TO FOUND-FLAG 178 END-IF. 179 180 * CALCULATE THE STUDENTS AVERAGE MARK 181 306-CALCULATE-AVERAGE. 182 CALL './PROJECT03_P3_SUB' 183 USING AVERAGE-GRADE, COURSE-AVERAGE-1, 184 COURSE-AVERAGE-2, COURSE-AVERAGE-3 185 COURSE-AVERAGE-4, COURSE-AVERAGE-5 186 END-CALL. 187 MOVE AVERAGE-GRADE TO STUDENT-AVERAGE-OUT. 188 189 * WRITE STUDENT REPORT TO EXTERNAL FILE 190 307-WRITE-STUDENT-REPORT. 191 MOVE STUDENT-NAME TO STUDENT-NAME-OUT 192 MOVE TUITION-OWED TO TUITION-OWED-OUT 193 WRITE STUDENT-RECORD-OUT FROM STUDENT-REPORT-RECORD-OUT. 194 ADD 1 TO WRITE-COUNTER. 195 196 * DISPLAY AUDIT 197 308-DISPLAY-RECORDS-COUNT. 198 DISPLAY READ-COUNTER " RECORDS READ". 199 DISPLAY WRITE-COUNTER " RECORDS WRITTEN". 200 201 * CLOSE THE EXTERNAL FILES USED 202 309-CLOSE-FILES. 203 CLOSE PROGRAM-FILE-IN 204 STUDENT-FILE-IN 205 STUDENT-REPORT-FILE-OUT. 206 207 END PROGRAM PROJECT03_P3. 208
Exported from Notepad++
1 ****************************************************************** 2 * Authors: MOSTAPHA ABDELAZIZ 3 * Purpose: CALCULATES STUDENTS AVERAGE MARK, CALLED AS AN EXTERNAL 3 * SUB-PROGRAM 4 ****************************************************************** 5 IDENTIFICATION DIVISION. 6 PROGRAM-ID. PROJECT03_P3_SUB. 7 DATA DIVISION. 8 LINKAGE SECTION. 9 01 AVERAGE-GRADE PIC 9(3). 10 01 COURSE-AVERAGE-1 PIC 9(3). 11 01 COURSE-AVERAGE-2 PIC 9(3). 12 01 COURSE-AVERAGE-3 PIC 9(3). 13 01 COURSE-AVERAGE-4 PIC 9(3). 14 01 COURSE-AVERAGE-5 PIC 9(3). 15 PROCEDURE DIVISION USING 16 AVERAGE-GRADE, COURSE-AVERAGE-1, 17 COURSE-AVERAGE-2, COURSE-AVERAGE-3 18 COURSE-AVERAGE-4, COURSE-AVERAGE-5. 19 20 COMPUTE AVERAGE-GRADE ROUNDED = 21 (COURSE-AVERAGE-1 22 + COURSE-AVERAGE-2 23 + COURSE-AVERAGE-3 24 + COURSE-AVERAGE-4 25 + COURSE-AVERAGE-5) 26 / 5. 27 28 EXIT PROGRAM. 29
Exported from Notepad++
* TABLE DEFINITION THAT IS COPIED IN PART 3 FD PROGRAM-FILE-IN. 01 PROGRAM-RECORD-IN. 05 PROGRAM-CODE PIC X(5). 05 DISCARD-X PIC X. 05 PROGRAM-NAME PIC X(20).
Exported from Notepad++
An example of the student information file used as input 211111100000JONES, WILLIAM COMPRCST8283090CST2234090CST2235090DAT1800090ENG1001090 211112200000SMITH, Bill COMTCCST8283090CST2234080CST2235080DAT1800080ENG1001080 311113092000CROMWELL, OLIVIA COMSCCST8283070CST2234070CST2235070DAT1800070ENG1001070 311115150000HEHEINLEN, HERBERT COMPRCST8283090CST2234090CST2235090DAT1800090ENG1001090 411119005000ASSIMOV, ISAAC COMPRCST8283045CST2234046CST22350470DAT180048ENG1001049 111111100000JONES, WILLIAM COMPRCST8283090CST2234090CST2235090DAT1800090ENG1001090 111112200000SMITH, FRED COMTCCST8283090CST2234080CST2235080DAT1800080ENG1001080 111113092000CROMWELL, OLIVER COMSCCST8283070CST2234070CST2235070DAT1800070ENG1001070 111115150000HEHEINLEN, HERBERT COMPRCST8283090CST2234090CST2235090DAT1800090ENG1001090 111119005000ASSIMOV, ISAAC COMPRCST8283045CST2234046CST22350470DAT180048ENG1001049
Exported from Notepad++
An example of the programs information file used as input COMPRXCOMPUTER PRGRAMMER COMTCXCOMPUTER TECHNICIAN COMSCXCOMPUTER SIENCE BUSSXTBUSINESS MARKXTMARKETING ACCTGXACCOUNTING CSTABXXXXXXXXXXXXXXXXXXXXX CSTDEXXXXXXXXXXXXXXXXXXX cSTFGXXXXXXXXXXXXXXXXXXXX CSTHIXXXXXXXXXXXXXXXXXXXX CSTJKXXXXXXXXXXXXXXXXXXXX CSTLMXXXXXXXXXXXXXXXXXXXX CSTNOXXXXXXXXXXXXXXXXXXXX CSTPRXXXXXXXXXXXXXXXXXXXX CSTQSXXXXXXXXXXXXXXXXXXXX CSTTUXXXXXXXXXXXXXXXXXXXX CSTVWXXXXXXXXXXXXXXXXXXXX CSTXYXXXXXXXXXXXXXXXXXXXX
Exported from Notepad++
An example of the student report file generated as output NAME AVERAGE PROGRAM TUITION OWED ---------------------------------------------------------------------------------------------------------------------------------- JONES, WILLIAM 90% COMPUTER PRGRAMMER $500.00 SMITH, FRED 82% COMPUTER TECHNICIAN $2,000.00 CROMWELL, OLIVER 70% COMPUTER SIENCE $920.00 HEHEINLEN, HERBERT 90% COMPUTER PRGRAMMER $1,500.00 ASSIMOV, ISAAC 47% COMPUTER PRGRAMMER $50.00 JONES, WILLIAM 90% COMPUTER PRGRAMMER $1,000.00 SMITH, Bill 82% COMPUTER TECHNICIAN $2,000.00 CROMWELL, OLIVIA 70% COMPUTER SIENCE $920.00 HEHEINLEN, HERBERT 90% COMPUTER PRGRAMMER $1,500.00 ASSIMOV, ISAAC 47% COMPUTER PRGRAMMER $0.00