MainframeMaster

COBOL Tutorial

COBOL VARYING - Quick Reference

Progress0 of 0 lessons

Overview

VARYING is a COBOL clause used with PERFORM statements to create controlled loops that automatically modify variables during iteration. It provides a convenient way to implement counting loops, array processing, and other iterative operations with automatic variable management.

Key Features

  • Automatic variable modification - Variables are incremented/decremented automatically
  • Range-based loops - Execute loops within specified ranges
  • Condition-based termination - Stop loops when conditions are met
  • Multiple variable control - Control multiple variables simultaneously

Syntax and Usage

VARYING clause syntax and usage patterns for different loop control scenarios.

Basic VARYING Loop

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
IDENTIFICATION DIVISION. PROGRAM-ID. VARYING-EXAMPLE. DATA DIVISION. WORKING-STORAGE SECTION. 01 COUNTER PIC 9(3) VALUE 1. 01 TOTAL PIC 9(5) VALUE 0. PROCEDURE DIVISION. PERFORM VARYING COUNTER FROM 1 BY 1 UNTIL COUNTER > 10 ADD COUNTER TO TOTAL END-PERFORM DISPLAY "Total: " TOTAL STOP RUN.

Basic VARYING loop that counts from 1 to 10 and accumulates the total.

VARYING with Range

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
IDENTIFICATION DIVISION. PROGRAM-ID. VARYING-RANGE. DATA DIVISION. WORKING-STORAGE SECTION. 01 INDEX-VAR PIC 9(2) VALUE 1. 01 ARRAY-DATA. 05 ARRAY-ELEMENT PIC 9(3) OCCURS 10 TIMES. PROCEDURE DIVISION. PERFORM VARYING INDEX-VAR FROM 1 TO 10 MOVE INDEX-VAR TO ARRAY-ELEMENT(INDEX-VAR) DISPLAY "Element " INDEX-VAR ": " ARRAY-ELEMENT(INDEX-VAR) END-PERFORM STOP RUN.

VARYING loop with range specification to process array elements.

VARYING with Multiple Variables

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
IDENTIFICATION DIVISION. PROGRAM-ID. VARYING-MULTIPLE. DATA DIVISION. WORKING-STORAGE SECTION. 01 ROW-INDEX PIC 9(2) VALUE 1. 01 COL-INDEX PIC 9(2) VALUE 1. 01 MATRIX-DATA. 05 MATRIX-ROW OCCURS 5 TIMES. 10 MATRIX-ELEMENT PIC 9(3) OCCURS 5 TIMES. PROCEDURE DIVISION. PERFORM VARYING ROW-INDEX FROM 1 TO 5 AFTER COL-INDEX FROM 1 TO 5 MOVE ROW-INDEX TO MATRIX-ELEMENT(ROW-INDEX, COL-INDEX) DISPLAY "Matrix[" ROW-INDEX "," COL-INDEX "]: " MATRIX-ELEMENT(ROW-INDEX, COL-INDEX) END-PERFORM STOP RUN.

Nested VARYING loops to process a two-dimensional matrix.

Loop Types

Range Loops

Loops that execute within a specified range.

cobol
1
PERFORM VARYING var FROM start TO end

Condition Loops

Loops that execute until a condition is met.

cobol
1
PERFORM VARYING var UNTIL condition

Increment Loops

Loops with custom increment values.

cobol
1
PERFORM VARYING var FROM start BY increment

Nested Loops

Loops within loops for complex iteration.

cobol
1
2
PERFORM VARYING var1 FROM 1 TO 5 AFTER var2 FROM 1 TO 3

Best Practices

  • Use meaningful variable names - Choose descriptive names for loop control variables
  • Ensure proper termination - Make sure loops will eventually terminate
  • Consider performance - Avoid excessive nesting or large iteration counts
  • Document loop logic - Add comments explaining complex loop behavior
  • Validate loop bounds - Ensure start and end values are appropriate

VARYING Quick Reference

Loop TypeSyntaxUse Case
RangeVARYING var FROM start TO endFixed iteration count
ConditionVARYING var UNTIL conditionCondition-based termination
IncrementVARYING var FROM start BY incrementCustom step values
NestedVARYING var1 AFTER var2Multi-dimensional processing

Test Your Knowledge

1. What is the primary purpose of VARYING in COBOL?

  • To define data types
  • To control loop iteration and modify variables during execution
  • To perform file operations
  • To handle exceptions

2. Which statement is VARYING most commonly used with?

  • MOVE
  • PERFORM
  • IF
  • STOP

3. What happens to the VARYING variable after each iteration?

  • It remains unchanged
  • It is automatically incremented or decremented
  • It is reset to zero
  • It becomes undefined

4. What is the syntax for VARYING in a PERFORM statement?

  • PERFORM VARYING variable FROM start TO end
  • PERFORM VARYING variable BY increment
  • PERFORM VARYING variable FROM start BY increment UNTIL condition
  • All of the above

5. When does a VARYING loop terminate?

  • When the variable reaches the end value
  • When a condition becomes true
  • Both A and B depending on the loop structure
  • After a fixed number of iterations

Frequently Asked Questions