Как использовать Cat в макросе proc sql?

#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);