5.9. ОПЕРАТОРЫ ПЕРЕХОДА

Оператор перехода определяет явную передачу управления на помеченный меткой оператор.

оператор перехода ::= goto имя-метки;

Самая вложенная последовательность .операторов, объемлющая помеченный меткой оператор, должна также охватывать и оператор перехода на эту метку (в частности, оператор перехода может входить в еще более вложенную последовательность операторов). Кроме того, если оператор перехода содержится в операторе принятия или теле программного модуля, то соответствующий помеченный оператор не должен быть вне этой конструкции, и, наоборот (как следует из предыдущего правила), если помеченный оператор содержится в такой конструкции, то оператор перехода не может быть вне ее.

Выполнение оператора перехода заключается в передаче управления на помеченный соответствующей меткой оператор.

Примечание. Приведенные выше правила допускают передачу управления на оператор из некоторой объемлющей последовательности операторов, но не наоборот. Аналогично они запрещают передачу управления между альтернативами оператора выбора, условного оператора или оператора отбора, между обработчиками исключений или из обработчика исключения некоторого окружения обратно на последовательность операторов этого окружения.

Пример:

<<COMPARE>>    if A(l) < ELEMENT then      if LEFT(I) /= 0 then          I := LEFT(t);         goto COMPARE;       end if;       -- некоторые операторы    end if;

Ссылки: метка 5.1, настраиваемое тело 12.1, обработчик исключения 11.2, окружение 11.2, оператор 5.1, оператор блока 5.6, оператор выбора 5.4, оператор отбора 9.7, оператор принятия 9.5, передача управления 5.1, последовательность операторов 5.1, программный модуль 6, составной оператор 5.1, тело задачи 9.1, тело пакета 7.1, тело подпрограммы 6.3, условный оператор 5.3.