"Анри Бертьен. Стандартный набор операторов языка REXX (для OS/2) " - читать интересную книгу автора

Say y; /* 0.05 */
End;

В принципе, значение управляющей переменной можно произвольно изменять
во время выполнения цикла и это, разумеется, может влиять на число
повторений данного цикла. Конечно, изменение значения управляющей переменной
нельзя назвать хорошим приёмом - этот фокус противоречит 'правилам хорошего
тона' в программировании; тем не менее - в некоторых случаях это может
оказаться удобным.
Заметим, что условие окончания цикла проверяется в начале каждой
итерации. Следовательно, возможна такая ситуация, когда группа операторов ни
разу не будет выполнена - если условие окончания будет удовлетворено сразу
же. Заметим также, что ссылка на управляющую переменную делается по имени.
Если, например, в качестве управляющей переменной было использовано
составное имя "J.G", то изменение значения переменной "G" внутри цикла в тот
же миг приведёт к изменению имени управляющей переменной этого цикла. При
известной сноровке можно даже предугадывать с достаточной вероятностью
последствия таких действий...
Ещё одним ограничителем числа итераций при выполнении управляющего
цикла может служить конструкция FOR. В этом случае должно быть указано
<выраж. 'FOR'>, результатом вычисления которого должно быть неотрицательное
целое число. Эта конструкция действует точно так же, как счётчик итераций в
простом повторяющемся цикле - она устанавливает предел для числа итераций
цикла, если 'повторения' его не будут прекращены ранее по какому-то другому
условию или событию. Подобно выражениям TO и BY, <выражение FOR> вычисляется
только один раз - перед первой итерацией, причём - перед тем, как
управляющей переменной будет присвоено её начальное значение. Подобно
условию TO, счетчик FOR проверяется в начале каждой итерации.

Например:

Do z=-9999 to 9999 by 1 for 3; /* Выведет на экран: */
Say z; /* -9999 */
End; /* -9998 */
/* -9997 */

В управляемом цикле имя управляющей переменной может указываться в
операторе END, закрывающем DO-группу. Это имя должно совпадать с именем в
операторе DO (при этом для составных переменных НЕ ДЕЛАЕТСЯ НИКАКОЙ
ПОДСТАНОВКИ); в случае несоответствия произойдёт синтаксическая ошибка. Это
даёт возможность заставить интерпретатор автоматически проверять
правильность расположения вложенных циклов в сложных структурах при
минимальных накладных расходах.

Например:

Do r=1 to 10
...
End r /* Просим интерпретатор проверить, что этот END закрывает
действительно цикл с переменной R */