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

Can anyone help with the above error when running this small section of code below?

 

%macro start;

 

%if &i_creative. = 1 %then %do

data &tmp_filelist.;

length filename $150;

run;

%end;

%else %if &i_creative. >1 %then %do

proc append base=&tmp_filelist. data=&tmp_filelist2. force;

run;

%end;

 

%mend start;

1 ACCEPTED SOLUTION

Accepted Solutions
data_null__
Jade | Level 19

You need to add a semicolon after the word

 

%DO;

In both lines where it appears.

View solution in original post

4 REPLIES 4
Kurt_Bremser
Super User

You are missing semicolons to end the macro %do statements:

%macro start;
%if &i_creative. = 1 %then %do;
data &tmp_filelist.;
length filename $150;
run;
%end;
%else %if &i_creative. >1 %then %do;
proc append base=&tmp_filelist. data=&tmp_filelist2. force;
run;
%end;
%mend start;
data_null__
Jade | Level 19

You need to add a semicolon after the word

 

%DO;

In both lines where it appears.

kimdukes77
Obsidian | Level 7

Ah yes of course - such a schoolgirl error.

 

Curse SAS with it's misleading error messages!

Reeza
Super User

Just a note that you don't need that piece of code.

 

PROC APPEND doesn't require the base data set to preexist, so you only need the last section.

 

 

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
  • 4 replies
  • 5458 views
  • 2 likes
  • 4 in conversation