May I request someone to illutsrate me the following example to understand the difference between %scan and %qscan?
%macro a;
aaaaaa
%mend a;
%macro b;
bbbbbb
%mend b;
%macro c;
cccccc
%mend c;
%let x=%nrstr(%a*%b*%c);
%put X: &x;
%put The third word in X, with SCAN: %scan(&x,3,*);
%put The third word in X, with QSCAN: %qscan(&x,3,*);
The %PUT statement writes these lines to the log:
X: %a*%b*%c
The third word in X, with SCAN: cccccc
The third word in X, with QSCAN: %c
I took this example from http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#z3514scan.htm
In the example citied above, I would like to understand how does %scan and %qscan function got resolved?
If X resolves to %a*%b*%c then scan function should return %c whereas it returns cccccc. Why so? Whether my underst
The %scan() function does not prevent the evaluation of the characters & and %. Therefore macro calls and variables are resolved before the scan for words is done.
%qscan prevents macro evaluation, as it treats & and % as "normal" characters.
Therefore you get what the macros resolve to with %scan, and the unresolved macro names with %qscan.
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.