*this is more than twelve years old *it creates sort of 'pointers' into arrays *named after the open tables *so you can change the structure of the table *and don´t need to change data binding SET SAFETY OFF CREATE TABLE test (c12 C(12) NOT NULL, n31 N(3,1) NOT NULL ) SET SAFETY ON PUBLIC aTbl(1,2) aTbl(1,1)=ALIAS() aTbl(1,2)="t" &&table signature FOR m.nCntr1=1 TO 1 &&actually iterate over open tables * use name expr to create public array * dimensioned to the fcount() of the table PUBLIC ("r"+LOWER(ALIAS())+"("+LTRIM(STR(FCOUNT(),3))+")") * use name expr to scatter to this array SCATTER MEMO TO ("r"+ALIAS()) FOR m.nCntr2=1 to FCOUNT() * create variable names from table signature+field name * resulting in: tC12 and tN31 m.cTmp=aTbl(m.nCntr1,2)+FIELD(m.nCntr2) PUBLIC (m.cTmp) * assign the 'pointer' value to the var ONLY POSSIBLE WITH MACRO * resulting in: tC12=1, tN31=2 &cTmp=m.nCntr2 * for demo purposes only: ?(m.cTmp) * a bit funny ?(EVALUATE(m.cTmp)) * eVALuate() to get the VALUE!!! ?EVALUATE(m.cTmp) ENDFOR ENDFOR *check in debugger before clearing *CLEAR ALLThere´s actually much more fun to it...