IDENTIFICATION DIVISION.
       PROGRAM-ID. INFLATION-REPORT.
       AUTHOR. JONAS WIK.
       DATE-WRITTEN. 03/27/2000.
       DATE-COMPILED.
      ***************************************************************
      **
      **   DESCRIPTION:
      **
      **   THIS PROGRAM READS A RECORD AND PRINTS A LIST WITH THE
      **   ACCUMULATED INFLATION FOR 10 YEARS.
      **
      **   INPUT:
      **       INFLAT-FILE INPUT FILE
      **       INFLAT-ITEMNO           5  CHARACTERS
      **       INFLAT-DESCR            20 CHARACTERS
      **       INFLAT-ITEM-COST        5  DIGITS 999V99
      **
      **   OUTPUT:
      **       INFLAT-LIST OUTPUT FILE
      **       FIELD                       PRINTS IN COLS.
      **       YEARCOUNT                   38-39
      **       INFLATION                   53-54
      **       COST-W-INFL                 74-80
      **
      **   PROGRAM DUE: MARCH 3 2000
      **
      ***************************************************************
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
      **
       FILE-CONTROL.
           SELECT INFLAT-FILE ASSIGN TO 'J:/COBOL/INFLAT.DAT'
           ORGANIZATION IS LINE SEQUENTIAL.
           SELECT INFLAT-LIST ASSIGN TO PRINTER.
      **
       DATA DIVISION.
      **
       FILE SECTION.
      **
       FD  INFLAT-FILE
           LABEL RECORD ARE STANDARD
           RECORDING IS F
           RECORD CONTAINS 30 CHARACTERS.
       01  INFLAT-FILE-REC.
           05 INFLAT-ITEMNO            PIC X(5).
           05 INFLAT-DESCR             PIC X(20).
           05 INFLAT-ITEM-COST         PIC 999V99.
      **
       FD  INFLAT-LIST
           LABEL RECORDS ARE OMITTED
           RECORD CONTAINS 130 CHARACTERS.
       01  INFLAT-LIST-REC             PIC X(130).
      **
       WORKING-STORAGE SECTION.
      **
       01  WV-VARIABLES.
           05 WV-COST-W-INFL           PIC 9999V99 VALUE 0.
           05 PERCENT                  PIC 9V99   VALUE 1.
      **

       01  WS-COUNTS.
      **
           05 WC-YEARCOUNT             PIC 99
                               VALUE 1.
           05 WC-PAGECOUNT             PIC 9999
                               VALUE 1.
           05 WC-LINECOUNT             PIC 99
                               VALUE ZERO.
              88 WC-EOP        VALUE 10.
      **
       01  WS-DATE.
      **
           05 WD-YEAR                  PIC 9999.
           05 WD-MONTH                 PIC 99.
           05 WD-DAY                   PIC 99.
           05                          PIC X(13).
      **
       01  WS-SWITCH.
      **
           08 WS-EOF                   PIC XXX VALUE 'NO '.
           88 WS-EOF-YES                       VALUE 'YES'.
      **
       01  INFLAT-LIST-HEADING-1.
           05                          PIC X(17)
                               VALUE 'AUTHOR: JONAS WIK'.
           05 FILLER                   PIC X(30)
                               VALUE SPACES.
           05                          PIC X(31)
                               VALUE 'I N F L A T I O N   R E P O R T'.
           05 FILLER                   PIC X(18)
                               VALUE SPACES.
           05 HEADING-MONTH            PIC Z9.
           05                          PIC X
                               VALUE '/'.
           05 HEADING-DAY              PIC Z9.
           05                          PIC X
                               VALUE '/'.
           05 HEADING-YEAR             PIC 9999.
           05 FILLER                   PIC X(15)
                               VALUE SPACES.
           05                          PIC X(5)
                               VALUE 'PAGE '.
           05 HEADING-PAGE             PIC ZZ99.
      **
       01 INFLAT-LIST-HEADING-2.
           05 FILLER                   PIC XXX VALUE SPACES.
           05                          PIC X(13)
                               VALUE 'ITEM NUMBER: '.
           05 ITEMNO                   PIC X(5).
           05 FILLER                   PIC X(108) VALUE SPACES.

       01 INFLAT-LIST-HEADING-3.
           05 FILLER                   PIC XXX VALUE SPACES.
           05                          PIC X(19)
                               VALUE 'ITEM DESCRIPTION:  '.
           05 DESCR                    PIC X(20).
           05 FILLER                   PIC X(97) VALUE SPACES.

       01 INFLAT-LIST-HEADING-4.
           05 FILLER                   PIC XXX   VALUE SPACES.
           05                          PIC X(12)
                               VALUE 'ITEM COST:  '.
           05 ITEM-COST                PIC $$$$.99.
           05 FILLER                   PIC X(108) VALUE SPACE.

       01 INFLAT-LIST-HEADING-5.
           05 FILLER                   PIC X(36) VALUE SPACES.
           05                          PIC X(4)
                               VALUE 'YEAR'.
           05 FILLER                   PIC X(5)  VALUE SPACES.
           05                          PIC X(14)
                               VALUE 'INFLATION RATE'.
           05 FILLER                   PIC X(5)  VALUE SPACES.
           05                          PIC X(24)
                               VALUE 'PRICE WITH INFLATION'.
           05 FILLER                   PIC X(42) VALUE SPACES.

       01  PRICE-LIST-DETAIL.
           05 FILLER                   PIC X(37) VALUE SPACES.
           05 YEARCOUNT                PIC Z9.
           05 FILLER                   PIC X(11) VALUE SPACES.
           05 RATE                     PIC 99.
           05                          PIC X VALUE '%'.
           05 FILLER                   PIC X(19) VALUE SPACES.
           05 COST-W-INFL              PIC $$$$$.99.
           05 FILLER                   PIC X(50) VALUE SPACES.
      **
       PROCEDURE DIVISION.

      ***************************************************************
      **
      **   THIS IS THE MAIN MODULE WHICH EXECUTES 110-INITIALIZE
      **   PARAGRAPH AND THE 200-COMPUTE PARAGRAPH
      **
      ***************************************************************

       100-MAIN.
      **
           PERFORM 110-INITIALIZE THRU 110-EXIT.
           PERFORM 200-COMPUTE THRU 200-EXIT
                           UNTIL WS-EOF-YES.
           STOP RUN.
      **
      ***************************************************************
      **
      **   110-INITIALIZE OPENS FILES AND CALLS
      **   PARAGRAPHS 800-READ-INFLAT-FILE, 300-DATE-MOVE
      **   900-WRITE-HEAD
      **
      ***************************************************************

       110-INITIALIZE.
      **
           OPEN INPUT  INFLAT-FILE.
           OPEN OUTPUT INFLAT-LIST.
           PERFORM 800-READ-INFLAT-FILE THRU 800-EXIT.
           PERFORM 300-DATE-MOVE THRU 300-EXIT.
           PERFORM 900-WRITE-HEAD THRU 900-EXIT.
      **
       110-EXIT.
           EXIT.

      ***************************************************************
      **
      **   THIS PARAGRAFH COMPUTES THE INFLATION BY MULTIPLYING THE
      **   INFLAT-ITEM-COST BY 1.08 UNTIL THE YEARCOUNT = 5
      **   AND BY 1.06 WHEN THE YEARCOUNT IS 5-10.
      **   IF END OF PAGE IS REACHED, THE PARAGRAPH READS A NEW RECORD
      **   AND IF EOF NOT OCCURS 900-WRITE-HEAD IS CALLED AND THE
      **   DETAIL IS PRINTED.
      **   1 IS ADDED TO LINECOUNT
      **   1 IS ADDED TO YEARCOUNT
      **   THE ITEM-COST IS ALSO MOVED FROM THE INPUT FILE TO THE
      **   VARIABLE WV-COST-W-INFL
      **
      ***************************************************************
       200-COMPUTE.
      **
           IF WC-EOP
               PERFORM 800-READ-INFLAT-FILE THRU 800-EXIT
               IF NOT WS-EOF-YES
                   PERFORM 900-WRITE-HEAD
               END-IF
           END-IF.
           IF WC-YEARCOUNT < 6
               MOVE  08 TO PERCENT
               COMPUTE WV-COST-W-INFL ROUNDED =
                   1.08**WC-YEARCOUNT * INFLAT-ITEM-COST
           ELSE
               IF WC-YEARCOUNT < 11
                   MOVE 06 TO PERCENT
                   COMPUTE WV-COST-W-INFL ROUNDED =
                       (1.06 * WV-COST-W-INFL)
               ELSE
                   MOVE 1 TO WC-YEARCOUNT
                   MOVE 08 TO PERCENT
                   MOVE INFLAT-ITEM-COST TO WV-COST-W-INFL
           END-IF.
           IF NOT WS-EOF-YES
                PERFORM 910-WRITE-DETAIL THRU 910-EXIT
                ADD 1 TO WC-LINECOUNT
                ADD 1 TO WC-YEARCOUNT
           END-IF.
      **
       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 PARAGRAPH READS THE INPUT FILE.
      **
      ***************************************************************
       800-READ-INFLAT-FILE.
      **
           READ INFLAT-FILE
               AT END MOVE 'YES' TO WS-EOF.
      **
       800-EXIT.
           EXIT.
      **
      ***************************************************************
      **
      **   THIS PARAGRAPH ADDS 1 TO PAGENUMBER AND WRITES OUT THE
      **   HEADINGS, AND INITIALIZES THE LINECOUNT TO 0 AGAIN.
      **   IT ALSO MOVES THE INFLAT-ITEM-COST, INFLAT-ITEMNO AND
      **   INFLAT-DESCR TO THE HEADERS.
      **
      ***************************************************************
       900-WRITE-HEAD.
      **
           MOVE WC-PAGECOUNT TO HEADING-PAGE.
           MOVE INFLAT-ITEM-COST TO ITEM-COST.
           MOVE INFLAT-ITEMNO TO ITEMNO.
           MOVE INFLAT-DESCR TO DESCR.
           ADD 1 TO WC-PAGECOUNT.
           MOVE SPACES TO INFLAT-LIST-REC.
           WRITE INFLAT-LIST-REC
               AFTER ADVANCING PAGE.
           WRITE INFLAT-LIST-REC FROM INFLAT-LIST-HEADING-1
               AFTER ADVANCING 5 LINES.
           WRITE INFLAT-LIST-REC FROM INFLAT-LIST-HEADING-2
               AFTER ADVANCING 2 LINES.
           WRITE INFLAT-LIST-REC FROM INFLAT-LIST-HEADING-3
               AFTER ADVANCING 1 LINE.
           WRITE INFLAT-LIST-REC FROM INFLAT-LIST-HEADING-4
               AFTER ADVANCING 1 LINE.
           WRITE INFLAT-LIST-REC FROM INFLAT-LIST-HEADING-5
               AFTER ADVANCING 2 LINES.
           INITIALIZE WC-LINECOUNT.
      **
       900-EXIT.
           EXIT.
      **
      ***************************************************************
      **
      **   THIS PARAGRAPH CALLS 940-MOVE-DETAIL AND THEN
      **   WRITES IT OUT SINGLESPACED.
      **
      ***************************************************************

       910-WRITE-DETAIL.
      **
           PERFORM 940-MOVE-DETAIL THRU 940-EXIT.
           WRITE INFLAT-LIST-REC FROM PRICE-LIST-DETAIL
               AFTER ADVANCING 1 LINES.
      **
       910-EXIT.
           EXIT.
      **
      ***************************************************************
      **
      **   THIS PARAGRAPH MOVES THE DETAIL FROM THE FILE AND
      **   CALCULATIONS TO THE DETAIL LINE.
      **   IF THE YEARCOUNT IS 1 IT COMPUTES THE WV-COST-W-INFL
      **   AND MOVES IT TO THE DETAIL LINE.
      **
      ***************************************************************
       940-MOVE-DETAIL.
      **
           MOVE WC-YEARCOUNT TO YEARCOUNT.
           MOVE PERCENT TO RATE.
           IF WC-YEARCOUNT = 1
               COMPUTE WV-COST-W-INFL ROUNDED =
                   (WV-COST-W-INFL * 1.08)
               MOVE WV-COST-W-INFL TO COST-W-INFL
           ELSE
               MOVE WV-COST-W-INFL TO COST-W-INFL
           END-IF.
      **
       940-EXIT.
           EXIT.