Hi Everyone,
I run a macro and would like to do proc copy whenever the count is even number.
I received error notice and am not sure how to fix it.
NOTE: %INCLUDE (level 1) ending.
ERROR: Required operator not found in expression: MOD(&GROUP,2)=0
ERROR: The macro OUTER_LOOP will stop executing.
Any help is very appreciated.
HHCFX
%MACRO OUTER_LOOP;
%DO GROUP=1 %TO &MAX_GROUP;
... Mycode
%include "C:\mysas_code.sas" /lrecl=500;
*export subsample of final file;
%if MOD(&GROUP,2)=0 %then %do;
data F2_&group; set F2; run;
proc copy in=work out=myfolder; select F2_&group;run;
%end;
%END;
%MEND;
%OUTER_LOOP; run;
a quick look tells me you need %sysfunc to invoke sas functions
like
%MACRO OUTER_LOOP;
%DO GROUP=1 %TO &MAX_GROUP;
... Mycode
%include "C:\mysas_code.sas" /lrecl=500;
*export subsample of final file;
%if %sysfunc(MOD(&GROUP,2)=0 )%then %do;
data F2_&group; set F2; run;
proc copy in=work out=myfolder; select F2_&group;run;
%end;
%END;
%MEND;
%OUTER_LOOP; run;
a quick look tells me you need %sysfunc to invoke sas functions
like
%MACRO OUTER_LOOP;
%DO GROUP=1 %TO &MAX_GROUP;
... Mycode
%include "C:\mysas_code.sas" /lrecl=500;
*export subsample of final file;
%if %sysfunc(MOD(&GROUP,2)=0 )%then %do;
data F2_&group; set F2; run;
proc copy in=work out=myfolder; select F2_&group;run;
%end;
%END;
%MEND;
%OUTER_LOOP; run;
Alternatively, you could take advantage of this combination. %IF always applies %EVAL, and %EVAL performs integer arithmetic. So you could code:
%if &group = &group / 2 * 2 %then %do;
Thanks a lot!
It works perfectly.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
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.