SASのマクロ変数を一括削除する方法
sashelp.VMACROにマクロ変数の名前や中身が入っている
名前を取ってきて、symdelで削除する
%* VMACROからグローバルマクロ変数の名前を取得 *;
%* sys…のとか消せない(SQL使ってなければ出てこないかも) *;
%* 200超えてたりするとレコードまたぐため、nodupkey *;
proc Sort data = sashelp.VMACRO( keep = SCOPE NAME ) out = work.VMACRO nodupkey;
by NAME;
where SCOPE =: "G" and NAME ^=: "SYS";
run;
%* 他に消したくないマクロ変数あるなら、NAMEのとこ増やす *;
data _null_;
set work.VMACRO( keep = NAME );
call execute( '%symdel '|| cats( NAME ) || ';' );
run;
%* データセット不要なら *;
proc Delete lib = work data = VMACRO;
run;
余談
call symdelでも消せる
%sysmacdelete マクロ;でマクロを削除
dictionary.MACROSからもマクロ変数名を取得できる
proc Sql;
create table work.VMACRO as
select distinct NAME
from dictionary.MACROS
where SCOPE like 'G%' and ^( NAME like 'SYS%' );
quit;
data _null_;
set work.VMACRO;
call symdel( NAME );
run;
https://support.sas.com/documentation/cdl_alternate/ja/mcrolref/67912/HTML/default/p1vtk6flp9vpfzn14kkxolcnggzy.htm
https://support.sas.com/documentation/cdl_alternate/ja/mcrolref/67912/HTML/default/n1mihelxhd39lgn1qvl44z89otpw.htm