Guardian Programmer's Guide

Table Of Contents
Managing Time
Guardian Programmer’s Guide 421922-014
18 - 34
Interacting With the DST Transition Table
The following rules have to be kept in mind while deleting entries from the DST table:
#include <zsysc>
#include <cextdecs(COMPUTETIMESTAMP,DST_TRANSITION_DELETE_)>
zsys_ddl_dst_entry_def DSTEntry;
short error, dateAndTime[8], errorMask;
long long timeStampLow, timeStampHigh;
/* Delete the third transition added by the DST_TRANSITION_ADD_
procedure above */
dateAndTime[0] = 1992; /* year */
dateAndTime[1] = 4; /* month */
dateAndTime[2] = 12; /* day */
dateAndTime[3] = 2; /* hour */
dateAndTime[4] = 0; /* minute */
dateAndTime[5] = 0; /* second */
dateAndTime[6] = 0; /* millisecond */
dateAndTime[7] = 0; /* microsecond */
timeStampLow = COMPUTETIMESTAMP(dateAndTime, &errorMask);
if (errorMask != 0) errorExit();
dateAndTime[0] = 1992; /* year */
dateAndTime[1] = 10; /* month */
dateAndTime[2] = 18; /* day */
dateAndTime[3] = 2; /* hour */
dateAndTime[4] = 0; /* minute */
dateAndTime[5] = 0; /* second */
dateAndTime[6] = 0; /* millisecond */
dateAndTime[7] = 0; /* microsecond */
timeStampHigh = COMPUTETIMESTAMP(dateAndTime, &errorMask);
if (errorMask != 0) errorExit();
DSTEntry.z_lowgmt = timeStampLow;
DSTEntry.z_highgmt = timeStampHigh;
DSTEntry.z_offset = 3600; /* seconds in 1 hour */
DSTEntry.z_version = DST_VERSION_SEP1997;
error = DST_TRANSITION_DELETE_(&DSTEntry);
if (error != ZSYS_VAL_DST_OK) errorExit();
.
.
.
.
1. Only transitions that already exist in the table can be deleted. Deleting an entry
that has a zero offset has no effect and the table remains unaltered.
2. An attempt to delete the entry that is currently in effect is not allowed when the
offset field of that entry has a nonzero value. The DST_TRANSITION_MODIFY_
procedure may be used to delete such an entry. See rule (2) of Using the
DST_TRANSITION_MODIFY_ Procedure.