Модератор: прикреплено к уже существующей теме.
Сначала показалось не может быть:
## Код:
```
PROCEDURE Do*;
   VAR j, N: INTEGER;
BEGIN
   N := ORD({0..30});
   FOR j := 1 TO N DO
      ASSERT(j > 0, 20);
   END;
END Do;
```

Если переписать через WHILE, конечно, все становится понятно.