1 /******************************************************************************
2 *
3 *  NSSDC/CDF				CDF Header file for C/C++ applications.
4 *
5 *  Version 3.5d, 14-Dec-97, Hughes STX.
6 *
7 *  Modification history:
8 *
9 *   V1.0  22-Jan-91, R Kulkarni	Original version (for CDF V2.0).
10 *		     J Love
11 *   V2.0   3-Jun-91, J Love     Modified for CDF V2.1 enhancements,
12 *				namely the INTERNAL interface and the
13 *				MULTI/SINGLE file option.  Added
14 *				macros to replace C i/f functions.
15 *   V2.1  20-Jun-91, J Love	Added function prototypes.
16 *   V2.2   8-Aug-91, J Love	Increment for CDF V2.1.2.  Use
17 *				'CDFlib'.  Renamed a few items.
18 *   V3.0  19-May-92, J Love	IBM PC & HP-UX port.  CDF V2.2.
19 *   V3.1  23-Sep-92, J Love	CDF V2.3 (shareable/NeXT/zVar).
20 *   V3.1a  5-Oct-92, J Love	CDF V2.3.0a (NeXT/encoding).
21 *   V3.1b  6-Oct-92, J Love	CDF V2.3.0b (CDFcompare).
22 *   V3.1c 27-Oct-92, J Love	CDF V2.3.0c (pad values).
23 *   V3.2  12-Jan-94, J Love	CDF V2.4.
24 *   V3.2a  4-Feb-94, J Love	DEC Alpha/OpenVMS port.
25 *   V3.2b 22-Feb-94, J Love	Spelling lesson.
26 *   V3.3   8-Dec-94, J Love	CDF V2.5.
27 *   V3.3a  3-Mar-95, J Love	Solaris 2.3 IDL i/f.
28 *   V3.4  28-Mar-95, J Love	POSIX.
29 *   V3.4a  8-May-95, J Love	ILLEGAL_EPOCH_VALUE.
30 *   V3.4b  9-Jun-95, J Love	EPOCH custom format.
31 *   V3.4c 20-Jul-95, J Love	CDFexport-related changes.
32 *   V3.5  12-Sep-96, J Love	CDF V2.6.
33 *   V3.5a 21-Feb-97, J Love	Removed RICE.
34 *   V3.5b  9-Mar-97, J Love	Windows NT for MS Visual C++ 4.0 on an IBM PC.
35 *   V3.5c  2-Sep-97, J Love	`__STDC__' not defined for all AIX compilers.
36 *   V3.5d 14-Dec-97, J Love	Added ALPHAVMSi encoding.
37 *   V3.6  08-Apr-04, M Liu      Added  new data type CDF_EPOCH16 and some
38 *                               epoch functions related to the new type.
39 *   V3.7  28-Apr-09, M Liu      Modified MAC_ENCODING/DECODEING to PPC_ENCODING
40 *                               /DECODING as Mac and Linux can run on PPC box.
41 ******************************************************************************/
42 
43 #if !defined(CDFh_INCLUDEd__)
44 #define CDFh_INCLUDEd__
45 
46 /******************************************************************************
47 * CDF defined types
48 ******************************************************************************/
49 
50 typedef void *CDFid;
51 typedef long CDFstatus;
52 
53 /******************************************************************************
54 * Limits
55 ******************************************************************************/
56 
57 #define CDF_MIN_DIMS    0               /* Min number of dimensions a CDF
58 					   variable may have */
59 #define CDF_MAX_DIMS    10              /* Max number of dimensions a CDF
60 					   variable may have */
61 
62 /******************************************************************************
63 * Lengths
64 ******************************************************************************/
65 
66 #define CDF_VAR_NAME_LEN        64
67 #define CDF_ATTR_NAME_LEN       64
68 
69 #define CDF_VAR_NAME_LEN256     256
70 #define CDF_ATTR_NAME_LEN256    256
71 
72 #define CDF_COPYRIGHT_LEN       256
73 #define CDF_STATUSTEXT_LEN      120
74 #define CDF_PATHNAME_LEN        512
75 
76 #define EPOCH_STRING_LEN	24
77 #define EPOCH1_STRING_LEN	16
78 #define EPOCH2_STRING_LEN	14
79 #define EPOCH3_STRING_LEN	24
80 
81 #define EPOCH16_STRING_LEN      36
82 #define EPOCH16_1_STRING_LEN    24
83 #define EPOCH16_2_STRING_LEN    14
84 #define EPOCH16_3_STRING_LEN    36
85 
86 #define EPOCHx_STRING_MAX	50
87 #define EPOCHx_FORMAT_MAX	68
88 
89 /******************************************************************************
90 * Data types.
91 ******************************************************************************/
92 
93 #define CDF_INT1		1L
94 #define CDF_INT2		2L
95 #define CDF_INT4		4L
96 #define CDF_UINT1		11L
97 #define CDF_UINT2		12L
98 #define CDF_UINT4		14L
99 #define CDF_REAL4		21L
100 #define CDF_REAL8		22L
101 #define CDF_EPOCH		31L	/* Standard style. */
102 #define CDF_EPOCH16		32L	/* Extended style. */
103 #define CDF_BYTE		41L     /* same as CDF_INT1 (signed) */
104 #define CDF_FLOAT		44L     /* same as CDF_REAL4 */
105 #define CDF_DOUBLE		45L     /* same as CDF_REAL8 */
106 #define CDF_CHAR		51L     /* a "string" data type */
107 #define CDF_UCHAR		52L     /* a "string" data type */
108 
109 /******************************************************************************
110 * Encoding (for data only, everything else is network encoding).
111 ******************************************************************************/
112 
113 #define NETWORK_ENCODING        1L
114 #define SUN_ENCODING            2L
115 #define VAX_ENCODING            3L
116 #define DECSTATION_ENCODING     4L
117 #define SGi_ENCODING            5L
118 #define IBMPC_ENCODING          6L
119 #define IBMRS_ENCODING          7L
120 #define HOST_ENCODING           8L
121 #define PPC_ENCODING            9L
122 #define HP_ENCODING             11L
123 #define NeXT_ENCODING           12L
124 #define ALPHAOSF1_ENCODING      13L
125 #define ALPHAVMSd_ENCODING      14L
126 #define ALPHAVMSg_ENCODING      15L
127 #define ALPHAVMSi_ENCODING	16L
128 
129 /******************************************************************************
130 * Decodings.
131 ******************************************************************************/
132 
133 #define NETWORK_DECODING        NETWORK_ENCODING
134 #define SUN_DECODING            SUN_ENCODING
135 #define VAX_DECODING            VAX_ENCODING
136 #define DECSTATION_DECODING     DECSTATION_ENCODING
137 #define SGi_DECODING            SGi_ENCODING
138 #define IBMPC_DECODING          IBMPC_ENCODING
139 #define IBMRS_DECODING          IBMRS_ENCODING
140 #define HOST_DECODING           HOST_ENCODING
141 #define PPC_DECODING            PPC_ENCODING
142 #define MAC_ENCODING            PPC_ENCODING
143 #define MAC_DECODING            PPC_ENCODING
144 #define HP_DECODING             HP_ENCODING
145 #define NeXT_DECODING           NeXT_ENCODING
146 #define ALPHAOSF1_DECODING      ALPHAOSF1_ENCODING
147 #define ALPHAVMSd_DECODING      ALPHAVMSd_ENCODING
148 #define ALPHAVMSg_DECODING      ALPHAVMSg_ENCODING
149 #define ALPHAVMSi_DECODING	ALPHAVMSi_ENCODING
150 
151 /******************************************************************************
152 * Variance flags
153 ******************************************************************************/
154 
155 #define VARY   (-1L)        /* TRUE record or dimension variance flag */
156 #define NOVARY 0L           /* FALSE record or dimension variance flag */
157 
158 /******************************************************************************
159 * Majorities
160 ******************************************************************************/
161 
162 #define ROW_MAJOR       1L
163 #define COLUMN_MAJOR    2L
164 
165 /******************************************************************************
166 * Formats.
167 ******************************************************************************/
168 
169 #define SINGLE_FILE     1L
170 #define MULTI_FILE      2L
171 
172 /******************************************************************************
173 * Checksum
174 ******************************************************************************/
175 
176 #define NO_CHECKSUM     0L
177 #define MD5_CHECKSUM    1L
178 #define OTHER_CHECKSUM  2L
179 
180 /******************************************************************************
181 * Attribute scopes
182 ******************************************************************************/
183 
184 #define GLOBAL_SCOPE            1L
185 #define VARIABLE_SCOPE          2L
186 
187 /******************************************************************************
188 * Readonly modes.
189 ******************************************************************************/
190 
191 #define READONLYon              (-1L)
192 #define READONLYoff             0L
193 
194 /******************************************************************************
195 * Validate data modes.
196 ******************************************************************************/
197 
198 #define VALIDATEFILEon          (-1L)
199 #define VALIDATEFILEoff         0L
200 
201 /******************************************************************************
202 * zModes.
203 ******************************************************************************/
204 
205 #define zMODEoff                0L
206 #define zMODEon1                1L
207 #define zMODEon2                2L
208 
209 /******************************************************************************
210 * Negative to positive floating point zero modes.
211 ******************************************************************************/
212 
213 #define NEGtoPOSfp0on           (-1L)
214 #define NEGtoPOSfp0off          0L
215 
216 /******************************************************************************
217 * Backward file mode.
218 ******************************************************************************/
219 
220 #define BACKWARDFILEon          1
221 #define BACKWARDFILEoff         0
222 
223 /******************************************************************************
224 * Compression/sparseness constants.
225 ******************************************************************************/
226 
227 #define CDF_MAX_PARMS			5
228 #define NO_COMPRESSION			0L
229 #define RLE_COMPRESSION			1L
230 #define HUFF_COMPRESSION		2L
231 #define AHUFF_COMPRESSION		3L
232 /**************************************************
233 * Compression `4' used to be RICE.  Do not reuse! *
234 **************************************************/
235 #define GZIP_COMPRESSION		5L
236 /* #define ZLIB_COMPRESSION                6L */
237 
238 #define RLE_OF_ZEROs			0L
239 #define OPTIMAL_ENCODING_TREES		0L
240 /* #define ZLIB_OF_ZEROs                   0L */
241 #define NO_SPARSEARRAYS			0L
242 #define NO_SPARSERECORDS		0L
243 #define PAD_SPARSERECORDS		1L
244 #define PREV_SPARSERECORDS		2L
245 
246 /*****************************************************************************
247 * Invalid/reserved constants.
248 *****************************************************************************/
249 
250 #define RESERVED_CDFID      ((CDFid) NULL)      /* Indicates that a CDF hasn't
251 						   been selected yet. */
252 #define RESERVED_CDFSTATUS  ((CDFstatus) (-1))  /* Indicates that a CDFstatus
253 						   hasn't been selected yet. */
254 
255 #define ILLEGAL_EPOCH_VALUE	(-1.0)
256 
257 /******************************************************************************
258 * Status codes (CDFstatus)
259 *  - informatory codes are greater than CDF_OK
260 ******************************************************************************/
261 
262 #define VIRTUAL_RECORD_DATA             ((CDFstatus) 1001)
263 #define DID_NOT_COMPRESS		((CDFstatus) 1002)
264 #define VAR_ALREADY_CLOSED              ((CDFstatus) 1003)
265 #define SINGLE_FILE_FORMAT              ((CDFstatus) 1004)
266 #define NO_PADVALUE_SPECIFIED           ((CDFstatus) 1005)
267 #define NO_VARS_IN_CDF                  ((CDFstatus) 1006)
268 #define MULTI_FILE_FORMAT		((CDFstatus) 1007)
269 #define SOME_ALREADY_ALLOCATED		((CDFstatus) 1008)
270 #define PRECEEDING_RECORDS_ALLOCATED	((CDFstatus) 1009)
271 
272 #define CDF_OK                          ((CDFstatus) 0)
273 
274 #define ATTR_NAME_TRUNC                 ((CDFstatus) (-1001))
275 #define CDF_NAME_TRUNC                  ((CDFstatus) (-1002))
276 #define VAR_NAME_TRUNC                  ((CDFstatus) (-1003))
277 #define NEGATIVE_FP_ZERO		((CDFstatus) (-1004))
278 					/* -1005 unused. */
279 #define FORCED_PARAMETER		((CDFstatus) (-1006))
280 #define NA_FOR_VARIABLE			((CDFstatus) (-1007))
281 
282 #define CDF_WARN                        ((CDFstatus) (-2000))
283 
284 #define ATTR_EXISTS                     ((CDFstatus) (-2001))
285 #define BAD_CDF_ID                      ((CDFstatus) (-2002))
286 #define BAD_DATA_TYPE                   ((CDFstatus) (-2003))
287 #define BAD_DIM_SIZE                    ((CDFstatus) (-2004))
288 #define BAD_DIM_INDEX                   ((CDFstatus) (-2005))
289 #define BAD_ENCODING                    ((CDFstatus) (-2006))
290 #define BAD_MAJORITY                    ((CDFstatus) (-2007))
291 #define BAD_NUM_DIMS                    ((CDFstatus) (-2008))
292 #define BAD_REC_NUM                     ((CDFstatus) (-2009))
293 #define BAD_SCOPE                       ((CDFstatus) (-2010))
294 #define BAD_NUM_ELEMS                   ((CDFstatus) (-2011))
295 #define CDF_OPEN_ERROR                  ((CDFstatus) (-2012))
296 #define CDF_EXISTS                      ((CDFstatus) (-2013))
297 #define BAD_FORMAT                      ((CDFstatus) (-2014))
298 #define BAD_ALLOCATE_RECS		((CDFstatus) (-2015))
299 #define BAD_CDF_EXTENSION		((CDFstatus) (-2016))
300 #define NO_SUCH_ATTR                    ((CDFstatus) (-2017))
301 #define NO_SUCH_ENTRY                   ((CDFstatus) (-2018))
302 #define NO_SUCH_VAR                     ((CDFstatus) (-2019))
303 #define VAR_READ_ERROR                  ((CDFstatus) (-2020))
304 #define VAR_WRITE_ERROR                 ((CDFstatus) (-2021))
305 #define BAD_ARGUMENT                    ((CDFstatus) (-2022))
306 #define IBM_PC_OVERFLOW                 ((CDFstatus) (-2023))
307 #define TOO_MANY_VARS                   ((CDFstatus) (-2024))
308 #define VAR_EXISTS                      ((CDFstatus) (-2025))
309 #define BAD_MALLOC                      ((CDFstatus) (-2026))
310 #define NOT_A_CDF                       ((CDFstatus) (-2027))
311 #define CORRUPTED_V2_CDF                ((CDFstatus) (-2028))
312 #define VAR_OPEN_ERROR                  ((CDFstatus) (-2029))
313 #define BAD_INITIAL_RECS                ((CDFstatus) (-2030))
314 #define BAD_BLOCKING_FACTOR             ((CDFstatus) (-2031))
315 #define END_OF_VAR                      ((CDFstatus) (-2032))
316 					/* -2033 unused. */
317 #define BAD_CDFSTATUS                   ((CDFstatus) (-2034))
318 #define CDF_INTERNAL_ERROR		((CDFstatus) (-2035))
319 #define BAD_NUM_VARS			((CDFstatus) (-2036))
320 #define BAD_REC_COUNT                   ((CDFstatus) (-2037))
321 #define BAD_REC_INTERVAL                ((CDFstatus) (-2038))
322 #define BAD_DIM_COUNT                   ((CDFstatus) (-2039))
323 #define BAD_DIM_INTERVAL                ((CDFstatus) (-2040))
324 #define BAD_VAR_NUM                     ((CDFstatus) (-2041))
325 #define BAD_ATTR_NUM                    ((CDFstatus) (-2042))
326 #define BAD_ENTRY_NUM                   ((CDFstatus) (-2043))
327 #define BAD_ATTR_NAME                   ((CDFstatus) (-2044))
328 #define BAD_VAR_NAME                    ((CDFstatus) (-2045))
329 #define NO_ATTR_SELECTED                ((CDFstatus) (-2046))
330 #define NO_ENTRY_SELECTED               ((CDFstatus) (-2047))
331 #define NO_VAR_SELECTED                 ((CDFstatus) (-2048))
332 #define BAD_CDF_NAME                    ((CDFstatus) (-2049))
333 					/* -2050 unused. */
334 #define CANNOT_CHANGE                   ((CDFstatus) (-2051))
335 #define NO_STATUS_SELECTED              ((CDFstatus) (-2052))
336 #define NO_CDF_SELECTED                 ((CDFstatus) (-2053))
337 #define READ_ONLY_DISTRIBUTION          ((CDFstatus) (-2054))
338 #define CDF_CLOSE_ERROR                 ((CDFstatus) (-2055))
339 #define VAR_CLOSE_ERROR                 ((CDFstatus) (-2056))
340 					/* -2057 unused. */
341 #define BAD_FNC_OR_ITEM                 ((CDFstatus) (-2058))
342 					/* -2059 unused. */
343 #define ILLEGAL_ON_V1_CDF               ((CDFstatus) (-2060))
344 					/* -2061 unused. */
345 					/* -2062 unused. */
346 #define BAD_CACHE_SIZE                  ((CDFstatus) (-2063))
347 					/* -2064 unused. */
348 					/* -2065 unused. */
349 #define CDF_CREATE_ERROR                ((CDFstatus) (-2066))
350 #define NO_SUCH_CDF                     ((CDFstatus) (-2067))
351 #define VAR_CREATE_ERROR                ((CDFstatus) (-2068))
352 					/* -2069 unused. */
353 #define READ_ONLY_MODE                  ((CDFstatus) (-2070))
354 #define ILLEGAL_IN_zMODE                ((CDFstatus) (-2071))
355 #define BAD_zMODE                       ((CDFstatus) (-2072))
356 #define BAD_READONLY_MODE               ((CDFstatus) (-2073))
357 #define CDF_READ_ERROR                  ((CDFstatus) (-2074))
358 #define CDF_WRITE_ERROR                 ((CDFstatus) (-2075))
359 #define ILLEGAL_FOR_SCOPE               ((CDFstatus) (-2076))
360 #define NO_MORE_ACCESS                  ((CDFstatus) (-2077))
361 					/* -2078 unused. */
362 #define BAD_DECODING		        ((CDFstatus) (-2079))
363 					/* -2080 unused. */
364 #define BAD_NEGtoPOSfp0_MODE		((CDFstatus) (-2081))
365 #define UNSUPPORTED_OPERATION		((CDFstatus) (-2082))
366 #define CDF_SAVE_ERROR			((CDFstatus) (-2083))
367 #define VAR_SAVE_ERROR			((CDFstatus) (-2084))
368 					/* -2085 unused. */
369 #define NO_WRITE_ACCESS                 ((CDFstatus) (-2086))
370 #define NO_DELETE_ACCESS                ((CDFstatus) (-2087))
371 #define CDF_DELETE_ERROR		((CDFstatus) (-2088))
372 #define VAR_DELETE_ERROR		((CDFstatus) (-2089))
373 #define UNKNOWN_COMPRESSION		((CDFstatus) (-2090))
374 #define CANNOT_COMPRESS			((CDFstatus) (-2091))
375 #define DECOMPRESSION_ERROR		((CDFstatus) (-2092))
376 #define COMPRESSION_ERROR		((CDFstatus) (-2093))
377 					/* -2094 unused. */
378 					/* -2095 unused. */
379 #define EMPTY_COMPRESSED_CDF		((CDFstatus) (-2096))
380 #define BAD_COMPRESSION_PARM		((CDFstatus) (-2097))
381 #define UNKNOWN_SPARSENESS		((CDFstatus) (-2098))
382 #define CANNOT_SPARSERECORDS		((CDFstatus) (-2099))
383 #define CANNOT_SPARSEARRAYS		((CDFstatus) (-2100))
384 #define TOO_MANY_PARMS			((CDFstatus) (-2101))
385 #define NO_SUCH_RECORD			((CDFstatus) (-2102))
386 #define CANNOT_ALLOCATE_RECORDS		((CDFstatus) (-2103))
387 					/* -2104 unused. */
388 					/* -2105 unused. */
389 #define SCRATCH_DELETE_ERROR		((CDFstatus) (-2106))
390 #define SCRATCH_CREATE_ERROR		((CDFstatus) (-2107))
391 #define SCRATCH_READ_ERROR		((CDFstatus) (-2108))
392 #define SCRATCH_WRITE_ERROR		((CDFstatus) (-2109))
393 #define BAD_SPARSEARRAYS_PARM		((CDFstatus) (-2110))
394 #define BAD_SCRATCH_DIR			((CDFstatus) (-2111))
395 #define NOT_A_CDF_OR_NOT_SUPPORTED      ((CDFstatus) (-2113))
396 #define CORRUPTED_V3_CDF                ((CDFstatus) (-2223))
397 #define ILLEGAL_EPOCH_FIELD             ((CDFstatus) (-2224))
398 #define BAD_CHECKSUM                    ((CDFstatus) (-2225))
399 #define CHECKSUM_ERROR                  ((CDFstatus) (-2226))
400 #define CHECKSUM_NOT_ALLOWED            ((CDFstatus) (-2227))
401 /* #define ZLIB_DECOMPRESSION_ERROR        ((CDFstatus) (-2228)) */
402 
403 /******************************************************************************
404 * Functions (for INTERNAL interface).
405 * NOTE: These values must be different from those of the items.
406 ******************************************************************************/
407 
408 #define CREATE_			1001L
409 #define OPEN_			1002L
410 #define DELETE_			1003L
411 #define CLOSE_			1004L
412 #define SELECT_			1005L
413 #define CONFIRM_		1006L
414 #define GET_			1007L
415 #define PUT_			1008L
416 
417 #define SAVE_                   1009L
418 #define BACKWARD_               1010L
419 #define GETCDFFILEBACKWARD_     1011L
420 #define CHECKSUM_               1012L
421 #define GETCDFCHECKSUM_         1013L
422 #define VALIDATE_               1014L
423 #define GETCDFVALIDATE_         1015L
424 
425 #define NULL_			1000L
426 
427 /******************************************************************************
428 * Items on which functions are performed (for INTERNAL interface).
429 * NOTE: These values must be different from those of the functions.
430 ******************************************************************************/
431 
432 #define CDF_                    1L
433 #define CDF_NAME_               2L
434 #define CDF_ENCODING_           3L
435 #define CDF_DECODING_		4L
436 #define CDF_MAJORITY_           5L
437 #define CDF_FORMAT_             6L
438 #define CDF_COPYRIGHT_          7L
439 #define CDF_NUMrVARS_           8L
440 #define CDF_NUMzVARS_           9L
441 #define CDF_NUMATTRS_           10L
442 #define CDF_NUMgATTRS_          11L
443 #define CDF_NUMvATTRS_          12L
444 #define CDF_VERSION_            13L
445 #define CDF_RELEASE_            14L
446 #define CDF_INCREMENT_          15L
447 #define CDF_STATUS_             16L
448 #define CDF_READONLY_MODE_      17L
449 #define CDF_zMODE_              18L
450 #define CDF_NEGtoPOSfp0_MODE_	19L
451 #define LIB_COPYRIGHT_          20L
452 #define LIB_VERSION_            21L
453 #define LIB_RELEASE_            22L
454 #define LIB_INCREMENT_          23L
455 #define LIB_subINCREMENT_       24L
456 #define rVARs_NUMDIMS_          25L
457 #define rVARs_DIMSIZES_         26L
458 #define rVARs_MAXREC_           27L
459 #define rVARs_RECDATA_		28L
460 #define rVARs_RECNUMBER_        29L
461 #define rVARs_RECCOUNT_         30L
462 #define rVARs_RECINTERVAL_      31L
463 #define rVARs_DIMINDICES_       32L
464 #define rVARs_DIMCOUNTS_        33L
465 #define rVARs_DIMINTERVALS_     34L
466 #define rVAR_                   35L
467 #define rVAR_NAME_              36L
468 #define rVAR_DATATYPE_          37L
469 #define rVAR_NUMELEMS_          38L
470 #define rVAR_RECVARY_           39L
471 #define rVAR_DIMVARYS_          40L
472 #define rVAR_NUMBER_            41L
473 #define rVAR_DATA_              42L
474 #define rVAR_HYPERDATA_         43L
475 #define rVAR_SEQDATA_           44L
476 #define rVAR_SEQPOS_            45L
477 #define rVAR_MAXREC_            46L
478 #define rVAR_MAXallocREC_       47L
479 #define rVAR_DATASPEC_          48L
480 #define rVAR_PADVALUE_          49L
481 #define rVAR_INITIALRECS_       50L
482 #define rVAR_BLOCKINGFACTOR_    51L
483 #define rVAR_nINDEXRECORDS_	52L
484 #define rVAR_nINDEXENTRIES_	53L
485 #define rVAR_EXISTENCE_		54L
486 #define zVARs_MAXREC_		55L
487 #define zVARs_RECDATA_		56L
488 #define zVAR_                   57L
489 #define zVAR_NAME_              58L
490 #define zVAR_DATATYPE_          59L
491 #define zVAR_NUMELEMS_          60L
492 #define zVAR_NUMDIMS_           61L
493 #define zVAR_DIMSIZES_          62L
494 #define zVAR_RECVARY_           63L
495 #define zVAR_DIMVARYS_          64L
496 #define zVAR_NUMBER_            65L
497 #define zVAR_DATA_              66L
498 #define zVAR_HYPERDATA_         67L
499 #define zVAR_SEQDATA_           68L
500 #define zVAR_SEQPOS_            69L
501 #define zVAR_MAXREC_            70L
502 #define zVAR_MAXallocREC_       71L
503 #define zVAR_DATASPEC_          72L
504 #define zVAR_PADVALUE_          73L
505 #define zVAR_INITIALRECS_       74L
506 #define zVAR_BLOCKINGFACTOR_    75L
507 #define zVAR_nINDEXRECORDS_	76L
508 #define zVAR_nINDEXENTRIES_	77L
509 #define zVAR_EXISTENCE_		78L
510 #define zVAR_RECNUMBER_         79L
511 #define zVAR_RECCOUNT_          80L
512 #define zVAR_RECINTERVAL_       81L
513 #define zVAR_DIMINDICES_        82L
514 #define zVAR_DIMCOUNTS_         83L
515 #define zVAR_DIMINTERVALS_      84L
516 #define ATTR_                   85L
517 #define ATTR_SCOPE_             86L
518 #define ATTR_NAME_              87L
519 #define ATTR_NUMBER_            88L
520 #define ATTR_MAXgENTRY_         89L
521 #define ATTR_NUMgENTRIES_       90L
522 #define ATTR_MAXrENTRY_         91L
523 #define ATTR_NUMrENTRIES_       92L
524 #define ATTR_MAXzENTRY_         93L
525 #define ATTR_NUMzENTRIES_       94L
526 #define ATTR_EXISTENCE_		95L
527 #define gENTRY_                 96L
528 #define gENTRY_EXISTENCE_       97L
529 #define gENTRY_DATATYPE_        98L
530 #define gENTRY_NUMELEMS_        99L
531 #define gENTRY_DATASPEC_        100L
532 #define gENTRY_DATA_            101L
533 #define rENTRY_                 102L
534 #define rENTRY_NAME_		103L
535 #define rENTRY_EXISTENCE_       104L
536 #define rENTRY_DATATYPE_        105L
537 #define rENTRY_NUMELEMS_        106L
538 #define rENTRY_DATASPEC_        107L
539 #define rENTRY_DATA_            108L
540 #define zENTRY_                 109L
541 #define zENTRY_NAME_		110L
542 #define zENTRY_EXISTENCE_       111L
543 #define zENTRY_DATATYPE_        112L
544 #define zENTRY_NUMELEMS_        113L
545 #define zENTRY_DATASPEC_        114L
546 #define zENTRY_DATA_            115L
547 #define STATUS_TEXT_            116L
548 #define CDF_CACHESIZE_		117L
549 #define rVARs_CACHESIZE_	118L
550 #define zVARs_CACHESIZE_	119L
551 #define rVAR_CACHESIZE_		120L
552 #define zVAR_CACHESIZE_		121L
553 #define zVARs_RECNUMBER_	122L
554 #define rVAR_ALLOCATERECS_	123L
555 #define zVAR_ALLOCATERECS_	124L
556 #define DATATYPE_SIZE_		125L
557 #define CURgENTRY_EXISTENCE_	126L
558 #define CURrENTRY_EXISTENCE_	127L
559 #define CURzENTRY_EXISTENCE_	128L
560 #define CDF_INFO_		129L
561 #define CDF_COMPRESSION_	130L
562 #define zVAR_COMPRESSION_	131L
563 #define zVAR_SPARSERECORDS_	132L
564 #define zVAR_SPARSEARRAYS_	133L
565 #define zVAR_ALLOCATEBLOCK_	134L
566 #define zVAR_NUMRECS_		135L
567 #define zVAR_NUMallocRECS_	136L
568 #define rVAR_COMPRESSION_	137L
569 #define rVAR_SPARSERECORDS_	138L
570 #define rVAR_SPARSEARRAYS_	139L
571 #define rVAR_ALLOCATEBLOCK_	140L
572 #define rVAR_NUMRECS_		141L
573 #define rVAR_NUMallocRECS_	142L
574 #define rVAR_ALLOCATEDFROM_	143L
575 #define rVAR_ALLOCATEDTO_	144L
576 #define zVAR_ALLOCATEDFROM_	145L
577 #define zVAR_ALLOCATEDTO_	146L
578 #define zVAR_nINDEXLEVELS_	147L
579 #define rVAR_nINDEXLEVELS_	148L
580 #define CDF_SCRATCHDIR_		149L
581 #define rVAR_RESERVEPERCENT_	150L
582 #define zVAR_RESERVEPERCENT_	151L
583 #define rVAR_RECORDS_		152L
584 #define zVAR_RECORDS_		153L
585 #define STAGE_CACHESIZE_	154L
586 #define COMPRESS_CACHESIZE_	155L
587 #define CDF_CHECKSUM_           156L
588 
589 #define CDFwithSTATS_		200L	/* For CDF internal use only! */
590 #define CDF_ACCESS_		201L	/* For CDF internal use only! */
591 
592 /******************************************************************************
593 * C interface macros.
594 ******************************************************************************/
595 
596 #define CDFattrCreate CDFcreateAttr
597 #define CDFattrNum CDFgetAttrNum
598 #define CDFvarCreate CDFcreaterVar
599 #define CDFvarNum CDFgetVarNum
600 #define CDFerror CDFgetStatusText
601 #define CDFattrRename CDFrenameAttr
602 #define CDFopenCDF CDFopen
603 #define CDFdeleteCDF CDFdelete
604 #define CDFcloseCDF CDFclose
605 #define CDFselectCDF CDFselect
606 
607 #define CDFattrEntryInquire(id,attrNum,entryNum,dataType,numElems) \
608 CDFinquireAttrEntry(id,0,attrNum,entryNum,dataType,numElems)
609 #define CDFinquireAttrgEntry(id,attrNum,entryNum,dataType,numElems) \
610 CDFinquireAttrEntry(id,1,attrNum,entryNum,dataType,numElems)
611 #define CDFinquireAttrrEntry(id,attrNum,entryNum,dataType,numElems) \
612 CDFinquireAttrEntry(id,2,attrNum,entryNum,dataType,numElems)
613 #define CDFinquireAttrzEntry(id,attrNum,entryNum,dataType,numElems) \
614 CDFinquireAttrEntry(id,3,attrNum,entryNum,dataType,numElems)
615 
616 #define CDFinquireAttr1Info(id,attrNum,attrName,attrScope,maxEntry) \
617 CDFinquireAttrInfo(id,0,attrNum,attrName,attrScope,maxEntry)
618 #define CDFinquireAttr2Info(id,attrNum,attrName,attrScope,maxEntry) \
619 CDFinquireAttrInfo(id,1,attrNum,attrName,attrScope,maxEntry)
620 
621 #define CDFattrPut(id,attrNum,entryNum,dataType,numElems,value) \
622 CDFputAttrEntry(id,0,attrNum,entryNum,dataType,numElems,value)
623 #define CDFputAttrgEntry(id,attrNum,entryNum,dataType,numElems,value) \
624 CDFputAttrEntry(id,1,attrNum,entryNum,dataType,numElems,value)
625 #define CDFputAttrrEntry(id,attrNum,entryNum,dataType,numElems,value) \
626 CDFputAttrEntry(id,2,attrNum,entryNum,dataType,numElems,value)
627 #define CDFputAttrzEntry(id,attrNum,entryNum,dataType,numElems,value) \
628 CDFputAttrEntry(id,3,attrNum,entryNum,dataType,numElems,value)
629 
630 #define CDFattrGet(id,attrNum,entryNum,value) \
631 CDFgetAttrEntry(id,0,attrNum,entryNum,value)
632 #define CDFgetAttrgEntry(id,attrNum,entryNum,value) \
633 CDFgetAttrEntry(id,1,attrNum,entryNum,value)
634 #define CDFgetAttrrEntry(id,attrNum,entryNum,value) \
635 CDFgetAttrEntry(id,2,attrNum,entryNum,value)
636 #define CDFgetAttrzEntry(id,attrNum,entryNum,value) \
637 CDFgetAttrEntry(id,3,attrNum,entryNum,value)
638 
639 #define CDFgetAttrgEntryDataType(id,attrNum,entryNum,dataType) \
640 CDFgetAttrEntryDataType(id,1,attrNum,entryNum,dataType)
641 #define CDFgetAttrrEntryDataType(id,attrNum,entryNum,dataType) \
642 CDFgetAttrEntryDataType(id,2,attrNum,entryNum,dataType)
643 #define CDFgetAttrzEntryDataType(id,attrNum,entryNum,dataType) \
644 CDFgetAttrEntryDataType(id,3,attrNum,entryNum,dataType)
645 
646 #define CDFsetAttrgEntryDataSpec(id,attrNum,entryNum,dataType) \
647 CDFsetAttrEntryDataSpec(id,1,attrNum,entryNum,dataType,(long)-99)
648 #define CDFsetAttrrEntryDataSpec(id,attrNum,entryNum,dataType) \
649 CDFsetAttrEntryDataSpec(id,2,attrNum,entryNum,dataType,(long)-99)
650 #define CDFsetAttrzEntryDataSpec(id,attrNum,entryNum,dataType) \
651 CDFsetAttrEntryDataSpec(id,3,attrNum,entryNum,dataType,(long)-99)
652 
653 #define CDFvarRename CDFrenamerVar
654 #define CDFrenamerVar(id,varNum,varName) CDFrenameVar(id,0,varNum,varName)
655 #define CDFrenamezVar(id,varNum,varName) CDFrenameVar(id,1,varNum,varName)
656 
657 #define CDFinquirerVar(id,varN,varName,dataType,numElems,numDims,dimSizes,recVary,dimVarys) \
658 CDFinquireVar(id,0,varN,varName,dataType,numElems,numDims,dimSizes,recVary,dimVarys)
659 #define CDFinquirezVar(id,varN,varName,dataType,numElems,numDims,dimSizes,recVary,dimVarys) \
660 CDFinquireVar(id,1,varN,varName,dataType,numElems,numDims,dimSizes,recVary,dimVarys)
661 
662 #define CDFvarPut CDFputrVarData
663 #define CDFputrVarData(id,varNum,recNum,indices,value) \
664 CDFputVarData(id,0,varNum,recNum,indices,value)
665 #define CDFputzVarData(id,varNum,recNum,indices,value) \
666 CDFputVarData(id,1,varNum,recNum,indices,value)
667 
668 #define CDFvarGet CDFgetrVarData
669 #define CDFgetrVarData(id,varNum,recNum,indices,value) \
670 CDFgetVarData(id,0,varNum,recNum,indices,value)
671 #define CDFgetzVarData(id,varNum,recNum,indices,value) \
672 CDFgetVarData(id,1,varNum,recNum,indices,value)
673 
674 #define CDFvarHyperPut CDFhyperPutrVarData
675 #define CDFhyperPutrVarData(id,varNum,recS,recC,recI,indices,counts,intervals,buff) \
676 CDFhyperPutVarData(id,0,varNum,recS,recC,recI,indices,counts,intervals,buff)
677 #define CDFhyperPutzVarData(id,varNum,recS,recC,recI,indices,counts,intervals,buff) \
678 CDFhyperPutVarData(id,1,varNum,recS,recC,recI,indices,counts,intervals,buff)
679 
680 #define CDFvarHyperGet CDFhyperGetrVarData
681 #define CDFhyperGetrVarData(id,varNum,recS,recC,recI,indices,counts,intervals,buff) \
682 CDFhyperGetVarData(id,0,varNum,recS,recC,recI,indices,counts,intervals,buff)
683 #define CDFhyperGetzVarData(id,varNum,recS,recC,recI,indices,counts,intervals,buff) \
684 CDFhyperGetVarData(id,1,varNum,recS,recC,recI,indices,counts,intervals,buff)
685 
686 #define CDFvarClose CDFcloserVar
687 #define CDFcloserVar(id,varNum) CDFcloseVar(id,0,varNum)
688 #define CDFclosezVar(id,varNum) CDFcloseVar(id,1,varNum)
689 
690 #define CDFdeleteAttrgEntry(id,attrNum,entryNum) \
691 CDFdeleteAttrEntry(id,1,attrNum,entryNum)
692 #define CDFdeleteAttrrEntry(id,attrNum,entryNum) \
693 CDFdeleteAttrEntry(id,2,attrNum,entryNum)
694 #define CDFdeleteAttrzEntry(id,attrNum,entryNum) \
695 CDFdeleteAttrEntry(id,3,attrNum,entryNum)
696 
697 #define CDFgetNumAttrgEntries(id,attrNum,numEntries) \
698 CDFgetNumAttrEntries(id,1,attrNum,numEntries)
699 #define CDFgetNumAttrrEntries(id,attrNum,numEntries) \
700 CDFgetNumAttrEntries(id,2,attrNum,numEntries)
701 #define CDFgetNumAttrzEntries(id,attrNum,numEntries) \
702 CDFgetNumAttrEntries(id,3,attrNum,numEntries)
703 
704 #define CDFgetAttrMaxgEntry(id,attrNum,maxEntry) \
705 CDFgetAttrMaxEntry(id,1,attrNum,maxEntry)
706 #define CDFgetAttrMaxrEntry(id,attrNum,maxEntry) \
707 CDFgetAttrMaxEntry(id,2,attrNum,maxEntry)
708 #define CDFgetAttrMaxzEntry(id,attrNum,maxEntry) \
709 CDFgetAttrMaxEntry(id,3,attrNum,maxEntry)
710 
711 #define CDFgetAttrgEntryNumElements(id,attrNum,entryNum,numElems) \
712 CDFgetAttrEntryNumElements(id,1,attrNum,entryNum,numElems)
713 #define CDFgetAttrrEntryNumElements(id,attrNum,entryNum,numElems) \
714 CDFgetAttrEntryNumElements(id,2,attrNum,entryNum,numElems)
715 #define CDFgetAttrzEntryNumElements(id,attrNum,entryNum,numElems) \
716 CDFgetAttrEntryNumElements(id,3,attrNum,entryNum,numElems)
717 
718 #define CDFgetNumrVars(id,numVars) CDFgetNumVars(id,0,numVars)
719 #define CDFgetNumzVars(id,numVars) CDFgetNumVars(id,1,numVars)
720 
721 #define CDFdeletezVar(id,varNum) CDFdeleteVar(id,1,varNum)
722 
723 #define CDFdeletezVarRecords(id,varNum,sRec,eRec) \
724 CDFdeleteVarRecords(id,1,varNum,sRec,eRec)
725 
726 #define CDFgetzVarName(id,varNum,varName) \
727 CDFgetVarName(id,1,varNum,varName)
728 
729 #define CDFgetzVarMaxWrittenRecNum(id,varNum,maxRec) \
730 CDFgetVarMaxWrittenRecNum(id,1,varNum,maxRec)
731 
732 #define CDFgetzVarsMaxWrittenRecNum(id,maxRec) \
733 CDFgetVarsMaxWrittenRecNum(id,1,maxRec)
734 
735 #define CDFgetzVarMaxAllocRecNum(id,varNum,maxAllocRec) \
736 CDFgetVarMaxAllocRecNum(id,1,varNum,maxAllocRec)
737 
738 #define CDFgetzVarDataType(id,varNum,dataType) \
739 CDFgetVarDataType(id,1,varNum,dataType)
740 
741 #define CDFgetzVarAllocRecords(id,varNum,allocRecs) \
742 CDFgetVarAllocRecords(id,1,varNum,allocRecs)
743 #define CDFsetzVarAllocRecords(id,varNum,allocRecs) \
744 CDFsetVarAllocRecords(id,1,varNum,allocRecs)
745 
746 #define CDFsetzVarAllocBlockRecords(id,varNum,firstRec,lastRec) \
747 CDFsetVarAllocBlockRecords(id,1,varNum,firstRec,lastRec)
748 
749 #define CDFgetzVarBlockingFactor(id,varNum,bf) \
750 CDFgetVarBlockingFactor(id,1,varNum,bf)
751 #define CDFsetzVarBlockingFactor(id,varNum,bf) \
752 CDFsetVarBlockingFactor(id,1,varNum,bf)
753 
754 #define CDFgetzVarCompression(id,varNum,cType,cParms,cPct) \
755 CDFgetVarCompression(id,1,varNum,cType,cParms,cPct)
756 #define CDFsetzVarCompression(id,varNum,cType,cParms) \
757 CDFsetVarCompression(id,1,varNum,cType,cParms)
758 
759 #define CDFsetzVarDataSpec(id,varNum,dataType) \
760 CDFsetVarDataSpec(id,1,varNum,dataType,(long)-99)
761 
762 #define CDFsetzVarDimVariances(id,varNum,dimVarys) \
763 CDFsetVarDimVariances(id,1,varNum,dimVarys)
764 
765 #define CDFgetzVarDimVariances(id,varNum,dimVarys) \
766 CDFgetVarDimVariances(id,1,varNum,dimVarys)
767 
768 #define CDFgetzVarNumElements(id,varNum,numEles) \
769 CDFgetVarNumElements(id,1,varNum,numEles)
770 
771 #define CDFgetzVarNumRecsWritten(id,varNum,numRecs) \
772 CDFgetVarNumRecsWritten(id,1,varNum,numRecs)
773 
774 #define CDFsetzVarInitialRecs(id,varNum,initRecs) \
775 CDFsetVarInitialRecs(id,1,varNum,initRecs)
776 
777 #define CDFgetzVarPadValue(id,varNum,pad) \
778 CDFgetVarPadValue(id,1,varNum,pad)
779 #define CDFsetzVarPadValue(id,varNum,pad) \
780 CDFsetVarPadValue(id,1,varNum,pad)
781 
782 #define CDFgetzVarRecVariance(id,varNum,recVary) \
783 CDFgetVarRecVariance(id,1,varNum,recVary)
784 #define CDFsetzVarRecVariance(id,varNum,recVary) \
785 CDFsetVarRecVariance(id,1,varNum,recVary)
786 
787 #define CDFgetzVarSeqData(id,varNum,data) \
788 CDFgetVarSeqData(id,1,varNum,data)
789 #define CDFputzVarSeqData(id,varNum,data) \
790 CDFputVarSeqData(id,1,varNum,data)
791 
792 #define CDFgetzVarSparseRecords(id,varNum,sprecs) \
793 CDFgetVarSparseRecords(id,1,varNum,sprecs)
794 #define CDFsetzVarSparseRecords(id,varNum,sprecs) \
795 CDFsetVarSparseRecords(id,1,varNum,sprecs)
796 
797 #define CDFgetzVarsRecordData(id,numVars,varNames,recNum,bufferPtr) \
798 CDFgetVarsRecordDatabyNames(id,1,numVars,varNames,recNum,bufferPtr)
799 #define CDFputzVarsRecordData(id,numVars,varNames,recNum,bufferPtr) \
800 CDFputVarsRecordDatabyNames(id,1,numVars,varNames,recNum,bufferPtr)
801 
802 #define CDFgetzVarsRecordDatabyNumbers(id,numVars,varNumbers,recNum,buffer) \
803 CDFgetVarsRecordDatabyNumbers(id,1,numVars,varNumbers,recNum,buffer)
804 #define CDFputzVarsRecordDatabyNumbers(id,numVars,varNumbers,recNum,buffer) \
805 CDFputVarsRecordDatabyNumbers(id,1,numVars,varNumbers,recNum,buffer)
806 
807 #define CDFgetzVarRecordData(id,varNum,recNum,buffer) \
808 CDFgetVarRecordData(id,1,varNum,recNum,buffer)
809 #define CDFputzVarRecordData(id,varNum,recNum,buffer) \
810 CDFputVarRecordData(id,1,varNum,recNum,buffer)
811 
812 #define CDFsetzVarCacheSize(id,varNum,numBuffers) \
813 CDFsetVarCacheSize(id,1,varNum,numBuffers)
814 
815 #define CDFsetzVarsCacheSize(id,numBuffers) \
816 CDFsetVarsCacheSize(id,1,numBuffers)
817 
818 #define CDFgetzVarCacheSize(id,varNum,numBuffers) \
819 CDFgetVarCacheSize(id,1,varNum,numBuffers)
820 
821 #define CDFconfirmzVarExistence(id,varName) \
822 CDFconfirmVarExistence(id,1,varName)
823 
824 #define CDFconfirmzVarPadValueExistence(id,varNum) \
825 CDFconfirmVarPadValueExistence(id,1,varNum)
826 
827 #define CDFgetzVarReservePercent(id,varNum,percent) \
828 CDFgetVarReservePercent(id,1,varNum,percent)
829 
830 #define CDFsetzVarReservePercent(id,varNum,percent) \
831 CDFsetVarReservePercent(id,1,varNum,percent)
832 
833 #define CDFgetzVarSeqPos(id,varNum,recNum,indices) \
834 CDFgetVarSeqPos(id,1,varNum,recNum,indices)
835 #define CDFsetzVarSeqPos(id,varNum,recNum,indices) \
836 CDFsetVarSeqPos(id,1,varNum,recNum,indices)
837 
838 /*
839  * CLOSE_  *
840  *         */
841 
842 #define CDFclose(id) \
843 CDFlib (SELECT_, CDF_, id, \
844         CLOSE_, CDF_, \
845         NULL_)
846 
847 #define CDFcloseVar(id,zVar,varNum) \
848 CDFlib (SELECT_, CDF_, id, \
849                  (zVar?zVAR_:rVAR_), varNum, \
850         CLOSE_, (zVar? zVAR_: rVAR_), \
851         NULL_)
852 
853 /*
854  * CONFIRM_  *
855  *           */
856 
857 #define CDFconfirmAttrExistence(id,attrName) \
858 CDFlib (SELECT_, CDF_, id, \
859         CONFIRM_, ATTR_EXISTENCE_, attrName, \
860         NULL_)
861 
862 #define CDFgetCacheSize(id,numBuffers) \
863 CDFlib (SELECT_, CDF_, id, \
864         CONFIRM_, CDF_CACHESIZE_, numBuffers, \
865         NULL_)
866 
867 #define CDFgetVarCacheSize(id,zVar,varNum,numBuffers) \
868 CDFlib (SELECT_, CDF_, id, \
869                  (zVar?zVAR_:rVAR_), varNum, \
870         CONFIRM_, (zVar?zVAR_CACHESIZE_:rVAR_CACHESIZE_), numBuffers, \
871         NULL_)
872 
873 #define CDFgetDecoding(id,decoding) \
874 CDFlib (SELECT_, CDF_, id, \
875         CONFIRM_, CDF_DECODING_, decoding, \
876         NULL_)
877 
878 #define CDFgetName(id,cdfName) \
879 CDFlib (SELECT_, CDF_, id, \
880         CONFIRM_, CDF_NAME_, cdfName, \
881         NULL_)
882 
883 #define CDFgetNegtoPosfp0Mode(id,negtoPosfp0) \
884 CDFlib (SELECT_, CDF_, id, \
885         CONFIRM_, CDF_NEGtoPOSfp0_MODE_, negtoPosfp0, \
886         NULL_)
887 
888 #define CDFgetReadOnlyMode(id,readOnlyMode) \
889 CDFlib (SELECT_, CDF_, id, \
890         CONFIRM_, CDF_READONLY_MODE_, readOnlyMode, \
891         NULL_)
892 
893 #define CDFgetzMode(id,zMode) \
894 CDFlib (SELECT_, CDF_, id, \
895         CONFIRM_, CDF_zMODE_, zMode, \
896         NULL_)
897 
898 #define CDFgetCompressionCacheSize(id,numBuffers) \
899 CDFlib (SELECT_, CDF_, id, \
900         CONFIRM_, COMPRESS_CACHESIZE_, numBuffers, \
901         NULL_)
902 
903 #define CDFconfirmgEntryExistence(id,attrNum,entryNum) \
904 CDFlib (SELECT_, CDF_, id, \
905                  ATTR_, attrNum, \
906         CONFIRM_, gENTRY_EXISTENCE_, entryNum, \
907         NULL_)
908 
909 #define CDFconfirmrEntryExistence(id,attrNum,entryNum) \
910 CDFlib (SELECT_, CDF_, id, \
911                  ATTR_, attrNum, \
912         CONFIRM_, rENTRY_EXISTENCE_, entryNum, \
913         NULL_)
914 
915 #define CDFgetStageCacheSize(id,numBuffers) \
916 CDFlib (SELECT_, CDF_, id, \
917         CONFIRM_, STAGE_CACHESIZE_, numBuffers, \
918         NULL_)
919 
920 #define CDFconfirmVarExistence(id,zVar,varName) \
921 CDFlib (SELECT_, CDF_, id, \
922         CONFIRM_, (zVar?zVAR_EXISTENCE_:rVAR_EXISTENCE_), varName, \
923         NULL_)
924 
925 #define CDFconfirmVarPadValueExistence(id,zVar,varNum) \
926 CDFlib (SELECT_, CDF_, id, \
927 		 (zVar?zVAR_:rVAR_), varNum, \
928         CONFIRM_, (zVar?zVAR_PADVALUE_:rVAR_PADVALUE_), \
929         NULL_)
930 
931 #define CDFgetVarReservePercent(id,zVar,varNum,percent) \
932 CDFlib (SELECT_, CDF_, id, \
933 		 (zVar?zVAR_:rVAR_), varNum, \
934         CONFIRM_, (zVar?zVAR_RESERVEPERCENT_:rVAR_RESERVEPERCENT_), percent, \
935         NULL_)
936 
937 #define CDFgetVarSeqPos(id,zVar,varNum,recNum,indices) \
938 CDFlib (SELECT_, CDF_, id, \
939 		 (zVar?zVAR_:rVAR_), varNum, \
940         CONFIRM_, (zVar?zVAR_SEQPOS_:rVAR_SEQPOS_), recNum, indices, \
941         NULL_)
942 
943 #define CDFconfirmzEntryExistence(id,attrNum,entryNum) \
944 CDFlib (SELECT_, CDF_, id, \
945                  ATTR_, attrNum, \
946         CONFIRM_, zENTRY_EXISTENCE_, entryNum, \
947         NULL_)
948 
949 #define CDFconfirmChecksum(id) \
950 CDFlib (SELECT_, CDF_, id, \
951         CONFIRM_, CDF_CHECKSUM_, \
952         NULL_)
953 
954 /*
955  * CREATE_ *
956  *         */
957 
958 #define CDFcreate(CDFname,numDims,dimSizes,encoding,majority,id) \
959 CDFlib (CREATE_, CDF_, CDFname, numDims, dimSizes, id, \
960         PUT_, CDF_ENCODING_, encoding, \
961               CDF_MAJORITY_, majority, \
962         NULL_)
963 
964 #define CDFcreateAttr(id,attrName,attrScope,attrNum) \
965 CDFlib (SELECT_, CDF_, id, \
966         CREATE_, ATTR_, attrName, attrScope, attrNum, \
967         NULL_)
968 
969 #define CDFcreaterVar(id,varName,dataType,numElements,recVary,dimVarys,varNum) \
970 CDFlib (SELECT_, CDF_, id, \
971         CREATE_, rVAR_, varName, dataType, numElements, \
972                         recVary, dimVarys, varNum, \
973         NULL_)
974 
975 #define CDFcreatezVar(id,varName,dataType,numElements,numDims,dimSizes,recVary,dimVarys,varNum) \
976 CDFlib (SELECT_, CDF_, id, \
977         CREATE_, zVAR_, varName, dataType, numElements, \
978                         numDims,dimSizes, recVary, dimVarys, varNum, \
979         NULL_)
980 
981 /*
982  * DELETE_ *
983  *         */
984 
985 #define CDFdelete(id) \
986 CDFlib (SELECT_, CDF_, id, \
987         DELETE_, CDF_, \
988         NULL_)
989 
990 #define CDFdeleteAttr(id,attrNum) \
991 CDFlib (SELECT_, CDF_, id, \
992                  ATTR_, attrNum, \
993         DELETE_, ATTR_, \
994         NULL_)
995 
996 #define CDFdeleteVar(id,zVar,varNum) \
997 CDFlib (SELECT_, CDF_, id, \
998                  (zVar? zVAR_: rVAR_), varNum, \
999         DELETE_, (zVar? zVAR_: rVAR_), \
1000         NULL_)
1001 
1002 #define CDFdeleteVarRecords(id,zVar,varNum,firstRec,lastRec) \
1003 CDFlib (SELECT_, CDF_, id, \
1004                  (zVar? zVAR_: rVAR_), varNum, \
1005         DELETE_, (zVar? zVAR_RECORDS_: rVAR_RECORDS_), firstRec, lastRec, \
1006         NULL_)
1007 
1008 /*
1009  * GET_ *
1010  *      */
1011 
1012 #define CDFgetAttrName(id,attrNum,attrName) \
1013 CDFlib (SELECT_, CDF_, id, \
1014                  ATTR_, attrNum, \
1015         GET_, ATTR_NAME_, attrName, \
1016         NULL_)
1017 
1018 #define CDFgetAttrScope(id,attrNum,attrScope) \
1019 CDFlib (SELECT_, CDF_, id, \
1020                  ATTR_, attrNum, \
1021         GET_, ATTR_SCOPE_, attrScope, \
1022         NULL_)
1023 
1024 #define CDFgetCompression(id,cType, cParms, cPercent) \
1025 CDFlib (SELECT_, CDF_, id, \
1026         GET_, CDF_COMPRESSION_, cType, cParms, cPercent, \
1027         NULL_)
1028 
1029 #define CDFgetCopyright(id,copyright) \
1030 CDFlib (SELECT_, CDF_, id, \
1031         GET_, CDF_COPYRIGHT_, copyright, \
1032         NULL_)
1033 
1034 #define CDFgetEncoding(id,encoding) \
1035 CDFlib (SELECT_, CDF_, id, \
1036         GET_, CDF_ENCODING_, encoding, \
1037         NULL_)
1038 
1039 #define CDFgetFormat(id,format) \
1040 CDFlib (SELECT_, CDF_, id, \
1041         GET_, CDF_FORMAT_, format, \
1042         NULL_)
1043 
1044 #define CDFgetCompressionInfo(name,cType,cParms,cSize,uSize) \
1045 CDFlib (GET_, CDF_INFO_, name, cType, cParms, cSize, uSize, \
1046         NULL_)
1047 
1048 #define CDFgetMajority(id,majority) \
1049 CDFlib (SELECT_, CDF_, id, \
1050         GET_, CDF_MAJORITY_, majority, \
1051         NULL_)
1052 
1053 #define CDFgetNumAttributes(id,numAttrs) \
1054 CDFlib (SELECT_, CDF_, id, \
1055         GET_, CDF_NUMATTRS_, numAttrs, \
1056         NULL_)
1057 
1058 #define CDFgetNumgAttributes(id,numgAttrs) \
1059 CDFlib (SELECT_, CDF_, id, \
1060         GET_, CDF_NUMgATTRS_, numgAttrs, \
1061         NULL_)
1062 
1063 #define CDFgetNumVars(id,zVar,numVars) \
1064 CDFlib (SELECT_, CDF_, id, \
1065         GET_, (zVar?CDF_NUMzVARS_:CDF_NUMrVARS_), numVars, \
1066         NULL_)
1067 
1068 #define CDFgetNumvAttributes(id,numvAttrs) \
1069 CDFlib (SELECT_, CDF_, id, \
1070         GET_, CDF_NUMvATTRS_, numvAttrs, \
1071         NULL_)
1072 
1073 #define CDFdoc(id,version,release,copyright) \
1074 CDFlib (SELECT_, CDF_, id, \
1075         GET_, CDF_VERSION_, version, \
1076               CDF_RELEASE_, release, \
1077               CDF_COPYRIGHT_, copyright, \
1078         NULL_)
1079 
1080 #define CDFgetDataTypeSize(dataType,numBytes) \
1081 CDFlib (GET_, DATATYPE_SIZE_, dataType, numBytes, \
1082         NULL_)
1083 
1084 #define CDFgetLibraryCopyright(copyright) \
1085 CDFlib (GET_, LIB_COPYRIGHT_, copyright, \
1086         NULL_)
1087 
1088 #define CDFgetLibraryVersion(version,release,increment,subincrement) \
1089 CDFlib (GET_, LIB_VERSION_, version, \
1090               LIB_RELEASE_, release, \
1091               LIB_INCREMENT_, increment, \
1092               LIB_subINCREMENT_, subincrement, \
1093         NULL_)
1094 
1095 #define CDFgetVersion(id,version,release,increment) \
1096 CDFlib (SELECT_, CDF_, id, \
1097         GET_, CDF_VERSION_, version, \
1098               CDF_RELEASE_, release, \
1099               CDF_INCREMENT_, increment, \
1100         NULL_)
1101 
1102 #define CDFgetVarBlockingFactor(id,zVar,varNum,bf) \
1103 CDFlib (SELECT_, CDF_, id, \
1104                  (zVar?zVAR_:rVAR_), varNum, \
1105         GET_, (zVar?zVAR_BLOCKINGFACTOR_:rVAR_BLOCKINGFACTOR_), bf, \
1106         NULL_)
1107 
1108 #define CDFgetVarCompression(id,zVar,varNum,cType,cParms,cPct) \
1109 CDFlib (SELECT_, CDF_, id, \
1110                  (zVar?zVAR_:rVAR_), varNum, \
1111         GET_, (zVar?zVAR_COMPRESSION_:rVAR_COMPRESSION_), cType, cParms, cPct, \
1112         NULL_)
1113 
1114 #define CDFgetVarData(id,zVar,varNum,recNum,indices,value) \
1115 CDFlib (SELECT_, CDF_, id, \
1116                  (zVar?zVAR_:rVAR_), varNum, \
1117                  (zVar?zVAR_RECNUMBER_:rVARs_RECNUMBER_), recNum, \
1118                  (zVar?zVAR_DIMINDICES_:rVARs_DIMINDICES_), indices, \
1119         GET_, (zVar?zVAR_DATA_:rVAR_DATA_), value, \
1120         NULL_)
1121 
1122 #define CDFgetVarDataType(id,zVar,varNum,dataType) \
1123 CDFlib (SELECT_, CDF_, id, \
1124                  (zVar?zVAR_:rVAR_), varNum, \
1125         GET_, (zVar?zVAR_DATATYPE_:rVAR_DATATYPE_), dataType, \
1126         NULL_)
1127 
1128 #define CDFgetVarDimVariances(id,zVar,varNum,dimVarys) \
1129 CDFlib (SELECT_, CDF_, id, \
1130                  (zVar?zVAR_:rVAR_), varNum, \
1131         GET_, (zVar?zVAR_DIMVARYS_:rVAR_DIMVARYS_), dimVarys, \
1132         NULL_)
1133 
1134 #define CDFgetVarMaxAllocRecNum(id,zVar,varNum,maxAllocRec) \
1135 CDFlib (SELECT_, CDF_, id, \
1136                  (zVar?zVAR_:rVAR_), varNum, \
1137         GET_, (zVar?zVAR_MAXallocREC_:rVAR_MAXallocREC_), maxAllocRec, \
1138         NULL_)
1139 
1140 #define CDFgetVarMaxWrittenRecNum(id,zVar,varNum,maxRec) \
1141 CDFlib (SELECT_, CDF_, id, \
1142                  (zVar?zVAR_:rVAR_), varNum, \
1143         GET_, (zVar?zVAR_MAXREC_:rVAR_MAXREC_), maxRec, \
1144         NULL_)
1145 
1146 #define CDFgetVarAllocRecords(id,zVar,varNum,numAllocRecs) \
1147 CDFlib (SELECT_, CDF_, id, \
1148                  (zVar?zVAR_:rVAR_), varNum, \
1149         GET_, (zVar?zVAR_NUMallocRECS_:rVAR_NUMallocRECS_), numAllocRecs, \
1150         NULL_)
1151 
1152 #define CDFgetVarNumElements(id,zVar,varNum,numElements) \
1153 CDFlib (SELECT_, CDF_, id, \
1154                  (zVar?zVAR_:rVAR_), varNum, \
1155         GET_, (zVar?zVAR_NUMELEMS_:rVAR_NUMELEMS_), numElements, \
1156         NULL_)
1157 
1158 #define CDFgetVarNumRecsWritten(id,zVar,varNum,numRecs) \
1159 CDFlib (SELECT_, CDF_, id, \
1160                  (zVar?zVAR_:rVAR_), varNum, \
1161         GET_, (zVar?zVAR_NUMRECS_:rVAR_NUMRECS_), numRecs, \
1162         NULL_)
1163 
1164 #define CDFgetVarPadValue(id,zVar,varNum,padValue) \
1165 CDFlib (SELECT_, CDF_, id, \
1166                  (zVar?zVAR_:rVAR_), varNum, \
1167         GET_, (zVar?zVAR_PADVALUE_:rVAR_PADVALUE_), padValue, \
1168         NULL_)
1169 
1170 #define CDFgetVarRecVariance(id,zVar,varNum,recVary) \
1171 CDFlib (SELECT_, CDF_, id, \
1172                  (zVar?zVAR_:rVAR_), varNum, \
1173         GET_, (zVar?zVAR_RECVARY_:rVAR_RECVARY_), recVary, \
1174         NULL_)
1175 
1176 #define CDFgetVarSeqData(id,zVar,varNum,seqData) \
1177 CDFlib (SELECT_, CDF_, id, \
1178                  (zVar?zVAR_:rVAR_), varNum, \
1179         GET_, (zVar?zVAR_SEQDATA_:rVAR_SEQDATA_), seqData, \
1180         NULL_)
1181 
1182 #define CDFgetVarsRecordDatabyNumbers(id,zVar,numVars,varNums,recNum,buffer) \
1183 CDFlib (SELECT_, CDF_, id, \
1184                  (zVar?zVARs_RECNUMBER_:rVARs_RECNUMBER_), recNum, \
1185         GET_, (zVar?zVARs_RECDATA_:rVARs_RECDATA_), numVars, varNums, buffer, \
1186         NULL_)
1187 
1188 #define CDFgetVarSparseRecords(id,zVar,varNum,sparseRecs) \
1189 CDFlib (SELECT_, CDF_, id, \
1190                  (zVar?zVAR_:rVAR_), varNum, \
1191         GET_, (zVar?zVAR_SPARSERECORDS_:rVAR_SPARSERECORDS_), sparseRecs, \
1192         NULL_)
1193 
1194 #define CDFgetrVarsDimSizes(id,dimSizes) \
1195 CDFlib (SELECT_, CDF_, id, \
1196         GET_, rVARs_DIMSIZES_, dimSizes, \
1197         NULL_)
1198 
1199 #define CDFgetzVarDimSizes(id,varNum,dimSizes) \
1200 CDFlib (SELECT_, CDF_, id, \
1201                  zVAR_, varNum, \
1202         GET_, zVAR_DIMSIZES_, dimSizes, \
1203         NULL_)
1204 
1205 #define CDFgetVarName(id,zVar,varNum,varName) \
1206 CDFlib (SELECT_, CDF_, id, \
1207                  (zVar?zVAR_:rVAR_), varNum, \
1208         GET_, (zVar?zVAR_NAME_:rVAR_NAME_), varName, \
1209         NULL_)
1210 
1211 #define CDFgetzVarNumDims(id,varNum,numDims) \
1212 CDFlib (SELECT_, CDF_, id, \
1213                  zVAR_, varNum, \
1214         GET_, zVAR_NUMDIMS_, numDims, \
1215         NULL_)
1216 
1217 #define CDFgetrVarsNumDims(id,numDims) \
1218 CDFlib (SELECT_, CDF_, id, \
1219         GET_, rVARs_NUMDIMS_, numDims, \
1220         NULL_)
1221 
1222 #define CDFgetStatusText(status,text) \
1223 CDFlib (SELECT_, CDF_STATUS_, status, \
1224         GET_, STATUS_TEXT_, text, \
1225         NULL_)
1226 
1227 #define CDFhyperGetVarData(id,zVar,varN,recS,recC,recI,indices,counts,intervals,buff) \
1228 CDFlib (SELECT_, CDF_, id, \
1229                  (zVar?zVAR_:rVAR_), varN, \
1230                  (zVar?zVAR_RECNUMBER_:rVARs_RECNUMBER_), recS, \
1231                  (zVar?zVAR_RECCOUNT_:rVARs_RECCOUNT_), recC, \
1232                  (zVar?zVAR_RECINTERVAL_:rVARs_RECINTERVAL_), recI, \
1233                  (zVar?zVAR_DIMINDICES_:rVARs_DIMINDICES_), indices, \
1234                  (zVar?zVAR_DIMCOUNTS_:rVARs_DIMCOUNTS_), counts, \
1235                  (zVar?zVAR_DIMINTERVALS_:rVARs_DIMINTERVALS_), intervals, \
1236         GET_, (zVar?zVAR_HYPERDATA_:rVAR_HYPERDATA_), buff, \
1237         NULL_)
1238 
1239 #define CDFgetMaxWrittenRecNums(id,maxRecrVars,maxReczVars) \
1240 CDFlib (SELECT_, CDF_, id, \
1241         GET_, rVARs_MAXREC_, maxRecrVars, \
1242               zVARs_MAXREC_, maxReczVars, \
1243         NULL_)
1244 
1245 #define CDFgetVarsMaxWrittenRecNum(id,zVar,maxRecVar) \
1246 CDFlib (SELECT_, CDF_, id, \
1247         GET_, (zVar?zVARs_MAXREC_:rVARs_MAXREC_), maxRecVar, \
1248         NULL_)
1249 
1250 #define CDFinquireVar(id,zVar,varN,varName,dataType,numElements,numDims,dimSizes,recVary,dimVarys) \
1251 CDFlib (SELECT_, CDF_, id, \
1252                  (zVar?zVAR_:rVAR_), varN, \
1253         GET_, (zVar?zVAR_NAME_:rVAR_NAME_), varName, \
1254               (zVar?zVAR_DATATYPE_:rVAR_DATATYPE_), dataType, \
1255               (zVar?zVAR_NUMELEMS_:rVAR_NUMELEMS_), numElements, \
1256               (zVar?zVAR_NUMDIMS_:rVARs_NUMDIMS_), numDims, \
1257               (zVar?zVAR_DIMSIZES_:rVARs_DIMSIZES_), dimSizes, \
1258               (zVar?zVAR_RECVARY_:rVAR_RECVARY_), recVary, \
1259               (zVar?zVAR_DIMVARYS_:rVAR_DIMVARYS_), dimVarys, \
1260         NULL_)
1261 
1262 #define CDFvarInquire(id,varN,varName,dataType,numElements,recVary,dimVarys) \
1263 CDFlib (SELECT_, CDF_, id, \
1264                  rVAR_, varN, \
1265         GET_, rVAR_NAME_, varName, \
1266               rVAR_DATATYPE_, dataType, \
1267               rVAR_NUMELEMS_, numElements, \
1268               rVAR_RECVARY_, recVary, \
1269               rVAR_DIMVARYS_, dimVarys, \
1270         NULL_)
1271 #define CDFinquire(id,numDims,dimSizes,encoding,majority,maxRec,nVars,nAttrs) \
1272 CDFlib (SELECT_, CDF_, id, \
1273         GET_, rVARs_NUMDIMS_, numDims, \
1274               rVARs_DIMSIZES_, dimSizes, \
1275               CDF_ENCODING_, encoding, \
1276               CDF_MAJORITY_, majority, \
1277               rVARs_MAXREC_, maxRec, \
1278               CDF_NUMrVARS_, nVars, \
1279               CDF_NUMATTRS_, nAttrs, \
1280         NULL_)
1281 #define CDFinquireCDF(id,numDims,dimSizes,encoding,majority,maxrRec,nrVars,maxzRec,nzVars,nAttrs) \
1282 CDFlib (SELECT_, CDF_, id, \
1283         GET_, rVARs_NUMDIMS_, numDims, \
1284               rVARs_DIMSIZES_, dimSizes, \
1285               CDF_ENCODING_, encoding, \
1286               CDF_MAJORITY_, majority, \
1287               rVARs_MAXREC_, maxrRec, \
1288               CDF_NUMrVARS_, nrVars, \
1289               zVARs_MAXREC_, maxzRec, \
1290               CDF_NUMzVARS_, nzVars, \
1291               CDF_NUMATTRS_, nAttrs, \
1292         NULL_)
1293 
1294 #define CDFgetChecksum(id,checksum) \
1295 CDFlib (SELECT_, CDF_, id, \
1296         GET_, CDF_CHECKSUM_, checksum, \
1297         NULL_)
1298 
1299 /*
1300  * OPEN_ *
1301  *       */
1302 
1303 #define CDFopen(CDFname,id) \
1304 CDFlib (OPEN_, CDF_, CDFname, id, \
1305         NULL_)
1306 
1307 /*
1308  * PUT_ *
1309  *      */
1310 
1311 #define CDFsetAttrScope(id,attrNum,attrScope) \
1312 CDFlib (SELECT_, CDF_, id, \
1313                  ATTR_, attrNum, \
1314         PUT_, ATTR_SCOPE_, attrScope, \
1315         NULL_)
1316 
1317 #define CDFsetCompression(id,cType, cParms) \
1318 CDFlib (SELECT_, CDF_, id, \
1319         PUT_, CDF_COMPRESSION_, cType, cParms, \
1320         NULL_)
1321 
1322 #define CDFsetEncoding(id,encoding) \
1323 CDFlib (SELECT_, CDF_, id, \
1324         PUT_, CDF_ENCODING_, encoding, \
1325         NULL_)
1326 
1327 #define CDFsetFormat(id,format) \
1328 CDFlib (SELECT_, CDF_, id, \
1329         PUT_, CDF_FORMAT_, format, \
1330         NULL_)
1331 
1332 #define CDFsetMajority(id,majority) \
1333 CDFlib (SELECT_, CDF_, id, \
1334         PUT_, CDF_MAJORITY_, majority, \
1335         NULL_)
1336 
1337 #define CDFrenameAttr(id,attrNum,attrName) \
1338 CDFlib (SELECT_, CDF_, id, \
1339 		 ATTR_, attrNum, \
1340 	PUT_, ATTR_NAME_, attrName, \
1341 	NULL_)
1342 
1343 #define CDFrenameVar(id,zVar,varNum,varName) \
1344 CDFlib (SELECT_, CDF_, id, \
1345 		 (zVar?zVAR_:rVAR_), varNum, \
1346 	PUT_, (zVar?zVAR_NAME_:rVAR_NAME_), varName, \
1347 	NULL_)
1348 
1349 #define CDFsetVarAllocRecords(id,zVar,varNum,allocRecs) \
1350 CDFlib (SELECT_, CDF_, id, \
1351                  (zVar?zVAR_:rVAR_), varNum, \
1352         PUT_, (zVar?zVAR_ALLOCATERECS_:rVAR_ALLOCATERECS_), allocRecs, \
1353         NULL_)
1354 
1355 #define CDFsetVarAllocBlockRecords(id,zVar,varNum,firstRec, lastRec) \
1356 CDFlib (SELECT_, CDF_, id, \
1357                  (zVar?zVAR_:rVAR_), varNum, \
1358         PUT_, (zVar?zVAR_ALLOCATEBLOCK_:rVAR_ALLOCATEBLOCK_), firstRec, \
1359                                                               lastRec, \
1360         NULL_)
1361 
1362 #define CDFsetVarBlockingFactor(id,zVar,varNum,bf) \
1363 CDFlib (SELECT_, CDF_, id, \
1364                  (zVar?zVAR_:rVAR_), varNum, \
1365         PUT_, (zVar?zVAR_BLOCKINGFACTOR_:rVAR_BLOCKINGFACTOR_), bf, \
1366         NULL_)
1367 
1368 #define CDFsetVarCompression(id,zVar,varNum,cType,cParms) \
1369 CDFlib (SELECT_, CDF_, id, \
1370                  (zVar?zVAR_:rVAR_), varNum, \
1371         PUT_, (zVar?zVAR_COMPRESSION_:rVAR_COMPRESSION_), cType, cParms, \
1372         NULL_)
1373 
1374 #define CDFsetVarDataSpec(id,zVar,varNum,dataType,numElems) \
1375 CDFlib (SELECT_, CDF_, id, \
1376                  (zVar?zVAR_:rVAR_), varNum, \
1377         PUT_, (zVar?zVAR_DATASPEC_:rVAR_DATASPEC_), dataType, numElems, \
1378         NULL_)
1379 
1380 #define CDFsetVarDimVariances(id,zVar,varNum,dimVarys) \
1381 CDFlib (SELECT_, CDF_, id, \
1382                  (zVar?zVAR_:rVAR_), varNum, \
1383         PUT_, (zVar?zVAR_DIMVARYS_:rVAR_DIMVARYS_), dimVarys, \
1384         NULL_)
1385 
1386 #define CDFsetVarInitialRecs(id,zVar,varNum,numRecs) \
1387 CDFlib (SELECT_, CDF_, id, \
1388                  (zVar?zVAR_:rVAR_), varNum, \
1389         PUT_, (zVar?zVAR_INITIALRECS_:rVAR_INITIALRECS_), numRecs, \
1390         NULL_)
1391 
1392 #define CDFsetVarPadValue(id,zVar,varNum,padValue) \
1393 CDFlib (SELECT_, CDF_, id, \
1394                 (zVar?zVAR_:rVAR_), varNum, \
1395         PUT_, (zVar?zVAR_PADVALUE_:rVAR_PADVALUE_), padValue, \
1396         NULL_)
1397 
1398 #define CDFsetVarRecVariance(id,zVar,varNum,recVary) \
1399 CDFlib (SELECT_, CDF_, id, \
1400                  (zVar?zVAR_:rVAR_), varNum, \
1401         PUT_, (zVar?zVAR_RECVARY_:rVAR_RECVARY_), recVary, \
1402         NULL_)
1403 
1404 #define CDFputVarSeqData(id,zVar,varNum,seqData) \
1405 CDFlib (SELECT_, CDF_, id, \
1406                  (zVar?zVAR_:rVAR_), varNum, \
1407         PUT_, (zVar?zVAR_SEQDATA_:rVAR_SEQDATA_), seqData, \
1408         NULL_)
1409 
1410 #define CDFsetVarSparseRecords(id,zVar,varNum,sparseRecs) \
1411 CDFlib (SELECT_, CDF_, id, \
1412                  (zVar?zVAR_:rVAR_), varNum, \
1413         PUT_, (zVar?zVAR_SPARSERECORDS_:rVAR_SPARSERECORDS_), sparseRecs, \
1414         NULL_)
1415 
1416 #define CDFputVarData(id,zVar,varNum,recNum,indices,value) \
1417 CDFlib (SELECT_, CDF_, id, \
1418                  (zVar?zVAR_:rVAR_), varNum, \
1419                  (zVar?zVAR_RECNUMBER_:rVARs_RECNUMBER_), recNum, \
1420                  (zVar?zVAR_DIMINDICES_:rVARs_DIMINDICES_), indices, \
1421         PUT_, (zVar?zVAR_DATA_:rVAR_DATA_), value, \
1422         NULL_)
1423 
1424 #define CDFputVarsRecordDatabyNumbers(id,zVar,numVars,varNums,recNum,buffer) \
1425 CDFlib (SELECT_, CDF_, id, \
1426                  (zVar?zVARs_RECNUMBER_:rVARs_RECNUMBER_), recNum, \
1427         PUT_, (zVar?zVARs_RECDATA_:rVARs_RECDATA_), numVars, varNums, buffer, \
1428         NULL_)
1429 
1430 #define CDFhyperPutVarData(id,zVar,varN,recS,recC,recI,indices,counts,intervals,buff) \
1431 CDFlib (SELECT_, CDF_, id, \
1432 		 (zVar?zVAR_:rVAR_), varN, \
1433 		 (zVar?zVAR_RECNUMBER_:rVARs_RECNUMBER_), recS, \
1434 		 (zVar?zVAR_RECCOUNT_:rVARs_RECCOUNT_), recC, \
1435 		 (zVar?zVAR_RECINTERVAL_:rVARs_RECINTERVAL_), recI, \
1436 		 (zVar?zVAR_DIMINDICES_:rVARs_DIMINDICES_), indices, \
1437 		 (zVar?zVAR_DIMCOUNTS_:rVARs_DIMCOUNTS_), counts, \
1438 		 (zVar?zVAR_DIMINTERVALS_:rVARs_DIMINTERVALS_), intervals, \
1439 	PUT_, (zVar?zVAR_HYPERDATA_:rVAR_HYPERDATA_), buff, \
1440 	NULL_)
1441 
1442 #define CDFsetChecksum(id,checksum) \
1443 CDFlib (SELECT_, CDF_, id, \
1444         PUT_, CDF_CHECKSUM_, checksum, \
1445         NULL_)
1446 
1447 /*
1448  * SELECT_ *
1449  *         */
1450 
1451 #define CDFselect(id) \
1452 CDFlib (SELECT_, CDF_, id, \
1453         NULL_)
1454 
1455 #define CDFsetDecoding(id,decoding) \
1456 CDFlib (SELECT_, CDF_, id, \
1457                  CDF_DECODING_, decoding, \
1458         NULL_)
1459 
1460 #define CDFsetCacheSize(id,numBuffers) \
1461 CDFlib (SELECT_, CDF_, id, \
1462                  CDF_CACHESIZE_, numBuffers, \
1463         NULL_)
1464 
1465 #define CDFsetVarCacheSize(id,zVar,varNum,numBuffers) \
1466 CDFlib (SELECT_, CDF_, id, \
1467                  (zVar?zVAR_:rVAR_), varNum, \
1468                  (zVar?zVAR_CACHESIZE_:rVAR_CACHESIZE_), numBuffers, \
1469         NULL_)
1470 
1471 #define CDFsetVarsCacheSize(id,zVar,numBuffers) \
1472 CDFlib (SELECT_, CDF_, id, \
1473                  (zVar?zVARs_CACHESIZE_:rVARs_CACHESIZE_), numBuffers, \
1474         NULL_)
1475 
1476 #define CDFsetVarSeqPos(id,zVar,varNum,recNum,indices) \
1477 CDFlib (SELECT_, CDF_, id, \
1478                  (zVar?zVAR_:rVAR_), varNum, \
1479                  (zVar?zVAR_SEQPOS_:rVAR_SEQPOS_), recNum, indices, \
1480         NULL_)
1481 
1482 #define CDFsetNegtoPosfp0Mode(id,negtoPosfp0) \
1483 CDFlib (SELECT_, CDF_, id, \
1484                  CDF_NEGtoPOSfp0_MODE_, negtoPosfp0, \
1485         NULL_)
1486 
1487 #define CDFsetReadOnlyMode(id,readOnlyMode) \
1488 CDFlib (SELECT_, CDF_, id, \
1489                  CDF_READONLY_MODE_, readOnlyMode, \
1490         NULL_)
1491 
1492 #define CDFsetVarReservePercent(id,zVar,varNum,percent) \
1493 CDFlib (SELECT_, CDF_, id, \
1494                  (zVar?zVAR_:rVAR_), varNum, \
1495                  (zVar?zVAR_RESERVEPERCENT_:rVAR_RESERVEPERCENT_), percent, \
1496         NULL_)
1497 
1498 #define CDFsetCompressionCacheSize(id,numBuffers) \
1499 CDFlib (SELECT_, CDF_, id, \
1500                  COMPRESS_CACHESIZE_, numBuffers, \
1501         NULL_)
1502 
1503 #define CDFsetStageCacheSize(id,numBuffers) \
1504 CDFlib (SELECT_, CDF_, id, \
1505                  STAGE_CACHESIZE_, numBuffers, \
1506         NULL_)
1507 
1508 #define CDFsetzMode(id,zMode) \
1509 CDFlib (SELECT_, CDF_, id, \
1510                  CDF_zMODE_, zMode, \
1511         NULL_)
1512 
1513 /******************************************************************************
1514 * Function prototypes.
1515 *     It is assumed that `__cplusplus' is defined for ALL C++ compilers.  If
1516 * ANSI function prototypes are not desired (for whatever reason), define
1517 * noPROTOs on the compile command line.  Otherwise, ANSI function prototypes
1518 * will be used where appropriate.
1519 ******************************************************************************/
1520 
1521 #if !defined(noPROTOs)
1522 #  if defined(__STDC__)
1523 #    define PROTOs_
1524 #  else
1525 #    if defined(vms)
1526 #      define PROTOs_
1527 #    endif
1528 #    if defined(__MSDOS__) || defined(MSDOS)
1529 #      define PROTOs_
1530 #    endif
1531 #    if defined(macintosh) || defined(THINK_C)
1532 #      define PROTOs_
1533 #    endif
1534 #    if defined(WIN32)
1535 #      define PROTOs_
1536 #    endif
1537 #    if defined(AIX)
1538 #      define PROTOs_
1539 #    endif
1540 #  endif
1541 #endif
1542 
1543 #if defined(PROTOs_)
1544 #  define PROTOARGs(args) args
1545 #else
1546 #  define PROTOARGs(args) ()
1547 #endif
1548 
1549 #if defined(BUILDINGforIDL)
1550 #  define STATICforIDL static
1551 #  define VISIBLE_PREFIX static
1552 #else
1553 #  if defined(WIN32) && defined(BUILDINGforDLL)
1554 #    if defined(LIBCDF_SOURCE_)
1555 #      define VISIBLE_PREFIX _declspec(dllexport)
1556 #    else
1557 #      define VISIBLE_PREFIX _declspec(dllimport)
1558 #    endif
1559 #  else
1560 #    define VISIBLE_PREFIX \
1561 
1562 #  endif
1563 #  define STATICforIDL \
1564 
1565 #endif
1566 
1567 #if defined(__cplusplus)
1568 extern "C" {
1569 #endif
1570 
1571 #if defined(BUILDINGforIDL)
1572 /* Isn't a prototype needed? */
1573 #else
1574 #if !defined(__CFM68K__) || defined(__USING_STATIC_LIBS__) || !defined(CFM68KDLL)
1575 VISIBLE_PREFIX CDFstatus CDFlib PROTOARGs((long op1, ...));
1576 #endif
1577 #endif
1578 VISIBLE_PREFIX CDFstatus CDFcreateCDF PROTOARGs((
1579   char *name, CDFid *id
1580 ));
1581 VISIBLE_PREFIX CDFstatus CDFattrInquire PROTOARGs((
1582   CDFid id, long attrNum, char *attrName, long *attrScope,
1583   long *maxgrEntry
1584 ));
1585 VISIBLE_PREFIX CDFstatus CDFinquireAttr PROTOARGs((
1586   CDFid id, long attrNum, char *attrName, long *attrScope,
1587   long *maxgEntry, long *maxrEntry, long *maxzEntry
1588 ));
1589 VISIBLE_PREFIX CDFstatus CDFinquireAttrEntry PROTOARGs((
1590   CDFid id, int grzEntry, long attrNum, long entryNum, long *dataType,
1591   long *numElems
1592 ));
1593 VISIBLE_PREFIX CDFstatus CDFinquireAttrInfo PROTOARGs((
1594   CDFid id, int zEntry, long attrNum, char *attrName, long *attrScope,
1595   long *maxEntry
1596 ));
1597 VISIBLE_PREFIX CDFstatus CDFputAttrEntry PROTOARGs((
1598   CDFid id, int grzEntry, long attrNum, long entryNum, long dataType,
1599   long numElems, void *value
1600 ));
1601 VISIBLE_PREFIX CDFstatus CDFgetAttrEntry PROTOARGs((
1602   CDFid id, int grzEntry, long attrNum, long entryNum, void *value
1603 ));
1604 VISIBLE_PREFIX CDFstatus CDFdeleteAttrEntry PROTOARGs((
1605   CDFid id, int grzEntry, long attrNum, long entryNum
1606 ));
1607 VISIBLE_PREFIX CDFstatus CDFsetAttrEntryDataSpec PROTOARGs((
1608   CDFid id, int grzEntry, long attrNum, long entryNum, long dataType,
1609   long numElems
1610 ));
1611 VISIBLE_PREFIX long CDFgetAttrNum PROTOARGs((CDFid id, char *attrName));
1612 VISIBLE_PREFIX long CDFgetVarNum PROTOARGs((CDFid id, char *varName));
1613 VISIBLE_PREFIX CDFstatus CDFgetNumAttrEntries PROTOARGs((
1614   CDFid id, int grzEntry, long attrNum, long *numEntries
1615 ));
1616 VISIBLE_PREFIX CDFstatus CDFgetAttrMaxEntry PROTOARGs((
1617   CDFid id, int grzEntry, long attrNum, long *maxEntry
1618 ));
1619 VISIBLE_PREFIX CDFstatus CDFgetAttrEntryDataType PROTOARGs((
1620   CDFid id, int grzEntry, long attrNum, long entryNum, long *dataType
1621 ));
1622 VISIBLE_PREFIX CDFstatus CDFgetAttrEntryNumElements PROTOARGs((
1623   CDFid id, int grzEntry, long attrNum, long entryNum, long *numElements
1624 ));
1625 VISIBLE_PREFIX CDFstatus CDFgetVarRecordData PROTOARGs((
1626   CDFid id, int zVar, long varNum, long recNum, void *buffer
1627 ));
1628 VISIBLE_PREFIX CDFstatus CDFputVarRecordData PROTOARGs((
1629   CDFid id, int zVar, long varNum, long recNum, void *buffer
1630 ));
1631 VISIBLE_PREFIX CDFstatus CDFgetVarsRecordDatabyNames PROTOARGs((
1632   CDFid id, int zVar, long numVars, char *varNames[], long recNum,
1633   void *buffer[]
1634 ));
1635 VISIBLE_PREFIX CDFstatus CDFputVarsRecordDatabyNames PROTOARGs((
1636   CDFid id, int zVar, long numVars, char *varNames[], long recNum,
1637   void *buffer[]
1638 ));
1639 VISIBLE_PREFIX void CDFsetFileBackward PROTOARGs((
1640   int flag
1641 ));
1642 VISIBLE_PREFIX void CDFsetFileBackwardFlag PROTOARGs((
1643   int flag
1644 ));
1645 VISIBLE_PREFIX int CDFgetFileBackward PROTOARGs(());
1646 VISIBLE_PREFIX int CDFgetFileBackwardFlag PROTOARGs(());
1647 VISIBLE_PREFIX void CDFsetChecksumMode PROTOARGs((
1648   long flag
1649 ));
1650 VISIBLE_PREFIX long CDFgetChecksumMode PROTOARGs(());
1651 VISIBLE_PREFIX int CDFgetFileBackwardEnvVar PROTOARGs(());
1652 VISIBLE_PREFIX void CDFsetValidate PROTOARGs((long mode));
1653 VISIBLE_PREFIX int CDFgetValidate PROTOARGs(());
1654 VISIBLE_PREFIX int CDFgetValidateDebug PROTOARGs(());
1655 #if !defined(__CFM68K__) || defined(__USING_STATIC_LIBS__) || !defined(CFM68KDLL)
1656 VISIBLE_PREFIX void EPOCHbreakdown PROTOARGs((
1657   double epoch, long *year, long *month, long *day, long *hour, long *minute,
1658   long *second, long *msec
1659 ));
1660 VISIBLE_PREFIX double computeEPOCH PROTOARGs((
1661   long year, long month, long day, long hour, long minute, long second,
1662   long msec
1663 ));
1664 VISIBLE_PREFIX double parseEPOCH PROTOARGs((char *inString));
1665 VISIBLE_PREFIX double parseEPOCH1 PROTOARGs((char *inString));
1666 VISIBLE_PREFIX double parseEPOCH2 PROTOARGs((char *inString));
1667 VISIBLE_PREFIX double parseEPOCH3 PROTOARGs((char *inString));
1668 VISIBLE_PREFIX void encodeEPOCH PROTOARGs((
1669   double epoch, char epString[EPOCH_STRING_LEN+1]
1670 ));
1671 VISIBLE_PREFIX void encodeEPOCH1 PROTOARGs((
1672   double epoch, char epString[EPOCH1_STRING_LEN+1]
1673 ));
1674 VISIBLE_PREFIX void encodeEPOCH2 PROTOARGs((
1675   double epoch, char epString[EPOCH2_STRING_LEN+1]
1676 ));
1677 VISIBLE_PREFIX void encodeEPOCH3 PROTOARGs((
1678   double epoch, char epString[EPOCH3_STRING_LEN+1]
1679 ));
1680 VISIBLE_PREFIX void encodeEPOCHx PROTOARGs((
1681   double epoch, char format[EPOCHx_FORMAT_MAX],
1682   char encoded[EPOCHx_STRING_MAX]
1683 ));
1684 VISIBLE_PREFIX void EPOCH16breakdown PROTOARGs((
1685   double epoch[], long *year, long *month, long *day, long *hour,
1686   long *minute, long *second, long *msec, long *usec, long *nsec, long *psec
1687 ));
1688 VISIBLE_PREFIX double computeEPOCH16 PROTOARGs((
1689   long year, long month, long day, long hour, long minute, long second,
1690   long msec, long usec, long nsec, long psec, double epoch[]
1691 ));
1692 VISIBLE_PREFIX double parseEPOCH16 PROTOARGs((char *inString,
1693   double epoch[]
1694 ));
1695 VISIBLE_PREFIX double parseEPOCH16_1 PROTOARGs((char *inStringch,
1696   double epoch[]
1697 ));
1698 VISIBLE_PREFIX double parseEPOCH16_2 PROTOARGs((char *inStringch,
1699   double epoch[]
1700 ));
1701 VISIBLE_PREFIX double parseEPOCH16_3 PROTOARGs((char *inStringch,
1702   double epoch[]
1703 ));
1704 VISIBLE_PREFIX void encodeEPOCH16 PROTOARGs((
1705   double epoch[], char epString[EPOCH16_STRING_LEN+1]
1706 ));
1707 VISIBLE_PREFIX void encodeEPOCH16_1 PROTOARGs((
1708   double epoch[], char epString[EPOCH16_1_STRING_LEN+1]
1709 ));
1710 VISIBLE_PREFIX void encodeEPOCH16_2 PROTOARGs((
1711   double epoch[], char epString[EPOCH16_2_STRING_LEN+1]
1712 ));
1713 VISIBLE_PREFIX void encodeEPOCH16_3 PROTOARGs((
1714   double epoch[], char epString[EPOCH16_3_STRING_LEN+1]
1715 ));
1716 VISIBLE_PREFIX void encodeEPOCH16_x PROTOARGs((
1717   double epoch[], char format[EPOCHx_FORMAT_MAX], char encoded[EPOCHx_STRING_MAX]
1718 ));
1719 #endif
1720 #if defined(__cplusplus)
1721 }
1722 #endif
1723 
1724 /******************************************************************************
1725 * Synonyms for compatibility with older releases.
1726 ******************************************************************************/
1727 
1728 #define CDF_DOCUMENT_LEN	        CDF_COPYRIGHT_LEN
1729 #define CDF_ERRTEXT_LEN         	CDF_STATUSTEXT_LEN
1730 #define CDF_NUMDIMS_            	rVARs_NUMDIMS_
1731 #define CDF_DIMSIZES_           	rVARs_DIMSIZES_
1732 #define CDF_MAXREC_             	rVARs_MAXREC_
1733 #define CDF_RECNUMBER_          	rVARs_RECNUMBER_
1734 #define CDF_RECCOUNT_           	rVARs_RECCOUNT_
1735 #define CDF_RECINTERVAL_        	rVARs_RECINTERVAL_
1736 #define CDF_DIMINDICES_         	rVARs_DIMINDICES_
1737 #define CDF_DIMCOUNTS_          	rVARs_DIMCOUNTS_
1738 #define CDF_DIMINTERVALS_       	rVARs_DIMINTERVALS_
1739 #define CDF_NUMVARS_            	CDF_NUMrVARS_
1740 #define VAR_                    	rVAR_
1741 #define VAR_NAME_               	rVAR_NAME_
1742 #define VAR_DATATYPE_           	rVAR_DATATYPE_
1743 #define VAR_NUMELEMS_           	rVAR_NUMELEMS_
1744 #define VAR_RECVARY_            	rVAR_RECVARY_
1745 #define VAR_DIMVARYS_           	rVAR_DIMVARYS_
1746 #define VAR_NUMBER_             	rVAR_NUMBER_
1747 #define VAR_DATA_               	rVAR_DATA_
1748 #define VAR_HYPERDATA_          	rVAR_HYPERDATA_
1749 #define VAR_SEQDATA_            	rVAR_SEQDATA_
1750 #define VAR_SEQPOS_             	rVAR_SEQPOS_
1751 #define VAR_MAXREC_             	rVAR_MAXREC_
1752 #define VAR_DATASPEC_           	rVAR_DATASPEC_
1753 #define VAR_FILLVALUE_          	rVAR_PADVALUE_
1754 #define VAR_INITIALRECS_        	rVAR_INITIALRECS_
1755 #define VAR_EXTENDRECS_         	rVAR_BLOCKINGFACTOR_
1756 #define ATTR_MAXENTRY_          	ATTR_MAXrENTRY_
1757 #define ATTR_NUMENTRIES_        	ATTR_NUMrENTRIES_
1758 #define ENTRY_                  	rENTRY_
1759 #define ENTRY_DATATYPE_         	rENTRY_DATATYPE_
1760 #define ENTRY_NUMELEMS_         	rENTRY_NUMELEMS_
1761 #define ENTRY_DATA_             	rENTRY_DATA_
1762 #define MIPSEL_ENCODING			DECSTATION_ENCODING
1763 #define MIPSEB_ENCODING			SGi_ENCODING
1764 #define rVAR_EXISTANCE_			rVAR_EXISTENCE_
1765 #define zVAR_EXISTANCE_			zVAR_EXISTENCE_
1766 #define ATTR_EXISTANCE_			ATTR_EXISTENCE_
1767 #define gENTRY_EXISTANCE_		gENTRY_EXISTENCE_
1768 #define rENTRY_EXISTANCE_		rENTRY_EXISTENCE_
1769 #define zENTRY_EXISTANCE_		zENTRY_EXISTENCE_
1770 #define GLOBAL_SCOPE_ASSUMED		GLOBAL_SCOPE
1771 #define VARIABLE_SCOPE_ASSUMED		VARIABLE_SCOPE
1772 #define BAD_EXTEND_RECS			BAD_BLOCKING_FACTOR
1773 #define rVAR_EXTENDRECS_		rVAR_BLOCKINGFACTOR_
1774 #define zVAR_EXTENDRECS_		zVAR_BLOCKINGFACTOR_
1775 #define COL_MAJOR			COLUMN_MAJOR
1776 #define NONE_CHECKSUM			NO_CHECKSUM
1777 
1778 #define StrlaststrIgCase		StrLaststrIgCase
1779 #define Strlaststr                      StrLaststr
1780 
1781 /*****************************************************************************/
1782 
1783 #endif
1784