LEAVE
Инструкция LEAVE используется для немедленного выхода из одного или нескольких повторяющихся циклов DO (т.е. из любой конструкции DO, отличной от простого цикла DO).
Выполнение группы инструкций завершается, и управление передается инструкции, следующей за предложением END, как если бы цикл закончился естественным образом после обработки условия завершения. Однако при этом управляющая переменная, если она есть, на выходе будет иметь то значение, которое она имела перед выполнением инструкции LEAVE.
Если имя не указано, то инструкция LEAVE завершает самый внутренний активный повторяющийся цикл. Если имя указано, то оно должно быть именем управляющей переменной текущего активного цикла, который может быть самым внутренним циклом; этот цикл (как и все активные циклы, вложенные в него) будет завершен. Потом управление передается инструкции, следующей за предложением END, соответствующим предложению DO выбранного цикла.
Пример: do i=1 to 5 say i if i=3 then leave end /* Будут выведены числа: 1, 2, 3 */
Примечания:
- Если указано имя, то оно должно совпадать с именем в инструкции DO во всех отношениях, кроме регистра клавиатуры (строчные или прописные буквы). При этом, когда выполняется сравнение имен, никакие подстановки для составных переменных не производятся.
- Цикл считается активным, если он в настоящий момент обрабатывается. Если в процессе выполнения цикла была вызвана подпрограмма или началась обработка инструкции INTERPRET, то цикл становится неактивным до тех пор, пока не выполнится возврат из подпрограммы или не завершится выполнение инструкции INTERPRET. Инструкцию LEAVE нельзя использовать для завершения неактивного цикла.
- Если одна и та же управляющая переменная используется в нескольких активных циклах, то инструкция LEAVE завершит самый внутренний цикл.