Ключевое слово LOOP начинает простейший безусловный цикл. Команды безусловного цикла выполняются до тех пор, пока не будет достигнуто ключевое слово EXIT. За ключевым словом EXIT может следовать секция WHEN с выражением, определяющим условие выхода. Выражение должно относиться к логическому типу. Например, оно может проверять, достигла ли переменная некоторой величины. Ниже приведен синтаксис безусловного цикла (без ключевого слова LOOP):
LOOP
команде:
[...]
END LOOP:
Команда EXIT завершает работу безусловного цикла и может дополнительно содержать метку и/или условие завершения.
Метка представляет собой произвольный идентификатор, заключенный между префиксом « и суффиксом ». Чтобы назначить метку циклу, следует расположить ее непосредственно перед началом цикла. Синтаксис определения цикла с меткой:
«метка»
LOOP
[...]
END LOOP:
Назначение метки циклу позволяет указать нужный цикл при выходе из нескольких вложенных циклов (команда EXIT с меткой работает лишь в том случае, если завершаемому циклу была присвоена соответствующая метка).
Если команда EXIT содержит условие, цикл прерывается только в том случае, если это условие истинно.
Синтаксис вызова EXIT в цикле LOOP:
[ «метка» ]
LOOP
statement;
[...]
EXIT [ метка ] [ WHEN условие ]:
END LOOP:
В листинге 11.42 приведен пример безусловного цикла и команды EXIT, завершающей цикл при выполнении некоторого условия. Функция square_i ntegerj oop() возводит целое число в квадрат (умножает его само на себя) до тех пор, пока его значение не превысит 10 000, после чего возвращает полученный результат.