Sorry, I did not mean to imply that the issue came with IntrNet.
In fact, we've always taught the use of () in our macro class for the reason you state.
However, in Education classes, we first explicitly showed using a semi-colon as a closing token when we wrote the first SAS/IntrNet class. And, the stored process doc explicitly mentions the need to use a closing ; for %STPBEGIN/%STPEND
here in the doc:
http://support.sas.com/rnd/itech/doc9/dev_guide/stprocess/stpmacro.html
where it says:
"Note: You must include a semicolon at the end of the %STPBEGIN and %STPEND macro calls."
So even though I agree with your understanding of how macro invocation works/should work, the closing semicolon is documented explicitly for %STPBEGIN/%STPEND.
cynthia