I am passing a variable to a macro that will be used as a SQL LIKE predicate, so it can contain the % character, but I can't seem to get the macro to bypass the resolution attempt. At best this is a warning message, but if the data actually matches a macro name, it will be an error. The variable contains a list of character values, separated by spaces, one or more of which could contain a %. I first convert the % to an asterisks in an attempt to get around the macro resolution problem: P*TZ P*T1 The above value needs to be converted to 2 SQL LIKE predicates: and (cics like "P%TZ" or cics like "P%T1") The variable name is ACICS. Since I convert the % to * outside of the macro, I now have to convert it back to % in the macro (I've tried not converting as well). Here's the macro code: %if %length(&acics) > 1 %then
%do;
and (
%let acics=%sysfunc(translate(&acics,%NRSTR(%_),%NRSTR(*+)));
%do i=1 %to %sysfunc(countw(%superq(acics),' '));
%if &i > 1 %then or;
CICS like "%scan(%superq(acics),&i,' ')"
%end;) %end; I get these messages with MLOGIC and SYMBOLGEN enabled showing the warnings: MLOGIC(FRITZ): %IF condition %length(&acics) > 1 is TRUE MLOGIC(FRITZ): %LET (variable name is ACICS) SYMBOLGEN: Macro variable ACICS resolves to P*TZ P*T1 WARNING: Apparent invocation of macro TZ not resolved. WARNING: Apparent invocation of macro T1 not resolved. MLOGIC(FRITZ): %DO loop beginning; index variable I; start value is 1; stop value is 2; by value is 1. SYMBOLGEN: Macro variable I resolves to 1 MLOGIC(FRITZ): %IF condition &i > 1 is FALSE SYMBOLGEN: Macro variable I resolves to 1 WARNING: Apparent invocation of macro TZ not resolved. MLOGIC(FRITZ): %DO loop index variable I is now 2; loop will iterate again. SYMBOLGEN: Macro variable I resolves to 2 MLOGIC(FRITZ): %IF condition &i > 1 is TRUE SYMBOLGEN: Macro variable I resolves to 2 WARNING: Apparent invocation of macro T1 not resolved. MLOGIC(FRITZ): %DO loop index variable I is now 3; loop will not iterate again. The generated code comes out good, but, I still get the warnings: and ( cics like "P%TZ" or cics like "P%T1") ; Does anyone have any suggestions on how to stop the macro engine from trying to resolve the macro references? Thank you SAS 9.4
... View more