22FL #SEG NAMEPRIV [M.B.KINGHAM 22^= #OPT K0NAMEPRIV=0 23DW #OPT K6NAMEPRIV=K6ALLGEO 23YG #LIS K0NAMEPRIV>K0ALLGEO 24D6 8HNAMEPRIV 24XQ SEGENTRY K1NAMEPRIV,QK1NAMEPRIV 257J ...WKPT WKPTABLE [TABLE OF WELLKNOWN PRIVS 25CB # THIS SEGMENT IMPLEMENTS THE NAMEPRIV COMMAND. THE NAMEPRIV COMMAND 25X2 # PERMITS :MANAGER TO RENAME A PRIVILEGE 26BL QK1NAMEPRIV 26W= # THIS SECTION CHECKS THAT THE PROPER USER IS :MANAGER 27*W # 27TG CJOBLOCK 3 [GET POINTER TO CURRENT JOBLOCK 28*6 LDX 4 PUSER(1) [MANA 28SQ LDX 5 PUSER+1(1) [GER 29#B LDX 6 ACES [ SPACES 29S2 TXU 4 JUSER(3) 2=?L TXU 5 JUSER+1(3) 2=R= TXU 6 JUSER+2(3) 2?=W BCC PARACHEC [IF :MANAGER,GO CHECK PARAMS 2?QG CALL 1 ONERR 2#=6 +JMAN [ONLY :MANAGER CAN RENAME PRIVILEGES 2#PQ # 2*9B # THIS SECTION PASSES OUT THE NEW PRIVILEGE NAME PARAMETER,CHECKING 2*P2 # THAT IT EXISTS AND IS NOT MORE THAN 8 CHARACTERS LONG. 2B8L # 2BN= PARACHEC 2C7W CALL 5 NEXTPARA 2CMG +JNEWPRIV [NO NEW PRIV PARAM 2D76 # 2DLQ # THIS SECTION PASSES OUT THE OLD PRIVILEGE NAME PARAMETER,CHECKING 2F6B # THAT IT EXISTS AND IS NOT MORE THAN EIGHT CHARACTERS LONG. 2FL2 # 2G5L CALL 5 NEXTPARA 2GK= +JOLDPRIV [NO OLD PRIV PARAM 2H4W # 2HJG # THIS SECTION SETS UP A FILE/FABSNB BLOCK,10 WORDS LONG AND SETS IN IT 2J46 # THE INFORMATION NECESSARY TO OPEN THE DICTIONARY 2JHQ # 2K3B SETNCORE 10,5,FILE,FABSNB [GET 10 WORD FILE/ ABSNB BLOCK 2KH2 ADN 5 A1 2L2L LDN 4 PDICT(1) 2LG= MOVE 4 10 [MOVE IN NECESSARY INFORMATION 2L^W # 2MFG # THIS SECTION OPENS UP THE DICTIONARY AND READS THE FIRST RECORD 2M^6 # 2NDQ OPEN XBREAK,GENERAL,QUERY 2NYB TESTRPN2 OK,X10 [J IF NOT OPEN 2PD2 READ [READ THE FIRST RECORD 2PXL MHUNTW 2,FILE,FRB 2QC= # 2QWW # THIS SECTION LOCATES THE OLD PRIVILEGE NAME IN THE FIRST RECORD 2RBG # 2RW6 LDX 7 IZPRIV(2) [LOAD THE COUNT OF PRIVILEGES 2S*Q HUNT 3,CPB,CUNI [FIND BLOCK HOLDING OLD PRIVILEGE 2STB X7 LDX 4 APARA(3) [LOAD FIRST WORD OF OLD PRIVILEGE 2T*2 LDX 5 ACES [LOAD SPACES IN CASE OLD PRIVILEGE 2TSL [IS LESS THAN FIVE CHARACTERS LONG 2W#= SBN 6 5 2WRW BNG 6 X4 [J IF LESS THAN 5 CHARS 2X?G LDX 5 APARA+1(3) [LOAD 2ND WORD OF OLD PRIVILEGE 2XR6 X4 TXU 4 IZPRIV+2(2) [TEST 1ST WORD OF OLD PRIVILEGE 2Y=Q BCS X5 [AGAINST 1ST WORD OF PRIVILEGE IN 2YQB [FIRST RECORD OF DICTIONARY JUMPING 2^=2 [IF UNEQUAL 2^PL TXU 5 IZPRIV+3(2) [TEST 2ND WORD SIMILARY,JUMPING IF 329= BCC X6 [EQUAL 32NW X5 ADN 2 IZLINE [UPDATE X2 TO POINT TO NEXT ENTRY 338G BCT 7 X4 [J IF MORE ENTRIES LEFT 33N6 CLOSE [CLOSE THE DICTIONARY 347Q CALL 1 ONERR 34MB +JPRIVX1 [ERROR:PRIVILEGE DOES NO 3572 # 35LL # THIS SECTION OVERWRITES OLD PRIVILEGE NAME WITH NEW PRIVILEGE 366= # 36KW X6 LDX 6 2 [SAVE POINTER TO ENTRY 375G FREECORE 3 [FREE BLOCK HOLDING OLD PRIVILEGE 37K6 HUNT 3,CPB,CUNI [LOCATE BLOCK HOLDING NEW PRIVILEGE 384Q LDX 2 6 [RESTORE POINTER TO ENTRY 38JB LDX 6 ANUM(3) 3942 ANDN 6 #7777 [RETAIN PARAMETER LENGTH 39HL LDX 4 APARA(3) [LOAD FIRST WORD OF NEW PRIVILEGE 3=3= LDX 5 ACES [LOAD SPACES IN CASE NEW PRIVILEGE 3=GW [IS LESS THAN 5 CHARACTERS LONG 3?2G SBN 6 5 3?G6 BNG 6 X8 [J IF LESS THAN FIVE CHARS 3?^Q LDX 5 APARA+1(3) [LOAD 2ND WORD OF NEW PRIVILEGE 3#9J ...X8 LDX 6 IZPRIV+2(2) [RETAIN OLD PRIV NAME 3#FB ... LDX 7 IZPRIV+3(2) 3#P8 ... STO 4 IZPRIV+2(2) [OVERWRITE OLD PRIVILEGE NAME WITH 3#^2 STO 5 IZPRIV+3(2) [NEW PRIVILEGE NAME 3*39 ... WKPFIND 6,WKPT(1),3,NOTWKA [IS OLD PRIV WELLKNOWN 3*5D ... DICTWELL PUSER(1),PRIV,3,OFF [YES-RECORD IT AS OFF 3*7M ...NOTWKA 3*9W ... WKPFIND 4,WKPT(1),6,NOTWK [IS NEW PRIV WELLKNOWN 3*#5 ... DICTWELL PUSER(1),PRIV,6,ON [YES-RECORD IT 3*B# ...NOTWK 3*DL # 3*Y= # THIS SECTION REWRITES THE FIRST RECORD AND CLOSES THE DICTIONARY 3BCW # 3BXG MHUNTW 3,FILE,FRB 3CC6 NAME 3,FILE,FWB [RENAME BLOCK FOR WRITING 3CWQ REWRITE [REWRITE RECORD 3DBB CLOSE [CLOSE THE DICTIONARY 3DL8 ... DICTJL [UPDATE JOBLIST 3DW2 ENDCOM [RETURN TO COMMAND PROCESSOR 3F*L X10 3FT= TESTREP CLUDGE,X10A 3G#W GEOERR BRIEFPM,NOTOPEN [DICTIONARY NOT OPEN 3GSG X10A 3H#6 UNIFREE 3HRQ COMERR ERSYSCLUDG,FDIC 3J?B XBREAK 3JR2 GEOERR BRIEFPM,BREAKIN [BREAK IN DETECTED WHILE OPENING 3K=L [DICTIONARY 3KQ= [ 3L9W [ SUBROUTINE TO READ NEXT PARAM - CORRUPTS X6 3LPG [ 3M96 NEXTPARA 3MNQ SBX 5 FX1 3N8B SPARAPAS 3NN2 HUNT 3,CPB,CUNI 3P7L ADX 5 FX1 3PM= LDX 6 ANUM(3) 3Q6W BZE 6 NULL [J IF PARAM NULL 3QLG BNG 6 NULL [OR NONEXISTENT 3R66 ANDN 6 #7777 [ LENGTH OF PARAM 3RKQ SBN 6 9 3S5B BPZ 6 TOOLONG [J IF MORE THAN 8 CHARS 3SK2 ADN 6 9 3T4L EXIT 5 1 3TJ= NULL 3W3W SMO 5 3WHG LDX 5 0 [ADDRESS OF ERROR MESSAGE 3X36 LDX 6 PARMIS(1) 3XGQ COMERRX 6,5 [PARAMETER MISSING 3Y2B TOOLONG 3YG2 CALL 1 ONERR 3Y^L +JPRIVLONG 3^F= [ 3^YW [ SR TO DO COMMAND ERROR 42DG [ 42Y6 ONERR 43CQ LDX 5 0(1) [PICK UP ERROR MESSAGE 43XB COMERRX 5 44C2 PDICT +10 44WL 12HMASTER 45B= 12HDICTIONARY 45TW +1 46*G +1 46T6 4HB1 47#Q PARMIS +JPARMIS 47SB ...PUSER 12HMANAGER 48#2 MENDAREA 50,K99NAMEPRIV 48RL #END ^^^^ ...26036132000400000000