/****************************************************************************** * * NSSDC/CDF CDF Standard Interface (I) /FORTRAN. * * Version 2.7, 14-Feb-96, Hughes STX. * * Modification history: * * V1.0 22-Jan-91, J Love Original version (for CDF V2.0). * V1.1 11-Feb-91, J Love Fixed max_rec in CDF_inquire. * V2.0 1-Jun-91, J Love Renamed (was CDF_V2_FORTRAN_IF.C). Changed * for new CDF V2.1 internal structures. Also * calls INTERNAL i/f directly rather than using * C i/f. * V2.1 30-Jul-91, J Love Use 'CDFlib'. If variable data type is CHAR * or UCHAR, check for %DESCR (if VMS). * V2.2 20-May-92, J Love Modified for IBM-PC port (Microsoft C/FORTRAN * necessary). CDF V2.2. * V2.3 2-Sep-92, J Love CDF V2.3 (shareable/NeXT). * V2.4 18-Oct-93, J Love CDF V2.4 (DEC Alpha ports [`int' != `long']). * V2.4a 2-Mar-94, J Love Fixed `CDF_create' (dimensionality checking). * V2.5 9-Nov-94, J Love CDF V2.5. * V2.6 19-Jan-95, J Love IRIX 6.0 (64-bit). * V2.6a 13-Jun-95, J Love Linux. * V2.7 14-Feb-96, J Love CDF V2.6 (renamed - previously `cdf_f_if.c'). * V3.0 28-Aug-01, M Liu Add CDF_getrVarsRecordData, * CDF_getzVarsRecordData, CDF_putrVarsRecordData, * CDF_putzVarsRecordData. * V3.1 26-May-05, M Liu Initial version (for CDF V3.1). * ******************************************************************************/ /****************************************************************************** * * Notes: * * For the FORTRAN interfaces everything is indexed from one (1) while for * the C interfaces everything is indexed from zero (0) [eg. variable and * attribute numbers, record numbers, indices, entry numbers]. For this * reason one (1) is subtracted from arguments passed in while one (1) is * added to arguments passed out (where appropriate). * * The FORTRAN interfaces use INTEGER*4 as the data type for all numerical * values passed in/out while the C interfaces use `long'. These are the same * on all supported platforms except the DEC Alpha (where `long' is 8 bytes). * For this reason temporary variables/arrays of size `long' are used in the * calls to the CDF library (the direct C interface). This causes a small * performance loss on the other platforms mainly when calling CDF_var_get or * CDF_var_put (but then CDF_var_hyper_get and CDF_var_hyper_put should have * been used instead). * ******************************************************************************/ /****************************************************************************** * * Notes for VMS version: * * To make the user's life a little easier, all names and attribute * values (for attributes of data types CDF_CHAR and CDF_UCHAR) may be passed * in and out by either reference or descriptor. The default passing mode * for an embedded character string (e.g., CALL subr (..., 'string', ...)) or * a CHARACTER variable symbol (e.g., CALL subr (..., ATTR_NAME, ...) where * ATTR_NAME is defined as CHARACTER*8) is by descriptor when passing from * FORTRAN to C in VMS. * * An embedded character string could be enclosed in %REF() to force * passing by reference since the FORTRAN compiler puts a NUL character at * the end of these strings as expected by the CDF V2.0 library (written in * C). Enclosing a CHARACTER variable symbol in %REF() will result in * an error, however, because a NUL character is not placed at the ends of * these type strings by the FORTRAN compiler. The user would have to * supply the terminating NUL. By letting the passing mode default to * by-descriptor, this interface will supply the terminating NUL. * * The main difference here from CDF Version 1 is that the %REF() is * not needed when passing out names and attribute values. Also, variable * values for character variables need not be enclosed in %REF(). * ******************************************************************************/ /****************************************************************************** * * Notes for UNIX version: * * All passing between FORTRAN and C on UNIX systems is done by reference. * When character strings are passed between FORTRAN and C, extra arguments * are added to the argument list containing the lengths of those character * strings (EXCEPT on NeXT machines - FORTRAN applications must NUL-terminate * passed character strings). * * Entry points have been made lowercase because the FORTRAN compiler * converts all uppercase characters to lowercase in entry points. This way * the linker will find everything. Unix FORTRAN compilers and linkers also * seem to like trailing '_'s (except on the IBM-RS6000/AIX, HP9000/HP-UX, * and NeXT/Mach). * ******************************************************************************/ /****************************************************************************** * * Notes for IBM PC version: * * The Standard Interface/FORTRAN is supported for the Microsoft FORTRAN * compiler. Microsoft C must be used to compile/link the CDF library * (including this file). * ******************************************************************************/ /****************************************************************************** * * Notes for Macintosh version (MPW Fortran): * * The Standard Interface/FORTRAN is supported for the MPW FORTRAN compiler. * MPW C must be used to compile/link the CDF library (including this file). * ******************************************************************************/ #include "cdflib.h" #include "cdflib64.h" /****************************************************************************** * CDF_create. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_create__,cdf_create_,cdf_create,CDF_CREATE) (CDF_name, num_dims, dim_sizes, encoding, majority, id, status Fif_GHOSTARG(len)) char *CDF_name; /* In: CDF name. */ Int32 *num_dims; /* In: Number of dimensions. */ Int32 dim_sizes[]; /* In: Dimension sizes. */ Int32 *encoding; /* In: Host or network. */ Int32 *majority; /* In: Row or column major. */ Int32 *id; /* Out: CDF identifier. */ Int32 *status; /* Out: CDF status code. */ Fif_GHOSTDEF(len) /* Invisible length of "CDF_name" (generated by FORTRAN compiler). */ { struct STRINGstruct *ssh = NULL; /* Head of STRINGstruct linked list. */ int dimN; long dimSizesT[CDF_MAX_DIMS]; CDFid idT; long num_dimsT = (long) *num_dims; long encodingT = (long) *encoding; long majorityT = (long) *majority; if (num_dimsT < 0 || num_dimsT > CDF_MAX_DIMS) { *status = (Int32) BAD_NUM_DIMS; return; } for (dimN = 0; dimN < num_dimsT; dimN++) { dimSizesT[dimN] = (long) dim_sizes[dimN]; } *status = (Int32) CDFlib (CREATE_, CDF_, #if defined(Fif_DESCR) DESCRtoREFnul(CDF_name, CDF_PATHNAME_LEN, &ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(CDF_name, Fif_GHOSTUSE(len), &ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(CDF_name, CDF_PATHNAME_LEN,&ssh), #endif num_dimsT, dimSizesT, &idT, NULL_); FreeStrings (ssh); if (StatusBAD(*status)) return; *status = (Int32) CDFlib (PUT_, CDF_ENCODING_, encodingT, CDF_MAJORITY_, majorityT, NULL_); if (StatusBAD(*status)) { CDFlib (DELETE_, CDF_, NULL_); return; } *id = CDFidToInt32 (idT); return; } /****************************************************************************** * CDF_create_cdf. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_create_cdf__, cdf_create_cdf_, cdf_create_cdf, CDF_CREATE_CDF) (CDF_name, id, status Fif_GHOSTARG(len)) char *CDF_name; /* In: CDF name. */ Int32 *id; /* Out: CDF identifier. */ Int32 *status; /* Out: CDF status code. */ Fif_GHOSTDEF(len) /* Invisible length of "CDF_name" (generated by FORTRAN compiler). */ { struct STRINGstruct *ssh = NULL; /* Head of STRINGstruct linked list. */ long dimSizesT[1] = {0}; CDFid idT; *status = (Int32) CDFlib (CREATE_, CDF_, #if defined(Fif_DESCR) DESCRtoREFnul(CDF_name, CDF_PATHNAME_LEN, &ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(CDF_name, Fif_GHOSTUSE(len), &ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(CDF_name, CDF_PATHNAME_LEN,&ssh), #endif 0L, dimSizesT, &idT, NULL_); FreeStrings (ssh); if (StatusBAD(*status)) return; *id = CDFidToInt32 (idT); return; } /****************************************************************************** * CDF_open. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_open__,cdf_open_,cdf_open,CDF_OPEN) (CDF_name, id, status Fif_GHOSTARG(len)) void *CDF_name; /* In: CDF name. */ Int32 *id; /* Out: CDF identifier. */ Int32 *status; /* Out: CDF status code. */ Fif_GHOSTDEF(len) /* Invisible length of "CDF_name" (generated by FORTRAN compiler). */ { struct STRINGstruct *ssh = NULL; /* Head of STRINGstruct linked list. */ CDFid idT; *status = (Int32) CDFlib (OPEN_, CDF_, #if defined(Fif_DESCR) DESCRtoREFnul(CDF_name, CDF_PATHNAME_LEN,&ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(CDF_name, Fif_GHOSTUSE(len),&ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(CDF_name,CDF_PATHNAME_LEN, &ssh), #endif &idT, NULL_); FreeStrings (ssh); if (StatusBAD(*status)) return; *id = CDFidToInt32 (idT); return; } /****************************************************************************** * CDF_open_cdf. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_open_cdf__,cdf_open_cdf_,cdf_open_cdf,CDF_OPEN_CDF) (CDF_name, id, status Fif_GHOSTARG(len)) void *CDF_name; /* In: CDF name. */ Int32 *id; /* Out: CDF identifier. */ Int32 *status; /* Out: CDF status code. */ Fif_GHOSTDEF(len) /* Invisible length of "CDF_name" (generated by FORTRAN compiler). */ { struct STRINGstruct *ssh = NULL; /* Head of STRINGstruct linked list. */ CDFid idT; *status = (Int32) CDFlib (OPEN_, CDF_, #if defined(Fif_DESCR) DESCRtoREFnul(CDF_name, CDF_PATHNAME_LEN,&ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(CDF_name, Fif_GHOSTUSE(len),&ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(CDF_name,CDF_PATHNAME_LEN, &ssh), #endif &idT, NULL_); FreeStrings (ssh); if (StatusBAD(*status)) return; *id = CDFidToInt32 (idT); return; } /****************************************************************************** * CDF_doc. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_doc__,cdf_doc_,cdf_doc,CDF_DOC) (id, version, release, text, status Fif_GHOSTARG(text_len)) Int32 *id; /* In: CDF identifier. */ Int32 *version; /* Out: CDF version number (creating library version number). */ Int32 *release; /* Out: CDF release number (creating library release number). */ void *text; /* Out: Copyright text. */ Int32 *status; /* Out: CDF status code. */ Fif_GHOSTDEF(text_len) /* Invisible length of "text" (generated by FORTRAN compiler). */ { char copyRightTextT[CDF_COPYRIGHT_LEN+1]; long versionT, releaseT; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), GET_, CDF_VERSION_, &versionT, CDF_RELEASE_, &releaseT, CDF_COPYRIGHT_, copyRightTextT, NULL_); if (StatusBAD(*status)) return; *version = (Int32) versionT; *release = (Int32) releaseT; #if defined(Fif_GHOSTLEN) CtoFORTstring (copyRightTextT, text, Fif_GHOSTUSE(text_len)); #else CtoFORTstring (copyRightTextT, text, CDF_COPYRIGHT_LEN); #endif return; } /****************************************************************************** * CDF_inquire. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_inquire__,cdf_inquire_,cdf_inquire,CDF_INQUIRE) (id, num_dims, dim_sizes, encoding, majority, max_rec, num_vars, num_attrs, status) Int32 *id; /* In: CDF identifier. */ Int32 *num_dims; /* Out: Number of rDimensions. */ Int32 dim_sizes[]; /* Out: rDimension sizes. */ Int32 *encoding; /* Out: Host or network. */ Int32 *majority; /* Out: Row or column major. */ Int32 *max_rec; /* Out: Maximum rRecord number. */ Int32 *num_vars; /* Out: Number of rVariables. */ Int32 *num_attrs; /* Out: Number of attributes. */ Int32 *status; /* Out: CDF status code. */ { long maxRecT, numDimsT, dimSizesT[CDF_MAX_DIMS], encodingT, majorityT, numVarsT, numAttrsT; int dimN; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), GET_, rVARs_NUMDIMS_, &numDimsT, rVARs_DIMSIZES_, dimSizesT, CDF_ENCODING_, &encodingT, CDF_MAJORITY_, &majorityT, rVARs_MAXREC_, &maxRecT, CDF_NUMrVARS_, &numVarsT, CDF_NUMATTRS_, &numAttrsT, NULL_); if (StatusBAD(*status)) return; *num_dims = (Int32) numDimsT; for (dimN = 0; dimN < (int) numDimsT; dimN++) { dim_sizes[dimN] = (Int32) dimSizesT[dimN]; } *encoding = (Int32) encodingT; *majority = (Int32) majorityT; *max_rec = (Int32) (maxRecT + 1); *num_vars = (Int32) numVarsT; *num_attrs = (Int32) numAttrsT; return; } /****************************************************************************** * CDF_inquire_cdf. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_inquire_cdf__,cdf_inquire_cdf_,cdf_inquire_cdf, CDF_INQUIRE_CDF) (id, num_dims, dim_sizes, encoding, majority, max_rrec, num_rvars, max_zrec, num_zvars, num_attrs, status) Int32 *id; /* In: CDF identifier. */ Int32 *num_dims; /* Out: Number of rDimensions. */ Int32 dim_sizes[]; /* Out: rDimension sizes. */ Int32 *encoding; /* Out: Host or network. */ Int32 *majority; /* Out: Row or column major. */ Int32 *max_rrec; /* Out: Maximum rRecord number. */ Int32 *num_rvars; /* Out: Number of rVariables. */ Int32 *max_zrec; /* Out: Maximum zRecord number. */ Int32 *num_zvars; /* Out: Number of zVariables. */ Int32 *num_attrs; /* Out: Number of attributes. */ Int32 *status; /* Out: CDF status code. */ { long maxrRecT, numDimsT, dimSizesT[CDF_MAX_DIMS], encodingT, majorityT, numrVarsT, numAttrsT, numzVarsT, maxzRecT; int dimN; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), GET_, rVARs_NUMDIMS_, &numDimsT, rVARs_DIMSIZES_, dimSizesT, CDF_ENCODING_, &encodingT, CDF_MAJORITY_, &majorityT, rVARs_MAXREC_, &maxrRecT, CDF_NUMrVARS_, &numrVarsT, zVARs_MAXREC_, &maxzRecT, CDF_NUMzVARS_, &numzVarsT, CDF_NUMATTRS_, &numAttrsT, NULL_); if (StatusBAD(*status)) return; *num_dims = (Int32) numDimsT; for (dimN = 0; dimN < (int) numDimsT; dimN++) { dim_sizes[dimN] = (Int32) dimSizesT[dimN]; } *encoding = (Int32) encodingT; *majority = (Int32) majorityT; *max_rrec = (Int32) (maxrRecT + 1); *num_rvars = (Int32) numrVarsT; *num_attrs = (Int32) numAttrsT; *max_zrec = (Int32) (maxzRecT + 1); *num_zvars = (Int32) numzVarsT; return; } /****************************************************************************** * CDF_close. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_close__,cdf_close_,cdf_close,CDF_CLOSE) (id, status) Int32 *id; /* In: CDF identifier. */ Int32 *status; /* Out: CDF status code. */ { *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), CLOSE_, CDF_, NULL_); return; } /****************************************************************************** * CDF_close_cdf. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_close_cdf__,cdf_close_cdf_,cdf_close_cdf,CDF_CLOSE_CDF) (id, status) Int32 *id; /* In: CDF identifier. */ Int32 *status; /* Out: CDF status code. */ { *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), CLOSE_, CDF_, NULL_); return; } /****************************************************************************** * CDF_delete. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_delete__,cdf_delete_,cdf_delete,CDF_DELETE) (id, status) Int32 *id; /* In: CDF identifier. */ Int32 *status; /* Out: CDF status code. */ { *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), DELETE_, CDF_, NULL_); return; } /****************************************************************************** * CDF_delete_cdf. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_delete_cdf__,cdf_delete_cdf_,cdf_delete_cdf,CDF_DELETE_CDF) (id, status) Int32 *id; /* In: CDF identifier. */ Int32 *status; /* Out: CDF status code. */ { *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), DELETE_, CDF_, NULL_); return; } /****************************************************************************** * CDF_attr_create. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_attr_create__, cdf_attr_create_, cdf_attr_create, CDF_ATTR_CREATE) (id, attr_name, attr_scope, attr_num, status Fif_GHOSTARG(len)) Int32 *id; /* In: CDF identifier. */ void *attr_name; /* In: Attribute name. */ Int32 *attr_scope; /* In: Attribute scope. */ Int32 *attr_num; /* Out: Attribute number. */ Int32 *status; /* Out: CDF status code. */ Fif_GHOSTDEF(len) /* Invisible length of "attr_name" (generated by FORTRAN compiler). */ { struct STRINGstruct *ssh = NULL; /* Head of STRINGstruct linked list. */ long attrNumT; long scopeT = (long) *attr_scope; int LFS = FALSE; struct CDFstruct *CDF; CDF = (struct CDFstruct *)Int32ToCDFid(*id); if (isLFS(CDF)) LFS = TRUE; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), CREATE_, ATTR_, #if defined(Fif_DESCR) DESCRtoREFnul(attr_name, (LFS ? CDF_ATTR_NAME_LEN256 : CDF_ATTR_NAME_LEN), &ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(attr_name, Fif_GHOSTUSE(len), &ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(attr_name, (LFS ? CDF_ATTR_NAME_LEN256 : CDF_ATTR_NAME_LEN), &ssh), #endif scopeT, &attrNumT, NULL_); FreeStrings (ssh); if (StatusBAD(*status)) return; *attr_num = (Int32) (attrNumT + 1); return; } /****************************************************************************** * CDF_create_attr. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_create_attr__, cdf_create_attr_, cdf_create_attr, CDF_CREATE_ATTR) (id, attr_name, attr_scope, attr_num, status Fif_GHOSTARG(len)) Int32 *id; /* In: CDF identifier. */ void *attr_name; /* In: Attribute name. */ Int32 *attr_scope; /* In: Attribute scope. */ Int32 *attr_num; /* Out: Attribute number. */ Int32 *status; /* Out: CDF status code. */ Fif_GHOSTDEF(len) /* Invisible length of "attr_name" (generated by FORTRAN compiler). */ { struct STRINGstruct *ssh = NULL; /* Head of STRINGstruct linked list. */ long attrNumT; long scopeT = (long) *attr_scope; int LFS = FALSE; struct CDFstruct *CDF; CDF = (struct CDFstruct *)Int32ToCDFid(*id); if (isLFS(CDF)) LFS = TRUE; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), CREATE_, ATTR_, #if defined(Fif_DESCR) DESCRtoREFnul(attr_name, (LFS ? CDF_ATTR_NAME_LEN256 : CDF_ATTR_NAME_LEN), &ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(attr_name, Fif_GHOSTUSE(len), &ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(attr_name, (LFS ? CDF_ATTR_NAME_LEN256 : CDF_ATTR_NAME_LEN), &ssh), #endif scopeT, &attrNumT, NULL_); FreeStrings (ssh); if (StatusBAD(*status)) return; *attr_num = (Int32) (attrNumT + 1); return; } /****************************************************************************** * CDF_attr_num. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa Int32 Fif_PREFIXb Fif_ENTRYPOINT(cdf_attr_num__,cdf_attr_num_,cdf_attr_num,CDF_ATTR_NUM) (id, attr_name Fif_GHOSTARG(len)) Int32 *id; /* In: CDF identifier. */ void *attr_name; /* In: Attribute name. */ Fif_GHOSTDEF(len) /* Invisible length of "attr_name" (generated by FORTRAN compiler). */ { struct STRINGstruct *ssh = NULL; /* Head of STRINGstruct linked list. */ CDFstatus status; long attrNumT; int LFS = FALSE; struct CDFstruct *CDF; CDF = (struct CDFstruct *)Int32ToCDFid(*id); if (isLFS(CDF)) LFS = TRUE; status = CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), GET_, ATTR_NUMBER_, #if defined(Fif_DESCR) DESCRtoREFnul(attr_name, (LFS ? CDF_ATTR_NAME_LEN256 : CDF_ATTR_NAME_LEN), &ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(attr_name, Fif_GHOSTUSE(len),&ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(attr_name, (LFS ? CDF_ATTR_NAME_LEN256 : CDF_ATTR_NAME_LEN), &ssh), #endif &attrNumT, NULL_); FreeStrings (ssh); if (StatusOK(status)) return ((Int32) (attrNumT + 1)); else return ((Int32) status); } /****************************************************************************** * CDF_get_attr_num. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa Int32 Fif_PREFIXb Fif_ENTRYPOINT(cdf_get_attr_num__,cdf_get_attr_num_,cdf_get_attr_num, CDF_GET_ATTR_NUM) (id, attr_name Fif_GHOSTARG(len)) Int32 *id; /* In: CDF identifier. */ void *attr_name; /* In: Attribute name. */ Fif_GHOSTDEF(len) /* Invisible length of "attr_name" (generated by FORTRAN compiler). */ { struct STRINGstruct *ssh = NULL; /* Head of STRINGstruct linked list. */ CDFstatus status; long attrNumT; int LFS = FALSE; struct CDFstruct *CDF; CDF = (struct CDFstruct *)Int32ToCDFid(*id); if (isLFS(CDF)) LFS = TRUE; status = CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), GET_, ATTR_NUMBER_, #if defined(Fif_DESCR) DESCRtoREFnul(attr_name, (LFS ? CDF_ATTR_NAME_LEN256 : CDF_ATTR_NAME_LEN), &ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(attr_name, Fif_GHOSTUSE(len),&ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(attr_name, (LFS ? CDF_ATTR_NAME_LEN256 : CDF_ATTR_NAME_LEN), &ssh), #endif &attrNumT, NULL_); FreeStrings (ssh); if (StatusOK(status)) return ((Int32) (attrNumT + 1)); else return ((Int32) status); } /****************************************************************************** * CDF_attr_rename. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_attr_rename__, cdf_attr_rename_, cdf_attr_rename, CDF_ATTR_RENAME) (id, attr_num, attr_name, status Fif_GHOSTARG(len)) Int32 *id; /* In: CDF identifier. */ Int32 *attr_num; /* In: Attribute number. */ void *attr_name; /* In: New attribute name. */ Int32 *status; /* Out: CDF status code. */ Fif_GHOSTDEF(len) /* Invisible length of "attr_name" (generated by FORTRAN compiler). */ { struct STRINGstruct *ssh = NULL; /* Head of STRINGstruct linked list. */ long attrNumT = (long) (*attr_num - 1); int LFS = FALSE; struct CDFstruct *CDF; CDF = (struct CDFstruct *)Int32ToCDFid(*id); if (isLFS(CDF)) LFS = TRUE; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), ATTR_, attrNumT, PUT_, ATTR_NAME_, #if defined(Fif_DESCR) DESCRtoREFnul(attr_name, (LFS ? CDF_ATTR_NAME_LEN256 : CDF_ATTR_NAME_LEN), &ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(attr_name, Fif_GHOSTUSE(len), &ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(attr_name, (LFS ? CDF_ATTR_NAME_LEN256 : CDF_ATTR_NAME_LEN), &ssh), #endif NULL_); FreeStrings (ssh); return; } /****************************************************************************** * CDF_rename_attr. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_rename_attr__, cdf_rename_attr_, cdf_rename_attr, CDF_RENAME_ATTR) (id, attr_num, attr_name, status Fif_GHOSTARG(len)) Int32 *id; /* In: CDF identifier. */ Int32 *attr_num; /* In: Attribute number. */ void *attr_name; /* In: New attribute name. */ Int32 *status; /* Out: CDF status code. */ Fif_GHOSTDEF(len) /* Invisible length of "attr_name" (generated by FORTRAN compiler). */ { struct STRINGstruct *ssh = NULL; /* Head of STRINGstruct linked list. */ long attrNumT = (long) (*attr_num - 1); int LFS = FALSE; struct CDFstruct *CDF; CDF = (struct CDFstruct *)Int32ToCDFid(*id); if (isLFS(CDF)) LFS = TRUE; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), ATTR_, attrNumT, PUT_, ATTR_NAME_, #if defined(Fif_DESCR) DESCRtoREFnul(attr_name, (LFS ? CDF_ATTR_NAME_LEN256 : CDF_ATTR_NAME_LEN), &ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(attr_name, Fif_GHOSTUSE(len), &ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(attr_name, (LFS ? CDF_ATTR_NAME_LEN256 : CDF_ATTR_NAME_LEN), &ssh), #endif NULL_); FreeStrings (ssh); return; } /****************************************************************************** * CDF_attr_inquire. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_attr_inquire__, cdf_attr_inquire_, cdf_attr_inquire, CDF_ATTR_INQUIRE) (id, attr_num, attr_name, attr_scope, max_entry, status Fif_GHOSTARG(len)) Int32 *id; /* In: CDF identifier. */ Int32 *attr_num; /* In: Attribute number. */ void *attr_name; /* Out: Attribute name. */ Int32 *attr_scope; /* Out: Attribute scope. */ Int32 *max_entry; /* Out: Maximum gEntry/rEntry number used. */ Int32 *status; /* Out: CDF status code. */ Fif_GHOSTDEF(len) /* Invisible length of "attr_name" (generated by FORTRAN compiler). */ { char attrNameT[CDF_ATTR_NAME_LEN256]; long maxEntryT, attrScopeT; long attrNumT = (long) (*attr_num - 1); *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), ATTR_, attrNumT, GET_, ATTR_NAME_, attrNameT, ATTR_SCOPE_, &attrScopeT, NULL_); if (StatusBAD(*status)) return; *status = (Int32) CDFlib (GET_, BOO(GLOBALscope(attrScopeT), ATTR_MAXgENTRY_, ATTR_MAXrENTRY_), &maxEntryT, NULL_); if (StatusBAD(*status)) return; #if defined(Fif_GHOSTLEN) CtoFORTstring (attrNameT, attr_name, Fif_GHOSTUSE(len)); #else CtoFORTstring (attrNameT, attr_name, CDF_ATTR_NAME_LEN256); #endif *attr_scope = (Int32) attrScopeT; *max_entry = (Int32) (maxEntryT + 1); return; } /****************************************************************************** * CDF_inquire_attr. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_inquire_attr__, cdf_inquire_attr_, cdf_inquire_attr, CDF_INQUIRE_ATTR) (id, attr_num, attr_name, attr_scope, max_gentry, max_rentry, max_zentry, status Fif_GHOSTARG(len)) Int32 *id; /* In: CDF identifier. */ Int32 *attr_num; /* In: Attribute number. */ void *attr_name; /* Out: Attribute name. */ Int32 *attr_scope; /* Out: Attribute scope. */ Int32 *max_gentry; /* Out: Maximum gEntry number if global attribute. */ Int32 *max_rentry; /* Out: Maximum rEntry number if variable attribute. */ Int32 *max_zentry; /* Out: Maximum zEntry number if variable attribute. */ Int32 *status; /* Out: CDF status code. */ Fif_GHOSTDEF(len) /* Invisible length of "attr_name" (generated by FORTRAN compiler). */ { char attrNameT[CDF_ATTR_NAME_LEN256]; long maxgEntryT = -1, maxrEntryT = -1, maxzEntryT = -1, attrScopeT; long attrNumT = (long) (*attr_num - 1); *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), ATTR_, attrNumT, GET_, ATTR_NAME_, attrNameT, ATTR_SCOPE_, &attrScopeT, NULL_); if (StatusBAD(*status)) return; if (GLOBALscope(attrScopeT)) { *status = (Int32) CDFlib (GET_, ATTR_MAXgENTRY_, &maxgEntryT, NULL_); if (StatusBAD(*status)) return; } else { *status = (Int32) CDFlib (GET_, ATTR_MAXrENTRY_, &maxrEntryT, ATTR_MAXzENTRY_, &maxzEntryT, NULL_); if (StatusBAD(*status)) return; } #if defined(Fif_GHOSTLEN) CtoFORTstring (attrNameT, attr_name, Fif_GHOSTUSE(len)); #else CtoFORTstring (attrNameT, attr_name, CDF_ATTR_NAME_LEN256); #endif *attr_scope = (Int32) attrScopeT; *max_gentry = (Int32) (maxgEntryT + 1); *max_rentry = (Int32) (maxrEntryT + 1); *max_zentry = (Int32) (maxzEntryT + 1); return; } /****************************************************************************** * CDF_attr_entry_inquire. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_attr_entry_inquire__, cdf_attr_entry_inquire_, cdf_attr_entry_inquire, CDF_ATTR_ENTRY_INQUIRE) (id, attr_num, entry_num, data_type, num_elements, status) Int32 *id; /* In: CDF identifier. */ Int32 *attr_num; /* In: Attribute number. */ Int32 *entry_num; /* In: gEntry/rEntry number. */ Int32 *data_type; /* Out: Data type. */ Int32 *num_elements; /* Out: Number of elements. */ Int32 *status; /* Out: CDF status code. */ { long dataTypeT, numElementsT, scope; long attrNumT = (long) (*attr_num - 1); long entryNumT = (long) (*entry_num - 1); *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), ATTR_, attrNumT, GET_, ATTR_SCOPE_, &scope, NULL_); if (StatusBAD(*status)) return; *status = (Int32) CDFlib (SELECT_, BOO(GLOBALscope(scope), gENTRY_,rENTRY_), entryNumT, GET_, BOO(GLOBALscope(scope), gENTRY_DATATYPE_, rENTRY_DATATYPE_), &dataTypeT, BOO(GLOBALscope(scope), gENTRY_NUMELEMS_, rENTRY_NUMELEMS_), &numElementsT, NULL_); if (StatusBAD(*status)) return; *data_type = (Int32) dataTypeT; *num_elements = (Int32) numElementsT; return; } /****************************************************************************** * CDF_inquire_attr_gentry. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_inquire_attr_gentry__, cdf_inquire_attr_gentry_, cdf_inquire_attr_gentry, CDF_INQUIRE_ATTR_GENTRY) (id, attr_num, entry_num, data_type, num_elements, status) Int32 *id; /* In: CDF identifier. */ Int32 *attr_num; /* In: Attribute number. */ Int32 *entry_num; /* In: gEntry number. */ Int32 *data_type; /* Out: Data type. */ Int32 *num_elements; /* Out: Number of elements. */ Int32 *status; /* Out: CDF status code. */ { long dataTypeT, numElementsT, scope; long attrNumT = (long) (*attr_num - 1); long entryNumT = (long) (*entry_num - 1); *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), ATTR_, attrNumT, GET_, ATTR_SCOPE_, &scope, NULL_); if (StatusBAD(*status)) return; if (!GLOBALscope(scope)) { *status = (Int32) ILLEGAL_FOR_SCOPE; return; } *status = (Int32) CDFlib (SELECT_, gENTRY_, entryNumT, GET_, gENTRY_DATATYPE_, &dataTypeT, gENTRY_NUMELEMS_, &numElementsT, NULL_); if (StatusBAD(*status)) return; *data_type = (Int32) dataTypeT; *num_elements = (Int32) numElementsT; return; } /****************************************************************************** * CDF_inquire_attr_rentry. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_inquire_attr_rentry__, cdf_inquire_attr_rentry_, cdf_inquire_attr_rentry, CDF_INQUIRE_ATTR_RENTRY) (id, attr_num, entry_num, data_type, num_elements, status) Int32 *id; /* In: CDF identifier. */ Int32 *attr_num; /* In: Attribute number. */ Int32 *entry_num; /* In: rEntry number. */ Int32 *data_type; /* Out: Data type. */ Int32 *num_elements; /* Out: Number of elements. */ Int32 *status; /* Out: CDF status code. */ { long dataTypeT, numElementsT, scope; long attrNumT = (long) (*attr_num - 1); long entryNumT = (long) (*entry_num - 1); *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), ATTR_, attrNumT, GET_, ATTR_SCOPE_, &scope, NULL_); if (StatusBAD(*status)) return; if (GLOBALscope(scope)) { *status = (Int32) ILLEGAL_FOR_SCOPE; return; } *status = (Int32) CDFlib (SELECT_, rENTRY_, entryNumT, GET_, rENTRY_DATATYPE_, &dataTypeT, rENTRY_NUMELEMS_, &numElementsT, NULL_); if (StatusBAD(*status)) return; *data_type = (Int32) dataTypeT; *num_elements = (Int32) numElementsT; return; } /****************************************************************************** * CDF_inquire_attr_zentry. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_inquire_attr_zentry__, cdf_inquire_attr_zentry_, cdf_inquire_attr_zentry, CDF_INQUIRE_ATTR_ZENTRY) (id, attr_num, entry_num, data_type, num_elements, status) Int32 *id; /* In: CDF identifier. */ Int32 *attr_num; /* In: Attribute number. */ Int32 *entry_num; /* In: zEntry number. */ Int32 *data_type; /* Out: Data type. */ Int32 *num_elements; /* Out: Number of elements. */ Int32 *status; /* Out: CDF status code. */ { long dataTypeT, numElementsT, scope; long attrNumT = (long) (*attr_num - 1); long entryNumT = (long) (*entry_num - 1); *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), ATTR_, attrNumT, GET_, ATTR_SCOPE_, &scope, NULL_); if (StatusBAD(*status)) return; if (GLOBALscope(scope)) { *status = (Int32) ILLEGAL_FOR_SCOPE; return; } *status = (Int32) CDFlib (SELECT_, zENTRY_, entryNumT, GET_, zENTRY_DATATYPE_, &dataTypeT, zENTRY_NUMELEMS_, &numElementsT, NULL_); if (StatusBAD(*status)) return; *data_type = (Int32) dataTypeT; *num_elements = (Int32) numElementsT; return; } /****************************************************************************** * CDF_attr_put. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_attr_put__,cdf_attr_put_,cdf_attr_put,CDF_ATTR_PUT) (id, attr_num, entry_num, data_type, num_elems, value, status) Int32 *id; /* In: CDF identifier. */ Int32 *attr_num; /* In: Attribute number. */ Int32 *entry_num; /* In: gEntry/rEntry number. */ Int32 *data_type; /* In: Data type. */ Int32 *num_elems; /* In: Number of elements. */ void *value; /* In: Value. VMS: If character data type, could be passed by reference or descriptor. */ Int32 *status; /* Out: CDF status code. */ { long scope; long attrNumT = (long) (*attr_num - 1); long entryNumT = (long) (*entry_num - 1); long dataTypeT = (long) *data_type; long numElemsT = (long) *num_elems; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), ATTR_, attrNumT, GET_, ATTR_SCOPE_, &scope, NULL_); if (StatusBAD(*status)) return; *status = (Int32) CDFlib (SELECT_, BOO(GLOBALscope(scope), gENTRY_,rENTRY_), entryNumT, PUT_, BOO(GLOBALscope(scope), gENTRY_DATA_,rENTRY_DATA_), dataTypeT, numElemsT, #if defined(Fif_DESCR) BOO(STRINGdataType(dataTypeT), DESCRtoREF(value),value), #else value, #endif NULL_); return; } /****************************************************************************** * CDF_put_attr_gentry. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_put_attr_gentry__, cdf_put_attr_gentry_, cdf_put_attr_gentry, CDF_PUT_ATTR_GENTRY) (id, attr_num, entry_num, data_type, num_elems, value, status) Int32 *id; /* In: CDF identifier. */ Int32 *attr_num; /* In: Attribute number. */ Int32 *entry_num; /* In: gEntry number. */ Int32 *data_type; /* In: Data type. */ Int32 *num_elems; /* In: Number of elements. */ void *value; /* In: Value. VMS: If character data type, could be passed by reference or descriptor. */ Int32 *status; /* Out: CDF status code. */ { long scope; long attrNumT = (long) (*attr_num - 1); long entryNumT = (long) (*entry_num - 1); long dataTypeT = (long) *data_type; long numElemsT = (long) *num_elems; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), ATTR_, attrNumT, GET_, ATTR_SCOPE_, &scope, NULL_); if (StatusBAD(*status)) return; if (!GLOBALscope(scope)) { *status = (Int32) ILLEGAL_FOR_SCOPE; return; } *status = (Int32) CDFlib (SELECT_, gENTRY_, entryNumT, PUT_, gENTRY_DATA_, dataTypeT, numElemsT, #if defined(Fif_DESCR) BOO(STRINGdataType(dataTypeT), DESCRtoREF(value),value), #else value, #endif NULL_); return; } /****************************************************************************** * CDF_put_attr_rentry. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_put_attr_rentry__, cdf_put_attr_rentry_, cdf_put_attr_rentry, CDF_PUT_ATTR_RENTRY) (id, attr_num, entry_num, data_type, num_elems, value, status) Int32 *id; /* In: CDF identifier. */ Int32 *attr_num; /* In: Attribute number. */ Int32 *entry_num; /* In: rEntry number. */ Int32 *data_type; /* In: Data type. */ Int32 *num_elems; /* In: Number of elements. */ void *value; /* In: Value. VMS: If character data type, could be passed by reference or descriptor. */ Int32 *status; /* Out: CDF status code. */ { long scope; long attrNumT = (long) (*attr_num - 1); long entryNumT = (long) (*entry_num - 1); long dataTypeT = (long) *data_type; long numElemsT = (long) *num_elems; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), ATTR_, attrNumT, GET_, ATTR_SCOPE_, &scope, NULL_); if (StatusBAD(*status)) return; if (GLOBALscope(scope)) { *status = (Int32) ILLEGAL_FOR_SCOPE; return; } *status = (Int32) CDFlib (SELECT_, rENTRY_, entryNumT, PUT_, rENTRY_DATA_, dataTypeT, numElemsT, #if defined(Fif_DESCR) BOO(STRINGdataType(dataTypeT), DESCRtoREF(value),value), #else value, #endif NULL_); return; } /****************************************************************************** * CDF_put_attr_zentry. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_put_attr_zentry__, cdf_put_attr_zentry_, cdf_put_attr_zentry, CDF_PUT_ATTR_ZENTRY) (id, attr_num, entry_num, data_type, num_elems, value, status) Int32 *id; /* In: CDF identifier. */ Int32 *attr_num; /* In: Attribute number. */ Int32 *entry_num; /* In: zEntry number. */ Int32 *data_type; /* In: Data type. */ Int32 *num_elems; /* In: Number of elements. */ void *value; /* In: Value. VMS: If character data type, could be passed by reference or descriptor. */ Int32 *status; /* Out: CDF status code. */ { long scope; long attrNumT = (long) (*attr_num - 1); long entryNumT = (long) (*entry_num - 1); long dataTypeT = (long) *data_type; long numElemsT = (long) *num_elems; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), ATTR_, attrNumT, GET_, ATTR_SCOPE_, &scope, NULL_); if (StatusBAD(*status)) return; if (GLOBALscope(scope)) { *status = (Int32) ILLEGAL_FOR_SCOPE; return; } *status = (Int32) CDFlib (SELECT_, zENTRY_, entryNumT, PUT_, zENTRY_DATA_, dataTypeT, numElemsT, #if defined(Fif_DESCR) BOO(STRINGdataType(dataTypeT), DESCRtoREF(value),value), #else value, #endif NULL_); return; } /****************************************************************************** * CDF_attr_entry. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_attr_get__, cdf_attr_get_, cdf_attr_get, CDF_ATTR_GET) (id, attr_num, entry_num, value, status) Int32 *id; /* In: CDF identifier. */ Int32 *attr_num; /* In: Attribute number. */ Int32 *entry_num; /* In: gEntry/rEntry number. */ void *value; /* Out: Value. VMS: Could be passed out by reference or descriptor if character data type. */ Int32 *status; /* Out: CDF status code. */ { long dataType, scope; long attrNumT = (long) (*attr_num - 1); long entryNumT = (long) (*entry_num - 1); *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), ATTR_, attrNumT, GET_, ATTR_SCOPE_, &scope, NULL_); if (StatusBAD(*status)) return; *status = (Int32) CDFlib (SELECT_, BOO(GLOBALscope(scope), gENTRY_,rENTRY_), entryNumT, GET_, BOO(GLOBALscope(scope), gENTRY_DATATYPE_, rENTRY_DATATYPE_), &dataType, NULL_); if (StatusBAD(*status)) return; *status = (Int32) CDFlib (GET_, BOO(GLOBALscope(scope), gENTRY_DATA_,rENTRY_DATA_), #if defined(Fif_DESCR) BOO(STRINGdataType(dataType), DESCRtoREF(value),value), #else value, #endif NULL_); return; } /****************************************************************************** * CDF_get_attr_gentry. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_get_attr_gentry__, cdf_get_attr_gentry_, cdf_get_attr_gentry, CDF_get_ATTR_GENTRY) (id, attr_num, entry_num, value, status) Int32 *id; /* In: CDF identifier. */ Int32 *attr_num; /* In: Attribute number. */ Int32 *entry_num; /* In: gEntry number. */ void *value; /* Out: Value. VMS: Could be passed out by reference or descriptor if character data type. */ Int32 *status; /* Out: CDF status code. */ { long dataType, scope; long attrNumT = (long) (*attr_num - 1); long entryNumT = (long) (*entry_num - 1); *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), ATTR_, attrNumT, GET_, ATTR_SCOPE_, &scope, NULL_); if (StatusBAD(*status)) return; if (!GLOBALscope(scope)) { *status = (Int32) ILLEGAL_FOR_SCOPE; return; } *status = (Int32) CDFlib (SELECT_, gENTRY_, entryNumT, GET_, gENTRY_DATATYPE_, &dataType, NULL_); if (StatusBAD(*status)) return; *status = (Int32) CDFlib (GET_, gENTRY_DATA_, #if defined(Fif_DESCR) BOO(STRINGdataType(dataType), DESCRtoREF(value),value), #else value, #endif NULL_); return; } /****************************************************************************** * CDF_get_attr_rentry. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_get_attr_rentry__, cdf_get_attr_rentry_, cdf_get_attr_rentry, CDF_get_ATTR_RENTRY) (id, attr_num, entry_num, value, status) Int32 *id; /* In: CDF identifier. */ Int32 *attr_num; /* In: Attribute number. */ Int32 *entry_num; /* In: rEntry number. */ void *value; /* Out: Value. VMS: Could be passed out by reference or descriptor if character data type. */ Int32 *status; /* Out: CDF status code. */ { long dataType, scope; long attrNumT = (long) (*attr_num - 1); long entryNumT = (long) (*entry_num - 1); *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), ATTR_, attrNumT, GET_, ATTR_SCOPE_, &scope, NULL_); if (StatusBAD(*status)) return; if (GLOBALscope(scope)) { *status = (Int32) ILLEGAL_FOR_SCOPE; return; } *status = (Int32) CDFlib (SELECT_, rENTRY_, entryNumT, GET_, rENTRY_DATATYPE_, &dataType, NULL_); if (StatusBAD(*status)) return; *status = (Int32) CDFlib (GET_, rENTRY_DATA_, #if defined(Fif_DESCR) BOO(STRINGdataType(dataType), DESCRtoREF(value),value), #else value, #endif NULL_); return; } /****************************************************************************** * CDF_get_attr_zentry. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_get_attr_zentry__, cdf_get_attr_zentry_, cdf_get_attr_zentry, CDF_get_ATTR_ZENTRY) (id, attr_num, entry_num, value, status) Int32 *id; /* In: CDF identifier. */ Int32 *attr_num; /* In: Attribute number. */ Int32 *entry_num; /* In: zEntry number. */ void *value; /* Out: Value. VMS: Could be passed out by reference or descriptor if character data type. */ Int32 *status; /* Out: CDF status code. */ { long dataType, scope; long attrNumT = (long) (*attr_num - 1); long entryNumT = (long) (*entry_num - 1); *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), ATTR_, attrNumT, GET_, ATTR_SCOPE_, &scope, NULL_); if (StatusBAD(*status)) return; if (GLOBALscope(scope)) { *status = (Int32) ILLEGAL_FOR_SCOPE; return; } *status = (Int32) CDFlib (SELECT_, zENTRY_, entryNumT, GET_, zENTRY_DATATYPE_, &dataType, NULL_); if (StatusBAD(*status)) return; *status = (Int32) CDFlib (GET_, zENTRY_DATA_, #if defined(Fif_DESCR) BOO(STRINGdataType(dataType), DESCRtoREF(value),value), #else value, #endif NULL_); return; } /****************************************************************************** * CDF_var_create. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_var_create__,cdf_var_create_,cdf_var_create,CDF_VAR_CREATE) (id, var_name, data_type, num_elems, rec_variance, dim_variances, var_num, status Fif_GHOSTARG(len)) Int32 *id; /* In: CDF identifier. */ void *var_name; /* In: rVariable name. */ Int32 *data_type; /* In: Data type. */ Int32 *num_elems; /* In: Number of elements of data_type. */ Int32 *rec_variance; /* In: Record variance. */ Int32 dim_variances[]; /* In: Dimension variances. */ Int32 *var_num; /* Out: rVariable number. */ Int32 *status; /* Out: CDF status code. */ Fif_GHOSTDEF(len) /* Invisible length of "var_name" (generated by FORTRAN compiler). */ { struct STRINGstruct *ssh = NULL; /* Head of STRINGstruct linked list. */ long varNumT, dimVarysT[CDF_MAX_DIMS], numDims; int dimN; long dataTypeT = (long) *data_type; long numElemsT = (long) *num_elems; long recVaryT = (long) *rec_variance; int LFS = FALSE; struct CDFstruct *CDF; CDF = (struct CDFstruct *)Int32ToCDFid(*id); if (isLFS(CDF)) LFS = TRUE; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), GET_, rVARs_NUMDIMS_, &numDims, NULL_); if (StatusBAD(*status)) return; for (dimN = 0; dimN < (int) numDims; dimN++) { dimVarysT[dimN] = (long) dim_variances[dimN]; } *status = (Int32) CDFlib (CREATE_, rVAR_, #if defined(Fif_DESCR) DESCRtoREFnul(var_name, (LFS ? CDF_VAR_NAME_LEN256 : CDF_VAR_NAME_LEN), &ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(var_name, Fif_GHOSTUSE(len), &ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(var_name, (LFS ? CDF_VAR_NAME_LEN256 : CDF_VAR_NAME_LEN), &ssh), #endif dataTypeT, numElemsT, recVaryT, dimVarysT, &varNumT, NULL_); FreeStrings (ssh); if (StatusBAD(*status)) return; *var_num = (Int32) (varNumT + 1); return; } /****************************************************************************** * CDF_create_zvar. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_create_zvar__, cdf_create_zvar_, cdf_create_zvar, CDF_CREATE_ZVAR) (id, var_name, data_type, num_elems, num_dims, dim_sizes, rec_variance, dim_variances, var_num, status Fif_GHOSTARG(len)) Int32 *id; /* In: CDF identifier. */ void *var_name; /* In: zVariable name. */ Int32 *data_type; /* In: Data type. */ Int32 *num_elems; /* In: Number of elements of data_type. */ Int32 *num_dims; /* In: Number of dimension. */ Int32 dim_sizes[]; /* In: Dimension sizes. */ Int32 *rec_variance; /* In: Record variance. */ Int32 dim_variances[]; /* In: Dimension variances. */ Int32 *var_num; /* Out: zVariable number. */ Int32 *status; /* Out: CDF status code. */ Fif_GHOSTDEF(len) /* Invisible length of "var_name" (generated by FORTRAN compiler). */ { struct STRINGstruct *ssh = NULL; /* Head of STRINGstruct linked list. */ long varNumT, dimVarysT[CDF_MAX_DIMS], dimSizesT[CDF_MAX_DIMS], numDims; int dimN; long dataTypeT = (long) *data_type; long numElemsT = (long) *num_elems; long recVaryT = (long) *rec_variance; int LFS = FALSE; struct CDFstruct *CDF; CDF = (struct CDFstruct *)Int32ToCDFid(*id); if (isLFS(CDF)) LFS = TRUE; numDims = (long) *num_dims; for (dimN = 0; dimN < (int) numDims; dimN++) { dimSizesT[dimN] = (long) dim_sizes[dimN]; dimVarysT[dimN] = (long) dim_variances[dimN]; } *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), CREATE_, zVAR_, #if defined(Fif_DESCR) DESCRtoREFnul(var_name, (LFS ? CDF_VAR_NAME_LEN256 : CDF_VAR_NAME_LEN), &ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(var_name, Fif_GHOSTUSE(len), &ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(var_name, (LFS ? CDF_VAR_NAME_LEN256 : CDF_VAR_NAME_LEN), &ssh), #endif dataTypeT, numElemsT, numDims, dimSizesT, recVaryT, dimVarysT, &varNumT, NULL_); FreeStrings (ssh); if (StatusBAD(*status)) return; *var_num = (Int32) (varNumT + 1); return; } /****************************************************************************** * CDF_var_num. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa Int32 Fif_PREFIXb Fif_ENTRYPOINT(cdf_var_num__,cdf_var_num_,cdf_var_num,CDF_VAR_NUM) (id, var_name Fif_GHOSTARG(len)) Int32 *id; /* In: CDF identifier. */ void *var_name; /* In: Variable name. */ Fif_GHOSTDEF(len) /* Invisible length of "var_name" (generated by FORTRAN compiler). */ { struct STRINGstruct *ssh = NULL; /* Head of STRINGstruct linked list. */ CDFstatus status; long varNumT; int LFS = FALSE; struct CDFstruct *CDF; CDF = (struct CDFstruct *)Int32ToCDFid(*id); if (isLFS(CDF)) LFS = TRUE; status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), GET_, rVAR_NUMBER_, #if defined(Fif_DESCR) DESCRtoREFnul(var_name, (LFS ? CDF_VAR_NAME_LEN256 : CDF_VAR_NAME_LEN), &ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(var_name,Fif_GHOSTUSE(len), &ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(var_name, (LFS ? CDF_VAR_NAME_LEN256 : CDF_VAR_NAME_LEN), &ssh), #endif &varNumT, NULL_); if (!StatusOK(status)) { status = (Int32) CDFlib (GET_, zVAR_NUMBER_, #if defined(Fif_DESCR) DESCRtoREFnul(var_name, (LFS ? CDF_VAR_NAME_LEN256 : CDF_VAR_NAME_LEN), &ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(var_name,Fif_GHOSTUSE(len), &ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(var_name, (LFS ? CDF_VAR_NAME_LEN256 : CDF_VAR_NAME_LEN), &ssh), #endif &varNumT, NULL_); } FreeStrings (ssh); if (StatusOK(status)) return ((Int32) (varNumT + 1)); else return ((Int32) status); } /****************************************************************************** * CDF_get_var_num. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa Int32 Fif_PREFIXb Fif_ENTRYPOINT(cdf_get_var_num__, cdf_get_var_num_, cdf_get_var_num, CDF_GET_VAR_NUM) (id, var_name Fif_GHOSTARG(len)) Int32 *id; /* In: CDF identifier. */ void *var_name; /* In: Variable name. */ Fif_GHOSTDEF(len) /* Invisible length of "var_name" (generated by FORTRAN compiler). */ { struct STRINGstruct *ssh = NULL; /* Head of STRINGstruct linked list. */ CDFstatus status; long varNumT; int LFS = FALSE; struct CDFstruct *CDF; CDF = (struct CDFstruct *)Int32ToCDFid(*id); if (isLFS(CDF)) LFS = TRUE; status = CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), GET_, rVAR_NUMBER_, #if defined(Fif_DESCR) DESCRtoREFnul(var_name, (LFS ? CDF_VAR_NAME_LEN256 : CDF_VAR_NAME_LEN), &ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(var_name,Fif_GHOSTUSE(len), &ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(var_name, (LFS ? CDF_VAR_NAME_LEN256 : CDF_VAR_NAME_LEN), &ssh), #endif &varNumT, NULL_); if (!StatusOK(status)) { status = CDFlib (GET_, zVAR_NUMBER_, #if defined(Fif_DESCR) DESCRtoREFnul(var_name, (LFS ? CDF_VAR_NAME_LEN256 : CDF_VAR_NAME_LEN), &ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(var_name,Fif_GHOSTUSE(len), &ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(var_name, (LFS ? CDF_VAR_NAME_LEN256 : CDF_VAR_NAME_LEN), &ssh), #endif &varNumT, NULL_); } FreeStrings (ssh); if (StatusOK(status)) return (Int32) (varNumT + 1); else return ((Int32) status); } /****************************************************************************** * CDF_var_rename. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_var_rename__,cdf_var_rename_,cdf_var_rename,CDF_VAR_RENAME) (id, var_num, var_name, status Fif_GHOSTARG(len)) Int32 *id; /* In: CDF identifier. */ Int32 *var_num; /* In: rVariable number. */ void *var_name; /* In: New variable name. */ Int32 *status; /* Out: CDF status code. */ Fif_GHOSTDEF(len) /* Invisible length of "var_name" (generated by FORTRAN compiler). */ { struct STRINGstruct *ssh = NULL; /* Head of STRINGstruct linked list. */ long varNumT = (long) (*var_num - 1); int LFS = FALSE; struct CDFstruct *CDF; CDF = (struct CDFstruct *)Int32ToCDFid(*id); if (isLFS(CDF)) LFS = TRUE; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), rVAR_, varNumT, PUT_, rVAR_NAME_, #if defined(Fif_DESCR) DESCRtoREFnul(var_name, (LFS ? CDF_VAR_NAME_LEN256 : CDF_VAR_NAME_LEN), &ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(var_name, Fif_GHOSTUSE(len), &ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(var_name, (LFS ? CDF_VAR_NAME_LEN256 : CDF_VAR_NAME_LEN), &ssh), #endif NULL_); FreeStrings (ssh); return; } /****************************************************************************** * CDF_rename_zvar. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_rename_zvar__, cdf_rename_zvar_, cdf_rename_zvar, CDF_RENAME_ZVAR) (id, var_num, var_name, status Fif_GHOSTARG(len)) Int32 *id; /* In: CDF identifier. */ Int32 *var_num; /* In: zVariable number. */ void *var_name; /* In: New variable name. */ Int32 *status; /* Out: CDF status code. */ Fif_GHOSTDEF(len) /* Invisible length of "var_name" (generated by FORTRAN compiler). */ { struct STRINGstruct *ssh = NULL; /* Head of STRINGstruct linked list. */ long varNumT = (long) (*var_num - 1); int LFS = FALSE; struct CDFstruct *CDF; CDF = (struct CDFstruct *)Int32ToCDFid(*id); if (isLFS(CDF)) LFS = TRUE; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), zVAR_, varNumT, PUT_, zVAR_NAME_, #if defined(Fif_DESCR) DESCRtoREFnul(var_name, (LFS ? CDF_VAR_NAME_LEN256 : CDF_VAR_NAME_LEN), &ssh), #endif #if defined(Fif_GHOSTLEN) NULterminate(var_name, Fif_GHOSTUSE(len), &ssh), #endif #if defined(Fif_NOLEN) FindEndNUL(var_name, (LFS ? CDF_VAR_NAME_LEN256 : CDF_VAR_NAME_LEN), &ssh), #endif NULL_); FreeStrings (ssh); return; } /****************************************************************************** * CDF_var_inquire. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_var_inquire__, cdf_var_inquire_, cdf_var_inquire, CDF_VAR_INQUIRE) (id, var_num, var_name, data_type, num_elements, rec_variance, dim_variances, status Fif_GHOSTARG(len)) Int32 *id; /* In: CDF identifier. */ Int32 *var_num; /* In: rVariable number. */ void *var_name; /* Out: rVariable name. */ Int32 *data_type; /* Out: Data type. */ Int32 *num_elements; /* Out: Number of elements. */ Int32 *rec_variance; /* Out: Record variance. */ Int32 dim_variances[]; /* Out: Dimension variances. */ Int32 *status; /* Out: CDF status code. */ Fif_GHOSTDEF(len) /* Invisible length of "var_name" (generated by FORTRAN compiler). */ { char varNameT[CDF_VAR_NAME_LEN256]; long dataTypeT, numElemsT, recVaryT, dimVarysT[CDF_MAX_DIMS], numDims; int dimN; long varNumT = (long) (*var_num - 1); *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), GET_, rVARs_NUMDIMS_, &numDims, NULL_); if (StatusBAD(*status)) { free (varNameT); return; } *status = (Int32) CDFlib (SELECT_, rVAR_, varNumT, GET_, rVAR_NAME_, varNameT, rVAR_DATATYPE_, &dataTypeT, rVAR_NUMELEMS_, &numElemsT, rVAR_RECVARY_, &recVaryT, rVAR_DIMVARYS_, dimVarysT, NULL_); if (StatusBAD(*status)) { free (varNameT); return; } #if defined(Fif_GHOSTLEN) CtoFORTstring (varNameT, var_name, Fif_GHOSTUSE(len)); #else CtoFORTstring (varNameT, var_name, CDF_VAR_NAME_LEN256); #endif *data_type = (Int32) dataTypeT; *num_elements = (Int32) numElemsT; *rec_variance = (Int32) recVaryT; for (dimN = 0; dimN < (int) numDims; dimN++) { dim_variances[dimN] = (Int32) dimVarysT[dimN]; } return; } /****************************************************************************** * CDF_inquire_zvar. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_inquire_zvar__, cdf_inquire_zvar_, cdf_inquire_zvar, CDF_INQUIRE_ZVAR) (id, var_num, var_name, data_type, num_elements, num_dims, dim_sizes, rec_variance, dim_variances, status Fif_GHOSTARG(len)) Int32 *id; /* In: CDF identifier. */ Int32 *var_num; /* In: zVariable number. */ void *var_name; /* Out: zVariable name. */ Int32 *data_type; /* Out: Data type. */ Int32 *num_elements; /* Out: Number of elements. */ Int32 *num_dims; /* Out: Number of dimension. */ Int32 dim_sizes[]; /* Out: Dimension sizes. */ Int32 *rec_variance; /* Out: Record variance. */ Int32 dim_variances[]; /* Out: Dimension variances. */ Int32 *status; /* Out: CDF status code. */ Fif_GHOSTDEF(len) /* Invisible length of "var_name" (generated by FORTRAN compiler). */ { char varNameT[CDF_VAR_NAME_LEN256]; long dataTypeT, numElemsT, recVaryT, dimVarysT[CDF_MAX_DIMS]; int dimN; long numDimsT, dimSizesT[CDF_MAX_DIMS]; long varNumT = (long) (*var_num - 1); *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), zVAR_, varNumT, GET_, zVAR_NAME_, varNameT, zVAR_DATATYPE_, &dataTypeT, zVAR_NUMELEMS_, &numElemsT, zVAR_NUMDIMS_, &numDimsT, zVAR_DIMSIZES_, dimSizesT, zVAR_RECVARY_, &recVaryT, zVAR_DIMVARYS_, dimVarysT, NULL_); if (StatusBAD(*status)) return; #if defined(Fif_GHOSTLEN) CtoFORTstring (varNameT, var_name, Fif_GHOSTUSE(len)); #else CtoFORTstring (varNameT, var_name, CDF_VAR_NAME_LEN256); #endif *data_type = (Int32) dataTypeT; *num_elements = (Int32) numElemsT; *num_dims = (Int32) numDimsT; *rec_variance = (Int32) recVaryT; for (dimN = 0; dimN < (int) numDimsT; dimN++) { dim_variances[dimN] = (Int32) dimVarysT[dimN]; dim_sizes[dimN] = (Int32) dimSizesT[dimN]; } return; } /****************************************************************************** * CDF_var_put. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_var_put__,cdf_var_put_,cdf_var_put,CDF_VAR_PUT) (id, var_num, record_num, indices, value, status) Int32 *id; /* In: CDF identifier. */ Int32 *var_num; /* In: rVariable number. */ Int32 *record_num; /* In: Record number. */ Int32 indices[]; /* In: Dimension indices. */ void *value; /* In: Value. VMS: If character data type, could be passed by reference or by descriptor. */ Int32 *status; /* Out: CDF status code. */ { int dimN; long indicesT[CDF_MAX_DIMS], numDims, dataType; long varNumT = (long) (*var_num - 1); long recNumT = (long) (*record_num - 1); *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), rVAR_, varNumT, GET_, rVARs_NUMDIMS_, &numDims, rVAR_DATATYPE_, &dataType, NULL_); if (StatusBAD(*status)) return; for (dimN = 0; dimN < (int) numDims; dimN++) { indicesT[dimN] = (long) (indices[dimN] - 1); } *status = (Int32) CDFlib (SELECT_, rVARs_RECNUMBER_, recNumT, rVARs_DIMINDICES_, indicesT, PUT_, rVAR_DATA_, #if defined(Fif_DESCR) BOO(STRINGdataType(dataType), DESCRtoREF(value),value), #else value, #endif NULL_); return; } /****************************************************************************** * CDF_put_zvar_data. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_put_zvar_data__, cdf_put_zvar_data_, cdf_put_zvar_data, CDF_PUT_ZVAR_DATA) (id, var_num, record_num, indices, value, status) Int32 *id; /* In: CDF identifier. */ Int32 *var_num; /* In: zVariable number. */ Int32 *record_num; /* In: Record number. */ Int32 indices[]; /* In: Dimension indices. */ void *value; /* In: Value. VMS: If character data type, could be passed by reference or by descriptor. */ Int32 *status; /* Out: CDF status code. */ { int dimN; long indicesT[CDF_MAX_DIMS], numDims, dataType; long varNumT = (long) (*var_num - 1); long recNumT = (long) (*record_num - 1); *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), zVAR_, varNumT, GET_, zVAR_NUMDIMS_, &numDims, zVAR_DATATYPE_, &dataType, NULL_); if (StatusBAD(*status)) return; for (dimN = 0; dimN < (int) numDims; dimN++) { indicesT[dimN] = (long) (indices[dimN] - 1); } *status = (Int32) CDFlib (SELECT_, zVAR_RECNUMBER_, recNumT, zVAR_DIMINDICES_, indicesT, PUT_, zVAR_DATA_, #if defined(Fif_DESCR) BOO(STRINGdataType(dataType), DESCRtoREF(value),value), #else value, #endif NULL_); return; } /****************************************************************************** * CDF_var_get. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_var_get__,cdf_var_get_,cdf_var_get,CDF_VAR_GET) (id, var_num, record_num, indices, value, status) Int32 *id; /* In: CDF identifier. */ Int32 *var_num; /* In: rVariable number. */ Int32 *record_num; /* In: Record number. */ Int32 indices[]; /* In: Dimension indices. */ void *value; /* In: Value. VMS: If character data type, could be passed by reference or by descriptor. */ Int32 *status; /* Out: CDF status code. */ { long indicesT[CDF_MAX_DIMS], numDims, dataType; int dimN; long varNumT = (long) (*var_num - 1); long recNumT = (long) (*record_num - 1); *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), rVAR_, varNumT, GET_, rVARs_NUMDIMS_, &numDims, rVAR_DATATYPE_, &dataType, NULL_); if (StatusBAD(*status)) return; for (dimN = 0; dimN < (int) numDims; dimN++) { indicesT[dimN] = (long) (indices[dimN] - 1); } *status = (Int32) CDFlib (SELECT_, rVARs_RECNUMBER_, recNumT, rVARs_DIMINDICES_, indicesT, GET_, rVAR_DATA_, #if defined(Fif_DESCR) BOO(STRINGdataType(dataType), DESCRtoREF(value),value), #else value, #endif NULL_); return; } /****************************************************************************** * CDF_get_zvar_data. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_get_zvar_data__, cdf_get_zvar_data_, cdf_get_zvar_data, CDF_get_ZVAR_DATA) (id, var_num, record_num, indices, value, status) Int32 *id; /* In: CDF identifier. */ Int32 *var_num; /* In: zVariable number. */ Int32 *record_num; /* In: Record number. */ Int32 indices[]; /* In: Dimension indices. */ void *value; /* In: Value. VMS: If character data type, could be passed by reference or by descriptor. */ Int32 *status; /* Out: CDF status code. */ { long indicesT[CDF_MAX_DIMS], numDims, dataType; int dimN; long varNumT = (long) (*var_num - 1); long recNumT = (long) (*record_num - 1); *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), zVAR_, varNumT, GET_, zVAR_NUMDIMS_, &numDims, zVAR_DATATYPE_, &dataType, NULL_); if (StatusBAD(*status)) return; for (dimN = 0; dimN < (int) numDims; dimN++) { indicesT[dimN] = (long) (indices[dimN] - 1); } *status = (Int32) CDFlib (SELECT_, zVAR_RECNUMBER_, recNumT, zVAR_DIMINDICES_, indicesT, GET_, zVAR_DATA_, #if defined(Fif_DESCR) BOO(STRINGdataType(dataType), DESCRtoREF(value),value), #else value, #endif NULL_); return; } /****************************************************************************** * CDF_var_hyper_put. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_var_hyper_put__, cdf_var_hyper_put_, cdf_var_hyper_put, CDF_VAR_HYPER_PUT) (id, var_num, rec_start, rec_count, rec_int, indices, counts, intervals, buffer, status) Int32 *id; /* In: CDF identifier. */ Int32 *var_num; /* In: rVariable number. */ Int32 *rec_start; /* In: Starting record number. */ Int32 *rec_count; /* In: Record count. */ Int32 *rec_int; /* In: Record interval. */ Int32 indices[]; /* In: Dimension indices. */ Int32 counts[]; /* In: Dimension counts. */ Int32 intervals[]; /* In: Dimension intervals. */ void *buffer; /* In: Values. VMS: If character data type, could be passed by reference or descriptor. */ Int32 *status; /* Out: CDF status code. */ { int dimN; long indicesT[CDF_MAX_DIMS], countsT[CDF_MAX_DIMS], intervalsT[CDF_MAX_DIMS], numDims, dataType; long varNumT = (long) (*var_num - 1); long recStartT = (long) (*rec_start - 1); long recCountT = (long) *rec_count; long recIntervalT = (long) *rec_int; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), rVAR_, varNumT, GET_, rVARs_NUMDIMS_, &numDims, rVAR_DATATYPE_, &dataType, NULL_); if (StatusBAD(*status)) return; for (dimN = 0; dimN < (int) numDims; dimN++) { indicesT[dimN] = (long) (indices[dimN] - 1); countsT[dimN] = (long) counts[dimN]; intervalsT[dimN] = (long) intervals[dimN]; } *status = (Int32) CDFlib (SELECT_, rVARs_RECNUMBER_, recStartT, rVARs_RECCOUNT_, recCountT, rVARs_RECINTERVAL_, recIntervalT, rVARs_DIMINDICES_, indicesT, rVARs_DIMCOUNTS_, countsT, rVARs_DIMINTERVALS_, intervalsT, PUT_, rVAR_HYPERDATA_, #if defined(Fif_DESCR) BOO(STRINGdataType(dataType), DESCRtoREF(buffer),buffer), #else buffer, #endif NULL_); return; } /****************************************************************************** * CDF_hyper_put_zvar_data. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_hyper_put_zvar_data__, cdf_hyper_put_zvar_data_, cdf_hyper_put_zvar_data, CDF_HYPER_PUT_ZVAR_DATA) (id, var_num, rec_start, rec_count, rec_int, indices, counts, intervals, buffer, status) Int32 *id; /* In: CDF identifier. */ Int32 *var_num; /* In: zVariable number. */ Int32 *rec_start; /* In: Starting record number. */ Int32 *rec_count; /* In: Record count. */ Int32 *rec_int; /* In: Record interval. */ Int32 indices[]; /* In: Dimension indices. */ Int32 counts[]; /* In: Dimension counts. */ Int32 intervals[]; /* In: Dimension intervals. */ void *buffer; /* In: Values. VMS: If character data type, could be passed by reference or descriptor. */ Int32 *status; /* Out: CDF status code. */ { int dimN; long indicesT[CDF_MAX_DIMS], countsT[CDF_MAX_DIMS], intervalsT[CDF_MAX_DIMS], numDims, dataType; long varNumT = (long) (*var_num - 1); long recStartT = (long) (*rec_start - 1); long recCountT = (long) *rec_count; long recIntervalT = (long) *rec_int; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), zVAR_, varNumT, GET_, zVAR_NUMDIMS_, &numDims, zVAR_DATATYPE_, &dataType, NULL_); if (StatusBAD(*status)) return; for (dimN = 0; dimN < (int) numDims; dimN++) { indicesT[dimN] = (long) (indices[dimN] - 1); countsT[dimN] = (long) counts[dimN]; intervalsT[dimN] = (long) intervals[dimN]; } *status = (Int32) CDFlib (SELECT_, zVAR_RECNUMBER_, recStartT, zVAR_RECCOUNT_, recCountT, zVAR_RECINTERVAL_, recIntervalT, zVAR_DIMINDICES_, indicesT, zVAR_DIMCOUNTS_, countsT, zVAR_DIMINTERVALS_, intervalsT, PUT_, zVAR_HYPERDATA_, #if defined(Fif_DESCR) BOO(STRINGdataType(dataType), DESCRtoREF(buffer),buffer), #else buffer, #endif NULL_); return; } /****************************************************************************** * CDF_var_hyper_get. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_var_hyper_get__, cdf_var_hyper_get_, cdf_var_hyper_get, CDF_VAR_HYPER_GET) (id, var_num, rec_start, rec_count, rec_int, indices, counts, intervals, buffer, status) Int32 *id; /* In: CDF identifier. */ Int32 *var_num; /* In: rVariable number. */ Int32 *rec_start; /* In: Starting record number. */ Int32 *rec_count; /* In: Record count. */ Int32 *rec_int; /* In: Record interval. */ Int32 indices[]; /* In: Dimension indices. */ Int32 counts[]; /* In: Dimension counts. */ Int32 intervals[]; /* In: Dimension intervals. */ void *buffer; /* In: Values. VMS: If character data type, could be passed by reference or descriptor. */ Int32 *status; /* Out: CDF status code. */ { int dimN; long indicesT[CDF_MAX_DIMS], countsT[CDF_MAX_DIMS], intervalsT[CDF_MAX_DIMS], numDims, dataType; long varNumT = (long) (*var_num - 1); long recStartT = (long) (*rec_start - 1); long recCountT = (long) *rec_count; long recIntervalT = (long) *rec_int; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), rVAR_, varNumT, GET_, rVARs_NUMDIMS_, &numDims, rVAR_DATATYPE_, &dataType, NULL_); if (StatusBAD(*status)) return; for (dimN = 0; dimN < (int) numDims; dimN++) { indicesT[dimN] = (long) (indices[dimN] - 1); countsT[dimN] = (long) counts[dimN]; intervalsT[dimN] = (long) intervals[dimN]; } *status = (Int32) CDFlib (SELECT_, rVARs_RECNUMBER_, recStartT, rVARs_RECCOUNT_, recCountT, rVARs_RECINTERVAL_, recIntervalT, rVARs_DIMINDICES_, indicesT, rVARs_DIMCOUNTS_, countsT, rVARs_DIMINTERVALS_, intervalsT, GET_, rVAR_HYPERDATA_, #if defined(Fif_DESCR) BOO(STRINGdataType(dataType), DESCRtoREF(buffer),buffer), #else buffer, #endif NULL_); return; } /****************************************************************************** * CDF_hyper_get_zvar_data. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_hyper_get_zvar_data__, cdf_hyper_get_zvar_data_, cdf_hyper_get_zvar_data, CDF_HYPER_GET_ZVAR_DATA) (id, var_num, rec_start, rec_count, rec_int, indices, counts, intervals, buffer, status) Int32 *id; /* In: CDF identifier. */ Int32 *var_num; /* In: zVariable number. */ Int32 *rec_start; /* In: Starting record number. */ Int32 *rec_count; /* In: Record count. */ Int32 *rec_int; /* In: Record interval. */ Int32 indices[]; /* In: Dimension indices. */ Int32 counts[]; /* In: Dimension counts. */ Int32 intervals[]; /* In: Dimension intervals. */ void *buffer; /* In: Values. VMS: If character data type, could be passed by reference or descriptor. */ Int32 *status; /* Out: CDF status code. */ { int dimN; long indicesT[CDF_MAX_DIMS], countsT[CDF_MAX_DIMS], intervalsT[CDF_MAX_DIMS], numDims, dataType; long varNumT = (long) (*var_num - 1); long recStartT = (long) (*rec_start - 1); long recCountT = (long) *rec_count; long recIntervalT = (long) *rec_int; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), zVAR_, varNumT, GET_, zVAR_NUMDIMS_, &numDims, zVAR_DATATYPE_, &dataType, NULL_); if (StatusBAD(*status)) return; for (dimN = 0; dimN < (int) numDims; dimN++) { indicesT[dimN] = (long) (indices[dimN] - 1); countsT[dimN] = (long) counts[dimN]; intervalsT[dimN] = (long) intervals[dimN]; } *status = (Int32) CDFlib (SELECT_, zVAR_RECNUMBER_, recStartT, zVAR_RECCOUNT_, recCountT, zVAR_RECINTERVAL_, recIntervalT, zVAR_DIMINDICES_, indicesT, zVAR_DIMCOUNTS_, countsT, zVAR_DIMINTERVALS_, intervalsT, GET_, zVAR_HYPERDATA_, #if defined(Fif_DESCR) BOO(STRINGdataType(dataType), DESCRtoREF(buffer),buffer), #else buffer, #endif NULL_); return; } /****************************************************************************** * CDF_var_close. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_var_close__,cdf_var_close_,cdf_var_close,CDF_VAR_CLOSE) (id, var_num, status) Int32 *id; /* In: CDF identifier. */ Int32 *var_num; /* In: rVariable number. */ Int32 *status; /* Out: CDF status code. */ { long varNumT = (long) (*var_num - 1); *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), rVAR_, varNumT, CLOSE_, rVAR_, NULL_); return; } /****************************************************************************** * CDF_close_zvar. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_close_zvar__,cdf_close_zvar_,cdf_close_zvar,CDF_CLOSE_ZVAR) (id, var_num, status) Int32 *id; /* In: CDF identifier. */ Int32 *var_num; /* In: zVariable number. */ Int32 *status; /* Out: CDF status code. */ { long varNumT = (long) (*var_num - 1); CDFstatus statusT; statusT = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), zVAR_, varNumT, CLOSE_, zVAR_, NULL_); return; } /****************************************************************************** * CDF_error. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_error__,cdf_error_,cdf_error,CDF_ERROR) (statusI, text, statusO Fif_GHOSTARG(text_len)) Int32 *statusI; /* In: CDF status code. */ void *text; /* Out: Character string to receive explanation. */ Int32 *statusO; /* Out: CDF operation status. */ Fif_GHOSTDEF(text_len) /* Invisible length of "text" (generated by FORTRAN compiler). */ { char statusTextT[CDF_ERRTEXT_LEN+1]; *statusO = (Int32) CDFlib (SELECT_, CDF_STATUS_, (CDFstatus) *statusI, GET_, STATUS_TEXT_, statusTextT, NULL_); if (StatusOK(*statusO)) #if defined(Fif_GHOSTLEN) CtoFORTstring (statusTextT, text, Fif_GHOSTUSE(text_len)); #else CtoFORTstring (statusTextT, text, CDF_STATUSTEXT_LEN); #endif else #if defined(Fif_GHOSTLEN) CtoFORTstring ("Unknown CDF status code", text, Fif_GHOSTUSE(text_len)); #else CtoFORTstring ("Unknown CDF status code", text, CDF_STATUSTEXT_LEN); #endif return; } /****************************************************************************** * CDF_get_status_text. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_get_status_text__, cdf_get_status_text_, cdf_get_status_text, CDF_GET_STATUS_TEXT) (statusI, text, statusO Fif_GHOSTARG(text_len)) Int32 *statusI; /* In: CDF status code. */ void *text; /* Out: Character string to receive explanation. */ Int32 *statusO; /* Out: CDF operation status. */ Fif_GHOSTDEF(text_len) /* Invisible length of "text" (generated by FORTRAN compiler). */ { char statusTextT[CDF_ERRTEXT_LEN+1]; *statusO = (Int32) CDFlib (SELECT_, CDF_STATUS_, (CDFstatus) *statusI, GET_, STATUS_TEXT_, statusTextT, NULL_); if (StatusOK(*statusO)) #if defined(Fif_GHOSTLEN) CtoFORTstring (statusTextT, text, Fif_GHOSTUSE(text_len)); #else CtoFORTstring (statusTextT, text, CDF_STATUSTEXT_LEN); #endif else #if defined(Fif_GHOSTLEN) CtoFORTstring ("Unknown CDF status code", text, Fif_GHOSTUSE(text_len)); #else CtoFORTstring ("Unknown CDF status code", text, CDF_STATUSTEXT_LEN); #endif return; } /****************************************************************************** * CDF_getrVarsRecordData. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_getrvarsrecorddata__, cdf_getrvarsrecorddata_, cdf_getrvarsrecorddata, CDF_GETRVARSRECORDDATA) (id, num_vars, varNums, rec_num, buffptr, status) Int32 *id; /* In: CDF identifier. */ Int32 *num_vars; /* In: Number of rVariables. */ Int32 varNums[]; /* In: rVariable numbers. */ Int32 *rec_num; /* In: Record number. */ void *buffptr; /* In: Pointer for input data */ Int32 *status; /* Out: CDF status code. */ { long num_varsT = (long) *num_vars; long recNumT = (long) (*rec_num - 1); long varNumsT[CDF_MAX_DIMS]; int i; if (*num_vars < 1) { *status = (Int32) CDF_OK; return; } for (i = 0; i < *num_vars; i++) varNumsT[i] = (long) varNums[i] - 1; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), NULL_); if (StatusBAD(*status)) return; *status = (Int32) CDFlib (SELECT_, rVARs_RECNUMBER_, recNumT, GET_, rVARs_RECDATA_, num_varsT, varNumsT, buffptr, NULL_); return; } /****************************************************************************** * CDF_getzVarsRecordData. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_getzvarsrecorddata__, cdf_getzvarsrecorddata_, cdf_getzvarsrecorddata, CDF_GETZVARSRECORDDATA) (id, num_vars, varNums, rec_num, buffptr, status) Int32 *id; /* In: CDF identifier. */ Int32 *num_vars; /* In: Number of zVariables. */ Int32 varNums[]; /* In: zVariable numbers. */ Int32 *rec_num; /* In: Record number. */ void *buffptr; /* In: Pointer for input data */ Int32 *status; /* Out: CDF status code. */ { long num_varsT = (long) *num_vars; long recNumT = (long) (*rec_num - 1); long varNumsT[CDF_MAX_DIMS]; int i; if (*num_vars < 1) { *status = (Int32) CDF_OK; return; } for (i = 0; i < *num_vars; i++) varNumsT[i] = (long) varNums[i] - 1; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), NULL_); if (StatusBAD(*status)) return; *status = (Int32) CDFlib (SELECT_, zVARs_RECNUMBER_, recNumT, GET_, zVARs_RECDATA_, num_varsT, varNumsT, buffptr, NULL_); return; } /****************************************************************************** * CDF_putrVarsRecordData. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_putrvarsrecorddata__, cdf_putrvarsrecorddata_, cdf_putrvarsrecorddata, CDF_PUTRVARSRECORDDATA) (id, num_vars, varNums, rec_num, buffptr, status) Int32 *id; /* In: CDF identifier. */ Int32 *num_vars; /* In: Number of rVariables. */ Int32 varNums[]; /* In: rVariable numbers. */ Int32 *rec_num; /* In: Record number. */ void *buffptr; /* In: Pointer for output data */ Int32 *status; /* Out: CDF status code. */ { long num_varsT = (long) *num_vars; long recNumT = (long) (*rec_num - 1); long varNumsT[CDF_MAX_DIMS]; int i; if (*num_vars < 1) { *status = (Int32) CDF_OK; return; } *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), NULL_); if (StatusBAD(*status)) return; for (i = 0; i < *num_vars; i++) varNumsT[i] = (long) varNums[i] - 1; *status = (Int32) CDFlib (SELECT_, rVARs_RECNUMBER_, recNumT, PUT_, rVARs_RECDATA_, num_varsT, varNumsT, buffptr, NULL_); return; } /****************************************************************************** * CDF_putzVarsRecordData. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_putzvarsrecorddata__, cdf_putzvarsrecorddata_, cdf_putzvarsrecorddata, CDF_PUTZVARSRECORDDATA) (id, num_vars, varNums, rec_num, buffptr, status) Int32 *id; /* In: CDF identifier. */ Int32 *num_vars; /* In: Number of zVariables. */ Int32 varNums[]; /* In: zVariable numbers. */ Int32 *rec_num; /* In: Record number. */ void *buffptr; /* In: Pointer for output data */ Int32 *status; /* Out: CDF status code. */ { long num_varsT = (long) *num_vars; long recNumT = (long) (*rec_num - 1); long varNumsT[CDF_MAX_DIMS]; int i; if (*num_vars < 1) { *status = (Int32) CDF_OK; return; } *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), NULL_); if (StatusBAD(*status)) return; for (i = 0; i < *num_vars; i++) varNumsT[i] = (long) varNums[i] - 1; *status = (Int32) CDFlib (SELECT_, zVARs_RECNUMBER_, recNumT, PUT_, zVARs_RECDATA_, num_varsT, varNumsT, buffptr, NULL_); return; } /****************************************************************************** * CDF_get_zVars_RecordData. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_get_zvars_recorddata__, cdf_get_zvars_recorddata_, cdf_get_zvars_recorddata, CDF_GET_ZVARS_RECORDDATA) (id, num_vars, varNums, rec_num, buffptr, status) Int32 *id; /* In: CDF identifier. */ Int32 *num_vars; /* In: Number of zVariables. */ Int32 varNums[]; /* In: zVariable numbers. */ Int32 *rec_num; /* In: Record number. */ void *buffptr; /* In: Pointer for input data */ Int32 *status; /* Out: CDF status code. */ { long num_varsT = (long) *num_vars; long recNumT = (long) (*rec_num - 1); long varNumsT[CDF_MAX_DIMS]; int i; *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), NULL_); if (StatusBAD(*status)) return; for (i = 0; i < *num_vars; i++) varNumsT[i] = (long) varNums[i] - 1; *status = (Int32) CDFlib (SELECT_, zVARs_RECNUMBER_, recNumT, GET_, zVARs_RECDATA_, num_varsT, varNumsT, buffptr, NULL_); return; } /****************************************************************************** * CDF_put_zVars_RecordData. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_put_zvars_recorddata__, cdf_put_zvars_recorddata_, cdf_put_zvars_recorddata, CDF_PUT_ZVARS_RECORDDATA) (id, num_vars, varNums, rec_num, buffptr, status) Int32 *id; /* In: CDF identifier. */ Int32 *num_vars; /* In: Number of zVariables. */ Int32 varNums[]; /* In: zVariable numbers. */ Int32 *rec_num; /* In: Record number. */ void *buffptr; /* In: Pointer for output data */ Int32 *status; /* Out: CDF status code. */ { long num_varsT = (long) *num_vars; long recNumT = (long) (*rec_num - 1); long varNumsT[CDF_MAX_DIMS]; int i; if (*num_vars < 1) { *status = (Int32) CDF_OK; return; } *status = (Int32) CDFlib (SELECT_, CDF_, Int32ToCDFid(*id), NULL_); if (StatusBAD(*status)) return; for (i = 0; i < *num_vars; i++) varNumsT[i] = (long) varNums[i] - 1; *status = (Int32) CDFlib (SELECT_, zVARs_RECNUMBER_, recNumT, PUT_, zVARs_RECDATA_, num_varsT, varNumsT, buffptr, NULL_); return; } /****************************************************************************** * CDF_set_FileBackward. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa void Fif_PREFIXb Fif_ENTRYPOINT(cdf_set_filebackward__,cdf_set_filebackward_, cdf_set_filebackward, CDF_SET_FILEBACKWARD) (flag) Int32 *flag; /* In: Flag to set the file to old version. */ { int fg = (int) *flag; CDFsetFileBackward(fg); return; } /****************************************************************************** * CDF_get_FileBackward. ******************************************************************************/ VISIBLE_PREFIX Fif_PREFIXa Int32 Fif_PREFIXb Fif_ENTRYPOINT(cdf_get_filebackward__,cdf_get_filebackward_, cdf_get_filebackward, CDF_GET_FILEBACKWARD) () { int flag; flag = CDFgetFileBackward(); if (flag == 0) return (Int32) 0; else return (Int32) 1; }