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.

[netcdfgroup] writing netcdf4

Hi,

I'm trying to write a netcdf4 file that I created with CDL and ncgen.
The problem is that when I try to add an attribute to the file, I get the following error:

Write the scale and offset...
NCID = 196608 GRPID = 196610 VARID = 0
Error: NetCDF: Variable not found

I've tried with and with entering the define mode and both have failed. I would love some help with solving this problem. There seem to be little in the manual on NETCDF4.

Sincerely,
/Marston

The function to add attributes to the variables:

static void AddAtt(struct data *Var, int grpid, int id, int root_grp) {

  int stat;

  const double scale_factor[1]  = {Var->scale_factor};
  const double add_offset[1] = {Var->add_offset};
  if(DEBUG) {
    printf("Write the scale and offset...\n");
    printf("NCID = %d GRPID = %d VARID = %d\n",root_grp,grpid,id);
  }

  // enter define mode
  stat = nc_redef (root_grp);
  check_err(stat,__LINE__,__FILE__);

stat = nc_put_att_double(grpid,id,"scale_factor",NC_DOUBLE,1,scale_factor);
  check_err(stat,__LINE__,__FILE__);
  stat = nc_put_att_double(grpid,id,"add_offset",NC_DOUBLE,1,add_offset);
  check_err(stat,__LINE__,__FILE__);

  // leave define mode
  stat = nc_enddef (root_grp);
  check_err(stat,__LINE__,__FILE__);

  return;
 }


The setup function for the file generating the netcdf file:

static void SetupNC(struct GL *g, struct NODE *vlist) {// create output file

  int  stat;  // return status
  int  ncid;  // netCDF id

  // group ids
  int root_grp;
  int Geolocation_grp;
  int Data_3D_grp;
  int Data_2D_grp;

  // dimension ids
  int Geolocation_lon_dim;
  int Geolocation_lat_dim;
  int Geolocation_level_dim;
  int Data_3D_lon_dim;
  int Data_3D_lat_dim;
  int Data_3D_level_dim;
  int Data_2D_lon_dim;
  int Data_2D_lat_dim;

  // dimension lengths
  size_t Geolocation_lon_len = g->nlon;
  size_t Geolocation_lat_len = g->nlat;
  size_t Geolocation_level_len = g->nlev;
  size_t Data_3D_lon_len = g->nlon;
  size_t Data_3D_lat_len = g->nlat;
  size_t Data_3D_level_len = g->nlev;
  size_t Data_2D_lon_len = g->nlon;
  size_t Data_2D_lat_len = g->nlat;

  // variable ids
  int Geolocation_level_id;
  int Geolocation_lon_id;
  int Geolocation_lat_id;
  int Data_3D_T_id;
  int Data_3D_Q_id;
  int Data_3D_GMH_id;
  int Data_3D_P_id;
  int Data_3D_PV_id;
  int Data_3D_PT_id;
  int Data_3D_GPH_id;
  int Data_3D_O3_id;
  int Data_3D_CIWC_id;
  int Data_3D_CLWC_id;
  int Data_3D_U_id;
  int Data_3D_V_id;
  int Data_2D_SP_id;
  int Data_2D_T2M_id;
  int Data_2D_TCW_id;
  int Data_2D_TCWV_id;
  int Data_2D_TCO3_id;
  int Data_2D_MSL_id;
  int Data_2D_Z_id;
  int Data_2D_U10M_id;
  int Data_2D_V10M_id;
  int Data_2D_SKT_id;

  // rank (number of dimensions) for each variable
#   define RANK_Geolocation_level 1
#   define RANK_Geolocation_lon 1
#   define RANK_Geolocation_lat 1
#   define RANK_Data_3D_T 3
#   define RANK_Data_3D_Q 3
#   define RANK_Data_3D_GMH 3
#   define RANK_Data_3D_P 3
#   define RANK_Data_3D_PV 3
#   define RANK_Data_3D_PT 3
#   define RANK_Data_3D_GPH 3
#   define RANK_Data_3D_O3 3
#   define RANK_Data_3D_CIWC 3
#   define RANK_Data_3D_CLWC 3
#   define RANK_Data_3D_U 2
#   define RANK_Data_3D_V 3
#   define RANK_Data_2D_SP 2
#   define RANK_Data_2D_T2M 2
#   define RANK_Data_2D_TCW 2
#   define RANK_Data_2D_TCWV 2
#   define RANK_Data_2D_TCO3 2
#   define RANK_Data_2D_MSL 2
#   define RANK_Data_2D_Z 2
#   define RANK_Data_2D_U10M 2
#   define RANK_Data_2D_V10M 2
#   define RANK_Data_2D_SKT 2

  // variable shapes
  int Geolocation_level_dims[RANK_Geolocation_level];
  int Geolocation_lon_dims[RANK_Geolocation_lon];
  int Geolocation_lat_dims[RANK_Geolocation_lat];
  int Data_3D_T_dims[RANK_Data_3D_T];
  int Data_3D_Q_dims[RANK_Data_3D_Q];
  int Data_3D_GMH_dims[RANK_Data_3D_GMH];
  int Data_3D_P_dims[RANK_Data_3D_P];
  int Data_3D_PV_dims[RANK_Data_3D_PV];
  int Data_3D_PT_dims[RANK_Data_3D_PT];
  int Data_3D_GPH_dims[RANK_Data_3D_GPH];
  int Data_3D_O3_dims[RANK_Data_3D_O3];
  int Data_3D_CIWC_dims[RANK_Data_3D_CIWC];
  int Data_3D_CLWC_dims[RANK_Data_3D_CLWC];
  int Data_3D_U_dims[RANK_Data_3D_U];
  int Data_3D_V_dims[RANK_Data_3D_V];
  int Data_2D_SP_dims[RANK_Data_2D_SP];
  int Data_2D_T2M_dims[RANK_Data_2D_T2M];
  int Data_2D_TCW_dims[RANK_Data_2D_TCW];
  int Data_2D_TCWV_dims[RANK_Data_2D_TCWV];
  int Data_2D_TCO3_dims[RANK_Data_2D_TCO3];
  int Data_2D_MSL_dims[RANK_Data_2D_MSL];
  int Data_2D_Z_dims[RANK_Data_2D_Z];
  int Data_2D_U10M_dims[RANK_Data_2D_U10M];
  int Data_2D_V10M_dims[RANK_Data_2D_V10M];
  int Data_2D_SKT_dims[RANK_Data_2D_SKT];

  // enter define mode
  stat = nc_create(g->outfile, NC_CLOBBER|NC_NETCDF4, &ncid);
  check_err(stat,__LINE__,__FILE__);
  root_grp = ncid;
  stat = nc_def_grp(root_grp, "Geolocation", &Geolocation_grp);
  check_err(stat,__LINE__,__FILE__);
  stat = nc_def_grp(root_grp, "Data_3D", &Data_3D_grp);
  check_err(stat,__LINE__,__FILE__);
  stat = nc_def_grp(root_grp, "Data_2D", &Data_2D_grp);
  check_err(stat,__LINE__,__FILE__);

  // define dimensions
stat = nc_def_dim(Geolocation_grp, "lon", Geolocation_lon_len, &Geolocation_lon_dim);
  check_err(stat,__LINE__,__FILE__);
stat = nc_def_dim(Geolocation_grp, "lat", Geolocation_lat_len, &Geolocation_lat_dim);
  check_err(stat,__LINE__,__FILE__);
stat = nc_def_dim(Geolocation_grp, "level", Geolocation_level_len, &Geolocation_level_dim);
  check_err(stat,__LINE__,__FILE__);
  stat = nc_def_dim(Data_3D_grp, "lon", Data_3D_lon_len, &Data_3D_lon_dim);
  check_err(stat,__LINE__,__FILE__);
  stat = nc_def_dim(Data_3D_grp, "lat", Data_3D_lat_len, &Data_3D_lat_dim);
  check_err(stat,__LINE__,__FILE__);
stat = nc_def_dim(Data_3D_grp, "level", Data_3D_level_len, &Data_3D_level_dim);
  check_err(stat,__LINE__,__FILE__);
  stat = nc_def_dim(Data_2D_grp, "lon", Data_2D_lon_len, &Data_2D_lon_dim);
  check_err(stat,__LINE__,__FILE__);
  stat = nc_def_dim(Data_2D_grp, "lat", Data_2D_lat_len, &Data_2D_lat_dim);
  check_err(stat,__LINE__,__FILE__);

  // define variables

  Geolocation_level_dims[0] = Geolocation_level_dim;
stat = nc_def_var(Geolocation_grp, "level", NC_FLOAT, RANK_Geolocation_level, Geolocation_level_dims, &Geolocation_level_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Geolocation_level_id,"level");

  Geolocation_lon_dims[0] = Geolocation_lon_dim;
stat = nc_def_var(Geolocation_grp, "lon", NC_FLOAT, RANK_Geolocation_lon, Geolocation_lon_dims, &Geolocation_lon_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Geolocation_lon_id,"lon");

  Geolocation_lat_dims[0] = Geolocation_lat_dim;
stat = nc_def_var(Geolocation_grp, "lat", NC_FLOAT, RANK_Geolocation_lat, Geolocation_lat_dims, &Geolocation_lat_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Geolocation_lat_id,"lat");

  Data_3D_T_dims[0] = Data_3D_lon_dim;
  Data_3D_T_dims[1] = Data_3D_lat_dim;
  Data_3D_T_dims[2] = Data_3D_level_dim;
stat = nc_def_var(Data_3D_grp, "T", NC_SHORT, RANK_Data_3D_T, Data_3D_T_dims, &Data_3D_T_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_3D_T_id,"T");

  Data_3D_Q_dims[0] = Data_3D_lon_dim;
  Data_3D_Q_dims[1] = Data_3D_lat_dim;
  Data_3D_Q_dims[2] = Data_3D_level_dim;
stat = nc_def_var(Data_3D_grp, "Q", NC_FLOAT, RANK_Data_3D_Q, Data_3D_Q_dims, &Data_3D_Q_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_3D_Q_id,"Q");

  Data_3D_GMH_dims[0] = Data_3D_lon_dim;
  Data_3D_GMH_dims[1] = Data_3D_lat_dim;
  Data_3D_GMH_dims[2] = Data_3D_level_dim;
stat = nc_def_var(Data_3D_grp, "GMH", NC_SHORT, RANK_Data_3D_GMH, Data_3D_GMH_dims, &Data_3D_GMH_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_3D_GMH_id,"GMH");

  Data_3D_P_dims[0] = Data_3D_lon_dim;
  Data_3D_P_dims[1] = Data_3D_lat_dim;
  Data_3D_P_dims[2] = Data_3D_level_dim;
stat = nc_def_var(Data_3D_grp, "P", NC_SHORT, RANK_Data_3D_P, Data_3D_P_dims, &Data_3D_P_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_3D_P_id,"P");

  Data_3D_PV_dims[0] = Data_3D_lon_dim;
  Data_3D_PV_dims[1] = Data_3D_lat_dim;
  Data_3D_PV_dims[2] = Data_3D_level_dim;
stat = nc_def_var(Data_3D_grp, "PV", NC_FLOAT, RANK_Data_3D_PV, Data_3D_PV_dims, &Data_3D_PV_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_3D_PV_id,"PV");

  Data_3D_PT_dims[0] = Data_3D_lon_dim;
  Data_3D_PT_dims[1] = Data_3D_lat_dim;
  Data_3D_PT_dims[2] = Data_3D_level_dim;
stat = nc_def_var(Data_3D_grp, "PT", NC_SHORT, RANK_Data_3D_PT, Data_3D_PT_dims, &Data_3D_PT_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_3D_PT_id,"PT");

  Data_3D_GPH_dims[0] = Data_3D_lon_dim;
  Data_3D_GPH_dims[1] = Data_3D_lat_dim;
  Data_3D_GPH_dims[2] = Data_3D_level_dim;
stat = nc_def_var(Data_3D_grp, "GPH", NC_SHORT, RANK_Data_3D_GPH, Data_3D_GPH_dims, &Data_3D_GPH_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_3D_GPH_id,"GPH");

  Data_3D_O3_dims[0] = Data_3D_lon_dim;
  Data_3D_O3_dims[1] = Data_3D_lat_dim;
  Data_3D_O3_dims[2] = Data_3D_level_dim;
stat = nc_def_var(Data_3D_grp, "O3", NC_FLOAT, RANK_Data_3D_O3, Data_3D_O3_dims, &Data_3D_O3_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_3D_O3_id,"O3");

  Data_3D_CIWC_dims[0] = Data_3D_lon_dim;
  Data_3D_CIWC_dims[1] = Data_3D_lat_dim;
  Data_3D_CIWC_dims[2] = Data_3D_level_dim;
stat = nc_def_var(Data_3D_grp, "CIWC", NC_FLOAT, RANK_Data_3D_CIWC, Data_3D_CIWC_dims, &Data_3D_CIWC_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_3D_CIWC_id,"CIWC");

  Data_3D_CLWC_dims[0] = Data_3D_lon_dim;
  Data_3D_CLWC_dims[1] = Data_3D_lat_dim;
  Data_3D_CLWC_dims[2] = Data_3D_level_dim;
stat = nc_def_var(Data_3D_grp, "CLWC", NC_FLOAT, RANK_Data_3D_CLWC, Data_3D_CLWC_dims, &Data_3D_CLWC_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_3D_CLWC_id,"CLWC");

  Data_3D_U_dims[0] = Data_3D_lon_dim;
  Data_3D_U_dims[1] = Data_3D_lat_dim;
stat = nc_def_var(Data_3D_grp, "U", NC_SHORT, RANK_Data_3D_U, Data_3D_U_dims, &Data_3D_U_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_3D_U_id,"U");

  Data_3D_V_dims[0] = Data_3D_lon_dim;
  Data_3D_V_dims[1] = Data_3D_lat_dim;
  Data_3D_V_dims[2] = Data_3D_level_dim;
stat = nc_def_var(Data_3D_grp, "V", NC_SHORT, RANK_Data_3D_V, Data_3D_V_dims, &Data_3D_V_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_3D_V_id,"V");

  Data_2D_SP_dims[0] = Data_2D_lon_dim;
  Data_2D_SP_dims[1] = Data_2D_lat_dim;
stat = nc_def_var(Data_2D_grp, "SP", NC_SHORT, RANK_Data_2D_SP, Data_2D_SP_dims, &Data_2D_SP_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_2D_SP_id,"SP");

  Data_2D_T2M_dims[0] = Data_2D_lon_dim;
  Data_2D_T2M_dims[1] = Data_2D_lat_dim;
stat = nc_def_var(Data_2D_grp, "T2M", NC_SHORT, RANK_Data_2D_T2M, Data_2D_T2M_dims, &Data_2D_T2M_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_2D_T2M_id,"T2M");

  Data_2D_TCW_dims[0] = Data_2D_lon_dim;
  Data_2D_TCW_dims[1] = Data_2D_lat_dim;
stat = nc_def_var(Data_2D_grp, "TCW", NC_SHORT, RANK_Data_2D_TCW, Data_2D_TCW_dims, &Data_2D_TCW_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_2D_TCW_id,"TCW");

  Data_2D_TCWV_dims[0] = Data_2D_lon_dim;
  Data_2D_TCWV_dims[1] = Data_2D_lat_dim;
stat = nc_def_var(Data_2D_grp, "TCWV", NC_SHORT, RANK_Data_2D_TCWV, Data_2D_TCWV_dims, &Data_2D_TCWV_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_2D_TCWV_id,"TCWV");

  Data_2D_TCO3_dims[0] = Data_2D_lon_dim;
  Data_2D_TCO3_dims[1] = Data_2D_lat_dim;
stat = nc_def_var(Data_2D_grp, "TCO3", NC_SHORT, RANK_Data_2D_TCO3, Data_2D_TCO3_dims, &Data_2D_TCO3_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_2D_TCO3_id,"TCO3");

  Data_2D_MSL_dims[0] = Data_2D_lon_dim;
  Data_2D_MSL_dims[1] = Data_2D_lat_dim;
stat = nc_def_var(Data_2D_grp, "MSL", NC_SHORT, RANK_Data_2D_MSL, Data_2D_MSL_dims, &Data_2D_MSL_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_2D_MSL_id,"MSL");

  Data_2D_Z_dims[0] = Data_2D_lon_dim;
  Data_2D_Z_dims[1] = Data_2D_lat_dim;
stat = nc_def_var(Data_2D_grp, "Z", NC_SHORT, RANK_Data_2D_Z, Data_2D_Z_dims, &Data_2D_Z_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_2D_Z_id,"Z");

  Data_2D_U10M_dims[0] = Data_2D_lon_dim;
  Data_2D_U10M_dims[1] = Data_2D_lat_dim;
stat = nc_def_var(Data_2D_grp, "U10M", NC_SHORT, RANK_Data_2D_U10M, Data_2D_U10M_dims, &Data_2D_U10M_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_2D_U10M_id,"U10M");

  Data_2D_V10M_dims[0] = Data_2D_lon_dim;
  Data_2D_V10M_dims[1] = Data_2D_lat_dim;
stat = nc_def_var(Data_2D_grp, "V10M", NC_SHORT, RANK_Data_2D_V10M, Data_2D_V10M_dims, &Data_2D_V10M_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_2D_V10M_id,"V10M");

  Data_2D_SKT_dims[0] = Data_2D_lon_dim;
  Data_2D_SKT_dims[1] = Data_2D_lat_dim;
stat = nc_def_var(Data_2D_grp, "SKT", NC_SHORT, RANK_Data_2D_SKT, Data_2D_SKT_dims, &Data_2D_SKT_id);
  check_err(stat,__LINE__,__FILE__);
  append_node(vlist,Data_2D_SKT_id,"SKT");

  if(DEBUG) printf("Checking the nc vlist!\n");
  count_list(vlist);

  // assign global attributes
  { // University
stat = nc_put_att_text(root_grp, NC_GLOBAL, "University", 33, "Chalmers University of Technology");
    check_err(stat,__LINE__,__FILE__);
  }
  { // Institude
stat = nc_put_att_text(root_grp, NC_GLOBAL, "Institude", 36, "Earth and Space Sciences Institution");
    check_err(stat,__LINE__,__FILE__);
  }
  { // Title
stat = nc_put_att_text(root_grp, NC_GLOBAL, "Title", 54, "Basic data for Odin processing and other research uses");
    check_err(stat,__LINE__,__FILE__);
  }
  { // Source
stat = nc_put_att_text(root_grp, NC_GLOBAL, "Source", 14, "ECMWF Analysis");
    check_err(stat,__LINE__,__FILE__);
  }
  { // History
stat = nc_put_att_text(root_grp, NC_GLOBAL, "History", 44, "Created for GEM group by M. S. Johnston 2011");
    check_err(stat,__LINE__,__FILE__);
  }
  { // Convention
stat = nc_put_att_text(root_grp, NC_GLOBAL, "Convention", 40, "Data is stored in 64 bit NETCDF-4 format");
    check_err(stat,__LINE__,__FILE__);
  }
  { // Missing
stat = nc_put_att_text(root_grp, NC_GLOBAL, "Missing", 37, "Error in data field is shown as -9999");
    check_err(stat,__LINE__,__FILE__);
  }
  { // Packing
stat = nc_put_att_text(root_grp, NC_GLOBAL, "Packing", 38, "Data is stored with a scale_factor and add_offset");
    check_err(stat,__LINE__,__FILE__);
  }
  { // Resolution
stat = nc_put_att_text(root_grp, NC_GLOBAL, "Resolution", 39, "Data is stored on a 1 x 1 degree grid");
    check_err(stat,__LINE__,__FILE__);
  }
  { // Data order
stat = nc_put_att_text(root_grp, NC_GLOBAL, "Data order", 39, "Data is ordered TOA first; Lowest level last");
    check_err(stat,__LINE__,__FILE__);
  }

  // assign per-variable attributes
  { // long_name
stat = nc_put_att_text(Geolocation_grp, Geolocation_level_id, "long_name", 6, "Levels");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const float Geolocation_level_FillValue_att[1] = {-999} ;
stat = nc_put_att_float(Geolocation_grp, Geolocation_level_id, "_FillValue", NC_FLOAT, 1, Geolocation_level_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // long_name
stat = nc_put_att_text(Geolocation_grp, Geolocation_lon_id, "long_name", 9, "longitude");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const float Geolocation_lon_FillValue_att[1] = {-999} ;
stat = nc_put_att_float(Geolocation_grp, Geolocation_lon_id, "_FillValue", NC_FLOAT, 1, Geolocation_lon_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
stat = nc_put_att_text(Geolocation_grp, Geolocation_lon_id, "units", 12, "degrees_east");
    check_err(stat,__LINE__,__FILE__);
  }
  { // lat_name
stat = nc_put_att_text(Geolocation_grp, Geolocation_lat_id, "lat_name", 8, "latitude");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const float Geolocation_lat_FillValue_att[1] = {-999} ;
stat = nc_put_att_float(Geolocation_grp, Geolocation_lat_id, "_FillValue", NC_FLOAT, 1, Geolocation_lat_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
stat = nc_put_att_text(Geolocation_grp, Geolocation_lat_id, "units", 13, "degrees_north");
    check_err(stat,__LINE__,__FILE__);
  }
  { // T_name
stat = nc_put_att_text(Data_3D_grp, Data_3D_T_id, "T_name", 11, "Temperature");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const short Data_3D_T_FillValue_att[1] = {-999} ;
stat = nc_put_att_short(Data_3D_grp, Data_3D_T_id, "_FillValue", NC_SHORT, 1, Data_3D_T_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
    stat = nc_put_att_text(Data_3D_grp, Data_3D_T_id, "units", 1, "K");
    check_err(stat,__LINE__,__FILE__);
  }
  { // code
    static const short Data_3D_T_code_att[1] = {130} ;
stat = nc_put_att_short(Data_3D_grp, Data_3D_T_id, "code", NC_SHORT, 1, Data_3D_T_code_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // Q_name
stat = nc_put_att_text(Data_3D_grp, Data_3D_Q_id, "Q_name", 17, "Specific Humidity");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const float Data_3D_Q_FillValue_att[1] = {-999} ;
stat = nc_put_att_float(Data_3D_grp, Data_3D_Q_id, "_FillValue", NC_FLOAT, 1, Data_3D_Q_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
    stat = nc_put_att_text(Data_3D_grp, Data_3D_Q_id, "units", 5, "kg/kg");
    check_err(stat,__LINE__,__FILE__);
  }
  { // code
    static const float Data_3D_Q_code_att[1] = {130} ;
stat = nc_put_att_float(Data_3D_grp, Data_3D_Q_id, "code", NC_FLOAT, 1, Data_3D_Q_code_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // GMH_name
stat = nc_put_att_text(Data_3D_grp, Data_3D_GMH_id, "GMH_name", 16, "Geometric Height");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const short Data_3D_GMH_FillValue_att[1] = {-999} ;
stat = nc_put_att_short(Data_3D_grp, Data_3D_GMH_id, "_FillValue", NC_SHORT, 1, Data_3D_GMH_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
    stat = nc_put_att_text(Data_3D_grp, Data_3D_GMH_id, "units", 1, "m");
    check_err(stat,__LINE__,__FILE__);
  }
  { // P_name
stat = nc_put_att_text(Data_3D_grp, Data_3D_P_id, "P_name", 8, "Pressure");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const short Data_3D_P_FillValue_att[1] = {-999} ;
stat = nc_put_att_short(Data_3D_grp, Data_3D_P_id, "_FillValue", NC_SHORT, 1, Data_3D_P_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
    stat = nc_put_att_text(Data_3D_grp, Data_3D_P_id, "units", 2, "Pa");
    check_err(stat,__LINE__,__FILE__);
  }
  { // PV_name
stat = nc_put_att_text(Data_3D_grp, Data_3D_PV_id, "PV_name", 19, "Potential Vorticity");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const float Data_3D_PV_FillValue_att[1] = {-999} ;
stat = nc_put_att_float(Data_3D_grp, Data_3D_PV_id, "_FillValue", NC_FLOAT, 1, Data_3D_PV_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
stat = nc_put_att_text(Data_3D_grp, Data_3D_PV_id, "units", 32, "10**-6 K m**2 kg**-1 s**-1 (PVU)");
    check_err(stat,__LINE__,__FILE__);
  }
  { // PT_name
stat = nc_put_att_text(Data_3D_grp, Data_3D_PT_id, "PT_name", 21, "Potential Temperature");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const short Data_3D_PT_FillValue_att[1] = {-999} ;
stat = nc_put_att_short(Data_3D_grp, Data_3D_PT_id, "_FillValue", NC_SHORT, 1, Data_3D_PT_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
    stat = nc_put_att_text(Data_3D_grp, Data_3D_PT_id, "units", 1, "K");
    check_err(stat,__LINE__,__FILE__);
  }
  { // GPH_name
stat = nc_put_att_text(Data_3D_grp, Data_3D_GPH_id, "GPH_name", 19, "Geopotential height");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const short Data_3D_GPH_FillValue_att[1] = {-999} ;
stat = nc_put_att_short(Data_3D_grp, Data_3D_GPH_id, "_FillValue", NC_SHORT, 1, Data_3D_GPH_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
stat = nc_put_att_text(Data_3D_grp, Data_3D_GPH_id, "units", 10, "m**2 s**-2");
    check_err(stat,__LINE__,__FILE__);
  }
  { // O3_name
stat = nc_put_att_text(Data_3D_grp, Data_3D_O3_id, "O3_name", 23, "Ozone mass mixing ratio");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const float Data_3D_O3_FillValue_att[1] = {-999} ;
stat = nc_put_att_float(Data_3D_grp, Data_3D_O3_id, "_FillValue", NC_FLOAT, 1, Data_3D_O3_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
stat = nc_put_att_text(Data_3D_grp, Data_3D_O3_id, "units", 9, "kg kg**-1");
    check_err(stat,__LINE__,__FILE__);
  }
  { // code
    static const float Data_3D_O3_code_att[1] = {203} ;
stat = nc_put_att_float(Data_3D_grp, Data_3D_O3_id, "code", NC_FLOAT, 1, Data_3D_O3_code_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // CIWC_name
stat = nc_put_att_text(Data_3D_grp, Data_3D_CIWC_id, "CIWC_name", 23, "Cloud Ice Water Content");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const float Data_3D_CIWC_FillValue_att[1] = {-999} ;
stat = nc_put_att_float(Data_3D_grp, Data_3D_CIWC_id, "_FillValue", NC_FLOAT, 1, Data_3D_CIWC_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
stat = nc_put_att_text(Data_3D_grp, Data_3D_CIWC_id, "units", 9, "kg kg**-1");
    check_err(stat,__LINE__,__FILE__);
  }
  { // code
    static const float Data_3D_CIWC_code_att[1] = {247} ;
stat = nc_put_att_float(Data_3D_grp, Data_3D_CIWC_id, "code", NC_FLOAT, 1, Data_3D_CIWC_code_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // CLWC_name
stat = nc_put_att_text(Data_3D_grp, Data_3D_CLWC_id, "CLWC_name", 26, "Cloud Liquid Water Content");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const float Data_3D_CLWC_FillValue_att[1] = {-999} ;
stat = nc_put_att_float(Data_3D_grp, Data_3D_CLWC_id, "_FillValue", NC_FLOAT, 1, Data_3D_CLWC_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
stat = nc_put_att_text(Data_3D_grp, Data_3D_CLWC_id, "units", 9, "kg kg**-1");
    check_err(stat,__LINE__,__FILE__);
  }
  { // code
    static const float Data_3D_CLWC_code_att[1] = {248} ;
stat = nc_put_att_float(Data_3D_grp, Data_3D_CLWC_id, "code", NC_FLOAT, 1, Data_3D_CLWC_code_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // U_name
stat = nc_put_att_text(Data_3D_grp, Data_3D_U_id, "U_name", 16, "U wind component");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const short Data_3D_U_FillValue_att[1] = {-999} ;
stat = nc_put_att_short(Data_3D_grp, Data_3D_U_id, "_FillValue", NC_SHORT, 1, Data_3D_U_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
stat = nc_put_att_text(Data_3D_grp, Data_3D_U_id, "units", 7, "m s**-1");
    check_err(stat,__LINE__,__FILE__);
  }
  { // code
    static const short Data_3D_U_code_att[1] = {131} ;
stat = nc_put_att_short(Data_3D_grp, Data_3D_U_id, "code", NC_SHORT, 1, Data_3D_U_code_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // V_name
stat = nc_put_att_text(Data_3D_grp, Data_3D_V_id, "V_name", 16, "V wind component");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const short Data_3D_V_FillValue_att[1] = {-999} ;
stat = nc_put_att_short(Data_3D_grp, Data_3D_V_id, "_FillValue", NC_SHORT, 1, Data_3D_V_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
stat = nc_put_att_text(Data_3D_grp, Data_3D_V_id, "units", 7, "m s**-1");
    check_err(stat,__LINE__,__FILE__);
  }
  { // code
    static const short Data_3D_V_code_att[1] = {132} ;
stat = nc_put_att_short(Data_3D_grp, Data_3D_V_id, "code", NC_SHORT, 1, Data_3D_V_code_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // SP_name
stat = nc_put_att_text(Data_2D_grp, Data_2D_SP_id, "SP_name", 16, "Surface Pressure");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const short Data_2D_SP_FillValue_att[1] = {-999} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_SP_id, "_FillValue", NC_SHORT, 1, Data_2D_SP_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
    stat = nc_put_att_text(Data_2D_grp, Data_2D_SP_id, "units", 2, "Pa");
    check_err(stat,__LINE__,__FILE__);
  }
  { // code
    static const short Data_2D_SP_code_att[1] = {134} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_SP_id, "code", NC_SHORT, 1, Data_2D_SP_code_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // T2M_name
stat = nc_put_att_text(Data_2D_grp, Data_2D_T2M_id, "T2M_name", 15, "2 m Temperature");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const short Data_2D_T2M_FillValue_att[1] = {-999} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_T2M_id, "_FillValue", NC_SHORT, 1, Data_2D_T2M_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
    stat = nc_put_att_text(Data_2D_grp, Data_2D_T2M_id, "units", 1, "K");
    check_err(stat,__LINE__,__FILE__);
  }
  { // code
    static const short Data_2D_T2M_code_att[1] = {167} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_T2M_id, "code", NC_SHORT, 1, Data_2D_T2M_code_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // TCW_name
stat = nc_put_att_text(Data_2D_grp, Data_2D_TCW_id, "TCW_name", 18, "Total Column Water");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const short Data_2D_TCW_FillValue_att[1] = {-999} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_TCW_id, "_FillValue", NC_SHORT, 1, Data_2D_TCW_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
stat = nc_put_att_text(Data_2D_grp, Data_2D_TCW_id, "units", 8, "kg m**-2");
    check_err(stat,__LINE__,__FILE__);
  }
  { // code
    static const short Data_2D_TCW_code_att[1] = {136} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_TCW_id, "code", NC_SHORT, 1, Data_2D_TCW_code_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // TCWV_name
stat = nc_put_att_text(Data_2D_grp, Data_2D_TCWV_id, "TCWV_name", 25, "Total Column Water Vapour");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const short Data_2D_TCWV_FillValue_att[1] = {-999} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_TCWV_id, "_FillValue", NC_SHORT, 1, Data_2D_TCWV_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
stat = nc_put_att_text(Data_2D_grp, Data_2D_TCWV_id, "units", 8, "kg m**-2");
    check_err(stat,__LINE__,__FILE__);
  }
  { // code
    static const short Data_2D_TCWV_code_att[1] = {137} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_TCWV_id, "code", NC_SHORT, 1, Data_2D_TCWV_code_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // TCO3_name
stat = nc_put_att_text(Data_2D_grp, Data_2D_TCO3_id, "TCO3_name", 18, "Total Column Ozone");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const short Data_2D_TCO3_FillValue_att[1] = {-999} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_TCO3_id, "_FillValue", NC_SHORT, 1, Data_2D_TCO3_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
stat = nc_put_att_text(Data_2D_grp, Data_2D_TCO3_id, "units", 8, "kg m**-2");
    check_err(stat,__LINE__,__FILE__);
  }
  { // code
    static const short Data_2D_TCO3_code_att[1] = {206} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_TCO3_id, "code", NC_SHORT, 1, Data_2D_TCO3_code_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // MSL_name
stat = nc_put_att_text(Data_2D_grp, Data_2D_MSL_id, "MSL_name", 23, "Mean Sea-Level Pressure");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const short Data_2D_MSL_FillValue_att[1] = {-999} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_MSL_id, "_FillValue", NC_SHORT, 1, Data_2D_MSL_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
stat = nc_put_att_text(Data_2D_grp, Data_2D_MSL_id, "units", 8, "kg m**-2");
    check_err(stat,__LINE__,__FILE__);
  }
  { // code
    static const short Data_2D_MSL_code_att[1] = {151} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_MSL_id, "code", NC_SHORT, 1, Data_2D_MSL_code_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // Z_name
stat = nc_put_att_text(Data_2D_grp, Data_2D_Z_id, "Z_name", 12, "Geopotential");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const short Data_2D_Z_FillValue_att[1] = {-999} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_Z_id, "_FillValue", NC_SHORT, 1, Data_2D_Z_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
stat = nc_put_att_text(Data_2D_grp, Data_2D_Z_id, "units", 10, "m**2 s**-2");
    check_err(stat,__LINE__,__FILE__);
  }
  { // code
    static const short Data_2D_Z_code_att[1] = {129} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_Z_id, "code", NC_SHORT, 1, Data_2D_Z_code_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // U10M_name
stat = nc_put_att_text(Data_2D_grp, Data_2D_U10M_id, "U10M_name", 26, "U Wind component 10 meters");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const short Data_2D_U10M_FillValue_att[1] = {-999} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_U10M_id, "_FillValue", NC_SHORT, 1, Data_2D_U10M_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
stat = nc_put_att_text(Data_2D_grp, Data_2D_U10M_id, "units", 7, "m s**-2");
    check_err(stat,__LINE__,__FILE__);
  }
  { // code
    static const short Data_2D_U10M_code_att[1] = {165} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_U10M_id, "code", NC_SHORT, 1, Data_2D_U10M_code_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // V10M_name
stat = nc_put_att_text(Data_2D_grp, Data_2D_V10M_id, "V10M_name", 26, "V Wind component 10 meters");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const short Data_2D_V10M_FillValue_att[1] = {-999} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_V10M_id, "_FillValue", NC_SHORT, 1, Data_2D_V10M_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
stat = nc_put_att_text(Data_2D_grp, Data_2D_V10M_id, "units", 7, "m s**-2");
    check_err(stat,__LINE__,__FILE__);
  }
  { // code
    static const short Data_2D_V10M_code_att[1] = {166} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_V10M_id, "code", NC_SHORT, 1, Data_2D_V10M_code_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // SKT_name
stat = nc_put_att_text(Data_2D_grp, Data_2D_SKT_id, "SKT_name", 16, "Skin Temperature");
    check_err(stat,__LINE__,__FILE__);
  }
  { // _FillValue
    static const short Data_2D_SKT_FillValue_att[1] = {-999} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_SKT_id, "_FillValue", NC_SHORT, 1, Data_2D_SKT_FillValue_att);
    check_err(stat,__LINE__,__FILE__);
  }
  { // units
    stat = nc_put_att_text(Data_2D_grp, Data_2D_SKT_id, "units", 1, "K");
    check_err(stat,__LINE__,__FILE__);
  }
  { // code
    static const short Data_2D_SKT_code_att[1] = {235} ;
stat = nc_put_att_short(Data_2D_grp, Data_2D_SKT_id, "code", NC_SHORT, 1, Data_2D_SKT_code_att);
    check_err(stat,__LINE__,__FILE__);
  }
  if(DEBUG) {
printf("DEBUG SETUPNC: NCID %d GLID %d 3DID %d 2DID %d\n",root_grp,Geolocation_grp,Data_3D_grp,Data_2D_grp);
  }
  // Save the group ids
  g->oncid = root_grp;
  g->gl_grp  = Geolocation_grp;
  g->d3d_grp = Data_3D_grp;
  g->d2d_grp = Data_2D_grp;

  // leave define mode
  stat = nc_enddef (root_grp);
  check_err(stat,__LINE__,__FILE__);
  return;
}


On 01/24/2011 12:56 PM, siavash ghiasvand wrote:
When I tried to compile netcdf-3.6.2 on an openSUSE 11.2, I got two errors which said: "*** was not declared in this scope"

The solution is simple just add the line below:
include "string.h"

To these files:
netcdf-3.6.2/examples/CXX/sfc_pres_temp_rd.cpp
netcdf-3.6.2/cxx/ncvalues.cpp


-----------------
Sincerely yours,
Siavash Ghiasvand



--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ Marston S. Johnston                e-mail: marston@xxxxxxxxxxx   ~
~ Doctoral Student                   Earth and Space Sciences      ~
~ Chalmers Univeristy of Technology  http://www.chalmers.se        ~
~ Gothenburg                         Tel. (46) 31 772 2235         ~
~ Sweden                             Skype ID marston.johnston     ~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


  • 2011 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: