Learn COBOL-VARIANTS with Real Code Examples
Updated Nov 27, 2025
Code Sample Descriptions
1
IBM COBOL Simple Report
IDENTIFICATION DIVISION.
PROGRAM-ID. CUSTOMER-REPORT.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CUSTOMER-ID PIC 9(5) VALUE 10001.
01 CUSTOMER-NAME PIC A(20) VALUE 'John Smith'.
PROCEDURE DIVISION.
DISPLAY 'Customer ID: ' CUSTOMER-ID.
DISPLAY 'Customer Name: ' CUSTOMER-NAME.
STOP RUN.
Prints a simple customer report with ID and name.
2
Micro Focus COBOL File Processing
IDENTIFICATION DIVISION.
PROGRAM-ID. READ-CUSTOMERS.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CUSTOMER-FILE ASSIGN TO 'CUSTOMERS.DAT'
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD CUSTOMER-FILE.
01 CUSTOMER-REC.
05 CUST-ID PIC 9(5).
05 CUST-NAME PIC A(20).
WORKING-STORAGE SECTION.
01 EOF-FLAG PIC X VALUE 'N'.
PROCEDURE DIVISION.
OPEN INPUT CUSTOMER-FILE.
READ-CUSTOMER.
PERFORM UNTIL EOF-FLAG = 'Y'
DISPLAY 'ID: ' CUST-ID ' Name: ' CUST-NAME
READ CUSTOMER-FILE AT END MOVE 'Y' TO EOF-FLAG
END-PERFORM.
CLOSE CUSTOMER-FILE.
STOP RUN.
Read a file of customer records and display each record.
3
COBOL Calculation Example
IDENTIFICATION DIVISION.
PROGRAM-ID. CALC-TOTAL.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 PRICE PIC 9(5)V99 VALUE 100.00.
01 TAX-RATE PIC 9(3)V99 VALUE 0.13.
01 TAX-AMOUNT PIC 9(5)V99.
01 TOTAL PIC 9(5)V99.
PROCEDURE DIVISION.
COMPUTE TAX-AMOUNT = PRICE * TAX-RATE.
COMPUTE TOTAL = PRICE + TAX-AMOUNT.
DISPLAY 'Price: ' PRICE.
DISPLAY 'Tax: ' TAX-AMOUNT.
DISPLAY 'Total: ' TOTAL.
STOP RUN.
Compute total price with tax for a product.
4
COBOL IF-ELSE Example
IDENTIFICATION DIVISION.
PROGRAM-ID. AGE-CHECK.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 AGE PIC 99 VALUE 20.
PROCEDURE DIVISION.
IF AGE >= 18
DISPLAY 'Customer is an adult.'
ELSE
DISPLAY 'Customer is a minor.'
END-IF.
STOP RUN.
Check a customer's age and display adult/minor status.
5
COBOL PERFORM Loop Example
IDENTIFICATION DIVISION.
PROGRAM-ID. LOOP-NUMBERS.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 COUNTER PIC 9 VALUE 1.
PROCEDURE DIVISION.
PERFORM VARYING COUNTER FROM 1 BY 1 UNTIL COUNTER > 5
DISPLAY 'Number: ' COUNTER
END-PERFORM.
STOP RUN.
Display numbers from 1 to 5 using PERFORM loop.
6
COBOL String Concatenation
IDENTIFICATION DIVISION.
PROGRAM-ID. STRING-CONCAT.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 FIRST-NAME PIC A(10) VALUE 'John'.
01 LAST-NAME PIC A(10) VALUE 'Doe'.
01 FULL-NAME PIC A(20).
PROCEDURE DIVISION.
STRING FIRST-NAME DELIMITED BY SPACE
' ' DELIMITED BY SIZE
LAST-NAME DELIMITED BY SPACE
INTO FULL-NAME.
DISPLAY 'Full Name: ' FULL-NAME.
STOP RUN.
Concatenate first name and last name into full name.
7
COBOL Table Processing
IDENTIFICATION DIVISION.
PROGRAM-ID. SUM-TABLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUMBERS.
05 NUM PIC 9(3) OCCURS 5 TIMES VALUE 10.
01 TOTAL PIC 9(5) VALUE 0.
01 I PIC 9 VALUE 1.
PROCEDURE DIVISION.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 5
ADD NUM(I) TO TOTAL
END-PERFORM.
DISPLAY 'Total Sum: ' TOTAL.
STOP RUN.
Sum values in an array of numbers.
8
COBOL File Write Example
IDENTIFICATION DIVISION.
PROGRAM-ID. WRITE-FILE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT OUT-FILE ASSIGN TO 'OUTPUT.DAT'
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD OUT-FILE.
01 OUT-REC PIC A(30).
WORKING-STORAGE SECTION.
01 MESSAGE PIC A(30) VALUE 'Hello COBOL World'.
PROCEDURE DIVISION.
OPEN OUTPUT OUT-FILE.
MOVE MESSAGE TO OUT-REC.
WRITE OUT-REC.
CLOSE OUT-FILE.
STOP RUN.
Write a record to a sequential file.
9
COBOL REDEFINES Example
IDENTIFICATION DIVISION.
PROGRAM-ID. REDEFINES-EXAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM-BLOCK PIC 9(4) VALUE 1234.
01 DIGITS REDEFINES NUM-BLOCK.
05 D1 PIC 9.
05 D2 PIC 9.
05 D3 PIC 9.
05 D4 PIC 9.
PROCEDURE DIVISION.
DISPLAY 'Original Number: ' NUM-BLOCK.
DISPLAY 'Digits: ' D1 D2 D3 D4.
STOP RUN.
Use REDEFINES to view same memory as different types.
10
COBOL MOVE CORRESPONDING Example
IDENTIFICATION DIVISION.
PROGRAM-ID. MOVE-CORR.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 SOURCE.
05 FIRST-NAME PIC A(10) VALUE 'Jane'.
05 LAST-NAME PIC A(10) VALUE 'Doe'.
01 TARGET.
05 FIRST-NAME PIC A(10).
05 LAST-NAME PIC A(10).
PROCEDURE DIVISION.
MOVE CORRESPONDING SOURCE TO TARGET.
DISPLAY 'Target Name: ' TARGET.FIRST-NAME ' ' TARGET.LAST-NAME.
STOP RUN.
Move matching fields between two groups using MOVE CORRESPONDING.