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.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.