BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
hhchenfx
Rhodochrosite | Level 12

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;
1 ACCEPTED SOLUTION

Accepted Solutions
novinosrin
Tourmaline | Level 20

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;

 

View solution in original post

3 REPLIES 3
novinosrin
Tourmaline | Level 20

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;

 

Astounding
PROC Star

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;

hhchenfx
Rhodochrosite | Level 12

Thanks a lot!

It works perfectly.

 

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 5131 views
  • 3 likes
  • 3 in conversation