! ----- REMOVE_IDENTIFIER.FUN ----- ! ! ----- FUNCTION TO REMOVE IDENTIFIER FROM ALL CLUSTER NODES ----- ! ----- (USED TO MAINTAIN THE CLUSTER-WIDE RIGHTSLIST.DAT FILES ----- ! ----- WHEN YOU ARE NOT USING A CLUSTER-COMMON RIGHTSLIST) ----- ! ! ---------- PASSED: ---------- ! ----- THE_IDENT = Identifier name to be removed ! ----- SPECIFIC_NODE = (Optional) Specific node to ! ----- remove the identifier from ! ! ----- Last Change 02/01/94 by Brian Lomasky ----- ! FUNCTION WORD REMOVE_IDENTIFIER(STRING SPECIFIC_NODE) %INCLUDE "NUSER.INC" DECLARE WORD ERR_FLAG ! TRUE IF DONE READING RIGHTS DECLARE WORD FIRST_RECORD_WANTED! TRUE IF FIRST RECORD WANTED DECLARE WORD I_O_CHNL ! RIGHTSLIST I/O CHNL TO ACCESS EXTERNAL LONG FUNCTION DEC_TO_OCT( & LONG) ! CONVERT DECIMAL TO OCTAL EXTERNAL WORD FUNCTION READ_RIGHTSLIST(WORD, & WORD) ! READ RIGHTSLIST RECORD EXTERNAL WORD FUNCTION SEARCH_RIGHTSLIST(WORD, WORD, & WORD) ! READ MATCHING RIGHTSLIST REC REMOVE_IDENTIFIER = TRUE ! ASSUME ERROR STATUS IF DEBUG_MODE THEN PRINT "DEBUG>----- Call REMOVE_IDENTIFIER" PRINT "DEBUG>THE_IDENT=" + TRM$(THE_IDENT) + & ", SPECIFIC_NODE=" + SPECIFIC_NODE END IF ! ----- FOR EACH POSSIBLE NODE: ----- I_O_CHNL = 0% ! ----- FOR EACH OPEN FILE: ----- WHILE I_O_CHNL < RIGHTSLIST_COUNTER I_O_CHNL = I_O_CHNL + 1% ! ----- SKIP IF RIGHTSLIST IS UNAVAILABLE ----- ITERATE IF TRM$(RIGHTSLIST_SPECS(I_O_CHNL)) = "" ! ----- SKIP IF UNDESIRED NODE ----- IF SPECIFIC_NODE <> "" THEN ITERATE IF SPECIFIC_NODE <> & TRM$(RIGHTSLIST_NODES(I_O_CHNL)) END IF IF DEBUG_MODE THEN PRINT "DEBUG>Check node " + & TRM$(RIGHTSLIST_NODES(I_O_CHNL)) END IF ! ----- SEE IF THE_IDENT ALREADY EXISTS ----- KGB_NAME = THE_IDENT IF NOT SEARCH_RIGHTSLIST(I_O_CHNL, 2%, TRUE) THEN IF I_O_CHNL = 1% OR DEBUG_MODE THEN ! ----- PRINT WARNING IF ----- ! ----- IDENTIFIER DOES ----- ! ----- NOT EXIST ON THE ----- ! ----- LOCAL NODE ----- PRINT "Warning - " + & TRM$(THE_IDENT) & + " is not an" & + " existing" + & " identifier" + & " on " + TRM$( & RIGHTSLIST_NODES( & I_O_CHNL)) + BEL END IF ITERATE END IF ! ----- DELETE IT ----- DELETE #I_O_CHNL PRINT "Removed " + TRM$(THE_IDENT) + & " identifier from " + & TRM$(RIGHTSLIST_NODES(I_O_CHNL)) + "..." UNLOCK #I_O_CHNL ! ----- DONE IF IDENTIFIER IN UIC FORMAT ----- IF KGB_IDENTIFIER > 0% THEN ERR_FLAG = TRUE IF DEBUG_MODE THEN PRINT "DEBUG>Done since UIC" END IF ELSE ERR_FLAG = FALSE END IF ! ----- STORE IDENTIFIER VALUE TO SEARCH FOR ----- SEARCH_IDENTIFIER = KGB_IDENTIFIER ! ----- THEN LOCATE ALL MATCHING HOLDER RECORDS ----- FIRST_RECORD_WANTED = TRUE WHILE NOT ERR_FLAG IF READ_RIGHTSLIST(FIRST_RECORD_WANTED, & I_O_CHNL) THEN ERR_FLAG = TRUE ITERATE END IF FIRST_RECORD_WANTED = FALSE ! ----- SEE IF DONE WITH THIS ----- ! ----- IDENTIFIER ----- IF SEARCH_IDENTIFIER <> KGB_IDENTIFIER THEN ERR_FLAG = TRUE ITERATE END IF IF REC_LEN > 48% THEN PRINT "REMOVE_IDENTIFIER:" + & " FOUND BAD RECORD" + & " LENGTH: "; REC_LEN ITERATE END IF DELETE #I_O_CHNL PRINT "Removed " + TRM$(THE_IDENT) + & " from [" + NUM1$(DEC_TO_OCT(( & KGB_OCT_UIC_GROUP))) + & "," + NUM1$(DEC_TO_OCT(( & KGB_OCT_UIC_MEMBER))) + & "] holder on " + & TRM$(RIGHTSLIST_NODES(I_O_CHNL)) + "..." NEXT UNLOCK #I_O_CHNL NEXT REMOVE_IDENTIFIER = FALSE ! RETURN SUCCESS STATUS END FUNCTION