Due to the current gap in continued funding from the U.S. National Science Foundation (NSF), the NSF Unidata Program Center has temporarily paused most operations. See NSF Unidata Pause in Most Operations for details.
Hi Paul, > I am obviously missing a point here, but this is my problem: We have > read/write routines that accept a float array and a nc_type. The routines > use a switch (nc_type) to copy w/truncation to an appropriate temp array of > the correct type, and then call the appropriate nc_put_vara_<type> function. > This works fine for all except nc_put_vara_scar which returns the error > "Attempt to convert between text and numbers". I am thinking of scar as > 1-byte numbers from -127/+127 as opposed to the uchar version which is > 1-byte numbers in 0-255 range. What is my misunderstanding? I'm not sure, because the appended small test program works here by using nc_put_vara_schar to write signed 1-byte numbers into a float array, as verified by using ncdump on the netCDF file it creates. If this fails on your platform, please provide more details about your compiler/machine and we'll see if we can reproduce the problem. --Russ #include <stdio.h> #include <stdlib.h> #include <netcdf.h> void check_err(const int stat, const int line, const char *file) { if (stat != NC_NOERR) { (void) fprintf(stderr, "line %d of %s: %s\n", line, file, nc_strerror(stat)); exit(1); } } int main() { /* create test-schar.nc, testing nc_put_var_schar() */ int ncid; int n_dim; size_t n_len = 4; int a_id; # define RANK_a 1 int a_dims[RANK_a]; int stat = nc_create("test-schar.nc", NC_CLOBBER, &ncid); check_err(stat,__LINE__,__FILE__); stat = nc_def_dim(ncid, "n", n_len, &n_dim); check_err(stat,__LINE__,__FILE__); a_dims[0] = n_dim; stat = nc_def_var(ncid, "a", NC_FLOAT, RANK_a, a_dims, &a_id); check_err(stat,__LINE__,__FILE__); stat = nc_enddef (ncid); check_err(stat,__LINE__,__FILE__); { static signed char a[] = {-2, -1, 0, 1}; stat = nc_put_var_schar(ncid, a_id, a); check_err(stat,__LINE__,__FILE__); } stat = nc_close(ncid); check_err(stat,__LINE__,__FILE__); return 0; }
netcdfgroup
archives: