{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: INDEX85)}} ====== INDEX85 ====== (George Source) **Macros used:** [[george:macro:ALTLEN|ALTLEN]], [[george:macro:BFCBX|BFCBX]], [[george:macro:BS|BS]], [[george:macro:BXE|BXE]], [[george:macro:BXL|BXL]], [[george:macro:BXU|BXU]], [[george:macro:FINDEXB|FINDEXB]], [[george:macro:GEOERR|GEOERR]], [[george:macro:JBC|JBC]], [[george:macro:KEYREC|KEYREC]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MONOUT|MONOUT]], [[george:macro:NAME|NAME]], [[george:macro:OUTPARAM|OUTPARAM]], [[george:macro:PSTAC|PSTAC]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SETREP|SETREP]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:SFCAB|SFCAB]], [[george:macro:SFSTACK|SFSTACK]], [[george:macro:SHORTEN|SHORTEN]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TRACE|TRACE]], [[george:macro:UNNORM|UNNORM]], [[george:macro:UP|UP]], [[george:macro:VFREE|VFREE]] 22FL #SEG INDEX7 [J. D. BIDGOOD 22^= #OPT K0INDEX=K0FILESTORE>K0ACCESS>K0ALLGEO 23DW #LIS K0INDEX 23YG #OPT K6INDEX=K6FILESTORE>K6ACCESS>K6ALLGEO 24D6 8HINDEX 24XQ SEGENTRY K2INDEX,TWOINS 25CB SEGENTRY K3INDEX,THRINS 25X2 SEGENTRY K4INDEX,SFRINS 26BL SEGENTRY K5INDEX,XCALCKEY 26W= SEGENTRY K7INDEX,XDELKEY 2764 ... SEGENTRY K8INDEX,XFNEARLY 27*W # 27TG # THIS SEGMENT RECALCULATES THE BLOCK KEYS FOR BLOCKS ALTERED BY DELETE 28*6 # AND INSERT AND UPDATES THE INDEX RECORD IN THE FI/FINDEXF BLOCK.THERE 28SQ # ARE 5 ENTRY PTS, AS FOLLOWS:- 29#B # 29S2 # K2INDEX - FROM INSERTWO TO CALCULATE KEYS FOR 2 USAGE BLOCKS IN FI 2=?L # CHAIN, ONE OF WHICH MAY BE A NEW BLOCK. 2=R= # K3INDEX - FROM INSERTHR TO CALCULATE KEYS FOR 3 USAGE BLOCKS IN FI 2?=W # CHAIN. THE MIDDLE BLOCK IS A NEW ONE. 2?QG # K4INDEX - FROM INSERTFR TO CALCULATE KEYS FOR 3 USAGE BLOCKS IN FI 2#=6 # CHAIN. THE LAST TWO ARE NEW. 2#PQ # K5INDEX - FROM DELETE TO RECALCULATE KEY FOR CURRENT BLOCK OF FILE 2*9B # K7INDEX - FROM DELETE TO REMOVE BLOCK KEY FOR CURRENT BLOCK WHICH 2*P2 # HAS BEEN DELETED FROM THE FILE. 2*W8 ...# K8INDEX - FROM APPEND TO CHECK FOR FNEARLY FULL 2B3B ...# INDEXED FILES. 2B8L # IN ALL COMMENTS IN SEGMENT WE ABBREVIATE "THE CONTENTS OF FREADBLOCK" 2BN= # TO "N", WHEN REFERRING TO PARTICULAR BLOCKS OF THE FILE. 2C7W # 2CMG ZGEOER1 2D76 GEOERR 1,NOTINDEX 2DLQ ZGEOER2 2F6B GEOERR 1,INDEXBLK 2FL2 ZGEOER3 2G5L GEOERR 1,NOBLOCK 2GK= ZGEOER4 2H4W GEOERR 1,FILEBENT 2H=4 ...ZGEOER5 2HC= ... GEOERR 1,FILEFULL 2HJG # 2J46 SBLOCKEY 2JHQ # THIS SUBROUTINE PUTS ZERO WORD(S) INTO THE INDEX RECORD AT A POSITION 2K3B # GIVEN BY CONTENTS OF X4. THIS CONTAINS A POINTER,RELATIVE TO INDEXREC 2KH2 # IN THE INDEX BLOCK,TO THE WORD AFTER WHICH THE NEW WORD(S) ARE TO BE 2L2L # INSERTED. X5 CONTAINS NO. OF WORDS TO INSERT 2LG= SBX 7 FX1 [DECREMENT LINK 2L^W CALL 6 SFINDEX [X1 -> INDEX BLOCK 2MFG LDX 3 1 2M^6 LDX 6 ALOGLEN(1) 2NDQ ADX 6 5 [LENGTHEN INDEX BLOCK BY NO. OF 2NYB ALTLEN 3,6 [WORDS TO BE INSERTED. 2PD2 CALL 6 SFINDEX [X1->INDEX BLOCK 2PXL LDX 2 A1(1) 2QC= SBN 2 INDEXREC-A1+1 [X2 CONTAINS NO. OF BLOCK KEY WORDS 2QWW SBX 2 4 [TO BE MOVED DOWN 2RBG LDN 3 A1(1) 2RW6 ADX 3 A1(1) [X3 -> WORD AFTER LAST BLOCK KEY 2S*Q #SKI K6INDEX>599-599 2STB ( 2T*2 TRACE 3,SINZERO 2TSL TRACE 2,MOVEBLKS 2W#= ) 2WRW BZE 2 XZERO [J IF NO WORDS TO MOVE. I.E. APPENDIN 2X?G XMOVE 2XR6 SBN 3 1 [X3 -> BLOCK KEY TO BE MOVED 2Y=Q LDX 0 0(3) 2YQB SMO 5 [MOVE DOWN BY NO CONTAINED IN X5. 2^=2 STO 0 0(3) 2^PL BCT 2 XMOVE 329= XZERO 32NW ADS 5 A1(1) [INCREMENT REC. HDDR IN INDEX BLOCK. 338G XZERO1 33N6 STOZ 0(3) 347Q SBN 5 1 [ZEROISE NEW WORD(S). 34MB BZE 5 XOUT 3572 ADN 3 1 35LL BRN XZERO1 366= XOUT 36KW ADX 7 FX1 [INCREMENT LINK. 375G EXIT 7 0 37K6 # 384Q SFINDEX 38JB # THIS SUBROUTINE FINDS THE INDEX BLOCK AND GIVES A PTR TO IT IN X1. 3942 SMO FX2 39HL LDX 0 AWORK2 3=3= FINDEXB 0,1 3=GW EXIT 6 0 3?2G # 3?G6 SCALCKEY 3?^Q # THIS SUBROUTINE RECALCULATES THE BLOCK KEY FOR THE USAGE BLOCK OF TYPE 3#FB # GIVEN IN WORD AFTER THE CALL AND STORES IT. ON ENTRY X4 CONTAINS A PTR 3#^2 # RELATIVE TO INDEXREC TO POSITION OF CURRENT BLOCK KEY IN INDEX BLOCK. 3*DL CALL 6 SUBFIND [X3 -> USAGE BLOCK GIVEN IN WORD AFTE 3*Y= [SCALCKEY CALL.X2 -> FCB 3BCW STO 3 GEN3 3BXG ADN 3 A1 3CC6 SBX 1 FX1 [DECREMENT LINK. 3CWQ SMO FX2 3DBB STO 1 AWORK4 [STORE LINK 3DW2 STOZ GEN6 [ZEROISE "HIGHEST KEY FOUND" REGISTER 3F*L STOZ 7 [ZEROISE KEY FOUND MARKER. 3FT= NEXTREC 3G#W LDX 6 FRH(3) [PICK UP NEXT RECORD 3GSG BZE 6 XINDEX 3H#6 KEYREC 2,,3,NKEY,5 [X5 CONTAINS REC KEY. J IF NONE. 3HRQ BXL 5 GEN6,ZGEOER4 [ERROR IF LESS THAN HIGHEST KEY FOUND 3J?B STO 5 GEN6 [UPDATE 'HIGHEST KEY FOUND' 3JR2 BNZ 7 NKEY [J IF NOT FIRST KEY FOUND. 3K=L STO 3 7 [SET 'KEY FOUND' MARKER 3KQ= STO 5 GEN5 [STORE FIRST KEY FOUND IN BLK. 3L9W NKEY 3LPG ADX 3 6 3M96 BRN NEXTREC 3MNQ XINDEX 3N8B CALL 6 SFINDEX [X1 -> INDEX BLOCK 3NN2 BZE 7 NOFOUND [J IF "KEY FOUND" MARKER NOT SET. 3P7L LDX 5 GEN6 [HIGHEST KEY FOUND 3PM= BRN STOKEY 3Q6W NOFOUND 3Q*6 BNZ 4 NFIRST [J IF NOT 1ST BLOCK OF FILE. 3QHB LDN 5 0 [SET A KEY OF ZERO FOR 1ST BLOCK. 3QPL BRN STOKEY 3QXW NFIRST 3R66 SMO 4 [PICK UP BLOCK KEY OF PREVIOUS BLOCK. 3RKQ LDX 5 INDEXREC-1(1) 3S5B STOKEY 3SK2 SMO 4 [STORE 'HIGHEST KEY FOUND' IN 3T4L STO 5 INDEXREC(1) [BLOCK KEY WORD 3TJ= BS 2,BFINDEXALT [SET 'INDEX ALTERED' MARKER. 3W3W NOCHANGE 3WHG LDX 3 GEN3 3X36 #SKI K6INDEX 3XGQ ( 3Y2B LDX 0 ALOGLEN(1) 3YG2 SBN 0 INDEXREC-A1+1 3Y^L SBX 0 4 3^F= BZE 0 ZEROISED [J IF LAST BLOCK OF FILE. 3^YW SMO 4 42DG LDX 0 INDEXREC+1(1) 42Y6 BZE 0 ZEROISED 43CQ BXL 0 5,ZGEOER2 43XB ZEROISED 44C2 BZE 4 XFIRSTBLK 44WL BZE 7 XFIRSTBLK 45B= LDX 0 GEN5 45TW SMO 4 46*G BXL 0 INDEXREC-1(1),ZGEOER2 46T6 XFIRSTBLK 47#Q ) 47SB NAME 3,FILE,FUWB 48#2 SMO FX2 48RL LDX 1 AWORK4 49?= ADX 1 FX1 49QW EXIT 1 1 4==G # 4=Q6 SUBFIND 4?9Q # THIS SUBROUTINE SEARCHES THE FILE CHAIN FOR USAGE BLOCK OF TYPE/SUBTYP 4?PB # CONTAINED IN WORD POINTED TO BY X1 AND GIVES A PTR TO IT IN X3. 4#92 SMO FX2 4#NL LDX 0 AWORK2 [FILE DEPTH 4*8= SFSTACK 0,3 [X3 -> FCA 4*MW PSTAC 3,3 [X3 -> FSTACK 4B7G BFCBX 2,3 [X2 -> FCB 4BM6 SFULP 4C6Q LDX 3 FPTR(3) [NEXT BLOCK 4CLB LDX 0 ATYPE(3) 4D62 #SKI K6INDEX 4DKL BXE 0 FILEPLUSFCB,ZGEOER3 [ERROR IF NOT FOUND 4F5= BXU 0 0(1),SFULP [J IF WRONG TYPE 4FJW EXIT 6 0 4G4G # 4GJ6 SFCAB 4H3Q # THIS SUBROUTINE GIVES A PTR IN X3 TO THE FCA AND A PTR IN X2 TO THE 4HHB # FCB. ON ENTRY X6 CONTAINS FILE DEPTH. 4J32 SFSTACK AWORK2(2),3,1 [X3 -> FCA, X1 -> FSTACK. 4JGL BFCBX 2,1 4K2= EXIT 7 0 4K2Q ...# INDEXED FILE FNEARLY FULL ROUTINE 4K3= ...# EXITS WITH X3->FCA, X1->FSTACK, X2->FCB 4K3Q ...SFNEARLY 4K4= ... SBX 6 FX1 [ SET LINK 4K4Q ... TESTREP2 FILEFULL,ZGEOER5 [ FILE FULL TEST (INDEXED) 4K5= ... CALL 7 SFCAB [ X2->FCB 4K5Q ... LDX 0 FBLMOD(2) [ LENGTH OF FCB 4K6= ... SBN 0 AF2 4K6Q ... ADN 0 FNEARLY*8+A1 4K7= ... SBX 0 FSIZE(2) 4K7Q ... BNG 0 SNFOKAY [ J- IF NOT NEARLY FULL 4K8= ... TRACE 0,FNEARLY 4K8Q ... SBN 0 FNEARLY*8 [ WE BREAK IF £*FNEARLY MESSAGES 4K9= ... BZE 0 ZGEOER5 [ COME OUT (I.E. FILE FULL CASE 4K== ...# OUTPUT MESSAGES TO OPS CL AND FORCED TO MON FILE 4K=Q ... LDN 4 10 [NOT DIRECTORY CREADL BL LEN 4K?= ... JBC SNFNDIRA,2,BFDIR [ J- IF NOT DIRECTORY 4K?Q ... LDN 4 4 [ DIRECTORY CREADL BL LEN 4K#= ...SNFNDIRA 4K#Q ... SETNCORE 37,2,ADATA,CREADL [ X2->BL,SZ 37WDS 4K*= ... STOZ A1(2) [ ZERO DATA LENGTH 4K*Q ... SETUPCORE 4,5,FILE,FABSNB [X4->BL,SIZE 4 OR 10 WDS 4KB= ... CALL 7 SFCAB [ X2 -> FCB 4KBQ ... LDX 3 5 [ X3-> FABSNB 4KC= ... ADN 3 A1+1 4KCQ ... JBC SNFNDIRB,2,BFDIR [ J - IF NOT DIRECTORY 4KD= ... ADN 2 FME1 4KDQ ... MOVE 2 3 [ MOVES ACROSS DIRECTORY USERNAME 4KF= ... LDN 3 4 [ UPDATES FABSNB DATA LENGTH 4KFQ ... SMO 5 4KG= ... STO 3 A1 4KGQ ... BRN SNFOUTP 4KH= ...SNFNDIRB 4KHQ ... ADN 2 FUSER1 4KJ= ... MOVE 2 9 [ MOVE ACROSS FILE DESCRIPTION 4KJQ ... LDN 3 10 4KK= ... SMO 5 4KKQ ... STO 3 A1 4KL= ...SNFOUTP 4KLQ ... UNNORM FULL [ FORMAT MESSAGE 4KM= ... MHUNTW 1,ADATA,CREADL 4KMQ ... OUTPARAM A1(1),CPDATA,ADATA,CREADL 4KN= ... MONOUT ANFULLIND [ OUTPUT MESSAGE 4KNQ ... VFREE FILE,FABSNB [ FREE BLOCKS USED 4KP= ... VFREE ADATA,CREADL 4KPQ ... LDX 2 FX2 4KQ2 ... SETREP FNEARLY 4KQ= ... CALL 7 SFCAB [ SET PTRS TO FCA,FCB,FSTACK 4KQQ ...SNFOKAY 4KR= ... ADX 6 FX1 [ RESET LINK 4KRQ ... EXIT 6 0 [ RETURN FROM FNEARLY ROUTINE 4KS= ...# ENTRY FROM APPEND SEGMENT (FNEARLY CHECK) 4KSQ ...# ORK3 CONTAINS THE FILE DEPTH, WE REQUIRE IT IN AWORK2 FOR SFCAB ROUT 4KT= ... 4KTQ ... 4KW= ...XFNEARLY 4KWQ ... LDX 0 AWORK3(2) [ FILE EPTH FROM APPEND 4KX= ... STO 0 AWORK2(2) [ STORE DEPTH FOR USE BY SFCAB 4KXQ ... CALL 6 SFNEARLY 4KY= ... UP [ RESTORES AWORK WORDS 4KYQ ... 4K^G # ENTRY FROM DELETE TO RECALCULATE BLOCK KEY FOR CURRENT BLOCK OF FILE 4LF6 XCALCKEY 4LYQ CALL 7 SFCAB [X3->FCA,X1->FSTACK,X2->FCB 4MDB LDN 0 #77 4MY2 ANDX 0 FINFC(2) 4NCL BZE 0 ZGEOER1 [J IF FILE NOT INDEXED 4NX= LDX 4 FREADBLOCK(3) 4PBW #SKI K6INDEX>599-599 4PWG TRACE 4,DELCALC 4QB6 SBN 4 FBLKS 4QTQ CALL 1 SCALCKEY [RECALCULATE BLOCK KEY AND STORE IT 4R*B #HAL FI+FUTILITY,0 [IN INDEX BLOCK. 4RT2 UP 4S#L UP 4SS= # ENTRY FROM DELETE TO REMOVE BLOCK KEY FOR BLOCK WHICH HAS BEEN DELETED 4T?W # FROM FILE. 4TRG XDELKEY 4W?6 CALL 7 SFCAB [X3->FCA,X1->FSTACK,X2->FCB 4WQQ LDN 0 #77 4X=B ANDX 0 FINFC(2) 4XQ2 BZE 0 ZGEOER1 [ERROR IF FILE NOT INDEXED 4Y9L #SKI K6INDEX>599-599 4YP= TRACE FREADBLOCK(3),DELBLK 4^8W CALL 6 SFINDEX [X1 -> FINDEXF BLOCK 4^NG LDX 0 FBLMOD(2) 5286 ADN 0 A1 [IF LAST BLOCK OF FILE NO WORDS TO 52MQ SBX 0 FREADBLOCK(3) [MOVE IN INDEX BLOCK 537B BZE 0 SHORT [J IF SO 53M2 LDX 5 1 546L ADX 5 FREADBLOCK(3) 54L= SBN 5 FBLKS-INDEXREC [X3->BLOCK KEY TO BE REMOVED. 555W LDX 4 5 55KG ADN 4 1 5656 SMO 0 [X0 = NO OF BLOCKS TO BE MOVED 56JQ MOVE 4 0 574B SHORT 57J2 BS 2,BFINDEXALT [SET 'INDEX ALTERED' MARKER. 583L LDN 0 1 58H= LDX 2 ALOGLEN(1) 592W SBX 2 0 59GG SBS 0 A1(1) 5=26 SHORTEN 1,0(2) 5=FQ BRN UP 5=^B # ENTRY FROM INSERTWO TO RECALCULATE BLOCK KEYS FOR TWO USAGE BLOCKS IN 5?F2 # CORE, IF NECESSARY INSERTING A NEW WORD IN THE INDEX RECORD. THE INSER 5?YL # RECORD IS IN A FWB IN THE ACTIVITY CHAIN. 5#D= # AWORK1 IS A SWITCH WORD PASSED ACROSS FROM INSERTWO. IF B5 IS SET A NE 5#XW # BLOCK HAS BEEN INSERTED INTO THE FCB FOR THE FILE AND A CORRESPONDING 5*CG # WORD MUST BE INSERTED INTO THE INDEX BLOCK. IF B4 IS SET THE USAGE BLK 5*X6 # ARE RESPECTIVELY THE N-1TH &NTH,OTHERWISE THE NTH & N+1TH. 5BBQ TWOINS 5BG9 ... LDCT 0 #010 [ NEW BLOCK ? 5BKN ... ANDX 0 AWORK1(2) 5BP7 ... BZE 0 SNOTNB [ J - IF NOT NEW BLOCK 5BSL ... CALL 6 SFNEARLY [X3->FCA,X1->FSTACK,X2->FCB 5BY5 ... BRN SNNBC 5C3J ...SNOTNB 5C73 ... CALL 7 SFCAB 5C=G ...SNNBC 5CB2 LDN 0 #77 5CTL ANDX 0 FINFC(2) 5D*= BZE 0 ZGEOER1 [J IF FILE NOT INDEXED. 5DSW LDX 4 FREADBLOCK(3) [X4 CONTAINS PTR RELATIVE TO INDEXREC 5F#G #SKI K6INDEX>599-599 5FS6 TRACE 4,TWOBLKS 5G?Q SBN 4 FBLKS [IN INDEX BLK,FOR CURRENT BLK OF FILE 5GRB LDCT 0 #020 5H?2 SMO FX2 5HQL ANDX 0 AWORK1 [B4 SET? 5J== BZE 0 XFLOW [J IF NOT 5JPW SBN 4 1 [X4 -> PREVIOUS BLOCK OF FILE. 5K9G XFLOW 5KP6 LDCT 0 #010 5L8Q SMO FX2 [TEST IF NEW BLOCK BEEN INSERTED. 5LNB ANDX 0 AWORK1 5M82 BZE 0 NOTNEW [J IF NOT 5MML LDN 5 1 5N7= CALL 7 SBLOCKEY [INSERT ZERO WORD IN INDEX BLOCK AS 5NLW NOTNEW [THE [X4]+1TH RELATIVE TO INDEXREC 5P6G CALL 1 SCALCKEY [CALCULATE NEW BLK KEY FOR FI/INSERT1 5PL6 #HAL FI+INSERT1,0 [BLOCK AND RENAME IT A FUWB. 5Q5Q ADN 4 1 5QKB CALL 1 SCALCKEY [CALCULATE KEY FOR FI/INSERT3 BLOCK. 5R52 #HAL FI+INSERT3,0 5RJL BRN UP 5S4= # ENTRY FROM INSERTHR TO RECALCULATE BLOCK KEYS FOR THREE USAGE BLOCKS 5SHW # IN CORE. THE MIDDLE BLOCK IS A NEW ONE AND A CORRESPONDING WORD MUST 5T3G # BE PUT IN THE INDEX BLOCK. IF B4 OF AWORK1 IS SET THE BLOCKS ARE THE 5TH6 # N-1TH,NTH &N+1TH OTHERWISE THE NTH,N+1TH &N+2TH. 5W2Q THRINS 5WGB ... CALL 6 SFNEARLY [X3->FCA,X1->FSTACK,X2->FCB. 5X22 LDN 0 #77 5XFL ANDX 0 FINFC(2) 5X^= BZE 0 ZGEOER1 [J IF FILE NOT INDEXED. 5YDW LDX 4 FREADBLOCK(3) [X4 CONTAINS PTR RELATIVE TO INDEXREC 5YYG #SKI K6INDEX>599-599 5^D6 TRACE 4,THREBLKS 5^XQ SBN 4 FBLKS [IN INDEX BLK,FOR CURRENT BLK OF FILE 62CB LDCT 0 #020 62X2 SMO FX2 63BL ANDX 0 AWORK1 [B4 SET? 63W= BZE 0 TFLOW [J IF NOT 64*W SBN 4 1 64TG TFLOW 65*6 LDN 5 1 [INDICATES ONE NEW WORD 65SQ CALL 7 SBLOCKEY [INSERT ZERO WORD IN INDEX BLOCK. 66#B CALL 1 SCALCKEY [CALCULATE NEW BLOCK KEYS FOR THE 66S2 #HAL FI+INSERT1,0 [THREE USAGE BLOCKS AND STORE VALUES 67?L ADN 4 1 [IN CORRESPONDING WORDS OF INDEX 67R= CALL 1 SCALCKEY [BLOCK. RENAME ALL USAGE BLOCKS 68=W #HAL FI+INSERT2,0 [FILE/FUWB'S. 68QG ADN 4 1 69=6 CALL 1 SCALCKEY 69PQ #HAL FI+INSERT3,0 6=9B BRN UP 6=P2 # ENTRY FROM INSERTFR TO RECALCULATE BLOCK KEYS FOR THREE USAGE BLOCKS. 6?8L # THE BLOCKS ARE THE N-2TH,N-1TH AND NTH.THE LAST TWO ARE NEW AND MUST 6?N= # HAVE NEW WORDS INSERTED INTO THE INDEX BLOCK FOR THEM. 6#7W SFRINS 6#MG ... CALL 6 SFNEARLY [X3->FCA,X1->FSTACK,X2->FCB 6*76 LDN 0 #77 6*LQ ANDX 0 FINFC(2) 6B6B BZE 0 ZGEOER1 [J IF FILE NOT INDEXED. 6BL2 LDX 4 FREADBLOCK(3) [X4 INDICATES BLOCK OF FILE TWO 6C5L #SKI K6INDEX>599-599 6CK= TRACE 4,FRBLKS 6D4W SBN 4 FBLKS+2 [BEFORE CURRENT BLOCK. 6DJG LDN 5 2 [INDICATES 2 NEW WORDS. 6F46 CALL 7 SBLOCKEY [INSERT TWO ZERO WORDS IN INDEX BLK. 6FHQ CALL 1 SCALCKEY [CALCULATE NEW BLOCK KEYS FOR THE 6G3B #HAL FI+INSERT1,0 [THREE USAGE BLOCKS AND STORE VALUES 6GH2 ADN 4 1 [IN CORRESPONDING WORDS OF IN4EX 6H2L CALL 1 SCALCKEY [BLOCK. RENAME ALL USAGE BLOCKS 6HG= #HAL FI+INSERT3,0 [FILE/FUWB'S. 6H^W ADN 4 1 6JFG CALL 1 SCALCKEY 6J^6 #HAL FI+INSERT5,0 6KDQ BRN UP 6KYB MENDAREA 50,K99INDEX 6LD2 #END ^^^^ ...47250316000300000000