После написания очередного кода взаимодействия с окружением, с кучей проверок - полуночная мыслишка о конструкции:

## Код:
```
Первый_этап;
IF первый этап удался THEN
  Второй_этап
AND второй этап удался THEN
  Третий_этап
AND третий этап удался THEN
  Завершающие действия
ELSE
  Задача не выполнена
END
```


Пока условия истинны, выполнение продвигается. При первом ложном условии выполнение переключается на ELSE.

В ряде задач нужно ещё различать, на каком этапе неуспех. Но это делается явной переменной, хранящей текущий этап.

## Код:
```
step := 1;
Первый_этап;
IF первый этап удался THEN
  step := 2;
  Второй этап;
AND второй этап удался THEN
  ...
ELSE
  Log.String("Ошибка на этапе "); Log.Int(step)
END
```
