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.
Yuanchong, >Date: Wed, 6 Apr 2005 18:56:43 -0400 (EDT) >From: Yuanchong Zhang <address@hidden> >Organization: Columbia University/NASA GISS >To: address@hidden (Steve Emmerson) >Subject: Re: 20050405: problem using UDUNITS with Fortran code > Keywords: 200504051922.j35JM9v2005883 The above message contained the following: > Since ncdump gives us the unit for any specific data file and > in most cases, we don't need convert unit of the output values. How > can I don't use UDUNITS at all (to avoid such unnecessary trouble)? It is possible to write netCDF applications that do not use the UDUNITS package -- especially if the application does not need to convert values between units. > From your web site, the only Fortran sample program (by Cathy Smith, > in 1996) has to use UDUNITS, however. Do you have other Fortran sample > that doesn't invoke UDUNITS? Sorry, no. > The unit conversion is really not an > important issue since we know how to convert, but this UDUNITS package > actually complicates reading NetCDF data for users. > > My machine is IBM AIX 4.3 RS6000, the default is 32-bit > compilation. I still don't know how to change udunits.inc for our Fortran > compiler (i.e., new declaration can be invoked by all Fortran main and > subroutines) while I'm asking our system people to figure out how to > make C-preprocessor to work properly. Is there any sample for changing > this inc file for Fortran compiler to use only? Thanks a lot. The simplest solution for not #include-ing the file "udunits.inc" in Fortran code is to simply not #include it. You will then have to explicitly declare the types of the UDUNITS routines that the code uses. Because your system is a 32-bit one, you should use an INTEGER to hold the pointer to the unit structure returned by the UTMAKE routine. Regards, Steve Emmerson