Una sentencia for establece un esquema de iteración para un bucle (sentencia loop) asociado que hace que éste se repita a medida que la variable de control va tomando los sucesivos valores del rango especificado, en orden ascendente o descendente (reverse).
La variable de control de la sentencia for no se declara explícitamente en el programa: su tipo viene dado por el rango de iteración y su ámbito se restringe a la sentencia loop asociada.
[loop_identifier:] for loop_parameter_specification loop
sequence_of_statements
end loop [loop_identifier];
loop_parameter_specification ::= defining_identifier in [reverse] discrete_subtype_definition discrete_subtype_definition ::= discrete_subtype_indication | rango
for I in 1 .. 5 loop Put (I); -- Escribe 1 2 3 4 5 end loop; for I in reverse 1 .. 5 loop Put (I); -- Escribe 5 4 3 2 1 end loop;