COBOL Manual for TNS/E Programs (H06.08+, J06.03+)

When multiple AFTER phrases appear, the mechanism is the same as for one AFTER phrase
except:
In secondary AFTER phrases, vary-2 is also initialized with the value of base-2 in its
associated FROM phrase at the beginning of execution of the PERFORM statement.
In the inner loop (as described earlier), the step “a cycle is performed” is replaced by
execution proceeds to the next inner loop.
The logic of the next inner loop parallels that of the first inner loop except for:
Its condition plays the role of condition-2.
The next vary-2 is augmented by the current value of its step-2 after each cycle
is performed.
The next vary-2 is initialized with the current value of the base-2 in its associated
FROM phrase when the value of its condition is TRUE.
After termination of a PERFORM statement with multiple AFTER phrases, vary-1 has the
value assigned, either by initialization or augmentation, at the point where the evaluation
of condition-1 gave a result of TRUE, and each vary-2 has the value assigned by
its last initialization from its associated base-2.
Execution of PERFORM VARYING with TEST AFTER Specified
When no AFTER phrase list appears, vary-1 is initialized with the value of base-1 at the
beginning of execution of the PERFORM statement. The first cycle is then performed. After the
completion of each cycle, condition-1 is evaluated to determine whether or not to perform
another cycle. Whenever the evaluation of condition-1 results in TRUE, execution of the
statement terminates. If the evaluation of condition-1 results in FALSE, the value of vary-1
is augmented by the specified increment or decrement (the value of step-2 ), and another
cycle is performed.
After termination of the PERFORM statement, vary-1 has the value it contained at the end
of the last execution of the range of the PERFORM statement.
PERFORM 401