All pastes #2093637 Raw Edit

sup jake

public text v1 · immutable
#2093637 ·published 2011-11-10 19:41 UTC
rendered paste body
       IDENTIFICATION DIVISION.
       PROGRAM-ID. LAB5.
       AUTHOR. Dylan Flint


       ENVIRONMENT DIVISION.

       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT EMP-FILE  ASSIGN TO "./lab6.dat"
                    ORGANIZATION IS LINE SEQUENTIAL.
           SELECT GRAD-REPORT-FILE ASSIGN TO "./lab6gradout.txt"
                    ORGANIZATION IS LINE SEQUENTIAL.
           SELECT NON-GRAD-REPORT-FILE ASSIGN TO "./lab6nongradout.txt"
                    ORGANIZATION IS LINE SEQUENTIAL.

       DATA DIVISION.
       FILE SECTION.
       FD  EMP-FILE
           DATA RECORD IS EMP-REC
           RECORDING MODE IS F
           RECORD CONTAINS 80 CHARACTERS.

       01  EMP-REC.
           05  SR-EMP-NUM          PIC XXX.
           05  SR-NAME             PIC X(15).
           05  SR-YEARS-SERVICE    PIC 99.
           05  SR-EDU-CODE         PIC X.
           05  SR-PRES-SALARY      PIC 9(5)V99.
           05  SR-BUDGET-ESTIMATE  PIC 9(6)V99.

       FD  GRAD-REPORT-FILE
           DATA RECORD IS WS-GRAD-PRT-LINE
           RECORDING MODE IS F
           RECORD CONTAINS 132 CHARACTERS.

       01  GRAD-PRT-LINE          PIC X(132).

       FD  NON-GRAD-REPORT-FILE
           DATA RECORD IS WS-NON-GRAD-PRT-LINE
           RECORDING MODE IS F
           RECORD CONTAINS 132 CHARACTERS.

       01  NON-GRAD-PRT-LINE          PIC X(132).
       WORKING-STORAGE SECTION.

       01  WS-GRAD-PRT-LINE.
      ** ADD THE PIC VALUES IN THE FOLLOWING LINE.

           05  FILLER                              PIC X(1).
           05  SDL-GRAD-EMP-NUM                    PIC ZZ9.
           05  FILLER                              PIC X(5).
           05  SDL-GRAD-NAME                       PIC X(15).
           05  FILLER                              PIC X(2).
           05  SDL-GRAD-CLASSIFICATION             PIC X(8).
           05  FILLER                              PIC X(6).
           05  SDL-GRAD-YEARS-SEVICE               PIC Z9.
           05  FILLER                              PIC X(11).
           05  SDL-GRAD-PRESENT-SALARY             PIC ZZ,ZZ9.99.
           05  FILLER                              PIC X(7).
           05  SDL-GRAD-PAY-INCREASE-PERECNT       PIC ZZ.ZZ.
           05  FILLER                              PIC X.
           05  SDL-GRAD-PERC-SIGN                  PIC X.
           05  FILLER                              PIC X(10).
           05  SDL-GRAD-PAY-INCREASE-AMOUNT        PIC $$$$$9.99+.
           05  FILLER                              PIC X(6).
           05  SDL-GRAD-NEW-SALARY                 PIC $ZZZ,ZZ9.99.
           05  FILLER                              PIC X(6).
           05  SDL-GRAD-BUDGET-DIFF                PIC $ZZZ,ZZ9.99.


       01  WS-NON-GRAD-PRT-LINE.
      ** ADD THE PIC VALUES IN THE FOLLOWING LINE.

           05  FILLER                                  PIC X(1).
           05  SDL-NON-GRAD-EMP-NUM                    PIC ZZ9.
           05  FILLER                                  PIC X(5).
           05  SDL-NON-GRAD-NAME                       PIC X(15).
           05  FILLER                                  PIC X(2).
           05  SDL-NON-GRAD-CLASSIFICATION             PIC X(8).
           05  FILLER                                  PIC X(6).
           05  SDL-NON-GRAD-YEARS-SEVICE               PIC Z9.
           05  FILLER                                  PIC X(11).
           05  SDL-NON-GRAD-PRESENT-SALARY             PIC ZZ,ZZ9.99.
           05  FILLER                                  PIC X(7).
           05  SDL-NON-GRAD-PAY-INC-PERECNT       PIC ZZ.ZZ.
           05  FILLER                                  PIC X.
           05  SDL-NON-GRAD-PERC-SIGN                  PIC X.
           05  FILLER                                  PIC X(10).
           05  SDL-NON-GRAD-PAY-INC-AMOUNT        PIC $$$$$9.99+.
           05  FILLER                                  PIC X(6).
           05  SDL-NON-GRAD-NEW-SALARY                 PIC $ZZZ,ZZ9.99.
           05  FILLER                                  PIC X(6).
           05  SDL-NON-GRAD-BUDGET-DIFF                 PIC $ZZZ,ZZ9.99.


      * ADD THE PIC VALUES IN THE FOLLOWING TOTAL LINES.
       01 WS-NEW-SALARY              PIC 9(6)V99 VALUE ZERO.
       01 WS-PRES-SALARY             PIC 9(5)V99 VALUE ZERO.
       01 WS-PAY-INCREASE            PIC 9999V99 VALUE ZERO.
       01 WS-ANALYST-COUNTER         PIC 99      VALUE ZERO.
       01 WS-SEN-PROG-COUNTER        PIC 99      VALUE ZERO.
       01 WS-GRAD-PROGRAMMER-COUNTER      PIC 99      VALUE ZERO.
       01 WS-NON-GRAD-PROGRAMMER-COUNTER      PIC 99      VALUE ZERO.

       01 WS-BUDGET-ESTIMATE         PIC 9(5)V99 VALUE ZERO.
       01 WS-BUDGET-DIFF             PIC 9(4)V99 VALUE ZERO.
       01 WS-JR-PROG-COUNTER         PIC 99      VALUE ZERO.
       01 WS-GRAD-PAGE-COUNTER       PIC 99      VALUE ZERO.
       01 WS-NON-GRAD-PAGE-COUNTER   PIC 99      VALUE ZERO.
       01 WS-AVG-ANALYST             PIC 9(5)V99 VALUE ZERO.
       01 WS-AVG-SEN-PROG            PIC 9(5)V99 VALUE ZERO.
       01 WS-AVG-GRAD-PROGRAMMER          PIC 9(5)V99 VALUE ZERO.
       01 WS-AVG-NON-GRAD-PROGRAMMER          PIC 9(5)V99 VALUE ZERO.
       01 WS-AVG-JR-PROG             PIC 9(5)V99 VALUE ZERO.
       01 WS-GRAD-PAGE-NUMBER        PIC 9       VALUE ZERO.
       01 WS-NON-GRAD-PAGE-NUMBER    PIC 9       VALUE ZERO.

       01 CLASSIFICATIONS.
           05 ANALYST                PIC X(7) VALUE 'ANALYST'.
           05 SEN-PROG               PIC X(8) VALUE 'SEN PROG'.
           05 PROGRAMMER             PIC X(4) VALUE 'PROG'.
           05 JR-PROG                PIC X(7) VALUE 'JR PROG'.

       01 CONST-PAY-INCREASE.
           05 ANALYST-INCREASE       PIC 99V9 VALUE 13.2.
           05 SENIOR-PROG-INCREASE   PIC 99V9 VALUE 11.5.
           05 PROGRAMMER-INCREASE    PIC 9V9  VALUE 8.3.
           05 JUNIOR-PROG-INCREASE   PIC 9V9  VALUE 6.3.
           05 UNCLASSIFIED           PIC 9     VALUE 0.

       01 END-SWITCH                 PIC XXX VALUE 'NO'.

       01  GRAD-TOTAL-LINE.
           05  FILLER           PIC X(2).
           05  FILLER           PIC X(17)
                   VALUE "AVERAGE INCREASES".
           05  FILLER           PIC X(2).
           05  FILLER           PIC X(8) VALUE "ANALYST=".
           05  AVG-ANALYST      PIC Z9,999.99.
           05  FILLER           PIC X(2).
           05  FILLER           PIC X(9) VALUE "SEN PROG=".
           05  AVG-SEN-PROG     PIC Z9,999.99.
           05  FILLER           PIC X(2).
           05  FILLER           PIC X(5) VALUE "PROG=".
           05  AVG-GRAD-PROGRAMMER   PIC Z9,999.99.

       01  NON-GRAD-TOTAL-LINE.
           05  FILLER           PIC X(2).
           05  FILLER           PIC X(17)
                   VALUE "AVERAGE INCREASES".
           05  FILLER           PIC X(2).
           05  FILLER           PIC X(5) VALUE "PROG=".
           05  AVG-NON-GRAD-PROGRAMMER   PIC Z9,999.99.
           05  FILLER           PIC XX VALUE SPACES.
           05  AVG-JR-PROG      PIC ZZ9,999.99.


       01  PRINT-GRAD-PAGE-NUMBER.
           05  FILLER          PIC X(13) VALUE "REPORT PAGE: ".
           05  PRT-GRAD-PG-NUM      PIC ZZ.

       01  PRINT-NON-GRAD-PAGE-NUMBER.
           05  FILLER          PIC X(13) VALUE "REPORT PAGE: ".
           05  PRT-NON-GRAD-PG-NUM      PIC ZZ.

       01  RPT-HEADING.
           05 FILLER  PIC X(28).
           05 FILLER  PIC X(23)
                   VALUE "PAY INCREASE REPORT".

       01  HEADING-LINE1.
           05  FILLER          PIC X(1)  VALUE SPACES.
           05  FILLER          PIC X(3)  VALUE "EMP".
           05  FILLER          PIC X(12) VALUE SPACES.
           05  FILLER          PIC X(4)  VALUE "NAME".
           05  FILLER          PIC X(7)  VALUE SPACES.
           05  FILLER          PIC X(14) VALUE "CLASSIFICATION".
           05  FILLER          PIC X(2)  VALUE SPACES.
           05  FILLER          PIC X(5)  VALUE "YEARS".
           05  FILLER          PIC X(13) VALUE SPACES.
           05  FILLER          PIC X(7)  VALUE "PRESENT".
           05  FILLER          PIC X(8)  VALUE SPACES.
           05  FILLER          PIC X(12) VALUE "PAY INCREASE".
           05  FILLER          PIC X(5)  VALUE SPACES.
           05  FILLER          PIC X(12) VALUE "PAY INCREASE".
           05  FILLER          PIC X(4)  VALUE SPACES.
           05  FILLER          PIC X(10) VALUE "NEW SALARY".
           05  FILLER          PIC X(2)  VALUE SPACES.
           05  FILLER          PIC X(16) VALUE "BUDGET DIFF".


       01  HEADING-LINE2.
           05  FILLER          PIC X(1)  VALUE SPACES.
           05  FILLER          PIC X(3)  VALUE "NUM".
           05  FILLER          PIC X(39) VALUE SPACES.
           05  FILLER          PIC X(10) VALUE "OF SERVICE".
           05  FILLER          PIC X(8)  VALUE SPACES.
           05  FILLER          PIC X(6)  VALUE "SALARY".
           05  FILLER          PIC X(10) VALUE SPACES.
           05  FILLER          PIC X(7)  VALUE "PERCENT".
           05  FILLER          PIC X(13) VALUE SPACES.
           05  FILLER          PIC X(6)  VALUE "AMOUNT".
           05  FILLER          PIC X(5)  VALUE SPACES.

       01  UNDERLINES.
           05  FILLER          PIC X(1)  VALUE SPACES.
           05  FILLER          PIC X(7)  VALUE "-------".
           05  FILLER          PIC X(2)  VALUE SPACES.
           05  FILLER          PIC X(15) VALUE "---------------".
           05  FILLER          PIC X(2)  VALUE SPACES.
           05  FILLER          PIC X(14) VALUE "--------------".
           05  FILLER          PIC X(2)  VALUE SPACES.
           05  FILLER          PIC X(11) VALUE "-----------".
           05  FILLER          PIC X(3)  VALUE SPACES.
           05  FILLER          PIC X(14) VALUE "--------------".
           05  FILLER          PIC X(3)  VALUE SPACES.
           05  FILLER          PIC X(14) VALUE "--------------".
           05  FILLER          PIC X(5)  VALUE SPACES.
           05  FILLER          PIC X(11) VALUE "-----------".
           05  FILLER          PIC X(5)  VALUE SPACES.
           05  FILLER          PIC X(10) VALUE "----------".
           05  FILLER          PIC X(7)  VALUE SPACES.
           05  FILLER          PIC X(16) VALUE "----------------".

       01  NAME-LINE.
           05  FILLER          PIC X(5) VALUE SPACES.
           05  FILLER          PIC X(28)
                   VALUE "DYLAN FLINT, LAB 5".
           05  FILLER          PIC X(5)  VALUE SPACES.
           05  NL-DATE         PIC 9(6).
           05  FILLER          PIC X(5)  VALUE SPACES.
           05  NL-TIME         PIC 9(8).

       PROCEDURE DIVISION.
           OPEN INPUT  EMP-FILE
           OPEN OUTPUT GRAD-REPORT-FILE
           OPEN OUTPUT NON-GRAD-REPORT-FILE.

           ACCEPT NL-DATE FROM DATE.
           ACCEPT NL-TIME FROM TIME.

           PERFORM 100-PRINT-GRAD-HEADINGS.
           PERFORM 200-PRINT-NON-GRAD-HEADINGS.

           READ EMP-FILE AT END MOVE 'YES' TO END-SWITCH.

           PERFORM 10-PROCESS-RECORDS UNTIL END-SWITCH = 'YES'.
           PERFORM 1300-GRAD-TOTALS.
           PERFORM 1350-NON-GRAD-TOTALS.
           PERFORM 300-PRINT-TOTALS.

           CLOSE   EMP-FILE
                   GRAD-REPORT-FILE
                   NON-GRAD-REPORT-FILE.
           STOP RUN.

       10-PROCESS-RECORDS.


             MOVE SPACES TO GRAD-PRT-LINE.
             MOVE SPACES TO NON-GRAD-PRT-LINE.
             MOVE SR-PRES-SALARY TO WS-PRES-SALARY.
             EVALUATE SR-EDU-CODE
               WHEN = "G"
                   PERFORM 400-GRADUATES
               WHEN = "N"
                   PERFORM 500-NON-GRADUATES
               END-EVALUATE.



             READ EMP-FILE AT END MOVE 'YES' TO END-SWITCH.

       100-PRINT-GRAD-HEADINGS.
         WRITE GRAD-PRT-LINE FROM NAME-LINE AFTER ADVANCING PAGE.
         WRITE GRAD-PRT-LINE FROM RPT-HEADING AFTER ADVANCING 2 LINES.
         WRITE GRAD-PRT-LINE FROM HEADING-LINE1 AFTER ADVANCING 2 LINES.
         WRITE GRAD-PRT-LINE FROM HEADING-LINE2 AFTER ADVANCING 1 LINE
         WRITE GRAD-PRT-LINE FROM UNDERLINES AFTER ADVANCING 1 LINE.
         PERFORM 1200-GRAD-PAGE-NUMBER.

       200-PRINT-NON-GRAD-HEADINGS.
       WRITE NON-GRAD-PRT-LINE FROM NAME-LINE AFTER ADVANCING PAGE.
       WRITE NON-GRAD-PRT-LINE FROM RPT-HEADING AFTER ADVANCING 2 LINES.
       WRITE NON-GRAD-PRT-LINE
                           FROM HEADING-LINE1 AFTER ADVANCING 2 LINES.
       WRITE NON-GRAD-PRT-LINE
                           FROM HEADING-LINE2 AFTER ADVANCING 1 LINE.
       WRITE NON-GRAD-PRT-LINE FROM UNDERLINES AFTER ADVANCING 1 LINE.
       PERFORM 1250-NON-GRAD-PAGE-NUMBER.


       300-PRINT-TOTALS.
        WRITE GRAD-PRT-LINE FROM GRAD-TOTAL-LINE
                              AFTER ADVANCING 2 LINES.
        WRITE NON-GRAD-PRT-LINE FROM NON-GRAD-TOTAL-LINE
                              AFTER ADVANCING 2 LINES.
       400-GRADUATES.
           EVALUATE SR-YEARS-SERVICE
            WHEN > 15
               MOVE ANALYST TO SDL-GRAD-CLASSIFICATION
               PERFORM 600-ANALYST
            WHEN > 8
               MOVE SEN-PROG TO SDL-GRAD-CLASSIFICATION
               PERFORM 700-SENIOR-PROG
            WHEN > 2
               MOVE PROGRAMMER TO SDL-GRAD-CLASSIFICATION
               PERFORM 800-GRAD-PROGRAMMER
            WHEN <= 2
               MOVE SPACES TO SDL-GRAD-CLASSIFICATION
               PERFORM 1000-GRAD-UNCLASSIFIED
            END-EVALUATE.
       500-NON-GRADUATES.
            EVALUATE SR-YEARS-SERVICE
            WHEN > 10
               MOVE PROGRAMMER TO SDL-NON-GRAD-CLASSIFICATION
               PERFORM 850-NON-GRAD-PROGRAMMER
            WHEN > 4
               MOVE JR-PROG TO SDL-NON-GRAD-CLASSIFICATION
               PERFORM 900-JUNIOR-PROG
            WHEN <= 4
               MOVE SPACES TO SDL-NON-GRAD-CLASSIFICATION
               PERFORM 1050-NON-GRAD-UNCLASSIFIED
            END-EVALUATE.
       600-ANALYST.
           COMPUTE WS-PAY-INCREASE =
                   (WS-PRES-SALARY * ANALYST-INCREASE)/100.
           COMPUTE WS-NEW-SALARY =
                   WS-PAY-INCREASE + SR-PRES-SALARY.

           ADD 1 TO WS-ANALYST-COUNTER.
           ADD WS-PAY-INCREASE TO WS-AVG-ANALYST.
           MOVE ANALYST TO SDL-GRAD-CLASSIFICATION.
           MOVE ANALYST-INCREASE TO SDL-GRAD-PAY-INCREASE-PERECNT.
           MOVE  '%' TO SDL-GRAD-PERC-SIGN.
           PERFORM 1600-GRAD-BUDGET-DIFF.

       700-SENIOR-PROG.
           COMPUTE WS-PAY-INCREASE =
                   (SR-PRES-SALARY * SENIOR-PROG-INCREASE)/100.
           COMPUTE WS-NEW-SALARY =
                   WS-PAY-INCREASE + SR-PRES-SALARY.

           ADD 1 TO WS-SEN-PROG-COUNTER.
           ADD WS-PAY-INCREASE TO WS-AVG-SEN-PROG.
           MOVE SEN-PROG TO SDL-GRAD-CLASSIFICATION.
           MOVE SENIOR-PROG-INCREASE TO SDL-GRAD-PAY-INCREASE-PERECNT.
           MOVE  '%' TO SDL-GRAD-PERC-SIGN.
           PERFORM 1600-GRAD-BUDGET-DIFF.

       800-GRAD-PROGRAMMER.
           COMPUTE WS-PAY-INCREASE =
                   (SR-PRES-SALARY * PROGRAMMER-INCREASE)/100.
           COMPUTE WS-NEW-SALARY =
                   WS-PAY-INCREASE + SR-PRES-SALARY.

           ADD 1 TO WS-GRAD-PROGRAMMER-COUNTER.
           ADD WS-PAY-INCREASE TO WS-AVG-GRAD-PROGRAMMER.
           MOVE PROGRAMMER TO SDL-GRAD-CLASSIFICATION.
           MOVE PROGRAMMER-INCREASE TO SDL-GRAD-PAY-INCREASE-PERECNT.
           MOVE  '%' TO SDL-GRAD-PERC-SIGN.
           PERFORM 1600-GRAD-BUDGET-DIFF.

       850-NON-GRAD-PROGRAMMER.
           COMPUTE WS-PAY-INCREASE =
                   (SR-PRES-SALARY * PROGRAMMER-INCREASE)/100.
           COMPUTE WS-NEW-SALARY =
                   WS-PAY-INCREASE + SR-PRES-SALARY.

           ADD 1 TO WS-NON-GRAD-PROGRAMMER-COUNTER.
           ADD WS-PAY-INCREASE TO WS-AVG-NON-GRAD-PROGRAMMER.
           MOVE PROGRAMMER TO SDL-NON-GRAD-CLASSIFICATION.
           MOVE PROGRAMMER-INCREASE TO SDL-NON-GRAD-PAY-INC-PERECNT.
           MOVE  '%' TO SDL-NON-GRAD-PERC-SIGN.
           PERFORM 1700-NON-GRAD-BUDGET-DIFF.
       900-JUNIOR-PROG.
           COMPUTE WS-PAY-INCREASE =
                   (SR-PRES-SALARY * JUNIOR-PROG-INCREASE)/100.
           COMPUTE WS-NEW-SALARY =
                   WS-PAY-INCREASE + SR-PRES-SALARY.

           ADD 1 TO WS-JR-PROG-COUNTER.
           ADD WS-PAY-INCREASE TO WS-AVG-JR-PROG.
           MOVE JR-PROG TO SDL-NON-GRAD-CLASSIFICATION.
           MOVE JUNIOR-PROG-INCREASE TO SDL-NON-GRAD-PAY-INC-PERECNT.
           MOVE  '%' TO SDL-NON-GRAD-PERC-SIGN.
           PERFORM 1700-NON-GRAD-BUDGET-DIFF.

       1000-GRAD-UNCLASSIFIED.
            MOVE 0.00 TO WS-PAY-INCREASE.
            MOVE 0 TO SDL-GRAD-PAY-INCREASE-PERECNT.
            MOVE SPACES TO SDL-GRAD-PERC-SIGN.
            COMPUTE WS-NEW-SALARY =
                    WS-PAY-INCREASE + SR-PRES-SALARY.
           PERFORM 1600-GRAD-BUDGET-DIFF.

       1050-NON-GRAD-UNCLASSIFIED.
            MOVE 0.00 TO WS-PAY-INCREASE.
            MOVE 0 TO SDL-NON-GRAD-PAY-INC-PERECNT.
            MOVE SPACES TO SDL-NON-GRAD-PERC-SIGN.
            COMPUTE WS-NEW-SALARY =
                    WS-PAY-INCREASE + SR-PRES-SALARY.
           PERFORM 1700-NON-GRAD-BUDGET-DIFF.

       1100-MOVE-GRAD.
          MOVE  SR-EMP-NUM TO SDL-GRAD-EMP-NUM.
          MOVE  SR-NAME TO SDL-GRAD-NAME.
          MOVE  SR-YEARS-SERVICE TO SDL-GRAD-YEARS-SEVICE.
          MOVE  SR-PRES-SALARY TO SDL-GRAD-PRESENT-SALARY.
          MOVE  WS-PAY-INCREASE TO SDL-GRAD-PAY-INCREASE-AMOUNT.
          MOVE  WS-NEW-SALARY TO SDL-GRAD-NEW-SALARY.
          PERFORM 1400-PRINT-GRAD.
       1150-MOVE-NON-GRAD.
          MOVE  SR-EMP-NUM TO SDL-NON-GRAD-EMP-NUM.
          MOVE  SR-NAME TO SDL-NON-GRAD-NAME.
          MOVE  SR-YEARS-SERVICE TO SDL-NON-GRAD-YEARS-SEVICE.
          MOVE  SR-PRES-SALARY TO SDL-NON-GRAD-PRESENT-SALARY.
          MOVE  WS-PAY-INCREASE TO SDL-NON-GRAD-PAY-INC-AMOUNT.
          MOVE  WS-NEW-SALARY TO SDL-NON-GRAD-NEW-SALARY.
          PERFORM 1500-PRINT-NON-GRAD.

       1200-GRAD-PAGE-NUMBER.
          ADD 1 TO WS-GRAD-PAGE-NUMBER.
          MOVE WS-GRAD-PAGE-NUMBER TO PRT-GRAD-PG-NUM.
          WRITE GRAD-PRT-LINE FROM PRINT-GRAD-PAGE-NUMBER.
       1250-NON-GRAD-PAGE-NUMBER.
          ADD 1 TO WS-NON-GRAD-PAGE-NUMBER.
          MOVE WS-NON-GRAD-PAGE-NUMBER TO PRT-NON-GRAD-PG-NUM.
          WRITE NON-GRAD-PRT-LINE FROM PRINT-NON-GRAD-PAGE-NUMBER.
       1300-GRAD-TOTALS.
       COMPUTE WS-AVG-ANALYST = WS-AVG-ANALYST / WS-ANALYST-COUNTER.
       COMPUTE WS-AVG-SEN-PROG = WS-AVG-SEN-PROG / WS-ANALYST-COUNTER.
       COMPUTE WS-AVG-GRAD-PROGRAMMER =
               WS-AVG-GRAD-PROGRAMMER / WS-ANALYST-COUNTER.

       MOVE WS-AVG-ANALYST TO AVG-ANALYST.
       MOVE WS-AVG-SEN-PROG TO AVG-SEN-PROG.
       MOVE WS-AVG-GRAD-PROGRAMMER TO AVG-GRAD-PROGRAMMER.

       1350-NON-GRAD-TOTALS.
       COMPUTE WS-AVG-NON-GRAD-PROGRAMMER =
               WS-AVG-NON-GRAD-PROGRAMMER / WS-ANALYST-COUNTER.
       COMPUTE WS-AVG-JR-PROG = WS-AVG-JR-PROG / WS-ANALYST-COUNTER.

       MOVE WS-AVG-ANALYST TO AVG-ANALYST.
       MOVE WS-AVG-SEN-PROG TO AVG-SEN-PROG.
       MOVE WS-AVG-NON-GRAD-PROGRAMMER TO AVG-NON-GRAD-PROGRAMMER.
       MOVE WS-AVG-JR-PROG TO AVG-JR-PROG.

       1400-PRINT-GRAD.
             ADD 1 TO WS-GRAD-PAGE-COUNTER.
             IF WS-GRAD-PAGE-COUNTER >= 15
                WRITE GRAD-PRT-LINE
                FROM WS-GRAD-PRT-LINE AFTER ADVANCING 2 LINES
                MOVE 0 TO WS-GRAD-PAGE-COUNTER
                MOVE SPACES TO GRAD-PRT-LINE
                PERFORM 100-PRINT-GRAD-HEADINGS
             ELSE
                WRITE GRAD-PRT-LINE
                FROM WS-GRAD-PRT-LINE AFTER ADVANCING 2 LINES
             END-IF.

       1500-PRINT-NON-GRAD.
             ADD 1 TO WS-NON-GRAD-PAGE-COUNTER.
             IF WS-NON-GRAD-PAGE-COUNTER >= 15
                WRITE NON-GRAD-PRT-LINE FROM WS-NON-GRAD-PRT-LINE
                AFTER ADVANCING 2 LINES
                MOVE 0 TO WS-NON-GRAD-PAGE-COUNTER
                MOVE SPACES TO NON-GRAD-PRT-LINE
                PERFORM 200-PRINT-NON-GRAD-HEADINGS
             ELSE
                WRITE NON-GRAD-PRT-LINE FROM WS-NON-GRAD-PRT-LINE
                AFTER ADVANCING 2 LINES
             END-IF.

       1600-GRAD-BUDGET-DIFF.
           MOVE SR-BUDGET-ESTIMATE TO WS-BUDGET-ESTIMATE.
           COMPUTE WS-BUDGET-DIFF = WS-NEW-SALARY - WS-BUDGET-ESTIMATE.
           MOVE WS-BUDGET-DIFF TO SDL-GRAD-BUDGET-DIFF.
           PERFORM 1100-MOVE-GRAD.
       1700-NON-GRAD-BUDGET-DIFF.
           MOVE SR-BUDGET-ESTIMATE TO WS-BUDGET-ESTIMATE.
           COMPUTE WS-BUDGET-DIFF = WS-NEW-SALARY - WS-BUDGET-ESTIMATE.
           MOVE WS-BUDGET-DIFF TO SDL-NON-GRAD-BUDGET-DIFF.
           PERFORM 1150-MOVE-NON-GRAD.