Встретил вариант схемы из первого поста:## Код:
```
LOOP
   IF A THEN
      OneShotCode; (* здесь может быть много строк кода *)
      EXIT;
   ELSIF B THEN
      EXIT;
   END;
   Step; (* здесь тоже иногда больше одной строки *)
END;
```
## Код:
```
WHILE ~A & ~B DO
   Step;
END;
IF A THEN
   OneShotCode;
END;
```
Отличие в том, что OneShotCode выполняется при условии A, а не B. Соответственно, после WHILE проверяется не ~A, а просто A.