Can you replace test libref and &test macro variable libref with &lib ? You have a parameter (local macro variable) "lib" which you aren't using.
options mprint;
libname test "C:\Users\pnguyen\Desktop\merge2" access=readonly;
proc contents data=test._ALL_ out=contents;
run;
/*I just change to one country for printing log purpose*/
/*******DROP BDATE**************/
%macro changedate(lib,dsname,var2del);
data _null_;
if 0 then
set &lib..&dsname.;
call symputx('bdate_type',vtype(&var2del));
stop;
run;
data work.&dsname.;
set &lib..&dsname.;
%if &bdate_type=C %then
%do;
if length(&var2del)=5 and upcase(&var2del) ne 'NA' then
SASDATE = input(&var2del,32.)+'30DEC1899'd;
else SASDATE= input(&var2del,anydtdte.);
%end;
%else
%do;
SASDATE=&var2del;
%end;
format SASDATE yymmdd10.;
if not missing(sasdate) then
fir_age = log(1+(2020-year(SASDATE)));
run;
/****macro for BDATE****************/
%mend;
data _null_;
set sashelp.vtable(where=(libname='TEST'));
cmd = catx(',', '%changedate('|| strip(libname), strip(memname), 'BDATE'||');');
put cmd=;
call execute(cmd);
put _N_= memname= ' was submitted to run';
run;
... View more