Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
← Back to Real-World Scenarios
Real-World Scenarios | Advanced | COBOL

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.