CREATE CURSOR Words (Word C(39)) APPEND FROM text.txt CSV REPLACE ALL Word WITH UPPER(Word) INDEX ON Word TAG word CREATE CURSOR KeyCodes (Code C(1), Chars C(4)) INSERT INTO KeyCodes VALUES ("2", "ABC") INSERT INTO KeyCodes VALUES ("3", "DEF") INSERT INTO KeyCodes VALUES ("4", "GHI") INSERT INTO KeyCodes VALUES ("5", "JKL") INSERT INTO KeyCodes VALUES ("6", "MNO") INSERT INTO KeyCodes VALUES ("7", "PQRS") INSERT INTO KeyCodes VALUES ("8", "TUV") INSERT INTO KeyCodes VALUES ("9", "WXYZ") INDEX ON Code TAG Code cPhonenumber = "642-394-6369" cPhonenumber = STRTRAN(cPhoneNumber, "-","") cLen = STR(LEN(cPhonenumber)+1) CREATE CURSOR Results (Word C(&cLen)) nSec = SECONDS() SELECT KeyCodes GetWords(cPhoneNumber,"","") ? SECONDS() - nSec SELECT Results BROWSE NORM RETURN PROCEDURE GetWords (cUncoded, cCoded, cWordpart) LOCAL nT, cChar, cChars DO CASE CASE EMPTY(cUnCoded) AND (EMPTY(cWordPart) OR KEYMATCH(cWordPart+" ",1,"Words")) INSERT INTO Results VALUES (cCoded+cUncoded) CASE !EMPTY(cUncoded) =(EMPTY(cWordPart) OR SEEK(cWordPart+" ","Words")) AND ; GetWords(SUBSTR(cUnCoded,2), cCoded+LEFT(cUnCoded,1), "") cChars = ALLTRIM(LOOKUP(Chars,LEFT(cUncoded,1),code,"Code")) FOR nT = 1 TO LEN(cChars) cChar = SUBSTR(cChars, nT, 1) = KEYMATCH(cWordPart+cChar,1,"Words") AND ; GetWords(SUBSTR(cUnCoded,2), cCoded+cChar, cWordPart+cChar) ENDFOR ENDCASE RETURN>Just thought I'd pass this URL along: