Desktop productivity for business analysts and programmers

Syntax error trying to call a macro with parameter

Accepted Solution Solved
Reply
Contributor
Posts: 35
Accepted Solution

Syntax error trying to call a macro with parameter

[ Edited ]

Folks,

 

I'm getting the following error 180-322 when I'm running this Macro. From reading online it appears the most logical reason is that I'm missing a semi colon. however, from looking at my code I can't seem to see what the error is.

 

So I'm creating a new dataset which stacks two datasets on top of each other and then aggregates two variables to create a new variable. 

 

It appears to do it, but I get this every year. 

 

Any help would be most welcome.

 

%macro survey;
%do year = 2011 %to 2015;
data combine_&year.;
set mywork.combined_sample_&year._5 survey18plus_&year.;
totalincome=sum(of nat_totinc_admin_personal,indoincome);
Dispinc=sum(of nat_dispinc_admin_personal,indodisp);
run;

%end;


%mend;
%survey (2011);
%survey (2012);
%survey (2013);
%survey (2014);
%survey (2015);
36         %survey (2014);
                   _
                   180
ERROR 180-322: Statement is not valid or it is used out of proper order.

 


Accepted Solutions
Solution
a month ago
Respected Advisor
Posts: 5,005

Re: Error message ERROR 180-322: Statement is not valid or it is used out of proper order.

The macro is built to process all 5 years.  Just call it once and stop trying to tell the macro what year to use:

 

%survey

View solution in original post


All Replies
Solution
a month ago
Respected Advisor
Posts: 5,005

Re: Error message ERROR 180-322: Statement is not valid or it is used out of proper order.

The macro is built to process all 5 years.  Just call it once and stop trying to tell the macro what year to use:

 

%survey

Esteemed Advisor
Esteemed Advisor
Posts: 7,253

Re: Error message ERROR 180-322: Statement is not valid or it is used out of proper order.

Compare the macro signature:

%macro survey;

With the way you are calling it:

%survey (2011);

 There is a difference.

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 188 views
  • 0 likes
  • 3 in conversation