Я создал макрос SAS, макрос A, который принимает имя переменной и возвращает преобразованные версии этого имени, то есть если вы запустите %A(asdf)
, вы выйдете asdf_log asdf_exp asdf_10
. Я хочу написать еще один макрос, макрос B, который выводит результат из первого макроса и присоединяет его вместе к новой макропеременной.Создайте макрос SAS для создания макрокоманды
%macro B(varList, outputName);
%let &outputName =
%A(var1);
%A(var2);
;
%mend
Это почти то, что я хочу сделать, за исключением того, что он явно не компилируется. Я также не уверен, что это возможно в SAS. В качестве дополнительного осложнения вход макроса B представляет собой список переменных, которые я хочу запустить для макроса A и добавить в один длинный список имен переменных.
Почему? Потому что у меня есть макрос, который выполняется в списке переменных, и я хочу запустить его в списке преобразованных переменных.
Пример: У меня есть %let varList = x y;
, и я хочу как выход x_log x_exp x_10 y_log y_exp y_10
. Для этого я хочу два макроса один макрос A, который возвращает преобразованные имена переменных:
%macro A(var);
&var._log
&var._exp
&var._10
%mend
Я не могу получить второй макрос (B, как написано выше), чтобы работать должным образом.
Можете ли вы опубликовать некоторые примеры значений? Сначала краснеть, похоже, у вас слишком много полуколонок. – Tom
Привет, Том, да, это не сработает из-за странного размещения полуколоней. Завтра я дам более подробный пример. Но я хочу, чтобы & outputName содержало результаты от запуска макроса A два раза (или более раз). – Sheldon