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