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.
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.