If the macro is not creating and deleting librefs you can create a mothering wrapper macro for dispatch of said macro.
"Mama's gonna keep baby cosy and warm" - Pink Floyd
Example:
%macro mother (invoke);
%local time0 time1;
%put NOTE: Mothering %superq(invoke);
%let time0 = %sysfunc(datetime());
%unquote(&invoke)
%let time1 = %sysfunc(datetime());
data _null_;
call execute ('proc sql;');
do until (last_created);
set sashelp.vtable end=last_created;
where memtype = 'DATA' and crdate between &time0 and &time1;
where also libname not in ('SASHELP', 'MAPS');
call execute ('drop table ' || cats(libname,'.',memname,';'));
end;
call execute ('quit;');
run;
%mend;
%macro xyzzy ( out=, out2= );
data &out &out2;
z=1;
run;
%mend;
%mother (%nrstr( %xyzzy( out=work.foo, out2=work.snafu ) ));