MainframeMaster

COBOL Tutorial

COBOL FOR Clause

The FOR clause represents a fundamental iteration control mechanism in COBOL programming, serving as a precise specification for defining the number of times a particular operation, paragraph, or section should be executed within repetitive processing structures. This clause embodies the principles of controlled iteration by providing deterministic loop execution capabilities, enabling sophisticated repetitive processing patterns, and supporting efficient batch processing operations while maintaining program clarity and ensuring predictable execution behavior in enterprise applications and data processing systems that require precise iteration control and performance optimization.

Syntax and Usage

FOR Clause Syntax
cobol
1
2
3
4
5
6
7
8
PERFORM paragraph-name FOR integer TIMES PERFORM paragraph-name FOR identifier TIMES PERFORM paragraph-name VARYING identifier FROM initial-value BY increment-value UNTIL condition FOR maximum-iterations TIMES
Loop Control
Iteration
Count-Based

Basic FOR Examples

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
IDENTIFICATION DIVISION. PROGRAM-ID. FOR-CLAUSE-EXAMPLES. DATA DIVISION. WORKING-STORAGE SECTION. 01 LOOP-COUNTER PIC 9(3) VALUE 0. 01 ITERATION-COUNT PIC 9(3) VALUE 5. 01 TOTAL-PROCESSED PIC 9(5) VALUE 0. PROCEDURE DIVISION. MAIN-PROCESSING. *> Basic FOR with literal count PERFORM SIMPLE-OPERATION FOR 10 TIMES *> FOR with variable count PERFORM VARIABLE-OPERATION FOR ITERATION-COUNT TIMES *> FOR with computed count COMPUTE ITERATION-COUNT = 3 * 4 PERFORM COMPUTED-OPERATION FOR ITERATION-COUNT TIMES STOP RUN. SIMPLE-OPERATION. ADD 1 TO LOOP-COUNTER DISPLAY 'Simple operation iteration: ' LOOP-COUNTER. VARIABLE-OPERATION. ADD 1 TO TOTAL-PROCESSED DISPLAY 'Variable operation iteration: ' TOTAL-PROCESSED. COMPUTED-OPERATION. DISPLAY 'Computed operation executed'.

Key Features and Benefits

Simple Loop Control
  • • Fixed iteration count
  • • Predictable execution
  • • Easy to understand and maintain
  • • Optimal for batch processing
Flexible Implementation
  • • Literal or variable counts
  • • Runtime count determination
  • • Computed iteration values
  • • Integration with other clauses

Interactive Tutorial

Hands-On Exercise: Loop Patterns
Practice using FOR clause for different iteration scenarios

Exercise 1: Array Processing

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
01 DATA-ARRAY OCCURS 50 TIMES. 05 ARRAY-VALUE PIC 9(5). 01 ARRAY-INDEX PIC 9(2) VALUE 1. PROCEDURE DIVISION. *> Initialize array using FOR PERFORM INITIALIZE-ELEMENT FOR 50 TIMES *> Process array using FOR MOVE 1 TO ARRAY-INDEX PERFORM PROCESS-ELEMENT FOR 50 TIMES. INITIALIZE-ELEMENT. COMPUTE ARRAY-VALUE(ARRAY-INDEX) = ARRAY-INDEX * 10 ADD 1 TO ARRAY-INDEX. PROCESS-ELEMENT. DISPLAY 'Element ' ARRAY-INDEX ': ' ARRAY-VALUE(ARRAY-INDEX) ADD 1 TO ARRAY-INDEX.

Exercise 2: Batch Processing

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
01 BATCH-SIZE PIC 9(3) VALUE 100. 01 RECORD-COUNT PIC 9(5) VALUE 0. PROCEDURE DIVISION. *> Process records in batches PERFORM PROCESS-BATCH FOR 10 TIMES. PROCESS-BATCH. DISPLAY 'Starting batch processing...' PERFORM PROCESS-RECORD FOR BATCH-SIZE TIMES DISPLAY 'Batch completed. Records processed: ' RECORD-COUNT. PROCESS-RECORD. ADD 1 TO RECORD-COUNT *> Simulate record processing IF FUNCTION MOD(RECORD-COUNT, 25) = 0 DISPLAY 'Processed ' RECORD-COUNT ' records' END-IF.

Advanced FOR Patterns

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
IDENTIFICATION DIVISION. PROGRAM-ID. ADVANCED-FOR-PATTERNS. DATA DIVISION. WORKING-STORAGE SECTION. 01 DYNAMIC-COUNT PIC 9(3). 01 NESTED-COUNTER PIC 9(2) VALUE 0. 01 MATRIX OCCURS 10 TIMES. 05 MATRIX-ROW OCCURS 10 TIMES. 10 MATRIX-CELL PIC 9(3). PROCEDURE DIVISION. MAIN-PROCESSING. *> Dynamic count based on conditions COMPUTE DYNAMIC-COUNT = FUNCTION CURRENT-DATE(7:2) IF DYNAMIC-COUNT < 5 MOVE 5 TO DYNAMIC-COUNT END-IF PERFORM DYNAMIC-OPERATION FOR DYNAMIC-COUNT TIMES *> Nested FOR loops for matrix processing PERFORM PROCESS-MATRIX-ROW FOR 10 TIMES STOP RUN. DYNAMIC-OPERATION. ADD 1 TO NESTED-COUNTER DISPLAY 'Dynamic operation ' NESTED-COUNTER. PROCESS-MATRIX-ROW. ADD 1 TO NESTED-COUNTER DISPLAY 'Processing matrix row ' NESTED-COUNTER PERFORM PROCESS-MATRIX-CELL FOR 10 TIMES. PROCESS-MATRIX-CELL. COMPUTE MATRIX-CELL(NESTED-COUNTER, 1) = NESTED-COUNTER * 10.

Best Practices

Knowledge Check

Test Your Understanding

Question 1: Basic Syntax

What's the correct syntax to execute a paragraph 15 times?

Answer: PERFORM PARAGRAPH-NAME FOR 15 TIMES

Question 2: Variable Usage

How do you use a variable to control FOR loop iterations?

Answer: PERFORM PARAGRAPH-NAME FOR variable-name TIMES, where variable-name contains the iteration count.

Question 3: Best Practice

What should you check before using a variable in a FOR clause?

Answer: Validate that the variable contains a positive numeric value and is within acceptable range to prevent infinite loops or performance issues.

Common Patterns

Array Initialization
cobol
1
2
3
4
5
6
7
8
9
10
01 DATA-TABLE OCCURS 100 TIMES. 05 TABLE-VALUE PIC 9(5). 01 INDEX-VAR PIC 9(3) VALUE 1. PROCEDURE DIVISION. PERFORM INIT-TABLE-ELEMENT FOR 100 TIMES. INIT-TABLE-ELEMENT. MOVE ZEROS TO TABLE-VALUE(INDEX-VAR) ADD 1 TO INDEX-VAR.
Report Generation
cobol
1
2
3
4
5
6
7
8
9
01 LINES-PER-PAGE PIC 9(2) VALUE 60. 01 CURRENT-LINE PIC 9(2) VALUE 1. PROCEDURE DIVISION. PERFORM PRINT-REPORT-LINE FOR LINES-PER-PAGE TIMES. PRINT-REPORT-LINE. DISPLAY 'Report line ' CURRENT-LINE ADD 1 TO CURRENT-LINE.

Frequently Asked Questions