#include#include #include typedef nc_vlen_t temp_vlen; typedef struct sea_sounding { int sounding_no; temp_vlen temp_vl; } sea_sounding; static const float vlen_0[] = { 23.5} ; static const float vlen_1[] = { 23.5, 22.5} ; static const float vlen_2[] = { 23.5, 22.5, 21.5} ; 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)); fflush(stderr); exit(1); } } int main() {/* create cdm_sea_sounding.nc */ int stat; /* return status */ int ncid; /* netCDF id */ /* group ids */ int root_grp; /* type ids */ int temp_vlen_typ; int sea_sounding_typ; /* dimension ids */ int Sounding_dim; /* dimension lengths */ size_t Sounding_len = 3; /* variable ids */ int fun_soundings_id; /* rank (number of dimensions) for each variable */ # define RANK_fun_soundings 1 /* variable shapes */ int fun_soundings_dims[RANK_fun_soundings]; /* enter define mode */ stat = nc_create("cdm_sea_sounding.nc", NC_CLOBBER|NC_NETCDF4, &ncid); check_err(stat,__LINE__,__FILE__); root_grp = ncid; stat = nc_def_vlen(root_grp, "temp_vlen", NC_FLOAT, &temp_vlen_typ); check_err(stat,__LINE__,__FILE__); stat = nc_def_compound(root_grp, sizeof(sea_sounding), "sea_sounding", &sea_sounding_typ); check_err(stat,__LINE__,__FILE__); { stat = nc_insert_compound(root_grp, sea_sounding_typ, "sounding_no", NC_COMPOUND_OFFSET(sea_sounding,sounding_no), NC_INT); check_err(stat,__LINE__,__FILE__); stat = nc_insert_compound(root_grp, sea_sounding_typ, "temp_vl", NC_COMPOUND_OFFSET(sea_sounding,temp_vl), temp_vlen_typ); check_err(stat,__LINE__,__FILE__); } /* define dimensions */ stat = nc_def_dim(root_grp, "Sounding", Sounding_len, &Sounding_dim); check_err(stat,__LINE__,__FILE__); /* define variables */ fun_soundings_dims[0] = Sounding_dim; stat = nc_def_var(root_grp, "fun_soundings", sea_sounding_typ, RANK_fun_soundings, fun_soundings_dims, &fun_soundings_id); check_err(stat,__LINE__,__FILE__); /* leave define mode */ stat = nc_enddef (root_grp); check_err(stat,__LINE__,__FILE__); /* assign variable data */ { sea_sounding fun_soundings_data[3] = {{1, {1, (void*)vlen_0}}, {1, {2, (void*)vlen_1}}, {-16995532, {3, (void*)vlen_2}}} ; size_t fun_soundings_startset[1] = {0} ; size_t fun_soundings_countset[1] = {3} ; stat = nc_put_vara(root_grp, fun_soundings_id, fun_soundings_startset, fun_soundings_countset, fun_soundings_data); stat = nc_put_vara(root_grp, fun_soundings_id, fun_soundings_startset, fun_soundings_countset, fun_soundings_data); check_err(stat,__LINE__,__FILE__); } stat = nc_close(root_grp); check_err(stat,__LINE__,__FILE__); return 0; }