1/* This is part of the netCDF package.
2   Copyright 2005 University Corporation for Atmospheric Research/Unidata
3   See COPYRIGHT file for conditions of use.
4
5   Test netcdf-4 variables.
6   $Id: tst_vars3.c,v 1.29 2010/04/30 18:21:52 ed Exp $
7*/
8
9#include <nc_tests.h>
10#include "err_macros.h"
11#include "netcdf.h"
12
13#define FILE_NAME "tst_vars3.nc"
14#define NDIMS1 1
15#define D_SMALL "small_dim"
16#define D_SMALL_LEN 16
17#define D_MEDIUM "medium_dim"
18#define D_MEDIUM_LEN 65546
19#define D_LARGE "large_dim"
20#define D_LARGE_LEN 1048586
21#define V_SMALL "small_var"
22#define V_MEDIUM "medium_var"
23#define V_LARGE "large_var"
24#define D_MAX_ONE_D 16384
25
26int
27main(int argc, char **argv)
28{
29
30   printf("\n*** Testing netcdf-4 variable functions, some more.\n");
31   printf("**** testing definition of coordinate variable after endef/redef...");
32   {
33#define NX 6
34#define NY 36
35#define ZD1_NAME "zD1"
36#define D2_NAME "D2"
37
38      int ncidx_dimidy_dimidvarid2;
39      char name_in[NC_MAX_NAME + 1];
40
41      /* Create file with two dims, two 1D vars. */
42      if (nc_create(FILE_NAMENC_NETCDF4, &ncid)) ERR;
43      if (nc_def_dim(ncidZD1_NAMENX, &x_dimid)) ERR;
44      if (nc_def_dim(ncidD2_NAMENY, &y_dimid)) ERR;
45      if (nc_enddef(ncid)) ERR;
46
47      /* Go back into define mode and add a coordinate variable. Now
48       * dimensions will be out of order. Thanks for confusing my poor
49       * library. Why can't you just make up your bloody mind? */
50      if (nc_redef(ncid)) ERR;
51      if (nc_def_var(ncidZD1_NAMENC_DOUBLENDIMS1, &x_dimid, &varid2)) ERR;
52      if (nc_close(ncid)) ERR;
53
54      /* Reopen file and check the name of the first dimension. Even
55       * though you've changed the order after doing a redef, you will
56       * still expect to get D1_NAME. I sure hope you appreciate how
57       * hard you are making life for a poor C library, just trying to
58       * do its best in a demanding world. Next time, why don't you
59       * try and be a little bit more considerate? Jerk. */
60      if (nc_open(FILE_NAMENC_NOWRITE, &ncid)) ERR;
61      if (nc_inq_dimname(ncid, 0, name_in)) ERR;
62      if (strcmp(name_inZD1_NAME)) ERR;
63      if (nc_inq_dimname(ncid, 1, name_in)) ERR;
64      if (strcmp(name_inD2_NAME)) ERR;
65      if (nc_close(ncid)) ERR;
66   }
67   SUMMARIZE_ERR;
68   printf("**** testing definition of coordinate variable with some data...");
69   {
70#define NX 6
71#define NY 36
72#define V1_NAME "V1"
73#define D1_NAME "D1"
74#define D2_NAME "D2"
75
76      int ncidx_dimidy_dimidvarid1varid2;
77      int nvarsndimsngattsunlimdimiddimids_in[2], natts;
78      size_t len_in;
79      char name_in[NC_MAX_NAME + 1];
80      nc_type xtype_in;
81#if 0
82      int xy;
83      double data_outx[NX], data_outy[NY];
84      int retval;
85#endif
86
87#if 0
88      /* Create some pretend data. */
89      for (x = 0; x < NXx++)
90       data_outx[x] = x;
91      for (y = 0; y < NYy++)
92       data_outy[y] = y;
93#endif
94
95      /* Create file with two dims, two 1D vars. */
96      if (nc_create(FILE_NAMENC_NETCDF4, &ncid)) ERR;
97      if (nc_def_dim(ncidD1_NAMENX, &x_dimid)) ERR;
98      if (nc_def_dim(ncidD2_NAMENY, &y_dimid)) ERR;
99      if (nc_def_var(ncidV1_NAMENC_DOUBLENDIMS1, &y_dimid, &varid1)) ERR;
100      if (nc_enddef(ncid)) ERR;
101      if (nc_redef(ncid)) ERR;
102      if (nc_def_var(ncidD1_NAMENC_DOUBLENDIMS1, &x_dimid, &varid2)) ERR;
103
104/*       if (nc_put_var_double(ncid, varid1, &data_outy[0])) ERR; */
105/*       if (nc_put_var_double(ncid, varid2, &data_outx[0])) ERR; */
106/*       if (nc_sync(ncid)) ERR; */
107
108      /* Check the file. */
109      if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR;
110      if (nvars != 2 || ndims != 2 || ngatts != 0 || unlimdimid != -1) ERR;
111
112      /* Check the dimensions. */
113      if (nc_inq_dimids(ncid, &ndimsdimids_in, 1)) ERR;
114      if (ndims != 2 || dimids_in[0] != x_dimid || dimids_in[1] != y_dimidERR;
115      if (nc_inq_dim(nciddimids_in[0], name_in, &len_in)) ERR;
116      if (strcmp(name_inD1_NAME) || len_in != NXERR;
117      if (nc_inq_dim(nciddimids_in[1], name_in, &len_in)) ERR;
118      if (strcmp(name_inD2_NAME) || len_in != NYERR;
119
120      /* Check the variables. */
121      if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndimsdimids_in, &natts)) ERR;
122      if (strcmp(name_inV1_NAME) || xtype_in != NC_DOUBLE || ndims != 1 ||
123   natts != 0 || dimids_in[0] != y_dimidERR;
124      if (nc_inq_var(ncid, 1, name_in, &xtype_in, &ndimsdimids_in, &natts)) ERR;
125      if (strcmp(name_inD1_NAME) || xtype_in != NC_DOUBLE || ndims != 1 ||
126   natts != 0 || dimids_in[0] != x_dimidERR;
127
128      /* Close the file. */
129      if (nc_close(ncid)) ERR;
130
131      /* Reopen and check the file. */
132      if (nc_open(FILE_NAMENC_NOWRITE, &ncid)) ERR;
133      if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR;
134      if (nvars != 2 || ndims != 2 || ngatts != 0 || unlimdimid != -1) ERR;
135
136      /* Check the dimensions. */
137      if (nc_inq_dimids(ncid, &ndimsdimids_in, 1)) ERR;
138      if (ndims != 2 || dimids_in[0] != x_dimid || dimids_in[1] != y_dimidERR;
139      if (nc_inq_dim(nciddimids_in[0], name_in, &len_in)) ERR;
140      if (strcmp(name_inD1_NAME) || len_in != NXERR;
141      if (nc_inq_dim(nciddimids_in[1], name_in, &len_in)) ERR;
142      if (strcmp(name_inD2_NAME) || len_in != NYERR;
143
144      /* Check the variables. */
145      if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndimsdimids_in, &natts)) ERR;
146      if (strcmp(name_inV1_NAME) || xtype_in != NC_DOUBLE || ndims != 1 ||
147   natts != 0 || dimids_in[0] != y_dimidERR;
148      if (nc_inq_var(ncid, 1, name_in, &xtype_in, &ndimsdimids_in, &natts)) ERR;
149      if (strcmp(name_inD1_NAME) || xtype_in != NC_DOUBLE || ndims != 1 ||
150   natts != 0 || dimids_in[0] != x_dimidERR;
151
152      if (nc_close(ncid)) ERR;
153
154   }
155   SUMMARIZE_ERR;
156   printf("**** testing endianness of compound type variable...");
157   {
158#define COMPOUND_NAME "Billy-Bob"
159#define BILLY "Billy"
160#define BOB "Bob"
161#define VAR_NAME1 "Buddy-Joe"
162#define NDIMS 2
163#define TEXT_LEN 15
164      int ncidnvars_invarids_in[1], typeidvarid;
165      int nvarsndimsngattsunlimdimid;
166      int ndims_innatts_indimids_in[NDIMS];
167      char var_name_in[NC_MAX_NAME + 1];
168      nc_type xtype_in;
169      struct billy_bob
170      {
171     int billy;
172     int bob;
173      };
174
175      /* Create a netcdf-4 file with scalar compound var. */
176      if (nc_create(FILE_NAMENC_NETCDF4, &ncid)) ERR;
177      if (nc_def_compound(ncid, sizeof(struct billy_bob), COMPOUND_NAME, &typeid)) ERR;
178      if (nc_insert_compound(ncidtypeidBILLYNC_COMPOUND_OFFSET(struct billy_bobbilly), NC_INT)) ERR;
179      if (nc_insert_compound(ncidtypeidBOBNC_COMPOUND_OFFSET(struct billy_bobbob), NC_INT)) ERR;
180      if (nc_def_var(ncidVAR_NAME1typeid, 0, NULL, &varid)) ERR;
181      if (nc_def_var_endian(ncidvaridNC_ENDIAN_BIG)) ERR;
182      if (nc_close(ncid)) ERR;
183
184      /* Open the file and check. */
185      if (nc_open(FILE_NAMENC_WRITE, &ncid)) ERR;
186      if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR;
187      if (nvars != 1 || ndims != 0 || ngatts != 0 || unlimdimid != -1) ERR;
188      if (nc_inq_varids(ncid, &nvars_invarids_in)) ERR;
189      if (nvars_in != 1 || varids_in[0] != 0) ERR;
190      if (nc_inq_var(ncid, 0, var_name_in, &xtype_in, &ndims_indimids_in, &natts_in)) ERR;
191      if (strcmp(var_name_inVAR_NAME1) || xtype_in <= NC_STRING || ndims_in != 0 ||
192   natts_in != 0) ERR;
193      if (nc_close(ncid)) ERR;
194   }
195   SUMMARIZE_ERR;
196   printf("**** testing that fixed vars with no filter end up being contiguous...");
197   {
198#define VAR_NAME2 "Yoman_of_the_Guard"
199#define NDIMS 2
200#define D0_NAME1 "Tower_warders_under_orders"
201#define D0_LEN 55
202#define D1_NAME1 "When_our_gallent_Norman_Foes"
203#define D1_LEN 99
204      int ncidvarid;
205      int nvarsndimsngattsunlimdimid;
206      int dimids[NDIMS], contig;
207      int ndims_innatts_indimids_in[NDIMS];
208      char var_name_in[NC_MAX_NAME + 1];
209      nc_type xtype_in;
210
211      /* Create a netcdf-4 file with 2D fixed var. */
212      if (nc_create(FILE_NAMENC_NETCDF4, &ncid)) ERR;
213      if (nc_def_dim(ncidD0_NAME1D0_LEN, &dimids[0])) ERR;
214      if (nc_def_dim(ncidD1_NAME1D1_LEN, &dimids[1])) ERR;
215      if (nc_def_var(ncidVAR_NAME2NC_UINT64NDIMSdimids, &varid)) ERR;
216      if (nc_def_var_endian(ncidvaridNC_ENDIAN_BIG)) ERR;
217      if (nc_close(ncid)) ERR;
218
219      /* Open the file and check. */
220      if (nc_open(FILE_NAMENC_WRITE, &ncid)) ERR;
221      if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR;
222      if (nvars != 1 || ndims != 2 || ngatts != 0 || unlimdimid != -1) ERR;
223      if (nc_inq_var(ncid, 0, var_name_in, &xtype_in, &ndims_indimids_in, &natts_in)) ERR;
224      if (strcmp(var_name_inVAR_NAME2) || xtype_in != NC_UINT64 || ndims_in != 2 ||
225   natts_in != 0) ERR;
226      if (nc_inq_var_chunking(ncidvarid, &contigNULL)) ERR;
227      if (!contigERR;
228      if (nc_close(ncid)) ERR;
229   }
230   SUMMARIZE_ERR;
231   printf("**** testing typeless access for classic model...");
232   {
233#define RANK_P 3
234#define LEN 4
235      int nciddimids[RANK_P], time_idp_id;
236      int ndimsdimids_in[RANK_P];
237
238      double data[1] = {3.14159};
239      size_t start[1] = {0}, count[1] = {1};
240      static float P_data[LEN];
241      size_t cor[RANK_P] = {0, 1, 0};
242      size_t edg[RANK_P] = {1, 1, LEN};
243      int i;
244
245      /* Create a 3D test file. */
246      if (nc_create(FILE_NAMENC_CLASSIC_MODEL|NC_NETCDF4, &ncid)) ERR;
247
248      /* define dimensions */
249      if (nc_def_dim(ncid, "Time", NC_UNLIMITED, &dimids[0])) ERR;
250      if (nc_def_dim(ncid, "X", 4, &dimids[2])) ERR;
251      if (nc_def_dim(ncid, "Y", 3, &dimids[1])) ERR;
252
253      /* define variables */
254      if (nc_def_var(ncid, "Time", NC_DOUBLE, 1, dimids, &time_id)) ERR;
255      if (nc_def_var(ncid, "P", NC_FLOATRANK_Pdimids, &p_id)) ERR;
256      if (nc_enddef(ncid)) ERR;
257
258      /* Add one record in coordinate variable. */
259      if (nc_put_vara(ncidtime_idstartcountdata)) ERR;
260
261      /* The other variable should show an increase in size, since it
262       * uses the unlimited dimension. */
263      if (nc_inq_var(ncid, 1, NULLNULL, &ndimsdimids_inNULL)) ERR;
264      if (ndims != 3 || dimids_in[0] != 0 || dimids_in[1] != 2 || dimids_in[2] != 1) ERR;
265
266      /* Read the record of non-existent data. */
267      if (nc_get_vara(ncid, 1, coredgP_data)) ERR;
268      for (i = 0; i < LENi++)
269  if (P_data[i] != NC_FILL_FLOATERR;
270
271      /* That's it! */
272      if (nc_close(ncid)) ERR;
273
274      /* Reopen the file and read the second slice. */
275      if (nc_open(FILE_NAMENC_NOWRITE, &ncid)) ERR;
276
277      if (nc_inq_var(ncid, 1, NULLNULL, &ndimsdimids_inNULL)) ERR;
278      if (ndims != 3 || dimids_in[0] != 0 || dimids_in[1] != 2 || dimids_in[2] != 1) ERR;
279      if (nc_get_vara(ncid, 1, coredgP_data)) ERR;
280      for (i = 0; i < LENi++)
281  if (P_data[i] != NC_FILL_FLOATERR;
282
283      if (nc_close(ncid)) ERR;
284   }
285   SUMMARIZE_ERR;
286   printf("**** testing large number of vars with unlimited dimension...");
287   {
288#define D0_NAME3 "dim0"
289#define NUM_VARS 1000
290
291      int ncidvarid;
292      int nvarsndimsngattsunlimdimid;
293      int dimid;
294      char var_name[NC_MAX_NAME + 1];
295      int v;
296
297      /* Create a netcdf-4 file with lots of 1D unlim dim vars. */
298      if (nc_create(FILE_NAMENC_NETCDF4, &ncid)) ERR;
299      if (nc_def_dim(ncidD0_NAME3NC_UNLIMITED, &dimid)) ERR;
300      for (v = 0; v < NUM_VARSv++)
301      {
302  sprintf(var_name, "var_%d", v);
303  if (nc_def_var(ncidvar_nameNC_INT, 1, &dimid, &varid)) ERR_RET;
304  if (nc_set_var_chunk_cache(ncidvarid, 0, 0, 0.75)) ERR_RET;
305      }
306      if (nc_close(ncid)) ERR;
307
308      /* Open the file and check. */
309      if (nc_open(FILE_NAMENC_WRITE, &ncid)) ERR;
310      if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR;
311      if (nvars != NUM_VARS || ndims != 1 || ngatts != 0 || unlimdimid != 0) ERR;
312      if (nc_close(ncid)) ERR;
313   }
314   SUMMARIZE_ERR;
315   printf("**** testing fix of bug in checking coordinate variables out of order...");
316   {
317#define GRP_NAME "group_G"
318#define TIME_DIMNAME "time"
319#define B_DIMNAME "bDim"
320#define C_DIMNAME "cDim"
321#define C_VARNAME "c"
322#define D_VARNAME "dd"
323#define E_VARNAME "ee"
324      int ncidgrpid;
325      int timeDimIdbDimIdcDimIddimidIn;
326      size_t timeDimSize = 2, bDimSize = 3, cDimSize = 1;
327      int cNdims = 1, eeNdims = 1, ddNdims = 1 ;
328      int cVarIdeeVarIdddVarId ;
329      size_t index = 0;
330      double s1Data = 10;
331      const double timeVar[] = {1.3, 4.6 };
332
333      if ( nc_create(FILE_NAMENC_NETCDF4, &ncid) ) ERR;
334      if ( nc_def_grp(ncidGRP_NAME, &grpid) ) ERR;
335      if ( nc_def_dim(ncidTIME_DIMNAMEtimeDimSize, &timeDimId) ) ERR;
336      if ( nc_def_dim(grpidB_DIMNAMEbDimSize, &bDimId) ) ERR;
337      if ( nc_def_dim(grpidC_DIMNAMEcDimSize, &cDimId) ) ERR;
338      if ( nc_def_var(grpidC_VARNAMENC_DOUBLEcNdims, &cDimId, &cVarId) ) ERR;
339      if ( nc_def_var(ncidE_VARNAMENC_DOUBLEeeNdims, &timeDimId, &eeVarId) ) ERR;
340      /* worked without this enddef, but in 4.2.1.1 and earlier, inserting this caused failure */
341      if ( nc_enddef(ncid)) ERR;
342      if ( nc_def_var(grpidD_VARNAMENC_DOUBLEddNdims, &timeDimId, &ddVarId)) ERR;
343      if ( nc_put_var1(grpidcVarId, &index, &s1Data) ) ERR;
344      if ( nc_put_var_double(grpidddVarIdtimeVar)) ERR;
345      if ( nc_close(ncid)) ERR;
346
347      /* Open the file and check. */
348      if (nc_open(FILE_NAMENC_WRITE, &ncid)) ERR;
349      if (nc_inq_grp_ncid(ncidGRP_NAME, &grpid)) ERR;
350      if (nc_inq_varid(grpidD_VARNAME, &ddVarId)) ERR;
351      if (nc_inq_vardimid(grpidddVarId, &dimidIn)) ERR;
352      if (nc_inq_dimid(ncidTIME_DIMNAME, &timeDimId)) ERR;
353      if (nc_inq_dimid(grpidC_DIMNAME, &cDimId)) ERR;
354      if (dimidIn == cDimId || cDimId == timeDimIdERR; /* bug in 4.2.1.1 and earlier */
355      if (nc_close(ncid)) ERR;
356   }
357   SUMMARIZE_ERR;
358   printf("**** testing fix of bug in non-coordinate scalar variable with same name as dimension ...");
359   {
360#define DIMNAME "abc"
361#define SCALAR_VARNAME DIMNAME
362      int ncid;
363      int dimidvarid;
364      int ndims = 1;
365      size_t dimsize = 3;
366      char varname_in[NC_MAX_NAME];
367
368      if ( nc_create(FILE_NAMENC_NETCDF4, &ncid) ) ERR;
369      if ( nc_def_dim(ncidDIMNAMEdimsize, &dimid) ) ERR;
370      if ( nc_def_var(ncidSCALAR_VARNAMENC_FLOATndims, &dimid, &varid) ) ERR;
371      if ( nc_close(ncid)) ERR;
372
373      /* Open the file and check varname. */
374      if (nc_open(FILE_NAMENC_NOWRITE, &ncid)) ERR;
375      if (nc_inq_varid(ncidSCALAR_VARNAME, &varid)) ERR;
376      if (nc_inq_varname(ncidvaridvarname_in)) ERR;
377      if (strcmp(varname_inSCALAR_VARNAME) != 0) ERR;
378      if (nc_close(ncid)) ERR;
379   }
380   SUMMARIZE_ERR;
381/* #ifdef USE_SZIP */
382/*    printf("**** testing that szip works..."); */
383/*    { */
384/* #define NDIMS1 1 */
385/* #define D_SMALL "small_dim" */
386/* #define D_SMALL_LEN1 100 */
387/* #define D_MEDIUM "medium_dim" */
388/* #define D_MEDIUM_LEN1 D_SMALL_LEN1 * 2 */
389/* #define D_LARGE "large_dim" */
390/* #define D_LARGE_LEN1 D_SMALL_LEN1 * 4 */
391/* #define V_SMALL "small_var" */
392/* #define V_MEDIUM "medium_var" */
393/* #define V_LARGE "large_var" */
394
395/*       int ncid; */
396/*       int nvars, ndims, ngatts, unlimdimid; */
397/*       int ndims_in, natts_in, dimids_in; */
398/*       int small_dimid, medium_dimid, large_dimid; */
399/*       int small_varid, medium_varid, large_varid; */
400/*       char var_name_in[NC_MAX_NAME + 1]; */
401/*       nc_type xtype_in; */
402/*       int options_mask_in, bits_per_pixel_in; */
403/*       long long small_data[D_SMALL_LEN1], small_data_in[D_SMALL_LEN1]; */
404/*       long long medium_data[D_MEDIUM_LEN1], medium_data_in[D_MEDIUM_LEN1]; */
405/*       long long large_data[D_LARGE_LEN1], large_data_in[D_LARGE_LEN1]; */
406/*       int i; */
407
408/*       for (i = 0; i < D_SMALL_LEN1; i++) */
409/*   small_data[i] = i; */
410/*       for (i = 0; i < D_MEDIUM_LEN1; i++) */
411/*   medium_data[i] = i; */
412/*       for (i = 0; i < D_LARGE_LEN1; i++) */
413/*   large_data[i] = i; */
414
415/*       /\* Create a netcdf-4 file with three dimensions. *\/ */
416/*       if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; */
417/*       if (nc_def_dim(ncid, D_SMALL, D_SMALL_LEN1, &small_dimid)) ERR; */
418/*       if (nc_def_dim(ncid, D_MEDIUM, D_MEDIUM_LEN1, &medium_dimid)) ERR; */
419/*       if (nc_def_dim(ncid, D_LARGE, D_LARGE_LEN1, &large_dimid)) ERR; */
420
421/*       /\* Add three vars. Turn on szip for two of them. *\/ */
422/*       if (nc_def_var(ncid, V_SMALL, NC_INT64, NDIMS1, &small_dimid, &small_varid)) ERR; */
423
424/*       if (nc_def_var(ncid, V_MEDIUM, NC_INT64, NDIMS1, &medium_dimid, &medium_varid)) ERR; */
425/*       if (nc_def_var_szip(ncid, medium_varid, NC_SZIP_EC_OPTION_MASK, 32)) ERR; */
426
427/*       if (nc_def_var(ncid, V_LARGE, NC_INT64, NDIMS1, &large_dimid, &large_varid)) ERR; */
428/*       if (nc_def_var_szip(ncid, large_varid, NC_SZIP_NN_OPTION_MASK, 16)) ERR; */
429
430/*       /\* Write data. *\/ */
431/*       if (nc_put_var_longlong(ncid, small_varid, small_data)) ERR; */
432/*       if (nc_put_var_longlong(ncid, medium_varid, medium_data)) ERR; */
433/*       if (nc_put_var_longlong(ncid, large_varid, large_data)) ERR; */
434
435/*       if (nc_close(ncid)) ERR; */
436
437/*       /\* Open the file and check. *\/ */
438/*       if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; */
439/*       if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR; */
440/*       if (nvars != 3 || ndims != 3 || ngatts != 0 || unlimdimid != -1) ERR; */
441/*       if (nc_inq_var(ncid, 0, var_name_in, &xtype_in, &ndims_in, &dimids_in, &natts_in)) ERR; */
442/*       if (strcmp(var_name_in, V_SMALL) || xtype_in != NC_INT64 || ndims_in != 1 || */
443/*    natts_in != 0) ERR; */
444
445/*       /\* Make sure we have the szip settings we expect. *\/ */
446/*       if (nc_inq_var_szip(ncid, small_varid, &options_mask_in, &bits_per_pixel_in)) ERR; */
447/*       if (options_mask_in != 0 || bits_per_pixel_in !=0) ERR; */
448/*       if (nc_inq_var_szip(ncid, medium_varid, &options_mask_in, &bits_per_pixel_in)) ERR; */
449/*       if (!(options_mask_in & NC_SZIP_EC_OPTION_MASK) || bits_per_pixel_in != 32) ERR; */
450/*       if (nc_inq_var_szip(ncid, large_varid, &options_mask_in, &bits_per_pixel_in)) ERR; */
451/*       if (!(options_mask_in & NC_SZIP_NN_OPTION_MASK) || bits_per_pixel_in != 16) ERR; */
452
453/*       if (nc_close(ncid)) ERR; */
454/*    } */
455/*    SUMMARIZE_ERR; */
456/* #endif */
457   FINAL_RESULTS;
458}


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