У меня есть 2 набора данных в библиотеке aa & bb соответственно. Мой код сначала проверяет наборы данных в библиотеке, если они имеют в них определенные переменные столбца. Если наборы данных имеют конкретные переменные, они добавляются. Но когда я запускаю свой макрос, он не проверяет наборы данных в библиотеке & добавляет свои значения в test1 & test2, как и следовало ожидать, он не выполняет намеченную функцию проверки набора данных, если у них есть переменные в них, и возвращает error символическая ссылка для & ds & Список не найден & также показывает синтаксическую ошибку на & ds и &.Поиск в библиотеке для добавления наборов данных с определенной переменной
может вам предложить какие-либо изменения ...
ниже мой код ..
%macro CHK(lib1=,lib2=,varlist=);
%local
list
ds
;
proc sql noprint;
select distinct catx(".",libname,memname) into :list separated by " "
from dictionary.columns
where libname = %upcase ("&lib1") and %upcase(name) in("&varlist") ;
quit;
%put &list;
data test1;
set &list;
run;
proc sql noprint;
select distinct catx(".",libname,memname) into :ds separated by " "
from dictionary.columns
where libname = %upcase ("&lib2") and %upcase(name) in("&varlist") ;
quit;
%put &ds;
data test2;
set &ds;
run;
%mend CHK;
%CHK(lib1=aa,lib2=bb,varlist=%str('nam', 'DD', 'ht'));
измените ваш вопрос, чтобы включить ожидаемый результат от пример, который вы опубликовали, и код, который вы попробовали. – Quentin
Вы отредактировали вопрос настолько, что я думаю, что это действительно новый вопрос. И я не понимаю вопроса. Предложите восстановить предыдущую версию, а затем добавить новый вопрос. – Quentin
Опять же, это другой вопрос, который вы задали первоначально. Это должен быть новый вопрос. Вы должны восстановить исходный вопрос, на который я ответил, и задать новый вопрос. Тем не менее, попробуйте изменить инструкцию WHERE на: 'где libname =% upcase (" & lib1 ") и upcase (name) in (% upcase (& varlist));' – Quentin