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

I have a macro variable that is a list of variable names delimited by spaces. I want to make a new macro variable that is the count of the number of variable names in the macro list. I thought we had a macro function that would do this but I can’t seem to find it. Any general hints or a push in the right direction would be much appreciated.

1 ACCEPTED SOLUTION

Accepted Solutions
Tom
Super User Tom
Super User

With %SYSFUNC() almost any function is potentially a macro function now.

%let n=%sysfunc(countw(&list,%str( )));

View solution in original post

5 REPLIES 5
Tom
Super User Tom
Super User

With %SYSFUNC() almost any function is potentially a macro function now.

%let n=%sysfunc(countw(&list,%str( )));

Orsini
Fluorite | Level 6

Thank you, Tom.

That worked like a charm!

kaushal2040
Calcite | Level 5

Hi Tom,

%let n=%sysfunc(countw(&list,%str());

In this code,  what is the function of %str())?

Thanks !!!

Tom
Super User Tom
Super User

It tells the function which characters to consider as causing word boundaries. So %STR( ) tells to only consider a blank as the delimiter for work boundaries.

http://support.sas.com/documentation/cdl/en/lefunctionsref/67398/HTML/default/viewer.htm#p18xi2516ih...

If your computer uses ASCII characters, then the default delimiters are as follows:

blank ! $ % & ( ) * + , - . / ; < ^ |

kaushal2040
Calcite | Level 5

Thanks, Tom.

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