SAS Programming

DATA Step, Macro, Functions and more
BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
hhchenfx
Rhodochrosite | Level 12

Hi,

I have a dataset with var1 var2 ...var100.

I want to code the below macro idea:

%macro test(x=);

Data have;

if var_&x = 3 OR var_&(X-1)=3 OR var_&(x-4)=3 then find=1;

run;

%mend;

so if X=10, the code will check var10, var9 and var6 value.

Yes, I can make it %macro test( x=, y=, z=) .

But I wonder if we can do anything similar this idea.

Thank you,

HHC

1 ACCEPTED SOLUTION

Accepted Solutions
stat_sas
Ammonite | Level 13

%macro test(x=);

Data have;

var_10=3;var_9=3;var_6=3;

if var_&x = 3 OR var_%eval(&X-1)=3 OR var_%eval(&x-4)=3 then find=1;

run;

%mend;

%test(x=10)

View solution in original post

2 REPLIES 2
stat_sas
Ammonite | Level 13

%macro test(x=);

Data have;

var_10=3;var_9=3;var_6=3;

if var_&x = 3 OR var_%eval(&X-1)=3 OR var_%eval(&x-4)=3 then find=1;

run;

%mend;

%test(x=10)

Reeza
Super User

Use an array.

%let x=10;

data have;

array var(100) var1-var100;

if var(&x)=3 or var(&x-1)=3 or var(&x-4)=3 then find=1;

run;

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

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
  • 2 replies
  • 641 views
  • 3 likes
  • 3 in conversation