## Код:
```
IMPORT Services;

PROCEDURE Calc* ();
   CONST N = 5; (* столько секунд работаем *)
   VAR stop: LONGINT;
BEGIN
   stop := Services.Ticks() + N * Services.resolution;
   REPEAT
      (* делаем один или несколько шагов вычислений *)
   UNTIL Services.Ticks() >= stop
END Calc;
```

Другой вариант на тот случай, если вычисления могут закончиться раньше, чем пройдет указанное время:
## Код:
```
IMPORT Services;

PROCEDURE Calc* ();
   CONST N = 5; (* столько секунд работаем *)
   VAR
      stop: LONGINT;
      finished: BOOLEAN;
BEGIN
   stop := Services.Ticks() + N * Services.resolution;
   REPEAT
      (* делаем один или несколько шагов вычислений *)
      finished := (* закончили вычисление? *)
   UNTIL (Services.Ticks() >= stop) OR finished
END Calc;
```
