SLEEP
The SLEEP
instruction causes the program to pause for the specified
number of seconds.
Syntax
SLEEP seconds
- seconds must be an integer expression.
Usage
The SLEEP
instruction is typically invoked to let the end user read a message
displayed on a character terminal.
For example:
MAIN
DISPLAY "Please wait 5 seconds..."
SLEEP 5
DISPLAY "Thank you."
END MAIN
With graphical applications, the SLEEP
command is seldom used and should be
avoided.
When seconds is lower than zero or is null, the program continues immediately with the next statement.
The SLEEP
instruction can be interrupted by a process signal like SIGINT. If
your program uses DEFER INTERRUPT
to
prevent program termination on SIGINT, the SLEEP
instruction will return
immediately when the SIGINT signal is caught by the process. The program will then continue after
SLEEP
, without waiting for the number of seconds specified.
To prevent interruption of the
SLEEP
command, put a SLEEP 1
(second) instruction in a WHILE
loop and continue until the requested time has
expired, as shown in the following
example:MAIN
DEFER INTERRUPT
CALL mysleep(3)
END MAIN
FUNCTION mysleep(secs SMALLINT)
DEFINE te DATETIME YEAR TO FRACTION
IF secs <= 0 OR secs IS NULL THEN
RETURN
END IF
LET te = CURRENT + secs UNITS SECOND
WHILE secs > 0
SLEEP secs
IF CURRENT >= te THEN
EXIT WHILE
END IF
LET secs = ((te - CURRENT) / 1 UNITS SECOND) + 0.5
END WHILE
END FUNCTION