With SAS 9.4M5 I can now submit %IF statement in open code.
When did this become valid? I cannot find a reference any where.
Note that it requires that you use a %DO/%END block as the statement to run in the %THEN or %ELSE clause.
74 * test macro if in open code; 75 %if (1=1) %then %do; 76 proc print data=sashelp.class; run; NOTE: There were 19 observations read from the data set SASHELP.CLASS. NOTE: PROCEDURE PRINT used (Total process time): real time 0.05 seconds cpu time 0.05 seconds 77 %end; 78 %else %do; %put False; %end; 79 80 * test macro do in open code ; 81 %do i=1 %to 3 ; ERROR: The %DO statement is not valid in open code. 82 %put &=i ; WARNING: Apparent symbolic reference I not resolved. i 83 %end; ERROR: The %END statement is not valid in open code.
Not working in SAS 9.4 TS1M2
But an exciting find nonetheless.
Not working in SAS 9.4 TS1M4
not working for SAS9.4M4 😕
is working in SAS9.4M5 (y)
Quite obviously something new with 9.4M5. Checked it here on AIX.
Good find!
Blog post here:
Thanks to @Tom for the nudge.
I would have expected to see such an important change in the "What's new in SAS 9.4" guide. As of now, I couldn't find it there.
@Kurt_Bremser wrote:
I would have expected to see such an important change in the "What's new in SAS 9.4" guide. As of now, I couldn't find it there.
I agree. The fact that many experts in this thread were not aware of this change is surprising, in the sense that SAS did not publicize this as much as I think they should have.
What's next? IML language allowed in a data step? SQL language allowed in PROC GLM? Lights at Wrigley Field?
I would expect iterative %DO in open code.
Does the same work in SAS Enterprise Guide version 7.1?
@Monk wrote:
Does the same work in SAS Enterprise Guide version 7.1?
It depends on what version of SAS your session is using. I am not sure if there is menu item in EG to find out, but you could just ask SAS to tell you by checking the SYSVLONG automatic macro variable.
744 %put &sysvlong; 9.04.01M5P091317
In EG, right-click on the opened server in the server list, select Properties, then Software.
@Monk wrote:
Does the same work in SAS Enterprise Guide version 7.1?
The EG version does not matter. You need SAS 9.4M5 in the backend.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.