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.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.
Ready to level-up your skills? Choose your own adventure.