%macro test; data _null_; a=1; b=2; c=3; array abc[*] a b c; %do i=1 %to dim(abc); put abc[&i]; %end; run; %mend; %test; 错误原因:sas在编译的时候,应该先编译宏,然后再编译和执行数据步过程,在编译宏的时候遇到dim(abc),这个 时候要知道具体的值是多少,而这个时候数据步还没有编译执行,abc数组的元素个数还没有确定,所以在编译的时候无法确定dim(abc)的个数。