NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
I have IDL code that writes a netCDF file to be read by the ROMS ocean model via the netCDF90 interface. One of the variables in this file is defined thus: double ocean_time(ocean_time) ; string ocean_time:units = "days since 2008-01-01 00:00:00" ; I recently changed the format from NETCDF3 to NETCDF4 to avoid file size limitations. (This is done in IDL by specifying the /NETCDF4_FORMAT keyword. There is a /NETCDF3_64BIT keyword that would also avoid those limitations, but it is not available in my version of IDL.) ROMS now refuses to read the units attribute. This is because the attribute type has changed from NF90_CHAR (length 30) to NF90_STRING (length 1). This was not done deliberately by me, but by IDL. I now see that I can override this by specifying the /CHAR keyword when I write the attribute. This should let me avoid the problem—I haven't checked yet—but having spent 4-6 hours tracking down the problem, I figure I might as well ask this question anyway. Is it possible to read an attribute of type NF90_STRING into a Fortran character variable using the Fortran 90 interface? Calling NF90_GET_ATT (as ROMS does) with a character variable to accept the output does not work, but returns an error code that translates to "Attempt to convert between text & numbers". I may suggest to the IDL people that the default netCDF type for string attributes in NETCDF4 files should be CHAR, not STRING. Mark Dr Mark Hadfield Marine Physics Modeller +64-4-386-0363 | +64-21-027-41037 | 301 Evans Bay Parade, Greta Point, Wellington | www.niwa.co.nz<http://www.niwa.co.nz> [NIWA]<http://www.niwa.co.nz>
netcdfgroup
archives: