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

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.

1 ACCEPTED SOLUTION

Accepted Solutions
Tom
Super User Tom
Super User

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

5 REPLIES 5
PaigeMiller
Diamond | Level 26

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

--
Paige Miller
emikea
Calcite | Level 5

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.

Tom
Super User Tom
Super User

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( )));

emikea
Calcite | Level 5

Thank you Tom.

Ksharp
Super User

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

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
  • 18571 views
  • 6 likes
  • 4 in conversation