Here's my code, I simplified my problem as this: %macro checkrow(dsname); %let dsid=%sysfunc(open(&dsname)); %let countrow=%sysfunc(attrn(&dsid,nlobs)); %let rc=%sysfunc(close(&dsid)); &countrow %mend checkrow; data t1; input a b $; datalines; 1 a 2 b ; run; %put %checkrow(t1); %macro t2; data t1; set t1 t1; run; %put %checkrow(t1); %mend t2; data _null_; do i = 0 to 3; call execute('%t2'); end; run; the macro checkrow is used to check how many rows in a dataset and it works well. But here's the problem Every iteration in the data_null_, the row of dataset t1 is doubled, so my expectation is 2 2 4 8 16 But the output is 2 2 2 2 2 although the actual t2 rows are already 16 Could anyone tell me why? Why the %checkrow(t2) don't work here?
... View more