IDENTIFICATION DIVISION. PROGRAM-ID. CLASS-REPORT. AUTHOR. JONAS WIK. DATE-WRITTEN. 04/11/2000. DATE-COMPILED. *************************************************************** ** ** DESCRIPTION: ** THIS PROGRAM PRINTS A REPORT OF GRADE POINT AVERAGES ** FOR THE 4 DIFFERENT CLASSES OF THE DIFFERENT SCHOOLS ** IF THE CLASS CHANGES, THE PROGRAM THEN CALCULATES ** THE GPA AND PRINTS IT ON A LINE TOGETHER WITH THE CLASS ** IF THE SCHOOL CHANGES, THE PROGRAM ADVANCES PAGE AND ** STARTS ALL OVER WITH THE PRINTING OF GPAS FOR THE NEXT ** SCHOOL. ** ** INPUT: STUDREC-FILE ** REC-SSNO 9 DIGITS NO DEC ** REC-NAME 21 CHARACTERS ** REC-CLASS 1 DIGIT NO DEC ** REC-SCHOOL 1 DIGIT NO DEC ** REC-GPA 3 DIGITS 2 DEC ** REC-CREDITS 3 DIGITS 0 DEC ** ** OUTPUT: SCHOOLRPT ** DATA STARTS IN COL. ** GPA 30 ** *************************************************************** ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. ** FILE-CONTROL. SELECT STUDREC-FILE ASSIGN TO 'J:/COBOL/CLASS.DAT' ORGANIZATION IS LINE SEQUENTIAL. SELECT SCHOOLRPT ASSIGN TO 'J:/COBOL/PRINTER.TXT'. ** DATA DIVISION. ** FILE SECTION. ** FD STUDREC-FILE LABEL RECORD ARE STANDARD RECORDING IS F RECORD CONTAINS 38 CHARACTERS. 01 STUDREC-FILE-REC. 05 REC-SSNO PIC 9(9). 05 REC-NAME PIC X(21). 05 REC-CLASS PIC 9. 05 REC-SCHOOL PIC 9. 05 REC-GPA PIC 9V99. 05 REC-CREDITS PIC 999. ** FD SCHOOLRPT LABEL RECORDS ARE OMITTED RECORD CONTAINS 40 CHARACTERS. 01 SCHOOLRPT-REC PIC X(40). ** WORKING-STORAGE SECTION. ** 01 WV-VARIABLES. 05 CLASSGPA PIC 9V99 VALUE 0. 05 TOTGPA PIC 99V99 VALUE 0. ** 01 WV-HOLDS. 05 CLASS-HOLD PIC 9. 05 SCHOOL-HOLD PIC 9. 01 WS-COUNTS. ** 05 WC-PAGECOUNT PIC 999 VALUE 1. 05 WC-COUNT PIC 99 VALUE 0. ** 01 WS-DATE. ** 05 WD-YEAR PIC 9999. 05 WD-MONTH PIC 99. 05 WD-DAY PIC 99. 05 PIC X(13). 01 WS-SCHOOL. 05 BUS PIC X(12) VALUE 'BUSINESS '. 05 LIB PIC X(12) VALUE 'LIBERAL ARTS'. 05 ENG PIC X(12) VALUE 'ENGINEERING '. ** 01 WS-SWITCH. 05 WS-EOF-SWITCH PIC XXX VALUE 'NO '. 88 WS-NOT-EOF VALUE 'NO '. 88 WS-EOF-YES VALUE 'YES'. ** 01 SCHOOL-HEAD1. 05 FILLER PIC X(5) VALUE SPACES. 05 PIC X(21) VALUE 'PASS-EM STATE COLLEGE'. 05 FILLER PIC X(6) VALUE SPACES. 05 PIC X(5) VALUE 'PAGE '. 05 HEAD-PAGE PIC ZZ9. 01 SCHOOL-HEAD2. 05 PIC X(9) VALUE 'JONAS WIK'. 05 FILLER PIC X(16) VALUE SPACES. 05 PIC X(5) VALUE 'DATE'. 05 HEADING-MONTH PIC Z9. 05 PIC X VALUE '/'. 05 HEADING-DAY PIC Z9. 05 PIC X VALUE '/'. 05 HEADING-YEAR PIC 9999. ** 01 SCHOOL-HEAD3. 05 PIC X(8) VALUE 'SCHOOL: '. 05 SCHOOL PIC X(12). 05 FILLER PIC X(20) VALUE SPACES. 01 SCHOOL-HEAD4. 05 PIC X(7) VALUE ' CLASS'. 05 FILLER PIC X(22) VALUE SPACES. 05 PIC X(11) VALUE 'AVERAGE GPA'. 01 SCHOOL-DET-FRESH. 05 PIC X(8) VALUE 'FRESHMAN'. 05 FILLER PIC X(21) VALUE SPACES. 05 FRESHGPA PIC 9.99. 05 FILLER PIC X(7) VALUE SPACES. 01 SCHOOL-DET-SOPH. 05 PIC X(9) VALUE 'SOPHOMORE'. 05 FILLER PIC X(20) VALUE SPACES. 05 SOPHGPA PIC 9.99. 05 FILLER PIC X(7) VALUE SPACES. 01 SCHOOL-DET-JUN. 05 PIC X(6) VALUE 'JUNIOR'. 05 FILLER PIC X(23) VALUE SPACES. 05 JUNGPA PIC 9.99. 05 FILLER PIC X(7) VALUE SPACES. 01 SCHOOL-DET-SEN. 05 PIC X(6) VALUE 'SENIOR'. 05 FILLER PIC X(23) VALUE SPACES. 05 SENGPA PIC 9.99. 05 FILLER PIC X(7) VALUE SPACES. ** PROCEDURE DIVISION. *************************************************************** ** ** THIS IS THE MAIN MODULE WHICH EXECUTES 110-INITIALIZE ** PARAGRAPH, THE 200-COMPUTE PARAGRAPH UNTIL END OF FILE ** AND A FINAL CONTROL BREAK ** *************************************************************** 100-MAIN. ** PERFORM 110-INITIALIZE THRU 110-EXIT. PERFORM 200-PROCESS-FILE THRU 200-EXIT UNTIL WS-EOF-YES. PERFORM 500-SCHOOL-CTRL-BREAK THRU 500-EXIT. CLOSE STUDREC-FILE SCHOOLRPT. STOP RUN. ** *************************************************************** ** ** 110-INITIALIZE OPENS FILES AND ** INITIALIZES TOTCRED AND CRDPTS TO 0 ** AND CALLS ** PARAGRAPHS 800-READ-FILE, 300-DATE-MOVE ** MOVES REC-CLASS TO CLASS-HOLD AND REC-SCHOOL TO SCHOOL-HOLD ** AND IT ALSO CALLS THE 900-WRITE-HEAD PARAGRAPH. ** *************************************************************** 110-INITIALIZE. ** OPEN INPUT STUDREC-FILE. OPEN OUTPUT SCHOOLRPT. INITIALIZE TOTGPA WC-COUNT. PERFORM 800-READ-FILE THRU 800-EXIT. PERFORM 300-DATE-MOVE THRU 300-EXIT. MOVE REC-CLASS TO CLASS-HOLD. MOVE REC-SCHOOL TO SCHOOL-HOLD. PERFORM 900-WRITE-HEAD THRU 900-EXIT. ** 110-EXIT. EXIT. *************************************************************** ** ** IF SCHOOL-HOLD IS NOT THE SAME AS REC-SCHOOL ** 500-SCHOOL-CTRL-BREAK IS EXECUTED AND REC-SCHOOL IS MOVED ** TO SCHOOL HOLD AND REC-CLASS IS MOVED TO CLASS-HOLD ** THE NUMBER OF GRADE POINTS AND CREDITS ARE ALSO ADDED TO ** THE TOTAL OF EACH. ** ** IF CLASS-HOLD IS NOT THE SAME AS REC-CLASS ** 550-CLASS-CTRL-BREAK IS EXECUTED ** AND REC-CLASS IS MOVED TO CLASS-HOLD ** THE NUMBER OF GRADE POINTS AND CREDITS ARE ALSO ADDED TO ** THE TOTAL OF EACH. ** ** IF NONE OF THE PREVIOS CONDITIONS ARE TRUE THE ** NUMBER OF GRADE POINTS AND CREDITS ARE ADDED TO THE TOTAL ** OF EACH. ** ** AT THE END OF THE PARAGRAPH A NEW RECORD IS READ. ** *************************************************************** 200-PROCESS-FILE. ** IF SCHOOL-HOLD NOT = REC-SCHOOL PERFORM 500-SCHOOL-CTRL-BREAK THRU 500-EXIT MOVE REC-SCHOOL TO SCHOOL-HOLD MOVE REC-CLASS TO CLASS-HOLD END-IF. IF CLASS-HOLD NOT = REC-CLASS PERFORM 550-CLASS-CTRL-BREAK THRU 550-EXIT MOVE REC-CLASS TO CLASS-HOLD END-IF. ADD REC-GPA TO TOTGPA. ADD 1 TO WC-COUNT. PERFORM 800-READ-FILE THRU 800-EXIT. ** 200-EXIT. EXIT. ** *************************************************************** ** ** THIS PARAGRAPH MOVES THE DATE GIVEN BY THE COMPUTER TO THE ** HEADING. ** *************************************************************** 300-DATE-MOVE. ** MOVE FUNCTION CURRENT-DATE TO WS-DATE. MOVE WD-MONTH TO HEADING-MONTH. MOVE WD-DAY TO HEADING-DAY. MOVE WD-YEAR TO HEADING-YEAR. ** 300-EXIT. EXIT. *************************************************************** ** ** THIS CONTROL BREAK PERFORMS A 550-CLASS-CTRL-BREAK AND IF ** ITS NOT THE END OF PAGE THE TOTAL NUMBER OF CREDITS AND ** GRADEPOINTS ARE BOTH SET BACK TO 0. ** AFTER THAT, 900-WRITE-HEAD IS EXECUTED. ** *************************************************************** 500-SCHOOL-CTRL-BREAK. ** PERFORM 550-CLASS-CTRL-BREAK THRU 550-EXIT. IF WS-NOT-EOF MOVE 0 TO TOTGPA MOVE 0 TO WC-COUNT PERFORM 900-WRITE-HEAD THRU 900-EXIT END-IF. ** 500-EXIT. EXIT. *************************************************************** ** ** THE GPA IS COMPUTED BY DIVIDING THE GRDPTS BY TOTCRED ** AND IF CLASS-HOLD = 1 ** SCHOOL-DET-FRESH IS PRINTED ** IF CLASS-HOLD = 2 ** SCHOOL-DET-SOPH IS PRINTED ** IF CLASS-HOLD = 3 ** SCHOOL-DET-JUN IS PRINTED ** IF CLASS-HOLD = 4 ** SCHOOL-DET-SEN IS PRINTED ** AFTER THAT THE GRDPTS AND TOTAL CREDITS ARE SET BACK TO 0. ** *************************************************************** 550-CLASS-CTRL-BREAK. ** EVALUATE CLASS-HOLD WHEN 1 COMPUTE CLASSGPA ROUNDED = TOTGPA / WC-COUNT MOVE CLASSGPA TO FRESHGPA WRITE SCHOOLRPT-REC FROM SCHOOL-DET-FRESH AFTER ADVANCING 2 LINES WHEN 2 COMPUTE CLASSGPA ROUNDED = TOTGPA / WC-COUNT MOVE CLASSGPA TO SOPHGPA WRITE SCHOOLRPT-REC FROM SCHOOL-DET-SOPH AFTER ADVANCING 2 LINES WHEN 3 COMPUTE CLASSGPA ROUNDED = TOTGPA / WC-COUNT MOVE CLASSGPA TO JUNGPA WRITE SCHOOLRPT-REC FROM SCHOOL-DET-JUN AFTER ADVANCING 2 LINES WHEN 4 COMPUTE CLASSGPA ROUNDED = TOTGPA / WC-COUNT MOVE CLASSGPA TO SENGPA WRITE SCHOOLRPT-REC FROM SCHOOL-DET-SEN AFTER ADVANCING 2 LINES END-EVALUATE. INITIALIZE WC-COUNT. INITIALIZE TOTGPA. ** 550-EXIT. EXIT. ** *************************************************************** ** ** THIS PARAGRAPH READS THE INPUT FILE. ** *************************************************************** 800-READ-FILE. ** READ STUDREC-FILE AT END MOVE 'YES' TO WS-EOF-SWITCH. ** 800-EXIT. EXIT. ** *************************************************************** ** ** THIS PARAGRAPH ADDS 1 TO PAGENUMBER ** IF SCHOOL = 1 ** VARIABLE BUS IS MOVED TO HEADING ** IF SCHOOL = 2 ** VARIABLE LIB IS MOVED TO HEADING ** IF SCHOOL = 3 ** VARIABLE ENG IS MOVED TO HEADING ** IT THEN WRITES OUT THE HEADINGS ** *************************************************************** 900-WRITE-HEAD. ** MOVE WC-PAGECOUNT TO HEAD-PAGE. MOVE REC-SCHOOL TO SCHOOL. ADD 1 TO WC-PAGECOUNT. EVALUATE SCHOOL WHEN 1 MOVE BUS TO SCHOOL WHEN 2 MOVE LIB TO SCHOOL WHEN 3 MOVE ENG TO SCHOOL END-EVALUATE. WRITE SCHOOLRPT-REC FROM SCHOOL-HEAD1 AFTER ADVANCING PAGE. WRITE SCHOOLRPT-REC FROM SCHOOL-HEAD2 AFTER ADVANCING 1 LINE. WRITE SCHOOLRPT-REC FROM SCHOOL-HEAD3 AFTER ADVANCING 2 LINES. WRITE SCHOOLRPT-REC FROM SCHOOL-HEAD4 AFTER ADVANCING 2 LINES. ** 900-EXIT. EXIT.