Loop executes wrong number of times:
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I = 10
DISPLAY WS-I
END-PERFORM.
Fix PERFORM VARYING
Problem Description
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.