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.