22FL SEG BMPRCHEK,860,EDWARD MOON,BMAP 22^= [ 23DW 23YG ...[*********************************************************** 24D6 [ THIS SEGMENT CHECKS A TABLE OF USERS 24XQ [ WHOSE PARTIAL RESTORE IS FORBIDDEN(NOPARTRES USED) 25CB [ OR WHICH MUST BE SWAPPED TO AN ALTERNATIVE USER 25X2 [ (SWAPPR USED) 26BL [ 26W= SEGENTRY K1BMPRCHEK,START 27*W [ 27TG [ 28*6 [ TABLE OF USERS FORBIDDEN OR TO BE SWAPPED 28SQ [ ENTRIES EITHER 4 WORDS OR 7 WORDS AS 29#B [ DEFINED BELOW :- 29S2 [ WORD 0 - BIT 0=0 RESTORE FORBIDDEN 2=?L [ =1 RESTORE OF PSEUDO USERSALSO FORBIDDEN 2=R= [ BIT 1=0 NO SWAPPING ALLOWED 2?=W [ =1 SWAP TO SPECIFIED USER(WORDS 4-6) IF BIT 0= 2?QG [ ELSE SWAP TO PROPER OWNER(WORDS 1-3) IF BI 2#=6 [ BITS 2-23 RECORD HEADER (4 OR 7) 2#PQ [ WORDS 1-3 FORBIDDEN USER 2*9B [ WORDS 4-6 ALTERNATIVE USER FOR SWAPPING 2*P2 [ 2B8L #DEF TYPEOFENT=0 [ STATEWORD AND RECORD HEADER 2BN= #DEF USERFORBID=1 [ FORBIDDEN USER 2C7W #DEF USERSWAP=USERFORBID+3 [ USER FOR SWAPPING 2CMG BITDEFS TYPEOFENT,0,SUDOFORBID,SWAPALLOWED 2CX# ...[ 2D76 SEGENTRY AFORBIDN 2DBY ...[ 2DLQ #ALT AFORBPTR=AFORBIDN 2F6B VFORBIDN 2FL2 #GAP 700 2G5L SEGENTRY AFORBIDEND 2GK= +0 2H4W [ 2HJG PRNOTAL +BMNOPARTRES 2J46 SWAPPR +BMPARTRES 2JHQ ...STRING 24HINITIATED INSTEAD OF 2K3B [ 2KH2 OUTPACK 2L2L SBX 4 FX1 2LG= OUTPACKX 3,5,6 2L^W ADX 4 FX1 2MFG EXIT 4 0 2M^6 [ 2NDQ MONOUT 2NYB SBX 4 FX1 2PD2 MONOUTX 3 2PXL ADX 4 FX1 2QC= EXIT 4 0 2QWW [ 2RBG [ 2RW6 ...[******************************************************* SWAPUSER 2S*Q ...[ SUBROUTINE TO SWAP THE USERNAMES OF A USER 2STB ...[ BEING RESTORED FOR THE NOMINATED ALTERNATIVE 2T*2 [ 2TSL SWAPUSER 2W#= SBX 7 FX1 2WRW NGS 2 AWORK1(2) [ SET SWITCH -VE TO SHOW SWAP DONE 2X?G SBX 1 FX1 2XR6 STO 1 AWORK2(2) [ SAVE PTR. TO TABLE ENTRY 2Y=Q HUNTMISB 1,FI,FRESTUSER 2YQB SBX 3 1 2^=2 STO 3 AWORK3(2) [ AND PTR. TO FRESTUSER ENTRY 2^PL LDX 1 FX1 329= SMO AWORK2(2) 32NW LDN 3 USERSWAP(1) [ PTR. TO SWAPPED USER 338G LDN 5 3 33N6 LDN 6 JPDUSERNAME 347Q CALL 4 OUTPACK 34MB ... LDN 3 STRING(1) [ 'INSTEAD OF ' STRING 35LL LDN 5 6 366= LDN 6 JPDVARCHAR 36KW CALL 4 OUTPACK 36MS ... SETNCORE 4,3,FI,FUTILITY 36PQ ... LDX 0 ACES [INIT LAST 3 SPACES 36RN ... STO 0 A1+3(3) 36TL ... ADN 3 A1 36XJ ... LDCT 0 #120 [COLON 36^G ... STO 0 0(3) [1ST CHAR OF 16 373D ... BCHX 3 £ 375G HUNTMISB 1,FI,FRESTUSER 37K6 SMO AWORK3(2) 37S4 ... LDN 2 FRUSE(1) [ FORBIDDEN USER 3832 ... MVCH 2 12 389Y ... SBN 3 3 [UNDO MVCH EFFECTS 38DW ... ANDX 3 BITS22LS 38MS ... LDN 5 4 38WQ ... CALL 4 OUTPACK 395N ... MFREEW FI,FUTILITY 39#L ... LDX 3 SWAPPR(1) 39HL CALL 4 MONOUT [ SEND SWAPPED MESSAGE 3=3= ... ADX 1 AWORK2(2) 3?2G HUNTMISB 3,FI,FRESTUSER 3?G6 ... ADX 3 AWORK3(2) 3#FB LDN 5 USERSWAP(1) 3#^2 LDN 6 FRUSE(3) 3*DL MOVE 5 3 [ SWAP USERNAMES 3*Y= ... NGN 0 1 3BCW STO 0 FRINC(3) 3BXG STOZ FRFIL(3) [ SET INCR. NO. -VE AND FILE NO. 3CC6 STOZ FRSUP(3) [ =0.SET SUP. USER 0 3CWQ ADX 7 FX1 3DBB EXIT 7 0 3DW2 [ 3F*L [ 3FT= ...[********************************************************* START 3G#W [ START OF MAIN SEGMENT TO CHECK USERNAMES 3GSG [ 3H#6 START 3HRQ STOZ AWORK1(2) [ SWITCH TO SEE IF ANY SWAPS DONE 3J?B HUNTMISB 3,FI,FRESTUSER 3JR2 ... LDX 7 A1(3) [ PTR. TO END OF FRESTUSER 3KQ= STO 7 AWORK4(2) [ SAVED FOR LATER CHECKS 3L9W NXTFRUSE 3LFN ... LDX 1 FX1 3LPG LDN 1 VFORBIDN(1) [ PTR. TO START OF TABLE 3M96 NXTABENT 3MNQ LDX 0 TYPEOFENT(1) 3N8B BZE 0 XENDOFTAB [ J. IF END OF TAB 3NN2 LDX 0 FRINC(3) 3P7L BZE 0 NXTPRUSER [ IGNORE ANY DELETED ENTRIES 3PM= SEGENTRY K50BMPRCHEK 3Q6W NULL 3QLG TESTNAMX 3,FRUSE(3),USERFORBID(1),NOTFORBIDN,4 [ J. IF NAMES NOT 3R66 JBC XFORBIDN,1,SWAPALLOWED [ J. IF NO SWAPPING ALLOWED 3R*Y ... JBS NOTFORBIDN,1,SUDOFORBID [ NO SWAP IF ONLY PSEUDOS FORBIDDEN 3RKQ CALL 7 SWAPUSER [ ELSE SWAP USER 3S5B BRN NXTPRUSER [ J. TO CHECK NEXT FRESTUSER ENTRY 3SK2 NOTFORBIDN 3T4L LDEX 0 TYPEOFENT(1) 3TJ= ADS 0 1 [ UPDATE PTR. TO NEXT TABLE ENTRY 3W3W BRN NXTABENT 3WHG XENDOFTAB 3X36 TESTNAMX 3,FRUSE(3),FRSUP(3),PSEUDO,4 [ J. IF THIS USER PSEUDO 3XGQ BRN NXTPRUSER 3Y2B PSEUDO 3Y=8 ... LDX 1 FX1 3YG2 LDN 1 VFORBIDN(1) [ PTR. TO START OF TABLE AGAIN 3Y^L NEXTABUSE 3^F= LDX 0 TYPEOFENT(1) 3^YW ... BZE 0 NXTPRUSER [J. IF END OF TABLE 42DG TESTNAMX 3,FRSUP(3),USERFORBID(1),NOFORBID,4 [ J. IF NAMES NOT SA 42Y6 JBC NXTPRUSER,1,SUDOFORBID [ J. IF PSEUDOS NOT FORBIDDEN 43CQ JBC XFORBIDN,1,SWAPALLOWED [ J. IF SWAPPING NOT PERMITTED 43XB ... SBN 1 USERSWAP-USERFORBID [ ADJUST PTR. SO THAT PROPER USER WI 44C2 CALL 7 SWAPUSER [ BE SWAPPED FOR PSEUDO AND DO SWAP 44FK ... BRN NXTPRUSER [ TO CHECK NEXT FRESTUSER ENTRY 44J8 ...NOFORBID 44LR ... LDEX 0 TYPEOFENT(1) 44PB ... ADS 0 1 [ UPDATE PTR. TO TABLE ENTRIES 44R^ ... BRN NEXTABUSE 44WL NXTPRUSER 45B= ADN 3 8 [ PTR. TO NEXT FRESTUSER ENTRY 45L4 ... HUNTMISB 1,FI,FRESTUSER 45TW ... LDX 0 3 465N ... SBX 0 1 46*G BXU 0 AWORK4(2),NXTFRUSE [ J. IF NOT END OF FRESTUSER 46T6 LDX 0 AWORK1(2) 47#Q BZE 0 UP [ UP IF NO SWAPS DONE 47SB UPPLUS 1 [ ELSE UP+1 48#2 UP UP 48RL [ 49?= ...[*********************************************************** XFORBIDN 49QW [ THE RESTORE IS FORBIDDEN AND NO ALTERNATIVE IS ALLOWED 4==G [ THEREFORE INFORM OPERATORS AND RELOAD 4=Q6 [ 4?9Q SEGENTRY K51BMPRCHEK 4?PB XFORBIDN 4#92 LDN 3 FRUSE(3) [ FORBIDDEN USERNAME 4#NL LDN 5 3 4*8= LDN 6 JPDUSERNAME 4*MW CALL 4 OUTPACK 4B7G LDX 3 PRNOTAL(1) [ OUTPUT 'FORBIDDEN' MESSAGE 4BM6 CALL 4 MONOUT 4C6Q EMSCONWT 4CLB GRELOAD [ AND RELOAD 4D62 #END ^^^^ ...611573620001