You can use the %SYMDEL statement or the CALL SYMDEL routine to delete SAS macro variables.
%SYMDEL and CALL SYMDEL is a data step call routine that deletes macro variables from the global symbol table.
How to Delete a single macro variable?
To delete a macro variable, you can use both methods – %SYMDEL and CALL SYMDEL.
SAS symdel example
To delete a macro variable using the CALL SYMDEL, use the macro variable name within quotes in the Call routine.
CALL SYMDEL(macro-variable<, option>);
%let mvar = xyz; data _null_; call symdel('mvar'); run;
Note that CALL SYMDEL issues a warning when an attempt is made to delete a non-existent macro variable. To suppress this message, use the NOWARN option.
Delete a macro variable with the %SYMDEL Macro Statement
The %SYMDEL routine deletes the specified variable from the macro global symbol table.
%SYMDEL variable-name ;
%SYMDEL statement warns when an attempt is made to delete a non-existent macro variable. To suppress this warning in the log, you can use the NOWARN option.
%symdel variable-name / nowarn;
%let mname = ABC; %put &mname; %symdel mname; %put &mname
Delete All Macro Variables
For example, assume you want to remove all macro variables from SAS. This may seem to be a viable solution.
This, unfortunately, is not going to work out. As a result, you’ll require a macro function to remove all macro variables.
%macro delvars; data vars; set sashelp.vmacro; run; data _null_; set vars; temp=lag(name); if scope='GLOBAL' and substr(name,1,3) ne 'SYS' and temp ne name then call execute('%symdel '||trim(left(name))||';'); run; %mend delvars; %delvars
In a DATA step, the SET statement refers to the data set Vars, which has the names of the macro variables.
The LAG function gets the previous value of the name and puts it into a data set variable called Temp.
Long macro variables will cover more than one observation in the view. This method is used to make sure that the values are unique.
Use an IF statement to make sure the following occurs:
- The scope of the macro variable is GLOBAL
- The first three characters do not start with SYS because SAS only uses macro variables that start with SYS.
- Temp is not the same as the last value.
If all three of these conditions are met, use the CALL EXECUTE routine to build the %SYMDEL statement with the name of the macro variable to be deleted. End the DATA step with a RUN statement. Invoke the macro.
So, this is the way you can delete macro variables in SAS. We hope that you must have found it useful.
Moreover, if you have other suggestions regarding tips or tricks, suggest them below in the comment section. We will take those lists in our further blog post.
Thanks for reading!
Do you have any tips to add Let us know in the comments.