C$Procedure SYIFSC ( Symbol Table if empty set --- character) SUBROUTINE SYIFSC ( NAME, VALUE, TABSYM, TABPTR, TABVAL ) C$ Abstract C C Set the value of a particular symbol in a character symbol table. C If the symbol already exists, do nothing to the symbol table. C Otherwise create the symbol and assign a value to it. C C$ Copyright C C Copyright (1996), California Institute of Technology. C U.S. Government sponsorship acknowledged. C C$ Required_Reading C C SYMBOLS C C$ Keywords C C SYMBOLS C C$ Declarations INTEGER LBCELL PARAMETER ( LBCELL = -5 ) CHARACTER*(*) NAME CHARACTER*(*) VALUE CHARACTER*(*) TABSYM ( LBCELL:* ) INTEGER TABPTR ( LBCELL:* ) CHARACTER*(*) TABVAL ( LBCELL:* ) C$ Brief_I/O C C VARIABLE I/O DESCRIPTION C -------- --- -------------------------------------------------- C NAME I Name of the symbol whose associated value is to be C set. C VALUE I Associated value of the symbol NAME. C C TABSYM, C TABPTR, C TABVAL I/O Components of the symbol table. C C$ Detailed_Input C C NAME is the name of the symbol whose associated value is to C be set. If NAME has values associated with it, they are C removed, and VALUE becomes the only value associated C with NAME. If NAME is not in the symbol table, a new C symbol is created, provided there is room in the C symbol table. C C VALUE is the new value associated with the symbol NAME. C C TABSYM, C TABPTR, C TABVAL are the components of a character symbol table. C C$ Detailed_Output C C TABSYM, C TABPTR, C TABVAL are the components of a character symbol table. C If NAME has values associated with it, the table C is left unchanged. C C If NAME is not in the symbol table, a new C symbol is created, provided there is room in the C symbol table. C C$ Parameters C C None. C C$ Files C C None. C C$ Exceptions C C All exceptions are diagnosed by routines in the call tree C of this one. C C$ Particulars C C If NAME has values associated with it, the symbol table is C returned unchanged. If NAME is not in the symbol table, a new C symbol is created, provided there is room in the C symbol table. C C$ Examples C C The contents of the symbol table are: C C BOHR --> HYDROGEN ATOM C EINSTEIN --> SPECIAL RELATIVITY C PHOTOELECTRIC EFFECT C BROWNIAN MOTION C FERMI --> NUCLEAR FISSION C PAULI --> EXCLUSION PRINCIPLE C NEUTRINO C C The call, C C CALL SYIFSC ( 'EINSTEIN', 'GENERAL RELATIVITY', C . TABSYM, TABPTR, TABVAL ) C C leaves the contents of the symbol table unchanged: C C BOHR --> HYDROGEN ATOM C EINSTEIN --> SPECIAL RELATIVITY C PHOTOELECTRIC EFFECT C BROWNIAN MOTION C FERMI --> NUCLEAR FISSION C PAULI --> EXCLUSION PRINCIPLE C NEUTRINO C C Note that the previous values associated with the symbol C "EINSTEIN" have been deleted, and now only the new value is C associated with the symbol. C C C The next call, C C CALL SYIFSC ( 'MILLIKAN', 'ELECTRON CHARGE' C . TABSYM, TABPTR, TABVAL ) C C modifies the contents of the symbol table to be: C C BOHR --> HYDROGEN ATOM C EINSTEIN --> SPECIAL RELATIVITY C PHOTOELECTRIC EFFECT C BROWNIAN MOTION C FERMI --> NUCLEAR FISSION C MILLIKAN --> ELECTRON CHARGE C PAULI --> EXCLUSION PRINCIPLE C NEUTRINO C C Note that the new symbol "MILLIKAN" was created by the last call. C A new symbol is created only if there is room in the symbol C table. C C$ Restrictions C C None. C C$ Literature_References C C None. C C$ Author_and_Institution C C W.L. Taber (JPL) C C$ Version C C- SPICELIB Version 1.0.0, 4-DEC-1996 (WLT) C C-& C$ Index_Entries C C conditionally set the value associated with a symbol C C-& C C SPICELIB functions C INTEGER SYDIMC LOGICAL RETURN C C Standard SPICE error handling. C IF ( RETURN () ) THEN RETURN END IF CALL CHKIN ( 'SYIFSC' ) IF ( SYDIMC( NAME, TABSYM, TABPTR, TABVAL ) .EQ. 0 ) THEN CALL SYSETC ( NAME, VALUE, TABSYM, TABPTR, TABVAL ) END IF CALL CHKOUT ( 'SYIFSC' ) RETURN END