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

Abstract
I/O
Examples
Particulars
Required Reading
Version
Index_Entries

Abstract


   CSPICE_EKBSEG starts/initializes a new segment in an EK file.

   For important details concerning this module's function, please refer to
   the CSPICE routine ekbseg_c.

I/O

   
   Given:
   
      handle   the scalar integer handle of an EK file open for 
               write access
               
      tabnam   the scalar string holding the table name for the
               current segment, with the string no longer than
               SPICE_EK_TNAMSZ (see SpiceEK.h)  
               
      ncols    the scalar integer holding the count of columns 
               in the new segment; 'cnames' and 'decls' must have
               ncols members
               
      cnames   an array of strings with dimension no larger than
               
                  cnames[SPICE_EK_MXCLSG][SPICE_EK_CSTRLN]
   
               i.e. no more than SPICE_EK_MXCLSG elements
               for array cnames, with each string no longer
               than SPICE_EK_CSTRLN (see SpiceEK.h); the array
               elements contain the table column names
               
      decls    an array of strings with the number of array elements
               no larger than SPICE_EK_MXCLSG (see SpiceEK.h); the
               array elements contain the type declarations for
               each column with the Ith element of cnames and the Ith 
               element of decls apply to the Ith column in the segment. 
   
                  Column names must start with a letter
                  and contain only characters from the set
                  {A-Z,a-z,0-9,$,_}.  Case is not
                  significant.
   
                  The declarations are strings that contain 
                  `keyword=value' assignments that define the 
                  attributes of the columns to which they apply.
   
   the call:
   
      cspice_ekbseg, handle, tabnam, ncols, cnames, decls, segno
   
   returns:
   
      segno    the scalar integer value for the data segment
               targeted by the data write
   

Examples


   Any numerical results shown for this example may differ between
   platforms as the results depend on the SPICE kernels used as input
   and the machine specific arithmetic implementation.

   
      ;;
      ;; Initialize needed parameters.
      ;;
      SPICEFALSE = 0B
      SPICETRUE  = 1B
      EKNAME     = "ekacex_t.ek"
      FNMLEN     = 50
      IFNAME     = "Test EK"
      LNMLEN     = 50
      LSK        = "standard.tm"
      NCOLS      = 6
      NRESVC     = 0
      NROWS      = 9
      TABLE       = "DATAORDERS"
      
      ;;
      ;; Load a leapseconds kernel for UTC/ET conversion.
      ;;
      cspice_furnsh, LSK
      
      ;;
      ;; Open a new EK file.  For simplicity, we won't 
      ;; reserve space for the comment area, so the 
      ;; number of reserved comment characters is zero. 
      ;; The constant IFNAME is the internal file name. 
      ;;
      if( cspice_exists( EKNAME ) ) then begin
         file_delete, EKNAME
      endif
      cspice_ekopn, EKNAME, IFNAME, NRESVC, handle
      
      cnames = strarr( NCOLS )
      cdecls = strarr( NCOLS )
      
      cnames[0] = "ORDER_ID" 
      cdecls[0] = "DATATYPE = INTEGER, INDEXED = TRUE"
      
      cnames[1] = "CUSTOMER_ID"
      cdecls[1] = "DATATYPE = INTEGER, INDEXED = TRUE"
      
      cnames[2] = "LAST_NAME" 
      cdecls[2] = "DATATYPE = CHARACTER*(*), INDEXED  = TRUE"
      
      cnames[3] = "FIRST_NAME" 
      cdecls[3] = "DATATYPE = CHARACTER*(*), INDEXED  = TRUE"
      
      cnames[4] = "ORDER_DATE"
      cdecls[4] = "DATATYPE = TIME, INDEXED  = TRUE" 
      
      cnames[5] = "COST"
      cdecls[5] = "DATATYPE = DOUBLE PRECISION, "    +$
                  "INDEXED  = TRUE, NULLS_OK = TRUE"
         
      ;;
      ;; Start the segment.  We presume the number of  rows 
      ;; of data is known in advance. 
      ;;
      cspice_ekbseg, handle,  TABLE,   NCOLS,  $
                     cnames,  cdecls,  segno
      
      ;;
      ;; Prepare for an append operation to segment segno.
      ;;
      cspice_ekappr, handle, segno, recno
      
      ;;
      ;; At this point, arrays containing data for the 
      ;; segment's columns may be filled in.  The names 
      ;; of the data arrays are shown below. 
      ;;
      ;;   Column           Data array 
      ;;
      ;;   "ORDER_ID"       ordids 
      ;;   "CUSTOMER_ID"    cstids 
      ;;   "LAST_NAME"      lnames 
      ;;   "FIRST_NAME"     fnames 
      ;;   "ORDER_DATE"     odates 
      ;;   "COST"           costs 
      ;;
      ;; The null flags array indicates which entries are null. 
      ;; It is ignored for columns that don't allow null 
      ;; values.  In this case, only the COST column allows 
      ;; nulls. 
      ;;
      ;; Fill in data arrays and null flag arrays here.  This code
      ;; section would normally be replaced by calls to user functions
      ;; returning column values.
      ;;
      ordids = lonarr( NROWS)
      cstids = lonarr( NROWS)
      costs  = dblarr( NROWS)
      ets    = dblarr( NROWS)
      fnames = strarr( NROWS)
      lnames = strarr( NROWS)
      
      for i = 0, (NROWS-1) do begin
      
         ordids[i] =  i
         cstids[i] =  i*100
         costs [i] =  double(100*i)
         fnames[i] = "Order " + string(i) + " Customer first name"
         lnames[i] = "Order " + string(i) + " Customer last name"
      
         date_string = '2001 Mar ' + string(i)
      
         cspice_utc2et, date_string, et
         ets[i] = et
      
      endfor
      
      nlflgs = SPICEFALSE   
      
      ;;
      ;; Add the columns of data to the segment.  All of the 
      ;; data for each column is written in one shot. Note,
      ;; the interface code signals an if the null flag for a 
      ;; column, 'nlflgs', has value SPICETRUE while the 
      ;; declaration for the column lacks a NULLS_OK = TRUE
      ;; assignment.
      ;;
      cspice_ekacei, handle, segno, recno, "order_id", NROWS, $
                     ordids, nlflgs
      
      cspice_ekacei, handle, segno, recno, "customer_id", NROWS, $
                     cstids, nlflgs
      
      cspice_ekacec, handle, segno, recno, "last_name", NROWS, $
                     LNMLEN, lnames, nlflgs
      
      cspice_ekacec, handle, segno, recno, "first_name", NROWS, $
                     FNMLEN, fnames,  nlflgs 
      
      cspice_ekaced, handle, segno, recno, "order_date", NROWS, $
                     ets, nlflgs
      
      cspice_ekaced, handle, segno, recno, "cost", NROWS, $
                     costs, nlflgs 
      
      ;;
      ;; The file must be closed by a call to cspice_ekcls
      ;;
      cspice_ekcls, handle
      cspice_unload, 'standard.tm'

Particulars


   None.

Required Reading


   ICY.REQ
   EK.REQ

Version


   -Icy Version 1.0.0, 16-JUN-2003, EDW (JPL)

Index_Entries

 
   start new E-kernel segment 
   start new EK segment 
 



Wed Apr  5 17:58:00 2017