225X ... SEG CHEKPRIV,83,M.B.KINGHAM,,G400 229S ...[ 22*P ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 22FL ...[ 22KH ... 22PD ...#UNS G400 22T* ...# THIS CHAPTER IS MODIFIED FOR G3PLUS-IH MK2 22^= SEGENTRY K1CHEKPRIV,QK1CHEK 23DW SEGENTRY K2CHEKPRIV,QK2CHEK 23YG SEGENTRY K10CHEKPRIV,QK10CHEK 24D6 SEGENTRY K11CHEKPRIV,QK11CHEK 24XQ NDICT 10 25CB 12HMASTER 25X2 12HDICTIONARY 26BL 1,1,4HB1 26CK ...WKPT WKPTABLE [TABLE OF WELL KNOWN PRIVILEGES 26DJ ...[ 26FH ...[ ROUTINE TO CHECK FOR WELL KNOWN PRIVILEGE 26GG ...[ IN JPRIV OF JOB BLOCK 26HF ...[ 26HY ...PCMIN LDX 0 AWORK1(2) 26JC ... BNZ 0 NOWK 26JW ... WKPFIND 5,WKPT(1),4,NOWK [GET WELL KNOWN PRIV BIT 26JY ...#UNS G400 26K2 ...( 26K3 ... SEGENTRY K20CHEKPRIV 26K4 ... NULL 26K5 ... TESTHKN XHK1 26K6 ... EXIT 7 0 26K7 ... SEGENTRY K21CHEKPRIV 26K8 ...XHK1 26K= ...) 26KC ... FCJOB 3,2,PCA,CPA,OLPA [X3 POINTS TO JOB BLOCK 26LB ... ANDX 4 JPRIV(3) 26M* ... BZE 4 NOPR [J IF NOT POSSESSED BY CURRENT USER 26N# ... EXIT 7 0 [PRIV WELL KNOWN AND POSSESSED 26P? ... [BY CURRENT USER 26Q= ...NOPR EXIT 7 1 [PRIV WELL KNOWN BUT NOT POSSESSED 26R9 ... [BY CURRENT USER 26S8 ...NOWK EXIT 7 2 [PRIV NOT WELL KNOWN 26T7 ...[ 26W= QK11CHEK 27*W REWIND [DICTIONARY 27TG NGNC 7 1 28*6 QK1CHEK 28SQ QK10CHEK 29#B LDN 7 0 [X7=%A 29S2 LDX 5 ACOMMUNE1(2) [X5,6 CONTAIN PRIVILEGE NAME 2=?L LDX 6 ACOMMUNE2(2) 2=?T ...#UNSET FTS1 2=#4 ...( 2=#? ... LDCH 0 ATYPE(2) [OMIT MINI 2=#G ... SBN 0 CPAT/64 [CHEKPRIV IF 2=#P ... BNZ 0 NOCPU [CPAT IN NO 2=#Y ... BRUSEN SPCM,2 [USER CONTEXT 2=*7 ...NOCPU 2=*B ...) 2=*T ... STO 7 AWORK1(2) [SAVE ENTRY MARKER 2=D4 ... CALL 7 PCMIN [MINI CHEKPRIV 2=G? ... BRN UP1A [OK 2=JG ... BRN NOTY [NOTYPE 2=LP ... [PRIV NOT WELL KNOWN 2=NY ... LDX 7 AWORK1(2) [RESTORE ENTRY MARKER 2=Q5 ...SPCM 2=R= BNZ 7 ODD [DICT ALREADY OPEN 2?=W SETNCORE 10,2,FILE,FABSNB 2?QG ADN 1 NDICT 2#=6 ADN 2 A1 2#PQ MOVE 1 10 2*9B OPEN XBR,READ 2*P2 #SKI K6CHEKPRIV 2B8L TESTRPN2 OK,XBR 2BN= MFREE FILE,FABSNB 2C7W ODD 2CMG STEP 2D76 LDX 0 IZPRIV-A1(3) [NO OF PRIVS 2DLQ TP 2F6B TXU 5 IZLIST+1-A1(3) 2FL2 TXU 6 IZLIST+2-A1(3) 2G5L BCC PFND [PRIV FOUND 2GK= ADN 3 IZLINE 2H4W BCT 0 TP 2HJG SETREP2 NOSUCH [PRIV NOT ON THIS INSTALLATION 2J46 UP 2JHQ #SKI K6CHEKPRIV>99-99 2K3B TRACE EXEC3(2),XREP 2KH2 PICKREP 4 2L2L CLOSETOP 2LG= PUTREP2 4 2L^W UP 2MFG PFND 2MLN ...#UNS G400 2MM^ ...( 2MP= ... SEGENTRY K22CHEKPRIV 2MQH ... NULL 2MRT ... TESTHOOK UP1B 2MT8 ... SEGENTRY K23CHEKPRIV 2MWG ...PFND2 2MXS ...) 2M^6 LDX 6 IZLIST-A1(3) [X6 CONTAINS PRIV BIT NO. 2NDQ BNZ 7 TPR 2NYB SETNCORE 3,3,FILE,ADICT 2N^M ...#UNSET FTS1 2P2Y ...( 2P49 ... LDCH 0 ATYPE(2) 2P5G ... SBN 0 CPAT/64 2P6R ... BNZ 0 NOCPAT 2P84 ... BRUSEN USERC,2 2P9* ... BRN NOCPAT 2P=L ...USERC LDN 2 CPREFIX(2) [GET USERNAME FROM CPREFIX IF 2P?X ... BRN SADICT [CPAT IS IN NOUSER CONTEXT 2P*8 ...NOCPAT 2PBF ...) 2PM3 ... FCJOB 2,2,PCA,CPA,OLPA 2PXL #SKI K6CHEKPRIV>99-99 2QC= ( 2QWW LDX 0 ALOGLEN(2) 2RBG SBN 0 EXTJOB 2RW6 BPZ 0 X1 2S*Q GEOERR 1,CONTEXT 2STB X1 2T*2 ) 2TSL ADN 2 JUSER 2W4D ...SADICT 2W#= ADN 3 A1 2WRW MOVE 2 3 2X?G READDICT 2XR6 TESTRPN2 OK,UP 2Y=Q TPR 2YQB MHUNTW 1,FILE,ADICTENT 2^=2 LDCT 0 #600 2^PL ANDX 0 CPSEU(1) 329= BNZ 0 NOT [PSEUDO-USER DOES NOT HAVE PRIV 32NW TESTPRIV 6,1 338G BNZ 0 UP1 33N6 NOT 347Q FREECORE 1 [FILE,ADICTENT 34MB ... SETREP2 NOTYPE [USER DOES NOT HAVE PRIV 3572 BRN UP 35#8 ...NOTY SETREP2 NOTYPE [NOTYPE AFTER MINI CHEKPRIV 35*X ... LDX 0 AWORK1(2) 35CL ... BNZ 0 UP 35FB ... UP 35GC ...UP1B 35HD ... BNZ 7 UP1A 35JF ... CLOSETOP 35KG ... BRN UP1A 35LL UP1 366= BNZ 7 UP1A 36KW FREECORE 1 375G CLOSETOP 37K6 UP1A 384Q UPPLUS 1 [REPLY OK 38JB TABLE 3942 8HBUDGEXT 39HL +USL1 3=3= +0 3=GW 8HHLSEXT 3?2G +USL1 3?G6 +1 3?^Q 8HSJMESS 3#FB +USL1 3#^2 +1 3*DL 8HSYSISS 3*Y= +USL2 3BCW +0 3BXG 8HUNHLS 3CC6 +USL2 3CWQ +0 3DBB 8HNOTOWNER 3DW2 +USL1 3F*L +1 3FT= +0 3G#W USL1 3GSG #40000000 3H#6 12HMANAGER 3HRQ 12HSYSTEM 3J?B 12HJOURNAL 3JR2 +0 3K=L USL2 3KQ= #40000000 3L9W +0 3LPG QK2CHEK 3M96 LDN 3 ACOMMUNE1(2) 3MNQ LDN 4 AWORK1(2) 3N8B MOVE 3 4 3NN2 LDX 5 ACOMMUNE5(2) 3P7L LDX 6 ACOMMUNE6(2) 3P=Q ... CALL 7 PCMIN [MINI CHEKPRIV 3P*W ... BRN TAB5 [OK 3PF2 ... BRN RDICT8 [NOPRIV 3PJ6 ... [PRIV NOT WELL KNOWN 3PM= # CHECK THE TABLE 3Q6W LDN 3 TABLE(1) 3QLG TAB1 3R66 LDX 0 0(3) 3RKQ BZE 0 RDICT [J IF END OF TABLE OF PRIVILEGES 3S5B TXU 5 0(3) 3SK2 TXU 6 1(3) 3T4L BCC TAB2 [J IF PRIV IN TABLE 3TJ= ADN 3 4 3W3W BRN TAB1 3WHG TAB2 3X36 LDX 7 3(3) 3XGQ LDX 3 2(3) [POINTER TO TABLE OF USERS 3Y2B ADX 3 FX1 3YG2 LDX 0 AWORK1(2) 3Y^L BNZ 0 TAB4 [BRANCH IF USER NAME 3^F= FCJOB 1,2,PCA,CPA,OLPA 3^YW LDX 4 JPRIV(1) 42DG LDN 0 JUSER(1) 42Y6 LDN 1 AWORK1(2) 43CQ MOVE 0 3 [PROPER USER NAME 43XB LDX 0 0(3) 44C2 BPZ 0 TAB4 [J IF PRIV NOT GIVEN TO SYSISS JOBS 44WL ANDN 4 JSISSUE 45B= BNZ 4 TAB5 [J IF SYSISS JOB 45TW TAB4 46*G LDX 0 1(3) 46T6 LDX 1 2(3) 47#Q LDX 4 3(3) 47SB BZE 0 TAB6 48#2 TXU 0 AWORK1(2) 48RL TXU 1 AWORK2(2) 49?= TXU 4 AWORK3(2) 49QW BCC TAB5 4==G ADN 3 3 4=Q6 BRN TAB4 4?9Q TAB5 4?PB UPPLUS 1 4#92 TAB6 4#NL BNZ 7 RDICT 4*8= SETREP NOPRIV 4*MW UP 4B7G # CHECK THE DICTIONARY 4BM6 RDICT 4C6Q LDX 0 AWORK4(2) 4D62 SLL 0 1 4DKL BPZ 0 RDICT1 [J IF DICTIONARY OPEN 4F5= SETNCORE 10,2,FILE,FABSNB 4FJW ADN 1 NDICT 4G4G ADN 2 A1 4GJ6 MOVE 1 10 4H3Q OPEN XBR,READ 4HHB TESTREPN OK,XBR 4J32 MFREE FILE,FABSNB 4JGL RDICT1 4K2= REWIND 4KFW STEP 4K^G LDX 0 IZPRIV-A1(3) [NO OF PRIVILEGES 4LF6 RDICT2 4LYQ TXU 5 IZLIST+1-A1(3) 4MDB TXU 6 IZLIST+2-A1(3) 4MY2 BCC RDICT3 [J IF PRIV IN LIST 4NCL ADN 3 IZLINE 4NX= BCT 0 RDICT2 4PBW BRN RDICT5 4PWG RDICT3 4QB6 LDX 6 IZLIST-A1(3) [LOAD PRIVILEGE BIT PATTERN 4QTQ SETNCORE 3,3,FILE,ADICT 4R*B LDN 2 AWORK1(2) 4RT2 LDN 3 A1(3) 4S#L MOVE 2 3 4SS= READDICT 4T?W MHUNT 3,FILE,ADICTENT 4TRG LDCT 0 #600 4W?6 ANDX 0 CPSEU(3) 4WQQ BNZ 0 RDICT7 [BRANCH IF PSEUDO USER 4X=B TESTPRIV 6,3 4XQ2 BZE 0 RDICT7 [J IF USER DOES NOT HAVE PRIV 4Y9L MFREE FILE,ADICTENT 4YP= SMO FX2 4^8W LDX 0 AWORK4 4^NG SLL 0 1 5286 BPZ 0 RDICT4 52MQ CLOSETOP 537B RDICT4 53M2 UPPLUS 1 546L # NO SUCH PRIVILEGE 54L= RDICT5 555W SMO FX2 55KG LDX 0 AWORK4 5656 SLL 0 1 56JQ BPZ 0 RDICT6 574B CLOSETOP 57J2 RDICT6 583L SETREP NOSUCH 58H= UP 592W # USER/JOB DOES NOT HAVE PRIVILEGE 59GG RDICT7 5=26 MFREE FILE,ADICTENT 5=FQ LDX 0 AWORK4(2) 5=^B SLL 0 1 5?F2 BPZ 0 RDICT8 5?YL CLOSETOP 5#D= RDICT8 5#XW SETREP NOPRIV 5*CG UP 5*X6 XBR GEOERR 1,CHEKPRIV 5BBQ MENDAREA 50,K99CHEKPRIV 5BWB #END ^^^^ ...71242151000500000000