/* SYMCLR.PLP, SEGSRC, KJC, 12/20/79 /* Routine to remove a symbol from the table /* Copyright (c) 1981, Prime Computer, Inc., Natick, MA 01760 /***********************************************************************/ symclr: procedure(pointers); declare 1 pointers, 2 ptr$bak fixed binary(15), 2 ptr$cur fixed binary(15), 2 ptr$for fixed binary(15), 2 ptr$typ fixed binary(15), 2 ptr$ptr pointer, 2 ptr$subs fixed binary(31); declare (ptrsav, i) fixed binary(15); declare addrel entry(ptr, bin(31)) returns(ptr); declare map pointer external; $Insert symbol_table.ins.plp $Insert lodcmp.ins.plp $Insert chain.ins.plp ptrsav = ptr$cur; /* save the current entry */ ptr$ptr -> ma$flags = '0000'B4; /* zero out the type field */ if ptr$bak > 0 then addrel(addr(map), -symsiz*ptr$bak) -> ma$for = ptr$for; else if ptr$for = -32768 then chain.chain(ptr$typ+1) = 0; else chain.chain(ptr$typ+1) = ptr$for; ptr$cur = ptr$bak; if ptr$typ = 1 then do i = 5 to 16; if chain.chain(i) = ptrsav then chain.chain(i) = ptr$cur; else; end; else; if ptrsav = symlow then do; symlow = symlow - 1; ptr$ptr -> ma$for = 0; end; else do; if chain.chain(1) = 0 then ptr$ptr -> ma$for = -32768; else ptr$ptr -> ma$for = chain.chain(1); chain.chain(1) = ptrsav; end; return; end /* symclr */;