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.
Hi Mike, > Hello. I am working on a program that converts our gridded data > files into netCDF format, which can then be read in by VCS, Visualization > and Computation System. In the program, I include the line ( much of > the program was given to me so I don't understand parts of it ) : > > call ncapt(ncid1,longitudeid,'source',NCCHAR,0,charval,iret) > > Could you explain the meaning of charval and the subroutine ncapt? If you are trying to store a character-string attribute, you should be using NCAPTC rather than NCAPT. An on-line copy of the NetCDF Users Guide is accessible with a WWW browser such as Netscape or Mosaic from http://www.unidata.ucar.edu/packages/netcdf/ In the chapter on Attributes, the NetCDF Users Guide says: There are two FORTRAN subroutines, NCAPT and NCAPTC, for creating attributes. The first is for attributes of numeric type, and the second is for attributes of character-string type. The correct NCAPTC call should probably be something like call ncapt(ncid1,longitudeid,'source',NCCHAR,charvallen,charval,iret) where charval is the character-string value of the attribute, declared with something like CHARACTER*80 charval The meaning of the 5th argument, charvallen, is described in the documentation as: In NCAPTC, the total declared length (in characters) of the STRING parameter. Note that this is not necessarily the same as the value returned by the FORTRAN LEN function, because an array argument may be provided. so in the case above it should be 80. > Is there a way that I can look at the fortran code for ncapt and all the > other subroutines used by netCDF, such as ncaptc, ncvdef, etc..? Yes, the source code for all of these is generated as part of the process of building and installing netCDF from the netCDF source distribution, in the file netcdf/fortran/jackets.c. The source code for NCAPTC is not in Fortran, but in C meant to be called from Fortran. The file containing source code for all the functions meant to be called from Fortran, netcdf/fortran/jackets.c, is different for different platforms. It is generated as part of the process of building netCDF from the file netcdf/fortran/jackets.src that abstracts out what's common on all platforms, with system-dependent differences isolated to *.m4 files in the same directory. > Charval is giving me trouble in the program since when I run the program, > the compilation stops and the computer says that charval was never defined. > When I include the statement, CHARACTER*80 charval, the compilation works > fine but I receive a 'bus error' when I run it. DO you have any > recommendations? You probably got a bus error because you gave the length of charval as "0" (the 5th argument to NCAPT) and because you used a routine meant to be used for numeric values (NCAPT) rather than character-string values (NCAPT). I recommend that you look at the example code in the NetCDF Users Guide that shows an example of how each subroutine should be called, in the context of the necessary declarations and other related calls. If you need a printed copy of the NetCDF Users Guide, please supply us with a mailing address and we will be happy to send you one. ______________________________________________________________________________ Russ Rew UCAR Unidata Program address@hidden http://www.unidata.ucar.edu