%VERSION:2
41
394
0:CDF
707:CDF0
2584:CDF1
3294:CDF2
4004:CDFATTRCREATE
5571:CDFATTRENTRYINQUIRE
7304:CDFATTRGET
8873:CDFATTRINQUIRE
10574:CDFATTRNUM
11858:CDFATTRPUT
13799:CDFATTRRENAME
15223:CDFCLOSE
16370:CDFCREATE
18384:CDFDELETE
19791:CDFDOC
21414:CDFERROR
22580:CDFINQUIRE
24617:CDFLIB
26024:CDFOPEN
27370:CDFVARCLOSE
28833:CDFVARCREATE
30939:CDFVARGET
32890:CDFVARHYPERGET
36117:CDFVARHYPERPUT
39564:CDFVARINQUIRE
41577:CDFVARNUM
42850:CDFVARPUT
44823:CDFVARRENAME
46234:COL_TO_ROW
49031:COMPUTEEPOCH
50374:ENCODEEPOCH
51821:ENCODEEPOCH1
53078:ENCODEEPOCH2
54335:ENCODEEPOCH3
55629:ENCODEEPOCHX
59175:EPOCHBREAKDOWN
60536:MCP
61842:MII
63156:MSC
64232:PARSEEPOCH
65661:ROW_TO_COL
;+
 NAME:
       cdf.pro

 PURPOSE:
       `cdf.pro' is used to create a set of local variables containing the
       general constants used by the CDF library.  The CDF status codes are
       defined by `cdf1.pro' and the CDF Internal Interface constants are
       defined by `cdf2.pro'.

       This include file is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       IDL> @cdf.pro

 RESTRICTIONS:
       The use of `cdf.pro' may result in too many local variables being
       created.  If that occurs, consider using `cdf0.pro' instead.

 REVISION HISTORY:
       26-Jun-95        Original version.
;-
;+
 NAME:
       cdf0.pro

 PURPOSE:
       `cdf0.pro' is used to create a set of structure variables containing
       the constants used by the CDF library.  The structures created and
       their contents are as follows...

               CDFconst     - General CDF constants.
               CDFdataType  - Data type codes.
               CDFencoding  - Encoding codes.
               CDFdecoding  - Decoding codes.
               CDFiCode     - Informational status codes.
               CDFwCode     - Warning status codes.
               CDFeCode     - Error status codes.
               CDFiiFnc     - Internal Interface functions.
               CDFiiItem    - General Internal Interface items.
               CDFiiItemA   - Internal Interface attribute items.
               CDFiiItemE   - Internal Interface entry items.
               CDFiiItemR   - Internal Interface rVariable items.
               CDFiiItemZ   - Internal Interface zVariable items.

       These structures contain the same values defined using the `cdf.pro',
       `cdf1.pro', and `cdf2.pro' batch files.  To see the contents of each
       structure, use the command...

               IDL> help, /structure, <structure-name>

       The use of these structures eliminates the problem of too many local
       variables caused by the use of `cdf.pro', `cdf1.pro', and `cdf2.pro'.

       This include file is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       IDL> @cdf0.pro

 EXAMPLE:
       IDL> @cdf0.pro
       IDL> status = CDFlib (CDFiiFnc.OPEN_, CDFiiItem.CDF_, 'rain2x', id, $
       IDL>                  CDFiiFnc.NULL_)
       IDL> if (status lt CDFiCode.CDF_OK) print, 'CDF not open...'

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       26-Jun-95        Original version.
;-
;+
 NAME:
       cdf1.pro

 PURPOSE:
       `cdf1.pro' is used to create a set of local variables containing the
       status codes used by the CDF library.  The general CDF constants are
       defined by `cdf.pro' and the CDF Internal Interface constants are
       defined by `cdf2.pro'.

       This include file is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       IDL> @cdf1.pro

 RESTRICTIONS:
       The use of `cdf1.pro' may result in too many local variables being
       created.  If that occurs, consider using `cdf0.pro' instead.

 REVISION HISTORY:
       26-Jun-95        Original version.
;-
;+
 NAME:
       cdf2.pro

 PURPOSE:
       `cdf2.pro' is used to create a set of local variables containing the
       Internal Interface constants used by the CDF library.  The general CDF
       constants are defined by `cdf.pro' and the CDF status codes are defined
       by `cdf1.pro'.

       This include file is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       IDL> @cdf2.pro

 RESTRICTIONS:
       The use of `cdf2.pro' may result in too many local variables being
       created.  If that occurs, consider using `cdf0.pro' instead.

 REVISION HISTORY:
       26-Jun-95        Original version.
;-
;+
 NAME:
       CDFattrCreate

 PURPOSE:
       `CDFattrCreate' is used to create a new attribute in a CDF.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFattrCreate (id, attrName, attrScope, attrNum)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.
       attrName:       STRING.  The new attribute's name.
       attrScope:      LONG.  The attribute scope.  Use one of the attribute
                       scopes defined in `cdf.pro'.

       All input variables must have been created/initialized before calling
       `CDFattrCreate'.

 OUTPUTS:
       attrNum:        LONG.  The number of the new attribute.

       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFattrCreate'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> status = CDFattrCreate (id, 'TITLE', GLOBAL_SCOPE, attrNum)
       IDL> if (status lt CDF_OK) print, 'CDFattrCreate failed...'

 RESTRICTIONS:
       The attribute name must not already be in use in the CDF.

 REVISION HISTORY:
       13-May-93       Original version.
       26-Jun-95       IDL 4.0.
;-
;+
 NAME:
       CDFattrEntryInquire

 PURPOSE:
       `CDFattrEntryInquire' is used to inquire about an attribute entry.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFattrEntryInquire (id, attrNum, entryNum, dataType, $
                                     numElems)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.
       attrNum:        LONG.  The number of the attribute.
       entryNum:       LONG.  The number of the entry.

       All input variables must have been created/initialized before calling
       `CDFattrEntryInquire'.

 OUTPUTS:
       dataType:       LONG.  The entry's data type.  This will be one of
                       the data types defined in `cdf.pro'.
       numElems:       LONG.  The number of elements of the data type.

       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFattrEntryInquire'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> status = CDFattrEntryInquire (id, CDFattrNum(id,'TITLE'), 0L,
       IDL>                               dataType, numElems)
       IDL> if (status lt CDF_OK) print, 'CDFattrEntryInquire failed...'

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-May-93       Original version.
       26-Jun-95       IDL 4.0.
;-
;+
 NAME:
       CDFattrGet

 PURPOSE:
       `CDFattrGet' is used to read an entry value from an attribute.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFattrGet (id, attrNum, entryNum, value)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.
       attrNum:        LONG.  The number of the attribute
       entryNum:       LONG.  The number of the entry.

       All input variables must have been created/initialized before calling
       `CDFattrGet'.

 OUTPUTS:
       value:          DATA TYPE DEPENDENT.  The value which was read.  The
                       entry's CDF data type will determine which IDL data
                       type is used for this IDL variable.

       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFattrGet'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> status = CDFattrGet (id, CDFattrNum('TITLE'), 0L, value)
       IDL> if (status lt CDF_OK) print, 'CDFattrGet failed...'

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-May-93       Original version.
       26-Jun-95       IDL 4.0.
;-
;+
 NAME:
       CDFattrInquire

 PURPOSE:
       `CDFattrInquire' is used to inquire about an attribute in a CDF.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFattrInquire (id, attrNum, attrName, attrScope, maxEntry)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.
       attrNum:        LONG.  The number of the attribute.

       All input variables must have been created/initialized before calling
       `CDFattrInquire'.

 OUTPUTS:
       attrName:       STRING.  The attribute name.
       attrScope:      LONG.  The attribute's scope.  This will be one of
                       attribute scopes defined in `cdf.pro'.
       maxEntry:       LONG.  The maximum entry number written for this
                       attribute.

       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFattrInquire'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> status = CDFattrInquire (id, CDFattrNum(id,'TITLE'), attrName, $
       IDL>                          attrScope, maxEntry)
       IDL> if (status lt CDF_OK) print, 'CDFattrInquire failed...'

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-May-93       Original version.
       26-Jun-95       IDL 4.0.
;-
;+
 NAME:
       CDFattrNum

 PURPOSE:
       `CDFattrNum' is used to determine the number of an existing attribute.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       attrNum = CDFattrNum (id, attrName)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.
       attrName:       STRING.  The attribute name.

       All input variables must have been created/initialized before calling
       `CDFattrNum'.

 OUTPUTS:
       attrNum:        LONG.  The number of the attribute.  If an error
                       occurred, this will be a completion status code
                       (less than zero).  The possible status codes are
                       defined in 'cdf1.pro'.

       All output variables are (re)created/assigned by `CDFattrNum'.

 EXAMPLE:
       IDL> attrNum = CDFattrNum (id, 'TITLE')
       IDL> if (attrNum lt 0L) print, 'CDFattrNum failed...'

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-May-93       Original version.
       26-Jun-95       IDL 4.0.
;-
;+
 NAME:
       CDFattrPut

 PURPOSE:
       `CDFattrPut' is used to write an entry value to an attribute.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFattrPut (id, attrNum, entryNum, dataType, numElems, value)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.
       attrNum:        LONG.  The number of the attribute
       entryNum:       LONG.  The number of the entry.
       dataType:       LONG.  The entry's data type.  Use one of the data
                       types defined in `cdf.pro'.
       numElems:       LONG.  The number of elements of the data type.
       value:          DATA TYPE DEPENDENT.  The value to be written.  The
                       IDL data type of this IDL variable should correspond
                       to the CDF data type of the entry.

       All input variables must have been created/initialized before calling
       `CDFattrPut'.

 OUTPUTS:
       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFattrPut'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> value = 'This is an example entry for the TITLE attribute. '
       IDL> status = CDFattrPut (id, CDFattrNum(id,'TITLE'), 0L, $
                                 CDF_CHAR, 50L, value)
       IDL> if (status lt CDF_OK) print, 'CDFattrPut failed...'

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-May-93       Original version.
        3-Oct-94       CDF V2.5.
       26-Jun-95       IDL 4.0.
;-
;+
 NAME:
       CDFattrRename

 PURPOSE:
       `CDFattrRename' is used to rename an existing attribute.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFattrRename (id, attrNum, attrName)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.
       attrNum:        LONG.  The number of the attribute.
       attrName:       STRING.  The new attribute name.

       All input variables must have been created/initialized before calling
       `CDFattrRename'.

 OUTPUTS:
       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFattrRename'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> status = CDFattrRename (id, CDFattrNum(id,'vMin'), 'VALIDMIN')
       IDL> if (status lt CDF_OK) print, 'CDFattrRename failed...'

 RESTRICTIONS:
       The new attribute name must not already be in use in the CDF.

 REVISION HISTORY:
       13-May-93       Original version.
       26-Jun-95       IDL 4.0.
;-
;+
 NAME:
       CDFclose

 PURPOSE:
       `CDFclose' is used to close a CDF.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFclose (id)

 INPUTS:
       id:             LONG.  Identifier of the CDF being closed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.

       All input variables must have been created/initialized before calling
       `CDFclose'.

 OUTPUTS:
       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFclose'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> status = CDFclose (id)
       IDL> if (status lt CDF_OK) print, 'CDFclose failed...'

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-May-93        Original version.
       26-Jun-95        IDL 4.0.
;-
;+
 NAME:
       CDFcreate

 PURPOSE:
       `CDFcreate' is used to create a new CDF.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFcreate (CDFname, numDims, dimSizes, encoding, majority, id)

 INPUTS:
       CDFname:        STRING.  The pathname of the CDF to create.  The '.cdf'
                       extension should not be specified.
       numDims:        LONG.  The number of rVariable dimensions.
       dimSizes:       LONG array.  The rVariable dimension sizes.
       encoding:       LONG.  The variable/attribute entry encoding.  Use
                       one of the encodings defined in `cdf.pro'.
       majority:       LONG.  The variable majority.  Use one of the
                       majorities defined in `cdf.pro'.

       All input variables must have been created/initialized before calling
       `CDFcreate'.

 OUTPUTS:
       id:             LONG.  A unique identifier for the created CDF.  This
                       identifier must be used in all subsequent calls when
                       referring to this CDF.

       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFcreate'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> dimSizes = lonarr(2)
       IDL> dimSizes(0) = 180
       IDL> dimSizes(1) = 360
       IDL> status = CDFcreate ('rain2x', 2L, dimSizes, NETWORK_ENCODING, $
       IDL>                     ROW_MAJORITY, id)
       IDL> if (status lt CDF_OK) print, 'CDFcreate failed...'

 RESTRICTIONS:
       The CDF must not already exist (an existing CDF with the same name
       will not be overwritten).

 REVISION HISTORY:
       13-May-93        Original version.
       26-Jun-95        IDL 4.0.
;-
;+
 NAME:
       CDFdelete

 PURPOSE:
       `CDFdelete' is used to delete an open CDF.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFdelete (id)

 INPUTS:
       id:             LONG.  Identifier of the CDF being deleted.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.

       All input variables must have been created/initialized before calling
       `CDFdelete'.

 OUTPUTS:
       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFdelete'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> status = CDFopen ('rain3', id)
       IDL> if (status lt CDF_OK) print, 'CDFopen failed...'
       IDL> status = CDFdelete (id)
       IDL> if (status lt CDF_OK) print, 'CDFdelete failed...'

 RESTRICTIONS:
       You must be able to open a CDF in order to delete it with `CDFdelete'.
       Corrupted CDFs must be deleted at the operating system command line.

 REVISION HISTORY:
       13-May-93        Original version.
       26-Jun-95        IDL 4.0.
;-
;+
 NAME:
       CDFdoc

 PURPOSE:
       `CDFdoc' is used to inquire the copyright notice and version/release
       of the CDF library which created/modified a CDF.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFdoc (id, version, release, copyright)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.

       All input variables must have been created/initialized before calling
       `CDFdoc'.

 OUTPUTS:
       version:        LONG.  The version number of the creating/modifying
                       CDF library.
       release:        LONG.  The release number of the creating/modifying
                       CDF library.
       copyright:      STRING.  The copyright notice of the creating/modifying
                       CDF library.

       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFdoc'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> status = CDFdoc (id, version, release, copyright)
       IDL> if (status lt CDF_OK) print, 'CDFdoc failed...'

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-May-93        Original version.
       26-Jun-95        IDL 4.0.
;-
;+
 NAME:
       CDFerror

 PURPOSE:
       `CDFerror' is used to retrieve a text string descibing a CDF status
       code.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFerror (iStatus, text)

 INPUTS:
       iStatus:        LONG.  CDF status code for which an explanation
                       string is desired.

       All input variables must have been created/initialized before calling
       `CDFerror'.

 OUTPUTS:
       text:           STRING.  The explanation string.

       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFerror'.

 EXAMPLE:
       IDL> iStatus = CDFopen ('rain2', id)
       IDL> tStatus = CDFerror (iStatus, text)
       IDL> print, text

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-May-93        Original version.
       26-Jun-95        IDL 4.0.
;-
;+
 NAME:
       CDFinquire

 PURPOSE:
       `CDFinquire' is used to inquire general information about an opened
       CDF.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFinquire (id, numDims, dimSizes, encoding, majority, $
                            maxRec, numVars, numAttrs)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.

       All input variables must have been created/initialized before calling
       `CDFinquire'.

 OUTPUTS:
       numDims:        LONG.  The number of rVariable dimensions.
       dimSizes:       LONG array.  The rVariable dimension sizes.
       encoding:       LONG.  The variable/attribute entry encoding.  This
                       will be one of the encodings defined in `cdf.pro'.
       majority:       LONG.  The variable majority.  This will be one of
                       the majorities defined in `cdf.pro'.
       maxRec:         LONG.  The maximum record number written for the
                       rVariables.
       numVars:        LONG.  The number of rVariables.
       numAttrs:       LONG.  The number of attributes.

       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFinquire'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> status = CDFinquire (id, numDims, dimSizes, encoding, majority, $
       IDL>                      maxRec, numVars, numAttrs)
       IDL> if (status lt CDF_OK) print, 'CDFinquire failed...'

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-May-93       Original version.
       26-Jun-95       IDL 4.0.
;-
;+
 NAME:
       CDFlib

 PURPOSE:
       `CDFlib' is used to perform all supported CDF operations.  It uses
       a variable-length argument list to perform one or more operations.
       The CDF User's Guide provides a complete description of how to use
       `CDFlib'.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFlib (op1, ...)

 INPUTS:
       op1:            LONG.  First operation to be performed.

       All input variables must have been created/initialized before calling
       `CDFlib'.

 OUTPUTS:
       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFlib'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> @cdf2.pro
       IDL> status = CDFlib (OPEN_, CDF_, 'rain2', id, $
       IDL>                  GET_, CDF_FORMAT_, format, $
       IDL>                  NULL_)
       IDL> if (status lt CDF_OK) print, 'CDFlib failed...'

       The values of `OPEN_', `CDF_', etc. are defined in `cdf2.pro'.

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-May-93        Original version.
       26-Jun-95        IDL 4.0.
;-
;+
 NAME:
       CDFopen

 PURPOSE:
       `CDFopen' is used to open an existing CDF for read/write access.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFopen (CDFname, id)

 INPUTS:
       CDFname:        STRING.  The pathname of the CDF to open.  The '.cdf'
                       extension should not be specified.

       All input variables must have been created/initialized before calling
       `CDFopen'.

 OUTPUTS:
       id:             LONG.  A unique identifier for the opened CDF.  This
                       identifier must be used in all subsequent calls when
                       referring to this CDF.

       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFopen'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> CDFname = 'rain2'
       IDL> status = CDFopen (CDFname, id)
       IDL> if (status lt CDF_OK) print, 'CDFopen failed...'

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-May-93       Original version.
       26-Jun-95       IDL 4.0.
;-
;+
 NAME:
       CDFvarClose

 PURPOSE:
       `CDFvarClose' is used to close a variable file in a multi-file CDF.
       This may become necessary if the limit on open files imposed by the
       operating system is reached.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFvarClose (id, varNum)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.
       varNum:         LONG.  Number of the variable being closed.

       All input variables must have been created/initialized before calling
       `CDFvarClose'.

 OUTPUTS:
       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFvarClose'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> status = CDFvarClose (id, CDFvarNum(id,'PollenCount'))
       IDL> if (status lt CDF_OK) print, 'CDFvarClose failed...'

 RESTRICTIONS:
       `CDFvarClose' should only be used on multi-file CDFs.

 REVISION HISTORY:
       13-May-93        Original version.
       26-Jun-95        IDL 4.0.
;-
;+
 NAME:
       CDFvarCreate

 PURPOSE:
       `CDFvarCreate' is used to create a new rVariable in a CDF.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFvarCreate (id, varName, dataType, numElems, recVary, $
                              dimVarys, varNum)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.
       varName:        STRING.  The new rVariable's name.
       dataType:       LONG.  The rVariable data type.  Use one of the data
                       types defined in `cdf.pro'.
       numElems:       LONG.  The number of elements of the data type.
       recVary:        LONG.  The rVariable record variance.  Use one of the
                       variances defined in `cdf.pro'.
       dimVarys:       LONG array.  The rVariable dimension variances.  Use
                       the variances defined in `cdf.pro'.

       All input variables must have been created/initialized before calling
       `CDFvarCreate'.

 OUTPUTS:
       varNum:         LONG.  The number of the new rVariable.

       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFvarCreate'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> dimVarys = lonarr(2)
       IDL> dimVarys(0) = NOVARY
       IDL> dimVarys(1) = NOVARY
       IDL> status = CDFvarCreate (id, 'EPOCH', CDF_EPOCH, 1L, VARY, $
       IDL>                        dimVarys, varNum)
       IDL> if (status lt CDF_OK) print, 'CDFvarCreate failed...'

 RESTRICTIONS:
       The rVariable name must not already be in use in the CDF.

 REVISION HISTORY:
       13-May-93       Original version.
       26-Jun-95       IDL 4.0.
;-
;+
 NAME:
       CDFvarGet

 PURPOSE:
       `CDFvarGet' is used to read a single value from an rVariable.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFvarGet (id, varNum, recNum, dimIndices, value)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.
       varNum:         LONG.  The number of the rVariable.
       recNum:         LONG.  The record number at which to read the value.
                       Record numbers begin at zero (0).
       dimIndices:     LONG array.  The dimension indices at which to read
                       the value.  Indices begin at zero (0).

       All input variables must have been created/initialized before calling
       `CDFvarGet'.

 OUTPUTS:
       value:          DATA TYPE DEPENDENT.  The value which was read.  The
                       rVariable's CDF data type will determine which IDL
                       data type is used for this IDL variable.

       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFvarGet'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> indices = lonarr(2)
       IDL> indices(0) = 5
       IDL> indices(1) = 10
       IDL> recNum = 4L
       IDL> status = CDFvarGet (id, CDFvarNum(id, 'Flux'), recNum, indices, $
                                value)
       IDL> if (status lt CDF_OK) print, 'CDFvarGet failed...'

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-Sep-93       Original version.
       26-Jun-95       IDL 4.0.
;-
;+
 NAME:
       CDFvarHyperGet

 PURPOSE:
       `CDFvarHyperGet' is used to read multiple values from an rVariable.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFvarHyperGet (id, varNum, recNum, recCount, recInterval,
                                dimIndices, dimCounts, dimIntervals, values)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.
       varNum:         LONG.  The number of the rVariable.
       recNum:         LONG.  The record number at which to begin reading
                       the values.  Record numbers begin at zero (0).
       recCount:       LONG.  The number of records to read.
       recInterval:    LONG.  The interval between records to be read.  An
                       interval of one (1) means read consecutive records,
                       an interval of two (2) means read every other record,
                       etc.
       dimIndices:     LONG array.  The indices at which to begin reading
                       the values (within each record).  Indices begin at
                       zero (0).
       dimCounts:      LONG array.  The number of values to read along each
                       dimension.
       dimIntervals:   LONG array.  The interval between values along each
                       dimension to be read.  An interval of one (1) means
                       read consecutive values along a dimension, an
                       interval of two (2) means read every other value
                       along a dimension, etc.

       All input variables must have been created/initialized before calling
       `CDFvarHyperGet'.

 OUTPUTS:
       values:         DATA TYPE DEPENDENT.  The values which were read.
                       The rVariable's CDF data type will determine which
                       IDL data type is used for this IDL variable.  The
                       majority of this IDL variable is dependent on the
                       variable majority of the CDF.

       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFvarHyperGet'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> indices = lonarr(2)
       IDL> indices(0) = 0
       IDL> indices(1) = 0
       IDL> counts = lonarr(2)
       IDL> counts(0) = 180
       IDL> counts(1) = 360
       IDL> intervals = lonarr(2)
       IDL> intervals(0) = 1
       IDL> intervals(1) = 1
       IDL> recNum = 4L
       IDL> status = CDFvarHyperGet (id, CDFvarNum(id,'SST'), recNum, 10L, 2L,
       IDL>                          indices, counts, intervals, values)
       IDL> if (status lt CDF_OK) print, 'CDFvarHyperGet failed...'

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-Sep-93       Original version.
       26-Jun-95       IDL 4.0.
;-
;+
 NAME:
       CDFvarHyperPut

 PURPOSE:
       `CDFvarHyperPut' is used to write multiple values to an rVariable.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFvarHyperPut (id, varNum, recNum, recCount, recInterval,
                                dimIndices, dimCounts, dimIntervals, values)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.
       varNum:         LONG.  The number of the rVariable.
       recNum:         LONG.  The record number at which to begin writing
                       the values.  Record numbers begin at zero (0).
       recCount:       LONG.  The number of records to write.
       recInterval:    LONG.  The interval between records to be written.  An
                       interval of one (1) means write consecutive records,
                       an interval of two (2) means write every other record,
                       etc.
       dimIndices:     LONG array.  The indices at which to begin writing
                       the values (within each record).  Indices begin at
                       zero (0).
       dimCounts:      LONG array.  The number of values to write along each
                       dimension.
       dimIntervals:   LONG array.  The interval between values along each
                       dimension to be written.  An interval of one (1) means
                       write consecutive values along a dimension, an
                       interval of two (2) means write every other value
                       along a dimension, etc.
       values:         DATA TYPE DEPENDENT.  The values which are to be
                       written.  The IDL data type of this IDL variable
                       should correspond to the rVariable's CDF data type.
                       The majority of this IDL variable should also
                       correspond to the variable majority of the CDF.

       All input variables must have been created/initialized before calling
       `CDFvarHyperPut'.

 OUTPUTS:
       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFvarHyperPut'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> indices = lonarr(2)
       IDL> indices(0) = 0
       IDL> indices(1) = 0
       IDL> counts = lonarr(2)
       IDL> counts(0) = 180
       IDL> counts(1) = 360
       IDL> intervals = lonarr(2)
       IDL> intervals(0) = 1
       IDL> intervals(1) = 1
       IDL> values = lonarr(180,360,5)
       IDL> values(0,0,0) = 34.5
       .
       .
       .
       IDL> values(179,359,4) = 36.4
       IDL> status = CDFvarHyperPut (id, CDFvarNum(id,'SST'), 0L, 5L, 1L,
       IDL>                          indices, counts, intervals, values)
       IDL> if (status lt CDF_OK) print, 'CDFvarHyperPut failed...'

       In this example the CDF's variable majority is assumed to be
       column major.

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-Sep-93       Original version.
       26-Jun-95       IDL 4.0.
;-
;+
 NAME:
       CDFvarInquire

 PURPOSE:
       `CDFvarInquire' is used to inquire about an rVariable in a CDF.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFvarInquire (id, varNum, varName, dataType, numElems, $
                               recVary, dimVarys)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.
       varNum:         LONG.  The number of the rVariable.

       All input variables must have been created/initialized before calling
       `CDFvarInquire'.

 OUTPUTS:
       varName:        STRING.  The rVariable name.
       dataType:       LONG.  The rVariable data type.  This will be one of
                       data types defined in `cdf.pro'.
       numElems:       LONG.  The number of elements of the data type.
       recVary:        LONG.  The rVariable record variance.  This will be
                       one of the variances defined in `cdf.pro'.
       dimVarys:       LONG array.  The rVariable dimension variances.  These
                       will consist of the variances defined in `cdf.pro'.

       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFvarInquire'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> status = CDFvarInquire (id, CDFvarNum(id,'EPOCH'), varName, $
       IDL>                         dataType, numElems, recVary, dimVarys)
       IDL> if (status lt CDF_OK) print, 'CDFvarInquire failed...'

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-May-93       Original version.
       26-Jun-95       IDL 4.0.
;-
;+
 NAME:
       CDFvarNum

 PURPOSE:
       `CDFvarNum' is used to determine the number of an existing rVariable.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       varNum = CDFvarNum (id, varName)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.
       varName:        STRING.  The rVariable name.

       All input variables must have been created/initialized before calling
       `CDFvarNum'.

 OUTPUTS:
       varNum:         LONG.  The number of the rVariable.  If an error
                       occurred, this will be a completion status code
                       (less than zero).  The possible status codes are
                       defined in 'cdf1.pro'.

       All output variables are (re)created/assigned by `CDFvarNum'.

 EXAMPLE:
       IDL> varNum = CDFvarNum (id, 'EPOCH')
       IDL> if (varNum lt 0L) print, 'CDFvarNum failed...'

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-May-93       Original version.
       26-Jun-95       IDL 4.0.
;-
;+
 NAME:
       CDFvarPut

 PURPOSE:
       `CDFvarPut' is used to write a single value to an rVariable.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFvarPut (id, varNum, recNum, dimIndices, value)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.
       varNum:         LONG.  The number of the rVariable.
       recNum:         LONG.  The record number at which to write the value.
                       Record numbers begin at zero (0).
       dimIndices:     LONG array.  The dimension indices at which to write
                       the value.  Indices begin at zero (0).
       value:          DATA TYPE DEPENDENT.  The value to be written.  The
                       IDL data type of this IDL variable should correspond
                       to the CDF data type of the rVariable.

       All input variables must have been created/initialized before calling
       `CDFvarGet'.

 OUTPUTS:
       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFvarPut'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> indices = lonarr(2)
       IDL> indices(0) = 5
       IDL> indices(1) = 10
       IDL> recNum = 4L
       IDL> value = 6.7
       IDL> status = CDFvarPut (id, CDFvarNum(id,'Flux'), recNum, indices, $
                                value)
       IDL> if (status lt CDF_OK) print, 'CDFvarPut failed...'

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-Sep-93       Original version.
       26-Jun-95       IDL 4.0.
;-
;+
 NAME:
       CDFvarRename

 PURPOSE:
       `CDFvarRename' is used to rename an existing rVariable.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = CDFvarRename (id, varNum, varName)

 INPUTS:
       id:             LONG.  Identifier of the CDF being accessed.  This
                       identifier must have been returned from a successful
                       call to `CDFcreate' or `CDFopen'.
       varNum:         LONG.  The number of the rVariable.
       varName:        STRING.  The new rVariable name.

       All input variables must have been created/initialized before calling
       `CDFvarRename'.

 OUTPUTS:
       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `CDFvarRename'.

 EXAMPLE:
       IDL> @cdf.pro
       IDL> status = CDFvarRename (id, CDFvarNum(id,'EPOCH'), 'Time')
       IDL> if (status lt CDF_OK) print, 'CDFvarRename failed...'

 RESTRICTIONS:
       The new rVariable name must not already be in use in the CDF.

 REVISION HISTORY:
       13-May-93       Original version.
       26-Jun-95       IDL 4.0.
;-
;+
 NAME:
       col_to_row

 PURPOSE:
       `col_to_row' is used to switch the majority of a multi-dimensional
       array from column-major to row-major.  This function would be used
       before writing an array of values (created by IDL) to a row-major
       CDF using `CDFvarHyperPut' (or `CDFlib').

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = col_to_row (iBuffer, oBuffer, numDims, dimSizes, numBytes, $
                            numRecs)

 INPUTS:
       iBuffer:        DATA TYPE DEPENDENT.  The multi-dimensional array
                       (IDL variable) whose majority is to be reversed.
       numDims:        LONG.  The number of dimensions (in each record).
       dimSizes:       LONG array.  The dimension sizes (in each record).
       numBytes:       LONG.  The number of bytes per value.
       numRecs:        LONG.  The number of CDF records in the buffer.
                       Note that the majority is only changed within each
                       record - the ordering of the records remains the
                       same (the last dimension of the IDL variable is not
                       affected).

       All input variables must have been created/initialized before calling
       `col_to_row'.

 OUTPUTS:
       oBuffer:        DATA TYPE DEPENDENT.  A newly created/recreated IDL
                       variable (with the same dimensionality as `iBuffer')
                       with reversed (row-major) majority.

       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `col_to_row'.

 EXAMPLE:
       Assume that 5 records are to be written to an rVariable whose
       dimensionality is 2:[10,30] in a CDF with row-major majority.
       The records are to be written from an IDL variable named `iBuffer'
       which was created using `fltarr(10,30,5)' and then loaded with
       data.  If the data type of the rVariable is CDF_REAL4 (4-byte
       floating-point), the majority would be reversed as follows...

       IDL> @cdf.pro
       IDL> dimSizes = lonarr(2)
       IDL> dimSizes(0) = 10
       IDL> dimSizes(1) = 30
       IDL> status = col_to_row (iBuffer, oBuffer, 2L, dimSizes, 4L, 5L)
       IDL> if (status lt CDF_OK) print, 'col_to_row failed...'

       `oBuffer' would also be created/recreated as `fltarr(10,30,5)' by
       `col_to_row'.

 RESTRICTIONS:
       None.

 REVISION HISTORY:
        7-Nov-94        Original version.
       26-Jun-95        IDL 4.0.
;-
;+
 NAME:
       computeEPOCH

 PURPOSE:
       `computeEPOCH' is used to compute a CDF_EPOCH value from its
       component parts.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       epoch = computeEPOCH (year, month, day, hour, minute, second, msec)

 INPUTS:
       year:           LONG.  The year component (AD).
       month:          LONG.  The month component (1-12).
       day:            LONG.  The day component (1-31).
       hour:           LONG.  The hour component (0-23).
       minute:         LONG.  The minute component (0-59).
       second:         LONG.  The second component (0-59).
       millisecond:    LONG.  The millisecond component (0-999).

       All input variables must have been created/initialized before calling
       `computeEPOCH'.

 OUTPUTS:
       epoch:          DOUBLE (double precision floating-point).  The
                       computed CDF_EPOCH value.

       All output variables are (re)created/assigned by `computeEPOCH'.

 EXAMPLE:
       IDL> year = 1993L
       IDL> month = 5L
       IDL> day = 20L
       IDL> epoch = computeEPOCH (year, month, day, 0L, 0L, 0L, 0L)

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       24-Jan-94        Original version.
;-
;+
 NAME:
       encodeEPOCH

 PURPOSE:
       `encodeEPOCH' is used to encode a CDF_EPOCH value into a standard
       EPOCH character string.

       This procedure is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       encodeEPOCH, epoch, epString

 INPUTS:
       epoch:          DOUBLE (double precision floating-point).  The
                       CDF_EPOCH value to be encoded.

       All input variables must have been created/initialized before calling
       `encodeEPOCH'.

 OUTPUTS:
       epString:       STRING.  The standard EPOCH character string.  The
                       syntax of this string is `dd-mmm-yyyy hh:mm:ss.ccc'
                       where `dd' is the day of the month (1-31), `mmm' is
                       the month (`Jan', `Feb', `Mar', `Apr', `May', `Jun',
                       `Jul', `Aug', `Sep', `Oct', `Nov', or `Dec'), `yyyy'
                       is the year, `hh' is the hour (0-23), `mm' is the
                       minute (0-59), `ss' is the second (0-59), and `ccc'
                       is the millisecond (0-999).

       All output variables are (re)created/assigned by `encodeEPOCH'.

 EXAMPLE:
       IDL> epoch = 6d13
       IDL> encodeEPOCH, epoch, epString

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       24-Jan-94        Original version.
        7-Nov-94        CDF V2.5.
;-
;+
 NAME:
       encodeEPOCH1

 PURPOSE:
       `encodeEPOCH1' is used to encode a CDF_EPOCH value into an alternate
       EPOCH character string.

       This procedure is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       encodeEPOCH1, epoch, epString

 INPUTS:
       epoch:          DOUBLE (double precision floating-point).  The
                       CDF_EPOCH value to be encoded.

       All input variables must have been created/initialized before calling
       `encodeEPOCH1'.

 OUTPUTS:
       epString:       STRING.  The alternate EPOCH character string.  The
                       syntax of this string is `yyyymmdd.ttttttt' where
                       `yyyy' is the year, `mm' is the month (1-12), `dd'
                       is the day of the month (1-31), and `ttttttt' is the
                       fraction of the day (eg. `5000000' is 12 o'clock noon).

       All output variables are (re)created/assigned by `encodeEPOCH1'.

 EXAMPLE:
       IDL> epoch = 6d13
       IDL> encodeEPOCH1, epoch, epString

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       24-Jan-94        Original version.
        7-Nov-94        CDF V2.5.
;-
;+
 NAME:
       encodeEPOCH2

 PURPOSE:
       `encodeEPOCH2' is used to encode a CDF_EPOCH value into an alternate
       EPOCH character string.

       This procedure is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       encodeEPOCH2, epoch, epString

 INPUTS:
       epoch:          DOUBLE (double precision floating-point).  The
                       CDF_EPOCH value to be encoded.

       All input variables must have been created/initialized before calling
       `encodeEPOCH2'.

 OUTPUTS:
       epString:       STRING.  The alternate EPOCH character string.  The
                       syntax of this string is `yyyymmddhhmmss' where `yyyy'
                       is the year, `mm' is the month (1-12), `dd' is the day
                       of the month (1-31), `hh' is the hour (0-23), `mm' is
                       minute (0-59), and `ss' is the second (0-59).

       All output variables are (re)created/assigned by `encodeEPOCH2'.

 EXAMPLE:
       IDL> epoch = 6d13
       IDL> encodeEPOCH2, epoch, epString

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       24-Jan-94        Original version.
        7-Nov-94        CDF V2.5.
;-
;+
 NAME:
       encodeEPOCH3

 PURPOSE:
       `encodeEPOCH3' is used to encode a CDF_EPOCH value into an alternate
       EPOCH character string.

       This procedure is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       encodeEPOCH3, epoch, epString

 INPUTS:
       epoch:          DOUBLE (double precision floating-point).  The
                       CDF_EPOCH value to be encoded.

       All input variables must have been created/initialized before calling
       `encodeEPOCH3'.

 OUTPUTS:
       epString:       STRING.  The alternate EPOCH character string.  The
                       syntax of this string is `yyyy-mn-ddThh:mm:ss.cccZ'
                       where `yyyy' is the year, `mn' is the month (1-12),
                       `dd' is the day of the month (1-31), `hh' is the hour
                       (0-23), `mm' is the minute (0-59), `ss' is the second
                       (0-59), and `ccc' is the millisecond (0-999).

       All output variables are (re)created/assigned by `encodeEPOCH3'.

 EXAMPLE:
       IDL> epoch = 6d13
       IDL> encodeEPOCH3, epoch, epString

 RESTRICTIONS:
       None.

 REVISION HISTORY:
        7-Nov-94        Original version.
;-
;+
 NAME:
       encodeEPOCHx

 PURPOSE:
       `encodeEPOCHx' is used to encode a CDF_EPOCH value into a customized
       EPOCH character string.

       This procedure is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       encodeEPOCHx, epoch, format, epString

 INPUTS:
       epoch:          DOUBLE (double precision floating-point).  The
                       CDF_EPOCH value to be encoded.

       format:         STRING.  The format specification to be used when
                       encoding the CDF_EPOCH value.

                       The format specification consists of EPOCH components
                       which are encoded and text which is simply copied to
                       the encoded string.  Components are enclosed in angle
                       brackets and consist of a component token and an
                       optional width.  The syntax of a component is...

                                         <token[.width]>.

                       If the optional width contains a leading zero, then
                       the component will be encoded with leading zeroes
                       (rather than leading blanks).  The supported component
                       tokens and their default widths are as follows...

                         Token   Meaning                         Default
                         -----   -------                         -------
                         dom     Day of month (1-31)             <dom.0>
                         doy     Day of year (001-366)           <doy.03>
                         month   Month (`Jan',`Feb',...,`Dec')   <month>
                         mm      Month (1,2,...,12)              <mm.0>
                         year    Year (4-digit)                  <year.04>
                         yr      Year (2-digit)                  <yr.02>
                         hour    Hour (00-23)                    <hour.02>
                         min     Minute (00-59)                  <min.02>
                         sec     Second (00-59)                  <sec.02>
                         fos     Fraction of second.             <fos.3>
                         fod     Fraction of day.                <fod.8>

                       Note that a width of zero indicates that as many
                       digits as necessary should be used to encoded the
                       component.  The <month> component is always encoded
                       with three characters.  The <fos> and <fod> components
                       are always encoded with leading zeroes.

                       If a left angle bracket is desired in the encoded
                       string, then simply specify two left angle brackets
                       (`<<') in the format specification (character
                       stuffing).

       All input variables must have been created/initialized before calling
       `encodeEPOCHx'.

 OUTPUTS:
       epString:       STRING.  The customized EPOCH character string.

       All output variables are (re)created/assigned by `encodeEPOCHx'.

 EXAMPLE:
       IDL> epoch = 6.297d13
       IDL> format = '<dom.02>-<month>-<year> <hour>:<min>:<sec>.<fos>'
       IDL> encodeEPOCHx, epoch, format, epString
       IDL> print, epString
       10-Jun-1995 10:40:00.000

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       12-Jun-95        Original version.
       26-Jun-95        Expanded online help.
;-
;+
 NAME:
       EPOCHbreakdown

 PURPOSE:
       `EPOCHbreakdown' is used to break down a CDF_EPOCH value into its
       component parts.

       This procedure is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       EPOCHbreakdown, epoch, year, month, day, hour, minute, second, msec

 INPUTS:
       epoch:          DOUBLE (double precision floating-point).  The
                       CDF_EPOCH value to be broken down.

       All input variables must have been created/initialized before calling
       `EPOCHbreakdown'.

 OUTPUTS:
       year:           LONG.  The year component (AD).
       month:          LONG.  The month component (1-12).
       day:            LONG.  The day component (1-31).
       hour:           LONG.  The hour component (0-23).
       minute:         LONG.  The minute component (0-59).
       second:         LONG.  The second component (0-59).
       millisecond:    LONG.  The millisecond component (0-999).

       All output variables are (re)created/assigned by `EPOCHbreakdown'.

 EXAMPLE:
       IDL> epoch = 6d13
       IDL> EPOCHbreakdown, epoch, year, month, day, hour, minute, second, $
       IDL>                 msec

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       24-Jan-94        Original version.
;-
;+
 NAME:
       MCP

 PURPOSE:
       MCP (Map CDF Parameter) is used to map (look up) the numeric value
       associated with the (IDL) variables defined in `cdf.pro'.  MCP would
       be used in those cases where it is not possible to include `cdf.pro'
       (by executing `@cdf.pro' at the IDL command line) because of the limit
       on the number of local variable which may exist in a function/procedure
       (as imposed by IDL).

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       value = MCP (name)

 INPUTS:
       name:           STRING.  Symbolic name of the parameter whose value
                       is desired.

 OUTPUTS:
       value:          LONG.  The associated value.

 EXAMPLE:
       IDL> status = CDFcreate ('flux1', 1L, numDims, MCP('HOST_ENCODING'), $
       IDL>                     MCP('ROW_MAJOR'), id)
       IDL> if (status lt MCP('CDF_OK')) print, 'CDFcreate failed...'

       Note that `CDF_OK' is defined in `cdf.pro' (which is mapped by `MCP')
       rather than `cdf1.pro' because of the frequency of its use.

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       23-Aug-93        Original version.
       26-Jun-95        IDL 4.0.
;-
;+
 NAME:
       MII

 PURPOSE:
       MII (Map Internal Interface) is used to map (look up) the numeric value
       associated with the (IDL) variables defined in `cdf2.pro'.  MII would
       be used in those cases where it is not possible to include `cdf2.pro'
       (by executing `@cdf2.pro' at the IDL command line) because of the
       limit on the number of local variable which may exist in a function
       or procedure (as imposed by IDL).

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       value = MII (name)

 INPUTS:
       name:           STRING.  Symbolic name of the Internal Interface
                       parameter whose value is desired.

 OUTPUTS:
       value:          LONG.  The associated value.

 EXAMPLE:
       IDL> status = CDFlib (MII('OPEN_'), MII('CDF_'), 'rain1', id, $
       IDL>                  MII('GET_'), MII('CDF_FORMAT_'), format, $
       IDL>                  MII('NULL_'))
       IDL> if (status lt MCP('CDF_OK')) print, 'CDFlib failed...'

       Note that `MCP' is used to map the CDF parameters in `cdf.pro'.

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       23-Aug-93        Original version.
       26-Jun-95        IDL 4.0.
;-
;+
 NAME:
       MSC

 PURPOSE:
       MSC (Map Status Code) is used to map (look up) the numeric value
       associated with the (IDL) variables defined in `cdf1.pro'.  MSC would
       be used in those cases where it is not possible to include `cdf1.pro'
       (by executing `@cdf1.pro' at the IDL command line) because of the
       limit on the number of local variable which may exist in a function
       or procedure (as imposed by IDL).

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       value = MSC (name)

 INPUTS:
       name:           STRING.  Symbolic name of the status code whose value
                       is desired.

 OUTPUTS:
       value:          LONG.  The associated value.

 EXAMPLE:
       IDL> status = CDFopen ('flux1', id)
       IDL> if (status eq MSC('NO_SUCH_CDF')) print, 'No such CDF.'

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       23-Aug-93        Original version.
       26-Jun-95        IDL 4.0.
;-
;+
 NAME:
       parseEPOCH

 PURPOSE:
       `parseEPOCH' is used to parse a CDF_EPOCH value from the standard
       EPOCH character string.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       epoch = parseEPOCH (epString)

 INPUTS:
       epString:       STRING.  The standard EPOCH character string.  The
                       syntax of this string is `dd-mmm-yyyy hh:mm:ss.ccc'
                       where `dd' is the day of the month (1-31), `mmm' is
                       the month (`Jan', `Feb', `Mar', `Apr', `May', `Jun',
                       `Jul', `Aug', `Sep', `Oct', `Nov', or `Dec'), `yyyy'
                       is the year, `hh' is the hour (0-23), `mm' is the
                       minute (0-59), `ss' is the second (0-59), and `ccc'
                       is the millisecond (0-999).

       All input variables must have been created/initialized before calling
       `parseEPOCH'.

 OUTPUTS:
       epoch:          DOUBLE (double precision floating-point).  The
                       parsed CDF_EPOCH value.

       All output variables are (re)created/assigned by `parseEPOCH'.

 EXAMPLE:
       IDL> epString = '04-Jan-1956 11:34:55.010'
       IDL> epoch = parseEPOCH (epString)

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       24-Jan-94        Original version.
;-
;+
 NAME:
       row_to_col

 PURPOSE:
       `row_to_col' is used to switch the majority of a multi-dimensional
       array from row-major to column-major (the majority expected by IDL).
       This function would be used after reading a buffer of rVariable
       values with `CDFvarHyperGet' from a column-major CDF.

       This function is part of the CDF interface provided with the CDF
       distribution.  IDL also provides its own built-in interface to CDFs.

 CALLING SEQUENCE:
       status = row_to_col (iBuffer, oBuffer, numDims, dimSizes, numBytes, $
                            numRecs)

 INPUTS:
       iBuffer:        DATA TYPE DEPENDENT.  The multi-dimensional array
                       (IDL variable) whose majority is to be reversed.
       numDims:        LONG.  The number of dimensions (in each record).
       dimSizes:       LONG array.  The dimension sizes (in each record).
       numBytes:       LONG.  The number of bytes per value.
       numRecs:        LONG.  The number of CDF records in the buffer.
                       Note that the majority is only changed within each
                       record - the ordering of the records remains the
                       same (the last dimension of the IDL variable is not
                       affected).

       All input variables must have been created/initialized before calling
       `row_to_col'.

 OUTPUTS:
       oBuffer:        DATA TYPE DEPENDENT.  A newly created/recreated IDL
                       variable (with the same dimensionality as `iBuffer')
                       with reversed (column-major) majority.

       status:         LONG.  A completion status code.  CDF_OK indicates
                       success.  The possible status codes are defined in
                       `cdf1.pro' (CDF_OK is also defined in `cdf.pro').

       All output variables are (re)created/assigned by `row_to_col'.

 EXAMPLE:
       Assume that 5 records from an rVariable each with a dimensionality
       of 2:[10,30] have been read from a CDF with column-major majority
       into an IDL variable named `iBuffer' which was created by the
       `CDFvarHyperGet' as `fltarr(10,30,5)'.  If the data type of the
       rVariable was CDF_REAL4 (4-byte floating-point), the majority would
       be reversed as follows...

       IDL> @cdf.pro
       IDL> dimSizes = lonarr(2)
       IDL> dimSizes(0) = 10
       IDL> dimSizes(1) = 30
       IDL> status = row_to_col (iBuffer, oBuffer, 2L, dimSizes, 4L, 5L)
       IDL> if (status lt CDF_OK) print, 'row_to_col failed...'

       `oBuffer' would also be created/recreated as `fltarr(10,30,5)' by
       `row_to_col'.

 RESTRICTIONS:
       None.

 REVISION HISTORY:
       13-May-93        Original version.
        7-Nov-94        Fixed example (`lonarr' to `fltarr').
       26-Jun-95        IDL 4.0.
;-
