How Changes to U.S. Daylight Saving Time Affect z/VM

Updated: 09 March 2007

A provision of the U.S. Government's Energy Policy Act of 2005 extends Daylight Saving Time (DST) by four weeks, beginning in 2007. Starting in March 2007, daylight time in the United States will begin on the second Sunday in March and end on the first Sunday in November. This document highlights how these changes will affect z/VM.

Control Program (CP) changes

The TIMEZONE_BOUNDARY statement in the system configuration file tells CP what time zone to choose at IPL so that it can determine the local time. The system programmer will need to update the dates that are specified on the TIMEZONE_BOUNDARY statements in the system configuration file that their own system uses. For more information about the TIMEZONE_BOUNDARY statement, see the z/VM: CP Planning and Administration book.

IBM ships sample system configuration files with z/VM. The following are the lines that will appear in the next version of those files.

 --------------- Old sample SYSTEM CONFIG file
 
    Timezone_boundary on 2007-04-01 at 02:00:00 to EDT
    Timezone_boundary on 2007-10-28 at 02:00:00 to EST
 
    Timezone_boundary on 2008-04-06 at 02:00:00 to EDT
    Timezone_boundary on 2008-10-26 at 02:00:00 to EST
 
    Timezone_boundary on 2009-04-05 at 02:00:00 to EDT
    Timezone_boundary on 2009-10-25 at 02:00:00 to EST

 =============== New sample SYSTEM CONFIG file
 
    Timezone_boundary on 2007-03-11 at 02:00:00 to EDT
    Timezone_boundary on 2007-11-04 at 02:00:00 to EST
 
    Timezone_boundary on 2008-03-09 at 02:00:00 to EDT
    Timezone_boundary on 2008-11-02 at 02:00:00 to EST
 
    Timezone_boundary on 2009-03-08 at 02:00:00 to EDT
    Timezone_boundary on 2009-11-01 at 02:00:00 to EST

Also, the system programmer can issue the CP SET TIMEZONE command to change the time zone of the running system. Use this command with caution because some applications may be adversely affected by changes in time zones. For more information about the CP SET TIMEZONE command, see the z/VM: CP Commands and Utilities Reference.

Language Environment (LE) changes

Language Environment APAR VM64117 / PTF UM31924 provides needed changes to several C/C++ library functions.

The TZ and _TZ environment variables can be used for POSIX(ON) and POSIX(OFF) applications, respectively, to provide time zone information which may include rules for Daylight Saving Time.

The default rules for Daylight Saving Time are based on U.S. rules, therefore the z/VM C/C++ Run-Time Library needs to be updated to reflect the new rules.

The old rules were that Daylight Saving Time would begin on the first Sunday in April at 02:00:00 (2 AM) and end on the last Sunday in October at 02:00:00 (2 AM). The new rules are that Daylight Saving Time begins on the second Sunday in March at 02:00:00 (2 AM) and ends on the first Sunday in November at 02:00:00 (2 AM).

Note: The defaults are used only when TZ or _TZ specifies a daylight saving time zone name that differs from the standard time zone name and the start and end dates are omitted.

In the absence of the TZ or _TZ environment variable, daylight saving time rules may be picked up from the LC_TOD category of the current locale. The LC_TOD category is an IBM extension and is not part of any locale that is shipped by IBM, but it could have been added through customization. Default rules are not applied to LC_TOD category settings.

Daylight Saving Time rules affect the following C library functions:

  • ctime()
  • localtime()
  • mktime()
  • strftime()

If you do not use TZ, _TZ, or LC_TOD, you are not affected.

If you do not use TZ or _TZ, but you have customized locales where the LC_TOD category was added, you must review the settings for the DST rules defined in LC_TOD and make appropriate changes. For example, if your LC_TOD specifies the old U.S. rules and you need to follow the new U.S. rules, then the locale needs to be updated.

If you use TZ or _TZ, but do not specify a daylight saving time zone name, you are not affected. Not having a daylight saving time zone name indicates that daylight saving time is not observed.

If you use TZ or _TZ and specify a daylight saving time zone name, but do not specify a DST rule, then you need to determine if the new default rules will be appropriate. If not, then you must change TZ or _TZ to specify the specific DST rule for your installation. Some countries that currently follow the old U.S. rules may not be changing to the new U.S. rules.

If you use TZ or _TZ, specify a daylight saving time zone name, and you specify your own DST rule, you must review the setting and make appropriate changes. For example, if your DST rule specifies the old U.S. rules and you need to follow the new U.S. rules, then the TZ or _TZ value needs to be updated.

If you do observe daylight saving time, but do not follow the U.S. rules, then you may have no action since your environment would have already been customized to specify your local DST rules.

Possible locations where TZ or _TZ may be defined include the Language Environment Installation Default Run-time Options CSECTs (CEEDOPT and CEEUOPT), /etc/rc, and /etc/profile for the z/VM OpenExtensions shell environment.

In all cases where a change to TZ, _TZ, or LC_TOD is made, applications must be restarted.

All applications that use TZ or _TZ that specifies a daylight saving time zone name, but do not specify a DST rule, must be restarted after installing this PTF in order for the new default rules to become effective.

IBM recommends PTF UM31924 be installed and applications restarted before March 11, 2007.

TCP/IP NFS server

Configuring the Time Zone Used by the NFS Server

The VM NFS server uses C time services to generate dates and times to associate with files and directories created through NFS. These services are sensitive to the timezone setting provided by the C environment variable, TZ. You must configure the TZ variable with the correct time zone for your NFS server. By setting the TZ environment variable, you allow the time function to preserve both date and time, correctly adjusting for daylight savings time on a given date.

If you do not set the TZ variable, you may receive messages

     DTCNFS1424I The Language Environment C runtime library is not
                 configured to discern Daylight Savings Time.
     DTCNFS1425I File times reported by VMNFS will be inaccurate
                 for times when daylight savings was in effect.

The TZ environment variables can be set using the CMS GLOBALV facility. The format of the TZ variable is described with the tzset() function in the C for VM/ESA Library Reference. For example,

     GLOBALV SELECT CENV SETLP _TZ EST5EDT

indicates that the local standard time is EST (Eastern Standard Time). The next value, 5, indicates the local time zone is 5 hours west of GMT. EDT (Eastern Daylight Time) is the abbreviation for the local daylight savings time zone.

See the "C/C++ for z/VM V1R1 User's Guide" for more information about setting environment variables with GLOBALV.

You may also need to configure the timezone setting of your NFS client system.