>* spaces added after the < so the UT will post the message >one = "test" >two = "123" >lcfield = "start< < callit( '< < one>>', '< < two>>' )>>end" >lcx = textmerge( lcfield, .t. ) && error 36 barfs up > >function callit( lc1, lc2 ) >return lc1 + lc2 >>
>lcfield = "< < callit( '{{one}}', '{{two}}' )>>end" >lcx = textmerge( lcfield, .t., "{{", "}}" ) >lcy = textmerge( lcx ) >>
<< callit( '<< one>>
as the first delimited string, will strip the delimiters and try to evaluate what's inside - error 36. "Nested" works as Sergey described, merge and see if there is something to merge again. So if one of the variables contains delimiters, this would work:one = "test" two = "123" lcExpr= [callit( '<< one>>', '<< two>>' )] lcfield = "start<<lcExpr>>end" lcx = textmerge( lcfield, .t. )This would do it in two passes, but it should do it. And at every pass it would resolve one level of merge.
one = "test" two = "123" lcExpr= TEXTMERGE([callit('<< one>>', '<<two>>')]) lcExpr2=TEXTMERGE("<<EVALUATE(lcExpr)>>") lcfield = "start<<lcExpr2>>end" lcx = textmerge( lcfield)I guess you could put evaluate() straight into the last merge, so two may suffice. I don't see a way you can do this with just one merge.