%SYSTEMROUTINESPEC MOVE(%INTEGER L,F,T) %ROUTINE FAIL(%STRING (255) S) SELECTOUTPUT(0) PRINTSTRING(S) NEWLINE %STOP %END; !OF FAIL %ROUTINE READLINE(%STRINGNAME S) SKIPSYMBOL %WHILE NEXTSYMBOL = NL S = '' %UNTIL NEXTSYMBOL = NL %THEN S = S.TOSTRING(NEXTSYMBOL) %C %AND SKIPSYMBOL SKIPSYMBOL %END; !OF READLINE %RECORDFORMAT RF(%INTEGER CONAD,FILETYPE,DATSTART,DATAEND) %EXTERNALROUTINESPEC PROMPT(%STRING(15)S) %SYSTEMROUTINESPEC DISCONNECT(%STRING(31)S,%INTEGERNAME FLAG) %SYSTEMROUTINESPEC CONNECT(%STRING(31)FILE,%INTEGER MODE,HOLE,PROTECT,%C %RECORDNAME R,%INTEGERNAME FLAG) %EXTERNALROUTINE FRIGLD(%STRING (255) S) %INTEGERARRAYFORMAT HEADAF(0 : 16) %INTEGERARRAYNAME HEAD %STRING (66) FILE, IDEN, NEWIDEN %RECORD RR(RF) %INTEGER CONAD, ALD, I, FLAG, LIST %INTEGERNAME LINK %RECORDFORMAT EP1F(%INTEGER LINK, LOC, %STRING (31) IDEN) %RECORDFORMAT EP7F(%INTEGER LINK, REFAD, %STRING (31) IDEN) %RECORDNAME EP1(EP1F) %RECORDNAME EP7(EP7F) PROMPT('FILE:') READLINE(FILE) CONNECT(FILE,3,0,0,RR,FLAG) -> ERR %IF FLAG # 0 CONAD = RR_CONAD ALD = CONAD+INTEGER(CONAD+24) -> ERR %IF INTEGER(ALD) # 14 HEAD == ARRAY(ALD,HEADAF) PROMPT('LIST:') READ(LIST) PROMPT("IDEN NEWIDEN:") %IF LIST = 7 %START %CYCLE AGAIN: READLINE(IDEN) %IF IDEN = '.END' %START DISCONNECT(FILE,FLAG) %RETURN %FINISH %UNLESS IDEN -> IDEN.(" ").NEWIDEN %C %THEN FAIL("INVALID PARAMETER") LINK == HEAD(7) %WHILE LINK # 0 %CYCLE EP7 == RECORD(LINK+CONAD) %IF EP7_IDEN = IDEN %START %IF NEWIDEN=".NULL" %START LINK=EP7_LINK; !LINK IS AN INTEGERNAME PRINTSTRING(IDEN." REMOVED") NEWLINE %FINISHELSESTART %IF LENGTH(NEWIDEN) > LENGTH(IDEN) %C %THEN FAIL("NEWIDEN TOO LONG") MOVE(LENGTH(NEWIDEN)+1,ADDR(NEWIDEN),ADDR(EP7_IDEN)) !TO AVOID PADDING WITH UNASSIGNED PRINTSTRING(IDEN." RENAMED AS ".NEWIDEN) NEWLINE %FINISH -> AGAIN %FINISH LINK == EP7_LINK %REPEAT PRINTSTRING(IDEN." NOT FOUND") NEWLINE %REPEAT %FINISH %IF LIST = 1 %START %CYCLE AGAIN1: READLINE(IDEN) %IF IDEN = '.END' %START DISCONNECT(FILE,FLAG) %RETURN %FINISH %UNLESS IDEN -> IDEN.(" ").NEWIDEN %C %THEN FAIL("INVALID PARAMETER") LINK == HEAD(1) %WHILE LINK # 0 %CYCLE EP1 == RECORD(LINK+CONAD) %IF EP1_IDEN = IDEN %START %IF NEWIDEN = ".NULL" %START; !BLOT OUT THIS ENTRY LINK = EP1_LINK; !LINK IS AN INTEGERNAME PRINTSTRING(IDEN." REMOVED") NEWLINE %FINISH %ELSE %START %IF LENGTH(NEWIDEN) > LENGTH(IDEN) %C %THEN FAIL("NEWIDEN TOO LONG") MOVE(LENGTH(NEWIDEN)+1,ADDR(NEWIDEN),ADDR( %C EP1_IDEN)) PRINTSTRING(IDEN." RENAMED AS ".NEWIDEN) NEWLINE %FINISH -> AGAIN1 %FINISH LINK == EP1_LINK %REPEAT PRINTSTRING(IDEN." NOT FOUND ") %REPEAT %FINISH ERR: %END; !OF FRIGLD %ENDOFFILE