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.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.