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

hello,

I created a macro variable  in this way:

 

proc sql;
select NAME
into :totale separated by ' '
from contenst;
quit;

 

The log of '%put &totale;' is:

 

LDL PAD PAS age altezza birth_date bmi

 

This is the window that I wrote:

 

%window info

#5 @5 'these are the variable of your dataset:'
#8 @5 "&totale"
#5 @60 'enter the variable you want to keep'
#7 @60 'names:' +1 newtot 600 attr=underline display=yes;
%display info;

 

With this program I see 'LDL PAD PAS age altezza birth_date bmi' in a row, but I would like to display them in a column, in this way:

 

these are the variable of your dataset:

LDL

PAD

PAS

age 

...

 

how can I do?

 

1 ACCEPTED SOLUTION

Accepted Solutions
Astounding
PROC Star

I agree 1000% that you need a set of macro variables instead of 1.  However, I would change the interaction and requirements to make life easier for the user and to eliminate spelling mistakes.  For example:

%window info                                                                                                                            
                                                                                                                                        
#5 @5 'these are the variable of your dataset:'                                                                                         
#8 @5 keep1 1  attr=underline display=yes @8 "&totale1"                                                                                                                        
 / @5 keep2 1  attr=underline display=yes @8 "&totale2" 

/ @5 keep3 1 attr=underline display=yes @8 "&totale3"
/ @......
#5 @60 'Put a "K" before each variable that you want to keep' ;

 

Do you know how to get separate macro variables instead of one long one?

View solution in original post

5 REPLIES 5
SuryaKiran
Meteorite | Level 14

Forward slash will write to next line, but you need to define separate macros to put them in separate lines

 

                                                                                                                                        
%let totale1=LDL;                                                                                                                       
%let totale2=PAD;                                                                                                                       
%let totale3=PAS;                                                                                                                       
%let totale4=age;                                                                                                                       
%let totale5=altezza;                                                                                                                   
%let totale6=birth_date;                                                                                                                
%let totale7=bmi;                                                                                                                       
                                                                                                                                        
%window info                                                                                                                            
                                                                                                                                        
#5 @5 'these are the variable of your dataset:'                                                                                         
#8 @5 "&totale1"                                                                                                                        
 / @5 "&totale2"                                                                                                                        
 / @5 "&totale3"                                                                                                                        
 / @5 "&totale4"                                                                                                                        
 / @5 "&totale5"                                                                                                                        
 / @5 "&totale6"                                                                                                                        
 / @5 "&totale7"                                                                                                                        
#5 @60 'enter the variable you want to keep'                                                                                            
#7 @60 'names:' +1 newtot 600 attr=underline display=yes;                                                                               
%display info;
Thanks,
Suryakiran
Astounding
PROC Star

I agree 1000% that you need a set of macro variables instead of 1.  However, I would change the interaction and requirements to make life easier for the user and to eliminate spelling mistakes.  For example:

%window info                                                                                                                            
                                                                                                                                        
#5 @5 'these are the variable of your dataset:'                                                                                         
#8 @5 keep1 1  attr=underline display=yes @8 "&totale1"                                                                                                                        
 / @5 keep2 1  attr=underline display=yes @8 "&totale2" 

/ @5 keep3 1 attr=underline display=yes @8 "&totale3"
/ @......
#5 @60 'Put a "K" before each variable that you want to keep' ;

 

Do you know how to get separate macro variables instead of one long one?

leti_ors96
Calcite | Level 5

I don't know how to create one macro variable for each name. I have a dataset and I have to create for each variable of the dataset a macro variable. How can I do?

Astounding
PROC Star

Similar to what you did in the first place, to create a separate macro variable holding each variable's name:

 

proc sql;

select name into : totale1 - : totale99 from contents;

quit;

 

My recollection (can't test it right now) is that this creates only as many macro variables as needed.  I'm assuming that 99 variables is more than enough, since you won't be able to display that many in a single window.

 

I'm also concerned that you won't be able to use the results later, since it may require additional skills with macro language.  But you will have to be the judge of that.

leti_ors96
Calcite | Level 5
Your recollection works. Now I have to understand how to display all the macro variables in the window.

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 5 replies
  • 1325 views
  • 0 likes
  • 3 in conversation