16 22FL #LIS K0BUDGET>K0PRIVLEG>K0BUDGES>K0COMMAND>K0ALLGEO 15 22_= ...#SEG PRIVLEG83 [M.B.KINGHAM 7 23DW ... 8HPRIVLEG8 12 23YG SEGENTRY K1PRIVLEG,QK1PRIVLEG 12 24D6 SEGENTRY K2PRIVLEG,QK2PRIVLEG 4 24XQ # 17 25CB # 1 THIS CHAPTER IS ENTERED ONLY BY THE BUDGET CHAPTER 20 25X2 # 1 WHEN THE SPECIFIED BUDGET IN THE BUDGET COMMAND IS A PRIVELEGE 4 26BL # 21 26W= # IF THE NAMED USER IS NOT THE IMMEDIATE INFERIOR OF THE PROPER USER 19 27*W # A CHECK IS MADE THAT HE IS AN INFERIOR OF THE PROPER USER 13 27TG # AND THE NECESSARY CHANGES ARE MADE 19 28*6 # IF THE PRIVILEGE IS BEING RESCINDED,THE ROUTINE SEARCHES 18 28SQ # THE DICTIONARY AND RESCINDS IT IN ALL THE ENTRIES FOR 12 29#B # INFERIORS OF THE NAMED USER. 8 29S2 #SKI K6BUDGET>20-20 9 2=?L XUP 8H*UPDATE 8 2=R= XERB4 +ERB4 21 2?=W XERB25 +ERB25 [YOU MAY CHANGE PRIVILEGES OF ONLY YOUR 16 2?QG [IMMEDIATE INFERIORS 9 2#=6 MASTER 12HMASTER 20 2#FY ...WKPT WKPTABLE [TABLE OF WELL KNOWN PRIVILEGES 13 2#PQ # DEFINITIONS FOR THE ADATA,CSTORE BLOCK 17 2*9B #DEF UNAMED=A1 [USERNAME OF NAMED USER 19 2*P2 #DEF UCURRENT=UNAMED+3 [USERNAME OF CURRENT PROPER USER 18 2B8L #DEF UTYPE=UCURRENT+3 [BIT PATTERN OF BUDGET TYPE 15 2BN= #DEF UCHANGE=UTYPE+1 [CHANGE AMOUNT 20 2C7W # IF THE CURRENT PROPER USER IS NOT THE IMMEDIATE SUPERIOR OF THE 21 2CMG # NAMED USER, MUST SEARCH THE DICTIONARY (IN ORDER TO MAKE SURE THAT 12 2D76 # HE IS A SUPERIOR OF THE N. U. ). 4 2D8# ...[ 20 2D9G ...[ ROUTINE TO SET UP PARAMETER %C OF THE DICTWELL MACRO 11 2D?W ...WPF MHUNTW 3,JBUDGET,JLINE 21 2DB= ... WKPFIND JCHARS(3),WKPT(1),7,NWK [BIT SET IN X7 IF PRIV WELL KN 7 2DFS ... EXIT 4 1 7 2DJ? ...NWK EXIT 4 0 6 2DLQ QK1PRIVLEG 11 2F6B P1 SETNCORE 3,3,FILE,ADICT 8 2FL2 STO 4 A1(3) 9 2G5L STO 5 A1+1(3) 21 2GK= STO 6 A1+2(3) [READ THIS USER'S SUPERIOR'S DICTIONARY 21 2H4W READDICT [ENTRY.(READDICT FREES THE FILE,ADICT) 11 2HJG HUNT 3,FILE,ADICTENT 10 2J46 LDX 4 CSUPUSER(3) 10 2JHQ LDX 5 CSUPUSER+1(3) 10 2K3B LDX 6 CSUPUSER+2(3) 9 2KH2 #SKI K6BUDGET>9999-9999 9 2L2L TRACE 4,PRIVP2 7 2LG= FREECORE 3 10 2L_W HUNT 2,FILE,ADICT 20 2MFG TXU 4 A1(2) [IS THIS USER'S SUPERIOR THE CURRENT 14 2M_6 TXU 5 A1+1(2) [PROPER USER? 9 2NDQ TXU 6 A1+2(2) 8 2NYB BCC P2 17 2PD2 TXU 4 MASTER(1) [IF NOT, IS HE ^MASTER^ ? 10 2PXL TXU 5 MASTER+1(1) 10 2QC= TXU 6 MASTER+2(1) 8 2QWW BCS P1 19 2RBG # IF SO,THE SEARCH IS OVER,AND THE 20 2RW6 LDX 6 XERB25(1) [CURRENT USER MAY NOT INTERFERE WITH 19 2S*Q BRN WRONG [THE PRIVILEGES OF THE NAMED USER 6 2STB QK2PRIVLEG 20 2T*2 P2 READDICT [READ CURRENT USER'S DICTIONARY ENTRY 11 2TSL HUNT 2,ADATA,CSTORE 9 2W#= LDX 5 UTYPE(2) 10 2WRW LDX 4 UCHANGE(2) 11 2X?G HUNT 3,FILE,ADICTENT 9 2XR6 LDX 6 XERB4(1) 18 2Y=Q TESTPRIV 5,3 [ERROR IF CURRENT PROPER USER 18 2YQB BZE 0 WRONG [DOES NOT HOLD THIS PRIVILEGE 7 2_=2 FREECORE 3 17 2_PL HUNT 3,FILE,ADICTENT [IF CHANGE IS POSITIVE, 8 2__D ... LDX 2 FX2 8 329= BZE 4 P20 20 32NW ONPRIV 5,3 [TURN ON APPROPRIATE PRIVILEGE BIT 9 32WH ...#SKI K6BUDGET>9999-9999 11 3348 ... TRACE CPRIV(3),ONPRIV 9 339T ... STO 5 AWORK1(2) 18 33CG ... CALL 4 WPF [SET UP %C OF DICTWELL 20 33K7 ... BRN NK1 [J IF PRIVILEGE NOT WELL KNOWN 11 33QS ... MHUNTW 3,FILE,ADICTENT 17 33YF ... DICTWELL CUSER(3),PRIV,7,ON [UPDATE JOBLIST ETC 4 3466 ...NK1 11 34?R ... MHUNTW 3,FILE,ADICTENT 10 34FD ... NAME 3,FILE,FWB 7 34MB READDICT 20 3572 REWRITE [AND WRITE ENTRY BACK TO DICTIONARY 8 35LL BRN P3 16 366= P20 OFFPRIV 5,3 [RESCIND PRIVILEGE 9 3688 ... STO 5 AWORK1(2) 18 36=6 ... CALL 4 WPF [SET UP %C OF DICTWELL 20 36#4 ... BRN NK2 [J IF PRIVILEGE NOT WELL KNOWN 11 36B2 ... MHUNTW 3,FILE,ADICTENT 17 36CY ... DICTWELL CUSER(3),PRIV,7,OFF [UPDATE JOBLIST ETC 4 36FW ...NK2 11 36HS ... MHUNTW 3,FILE,ADICTENT 10 36KW NAME 3,FILE,FWB 7 375G READDICT 7 37K6 REWRITE 10 384Q VFREE FILE,ADICTENT 20 38JB # THIS ROUTINE RESCINDS THE SPECIFIED PRIVILEGE OF ALL THE INFERIORS 8 3942 # OF THE NAMED USER 17 39HL SR4 SETNCORE 3,3,ADATA,CMARK [SET UP BOOKMARK BLOCK 11 3=3= HUNT 2,ADATA,CSTORE 9 3=GW LDX 4 UTYPE(2) 19 3?2G ADN 2 UNAMED [WITH ORIGINAL NAMED USER AS X 8 3?G6 ADN 3 A1 7 3?_Q MOVE 2 3 11 3#FB #SKIP K6BUDGET>99-99 10 3#_2 TRACE 4,BUDGET15 16 3*DL R400 REWIND [REWIND DICTIONARY 16 3*Y= SKIP 0,1 [SKIP FIRST RECORD 16 3BCW R401 HUNT 3,ADATA,CMARK [FIND X (USER NAME) 8 3BXG LDX 5 A1(3) 9 3CC6 LDX 6 A1+1(3) 9 3CWQ LDX 7 A1+2(3) 18 3DBB R402 STEP [SET POINTER TO NEXT RECORD 19 3DW2 BZE 3 SR5 [GO TO SR5 IF END FO DICTIONARY 8 3F*L SBN 3 A1 17 3FT= LDX 0 CPSEU(3) [IGNORE PSEUDO USERS 8 3G#W BNG 0 R402 9 3GSG LDX 0 XUP(1) 19 3H#6 BXE 0 CUSER(3),R402 [IGNORE DUMMY UPDATE RECORDS 10 3HRQ TXU 5 CSUPUSER(3) 18 3J?B TXU 6 CSUPUSER+1(3) [IS X THIS USER'S SUPERIOR 10 3JR2 TXU 7 CSUPUSER+2(3) 8 3K=L BCS R402 8 3KQ= TESTPRIV 4,3 9 3L9W LDX 5 CUSER(3) 14 3LPG LDX 6 CUSER+1(3) [IF SO, AND 10 3M96 LDX 7 CUSER+2(3) 21 3MNQ BZE 0 R403 [IF THIS USER HOLDS THE STATED PRIVILEGE, 7 3N8B READAGAIN 10 3NN2 HUNT 2,FILE,FRB 10 3P7L NAME 2,FILE,FWB 14 3PM= OFFPRIV 4,2 [RESCIND IT 8 3PNM ... LDX 2 FX2 9 3PQ4 ... STO 4 AWORK1(2) 9 3PRF ... STO 7 AWORK2(2) 18 3PSW ... CALL 4 WPF [SET UP %C OF DICTWELL 20 3PTS ... BRN NK4 [J IF PRIVILEGE NOT WELL KNOWN 18 3PWQ ... LDX 4 AWORK1(2) [REINSTATE PRIVILEGE TYPE 9 3PXN ... STO 7 AWORK1(2) 17 3Q2G ... DICTWELL 5,PRIV,AWORK1(2),OFF [UPDATE JOBLIST ETC 4 3Q3X ...NK3 9 3Q5# ... LDX 7 AWORK2(2) 7 3Q6W REWRITE 9 3QLG VFREE FILE,FWB 11 3R66 R403 SETNCORE 3,3,ADATA,CMARK 8 3RKQ STO 5 A1(3) 9 3S5B STO 6 A1+1(3) 9 3SK2 STO 7 A1+2(3) 10 3T4L #SKI K6BUDGET>99999-99999 10 3TJ= TRACE 5,PRIVR403 8 3W3W BRN R400 18 3W7R ...NK4 LDX 4 AWORK1(2) [REINSTATE PRIVILEGE TYPE 12 3W?N ... BRN NK3 [ 4 3WCK ...# 19 3WHG # SR5 IS ENTERED WHEN THE END OF THE DICTIONARY HAS BEEN REACHED 20 3X36 SR5 HUNT 3,ADATA,CMARK [PREPARE TO POSITION DICTIONARY AT 14 3XGQ NAME 3,FILE,ADICT [OLD 'X' USER 16 3Y2B HUNT 3,ADATA,CMARK [FIND NEXT NAME BLOCK 11 3YG2 HUNT 2,ADATA,CSTORE 8 3Y_L BNG 3 R503 8 3_F= LDX 5 A1(3) 11 3_YW #SKIP K6BUDGET>99-99 10 42DG TRACE 5,BUDGESR5 9 42Y6 LDX 6 A1+1(3) 9 43CQ LDX 7 A1+2(3) 19 43XB R501 READDICT [ASSUME FILE,ADICT BLOCK IS FREED 9 44C2 TESTREP2 OK,R502 10 44WL GEOERR 1,BUDGETNO 10 45B= R502 VFREE FILE,ADICTENT 8 45TW BRN R401 20 46*G R503 HUNT 3,FILE,ADICT [THIS SECTION IS ENTERED ONLY IF THE 18 46T6 LDX 5 A1(3) [NAMED USER TAS NO INFERIORS 9 47#Q LDX 6 A1+1(3) 9 47SB LDX 7 A1+2(3) 9 48#2 TXU 5 UNAMED(2) 10 48RL TXU 6 UNAMED+1(2) 10 49?= TXU 7 UNAMED+2(2) 8 49QW BCC R504 16 4==G GEOERR 1,BUDNOIOF [DICTIONARY FAILURE 10 4=Q6 R504 VFREE FILE,ADICT 15 4?9Q P3 CLOSE [CLOSE DICTIONARY 6 4?BY ...#UNSET FTS1 17 4?J6 ... DICTJL [UPDATE JOBLIST FILES 14 4?PB MONOUT ERBOK3 [MESSAGE OK 6 4#92 ENDCOM 9 4#NL WRONG ACROSS BUDGET,2 10 4*8= MENDAREA 50,K99PRIVLEG 4 4*MW #END 8 ____ ...60415744000200000000