boddef |
Table of contents
ProcedureBODDEF ( Body name/ID code definition ) SUBROUTINE BODDEF ( NAME, CODE ) AbstractDefine a body name/ID code pair for later translation via BODN2C or BODC2N. Required_ReadingNAIF_IDS KeywordsBODY CONVERSION DeclarationsIMPLICIT NONE CHARACTER*(*) NAME INTEGER CODE Brief_I/OVARIABLE I/O DESCRIPTION -------- --- -------------------------------------------------- NAME I Common name of some body. CODE I Integer code for that body. MAXL P Maximum length of NAME string. Detailed_InputNAME is an arbitrary name of a body which could be a planet, satellite, barycenter, spacecraft, asteroid, comet, or other ephemeris object. The case and positions of blanks in a name are significant. BODC2N returns the same string (case and space) most recently mapped to a code. When NAME consists of more than one word, the words require separation by at least one blank. The kernel sub-system stores NAME as described in the BODDEF call, but creates an equivalence class based on NAME for comparisons in BODN2C. This class ignores leading/trailing whitespace, compresses interior whitespace to a single space, and ignores character case. The following strings belong to the same equivalence class: 'JUPITER BARYCENTER' 'Jupiter Barycenter' 'JUPITER BARYCENTER ' 'JUPITER BARYCENTER' ' JUPITER BARYCENTER' However, 'JUPITERBARYCENTER' is distinct from the names above. When ignoring trailing blanks, NAME must be short enough to fit into the space defined by parameter MAXL. CODE is the integer ID code for assignment to body NAME. Detailed_OutputNone. ParametersMAXL is the maximum allowed length of a body NAME. Names exceeding this length will be truncated on assignment to a code with BODDEF. The value of this parameter may be found in the include file 'zzbodtrn.inc'. Exceptions1) If improper inputs are supplied, or if there is insufficient room to store the requested addition, an error is signaled by a routine in the call tree of this routine. 2) If the length of NAME exceeds the maximum allowed length for a body name, the name stored in the kernel pool will be truncated on the right. 3) If a name-code definition inserted into this routine seems to have no effect, it is possible that the contents of the definition are masked by the higher precedence kernel pool assignments. See the $Particulars section of this document for more information. FilesNone. ParticularsBODDEF is one of five related subroutines, BODS2C Body string to code BODC2S Body code to string BODN2C Body name to code BODC2N Body code to name BODDEF Body name/code definition BODS2C, BODC2S, BODN2C, and BODC2N perform translations between body names and their corresponding integer ID codes which are used in SPICE files and routines. BODS2C is a slightly more general version of BODN2C: support for strings containing ID codes in string format enables a caller to identify a body using a string, even when no name is associated with that body. BODC2S is a general version of BODC2N; the routine returns either the name assigned in the body ID to name mapping or a string representation of the CODE value if no mapping exists. BODDEF assigns a body name to ID mapping. The mapping has priority in name-to-ID and ID-to-name translations. Refer to NAIF_IDs for the list of name/code associations built into SPICE, and for details concerning adding new name/code associations at run time by loading text kernels. Modifying the SPICE name-ID mapping set ======================================= Each body has a unique integer CODE, but may have several names. Thus you may associate more than one name with a particular integer code. CODE may already have a name as defined by a previous call to BODDEF or as part of the set of default definitions. That previous definition will remain, and a translation of that name will still give the same CODE. However, future translations of CODE will give the new NAME instead of the previous one. This feature is useful for assigning a more familiar or abbreviated name to a body. For example, in addition to the default name for body 5, 'JUPITER BARYCENTER', you could define the abbreviation 'JB' to mean 5. Note: In the case where BODDEF performs a name-to-ID mapping assignment for an unused body name and unused ID value, any subsequent assignment to NAME destroys the previous mapping. BODDEF( 'spud', 22) then BODDEF( 'spud', 23) results in the state 'spud' maps to 23, 23 maps to 'spud', and 22 maps to nothing (FOUND in BODC2N returns .FALSE.). ExamplesYou may associate a new name for a previously defined code: CALL BODDEF ( 'JB', 5 ) You may also define the name and integer code for a new body: CALL BODDEF ( 'Asteroid Frank', 20103456 ) After these calls to BODDEF, BODN2C would return the following translations: Name Code Found? ------------------------ ------ ------ 'JB' 5 Yes 'Jupiter Barycenter' 5 Yes 'ASTEROID FRANK' 20103456 Yes 'ASTEROIDFRANK' - No 'Frank' - No and BODC2N will return these translations: Code Name Found? ------- ------------------- ------ 5 'JB' Yes 20103456 'Asteroid Frank' Yes RestrictionsNone. Literature_ReferencesNone. Author_and_InstitutionJ. Diaz del Rio (ODC Space) K.R. Gehringer (JPL) B.V. Semenov (JPL) F.S. Turner (JPL) E.D. Wright (JPL) VersionSPICELIB Version 1.2.0, 13-AUG-2021 (JDR) Added IMPLICIT NONE statement. Edited the header to comply with NAIF standard. Added entry #2 to $Exceptions section. SPICELIB Version 1.1.2, 16-MAY-2009 (EDW) Edit to $Particulars section to document the BODC2S routine. SPICELIB Version 1.1.1, 28-FEB-2008 (BVS) Corrected the contents of the $Required_Reading section. SPICELIB Version 1.1.0, 23-JAN-2004 (EDW) Rewrote header for clarity with regards to the current capabilities of the kernel subsystem. SPICELIB Version 1.0.2, 26-AUG-2002 (FST) Updated header to describe the parameter MAXL and its effect on this module. The $Exceptions section was updated to include a more general discussion of errors that routines in the call tree of this routine may signal. SPICELIB Version 1.0.1, 12-AUG-2001 (EDW) Updated header with information on new functionality. The code-to-name retrieval routines now return the exact string as defined in the last code/name mapping (case and space). SPICELIB Version 1.0.0, 23-JAN-1996 (KRG) This was the BODDEF entry point from the original BODTRN subroutine that was in the NAIF toolkit SUPPORT library. When the private subroutine ZZBODTRN was added to SPICELIB, superseding the BODTRN from SUPPORT, the body ID code/name translation interface from the original BODTRN was moved to SPICELIB so that ID codes did not have to be hard coded by users of the toolkit. This subroutine simply calls the private subroutine ZZBODDEF to perform its job. |
Fri Dec 31 18:35:59 2021