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?
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.
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.
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.