{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: LEXIFIND5)}} ====== LEXIFIND5 ====== (George Source) **Macros used:** [[george:macro:ALTLEN|ALTLEN]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:BXL|BXL]], [[george:macro:CLOSETOP|CLOSETOP]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETAFURB|GETAFURB]], [[george:macro:HUNT|HUNT]], [[george:macro:KEEPREP|KEEPREP]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREE|MFREE]], [[george:macro:MHUNT|MHUNT]], [[george:macro:OPEN|OPEN]], [[george:macro:PHOTO|PHOTO]], [[george:macro:PUTREP|PUTREP]], [[george:macro:PUTREP2|PUTREP2]], [[george:macro:SCURFUB|SCURFUB]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:STEPFBLOCK|STEPFBLOCK]], [[george:macro:TESTMOVE|TESTMOVE]], [[george:macro:TESTNAME|TESTNAME]], [[george:macro:TESTRPN2|TESTRPN2]], [[george:macro:TOPFCA|TOPFCA]], [[george:macro:TOPFCB|TOPFCB]], [[george:macro:TOPFCB2|TOPFCB2]], [[george:macro:TRACE|TRACE]], [[george:macro:UP|UP]] 22FL #OPT K0LEXIFIND=0 22^= #OPT K6LEXIFIND=K6LEXICON 23DW #LIS K0LEXIFIND>K0LEXICON 23YG #SEG LEXIFIND [ JUDY BIDGOOD 24D6 8HLEXIFIND 24XQ SEGENTRY K1LEXIFIND,XFINDNAME 25CB SEGENTRY K2LEXIFIND,XPROPUSER 25X2 SEGENTRY K3LEXIFIND,XPROPTEST 26BL [ 26W= #OPT APAT=0 27*W # 27TG # GIVEN A FILE/FABSNB BLOCK ,LEXIFIND EXPANDS IT TO A FULL FILE/FABSNB 28*6 # STARTING AT MASTER USING THE LEXICON . 28SQ # THE LEXICON IS OPENED AND THE RECORD OF THE NAME CORRESPONDING TO THE 29#B # TOP USER NAME IN THE FABSNB IS FOUND . USING THE POINTER WORD IN THIS 29S2 # RECORD THE SUPERIOR USERS NAME IS FOUND AND THIS NAME IS PLACED IN 2=?L # THE EXPANDED FABSNB . 2=R= # THE PROCESS IS REPEATED UNTIL THE TOP USER NAME IN THE FABSNB IS 2?=W # MASTER . 2?QG # 2#=6 # THIS VERSION IS FOR USE IN CONJUNCTION WITH THE FILESTORE RING SYSTEM 2#PQ MASTER 10,12HMASTER 2*9B 12HLEXICON 2*P2 1,1,4HB1 2B8L ZCOL 4H : 2BN= SETFABSNB 2C7W SBX 7 FX1 2CMG LDN 4 4 2D76 SETUPCOR 4,3,FILE,FABSNB 2DLQ STO 4 HDREC(3) 2F6B ADX 7 FX1 2FL2 EXIT 7 0 2G5L [ 2GK= XPROPUSER [ENTRY FOR PROPUSER MACRO 2H4W [ 2HJG STOZ AWORK4(2) [REMEMBER ENTRY 2J46 CALL 7 SETFABSNB 2JHQ LDN 4 CPREFIX(2) 2K3B BRN XMERGE 2KH2 [ 2L2L XPROPTEST [ENTRY FOR PROPTEST MACRO 2LG= [ 2L^W STO 1 AWORK4(2) [SET +VE TO REMEMBER ENTRY 2MFG CALL 7 SETFABSNB 2M^6 TOPFCB2 2 2NDQ LDN 4 FME1(2) 2NYB XMERGE 2PD2 LDN 5 HDREC+1(3) 2PXL MOVE 4 3 2QC= BRN ZMERGE 2QWW [ 2RBG XFINDNAME [ENTRY FOR FINDNAME MACRO 2RW6 [ 2S*Q NGS 1 AWORK4(2) [SET -VE TO REMEMBER ENTRY 2STB HUNT 3,FILE,FABSNB [X3-> TO FABSNB 2T*2 ZMERGE 2TSL PHOTO 6 2W#= #SKI K6LEXIFIND>599-599 2WRW ( 2X?G TRACE A1+1(3),LEXIFIND 2XR6 TRACE 6,LEXINBL1 2Y=Q ) 2YQB TESTNAME 3,MASTER+1(1),A1+1(3) 2^=2 BZE 7 ZSTART [J IF DOES NOT START WITH MASTER 2^PL KEEPREP 7,OK 329= BRN ZUP 32NW ZSTART 338G # OPEN LEXICON CHECKING WHETHER MASTER OPEN 33N6 SETNCORE 10,2,FILE,FABSNB [GET CORE FOR BLOCK TO OPEN LEXICON 347Q ADN 1 MASTER 34MB ADN 2 A1 3572 MOVE 1 10 [SET UP FABSNB 35LL OPEN ZBRK,READR [OPEN LEXICON FOR READING 366= TESTRPN2 OK,ZBRK 36KW MFREE FILE,FABSNB 375G # FIND THE USER NAME RECORD 37K6 LDN 5 0 384Q TOPFCB2 2 38JB LDX 0 FBLMOD(2) [CHECK THAT LEXICON 3942 SBN 0 FBLKS-A1 [HAS SOME BLOCKS 39HL BNZ 0 ZBAK 3=3= GEOERR 1,EMPTYLEX 3=GW ZBAK 3?2G SCURFUB 2,,ZGET 3?G6 ADN 5 1 [ADD ONE TO BLOCK COUNT 3?^Q ZTW 3#FB TESTMOVE 6,Z2 3#^2 PHOTO 6 3*DL #SKI K6LEXIFIND>599-599 3*Y= TRACE 6,LEXINBL2 3BCW HUNT 3,FILE,FABSNB 3BXG Z2 LDN 1 127 [LOAD COUNT OF RECORDS IN BLOCK 3CC6 ZRTN ADN 2 4 [MOVE TO NEXT RECORD 3CWQ TESTNAME 3,GLUSER(2),A1+1(3) 3DBB BNZ 7 ZFD [J IF USER NAMES EQUAL 3DW2 BCT 1 ZRTN [J IF MORE RECORDS TO READ 3F*L SBN 2 508 [X2-> TO FRB 3FT= STEPFBLOCK ,ZNU [STEP READ PTRS ON A BLOCK 3G#W BRN ZBAK [J TO READ NEW BLOCK 3GSG ZNU 3H#6 KEEPREP 7,NOUSER [USER NOT FOUND BEFORE E.O.F. 3HRQ BRN ZFREE 3J?B ZGET 3JR2 GETAFURB [READ NEXT BLOCK FROM BACKING STORE 3K=L BRN ZBAK 3KQ= ZFD 3L9W SBN 5 1 [SUBTRACT ONE FROM BLOCK COUNT 3LPG # FIND POINTER TO SUPUSER 3M96 ZFN LDX 7 GSUPUSER(2) [LOAD POINTER WORD 3MNQ BZE 7 ZLEN [J IF REACHED MASTER 3N8B LDX 0 7 3NN2 SRL 0 9 [SHIFT TO GET BLOCK POINTER 3P7L ANDN 0 #777 [MASK OUT REST OF WORD 3PM= # FIND BLOCK OF SUPUSER 3Q6W BXE 0 5,ZLEN [J IF SAME BLOCK AS IN CORE 3QLG STO 0 5 [STORE -> TO NEXT BLOCK TO BE READ IN 3R66 BNG 0 ZST [J IF ORIGINAL -> WAS ZERO 3RKQ ADN 0 FBLKS [ADD FBLKS TO GIVE -> 3S5B ZST TOPFCA 2 3SK2 STO 0 FREADBLOCK(2) 3T4L ZSCU 3TJ= SCURFUB 2,,ZNOB [GET PTR TO CURRENT BLOCK 3W3W # LENGTHEN FABSNB 3WHG ZLEN TESTMOVE 6,Z3 3X36 PHOTO 6 3XGQ #SKI K6LEXIFIND>599-599 3Y2B TRACE 6,LEXINBL3 3YG2 HUNT 3,FILE,FABSNB 3Y^L Z3 LDX 6 ALOGLEN(3) 3^F= ADN 6 6 [ADD SIX TO LOGICAL LENGTH 3^YW ALTLEN 3,6 42DG # MOVE SIX WORD USER NAMES DOWN FABSNB 42Y6 PHOTO 6 43CQ #SKI K6LEXIFIND>599-599 43XB TRACE 6,LEXINBL4 44C2 HUNT 3,FILE,FABSNB 44WL Z4 LDN 0 6 45B= ADS 0 A1(3) [ADD 6 TO RECORD HEADER 45TW LDX 1 ALOGLEN(3) [LOAD NEW LOGICAL LENGTH 46*G SBN 1 10 46T6 BZE 1 ZONLY [J IF ONLY ONE USER NAME AT PRESENT 47#Q LDN 2 A1+3(3) [-> TO LAST WORD OF USER NAME 47SB ZNAGA SMO 1 [LOAD IN USER NAME CHARS STARTING 48#2 LDX 0 0(2) [AT BOTTOM 48RL SMO 1 49?= STO 0 6(2) [STORE SIX PLACES FURTHER DOWN 49QW BCT 1 ZNAGA 4==G # MOVE TOP USER NAME DOWN FABSNB 4=Q6 ZONLY LDN 0 A1+1(3) [ADDRESS OF CURRENT USER 4?9Q LDN 1 A1+5(3) [ADDRESS TO MOVE TO 4?PB MOVE 0 3 4#92 LDX 1 FX1 4#NL LDX 0 ZCOL(1) [LOAD COLON 4*8= STO 0 A1+4(3) [STORE IN FIRST WORD OF USER NAME 4*MW LDN 0 0 4B7G STO 0 A1+9(3) [STORE ZERO IN SIXTH WORD 4BM6 BPZ 7 Z5 [J IF NOT PSEUDO-USER 4C6Q LDCT 0 #400 [LOAD PSUEDO-USER BIT 4CLB Z5 STO 0 A1+8(3) 4D62 # MOVE IN NEW THREE WORD USER NAME TO FABSNB 4DKL ZTRY SCURFUB 2,,ZGON 4F5= BZE 7 ZMAST [J IF REACHED MASTER 4FJW ANDN 7 #777 [GET ADDRESS POINTER IN SUPUSER BLOCK 4G4G ADS 7 2 [ADD SUPUSER ADDRESS POINTER 4GJ6 LDN 0 A1+HUSER(2) 4H3Q LDN 1 A1+1(3) 4HHB MOVE 0 3 4J32 BRN ZFN 4JGL ZNOB 4K2= TOPFCB 2 [CHECK THAT NEXT BLOCK 4KFW LDN 0 FBLKS-A1 [WILL NOT CAUSE READING 4K^G ADX 0 5 [BEYOND E.O.F. 4LF6 SBN 0 1 4LYQ BXL 0 FBLMOD(2),ZRED 4MDB GEOERR 1,LEXIBLOK 4MY2 ZRED 4NCL GETAFURB [READ NEXT BLOCK FROM BACKING STORE 4NX= BRN ZSCU 4PBW ZGON 4PWG GETAFURB 4QB6 HUNT 3,FILE,FABSNB 4QTQ BRN ZTRY 4R*B # MOVE IN MASTER 4RT2 ZMAST LDN 0 MASTER+1(1) 4S#L LDN 1 A1+1(3) 4SS= MOVE 0 3 4T?W ZEN KEEPREP 7,OKAY 4TRG ZFREE 4W?6 CLOSETOP [CLOSE LEXICON 4WQQ ZUP 4X=B LDX 2 FX2 4XQ2 LDX 0 AWORK4(2) 4Y9L BPZ 0 SPLIT [J UNLESS FINDNAME 4YP= PUTREP 4^8W PUTREP2 7 4^NG #SKI K6LEXIFIND>599-599 5286 TRACE 7,LEXIEND 52MQ UP 537B SPLIT 53M2 BNZ 7 PUTREP [PASS NON-OK REPLY UP 546L MHUNT 3,FILE,FABSNB 54L= LDN 4 HDREC+4(3) [SEARCH LIMIT 555W LDN 1 HDREC(3) 55KG ADX 1 0(1) 5656 SBN 1 2 [ADDRESS OF WORD 5 OF LAST USERNAME 56JQ PSEUDO 574B LDX 0 0(1) 57J2 BPZ 0 REAL [J UNLESS PSEUDO 583L KEEPREP 7,PSEUDO 58H= SBN 1 6 592W BXGE 1 4,PSEUDO 59GG GEOERR 1,FORMUSER 5=26 REAL 5=FQ SBN 1 3 5=^B ADN 2 ACOMMUNE1 5?F2 MOVE 1 3 5?YL FREECORE 3 5#D= BRN PUTREP 5#XW ZBRK 5*CG GEOERR 1,LEXIFIND [GEOERR BREAK IN ON OPENING LEXICON 5*X6 [ OR REPLY FROM OPEN NOT OK 5BBQ ZGR1 5BWB GEOERR 1,LEXLOST [GEOERR LEXICON RECORD CORRUPTED 5CB2 ZCURRUSER 5CTL GEOERR 1,CURRUSER 5D*= [ 5DSW MENDAREA 20,K99LEXIFIND 5F#G #END ^^^^ ...24506577000200000000