SAS can confuse itself when you are trying to build one SAS "word" from multiple macro variables into thinking you have two words , or tokens, especially when you do it inside of a macro.
Using the quoted physical names will help since the quoted string is passed by the macro processor onto SAS after all of the macro triggers are resolved.
Otherwise I find that it just helps to build up complex dataset names, like in your example, into a new macro variable and then use that.
For example you might want to introduce a %DO loop to generate the year by year dataset names.
%macro xxx ....
%local year memname ;
...
SET
%do year = 2009 %to 2011 ;
%let memname=&cncr._&file.clm_dx&year. ;
in1.&memname
%end;
;
...
%mend;
... View more