DATA Step, Macro, Functions and more

Varying Parameters

Reply
Super Contributor
Posts: 673

Varying Parameters

sgrp1 and sgrp2 can both have parameter values or there could be only one value passed.
in the below code there values for both sgrp1 and sgrp2.
so the dataset to be created is stage4046.

if there is value for sgrp1 and no value for sgrp2.
say sgrp1 is 5.the where condition will fail due to syntax errors.

is there a way to automate this,no matter how many values we pass?

%macro stage(sgrp1=,sgrp2=)
data stage&sgrp1.&sgrp2.;
set Clsindx(where=(slsgrp in (&sgrp1,&sgrp2)));
run;
%mend clsstage;
%clsstage(sgrp1=40,sgrp2=46);
Respected Advisor
Posts: 3,799

Re: Varying Parameters

IN operator will accept blank delimited lists.
Super Contributor
Posts: 345

Re: Varying Parameters

Maybe this helps:

[pre]
%macro filter(ages=);
%local datasetPostfix;
%let datasetPostfix = %sysfunc(compress(&ages, %str( )));
data work.Class&datasetPostfix;
set sashelp.class;
where age in (&ages);
run;
%mend;

%filter(ages=13 15);[/pre]

Works as long as you pass at least one value.
Ask a Question
Discussion stats
  • 2 replies
  • 116 views
  • 0 likes
  • 3 in conversation