Index of Functions: A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X 
Index Page
kdata

Table of contents
Procedure
Abstract
Required_Reading
Keywords
Declarations
Brief_I/O
Detailed_Input
Detailed_Output
Parameters
Exceptions
Files
Particulars
Examples
Restrictions
Literature_References
Author_and_Institution
Version

Procedure

     KDATA ( Kernel Data )

     ENTRY KDATA ( WHICH, KIND, FILE, FILTYP, SRCFIL, HANDLE, FOUND )

Abstract

     Return data for the nth kernel that is among a list of specified
     kernel types.

Required_Reading

     KERNEL

Keywords

     KERNEL

Declarations

    INTEGER               WHICH
    CHARACTER*(*)         KIND
    CHARACTER*(*)         FILE
    CHARACTER*(*)         FILTYP
    CHARACTER*(*)         SRCFIL
    INTEGER               HANDLE
    LOGICAL               FOUND

Brief_I/O

     VARIABLE  I/O  DESCRIPTION
     --------  ---  --------------------------------------------------
     WHICH      I   Index of kernel to fetch from the list of kernels.
     KIND       I   The kind of kernel to which fetches are limited.
     FILE       O   The name of the kernel file.
     FILTYP     O   The type of the kernel.
     SRCFIL     O   Name of the source file used to load FILE.
     HANDLE     O   The handle attached to FILE.
     FOUND      O   .TRUE. if the specified file could be located.

Detailed_Input

     WHICH    is the number of the kernel to fetch (matching the type
              specified by KIND) from the list of kernels that have
              been loaded through the routine FURNSH but that have not
              been unloaded through the routine UNLOAD.

              The range of WHICH is 1 to COUNT, where COUNT is the
              number of kernels loaded via FURNSH of type KIND. This
              count may be obtained by calling KTOTAL. See the
              $Examples section for an illustrative example.

     KIND     is a list of types of kernels to be considered when
              fetching kernels from the list of loaded kernels. KIND
              should consist of words from list of kernel types
              given below.

                 SPK  --- All SPK files are counted in the total.
                 CK   --- All CK files are counted in the total.
                 DSK  --- All DSK files are counted in the total.
                 PCK  --- All binary PCK files are counted in the
                          total.
                 EK   --- All EK files are counted in the total.
                 TEXT --- All text kernels that are not meta-text
                          kernels are included in the total.
                 META --- All meta-text kernels are counted in the
                          total.
                 ALL  --- Every type of kernel is counted in the
                          total.

              KIND is case insensitive. If a word appears in KIND
              that is not one of those listed above, it is ignored.

              When KIND consists of multiple words, the words must
              be separated by blanks. Examples of valid lists are the
              strings

                 'SPK CK TEXT'
                 'SPK CK text'
                 'PCK DSK'
                 'CK'
                 'ALL'

              See the routine KTOTAL for examples of the use of KIND.

Detailed_Output

     FILE     is the name of the file having index WHICH in the
              sequence of files of type KIND that is currently loaded
              via FURNSH. FILE will be blank if there is not such
              kernel loaded.

     FILTYP   is the type of the kernel specified by FILE. FILE
              will be blank if there is no file matching the
              specification of WHICH and KIND.

     SRCFIL   is the name of the source file that was used to
              specify FILE as one to load. If FILE was loaded
              directly via a call to FURNSH, SRCFIL will be blank.
              If there is no file matching the specification of
              WHICH and KIND, SRCFIL will be blank.

     HANDLE   is the handle attached to FILE if it is a binary
              kernel. If FILE is a text kernel or meta-text kernel
              HANDLE will be zero. If there is no file matching
              the specification of WHICH and KIND, HANDLE will be
              set to zero.

     FOUND    is returned .TRUE. if a FILE matching the specification
              of WHICH and KIND exists. If there is no such file,
              FOUND will be set to .FALSE.

Parameters

     None.

Exceptions

     Error free.

     1)  If a file is not loaded matching the specification of WHICH
         and KIND, FOUND will be .FALSE., FILE, FILTYP, and SRCFIL will
         be blank and HANDLE will be set to zero.

     2)  If any of FILE, FILTYP or SRCFIL output strings has length
         too short to contain the corresponding output string, the
         string is truncated on the right.

Files

     None.

Particulars

     This routine allows you to determine which kernels have been
     loaded via FURNSH and to obtain information sufficient to directly
     query those files.

Examples

     The numerical results shown for this example may differ across
     platforms. The results depend on the SPICE kernels used as
     input, the compiler and supporting libraries, and the machine
     specific arithmetic implementation.

     1) Load a meta-kernel with a PCK, an LSK and an SPK and loop over
        the loaded kernels, outputting file information for each of
        them.

        Use the meta-kernel shown below to load the required SPICE
        kernels.


           KPL/MK

           File name: kdata_ex1.tm

           This meta-kernel is intended to support operation of SPICE
           example programs. The kernels shown here should not be
           assumed to contain adequate or correct versions of data
           required by SPICE-based user applications.

           In order for an application to use this meta-kernel, the
           kernels referenced here must be present in the user's
           current working directory.

           The names and contents of the kernels referenced
           by this meta-kernel are as follows:

              File name                     Contents
              ---------                     --------
              de421.bsp                     Planetary ephemeris
              pck00009.tpc                  Planet orientation and
                                            radii
              naif0009.tls                  Leapseconds

           \begindata

              KERNELS_TO_LOAD = ( 'de421.bsp',
                                  'pck00009.tpc',
                                  'naif0009.tls'  )

           \begintext

           End of meta-kernel


        Example code begins here.


              PROGRAM KDATA_EX1
              IMPLICIT NONE

        C
        C     Local constants.
        C
              INTEGER               FNAMLN
              PARAMETER           ( FNAMLN = 256 )

              INTEGER               FTYPLN
              PARAMETER           ( FTYPLN = 33 )

              INTEGER               SRCLEN
              PARAMETER           ( SRCLEN = 256 )

        C
        C     Local variables.
        C
              CHARACTER*(FNAMLN)    FILE
              CHARACTER*(FTYPLN)    FILTYP
              CHARACTER*(SRCLEN)    SRCFIL

              INTEGER               COUNT
              INTEGER               HANDLE
              INTEGER               WHICH

              LOGICAL               FOUND

        C
        C     Load several kernel files.
        C
              CALL FURNSH ( 'kdata_ex1.tm' )

        C
        C     Count the number of loaded kernel files.
        C
              CALL KTOTAL ( 'ALL', COUNT )

              DO WHICH= 1, COUNT + 1

                 CALL KDATA ( WHICH, 'ALL',   FILE, FILTYP,
             .                SRCFIL, HANDLE, FOUND        )

                 IF ( FOUND ) THEN

                    WRITE(*,*) 'Index : ', WHICH
                    WRITE(*,*) 'File  : ', FILE
                    WRITE(*,*) 'Type  : ', FILTYP
                    WRITE(*,*) 'Source: ', SRCFIL
                    WRITE(*,*) 'Handle: ', HANDLE
                    WRITE(*,*) ' '

                 ELSE

                    WRITE(*,*) 'No kernel found with index: ', WHICH

                 END IF

              END DO

              END


        When this program was executed on a Mac/Intel/gfortran/64-bit
        platform, the output was:


         Index :            1
         File  : kdata_ex1.tm
         Type  : META
         Source:
         Handle:            0

         Index :            2
         File  : de421.bsp
         Type  : SPK
         Source: kdata_ex1.tm
         Handle:            1

         Index :            3
         File  : pck00009.tpc
         Type  : TEXT
         Source: kdata_ex1.tm
         Handle:            0

         Index :            4
         File  : naif0009.tls
         Type  : TEXT
         Source: kdata_ex1.tm
         Handle:            0

         No kernel found with index:            5

Restrictions

     None.

Literature_References

     None.

Author_and_Institution

     N.J. Bachman       (JPL)
     J. Diaz del Rio    (ODC Space)
     B.V. Semenov       (JPL)
     W.L. Taber         (JPL)

Version

    SPICELIB Version 5.1.0, 08-AUG-2021 (JDR) (NJB)

        Changed argument name SOURCE to SRCFIL for consistency with
        other routines.

        Edited the header to comply with NAIF standard.
        Created complete code example from existing code fragments.

        Updated $Detailed_Input description of input arguments KIND, to
        illustrate use of multi-word lists, and WHICH, to describe its
        range.

        Added entry #2 to $Exceptions section. Added KERNEL to the list
        of required readings.

    SPICELIB Version 5.0.0, 01-FEB-2017 (NJB) (BVS)

        Updated to support use of DSKs.

        Updated the $Author_and_Institution section.

    SPICELIB Version 1.1.0, 02-APR-2009 (NJB)

        Deleted reference to unneeded variable DOALL.

    SPICELIB Version 1.0.1, 06-DEC-2002 (NJB)

        Typo in header example was corrected.

    SPICELIB Version 1.0.0, 01-JUL-1999 (WLT)
Fri Dec 31 18:36:29 2021