Wait until a specific time
[Autolink] Menu
/* ------------------------------------------------------------------ */
/* function: Wait until a specific time */
/* */
/* call: thisRC = waitUntil( timeToAwake, waitIntervall, */
/* ,waitStartMsg} ,stillWaitingMsg ) */
/* */
/* where: timeToAwake */
/* - time to awake (e.g. "4:00pm") */
/* waitIntervall */
/* - wait intervall in seconds */
/* This parameter is optional; the default is 60 sec. */
/* waitStartMsg */
/* - Message to print to the screen before the 1st */
/* iteration */
/* This parameter is optional; there is no default. */
/* stillWaitingMsg */
/* - Message to print to the screen before each round */
/* This parameter is optional; there is no default. */
/* */
/* returns: the number of intervalls to wait before the time was */
/* right. */
/* */
/* note: This routine needs the function SysSleep from the DLL */
/* REXXUTIL. REXXUTIL must be loaded prior to calling */
/* this routine. */
/* */
/* credits: This code is based on code that I found in the REXX */
/* newsgroup. */
/* */
WaitUntil: PROCEDURE
parse arg TimeToAwake, WaitIntervall, waitStartMsg, stillWaitingMsg
/* default for the wait intervall is 60 sec */
if waitIntervall = '' then
waitIntervall = 60
if waitStartMsg <> '' then
say waitStartMsg
prevTime = time( 'c' )
do i=0
if stillWaitingMsg <> '' then
say stillWaitingMsg
curTime = time( 'c' )
if curTime = timeToAwake | ,
(prevTime < timeToAwake & curTime > timeToAwake ) then
do
/* it's time to leave this routine */
leave i
end /* if */
/* go to sleep for another intervall */
prevTime = curTime
call SysSleep WaitIntervall
end /* do i=0 */
return i
[Back: Sample for using BEEP to play sounds]
[Next: Get the date and time of the OS/2 boot process]