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

hackathon24-white-horiz.png

The 2025 SAS Hackathon Kicks Off on June 11!

Watch the live Hackathon Kickoff to get all the essential information about the SAS Hackathon—including how to join, how to participate, and expert tips for success.

YouTube LinkedIn

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