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

May somebody help me with SAS syntax. 

 
I would like to create a list
 
%let listVars = a1|a2|a3|a4|a5;
 
OR a dataset
 
dataset myListVars;
input item $32.;
dataline;
a1
a2
a3
a4
a5
;
 
How can I do it without listing ALL names. Is it possible to do something like: 
 
%let listVars = a1 – a5;
 
OR 
dataset myListVars;
input item $32.;
dataline;
a1 - a5
;
 
Thank you
 
Julia
1 ACCEPTED SOLUTION

Accepted Solutions
FreelanceReinh
Jade | Level 19

Once you have the dataset, creating the macro variable is easy, too:

data myListVars;
length item $32;
do _n_=1 to 5;
  item=cats('a',_n_);
  output;
end;
run;

proc sql noprint;
select *
into :listvars separated by '|'
from myListVars;
quit;

View solution in original post

6 REPLIES 6
Reeza
Super User

What are you planning to use this for down the line?

 

You could use a loop, but there's probably better ways to do whatever you're trying to do is my guess.

data want;
     do i=1 to 99;
          Item=catt("A", put(i, z2.));
          output;
     end;
run;

 

DanZ
Obsidian | Level 7

Are you trying to put a list of variable names from a table that already exists into a macro variable? Or, are you trying to create a table with a list of variable names?

FreelanceReinh
Jade | Level 19

Once you have the dataset, creating the macro variable is easy, too:

data myListVars;
length item $32;
do _n_=1 to 5;
  item=cats('a',_n_);
  output;
end;
run;

proc sql noprint;
select *
into :listvars separated by '|'
from myListVars;
quit;
braverju
Obsidian | Level 7

Thank you very much. This is exactly what I need. I just didn't know the first part. 

FreelanceReinh
Jade | Level 19

You're welcome. But if you only need the macro variable, you can get it even more easily:

data _null_;
array x[5] (1:5);
call symputx('listvars', 'a'||catx('|a', of x:));
run;

 

braverju
Obsidian | Level 7

Thank you! Even better!

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
  • 6 replies
  • 1956 views
  • 3 likes
  • 4 in conversation