Table of contents
CSPICE_PCPOOL provides toolkit programmers a method for
programmatically inserting character data into the
kernel pool.
Given:
name the scalar string name of the kernel pool variable to associate
with the values supplied in the array `cvals'.
help, name
STRING = Scalar
`name' is restricted to a length of 32 characters or less.
cvalen the integer value describing the max length to allow for the
data strings assigned to `name'.
help, cvalen
LONG = Scalar
cvals an array of strings, each string not longer than `cvalen', to
load into the kernel pool sub-system with the assigned variable
name `name'.
help, cvals
STRING = Array[N]
the call:
cspice_pcpool, name, cvalen, cvals
inserts the variable `name' into the kernel pool with values as defined in
`cvals'.
None.
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.
1) The following program demonstrates how to programmatically
insert character data into the kernel pool.
Example code begins here.
PRO pcpool_ex1
;;
;; Define the parameters for the string array.
;;
LNSIZE = 80
PCPOOL_DIM = 10
PCPOOL_VAR = 'pcpool_array'
PCPOOL_VAL_TMP= 'pcpool_val'
;;
;; Populate the pcpool_arr array with values.
;;
pcpool_arr = strarr( PCPOOL_DIM )
;;
;; Fill pcpool_arr with PCPOOL_DIM entries of the
;; form n_pcpool_val.
;;
for i = 0, (PCPOOL_DIM-1) do begin
pcpool_arr[i] = string(i) + '_' + PCPOOL_VAL_TMP
;;
;; Compress all whitespace from the string
;;
cspice_cmprss, ' ', 0, pcpool_arr[i], temp
pcpool_arr[i] = temp
endfor
;;
;; Insert the array data into the kernel pool
;; with variable name 'pcpool_array.'
;;
cspice_pcpool, PCPOOL_VAR, LNSIZE, pcpool_arr
;;
;; Retrieve the variable's associated values in
;; array cvals.
;;
ROOM = PCPOOL_DIM
START = 0
cspice_gcpool, PCPOOL_VAR, START, ROOM, LNSIZE, cvals, found
;;
;; Check we found the expected variable, and ensure
;; the expected values.
;;
if ( found ) then begin
print, 'Found array variable ' + PCPOOL_VAR + ' with entries:'
for i = 0, (n_elements(cvals)-1) do begin
print, ' ' + cvals[i]
endfor
endif else begin
print, 'Variable ' + PCPOOL_VAR + ' not found in kernel pool.'
endelse
END
When this program was executed on a Mac/Intel/IDL8.x/64-bit
platform, the output was:
Found array variable pcpool_array with entries:
0_pcpool_val
1_pcpool_val
2_pcpool_val
3_pcpool_val
4_pcpool_val
5_pcpool_val
6_pcpool_val
7_pcpool_val
8_pcpool_val
9_pcpool_val
This routine provides a programmatic interface for inserting
character data into the SPICE kernel pool without reading an
external file.
Kernel pool variable names are restricted to a length of 32
characters or less.
1) If `name' is already present in the kernel pool and there
is sufficient room to hold all values supplied in `cvals',
the old values associated with `name' will be overwritten.
2) If there is not sufficient room to insert a new variable into
the kernel pool and `name' is not already present in the kernel
pool, an error is signaled by a routine in the call tree of
this routine.
3) If there is not sufficient room to insert the values
associated with `name', the error SPICE(NOMOREROOM) is signaled
by a routine in the call tree of this routine.
4) If the kernel pool variable name length exceeds its maximum
allowed length (see Kernel Required Reading, kernel.req), the
error SPICE(BADVARNAME) is signaled by a routine in the call
tree of this routine.
5) If any of the input arguments, `name', `cvalen' or `cvals', is
undefined, an error is signaled by the IDL error handling
system.
6) If any of the input arguments, `name', `cvalen' or `cvals', is
not of the expected type, or it does not have the expected
dimensions and size, an error is signaled by the Icy
interface.
None.
None.
ICY.REQ
KERNEL.REQ
None.
J. Diaz del Rio (ODC Space)
E.D. Wright (JPL)
-Icy Version 1.1.0, 11-JUN-2021 (JDR)
Changed input argument name "length" to "cvalen" for consistency
with other routines.
Edited the header to comply with NAIF standard. Added example's
problem statement and changed maximum line length from 81 to a more
appropriate value of 80.
Extended -Particulars section.
Added -Parameters, -Exceptions, -Files, -Restrictions,
-Literature_References and -Author_and_Institution sections.
Removed reference to the routine's corresponding CSPICE header from
-Abstract section.
Added arguments' type and size information in the -I/O section.
-Icy Version 1.0.1, 10-FEB-2010 (EDW)
Added mention of the length restriction on the kernel pool variable
name "name".
-Icy Version 1.0.0, 16-JUN-2003 (EDW)
Set the value of a character kernel pool variable
|