{{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