Here is the prompt for my class assignment:
Create an interactive program for ice cream sales you must sell at least four flavors of ice cream and you must us an evaluate statement. The ice cream needs to be available in a dish or a cone users choice. A cone cost $2 a bowl cost $1.50 Each item needs to be taxed at 5%. The customer must be able to enter multiple items per sale. At the end print a receipt. The receipt must have a header with a date the name of your ice-cream shop and your name. It must have detail showing flavor choice of cone or bowl cost and tax and total. At the end it must have totals for all three columns. The program must be structured.
Here is my code thus far:
IDENTIFICATION DIVISION.
PROGRAM-ID. ICECREAMSALES.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT RECEIPT-FILE ASSIGN TO "receipt.txt"
ORGANIZATION IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD RECEIPT-FILE.
01 RECEIPT-REC PIC X(132).
WORKING-STORAGE SECTION.
77 FLAVOR-CODE PIC 9.
77 ITEM-TYPE PIC X.
77 QTY PIC 99.
77 FLAVOR-NAME PIC X(15).
77 ITEM-NAME PIC X(5).
77 ITEM-PRICE PIC 9V99.
77 SUBTOTAL PIC 9(5)V99 VALUE 0.
77 TAX PIC 9(5)V99 VALUE 0.
77 TOTAL PIC 9(5)V99 VALUE 0.
77 SHOP-NAME PIC X(25) VALUE "Dan's Icecream".
77 OWNER-NAME PIC X(25) VALUE "Daniel Goins".
77 SALE-DATE PIC X(20).
77 MORE-ITEMS PIC X VALUE 'Y'.
77 VALID-INPUT PIC X VALUE 'N'.
77 ITEM-LINE-TOTAL PIC 9(5)V99 VALUE 0.
77 ITEM-LINE-TAX PIC 9(5)V99 VALUE 0.
77 IDX PIC 99 VALUE 1.
77 ITEM-COUNT PIC 99 VALUE 0.
77 EDITED-SUBTOTAL PIC ZZZZ9.99.
77 EDITED-TAX PIC ZZZZ9.99.
77 EDITED-TOTAL PIC ZZZZ9.99.
01 ITEM-LIST.
05 ITEM-FLAVOR-NAME OCCURS 20 TIMES PIC X(15).
05 ITEM-FLAVOR-TYPE OCCURS 20 TIMES PIC X(5).
05 ITEM-FLAVOR-PRICE OCCURS 20 TIMES PIC 9V99.
05 ITEM-FLAVOR-TAX OCCURS 20 TIMES PIC 9V99.
05 ITEM-FLAVOR-TOTAL OCCURS 20 TIMES PIC 9V99.
PROCEDURE DIVISION.
MAIN-PROGRAM.
ACCEPT SALE-DATE FROM DATE.
DISPLAY "WELCOME TO " SHOP-NAME
DISPLAY "SALES RECEIPT - " SALE-DATE
DISPLAY "SOLD BY: " OWNER-NAME
DISPLAY "----------------------------------------"
PERFORM UNTIL MORE-ITEMS = 'N' OR MORE-ITEMS = 'n'
DISPLAY "Please choose flavor: "
DISPLAY "1. Vanilla"
DISPLAY "2. Chocolate"
DISPLAY "3. Strawberry"
DISPLAY "4. Mint"
ACCEPT FLAVOR-CODE
EVALUATE FLAVOR-CODE
WHEN 1 MOVE "Vanilla" TO FLAVOR-NAME
WHEN 2 MOVE "Chocolate" TO FLAVOR-NAME
WHEN 3 MOVE "Strawberry" TO FLAVOR-NAME
WHEN 4 MOVE "Mint" TO FLAVOR-NAME
WHEN OTHER
DISPLAY "Invalid flavor! Try again."
NEXT SENTENCE
END-EVALUATE
MOVE 'N' TO VALID-INPUT
PERFORM UNTIL VALID-INPUT = 'Y'
DISPLAY "Dish or Cone? (D/C):"
ACCEPT ITEM-TYPE
IF ITEM-TYPE = 'D' OR ITEM-TYPE = 'd'
MOVE "Dish" TO ITEM-NAME
MOVE 1.50 TO ITEM-PRICE
MOVE 'Y' TO VALID-INPUT
ELSE IF ITEM-TYPE = 'C' OR ITEM-TYPE = 'c'
MOVE "Cone" TO ITEM-NAME
MOVE 2.00 TO ITEM-PRICE
MOVE 'Y' TO VALID-INPUT
ELSE
DISPLAY "Invalid selection! Please enter D/d for Dish or
C/c for Cone."
END-IF
END-PERFORM
DISPLAY "How many do you want?"
ACCEPT QTY
COMPUTE ITEM-LINE-TOTAL = ITEM-PRICE * QTY
COMPUTE ITEM-LINE-TAX = ITEM-LINE-TOTAL * 0.05
ADD 1 TO ITEM-COUNT
MOVE FLAVOR-NAME TO ITEM-FLAVOR-NAME(ITEM-COUNT)
MOVE ITEM-NAME TO ITEM-FLAVOR-TYPE(ITEM-COUNT)
MOVE ITEM-LINE-TOTAL TO ITEM-FLAVOR-PRICE(ITEM-COUNT)
MOVE ITEM-LINE-TAX TO ITEM-FLAVOR-TAX(ITEM-COUNT)
COMPUTE ITEM-FLAVOR-TOTAL(ITEM-COUNT) = ITEM-LINE-TOTAL +
ITEM-LINE-TAX
ADD ITEM-LINE-TOTAL TO SUBTOTAL
ADD ITEM-LINE-TAX TO TAX
MOVE 'N' TO VALID-INPUT
PERFORM UNTIL VALID-INPUT = 'Y'
DISPLAY "Add another item? (Y/N):"
ACCEPT MORE-ITEMS
IF MORE-ITEMS = 'Y' OR MORE-ITEMS = 'y' OR MORE-ITEMS =
'N' OR MORE-ITEMS = 'n'
MOVE 'Y' TO VALID-INPUT
ELSE
DISPLAY "Invalid selection! Please enter Y/y for Yes or
N/n for No."
END-IF
END-PERFORM
END-PERFORM
COMPUTE TOTAL = SUBTOTAL + TAX
MOVE SUBTOTAL TO EDITED-SUBTOTAL
MOVE TAX TO EDITED-TAX
MOVE TOTAL TO EDITED-TOTAL
DISPLAY "----------------------------------------"
DISPLAY "Receipt for " SHOP-NAME
DISPLAY "Date: " SALE-DATE
DISPLAY "Sold By: " OWNER-NAME
DISPLAY "----------------------------------------"
DISPLAY "Flavor Type Price Tax Total"
PERFORM VARYING IDX FROM 1 BY 1 UNTIL IDX > ITEM-COUNT
MOVE ITEM-FLAVOR-NAME(IDX) TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE ITEM-FLAVOR-TYPE(IDX) TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE ITEM-FLAVOR-PRICE(IDX) TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE ITEM-FLAVOR-TAX(IDX) TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE ITEM-FLAVOR-TOTAL(IDX) TO RECEIPT-REC
WRITE RECEIPT-REC
END-PERFORM
DISPLAY "----------------------------------------"
DISPLAY "Totals: "
DISPLAY "Price: " EDITED-SUBTOTAL
DISPLAY " Tax: " EDITED-TAX
DISPLAY " Total: " EDITED-TOTAL
DISPLAY " Thank you for buying at "
DISPLAY SHOP-NAME.
DISPLAY "!"
OPEN OUTPUT RECEIPT-FILE
MOVE "Receipt for " SHOP-NAME TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE "Date: " SALE-DATE TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE "Sold By: " OWNER-NAME TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE "--------------------------------------" TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE "Flavor Type Price Tax Total" TO RECEIPT-REC
WRITE RECEIPT-REC
PERFORM VARYING IDX FROM 1 BY 1 UNTIL IDX > ITEM-COUNT
MOVE ITEM-FLAVOR-NAME(IDX) TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE ITEM-FLAVOR-TYPE(IDX) TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE ITEM-FLAVOR-PRICE(IDX) TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE ITEM-FLAVOR-TAX(IDX) TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE ITEM-FLAVOR-TOTAL(IDX) TO RECEIPT-REC
WRITE RECEIPT-REC
END-PERFORM
MOVE "--------------------------------------" TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE "Totals:" TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE "Price:" TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE EDITED-SUBTOTAL TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE "Tax:" TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE EDITED-TAX TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE "Total:" TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE EDITED-TOTAL TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE "Thank you for buying at" TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE SHOP-NAME TO RECEIPT-REC
WRITE RECEIPT-REC
CLOSE RECEIPT-FILE
STOP RUN.
I am having compile errors with this section:
PERFORM VARYING IDX FROM 1 BY 1 UNTIL IDX > ITEM-COUNT
MOVE ITEM-FLAVOR-NAME(IDX) TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE ITEM-FLAVOR-TYPE(IDX) TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE ITEM-FLAVOR-PRICE(IDX) TO RECEIPT-REC
WRITE RECEIPT-REC
MOVE ITEM-FLAVOR-TAX(IDX) TO RECEIPT-REC
saying it is an invalid MOVE statement and lastly
DISPLAY "!"
OPEN OUTPUT RECEIPT-FILE
here it says there is a "syntax error, unexpected Identifier, expecting TO"