您好我正在尝试使用下面的代码为数据集中的每一行调用一个宏
proc sql;
select cats('%run_procreg(name=',name,',month=',month,')') into :macrocalllist
separated by ' ' from dataset_a;
quit;
¯ocalllist;
我得到的变量最大长度为'错误:
宏变量MACROCALLLIST(65540)的值的SAS长度 超过最大长度(65534)。价值已经是 截断为65534个字符。
因为数据集中的行数。你能建议一个解决方法吗?
谢谢,
答案 0 :(得分:0)
CALL EXECUTE是一个选项。它允许您使用数据集中的数据生成一系列宏调用,而不将宏调用存储在宏变量中。
例如:
%macro testprint(data=,obs=);
proc print data=&data (obs=&obs);
run;
%mend testprint;
data _null_;
input datasetname $13. obs;
call execute('%nrstr(%testprint(data='||datasetname
||',obs='||put(obs,1.)
||'))'
);
cards;
sashelp.shoes 3
sashelp.class 5
;
日志将显示:
NOTE: CALL EXECUTE generated line.
131 ;
1 + %testprint(data=sashelp.shoes,obs=3)
NOTE: There were 3 observations read from the data set SASHELP.SHOES.
2 + %testprint(data=sashelp.class,obs=5)
NOTE: There were 5 observations read from the data set SASHELP.CLASS.