Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
💻 COBOL

COBOL PERFORM Statement

Intermediate 🕑 10 min read 👁 0 views

COBOL PERFORM Statement

The PERFORM statement executes a procedure or inline code, optionally with iteration.

Syntax Variations

PERFORM paragraph-name [THRU paragraph-name]
PERFORM paragraph-name n TIMES
PERFORM paragraph-name UNTIL condition
PERFORM paragraph-name VARYING identifier FROM value BY value UNTIL condition
PERFORM ... END-PERFORM (inline)

Example Program

       IDENTIFICATION DIVISION.
       PROGRAM-ID. PERFORM-DEMO.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-COUNTER     PIC 9(2) VALUE 0.
       01 WS-TOTAL       PIC 9(4) VALUE 0.
       01 WS-I           PIC 9(2) VALUE 0.
       01 WS-J           PIC 9(2) VALUE 0.

       PROCEDURE DIVISION.
           DISPLAY '=== PERFORM n TIMES ==='
           PERFORM PRINT-HELLO 3 TIMES

           DISPLAY '=== PERFORM UNTIL ==='
           MOVE 1 TO WS-COUNTER
           PERFORM UNTIL WS-COUNTER > 3
               DISPLAY 'Counter: ' WS-COUNTER
               ADD 1 TO WS-COUNTER
           END-PERFORM

           DISPLAY '=== PERFORM VARYING ==='
           PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > 3
               DISPLAY 'I = ' WS-I
           END-PERFORM

           DISPLAY '=== INLINE PERFORM ==='
           MOVE 0 TO WS-TOTAL
           PERFORM 5 TIMES
               ADD 10 TO WS-TOTAL
           END-PERFORM
           DISPLAY 'Total: ' WS-TOTAL

           STOP RUN.

       PRINT-HELLO.
           DISPLAY 'Hello World!'.

Expected Output

=== PERFORM n TIMES ===
Hello World!
Hello World!
Hello World!
=== PERFORM UNTIL ===
Counter: 01
Counter: 02
Counter: 03
=== PERFORM VARYING ===
I = 01
I = 02
I = 03
=== INLINE PERFORM ===
Total: 0050

Key Points

  • PERFORM TIMES executes fixed iterations
  • PERFORM UNTIL executes while condition is false
  • PERFORM VARYING provides loop counter
  • WITH TEST BEFORE/AFTER controls condition checking