Using COUNTW function on macro variables

Accepted Solution Solved
Reply
Contributor
Posts: 22
Accepted Solution

Using COUNTW function on macro variables

I'm hoping for some help in understanding the results I'm getting in the following code.

%let test =;

%put test has a word count of %sysfunc(countw(test));

In the case of an empty macro variable, countw returns a value of 1. I'd like the result to be 0 in this case, which seems like it should be the result, but I'm clearly missing something in the documentation. Is there a way to have this return 0 by using some combination of optional arguments? If so, what would that be?

Thanks.


Accepted Solutions
Solution
‎04-24-2015 05:01 PM
Super User
Super User
Posts: 6,330

Re: Using COUNTW function on macro variables

It is problem with the way that %SYSFUNC() parses and passes the arguments to the function.

You could either test first or just append a space (or whatever you delimiter is) to the end of the argument.

%put %sysfunc(countw(&test%str( )));

View solution in original post


All Replies
Trusted Advisor
Posts: 1,496

Re: Using COUNTW function on macro variables

I think you might want to use

%put test has a word count of %sysfunc(countw(&test));

And furthermore, you might want to perform a test of &test to make sure it isn't an empty string, which it is in your example. If its an empty string, you can return a value of 0 and branch around the actual use of countw

Contributor
Posts: 22

Re: Using COUNTW function on macro variables

My apologies. Leaving out the ampersand was a typo.

I'm actually trying to have countw return 0 when the string is empty. It seems like that should be the result.

Solution
‎04-24-2015 05:01 PM
Super User
Super User
Posts: 6,330

Re: Using COUNTW function on macro variables

It is problem with the way that %SYSFUNC() parses and passes the arguments to the function.

You could either test first or just append a space (or whatever you delimiter is) to the end of the argument.

%put %sysfunc(countw(&test%str( )));

Contributor
Posts: 22

Re: Using COUNTW function on macro variables

Thank you Tom.

Grand Advisor
Posts: 9,576

Re: Using COUNTW function on macro variables

That is weird. I got ERROR info running your code .

%let test =;

%put test has a word count of %sysfunc(countw(%bquote(&test)));

test has a word count of 0

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 5 replies
  • 3055 views
  • 5 likes
  • 4 in conversation