- %macro aaa(dsin=,
- vars=,
- invars=,
- keepvars=,
- dsout=);
- %let vars_num=%sysfunc(countw(&vars.,' '));
- %let invars_num=%sysfunc(countw(&invars.,' '));
- %let i_num=%eval(&vars_num/&invars_num);
- %do i=1 %to &vars_num.;
- %let value&i=%SYSFUNC(SCAN(&vars.,&i,' '));
- %end;
- %do j=1 %to &invars_num.;
- %let name&j=%SYSFUNC(SCAN(&invars.,&j,' '));
- %end;
- data &dsout.;
- set &dsin.;
- keep &keepvars. &invars;
- %do i=1 %to &i_num;
- %do j=1 %to &invars_num;
- %let k=%eval(&j+(&i-1)*&invars_num);
- &&name&j=&&value&k;
- %end;
- output;
- %end;
- run;
- %mend;