Previous: uttik Up: ../plot79_u.html Next: uttsin
INTEGER FUNCTION UTTS00 (MAXKEY,NDAVRG) C$ (Symbol Table - Initialization) C$ Allocate and initialize space for a symbol table large C$ enough to hold MAXKEY variables, each of which has on C$ average NDAVRG double precision value entries. Routines C$ UTTSIN and UTTSLN may be used later to install or lookup C$ entries in the table. C$ C$ The function value returned is the number of keys for which C$ space is actually available (this may differ from MAXKEY), C$ or 0 if space is insufficient. C$ C$ Space is allocated dynamically using the PORT Library C$ Framework support routines. The default PORT space of 500 C$ doublewords can be increased by enlarging the common C$ area by a declaration of the form C$ C$ COMMON /CSTAK/ DSTAK(nnn) C$ C$ and informing PORT of this by a statement C$ C$ CALL ISTKIN (nnn,4) C$ C$ The allocation requires a constant block followed by 4 C$ vectors of length NKEY and then by the symbol table string C$ area. SMTOFF in COMMON / UTTS01 / is the index of the word C$ in ISTAK(*) in COMMON / CSTAK / preceding the allocated C$ block. C$ C$ Because dynamic allocation carries with it a storage C$ penalty of 2 words for each block, it is desirable to C$ allocate value storage from somewhat larger blocks. C$ Therefore, when a new symbol is to be installed by UTTSIN, C$ if insufficient space is available for its values, a new C$ block is allocated and the remaining space in the current C$ block is returned to the system if it is the last one C$ allocated (the usual case) or is lost (which may happen if C$ the caller is also using the stack package). C$ C$ The first 15 words contain index and length information C$ enabling the storage to be accessed and managed, as C$ follows. C$ C$ 1: OPKEY -- offset of name pointer vector C$ 2: OLKEY -- offset of name length vector C$ 3: OTKEY -- offset of type and count vector C$ 4: ODKEY -- offset of data value index vector C$ 5: OSKEY -- offset of string area C$ 6: MAXKEY -- number of keys available in vectors C$ 7: MAXSTR -- number of characters available in string area C$ 8: NKEY -- number of keys in use C$ 9: NSTR -- number of characters in use C$ 10: NDNEXT -- index of next available location in current C$ data block in DSTAK(*). C$ 11: NDLEFT -- number of locations left in current data C$ block. C$ 12: BLKSIZ -- number of locations acquired in last data block. C$ 13: SIZE -- number of locations acquired for symbol C$ table. C$ 14: NCHRPW -- number of characters per INTEGER word. C$ 15: NALLOC -- number of allocation of last data block (used C$ to determined whether space can be recovered C$ when a new block is needed). C$ C$ (27-APR-83)