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.
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.