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

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.