02-16-2018 01:27 AM
I am getting this error: Syntax error while parsing WHERE clause.
while running the below code, kindly help:
call symput ('SLP', SLP);
'proc imstat' || ' data = ' || ' LASRLIB.scans ' || ';' ||
'where ' || put(SCANDATE, date7.) || '=' || "07FEB19" || ';' ||
' run; ' ||
' deleterows / purge ;' ||
02-16-2018 04:18 AM
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.
02-16-2018 05:21 AM
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:
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?