>CREATE CURSOR Words (Word C(39)) >APPEND FROM text.txt CSV >INDEX ON LOWER(Word) TAG word > >ALINES(aKeyCode,STRTRAN("0 1 2abc 3def 4ghi 5jkl 6mno 7pqrs 8tuv 9wxyz"," ",CHR(13))) > >cPhonenumber = "642-394-6369" >cPhonenumber = STRTRAN(cPhoneNumber, "-","") >CREATE CURSOR Results (Word C((2*LEN(cPhonenumber)))) > >nSec = SECONDS() >SELECT WORDS >GetWords(cPhoneNumber,"","") >? SECONDS() - nSec > >SELECT Results >BROWSE NORM >RETURN > >*- > >PROCEDURE GetWords (cUncoded, cCoded, cWordpart) >LOCAL nT, cChar, cChars > >DO CASE > CASE !EMPTY(cUncoded) > cChars = aKeyCode[VAL(LEFT(cUncoded,1))+1] > FOR nT = 1 TO LEN(cChars) > cChar = SUBSTR(cChars, nT, 1) > > DO CASE > CASE KEYMATCH(cWordPart+cChar+" ") > GetWords(SUBSTR(cUnCoded,2), cCoded+IIF(EMPTY(cWordPart) AND !EMPTY(cCoded),"-","")+cChar, "") > > CASE EMPTY(cWordPart) AND nT = 1 > GetWords(SUBSTR(cUnCoded,2), cCoded+IIF(ISALPHA(RIGHT(cCoded,1)),"-","")+cChar, "") > ENDCASE > IF nT > 1 AND KEYMATCH(cWordPart+cChar) AND LEN(cUncoded) > 1 > GetWords(SUBSTR(cUnCoded,2), cCoded+IIF(EMPTY(cWordPart) AND !EMPTY(cCoded),"-","")+cChar, cWordPart+cChar) > ENDIF > ENDFOR > > CASE EMPTY(cWordPart) OR KEYMATCH(cWordPart+" ") > INSERT INTO Results VALUES (cCoded) >ENDCASE >RETURN>