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

Fix PERFORM VARYING

Problem Description

Loop executes wrong number of times:
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I = 10
DISPLAY WS-I
END-PERFORM.

Expected Output

Should display 1-10, only shows 1-9

Hints

UNTIL checks condition BEFORE executing body.

Solution

IDENTIFICATION DIVISION. PROGRAM-ID. FIXPERF. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-I PIC 9(2). PROCEDURE DIVISION. * BUG: UNTIL WS-I = 10 stops BEFORE 10 is processed * FIX: Change to > 10 (stops after 10) PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > 10 DISPLAY WS-I END-PERFORM. STOP RUN.

Explanation:

UNTIL condition checked before loop body. Use > for inclusive endpoint.