COBOL Basics Overview

21 Views


Here's a concise overview of COBOL basics, tailored especially for IBM i (AS/400) environments.


๐Ÿงฑ COBOL Basics Overview

COBOL (Common Business Oriented Language) is a high-level programming language designed for business applications, with readable syntax and strong file-handling capabilities.


๐Ÿ“˜ Structure of a COBOL Program

A COBOL program is divided into four main divisions:

1. IDENTIFICATION DIVISION

Specifies the program name.

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOCOBOL.

2. ENVIRONMENT DIVISION

Defines the environment, such as files and systems.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT IN-FILE ASSIGN TO 'MYDATA.FILE'.

3. DATA DIVISION

Declares all variables and data structures.

DATA DIVISION.
FILE SECTION.
FD IN-FILE.
01 IN-RECORD.
   05 CUSTOMER-ID     PIC 9(5).
   05 CUSTOMER-NAME   PIC X(30).

WORKING-STORAGE SECTION.
01 WS-MESSAGE         PIC X(50) VALUE "Hello from COBOL".

4. PROCEDURE DIVISION

Contains the executable logic.

PROCEDURE DIVISION.
    DISPLAY WS-MESSAGE.
    STOP RUN.

๐Ÿ› ๏ธ Key Concepts

Concept Description
PIC (Picture) Defines data format: 9 for numeric, X for char
FD / 01 File descriptor / Record structure
WORKING-STORAGE Temporary memory (variables, flags, counters)
PERFORM Used like a loop or function call
IF / EVALUATE Conditional logic (like IF or CASE)

๐Ÿงพ Simple Example: Read File and Display

IDENTIFICATION DIVISION.
PROGRAM-ID. READFILE.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT IN-FILE ASSIGN TO 'MYFILE.FILE'
    ORGANIZATION IS LINE SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD IN-FILE.
01 IN-RECORD.
   05 CUST-ID     PIC 9(5).
   05 CUST-NAME   PIC X(30).

WORKING-STORAGE SECTION.
01 EOF-FLAG       PIC X VALUE 'N'.

PROCEDURE DIVISION.
    OPEN INPUT IN-FILE
    PERFORM UNTIL EOF-FLAG = 'Y'
       READ IN-FILE
          AT END
             MOVE 'Y' TO EOF-FLAG
          NOT AT END
             DISPLAY CUST-ID CUST-NAME
       END-READ
    END-PERFORM
    CLOSE IN-FILE
    STOP RUN.

๐Ÿง  COBOL on IBM i (AS/400)

  • COBOL on IBM i can be ILE COBOL (Integrated Language Environment)

  • Uses DDS files, display files, CL programs, etc.

  • You can call COBOL from CL, RPG, or expose it via web services

  • File names often refer to physical files (e.g., MYLIB/MYFILE)


Great — here's a sample COBOL program that reads from a DB2 table using embedded SQL, specifically on IBM i (AS/400).


๐Ÿงพ COBOL Program with Embedded SQL (Read from Table)

๐ŸŽฏ Objective:

Read customer records from a DB2 table named CUSTOMERS, and display CUSTOMER_ID and CUSTOMER_NAME.


๐Ÿ“˜ Sample Program: READSQLCBL

       IDENTIFICATION DIVISION.
       PROGRAM-ID. READSQLCBL.

       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.

       DATA DIVISION.
       WORKING-STORAGE SECTION.

       EXEC SQL INCLUDE SQLCA END-EXEC.

       01  WS-CUST-ID        PIC 9(5).
       01  WS-CUST-NAME      PIC X(30).

       EXEC SQL
           DECLARE C1 CURSOR FOR
           SELECT CUSTOMER_ID, CUSTOMER_NAME
           FROM CUSTOMERS
       END-EXEC.

       PROCEDURE DIVISION.
       MAIN-LOGIC.
           EXEC SQL
               CONNECT TO CURRENT
           END-EXEC

           EXEC SQL
               OPEN C1
           END-EXEC

           PERFORM UNTIL SQLCODE NOT = 0
               EXEC SQL
                   FETCH C1 INTO :WS-CUST-ID, :WS-CUST-NAME
               END-EXEC

               IF SQLCODE = 0
                   DISPLAY "CUSTOMER ID: " WS-CUST-ID
                   DISPLAY "CUSTOMER NAME: " WS-CUST-NAME
               END-IF
           END-PERFORM

           EXEC SQL
               CLOSE C1
           END-EXEC

           EXEC SQL
               COMMIT
           END-EXEC

           STOP RUN.

โœ… Key Points

Section Purpose
EXEC SQL INCLUDE SQLCA Includes SQL Communication Area (for SQLCODE, etc.)
DECLARE C1 CURSOR FOR ... Declares a SQL cursor for selecting data
FETCH ... INTO :host-vars Moves DB2 data into COBOL working-storage
SQLCODE Indicates result of last SQL operation (0 = success)

๐Ÿ› ๏ธ Compile & Bind Notes on IBM i

  1. Precompile using CRTSQLCBL or CRTSQLCBLI command

    CRTSQLCBLI OBJ(MYLIB/READSQLCBL) SRCFILE(MYLIB/QCBLSRC) COMMIT(*NONE)
    
  2. Ensure your DB2 table CUSTOMERS exists and has:

    • CUSTOMER_ID as numeric

    • CUSTOMER_NAME as character


 

Post Comments