Hi,
I'm playing on a new server, where they have EG configured to use rsubmits (basically rsubmit and endrsubmit are inserted as precode and postcode).
I noticed that if I submit:
%macro doit(x=1);
%put x=&x;
%mend doit;
%doit()
everything breaks. Note there is no trailing semicolon on the macro call. After EG adds the wrapper, in effect I am submitting:
rsubmit;
%macro doit(x=1);
%put x=&x;
%mend doit;
%doit()
endrsubmit;
It looks to me like in that case, SAS is not seeing the endrsubmit statement. If I add a semicolon after %doit(), or even a /* */ comment, SAS will see the endrsubmit and everything works fine.
Have other people seen this behavior from SAS/Connect on EG? Or PC SAS? Curious if this is somehow an EG problem, or (more likely) a word scanner / tokenizer problem.
You might be able to fix by adding the "quote killer" line at the start of your post-code option:
;*';*";*/;quit;
You might be able to fix by adding the "quote killer" line at the start of your post-code option:
;*';*";*/;quit;
Thanks Chris. Yes, just changing the post code from endrsubmit; to ;endrsubmit; fixed the problem.
Mostly was just curious if this same problem would happen with PC/SAS (in which case it's really the tokenizer or something like that that is having the problem), or if it is an EG-only problem. My guess is it would happen in PC/SAS too, but I don't have SAS/CONNECT on my PC SAS so can't test it.
As a side note, there have been times I thought it would be nice if there was a way to turn off EG's generation of the quote killer. I've had a few times when I had an unmatched quote, but because EG always adds the quote killer, it took me a minute or two longer than usual to figure out what was going on. But that's a minor point. I can see the agument for always forcing the quote killer; I'm sure it cut down the number of calls to tech support with complaint "my SAS session is hung and I don't know why.
(Left off the closing quote there, get it? : )
--Q.
@Quentin - as you guess, bad things happen when you leave an open comment or quote when you submit a job to SAS. The quote killer line is insurance that prevents many more problems than it causes...
Oh, and you wondered if the behavior is unique to EG -- I doubt that it is. I suspect if you sent the same code sequence in PC SAS you would have the same behavior in the CONNECT session.
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!
Check out this tutorial series to learn how to build your own steps in SAS Studio.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.