我在库aa & bb中分别有2个数据集。 我的代码首先检查库中的数据集,如果它们中有特定的列变量。如果数据集具有特定的变量,那么它们被追加。 但是,当我运行我的宏它不检查库中的数据集&在test1 & test2中附加它们的值,它不会执行检查数据集的预期功能,如果它们中有变量,并返回错误符号参考& 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语句更改为:'%upcase(&varlist)'中的where libname =%upcase(“&lib1”)和upcase(名称);' – Quentin