LPARAMETERS tcText LOCAL lnNewText, lcTemp, lcChar, llUpper lcNewText = "" tcText = LTRIM(tcText) lcTemp = tcText && set temp string to tcText llUpper = .F. * if 1st char not a sentence ender * set 1st char to upper and set lcTemp and lnStart accordingly IF !(LEFT(tcText, 1) $ ".?!") lcNewText = UPPER(LEFT(tcText, 1)) lcTemp = LTRIM(SUBSTR(tcText, 2)) ELSE llUpper = .T. && upper case next character ENDIF DO WHILE !EMPTY(lcTemp) lcChar = LEFT(lcTemp, 1) && get first char IF llUpper AND lcChar<> " " && is it a space after .?! lcChar = " " + UPPER(lcChar) && no, so add a space lcTemp = SUBSTR(lcTemp,2) && shrink lctemp ELSE IF llUpper AND lcChar = " " && space? lcChar = lcChar + UPPER(SUBSTR(lcTemp,2,1)) && yes, so get next char too lcTemp = SUBSTR(lcTemp, 3) && shrink lctemp ELSE lcTemp = SUBSTR(lcTemp,2) && shrink lctemp ENDIF ENDIF IF LTRIM(lcChar) $ ".?!" && set llUpper llUpper = .T. ELSE llUpper = .F. ENDIF lcNewText = lcNewText + lcChar && add to lcNewText ENDDO RETURN lcNewTextAlan