This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
Bill, >Date: Wed, 14 May 2003 13:45:56 -0700 >From: Bill Riley <address@hidden> >Organization: ? >To: Steve Emmerson <address@hidden> >Subject: Re: 20030513: including udunits.inc in Fortran90 routine The above message contained the following: > Thanks, but before you responded I just went into udunits.inc and > changed all the "C" in the first column to "!" and it worked. Interesting solution. > Now my next problem is that I don't really know how to call udunits. I > have "time" in hours since 1/1/0000 as a real*8 variable. Here is what I > put in my subroutine: > > unitptr = UTMAKE() > ercode = UTCALTIME(time,unitptr,oyear,omonth,oday,ohour,tmin,tsec) > > But I get error=-5 back. Am I setting unitptr wrong? How should I do > this? Thanks much. The error code -5 means that the unit structure passed to UTCALTIME is invalid. This makes sense because you're basically passing an empty unit structure that isn't a unit of time. You need to set the unit between your calls, e.g., unitptr = UTMAKE() errcode = UTDEC("hours since 1-01-01", unitptr); ercode = UTCALTIME(time,unitptr,oyear,omonth,oday,ohour,tmin,tsec) Interesting time-origin by the way. I hope you know that there is no year zero: 1 BCE (alias BC) is immediately followed by 1 CE (alias AD). Regards, Steve Emmerson