BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
brophymj
Quartz | Level 8


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?

1 ACCEPTED SOLUTION

Accepted Solutions
Quentin
Super User

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.

The Boston Area SAS Users Group is hosting free webinars!
Next up: Joe Madden & Joseph Henry present Putting Power into the Hands of the Programmer with SAS Viya Workbench on Wednesday Nov 6.
Register now at https://www.basug.org/events.

View solution in original post

1 REPLY 1
Quentin
Super User

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.

The Boston Area SAS Users Group is hosting free webinars!
Next up: Joe Madden & Joseph Henry present Putting Power into the Hands of the Programmer with SAS Viya Workbench on Wednesday Nov 6.
Register now at https://www.basug.org/events.

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

What is Bayesian Analysis?

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

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