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.
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.