IDENTIFICATION DIVISION.
PROGRAM-ID. SALES.
AUTHOR. MARTIN O SULLIVAN
INSTALLATION. MOYLISH.
DATE-WRITTEN. APRIL 1998.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMAS400.
OBJECT-COMPUTER. IBMAS400.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CUSTOMER-FILE
ASSIGN TO DISK-MEASUR1
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WA-FILE-STAT.
SELECT REPORT-FILE
ASSIGN TO PRINTER-QSYSPRT
ORGANIZATION IS SEQUENTIAL
FILE STATUS IS WB-REP-STAT.
DATA DIVISION.
FILE SECTION.
FD CUSTOMER-FILE
RECORD CONTAINS 38 CHARACTERS
LABEL RECORDS ARE STANDARD
DATA RECORD IS FA-HOUSE-RECORD.
01 FA-HOUSE-RECORD.
03 NAME PIC A(20).
03 R1-LENGTH PIC 999.
03 R1-BREADTH PIC 999.
03 R2-LENGTH PIC 999.
03 R2-BREADTH PIC 999.
03 R3-LENGTH PIC 999.
03 R3-BREADTH PIC 999.
FD REPORT-FILE
LABEL RECORD IS OMITTED
DATA RECORD IS FB-REP-REC.
01 FB-REP-REC PIC X(132).
WORKING-STORAGE SECTION.
01 WA-FILE-STAT PIC X(2).
01 WB-REP-STAT PIC X(2).
01 END-OF-FILE-FLAG PIC X.
88 END-OF-FILE VALUE "Y".
88 NOT-END-OF-FILE VALUE "N".
01 R1-AREA PIC 9(5).
01 R1-COST PIC 9(7)V99.
01 R2-AREA PIC 9(5).
01 R2-COST PIC 9(7)V99.
01 R3-AREA PIC 9(5).
01 R3-COST PIC 9(7)V99.
01 HOUSE-COST PIC 9(9)V99.
01 TOTAL-COST PIC 9(12)V99.
01 PAGE-NO PIC 99.
01 LINE-COUNT PIC 99.
01 THE-DATE.
03 THE-YEAR PIC 9(2).
03 THE-MONTH PIC 9(2).
03 THE-DAY PIC 9(2).
01 REPORT-HEADING.
03 FILLER PIC X(5) VALUE SPACES.
03 FILLER PIC X(9) VALUE "PAGE # :".
03 PAGE-NO-OUT PIC 9(3).
03 FILLER PIC X(14) VALUE SPACES.
03 FILLER PIC X(35) VALUE
"FLATWOOD FLOOR COVERING LIMITED".
03 FILLER PIC X(15) VALUE SPACES.
03 FILLER PIC X(7) VALUE "DATE : ".
03 THE-DAY-OUT PIC 9(2).
03 FILLER PIC X VALUE "/".
03 THE-MONTH-OUT PIC 9(2).
03 FILLER PIC X VALUE "/".
03 THE-YEAR-OUT PIC 9(2).
01 REPORT-SUB-HEADING.
03 FILLER PIC X(5) VALUE SPACES.
03 FILLER PIC X(13) VALUE "CUSTOMER NAME".
03 FILLER PIC X(12) VALUE SPACES.
03 FILLER PIC X(8) VALUE "ROOM ONE".
03 FILLER PIC X(14) VALUE SPACES.
03 FILLER PIC X(8) VALUE "ROOM TWO".
03 FILLER PIC X(14) VALUE SPACES.
03 FILLER PIC X(10) VALUE "ROOM THREE".
01 REPORT-SUB-HEADING-2.
03 FILLER PIC X(30) VALUE SPACES.
03 FILLER PIC X(6) VALUE "SQ.YDS".
03 FILLER PIC X(4) VALUE SPACES.
03 FILLER PIC X(4) VALUE "COST".
03 FILLER PIC X(8) VALUE SPACES.
03 FILLER PIC X(6) VALUE "SQ.YDS".
03 FILLER PIC X(4) VALUE SPACES.
03 FILLER PIC X(4) VALUE "COST".
03 FILLER PIC X(8) VALUE SPACES.
03 FILLER PIC X(6) VALUE "SQ.YDS".
03 FILLER PIC X(4) VALUE SPACES.
03 FILLER PIC X(4) VALUE "COST".
03 FILLER PIC X(13) VALUE SPACES.
03 FILLER PIC X(20) VALUE
"TOTAL COST PER HOUSE".
01 DETAIL-LINE.
03 FILLER PIC X(5) VALUE SPACES.
03 NAME-OUT PIC X(20).
03 FILLER PIC X(3) VALUE SPACES.
03 R1-AREA-OUT PIC ZZZZ9.
03 FILLER PIC X(2) VALUE SPACES.
03 R1-COST-OUT PIC œ,œœœ,œœ9.99.
03 FILLER PIC X(3) VALUE SPACES.
03 R2-AREA-OUT PIC ZZZZ9.
03 FILLER PIC X(2) VALUE SPACES.
03 R2-COST-OUT PIC œ,œœœ,œœ9.99.
03 FILLER PIC X(3) VALUE SPACES.
03 R3-AREA-OUT PIC ZZZZ9.
03 FILLER PIC X(2) VALUE SPACES.
03 R3-COST-OUT PIC œ,œœœ,œœ9.99.
03 FILLER PIC X(5) VALUE SPACES.
03 HOUSE-COST-OUT PIC œœœ,œœœ,œœ9.99.
01 FOOTING-LINE.
03 FILLER PIC X(30) VALUE SPACES.
03 FILLER PIC X(25) VALUE "*** END OF REPORT ***".
01 FOOTING-LINE-2.
03 FILLER PIC X(61) VALUE SPACES.
03 FILLER PIC X(20) VALUE "OVERALL TOTAL COST".
03 FILLER PIC X(11) VALUE SPACES.
03 TOTAL-COST-OUT PIC œœœ,œœœ,œœœ,œœ9.99.
01 BLANK-LINE.
03 FILLER PIC X(1) VALUE SPACES.
PROCEDURE DIVISION.
TOP-LEVEL-PARA.
PERFORM GET-DATE.
PERFORM START-UP.
PERFORM GET-RECORD.
PERFORM EACH-HOUSE UNTIL END-OF-FILE.
PERFORM CLOSE-DOWN.
STOP RUN.
GET-DATE.
ACCEPT THE-DATE FROM DATE.
MOVE THE-YEAR TO THE-YEAR-OUT.
MOVE THE-MONTH TO THE-MONTH-OUT.
MOVE THE-DAY TO THE-DAY-OUT.
START-UP.
MOVE ZEROS TO LINE-COUNT.
SET NOT-END-OF-FILE TO TRUE.
MOVE ZEROS TO TOTAL-COST.
MOVE 1 TO PAGE-NO.
OPEN INPUT CUSTOMER-FILE.
OPEN OUTPUT REPORT-FILE.
PERFORM WRITE-HEADINGS-PARA.
WRITE-HEADINGS-PARA.
MOVE PAGE-NO TO PAGE-NO-OUT.
WRITE FB-REP-REC FROM REPORT-HEADING AFTER
ADVANCING 1 LINES.
WRITE FB-REP-REC FROM REPORT-SUB-HEADING AFTER
ADVANCING 3 LINES.
WRITE FB-REP-REC FROM REPORT-SUB-HEADING-2 AFTER
ADVANCING 2 LINES.
ADD 7 TO LINE-COUNT.
GET-RECORD.
READ CUSTOMER-FILE AT END SET END-OF-FILE TO TRUE.
EACH-HOUSE.
PERFORM POSS-NEW-PAGE.
MULTIPLY R1-LENGTH BY R1-BREADTH GIVING R1-AREA.
MULTIPLY R1-AREA BY 5 GIVING R1-COST.
MULTIPLY R2-LENGTH BY R2-BREADTH GIVING R2-AREA.
MULTIPLY R2-AREA BY 5 GIVING R2-COST.
MULTIPLY R3-LENGTH BY R3-BREADTH GIVING R3-AREA.
MULTIPLY R3-AREA BY 5 GIVING R3-COST.
ADD R1-COST , R2-COST TO R3-COST GIVING HOUSE-COST.
ADD HOUSE-COST TO TOTAL-COST.
MOVE NAME TO NAME-OUT.
MOVE R1-AREA TO R1-AREA-OUT.
MOVE R1-COST TO R1-COST-OUT.
MOVE R2-AREA TO R2-AREA-OUT.
MOVE R2-COST TO R2-COST-OUT.
MOVE R3-AREA TO R3-AREA-OUT.
MOVE R3-COST TO R3-COST-OUT.
MOVE HOUSE-COST TO HOUSE-COST-OUT.
WRITE FB-REP-REC FROM DETAIL-LINE AFTER ADVANCING 2 LINES.
ADD 2 TO LINE-COUNT.
PERFORM GET-RECORD.
CLOSE-DOWN.
MOVE TOTAL-COST TO TOTAL-COST-OUT.
WRITE FB-REP-REC FROM FOOTING-LINE-2 AFTER ADVANCING 2 LINE.
WRITE FB-REP-REC FROM FOOTING-LINE AFTER ADVANCING 2 LINE.
CLOSE REPORT-FILE.
CLOSE CUSTOMER-FILE.
DISPLAY "END OF PROGRAM - GOOD BY".
POSS-NEW-PAGE.
IF LINE-COUNT >= 64
MOVE ZEROS TO LINE-COUNT
ADD 1 TO PAGE-NO
WRITE FB-REP-REC FROM BLANK-LINE AFTER ADVANCING PAGE
PERFORM WRITE-HEADINGS-PARA.
Link back to cobol page