1 POKE53280,14:POKE53281,6:POKE646,14 5 DIMDA$(100,2) 6 FORL=1 TO 100:DA$(L,2)="0":DA$(L,0)="":NEXT 8 FR=31 10 REM ******************************* 20 REM * AN EXAMPLE OF HASH TABLES * 30 REM * * 40 REM * WRITTEN BY STEVEN P BURGESS * 50 REM * * 60 REM * COPYRIGHT 1989 * 70 REM ******************************* 80 REM 90 REM 95 GOSUB5000 100 PRINTCHR$(147); 110 PRINT"[176][192][192][192][192][174]" 120 PRINT"[221]MENU[221]" 130 PRINT"[173][192][192][192][192][189]" 140 PRINT"1..ADD RECORDS" 150 PRINT"2..SEARCH FOR RECORD" 160 PRINT"3..DELETE RECORD" 170 PRINT"4..END PROGRAM" 180 GETA$:IFA$=""THEN180 190 IF A$<"1" OR A$>"4"THEN180 200 IF A$="1"THEN GOSUB1000 210 IF A$="2"THEN GOSUB2000 220 IF A$="3"THEN GOSUB3000 230 IF A$="4"THEN PRINTCHR$(147):END 250 GOTO 100 260 REM*************** 270 REM*HASH FUNCTION* 280 REM*************** 290 H=0:T=0:FORE=1 TO LEN(A$):T=T+ASC(MID$(A$,E,1)) 300 NEXT 310 T=T/LEN(A$) 320 H=INT(ABS(SIN(T))*29)+1 330 H=INT(H) 340 RETURN 350 REM*************** 360 REM*ADD PROCEDURE* 370 REM*************** 380 INS=0:IF DA$(H,0)=""THEN DA$(H,0)=A$:DA$(H,1)=B$:RETURN 390 IFDA$(H,2)="0"THEN DA$(H,2)=STR$(FR):DA$(FR,0)=A$:DA$(FR,1)=B$:INS=1:FR=FR+1 400 IF INS<>1 THEN H=VAL(DA$(H,2)):GOTO 380 410 RETURN 1000 REM************* 1010 REM*ADD RECORDS* 1020 REM************* 1030 PRINTCHR$(147); 1040 PRINT"ADD RECORDS" 1050 PRINT"";:INPUT"ENTER COUNTRY";A$ 1060 PRINT"";:INPUT"ENTER CAPITAL";B$ 1070 GOSUB260:GOSUB350 1080 RETURN 2000 REM************* 2010 REM*SEARCH FOR RECORD* 2020 REM******************* 2021 FI=0 2025 IF DI$<>"DELETE"THEN DI$="SEARCH FOR" 2030 PRINTCHR$(147); 2040 PRINTDI$+" RECORD" 2050 PRINT"";:INPUT"ENTER COUNTRY";A$ 2060 GOSUB260 2070 IF DA$(H,0)=A$ THEN F=1 2080 IF F=0 THEN H=VAL(DA$(H,2)) 2090 IF H<>0 AND F<>1 THEN 2070 2100 IFH=0ANDF=0 THEN PRINT"[147]SORRY BUT THE COUNTRY YOU ENTERED IS NOT PRESENT" 2105 IF H=0 AND F=0 THEN PRINT"PRESS ANY KEY TO RETURN TO THE MENU" 2106 IF H=0 AND F=0 THEN GETA$:IFA$=""THEN2106 2107 IF H=0 AND F=0 THEN RETURN 2110 PRINT"[147]"; 2120 PRINT"COUNTRY:";DA$(H,0) 2130 PRINT"CAPITAL:";DA$(H,1) 2140 PRINT"[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]" 2150 PRINT"IS THIS THE RECORD YOU REQUIRE" 2160 PRINT"[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]" 2170 GETR$:IFR$=""THEN2170 2180 IF R$="N"THENH=VAL(DA$(H,2)):F=0:GOTO 2070 2190 PRINT"[145][145]PRESS ANY KEY TO RETURN " 2200 GETA$:IFA$=""THEN 2200 2205 IF DI$<>"DELETE"THEN H=0:F=0 2210 RETURN 3000 REM*************** 3010 REM*DELETE RECORD* 3020 REM*************** 3025 DI$="DELETE" 3030 PRINT"[147]"; 3040 PRINT"DELETE RECORD" 3050 GOSUB2000 3080 IF H=0 AND F=0 THEN RETURN 3090 DA$(H,0)="":DA$(H,1)="" 3095 DI$="" 3096 H=0:F=0 3100 RETURN 5000 FORL=1 TO 5:READA$,B$ 5010 GOSUB260 5020 GOSUB350 5030 NEXT 5036 RETURN 5040 DATAFRANCE,PARIS,ENGLAND,LONDON,RUSSIA,MOSCOW,AUSTRAILIA,CANBERRA,ETHIOPIA 5050 DATAADDIS ABABA