Современная технология структурного программирования основана на принципе «программировать без GOTO»: считается, что злоупотребление операторами перехода затрудняет понимание программы, делает её запутанной и сложной в отладке. Тем не менее, в некоторых случаях использование операторов перехода может значительно упростить программу.
| Оператор | Модуль | Назначение | Пример |
| GOTO | SYSTEM | Предназначен для принудительного изменения хода выполнения программы. Форма записи: метка метка;GOTO <метка> |
LABEL 1, LOOP; ... 1: ... GOTO 1; ... |
Метка это произвольный идентификатор, позволяющий именовать некоторый оператор программы и таким образом ссылаться на него. Допускается использовать в качестве меток целые числа без знака.
Метка располагается непосредственно перед помеченным оператором и отделяется от него двоеточием. Оператор можно помечать несколькими метками, которые в этом случае отделяются друг от друга двоеточием. Перед тем как появиться в программе, метка должна быть описана. Описание меток состоит из зарезервированного слова LABEL (метка), за которым следует список меток.
Действие оператора GOTO состоит в передаче управления соответствующему меченому оператору. При использовании меток необходимо руководствоваться следующими правилами:
Program Label_Demo;
Var
St : String;
I : Integer;
Label
First;
BEGIN
Write('Введите слово: ');
Readln(St);
Writeln('Повторяю слово 10 раз.');
I:=0;
First:
Writeln(St);
I:=I+1;
If I<10 Then Goto First;
END.
