w*****r 发帖数: 92 | 1 macro code应该循环执行两次%step1 %step2,最后将结果输出到z_a
和z_b里, Step1 & 2是调用的比较复杂的code,单独运行没有问题。可是code怎么改也
不执行循环,最后只出来一个z_a.哪位前辈指点一二啊,谢谢了!
%let job=z;
%let name=a b;
%let count = %sysfunc(countw(&method));
%macro x;
%do i=1 %to &count;
%let m = %scan(&name, &i);
%let jobname = &job._&m;
%step1(jobname=&job, ...);
%step2(Jobname=&jobname, label=&m, ...);
%end;
%mend x;
用下面的code试了下就可以,难道是step1 2内部的问题?
%macro part1(jobname=, cov=);
data &job;
set eco;
keep &cov;
run;
%mend;
%macro part2(jobname=, label=);
data &jobname;
set &job;
label="&m";
run;
%mend;
%macro test;
%do i=1 %to &count;
%let m = %scan(&name, &i);
%let jobname = &job._&m;
%part1(jobname=&job, cov=id dept);
%part2(Jobname=&jobname, label=&m);
%end;
%mend test;
%test; | t****t 发帖数: 820 | 2 不觉得循环本身有问题
是不是你的赋值有问题?
把step1 和step2换成简单的%put &job._&m; 看看运行正常不. 如果正常就是你step1
和step2的问题. |
|