BookmarkSubscribeRSS Feed
EinarRoed
Pyrite | Level 9

I have a macro parameter named &input_key. It can contain values like these:

- "CASE_ID"

- "EMAIL_ID"

- "CUSTOMER_ID, BANK_ID"

 

When it contains 2 comma-separated values (like in the 3rd line above), I need to split them. Basically I want to say this in a SAS data step:

 

IF &input_key. contains "," THEN

     %let &input_key_1 = scan(&input_key, 1, ",");

     %let &input_key_2 = scan(&input_key, 2, ",");

ELSE &input_key.;

 

Can someone please assist in how to properly write this code?

2 REPLIES 2
user24feb
Barite | Level 11

Try:

%Let input_key = CUSTOMER_ID, BANK_ID;
Data _NULL_;
  Do i = 1 To Count("&input_key", ",") +1;
    Call SymputX(CatS("input_key_", Put(i, Best.)), Scan("&input_key", i, ","));
  End;
Run;
%Put **&input_key_1.**&input_key_2.**;
RW9
Diamond | Level 26 RW9
Diamond | Level 26

This shows an example:

%let input_key=CUSTOMER_ID, BANK_ID;

%put %scan(%quote(&input_key.),1,%str(,));
%put %scan(%quote(&input_key.),2,%str(,));

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

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