The FOR statement is a looping statement that repeats execution of a statement according to the value of a control variable. The control variable assumes a value within a specified range or set. A FOR statement has one of the following forms: FOR control-variable := initial {TO | DOWNTO} final-value DO statement FOR control-variable IN set-expression DO statement The 'control-variable' is the name of a previously declared variable of an ordinal type. The 'initial-value' and 'final-value' are expressions that form a range and whose type is assignment compatible with the type of the control variable. The 'set-expression' is an expression resulting in a value of SET type. The base type of the set must be assignment compatible with the control variable. The 'statement' is any VSI Pascal statement that does not change the value of the control variable. At run time, the initial and final values or the set expression is evaluated before the loop body is executed. The 'TO | DOWNTO' directives determine whether loop iteration will be incremental or decremental, respectively. In the TO form, VSI Pascal checks to see if the value of the control variable is less than or equal to the final value. If this condition is met, the control variable takes on the value of the initial value for the first loop iteration. During iterations, the control variable increments according to its data type. Looping ceases when the control variable is greater than the final value. In the DOWNTO form, VSI Pascal checks to see if the value of the control variable is greater than or equal to the final value. If this condition is met, the control variable takes on the value of the initial value for the first loop iteration. During iterations, the control variable decrements according to its data type. Looping ceases when the control variable is less than the final value. In the set expression form, VSI Pascal checks to see if the set expression is not the empty set. If this condition is met, the control variable takes on the value of one of the members of the set. Iterations occur for each member of the set; the selection order of members of the set is undefined. Looping stops after the loop body executes for each member of the set. In both the TO and the DOWNTO forms, incrementation of the control variable depends on its type. For example, values expressed in type INTEGER increment or decrement in units of 1. Values expressed in type CHAR increment or decrement in accordance with the ASCII collating sequence. After normal termination of the FOR statement, the control variable does not retain a value. You must assign a new value to this variable before you use it elsewhere in the program. If the FOR loop terminates with a GOTO statement, the control variable retains the last assigned value. In this case, you can use the variable again without assigning a new value.
1 – Examples
Example: FOR I := 1 TO 10 DO FOR J := 1 TO 10 DO A[I,J] := 0; This example shows how you can nest FOR loops. For each value of I, the executing program steps through all 10 values of the array J and assigns the value 0 to each component. Example: FOR I IN Set 1 DO Set2 := Set2 + [I + 1]; This example shows a FOR-IN statement. Set2 is assigned the successor of each value in Set1.