Contributor: SWAG SUPPORT TEAM { REYNIR STEFANSSON Somebody was saying something about Soundex hashing. Here is my Implementation of that: } Unit Soundex; Interface Type Sdx4 = String[4]; Function SoundexOf(WorkStr : String) : Sdx4; Implementation Var Group : Array[0..6] of String[8]; Function ValidityOf(Letter : Char) : Char; Var Valu, j : Integer; Chs : String[8]; begin For Valu := 0 to 6 DO begin Chs := Group[Valu]; For j := 1 to Length(Chs) DO begin if UpCase(Letter) = Chs[j] then ValidityOf := Chr(48+Valu); end; end; end; Function SoundexOf(WorkStr : String) : Sdx4; Var Sndex : Sdx4; Oval, Valu : Char; i : Integer; begin Sndex := Copy(WorkStr, 1, 1); Oval := ValidityOf(WorkStr[1]); For i := 2 to Length(WorkStr) DO begin Valu := ValidityOf(WorkStr[i]); if (Valu <> '0') and (Valu <> Oval) then Sndex := Sndex + Valu; Oval := Valu; end; Sndex := Sndex + '000'; SoundexOf := Sndex; end; begin Group[0] := 'AEHIOUWY'; Group[1] := 'BFPV'; Group[2] := 'CGJKQSXZ'; Group[3] := 'DT'; Group[4] := 'L'; Group[5] := 'MN'; Group[6] := 'R'; end. { A Soundex-String looks like: `G032', one letter and three numbers. Donald Knuth wrote about Soundexing in his _Art of Computer Programming_ series. I got my information out of Personal ComputerWorld (PCW), which in turn got it from Knuth. }