SAS では、この便利なスニペットを使用して、このようなことを行うことができます。
%let listofvars = work.apples work.bananas work.oranges;
%let var_no = 1;
%let var = %scan(&listofvars, &var_no, ' ');
%do %while (&var ne);
proc sort data = &var;
by id;
run;
%let var_no = %eval(&var_no +1);
%let var = %scan(&listofvars, &var_no, ' ');
%end;
これらのデータセットのそれぞれを並べ替える。
スニペットをループ マクロに減らしたいので、次のようにします。
%let setlist = work.apples work.bananas work.oranges;
%macro mymacro(dataset);
proc sort data = &dataset.
by id;
run;
%mend;
%loop(&setlist, mymacro);
/*the loop macro will know to pass the &var. in as a arguement to the macro*/
これにより、コードの可読性が大幅に向上します。
これは可能ですか?