1/* This is part of the netCDF package.
2
3   Copyright 2005-2007, University Corporation for Atmospheric
4   Research/Unidata See COPYRIGHT file for conditions of use.
5
6   This program creates a test file with groups for ncdump to read.
7
8   $Id: tst_group_data.c,v 1.3 2008/08/07 00:07:52 ed Exp $
9*/
10
11#include <netcdf.h>
12#include <nc_tests.h>
13#include "err_macros.h"
14
15#define FILE_NAME "tst_group_data.nc"
16#define DIM_NAME "dim"
17#define DIM_LEN 4
18#define DIM_LEN1 1
19#define DIM_LEN2 2
20#define DIM_LEN3 3
21#define VAR_NAME "var"
22#define VAR_RANK 1
23#define VAR2_NAME "var2"
24#define VAR2_RANK 3
25#define ATT_NAME "units"
26#define ATT_VAL "m/s"
27#define ATT_VAL1 "km/hour"
28#define ATT_VAL2 "cm/sec"
29#define ATT_VAL3 "mm/msec"
30#define GATT_NAME "title"
31#define GATT_VAL "for testing groups"
32#define GATT_VAL1 "in first group"
33#define GATT_VAL2 "in second group"
34#define GATT_VAL3 "in third group"
35#define G1_NAME "g1"
36#define G2_NAME "g2"
37#define G3_NAME "g3"
38
39int
40main(int argc, char **argv) {
41    int nciddimiddimid1dimid2dimid3varidvar2id;
42    int var_dims[VAR_RANK], var2_dims[VAR2_RANK];
43    int g1idg2idg3id;
44    float vals[] = {1.0, 2.0, 3.0, 4.0};
45    float vals2[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
46      13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24};
47
48    printf("\n*** Testing groups.\n");
49    printf("*** creating nested group file %s...", FILE_NAME);
50
51    /* Create a file with nested groups. */
52    if (nc_create(FILE_NAMENC_CLOBBER | NC_NETCDF4, &ncid)) ERR;
53    /* At root level define dim, var, atts */
54    if (nc_def_dim(ncidDIM_NAMEDIM_LEN, &dimid)) ERR;
55    var_dims[0] = dimid;
56    if (nc_def_var(ncidVAR_NAMENC_FLOATVAR_RANKvar_dims, &varid)) ERR;
57    if (nc_put_att_text(ncidvaridATT_NAME, strlen(ATT_VAL), ATT_VAL)) ERR;
58    if (nc_put_att_text(ncidNC_GLOBALGATT_NAME, strlen(GATT_VAL),
59 GATT_VAL)) ERR;
60    if (nc_enddef(ncid)) ERR;
61    if (nc_put_var_float(ncidvaridvals)) ERR;
62
63    /* put dim, var, atts with same names in a group */
64    if (nc_def_grp(ncidG1_NAME, &g1id)) ERR;
65    if (nc_def_dim(g1idDIM_NAMEDIM_LEN1, &dimid1)) ERR;
66    var_dims[0] = dimid1;
67    if (nc_def_var(g1idVAR_NAMENC_FLOATVAR_RANKvar_dims, &varid)) ERR;
68    if (nc_put_att_text(g1idvaridATT_NAME, strlen(ATT_VAL1), ATT_VAL1)) ERR;
69    if (nc_put_att_text(g1idNC_GLOBALGATT_NAME, strlen(GATT_VAL1),
70 GATT_VAL1)) ERR;
71    if (nc_enddef(g1id)) ERR;
72    if (nc_put_var_float(g1idvaridvals)) ERR;
73
74    /* put dim, var, atts with same names in a second group */
75    if (nc_def_grp(ncidG2_NAME, &g2id)) ERR;
76    if (nc_def_dim(g2idDIM_NAMEDIM_LEN2, &dimid2)) ERR;
77    var_dims[0] = dimid2;
78    if (nc_def_var(g2idVAR_NAMENC_FLOATVAR_RANKvar_dims, &varid)) ERR;
79    if (nc_put_att_text(g2idvaridATT_NAME, strlen(ATT_VAL2), ATT_VAL2)) ERR;
80    if (nc_put_att_text(g2idNC_GLOBALGATT_NAME, strlen(GATT_VAL2),
81 GATT_VAL2)) ERR;
82    if (nc_enddef(g2id)) ERR;
83    if (nc_put_var_float(g2idvaridvals)) ERR;
84
85    /* put dim, var, atts with same names in a subgroup of second group */
86    if (nc_def_grp(g2idG3_NAME, &g3id)) ERR;
87    if (nc_def_dim(g3idDIM_NAMEDIM_LEN3, &dimid3)) ERR;
88    var_dims[0] = dimid3;
89    if (nc_def_var(g3idVAR_NAMENC_FLOATVAR_RANKvar_dims, &varid)) ERR;
90    if (nc_put_att_text(g3idvaridATT_NAME, strlen(ATT_VAL3), ATT_VAL3)) ERR;
91    if (nc_put_att_text(g3idNC_GLOBALGATT_NAME, strlen(GATT_VAL3),
92 GATT_VAL3)) ERR;
93    var2_dims[0] = dimid;
94    var2_dims[1] = dimid2;
95    var2_dims[2] = dimid3;
96    if (nc_def_var(g3idVAR2_NAMENC_FLOATVAR2_RANKvar2_dims, &var2id)) ERR;
97    if (nc_enddef(g3id)) ERR;
98    if (nc_put_var_float(g3idvaridvals)) ERR;
99    if (nc_put_var_float(g3idvar2idvals2)) ERR;
100
101    if (nc_close(ncid)) ERR;
102
103    SUMMARIZE_ERR;
104    FINAL_RESULTS;
105}


HyperKWIC - Version 7.20DA executed at 11:37 on 27 Oct 2017 | Polyhedron Solutions - INTERNAL USE | COMMERCIAL (Any O/S) SN 4AKIed