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.
> > > > CHARACTER*1 S(100) > > CHARACTER*10 T(10) > > CHARACTER*100 U > > > >... Hence the value of LEN(ARG) is useless to > >determine whether enough space has been allocated for the characters to be > >returned. > > Indeed the len() function returns a different number for each of these > examples. But although these represent the same *storage* allocation, > they are not equivalent in useage. The convention in fortran netcdf calls > could be to use the last representation (character*strlen) to allow allocated > space to be passed implicitly. Perhaps this would have been a good convention to use initially, but it also seems possible that adopting it now might break a significant amount of Fortran code that uses the first convention (CHARACTER S(strlen) instead of CHARACTER*strlen S) or that uses multidimensional arrays of characters (CHARACTER*strlen T(NUM)) as actual arguments in netCDF calls. I think the utility of the latter justifies the current interface, even though users sometimes have to provide redundant information when dealing with a single string. > I suppose my thinking is warped by a Fortran-centered view of fixed arrays > of strings. In this narrow current view, it would be nice to either include > a primitive for fixed strings or modify the current concept of char. The > former is more attractive to avoid breaking old code. We have tried to keep the C and Fortran interfaces parallel. Occasionally this means using a lowest-comon-denominator approach (e.g. character arrays) that is not ideal for either C or Fortran. Another goal is to permit the same netCDF files to be written from either language interface or read from either interface. If I understand it correctly, the primitives for fixed strings you propose would be useful solely for the Fortran interface, and the C interface would have to change to be able to access such data. I think a more detailed interface proposal is necessary to permit us to evaluate the benefits and costs of such a change. > If the documentation (V1.11, page 23-24) is any indication, there are > plans afoot for "a new type for multibyte characters". Perhaps someone > knows if this new anticipated primitive is motivated by multinational > character sets (often two bytes) and if it will look like a "fixed string" > data type as I have discussed. This was anticipated for the wide characters required for internationalization. --Russ
netcdfgroup
archives: