💻 COBOL
COBOL PERFORM and Loops
Intermediate 🕑 22 min read
👁 1 views
PERFORM Statement
PERFORM is one of the most important statements in COBOL. It's used to execute paragraphs/sections and create loops.
Types of PERFORM
- Simple PERFORM - Execute a paragraph once
- PERFORM TIMES - Execute a fixed number of times
- PERFORM UNTIL - Execute until condition is true
- PERFORM VARYING - Execute with a counter variable
PERFORM THRU
Execute a range of paragraphs from one to another.
Inline PERFORM
Execute statements inline without calling a separate paragraph.
TEST BEFORE vs TEST AFTER
- TEST BEFORE (default) - Condition checked before execution
- TEST AFTER - Condition checked after execution (executes at least once)
Best Practices
- Use meaningful paragraph names
- Keep paragraphs focused on single tasks
- Avoid deeply nested PERFORMs
- Always initialize loop counters
Code Example
PROCEDURE DIVISION.
MAIN-LOGIC.
PERFORM INITIALIZE-ROUTINE.
PERFORM PROCESS-DATA.
PERFORM CLEANUP-ROUTINE.
STOP RUN.
* Simple PERFORM
INITIALIZE-ROUTINE.
MOVE ZEROS TO WS-COUNTER.
MOVE SPACES TO WS-OUTPUT.
* PERFORM TIMES
PROCESS-DATA.
PERFORM PRINT-LINE 10 TIMES.
PRINT-LINE.
DISPLAY "LINE NUMBER: " WS-COUNTER.
ADD 1 TO WS-COUNTER.
* PERFORM UNTIL
READ-FILE-LOOP.
PERFORM READ-RECORD UNTIL WS-EOF = "Y".
READ-RECORD.
READ INPUT-FILE
AT END MOVE "Y" TO WS-EOF
NOT AT END PERFORM PROCESS-RECORD
END-READ.
* PERFORM VARYING
TABLE-SEARCH.
PERFORM VARYING WS-IDX FROM 1 BY 1
UNTIL WS-IDX > 100 OR WS-FOUND = "Y"
IF WS-TABLE(WS-IDX) = WS-SEARCH-KEY
MOVE "Y" TO WS-FOUND
END-IF
END-PERFORM.
* Inline PERFORM
CALCULATE-TOTALS.
PERFORM VARYING WS-I FROM 1 BY 1
UNTIL WS-I > WS-COUNT
ADD WS-AMOUNT(WS-I) TO WS-TOTAL
END-PERFORM.
* PERFORM WITH TEST AFTER
GET-VALID-INPUT.
PERFORM WITH TEST AFTER
UNTIL WS-INPUT IS NUMERIC
DISPLAY "ENTER A NUMBER: "
ACCEPT WS-INPUT
END-PERFORM.
CLEANUP-ROUTINE.
DISPLAY "PROCESSING COMPLETE".