Guardian Programmer's Guide

Table Of Contents
Managing Time
Guardian Programmer’s Guide 421922-014
18 - 24
A Sample Long-Range Timer
void main(int argc, char **argv)
{
int64 jts_gmt_target;
int business_day;
short recv_num;
int16 read_data;
int hour, min;
short err, last_err, status;
if (argc < 2)
{ showTime(JULIANTIMESTAMP(0), "time now"); STOP(); }
hour = atoi(argv[1]);
min = atoi(argv[2]);
/*
* Get the file number for $RECEIVE. System messages
* and waited I/O are enabled by default.
*/
err = FILE_OPEN_("$RECEIVE", 8, &recv_num);
TargetGMT(hour, min, &jts_gmt_target);
showTime(jts_gmt_target, "target time");
business_day = SetupTimeout(jts_gmt_target);
while (business_day)
{
/*
* Perform a waited read on $RECEIVE. For real
* applications, nowaited reads should be used so that
* processing can be done between the timer pops.
*/
status = READX(recv_num, (char*) &read_data, 2);
if (_status_gt(status))
{
FILE_GETINFO_(recv_num, &last_err);
if ((last_err == SYSTEM_MSG_RECVD) &&
(read_data == ELAPSED_TIME_TIMEOUT))
{
showTime(JULIANTIMESTAMP(0), "timer pop");
business_day = SetupTimeout(jts_gmt_target);
}
}
}
showTime(JULIANTIMESTAMP(0), "day ended!");
}