Inventory Management
Problem Description
Track product inventory: add stock, sell items, show low stock alerts (below 10 units), generate inventory report.
Expected Output
Interactive inventory system with alerts
Hints
Use table for products. Check quantity before selling.
Solution
IDENTIFICATION DIVISION.
PROGRAM-ID. INVENTORY.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-PRODUCTS.
05 WS-PROD OCCURS 10 TIMES.
10 WS-PROD-ID PIC 9(3).
10 WS-PROD-NAME PIC X(20).
10 WS-PROD-QTY PIC 9(5).
10 WS-PROD-PRICE PIC 9(5)V99.
01 WS-PROD-COUNT PIC 9(2) VALUE 0.
01 WS-CHOICE PIC 9.
01 WS-IDX PIC 9(2).
01 WS-SEARCH-ID PIC 9(3).
01 WS-QTY PIC 9(5).
01 WS-FOUND PIC 9 VALUE 0.
PROCEDURE DIVISION.
PERFORM UNTIL WS-CHOICE = 5
DISPLAY "=== INVENTORY MANAGEMENT ==="
DISPLAY "1. ADD PRODUCT 2. ADD STOCK"
DISPLAY "3. SELL ITEM 4. VIEW ALL"
DISPLAY "5. EXIT"
ACCEPT WS-CHOICE
EVALUATE WS-CHOICE
WHEN 1 PERFORM ADD-PRODUCT
WHEN 2 PERFORM ADD-STOCK
WHEN 3 PERFORM SELL-ITEM
WHEN 4 PERFORM VIEW-INVENTORY
END-EVALUATE
END-PERFORM.
STOP RUN.
ADD-PRODUCT.
IF WS-PROD-COUNT >= 10
DISPLAY "INVENTORY FULL!"
ELSE
ADD 1 TO WS-PROD-COUNT
DISPLAY "PRODUCT ID: "
ACCEPT WS-PROD-ID(WS-PROD-COUNT)
DISPLAY "NAME: "
ACCEPT WS-PROD-NAME(WS-PROD-COUNT)
DISPLAY "QUANTITY: "
ACCEPT WS-PROD-QTY(WS-PROD-COUNT)
DISPLAY "PRICE: "
ACCEPT WS-PROD-PRICE(WS-PROD-COUNT)
DISPLAY "PRODUCT ADDED!"
END-IF.
ADD-STOCK.
DISPLAY "PRODUCT ID: "
ACCEPT WS-SEARCH-ID
MOVE 0 TO WS-FOUND
PERFORM VARYING WS-IDX FROM 1 BY 1 UNTIL WS-IDX > WS-PROD-COUNT
IF WS-PROD-ID(WS-IDX) = WS-SEARCH-ID
MOVE 1 TO WS-FOUND
DISPLAY "QUANTITY TO ADD: "
ACCEPT WS-QTY
ADD WS-QTY TO WS-PROD-QTY(WS-IDX)
END-IF
END-PERFORM.
SELL-ITEM.
DISPLAY "PRODUCT ID: "
ACCEPT WS-SEARCH-ID
MOVE 0 TO WS-FOUND
PERFORM VARYING WS-IDX FROM 1 BY 1 UNTIL WS-IDX > WS-PROD-COUNT
IF WS-PROD-ID(WS-IDX) = WS-SEARCH-ID
MOVE 1 TO WS-FOUND
DISPLAY "QUANTITY TO SELL: "
ACCEPT WS-QTY
IF WS-QTY > WS-PROD-QTY(WS-IDX)
DISPLAY "INSUFFICIENT STOCK!"
ELSE
SUBTRACT WS-QTY FROM WS-PROD-QTY(WS-IDX)
DISPLAY "SOLD!"
END-IF
END-IF
END-PERFORM.
VIEW-INVENTORY.
DISPLAY "ID NAME QTY PRICE".
PERFORM VARYING WS-IDX FROM 1 BY 1 UNTIL WS-IDX > WS-PROD-COUNT
DISPLAY WS-PROD-ID(WS-IDX) " " WS-PROD-NAME(WS-IDX) " " WS-PROD-QTY(WS-IDX) " " WS-PROD-PRICE(WS-IDX)
IF WS-PROD-QTY(WS-IDX) < 10
DISPLAY " *** LOW STOCK ALERT ***"
END-IF
END-PERFORM.
Explanation:
Complete inventory system using tables, search, validation, and alerts.