PERFORM VARYING
Problem Description
Use PERFORM VARYING for counter-controlled loops.
Expected Output
For-loop equivalent with FROM, BY, UNTIL
Hints
PERFORM VARYING var FROM start BY increment UNTIL condition.
Solution
IDENTIFICATION DIVISION.
PROGRAM-ID. VARYING.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-I PIC 9(2).
01 WS-J PIC 9(2).
01 WS-PRODUCT PIC 9(4).
01 WS-N PIC 9(2) VALUE 5.
PROCEDURE DIVISION.
* Simple counting loop
DISPLAY "COUNTING 1 TO 10:".
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > 10
DISPLAY WS-I
END-PERFORM.
* Countdown
DISPLAY "COUNTDOWN:".
PERFORM VARYING WS-I FROM 10 BY -1 UNTIL WS-I < 1
DISPLAY WS-I
END-PERFORM.
DISPLAY "LIFTOFF!".
* Skip counting (by 2)
DISPLAY "EVEN NUMBERS 2-20:".
PERFORM VARYING WS-I FROM 2 BY 2 UNTIL WS-I > 20
DISPLAY WS-I
END-PERFORM.
* Nested loops - multiplication table
DISPLAY "MULTIPLICATION TABLE (5x5):".
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > WS-N
PERFORM VARYING WS-J FROM 1 BY 1 UNTIL WS-J > WS-N
COMPUTE WS-PRODUCT = WS-I * WS-J
DISPLAY WS-I " x " WS-J " = " WS-PRODUCT
END-PERFORM
END-PERFORM.
STOP RUN.
Explanation:
PERFORM VARYING is like FOR loop. FROM=start, BY=step, UNTIL=end condition.