[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[netCDF #YEC-124697]: NetCDF Data Types
- Subject: [netCDF #YEC-124697]: NetCDF Data Types
- Date: Mon, 31 Mar 2008 15:59:10 -0600
Lee,
I can duplicate what you are seeing. It looks like a bug.
If I use
character (len = 5) :: ch = "abcde"
...
call check(nf90_put_var(ncid, varid2, ch))
it works fine:
ncdump CharTest.nc
...
CH = "abcde" ;
but the F90 library seems to be treating
character (len = 1), dimension (5) :: ch = (/'a', 'b', 'c', 'd', 'e' /)
...
call check(nf90_put_var(ncid, varid2, ch))
as if it's a 2D array, becasue it ends up calling
nf90_put_var_1d_text
which calls
nf_put_vars_text(ncid, varid, localStart, localCount, localStride, values(1))
with
localstart(1:2) =
(1) 1
(2) 1
localcount(1:2) =
(1) 1
(2) 5
localstride(1:2) =
(1) 1
(2) 1
as if it were an array of 5 strings, each of length 1, rather than an array
of 5 characters. I didin't write this and don't know enough about F90 to be
sure of how to fix it without breaking how text strings are handled. Is it
possible to do what you want with bytes, using the ichar() and char()
Fortran intrinsic functions?
Maybe Ed can see how to fix it when he gets back. Or you could look at the
function nf90_put_var_1D_text() in f90/netcdf_text_variables.f90 and see if
you can suggest a fix. The original author of the Fortran 90 interface,
Robert Pincus, may still work with the NOAA CIRES Climate Diagnostic Center
(or whatever it's called now). We may try to get him to help with this if
we can't figure it out.
--Russ
--Russ
Russ Rew UCAR Unidata Program
address@hidden http://www.unidata.ucar.edu
Ticket Details
===================
Ticket ID: YEC-124697
Department: Support netCDF
Priority: Normal
Status: Closed