01-27-2016 08:18 AM
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
01-27-2016 08:47 AM - edited 01-27-2016 08:47 AM
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.