Hi Ed,
This is the solution I came up with - I think this one works a bit better because if the string you are searching for is contained in the replacement string things will get confusing 8-)
eg lcVar = StrtrannoCase(lcVar, 'Proc', 'Procedure')
lParameters tcStr, tcFind, tcRep
Local lnPos
lnPos = ATC(tcFind, tcStr)
Do While lnPos > 0
tcStr = STUFF( tcStr, lnPos, LEN(tcFind), '*!*SomeUniqueString*!*')
lnPos = ATC(tcFind, tcStr)
EndDo
Return Strtran(tcStr, '*!*SomeUniqueString*!*', tcRep)
Will Jones