Help using Base SAS procedures

Setting which section of SAS code to run with a %LET variable

Accepted Solution Solved
Reply
Super Contributor
Posts: 259
Accepted Solution

Setting which section of SAS code to run with a %LET variable


I want to set a variable called purpose, e.g.:

%LET PURPOSE = CHANGE ; /* PURPOSE can only take the words CHANGE or PROFIT */

If it is set as CHANGE I want it to skip a bit of code and run a bit of code after it.

If it is set as PROFIT I want it to skip the last bit of code and run the code before it.

How do I do this within the same Sas Program without having it call a separate SAS program using a call function?


Accepted Solutions
Solution
‎08-06-2014 11:55 AM
PROC Star
Posts: 1,322

Re: Setting which section of SAS code to run with a %LET variable

One way to do such conditional processing  is with a macro:

%macro doit(purpose=);
  %if &purpose=CHANGE %then %do;
    *SAS code here;    
  %end;
  %else %if &purpose=PROFIT %then %do;
    *SAS code here;
  %end;
%mend doit;

Then can call the macro like:

%doit(purpose=CHANGE)

%doit(purpose=PROFIT)

Or if you like having the global macro variable to use as a switch, call like:

%doit(purpose=&purpose)

HTH,

--Q.

View solution in original post


All Replies
Solution
‎08-06-2014 11:55 AM
PROC Star
Posts: 1,322

Re: Setting which section of SAS code to run with a %LET variable

One way to do such conditional processing  is with a macro:

%macro doit(purpose=);
  %if &purpose=CHANGE %then %do;
    *SAS code here;    
  %end;
  %else %if &purpose=PROFIT %then %do;
    *SAS code here;
  %end;
%mend doit;

Then can call the macro like:

%doit(purpose=CHANGE)

%doit(purpose=PROFIT)

Or if you like having the global macro variable to use as a switch, call like:

%doit(purpose=&purpose)

HTH,

--Q.

🔒 This topic is solved and locked.

Need further help from the community? Please ask a new question.

Discussion stats
  • 1 reply
  • 165 views
  • 0 likes
  • 2 in conversation