In this case study, we will develop a COBOL program to manage an inventory system. This system will handle basic operations such as adding new items, updating existing items, deleting items, and displaying the inventory list. This case study will help you apply the concepts learned throughout the course in a practical scenario.

Objectives

  • Understand the requirements of an inventory management system.
  • Design the data structures needed for the system.
  • Implement file handling for storing and retrieving inventory data.
  • Develop COBOL programs to perform CRUD (Create, Read, Update, Delete) operations.
  • Test the system to ensure it meets the requirements.

Requirements

  1. Add New Item: The system should allow adding new items to the inventory.
  2. Update Item: The system should allow updating the details of existing items.
  3. Delete Item: The system should allow deleting items from the inventory.
  4. Display Inventory: The system should display the list of all items in the inventory.

Data Structure

We will use a sequential file to store the inventory data. Each record in the file will represent an item with the following fields:

  • Item ID (PIC X(5))
  • Item Name (PIC X(20))
  • Quantity (PIC 9(4))
  • Price (PIC 9(5)V99)

Example Record Layout

Field Data Type Description
Item ID X(5) Unique identifier
Item Name X(20) Name of the item
Quantity 9(4) Quantity in stock
Price 9(5)V99 Price of the item

Program Structure

We will create a main program that provides a menu to the user for performing different operations. Each operation will be implemented as a separate paragraph in the COBOL program.

Main Program

IDENTIFICATION DIVISION.
PROGRAM-ID. InventoryManagement.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT InventoryFile ASSIGN TO 'inventory.dat'
    ORGANIZATION IS SEQUENTIAL
    ACCESS MODE IS SEQUENTIAL
    FILE STATUS IS WS-FileStatus.

DATA DIVISION.
FILE SECTION.
FD InventoryFile.
01 InventoryRecord.
   05 ItemID     PIC X(5).
   05 ItemName   PIC X(20).
   05 Quantity   PIC 9(4).
   05 Price      PIC 9(5)V99.

WORKING-STORAGE SECTION.
01 WS-FileStatus      PIC XX.
01 WS-Choice          PIC 9.
01 WS-Continue        PIC X VALUE 'Y'.

PROCEDURE DIVISION.
Main-Menu.
    PERFORM Display-Menu
    ACCEPT WS-Choice
    EVALUATE WS-Choice
        WHEN 1
            PERFORM Add-New-Item
        WHEN 2
            PERFORM Update-Item
        WHEN 3
            PERFORM Delete-Item
        WHEN 4
            PERFORM Display-Inventory
        WHEN OTHER
            DISPLAY 'Invalid choice. Please try again.'
    END-EVALUATE
    DISPLAY 'Do you want to continue? (Y/N)'
    ACCEPT WS-Continue
    IF WS-Continue = 'Y' OR WS-Continue = 'y'
        GO TO Main-Menu
    ELSE
        STOP RUN.

Display-Menu.
    DISPLAY 'Inventory Management System'
    DISPLAY '1. Add New Item'
    DISPLAY '2. Update Item'
    DISPLAY '3. Delete Item'
    DISPLAY '4. Display Inventory'
    DISPLAY 'Enter your choice: '.

Add-New-Item.
    OPEN OUTPUT InventoryFile
    DISPLAY 'Enter Item ID: '
    ACCEPT ItemID
    DISPLAY 'Enter Item Name: '
    ACCEPT ItemName
    DISPLAY 'Enter Quantity: '
    ACCEPT Quantity
    DISPLAY 'Enter Price: '
    ACCEPT Price
    WRITE InventoryRecord
    CLOSE InventoryFile
    DISPLAY 'Item added successfully.'.

Update-Item.
    DISPLAY 'Update Item functionality not implemented yet.'.

Delete-Item.
    DISPLAY 'Delete Item functionality not implemented yet.'.

Display-Inventory.
    OPEN INPUT InventoryFile
    PERFORM UNTIL WS-FileStatus = '10'
        READ InventoryFile
            AT END
                MOVE '10' TO WS-FileStatus
            NOT AT END
                DISPLAY 'Item ID: ' ItemID
                DISPLAY 'Item Name: ' ItemName
                DISPLAY 'Quantity: ' Quantity
                DISPLAY 'Price: ' Price
    END-PERFORM
    CLOSE InventoryFile.

Explanation

  1. Main Program: The main program provides a menu to the user and performs the selected operation.
  2. Display-Menu: Displays the menu options to the user.
  3. Add-New-Item: Prompts the user to enter the details of a new item and writes the record to the inventory file.
  4. Update-Item: Placeholder for the update item functionality.
  5. Delete-Item: Placeholder for the delete item functionality.
  6. Display-Inventory: Reads and displays all records from the inventory file.

Exercises

  1. Implement Update-Item: Modify the program to allow updating the details of an existing item.
  2. Implement Delete-Item: Modify the program to allow deleting an item from the inventory.
  3. Enhance Display-Inventory: Format the output to display the inventory in a tabular format.

Exercise Solutions

Implement Update-Item

Update-Item.
    OPEN I-O InventoryFile
    DISPLAY 'Enter Item ID to update: '
    ACCEPT ItemID
    PERFORM UNTIL WS-FileStatus = '10'
        READ InventoryFile
            AT END
                MOVE '10' TO WS-FileStatus
            NOT AT END
                IF ItemID = InventoryRecord-ItemID
                    DISPLAY 'Enter new Item Name: '
                    ACCEPT ItemName
                    DISPLAY 'Enter new Quantity: '
                    ACCEPT Quantity
                    DISPLAY 'Enter new Price: '
                    ACCEPT Price
                    REWRITE InventoryRecord
                    DISPLAY 'Item updated successfully.'
                    MOVE '10' TO WS-FileStatus
                END-IF
    END-PERFORM
    CLOSE InventoryFile.

Implement Delete-Item

Delete-Item.
    OPEN I-O InventoryFile
    DISPLAY 'Enter Item ID to delete: '
    ACCEPT ItemID
    PERFORM UNTIL WS-FileStatus = '10'
        READ InventoryFile
            AT END
                MOVE '10' TO WS-FileStatus
            NOT AT END
                IF ItemID = InventoryRecord-ItemID
                    DELETE InventoryRecord
                    DISPLAY 'Item deleted successfully.'
                    MOVE '10' TO WS-FileStatus
                END-IF
    END-PERFORM
    CLOSE InventoryFile.

Enhance Display-Inventory

Display-Inventory.
    OPEN INPUT InventoryFile
    DISPLAY 'Item ID   Item Name           Quantity  Price'
    DISPLAY '----------------------------------------------'
    PERFORM UNTIL WS-FileStatus = '10'
        READ InventoryFile
            AT END
                MOVE '10' TO WS-FileStatus
            NOT AT END
                DISPLAY ItemID ' ' ItemName ' ' Quantity ' ' Price
    END-PERFORM
    CLOSE InventoryFile.

Conclusion

In this case study, we developed a basic inventory management system using COBOL. We covered the essential operations such as adding, updating, deleting, and displaying inventory items. By completing the exercises, you will gain hands-on experience in implementing and enhancing COBOL programs for real-world applications. This case study serves as a practical application of the concepts learned throughout the course and prepares you for more complex COBOL programming tasks.

© Copyright 2024. All rights reserved