#proc-sql
#proc-sql
Вопрос:
Я хотел бы использовать макрос с макропеременной в его имени, например, так:
%let column1 = "XYZ"n;
%let column2 = "ZXY"n;
%let column_number = 1;
proc sql; create table abc
as select amp;cats("column","amp;column_number")
where column = column_number
;quit;
Это означает, что я хотел бы использовать число при вызове переменной макроса, но также использовать его в другом месте кода. Это означает просто изменение column_number и выбор того, какую переменную макроса использовать.
Ответ №1:
Приведенный ниже код не тестировался, но он может соответствовать вашим потребностям: я сделал column_number аргументом для макроса «Test». Двойной амперсанд делает так, что при первом чтении пропускается столбец макропеременной и сначала определяется макрос column_number , поэтому при чтении столбца макропеременной это имеет смысл. Иногда кавычки вокруг column_number в конце могут быть необязательными, это зависит от вашего типа данных для column_number .
%let column1 = "XYZ"n;
%let column2 = "ZXY"n;
%macro Test (column_number);
proc sql; create table abc
as select amp;amp;column.amp;column_number
where column = "amp;column_number"
;quit;
%mend Test;
%Test (column_number=1);
%Test (column_number=2);