BBS: Inland Empire Archive Date: 05-09-92 (01:16) Number: 193 From: TOM HAMMOND Refer#: NONE To: LYN BORCHERT Recvd: NO Subj: HASHING 8/9 Conf: (2) Quik_Bas
Continued from Hashing 7/9
LoadIt:
'load the data from a data file
Free% = 0
Empty% = Empty% + 1
FOR I% = 0 TO ArraySize%
IF a$(I%, 0) = "" THEN
Free% = Free% + 1
Empty% = Empty% + 1
ELSEIF a$(I%, 0) = DeletedValue$ THEN
Free% = Free% + 1
END IF
NEXT I%
IF Empty% = 0 THEN
GOSUB SorryFull
ELSE
INPUT "File To Load From:"; FileName$
ON ERROR GOTO ErrorHandler
Found = True
OPEN FileName$ FOR INPUT AS 1
IF Found = True THEN
DO WHILE NOT EOF(1) AND Free% > 0
INPUT #1, TestName$, PhoneNumber$
CALL GetData(TestName$, Index%, Seeks%, SaveIndex%)
IF SeekCount% >= RetryLimit% THEN
PRINT "The data base is full and/or needs to be resized"
YesOrNo$ = ""
DO WHILE YesOrNo$ <> "Y" AND YesOrNo$ <> "N"
INPUT "Do you want to see a data base dump (Y/N)"; YesOrNo$
IF YesOrNo$ <> "" THEN
YesOrNo$ = WhackIt$(YesOrNo$)
END IF
IF YesOrNo$ = "Y" THEN
GOSUB DumpIt
ELSEIF YesOrNo$ <> "N" THEN
PRINT "Please Enter A Y for Yes or a N for NO."
END IF
LOOP
Free% = 0 'force a shutdown
CALL Waiter
ELSEIF a$(Index%, 0) = TestName$ THEN
' the value is already on file
' we'll just replace the old value for now,
' and keep on truckin - we could ask the user
' what we should do, but not for a test program!
a$(Index%, 1) = PhoneNumber$
PRINT a$(Index%, 0); "has been updated!"
ELSE
IF SaveIndex% <> -1 THEN
'reuse deleted space
Index% = SaveIndex%
PRINT "We are reclaiming unused space! Ain't it great!"
END IF
a$(Index%, 0) = TestName$
a$(Index%, 1) = PhoneNumber$
Free% = Free% - 1
END IF
IF Free% < 1 THEN
PRINT "The data base has been completely filled."
PRINT "Some data was not loaded from the file you selected."
PRINT
GOSUB SorryFull
CALL Waiter
END IF
LOOP
CLOSE 1
END IF
ON ERROR GOTO 0
END IF
RETURN
SaveIt:
'Save data to a selected file
ON ERROR GOTO ErrorHandler
INPUT "Name of file to save data to:"; FileName$
OPEN FileName$ FOR OUTPUT AS 1
FOR I% = 0 TO ArraySize%
IF a$(I%, 0) <> "" AND a$(I%, 0) <> DeletedValue THEN
PRINT #1, a$(I%, 0); ","; a$(I%, 1)
END IF
NEXT I%
CLOSE 1
RETURN
SortIt:
' convert, sort, and dump the data base
'convert the hashed A$() into a packed SortSpace$()
PRINT "Converting the data into a linear array...."
NextEntry% = 0
FOR I% = 0 TO ArraySize%
IF a$(I%, 0) <> "" AND a$(I%, 0) <> DeletedValue$ THEN
SortSpace$(NextEntry%, 0) = a$(I%, 0)
SortSpace$(NextEntry%, 1) = STR$(I%)
'track the location of the data, not the data....
NextEntry% = NextEntry% + 1
END IF
NEXT I%
Continues in next file (HASHING - 9 of 9)
--- WM v2.00/91-0231
* Origin: The Modem Zone BBS (314) 893-5106 (1:289/2)

Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET