>FOR ix = 1 to Whatever > REPLACE JMJ_IN.Diag1 WITH LEFT(ALLTRIM(UPPER(EVALUATE('loObj'+LTRIM(STR(m.ix))+".Field019"))),AT('^',EVALUATE('loObj'+LTRIM(STR(m.ix))+".Field019"))-1) >ENDFOR >My first thought is, because this way you fire the eval and the object referencing once. Not tested of course.
FOR ix = 1 to Whatever m.lcString = EVALUATE('loObj'+LTRIM(STR(m.ix))+".Field019") REPLACE Diag1 WITH LEFT(ALLTRIM(UPPER(m.lcString)),AT('^',m.lcString)-1) IN JMJ_IN ENDFOR