{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: BMPRCHEK860)}}
====== BMPRCHEK860 ======
(George Source)
**Macros used:** [[george:macro:BITDEFS|BITDEFS]], [[george:macro:BXU|BXU]], [[george:macro:EMSCONWT|EMSCONWT]], [[george:macro:GRELOAD|GRELOAD]], [[george:macro:HUNTMISB|HUNTMISB]], [[george:macro:JBC|JBC]], [[george:macro:JBS|JBS]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MONOUT|MONOUT]], [[george:macro:MONOUTX|MONOUTX]], [[george:macro:OUTPACK|OUTPACK]], [[george:macro:OUTPACKX|OUTPACKX]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SWAPPR|SWAPPR]], [[george:macro:TESTNAMX|TESTNAMX]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]]
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