On Sep 2, 2008, at 12:38 PM, Andrew Ross wrote: > On Tue, Sep 02, 2008 at 02:03:25AM -0700, Jerry wrote: >> >> On Sep 1, 2008, at 4:10 PM, Alan W. Irwin wrote: >> >>> On 2008-09-01 14:58-0700 Jerry wrote: >>> >>>> Andrew, >>>> >>>> Does the Ada example, with xmin hardcoded to 1_133_395_200.0, >>>> generate the same Postscript as the C example? >>> >>> The current Ada example 29 code has >>> >>> xmin := 1133395200.0; >>> >>> (no underscores), >> >> Sorry--Ada ignores underscores in numeric constants. >> >>> and yes, that hard-coded value gives identical results to >>> the C example which is implemented in UTC to avoid anomalies in >>> daylight >>> savings time that occur for such locales as the UK. >> >> From this and the proceeding discussion, I gather that the Ada >> example with the Time_Of function, when run in the UK, does not >> generate the same Postscript code as example 29 in C, but when run in >> North America, it does. Is that correct? >> >> Again, could someone check to see if >> >> xmin := Long_Float(Time_Of(2005, 12, 1, 0.0) - Time_Of(1970, 1, 1, >> 0.0)); >> >> results in a value for xmin of 1_133_395_200.0 when run in the UK, as >> it does in North America? According to my reading of the Ada >> Reference Manual, it should. > > Jerry, > > Coming back to your original question. In the UK I get > 1.13339880000000E+09 for the result of the above calculation. > > If I do export TZ="UTC" before running the example then I get the > correct answer of 1.13339520000000E+09. Looks like gnat Time_Of is > just calling the C library mktime function so is in local time > (including any daylight savings). > > Andrew > Andrew, thanks for doing that check.
I've done a little more work looking into the Ada Reference Manual and the actual code that implements things. A couple of things are pretty glaring at this point, but I'm not sure what the actual ramifications are without doing a lot more studying. Ada 2005 has augmented the Calendar functionality substantially relative to Ada 95 and for example has expanded time zone capability and a table of leap seconds. Also, it appears that the default time zone can be different depending on whether Ada 95 or Ada 05 is being used or whether a particular flag is set or whether an optional argument is used with a non-default value. To facilitate this, there is an enhanced (and overloaded) version of the Time_Of function. The Ada implementation appears to be in all Ada (no C or system calls) and could potentially be useful, at least as a reference, to the parallel discussion on this list about implementing a standalone capability in PLplot. I don't want to beat this to death (especially in light of the parallel discussion to add a time facility to PLplot) but I'm curious to know if the following change in Ada example 29 would have any effect on your machine: To the with- and use-clauses, add the lines Ada.Calendar.Formatting and Ada.Calendar.Time_Zones so that they look like this: with Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Calendar, Ada.Calendar.Time_Zones, Ada.Calendar.Formatting, PLplot_Traditional, PLplot_Auxiliary; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Calendar, Ada.Calendar.Time_Zones, Ada.Calendar.Formatting, PLplot_Traditional, PLplot_Auxiliary; Then, add an argument Time_Zone => 0 to both of the Time_Of functions so that the line looks like this: xmin := Long_Float(Time_Of(2005, 12, 1, 0.0, Time_Zone => 0) - Time_Of(1970, 1, 1, 0.0, Time_Zone => 0)); This should enforce a zero offset relative to UTC. On my machine, there is no difference in the value of xmin. If your compiler complains that it can't find Ada.Calendar.Formatting and Ada.Calendar.Time_Zones or complains of "unmatched actual "Time_Zone" in call," then your compiler is not Ada 2005 (probably < 4.3) and we'll consider the problem not worth pursuing any further. Jerry ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Plplot-devel mailing list Plplot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/plplot-devel