IDENTIFICATION DIVISION.
       PROGRAM-ID. SLSPRICE.
       AUTHOR. JONAS WIK.
       DATE-WRITTEN. 03/03/2000.
       DATE-COMPILED.
      ***************************************************************
      **
      **   DESCRIPTION: THIS PROGRAM READS RECORDS OF ITEMS FOR HOME
      **       FURNISHING AND ADDS THE PROFIT MARGIN TO THE ITEM COST
      **       TO FIND OUT THE SELLING PRICE. THE PROGRAM PRINTS A
      **       REPORT OF THE ITEMS WITH THE ITEM NUMBER, ITEM DESCR.
      **       THE COST, THE PROFIT MARGIN IN PERCENT AND THE SELLING
      **       PRICE. AT THE BOTTOM OF THE REPORT THE NUMBER OF RECORDS
      **       PROCESSED ARE SHOWN.
      **
      **   INPUT:
      **       PRICE-FILE INPUT FILE
      **       PRICE-FILE-ITEMNO           4  CHARACTERS
      **       PRICE-FILE-DESCR            20 CHARACTERS
      **       PRICE-FILE-COST             4  DIGITS 99V99
      **       PRICE-FILE-PROF-MARGIN      3  DIGITS V999
      **
      **   OUTPUT:
      **       PRICE-LIST OUTPUT FILE
      **       FIELD                       PRINTS IN COLS.
      **       DET-ITEMNO                      3-5
      **       DET-DESCR                       12-31
      **       DET-COST                        36-41
      **       DET-PROF-MARGIN                 51-54
      **       DET-SELL-PRICE                  66-72
      **
      **   PRINT FOOTER AT END OF REPORT
      **       FOOT-COUNT                      17-20
      **
      **   PROGRAM DUE: MARCH 3 2000
      **
      ***************************************************************
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
      **
       FILE-CONTROL.
           SELECT PRICE-FILE ASSIGN TO 'J:/COBOL/INVMAS.DAT'
           ORGANIZATION IS LINE SEQUENTIAL.
           SELECT PRICE-LIST ASSIGN TO PRINTER.
      **
       DATA DIVISION.
      **
       FILE SECTION.
      **
       FD  PRICE-FILE
           LABEL RECORD ARE STANDARD
           RECORDING IS F
           RECORD CONTAINS 30 CHARACTERS.
       01  PRICE-FILE-REC.
           05 PRICE-FILE-ITEMNO        PIC XXX.
           05 PRICE-FILE-DESCR         PIC X(20).
           05 PRICE-FILE-COST          PIC 99V99.
           05 PRICE-FILE-PROF-MARGIN   PIC V999.
      **
       FD  PRICE-LIST
           LABEL RECORDS ARE OMITTED
           RECORD CONTAINS 75 CHARACTERS.
       01  PRICE-LIST-REC                  PIC X(75).
      **
       WORKING-STORAGE SECTION.
      **
       01  WV-VARIABLES.
           05 WV-SELL-PRICE            PIC 999V99 VALUE 0.
           05 WV-TEMP                  PIC 9V999  VALUE 0.
           05 WV-PROF                  PIC 99V9   VALUE 0.
      **
       01  WS-COUNTS.
      **
           05 WC-REC-COUNT              PIC 9999
                               VALUE ZERO.
           05 WC-PAGECOUNT             PIC 9999
                               VALUE 1.
           05 WC-LINECOUNT             PIC 99
                               VALUE ZERO.
              88 WC-EOP        VALUE 60.
      **
       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  PRICE-LIST-HEADING-1.
           05                          PIC X(6)
                               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.
           05 FILLER                   PIC X(12)
                               VALUE SPACES.
           05                          PIC X(16)
                               VALUE 'HOME FURNISHINGS'.
           05 FILLER                   PIC X(22)
                               VALUE SPACES.
           05                          PIC X(5)
                               VALUE 'PAGE '.
           05 HEADING-PAGE             PIC ZZ99.
      **
       01  PRICE-LIST-HEADING-2.
           05                          PIC X(17)
                               VALUE 'AUTHOR: JONAS WIK'.
           05 FILLER                   PIC X(11)
                               VALUE SPACES.
           05                          PIC X(16)
                               VALUE 'INVENTORY REPORT'.
      **
       01  PRICE-LIST-HEADING-3.
           05                          PIC X(8)
                               VALUE 'ITEM NO.'.
           05 FILLER                   PIC X(5)
                               VALUE SPACES.
           05                          PIC X(16)
                               VALUE 'ITEM DESCRIPTION'.
           05 FILLER                   PIC X(5)
                               VALUE SPACES.
           05                          PIC X(9)
                               VALUE 'ITEM COST'.
           05 FILLER                   PIC XXX
                               VALUE SPACES.
           05                          PIC X(13)
                               VALUE 'PROFIT MARGIN'.
           05 FILLER                   PIC XXX
                               VALUE SPACES.
           05                          PIC X(13)
                               VALUE 'SELLING PRICE'.
      **
       01  PRICE-LIST-DETAIL.
           05 FILLER                   PIC XX VALUE SPACES.
           05 DET-ITEMNO               PIC XXX.
           05 FILLER                   PIC X(6) VALUE SPACES.
           05 DET-DESCR                PIC X(20).
           05 FILLER                   PIC XXXX VALUE SPACES.
           05                          PIC X VALUE '$'.
           05 DET-COST                 PIC ZZ.99.
           05 FILLER                   PIC X(9) VALUE SPACES.
           05 DET-PROF-MARGIN          PIC 99.9.
           05                          PIC X VALUE '%'.
           05 FILLER                   PIC X(10) VALUE SPACES.
           05                          PIC X VALUE '$'.
           05 DET-SELL-PRICE           PIC ZZZ.99.
      **
       01  PRICE-LIST-FOOT.
           05                          PIC X(16)
                               VALUE 'NO. OF RECORDS: '.
           05 FOOT-COUNT               PIC ZZ99.
           05 FILLER                   PIC X(55) VALUE SPACES.
      **
       PROCEDURE DIVISION.

      ***************************************************************
      **
      **   THIS IS THE MAIN MODULE WHICH EXECUTES 110-INITIALIZE
      **   PARAGRAPH THE 200-COMPUTE PARAGRAPH AND THE 950-WRITE-FOOT
      **   PARAGRAF OF THE PROGRAM.
      **
      ***************************************************************

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

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

      ***************************************************************
      **
      **   THIS PARAGRAFH COMPUTES THE SELLING PRICE BY USING THE
      **   FORMULA SELLING PRICE=(1/(1-PROFIT MARGIN))*COST.
      **   IT ALSO WRITES HEADERS IF THE LINE COUNT IS 60 AND CALLS
      **   910-WRITE-DETAIL AND ADDS 2 TO LINE COUNT IF IT IS NOT. IT
      **   ALSO ADDS 1 TO WC-REC-COUNT AND READS INPUTFILE AGAIN.
      **
      ***************************************************************
       200-COMPUTE.
      **
           COMPUTE WV-TEMP = 1 - PRICE-FILE-PROF-MARGIN.
           COMPUTE WV-TEMP = 1 / WV-TEMP.
           COMPUTE WV-SELL-PRICE ROUNDED = WV-TEMP * PRICE-FILE-COST.
           COMPUTE WV-PROF ROUNDED = PRICE-FILE-PROF-MARGIN * 100.
           IF WC-EOP
               PERFORM 900-WRITE-HEAD
           END-IF.
           PERFORM 910-WRITE-DETAIL THRU 910-EXIT.
           ADD 2 TO WC-LINECOUNT.
           ADD 1 TO WC-REC-COUNT.
           PERFORM 800-READ-PRICE-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 PARAGRAPH READS THE INPUT FILE.
      **
      ***************************************************************
       800-READ-PRICE-FILE.
      **
           READ PRICE-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.
      **
      ***************************************************************
       900-WRITE-HEAD.
      **
           MOVE WC-PAGECOUNT TO HEADING-PAGE.
           ADD 1 TO WC-PAGECOUNT.
           WRITE PRICE-LIST-REC FROM PRICE-LIST-HEADING-1
               AFTER ADVANCING PAGE.
           WRITE PRICE-LIST-REC FROM PRICE-LIST-HEADING-2
               AFTER ADVANCING 1 LINE.
           WRITE PRICE-LIST-REC FROM PRICE-LIST-HEADING-3
               AFTER ADVANCING 4 LINES.
           INITIALIZE WC-LINECOUNT.
      **
       900-EXIT.
           EXIT.
      **
      ***************************************************************
      **
      **   THIS PARAGRAPH CALLS 940-MOVE-DETAIL AND THEN
      **   WRITES IT OUT DOUBLESPACED.
      **
      ***************************************************************

       910-WRITE-DETAIL.
      **
           PERFORM 940-MOVE-DETAIL THRU 940-EXIT.
           WRITE PRICE-LIST-REC FROM PRICE-LIST-DETAIL
               AFTER ADVANCING 2 LINES.
      **
       910-EXIT.
           EXIT.
      **
      ***************************************************************
      **
      **   THIS PARAGRAPH MOVES THE DETAIL FROM THE FILE AND
      **   CALCULATIONS TO THE DETAIL LINE.
      **
      ***************************************************************
       940-MOVE-DETAIL.
      **
           MOVE PRICE-FILE-ITEMNO TO DET-ITEMNO.
           MOVE PRICE-FILE-DESCR TO DET-DESCR.
           MOVE PRICE-FILE-COST TO DET-COST.
           MOVE WV-PROF TO DET-PROF-MARGIN.
           MOVE WV-SELL-PRICE TO DET-SELL-PRICE.
      **
       940-EXIT.
           EXIT.
      **
      ***************************************************************
      **
      **   THIS PARAGRAPH PRINTS THE FOOTER OUT AFTER MOVING THE RECORD
      **   COUNT.IT CLOSES INPUT AND OUTPUT FILES.
      **
      ***************************************************************
       950-WRITE-FOOT
      **
           MOVE WC-REC-COUNT TO FOOT-COUNT.
           WRITE PRICE-LIST-REC FROM PRICE-LIST-FOOT
               AFTER ADVANCING 4 LINES.
           CLOSE PRICE-FILE
                 PRICE-LIST.
      **
       950-EXIT.
           EXIT.