Hey guys,
I'm unable to understand the reason behind this error and how do I solve it?
Here is the code:
%let a= %str(abc|abc);
%let sep= %str();
%let b= %;
%let c= %sysfunc(CATX(&sep.,&b.,&a.,&b.));
%put &c.;
My goal is to take an input in variable 'a' (say abc|abc) and give an output such a way that it looks like '%abc|abc%'
%let a = %str(abc|abc);
%let c = %nrstr(%%)&a%nrstr(%%);
%put &=c;
Why %nrstr(%%)? The %NRSTR() function masks the meaning of the % sign, otherwise SAS thinks the % sign is invoking a macro. Why two %% inside the %NRSTR() function? Two percent signs are treated as one, as in the example in the documentation
There's never a need to use CATX (or CAT) to concatenate macro variables. Just stick them together as above.
%let a = %str(abc|abc);
%let c = %nrstr(%%)&a%nrstr(%%);
%put &=c;
Why %nrstr(%%)? The %NRSTR() function masks the meaning of the % sign, otherwise SAS thinks the % sign is invoking a macro. Why two %% inside the %NRSTR() function? Two percent signs are treated as one, as in the example in the documentation
There's never a need to use CATX (or CAT) to concatenate macro variables. Just stick them together as above.
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.
Ready to level-up your skills? Choose your own adventure.