On 1/24/2013 11:01 AM, Marten Jan de Ruiter wrote:
>
> I wrote a FORTRAN program using the time_and_date function. The source follows below. The time_and_date function returns the wrong time: I am not in UTC, so czone should be +0100.
>
> In the following output, the lines "ctime:..." to "milliseconds..." are based on time_and_date. The line 15:54:49 is the correct time obtained by the time function, and the line 23-JAN-13 is the correct date obtained by the date function.
>
> ctime: 20130123
> cdate: 145449.947
> czone: -0000
> @ 2013-01-23 14:54:49.947
> year 2013
> month 1
> day 23
> diff wrt UTC 0 minutes
> hours 14
> minutes 54
> seconds 49
> milliseconds 947
>
> 15:54:49
> 23-JAN-13
>
>
> I have done some experiments to narrow down the problem:
> * compiling with gfortran: time_gfortran.exe gives correct result in Cygwin
> * compiling with g95: time_g95.exe gives the correct result in Cygwin
these two compilers are cygwin ones
> * compiling with ifort: time_ifort.exe gives the wrong time in Cygwin
this is not.
Take cygwin out of the loop, what is the answer of
time_ifort.exe in cmd ?
>
> After copying cygwin1.dll, cyggfortran-3.dll and cyggcc_s-1.dll to the working directory, I get correct results
> using the three executables in c:\windows\system32\cmd.exe.
>
> I suspect that the intel compiler does a different system call for time_and_date than for date and time, that the system call is intercepted by Cygwin, and not properly handled. I am still baffled why the same source runs fine for gfortran and g95. Notice however that for these compilers, the _date_ and _time_ functions are not defined. Hence the preprocessor exclusion in the source.
I doubt cygwin is intercepting a not cygwin program call to MS ssystem