[Отредактировано: некоторые c оды или строки кода, отмеченные *, как ОП не требует его]
Используйте proc sql
словарь, чтобы получить имя переменной, содержащейся в вашем datase с использованием Memname
и libname
спецификации.
Использовать data step
для получения переменных в переменной marco. Имя переменных хранится под именем столбца name
, поэтому мы должны указать его как call symputx('variable ' !! left(_n_), **name**);
. Функция макропеременной Total
заключается в том, чтобы указать количество переменных, существовавших в вашем наборе данных.
Теперь вы бы variable1 = а, variable2 = б ....
%macro definevar (library, dataset);
proc sql;
create table Attribute as
select * from dictionary.columns;
where memname = upcase(&dataset) and libname = upcase(&library);
quit;
data letmacro;
set Attribute end=end;
call symputx('variable ' !! left(_n_), name);
* if end then call symputx (Total, _n_);
run;
/*
***** extra ********
data _null_;
set &dataset ;
%do i=1 to &total;
call symputx ("var&i" !! left(_n_), &&variable&i);
%end;
run;
***** extra ********
*/
%mend definevar;
%definevar(ifanylibrary, parm2)
И я с нетерпением жду, чтобы узнать ЗВОНИТЕ решение VNEXT по @Reeza
Посмотрите на звонок vnext. Когда у меня будет время позже, я отправлю решение, если кто-то еще этого не сделал. – Reeza
Привет @Reeza, мне нужно использовать do loop? и поля имеют различный тип данных – useR