BookmarkSubscribeRSS Feed
Obsidian | Level 7

I am getting this error: Syntax error while parsing WHERE clause.

while running the below code, kindly help:

%macro abc;

data null;
set newdata;
%Do %until(100);
call symput ('SLP', SLP);
call execute
'proc imstat' || ' data = ' || ' LASRLIB.scans ' || ';' ||
'where ' || put(SCANDATE, date7.) || '=' || "07FEB19" || ';' ||
' run; ' ||
' deleterows / purge ;' ||
' run;'


Diamond | Level 26 RW9
Diamond | Level 26

Well, your problem lies in:

put(SCANDATE, date7.) = 

When scandate is put into text, there will be a numeric as first character, this is not valid in SAS.  Maybe you mean:

'where "' || put(SCANDATE, date7.) || '"=' || "07FEB19" || ';' ||


Although I really don't see why you have that code at all, there really is a better way than creating SLP macro variable and generating the proc imstat code 100 times - which is all that code is doing, there is nothing changing in the code as far as I can see any of the 100 iterations.  So does not make sense in any way.



As a secondary issue, there is nothing about this %DO loop that causes it to execute 100 times.  It executes once per observation in NEWDATA.  


It's difficult to determine what you intended here by adding the %DO loop.  Perhaps:


set newdata (obs=100);


Finally, note the possibility to simplify by combining a few character strings:


'="07FEB19"; run;'


In fact, your intention may have been to combine more than that:


'proc imstat data=LASRLIB.scans; where put(SCANDATE, date7.)="07FEB19"; run;'


Some issues are not clear ... where did you intend to use &SLP?  Where does SCANDATE come from?


Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.


Register now!

Tips for filtering data sources in SAS Visual Analytics

See how to use one filter for multiple data sources by mapping your data from SAS’ Alexandria McCall.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 2 replies
  • 3 in conversation