我在庫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