Код:
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;