CLEAR CREATE CURSOR aaa ( id C(1),s1 C(1)) INSERT INTO aaa VALUES ('a','a') INSERT INTO aaa VALUES ('b','b') SYS(3054,11) ON ERROR ? '>>>>>>>>>>>>>>>>>>',MESSAGE() * vfp TRY TO OPTIMIZE THESE, AND GO in a Iternal Error status SELECT * FROM aaa t1,aaa t2 WHERE t1.id $ t2.s1 SELECT * FROM aaa t1 JOIN aaa t2 ON t1.id $ t2.s1 SELECT * FROM aaa t1 JOIN aaa t2 ON .T. WHERE t1.id $ t2.s1 * Not optimize Cartesian Product is ok SELECT * FROM aaa t1 JOIN aaa t2 ON t2.s1 LIKE "%"+t1.id+"%" SELECT * FROM aaa t1 JOIN aaa t2 ON AT(t1.id,t2.s1)>0 ON ERROR SYS(3054,0)David, your comment on the macro is mistaken,