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

PERFORM UNTIL

Problem Description

Loop until a condition becomes true.

Expected Output

Condition-based loop termination

Hints

PERFORM UNTIL condition. Test is before each iteration.

Solution

IDENTIFICATION DIVISION. PROGRAM-ID. UNTIL. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM PIC 9(5). 01 WS-SUM PIC 9(6) VALUE 0. 01 WS-COUNT PIC 9(3) VALUE 0. 01 WS-AVG PIC 9(4)V99. 01 WS-CONTINUE PIC X VALUE "Y". PROCEDURE DIVISION. * Sum numbers until user enters 0 DISPLAY "ENTER NUMBERS (0 TO STOP):". PERFORM UNTIL WS-NUM = 0 ACCEPT WS-NUM IF WS-NUM NOT = 0 ADD WS-NUM TO WS-SUM ADD 1 TO WS-COUNT END-IF END-PERFORM. IF WS-COUNT > 0 COMPUTE WS-AVG = WS-SUM / WS-COUNT DISPLAY "SUM: " WS-SUM DISPLAY "COUNT: " WS-COUNT DISPLAY "AVERAGE: " WS-AVG ELSE DISPLAY "NO NUMBERS ENTERED" END-IF. * With TEST AFTER (do-while equivalent) MOVE "Y" TO WS-CONTINUE. PERFORM WITH TEST AFTER UNTIL WS-CONTINUE = "N" DISPLAY "CONTINUE? (Y/N): " ACCEPT WS-CONTINUE END-PERFORM. STOP RUN.

Explanation:

PERFORM UNTIL tests before loop. WITH TEST AFTER tests after (do-while).