Thanks much. That gives me two things to tell the customer to look at. Is the D in CEDT in your post a typo or are you looking at a different IBM recommendation than I am?
Does anyone happen to know what the default date is if you specify the short form CET1CEST rather than the long form CET1CEST,M3.5.0,M10.5.0? Charles -----Original Message----- From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf Of John McKown Sent: Thursday, November 03, 2016 12:50 PM To: [email protected] Subject: Re: Question on TZ and European time change On Thu, Nov 3, 2016 at 2:32 PM, Charles Mills <[email protected]> wrote: > Thanks @John, good points that I failed to cover in my OP. > > The application runs POSIX(ON) (hence my reference to TZ [no > underscore]) and yes, issues the code below with no error reported. > > int seRes = 0; > seRes = setenv("TZ", Time_TZset.c_str(), 1); > if (seRes != 0) Msg::Print(&Msg::Msgs[260], strerror(errno)); // > "160E Error returned from setenv(\"TZ\"); time functions may not work > correctly: %1$s > > Charles > > I wrote up a Q&D C program on a z/OS 2.2 system. The output shows: :JOARMC:/u/joarmc/junk$ ./test-time rc=0 timeval=Thu Nov 3 14:44:07 2016 rc=0 timeval=Thu Nov 3 14:44:07 2016 :JOARMC:/u/joarmc/junk$ ./test-time rc=0 timeval=Thu Nov 3 14:44:23 2016 rc=0 timeval=Thu Nov 3 14:44:23 2016 :JOARMC:/u/joarmc/junk$ TZ=CET-1CEST,M3.5.0,M10.5.0 ./test-time rc=0 timeval=Thu Nov 3 20:44:27 2016 rc=0 timeval=Thu Nov 3 20:44:27 2016 :JOARMC:/u/joarmc/junk$ TZ=CET-1CEST ./test-time rc=0 timeval=Thu Nov 3 21:44:36 2016 rc=0 timeval=Thu Nov 3 21:44:36 2016 Note that I got the TZ=CEST-1CEDT,M3.5.0,M10.5.0 from the IBM site: http://www.ibm.com/support/knowledgecenter/SS2RWS_1.11.0/com.ibm.zsecure.doc_1.11/zsec111_install104.html Using the TZ above got what appears to be the correct answer. What I think this means is that whatever is determining the "switch over" date on z/OS UNIX is not set up correctly. The code I used is: #define _LARGE_TIME_API #define _ALL_SOURCE #define _POSIX #include <stdio.h> #include <stdlib.h> #include <stddef.h> #include <sys/time.h> int main(int argc, char *argv[]) { struct timeval64 tp1; struct timeval64 tp2; int rc; rc=gettimeofday64(&tp1,NULL); printf("rc=%d\ttimeval=%s\n",rc,ctime64(&tp1.tv_sec)); tzset(); rc=gettimeofday64(&tp1,NULL); printf("rc=%d\ttimeval=%s\n",rc,ctime64(&tp1.tv_sec)); } -- Heisenberg may have been here. Unicode: http://xkcd.com/1726/ Maranatha! <>< John McKown ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
