I think I'm confused. Let me see if I understand this correctly.
1) SAS Institute hasn't said whether there will be a SAS 9.5, but suppose there isn't. Traditional SAS 9.4 will go out of support in 2026, and the only fully-supported product will be SAS Viya.
2) In Viya, there are at least 2 different ways to run a data step:
a) In the "SAS Client". This is the same old data step we know and love, with the same statements and formats and functions available, including the data set and file information functions and CALL EXECUTE.
b) In a CAS server session
i) Single threaded
ii) Multi-threaded on a single machine
iii) Multi-threaded, distributed across multiple machines
These three CAS modes have the same syntax and will produce the same output (except maybe when the output depends on data order, such as with the LAG function or BY groups).
Some language elements that work in a SAS client session will not work in a CAS session, but all of the functions and formats that work in a CAS session will work in a client SAS session. I didn't see any functions marked as CAS-only.
The LAG function is allowed in a single-threaded CAS step and will produce the same results as in a traditional data step. I don't know what will happen if you try to use the LAG function in a multi-threaded CAS data step.
BY groups require special consideration when used in a CAS session, but they can be used.
I don't know what happens with hash objects, which can but don't necessarily depend on order.
3) Those restrictions mean that simple data steps with no order-dependent functions will run unchanged in the traditional data step, the Viya SAS data step, and the Viya CAS data step. Hurrah!
Some more complicated data steps will run with in any mode with only slight changes, and some will run only in the traditional or VIYA SAS data step and would have to be rethought in order to run in a CAS data step.
Writing this down and reviewing the documentation, I see the cause of my confusion. There are several different kinds of data steps, but the documentation and PR materials don't always do a good job of making it clear what works where.
Hence statements like "These functions/statements/procedures don't work in Viya" are worrisome, but often not true. It would be better to say "These functions work unchanged between the traditional data step and the Viya SAS client data step, but require code changes, which might be minor, to run in CAS data steps".
There's also the DS2 data step. They're a whole league of different from both traditional data steps and CAS data steps.
... View more