29 lines
846 B
Plaintext
29 lines
846 B
Plaintext
DATA Ashcraft, Ashcroft, Gauss, Ghosh, Hilbert, Heilbronn, Lee, Lloyd
|
|
DATA Moses, Pfister, Robert, Rupert, Rubin, Tymczak, Soundex, Example
|
|
FOR i% = 1 TO 16
|
|
READ name$
|
|
PRINT """" name$ """" TAB(15) FNsoundex(name$)
|
|
NEXT
|
|
END
|
|
|
|
DEF FNsoundex(name$)
|
|
LOCAL i%, n%, p%, n$, s$
|
|
name$ = FNupper(name$)
|
|
n$ = "01230129022455012623019202"
|
|
s$ = LEFT$(name$,1)
|
|
p% = VALMID$(n$, ASCs$ - 64, 1)
|
|
FOR i% = 2 TO LEN(name$)
|
|
n% = VALMID$(n$, ASCMID$(name$,i%,1) - 64, 1)
|
|
IF n% IF n% <> 9 IF n% <> p% s$ += STR$(n%)
|
|
IF n% <> 9 p% = n%
|
|
NEXT
|
|
= LEFT$(s$ + "000", 4)
|
|
|
|
DEF FNupper(A$)
|
|
LOCAL A%,C%
|
|
FOR A% = 1 TO LEN(A$)
|
|
C% = ASCMID$(A$,A%)
|
|
IF C% >= 97 IF C% <= 122 MID$(A$,A%,1) = CHR$(C%-32)
|
|
NEXT
|
|
= A$
|