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.
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( )));
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
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.
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( )));
Thank you Tom.
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
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.