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?
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.**;
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(,));
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.
Ready to level-up your skills? Choose your own adventure.