IDENTIFICATION DIVISION.
       PROGRAM-ID. COPYPRG.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
       SELECT COURSE-FILE ASSIGN TO "C:\PCOBWIN\COPYCALL\BREAK.DAT"
           ORGANIZATION IS LINE SEQUENTIAL
           ACCESS IS SEQUENTIAL.
       SELECT PRINT-FILE ASSIGN TO PRINTER.
       DATA DIVISION.
       FILE SECTION.
       FD  COURSE-FILE
           LABEL RECORDS ARE STANDARD
           DATA RECORD IS COURSE-REC.
       01  COURSE-REC.
           COPY CRSDESC.CBL IN C:\PCOBWIN\COPYCALL.
       FD  PRINT-FILE
           LABEL RECORDS ARE STANDARD
           DATA RECORD IS PRINTZ.
       01  PRINTZ.
           05  FILLER                PIC X(10).
           05  DIV-PR                PIC X.
           05  FILLER                PIC X(5).
           05  DEPT-PR               PIC X.
           05  FILLER                PIC X(5).
           05  CRS-PR                PIC X(5).
           05  FILLER                PIC X(5).
           05  SECT-PR               PIC 99.
           05  FILLER                PIC X(10).
           05  FIRST-YR-PR           PIC ZZ9.
           05  FILLER                PIC X(10).
           05  SECOND-YR-PR          PIC ZZ9.
           05  FILLER                PIC X(73).
       WORKING-STORAGE SECTION.
       01  INDICATORS.
           05  MORE-RECS             PIC XXX        VALUE 'YES'.
               88  NO-MORE-RECS                     VALUE 'NO '.
               88  THERE-ARE-MORE-RECS              VALUE 'YES'.
       01  HOLD-AREAS.
           05  HOLD-DIV              PIC X          VALUE SPACES.
           05  HOLD-DEPT             PIC X          VALUE SPACES.
           05  HOLD-CRS              PIC X(5)       VALUE SPACES.
       01  PAGE-CONTROL.
           05  LINE-COUNT            PIC 99         VALUE 0.
           05  PAGE-COUNT            PIC 99         VALUE 1.
           05  PROPER-SPACING        PIC 9          VALUE 2.
           05  SPACE-1-LINE          PIC 9          VALUE 1.
           05  SPACE-2-LINES         PIC 9          VALUE 2.
       01  ACCUMULATORS.
           05  FIN-TOT-FY-ACC        PIC 9(6)       VALUE 0.
           05  FIN-TOT-SY-ACC        PIC 9(6)       VALUE 0.
           05  DIV-TOT-FY-ACC        PIC 9(6)       VALUE 0.
           05  DIV-TOT-SY-ACC        PIC 9(6)       VALUE 0.
           05  DEPT-TOT-FY-ACC       PIC 9(5)       VALUE 0.
           05  DEPT-TOT-SY-ACC       PIC 9(5)       VALUE 0.
           05  CRS-TOT-FY-ACC        PIC 9(4)       VALUE 0.
           05  CRS-TOT-SY-ACC        PIC 9(4)       VALUE 0.
       01  TOTAL-LINES.
           05  FINAL-TOTAL-LINE.
               10  FILLER            PIC X(10) VALUE SPACES.
               10  FILLER            PIC X(13) VALUE 'TOTALS: FINAL'.
               10  FILLER            PIC X(17) VALUE SPACES.
               10  FIN-TOT-FY-FTL    PIC ZZZ,ZZ9.
               10  FILLER            PIC X(6)  VALUE SPACES.
               10  FIN-TOT-SY-FTL    PIC ZZZ,ZZ9.
               10  FILLER            PIC X(73)  VALUE SPACES.
           05  DIV-TOT-LINE.
               10  FILLER            PIC X(10) VALUE SPACES.
               10  FILLER            PIC X(12) VALUE 'TOTALS: DIV '.
               10  DIV-DIVTL         PIC X     VALUE SPACES.
               10  FILLER            PIC X(17) VALUE SPACES.
               10  DIV-TOT-FY-DIVTL  PIC ZZZ,ZZ9.
               10  FILLER            PIC X(6)  VALUE SPACES.
               10  DIV-TOT-SY-DIVTL  PIC ZZZ,ZZ9.
               10  FILLER            PIC X(73) VALUE SPACES.
           05  DEPT-TOT-LINE.
               10  FILLER            PIC X(10) VALUE SPACES.
               10  FILLER            PIC X(13) VALUE 'TOTALS: DEPT '.
               10  DEPT-DTL          PIC X     VALUE SPACES.
               10  FILLER            PIC X(17) VALUE SPACES.
               10  DEPT-TOT-FY-DTL   PIC ZZ,ZZ9.
               10  FILLER            PIC X(7)  VALUE SPACES.
               10  DEPT-TOT-SY-DTL   PIC ZZ,ZZ9.
               10  FILLER            PIC X(73).
           05  CRS-TOTAL-LINE.
               10  FILLER            PIC X(10) VALUE SPACES.
               10  FILLER            PIC X(15) VALUE 'TOTALS: COURSE '.
               10  CRS-CTL           PIC X(5)  VALUE SPACES.
               10  FILLER            PIC X(12) VALUE SPACES.
               10  CRS-TOT-FY-CTL    PIC Z,ZZ9.
               10  FILLER            PIC X(8)  VALUE SPACES.
               10  CRS-TOT-SY-CTL    PIC Z,ZZ9.
               10  FILLER            PIC X(73) VALUE SPACES.
       01  PAGE-HDR.
           05  FILLER                PIC X(50).
           05  FILLER                PIC X(32)
                  VALUE 'TOO LAZY TO WRITE COLUMN HEADERS'.
           05  FILLER                PIC X(30).
           05  FILLER                PIC X(5)  VALUE 'PAGE '.
           05  PAGE-NUMBER-HDR       PIC Z9.
           05  FILLER                PIC X(13).
       PROCEDURE DIVISION.
       MAINLINE.
           PERFORM A-100-SETUP.
           PERFORM B-100-PROCESS.
           PERFORM C-100-WRAPUP.
           STOP RUN.
       A-100-SETUP.
           OPEN INPUT COURSE-FILE
                OUTPUT PRINT-FILE.
       B-100-PROCESS.
           READ COURSE-FILE
               AT END
                   MOVE 'NO ' TO MORE-RECS.
           IF THERE-ARE-MORE-RECS
               MOVE DIV TO HOLD-DIV
               MOVE DEPT TO HOLD-DEPT
               MOVE CRS TO HOLD-CRS
               PERFORM B-200-LOOP
                   UNTIL NO-MORE-RECS
               PERFORM B-310-CRS-TOT-ROUT
               PERFORM B-320-DEPT-TOT-ROUT
               PERFORM B-330-DIV-TOT-ROUT
               PERFORM B-340-FIN-TOT-ROUT.
       B-200-LOOP.
           IF DIV NOT = HOLD-DIV
               PERFORM B-310-CRS-TOT-ROUT
               PERFORM B-320-DEPT-TOT-ROUT
               PERFORM B-330-DIV-TOT-ROUT
           ELSE
               IF DEPT NOT = HOLD-DEPT
                   PERFORM B-310-CRS-TOT-ROUT
                   PERFORM B-320-DEPT-TOT-ROUT
               ELSE
                   IF CRS NOT = HOLD-CRS
                       PERFORM B-310-CRS-TOT-ROUT.
           PERFORM B-300-DETAIL
           READ COURSE-FILE
               AT END
                   MOVE 'NO ' TO MORE-RECS.
       B-300-DETAIL.
           IF LINE-COUNT > 55 OR PAGE-COUNT = 1
               PERFORM B-400-HDR-ROUT.
           MOVE SPACES TO PRINTZ.
           MOVE DIV TO DIV-PR.
           MOVE DEPT TO DEPT-PR.
           MOVE CRS TO CRS-PR.
           MOVE SECT TO SECT-PR.
           MOVE FIRST-YR TO FIRST-YR-PR.
           MOVE SECOND-YR TO SECOND-YR-PR.
           WRITE PRINTZ
               AFTER ADVANCING PROPER-SPACING.
           MOVE SPACE-1-LINE TO PROPER-SPACING.
           COPY ADDROUT.CBL IN C:\PCOBWIN\COPYCALL.
       B-310-CRS-TOT-ROUT.
           MOVE HOLD-CRS TO CRS-CTL.
           MOVE CRS-TOT-FY-ACC TO CRS-TOT-FY-CTL.
           MOVE CRS-TOT-SY-ACC TO CRS-TOT-SY-CTL.
           WRITE PRINTZ FROM CRS-TOTAL-LINE
               AFTER ADVANCING 2 LINES.
           MOVE SPACE-2-LINES TO PROPER-SPACING.
           MOVE CRS TO HOLD-CRS.
           MOVE 0 TO CRS-TOT-FY-ACC.
           MOVE 0 TO CRS-TOT-SY-ACC.
       B-320-DEPT-TOT-ROUT.
           MOVE HOLD-DEPT TO DEPT-DTL.
           MOVE DEPT-TOT-FY-ACC TO DEPT-TOT-FY-DTL.
           MOVE DEPT-TOT-SY-ACC TO DEPT-TOT-SY-DTL.
           WRITE PRINTZ FROM DEPT-TOT-LINE
               AFTER ADVANCING 2 LINES.
           MOVE SPACE-2-LINES TO PROPER-SPACING.
           MOVE DEPT TO HOLD-DEPT.
           MOVE 0 TO DEPT-TOT-FY-ACC.
           MOVE 0 TO DEPT-TOT-SY-ACC.
       B-330-DIV-TOT-ROUT.
           MOVE HOLD-DIV TO DIV-DIVTL.
           MOVE DIV-TOT-FY-ACC TO DIV-TOT-FY-DIVTL.
           MOVE DIV-TOT-SY-ACC TO DIV-TOT-SY-DIVTL.
           WRITE PRINTZ FROM DIV-TOT-LINE
               AFTER ADVANCING 2 LINES.
           MOVE SPACE-2-LINES TO PROPER-SPACING.
           MOVE DIV TO HOLD-DIV.
           MOVE 0 TO DIV-TOT-FY-ACC.
           MOVE 0 TO DIV-TOT-SY-ACC.
       B-340-FIN-TOT-ROUT.
           MOVE FIN-TOT-FY-ACC TO FIN-TOT-FY-FTL.
           MOVE FIN-TOT-SY-ACC TO FIN-TOT-SY-FTL.
           WRITE PRINTZ FROM FINAL-TOTAL-LINE
               AFTER ADVANCING 2 LINES.
       B-400-HDR-ROUT.
           MOVE PAGE-COUNT TO PAGE-NUMBER-HDR.
           WRITE PRINTZ FROM PAGE-HDR
               AFTER ADVANCING PAGE.
           MOVE SPACES TO PRINTZ.
           WRITE PRINTZ
               AFTER ADVANCING 1 LINES.
           ADD 1 TO PAGE-COUNT.
           MOVE 2 TO LINE-COUNT.
           MOVE SPACE-2-LINES TO PROPER-SPACING.
        C-100-WRAPUP.
           CLOSE COURSE-FILE
                 PRINT-FILE.