Versions & environments
If you work with SAS in more than one place, you are likely to find that SAS is not exactly the same everywhere you go. And even if you stay in the same place, you could log in one day to find that SAS has changed from the day before. These are the three main ways in which one SAS installation can differ from another:
History of SAS versions
SAS has been around for half a century and, like most software, has gone through a series of versions. Each new version introduces substantial changes in the software architecture of SAS in order to improve the efficiency of SAS programs and to make new things possible in SAS.
Within each version there are several releases. The purpose of a new release is usually to add new features, such as new options, procedures, and functions.
A release may be updated without adding substantial new features. This may be called a technical support level, or TS level. The technical support level mainly indicates which bugs have been fixed, and it is usually of interest only if you have encountered a specific bug that affects one of your programs.
The following history of SAS versions is meant only as a rough guide to the differences among the different versions of SAS. If you have an old SAS program and you know when it was written, this may help you determine what SAS version it was written for.
Early SAS versions were named according to their release schedules. The origins of SAS date back to the 1960s, but the first formal release came in 1972 and was called version 72. It ran only on IBM mainframe systems and included a core set of features that to this day are considered to be the most SAS-like elements of SAS, including the data step and some of the most familiar procedures.
Many more procedures were added over the next decade with an eye toward heavy-duty statistical analysis. Version 76 added the FORMAT procedure, allowing programmers to customize the way values appeared in printouts. It also added SAS dates, providing a standard way for time-based data to be included in statistical data for analysis. Version 79 added support for a second operating system, CMS. It also added the DATASETS procedure, for managing SAS datasets, and an early form of arrays, which were written without subscripts. The APPEND procedure and a preliminary sort of macro language were among the features added in version 82.
Meanwhile, there was an attempt to port SAS to other platforms, such as Unix and VMS. Not everyone had access to an IBM mainframe, so even though version 4 was far from feature-complete, it put SAS within reach of thousands of new users. Soon enough, version 5 came along as the first mostly portable version of SAS. Version 5 added many new SAS products and many programming features that programmers quickly came to depend on, such as macro language and array subscripts. Version 5 also introduced display manager, a full-screen environment in which users could interact with SAS.
Up to this point, SAS had been written in a combination of PL/I, Fortran, and assembly language, but an effort was underway to rewrite the entire thing in C so that SAS could easily be ported to other operating systems. This effort became absolutely essential with the early releases of version 6, which first appeared in 1986 almost simultaneously with version 5. Version 6 was meant to run on an IBM PC, and with no PL/I compiler available for this task, C was the obvious choice for a portable rewrite of SAS. The early releases of SAS version 6 were very limited, both because of the limited memory capacity of MS-DOS and because of the ongoing porting project, which took five years to complete.
Finally, the rewrite was complete, many new features were added, and it even compiled on the IBM mainframe platform, although SAS had to acquire their own IBM mainframe C compiler in order to make this happen. The later releases of version 6 were thoroughly portable and were used throughout the 1990s on a wide variety of platforms, even platforms as specialized as Mac, OS/2, Silicon Graphics, and Primos.
Releases 6.06, 6.07, and 6.08 more than doubled the number of features in the SAS System and introduced a much more flexible design under the name MultiVendor Architecture. For the first time, the SAS user interface was based on a windowing paradigm, rather than the older full-screen approach. Using the new SCL, you could develop window applications that would run in any environment. Engines were introduced so that your SAS datasets could be stored in various different ways depending on your requirements. For the first time, SAS supported SQL. With SAS running on various platforms, products were added to connect one platform to another within a SAS session.
Releases 6.09–6.12 added more features to let SAS integrate more easily with other software. But in the mainframe environment, version 6 development stopped with release 6.09. A few later features were added to release 6.09 to create release 6.09E for the mainframe environment.
Rebuilding SAS on more of an object-oriented framework gave programmers more latitude, especially in the sense of length. Variable names, which had previously been limited to 8 characters, could now be 32 characters long. Character values were no longer limited to 200 bytes; they could now be up to 32,767 bytes long. Another result was Output Delivery System, also known as ODS, which allowed SAS to generate web pages. These innovations first appeared in SAS 7 in 1998, but before most of us knew what had happened, SAS 7 gave way to SAS 8 in 1999. SAS 8 added more output options to ODS in each successive release, and this continued with SAS 9 in 2002. SAS 9 also added new text-handling features and significant support for XML. About half of SAS sites skipped SAS 7 and 8 entirely and jumped directly from version 6 to 9. One price of progress was a dramatic decline in the number of platforms supported, which became essentially three: servers, PCs, and mainframes.
SAS 9 has lasted longer than any previous SAS version and nearly as long as versions 5 through 8 combined. It has changed only incrementally over the years, with an increasing focus on the network environment. This started with support for what at the time was the hot new operating system, Linux. By 2010 it was clear that the Linux implementation had become the heart of SAS, with other implementations more easily understood as variations. Successive releases of SAS 9 have extended SAS’s support for network-related technologies such as Unicode, XML, and multithreading. Presentation has also been a point of emphasis with enhancements for statistical graphics and output documents. The SAS core has become more stable and solid, with the result that the releases of SAS 9 show better forward and backward compatibility than seen in previous versions.
There has been speculation about a future version of SAS, often referred to as “SAS 10,” in which the interfaces for procedures, engines, and user environments are overhauled to provide a more flexible approach to data values. SAS has not confirmed any of this and there can be no assurance that anyone could deliver such an ambitious rebuilding of a product as complex as SAS.
Many more details of SAS’s release history can be seen at Wikipedia:
SAS Viya, which shipped in a preliminary form on September 23, 2016, promises a thorough overhaul of the technological foundation of SAS — so thorough that eventually, you can forget pretty much everything you know about how SAS worked in its first 50 years.
SAS Viya promises to be cloud-enabled, meaning it will be far easier to install than the SAS of the past. It will be extensible, meaning that you can access SAS procedures by programming in an object-oriented programming language of your choice. This doesn’t quite mean the SAS language goes away, but almost. SAS has promised to support SAS 9.4 as long as customers need it, and it can used together with SAS Viya, though not necessarily very easily. It seems that SAS Viya will support some SAS language features, but it is hard to guess how many or how directly.
The component-oriented nature of SAS Viya should simplify the design of products like SAS Visual Analytics and SAS Studio, making it easier to create user interface components covering the capabilities of every modern SAS procedure.
Those are promises for the future, though. As currently presented, SAS Viya is cloud-only, not yet ready for the public to install it on their own generic hardware. It provides the features of just four procedures — Visual Investigator, which is new, and three supporting procedures.
The official product page for SAS Viya:
SAS version of SAS Learning Edition
SAS Learning Edition was a low-cost edition of SAS that had data limitations and an expiration date. It was not a separate version of SAS. SAS Learning Edition 1.0–2.0 was based on SAS 8.2. SAS Learning Edition 4.1 was based on SAS 9.1.
SAS is designed as portable software — that is, it runs pretty much the same way regardless of the operating you use with it. Still, to an extent, SAS has to adapt to the environment it is in in order to be useful. In addition, SAS adds routines and options to take advantage of specific capabilities of the operating system.
Environment-specific qualities of SAS are officially documented in these books:
- SAS Companion for Microsoft Windows (for PCs)
- SAS Companion for UNIX Environments (covers most operating systems)
- SAS Companion for z/OS (for IBM mainframe systems)
“UNIX Environments” covers Linux, AIX, Solaris, and several niche operating systems.
A few aspects of the SAS experience are not meant to be portable at all. These include the installation process and the startup process for the SAS session. After SAS is running, you’ll see SAS adapted to the file system and the look and feel of the environment it is in. These aspects of SAS are documented only in the SAS Companion books.
File system issues are especially significant for z/OS and OpenVMS Alpha. These operating systems have security architectures that prevent certain features you would ordinarily expect to find in a file system. In z/OS, this results in a different approach for the structure of a SAS data library, which must reside in a single physical file. In OpenVMS Alpha, there are significant limitations on the use of text data files.
The structure of numeric data is also a property of the environment, and it is the main thing that keeps SAS data from being freely portable from one environment to another. The native numerics also affect the binary informats and formats in SAS, which are important to know about if you are reading and writing binary files with a SAS program.
Beyond this, the operating system specifics are mostly optional. You can think of them as extras that might be useful when you’re working in that particular environment, but you won’t need them to do the most ordinary kinds of SAS work.
Linux is the closest thing to a “generic” environment for SAS. This is perhaps a reflection of the way Linux was designed for things like SAS. Very few compromises, if any, are required to fit SAS into the Linux environment. And there are only modest differences between Linux and most other server operating systems. that these operating systems. This is because some server operating systems, most notably Solaris and AIX, are based on the Unix specification, while others, including Linux, are imitations of Unix. Computer companies made their operating systems so similar to each other in the hope that software would only need to be recompiled to be moved from one operating system to another, and this is very nearly the case with SAS.
Parts of Microsoft Windows (and its predecessor MS-DOS) echo the design of Unix, but other parts are quite different. Microsoft Windows was originally designed for small-scale applications, such as word processing and games, and it has shown some growing pains as Microsoft has scaled it up to handle industrial-strength applications such as SAS. Microsoft Windows installations commonly use dozens of applications in combination, and so the SAS implementation for Microsoft Windows has a great many added features to connect to some of these applications and their file types. In addition, Microsoft Windows has the idiosyncratic user interface style of any operating system ever, and SAS is modified extensively in order to take advantage of the Microsoft Windows look and feel.
Z/OS has the longest history of any of the SAS environments, and this means it has capabilities that are afterthoughts or left out entirely in more recent operating systems. Of all operating systems, z/OS is the one most likely to be working with magnetic tapes and punch cards, for example. If you look at the environment-specific features and limitations of SAS for z/OS, you’ll find page after page of special considerations that no one from any other environment is likely to understand. There are many procedures created only for z/OS in order to help SAS users manage their work in the mainframe environment.
Earlier versions of z/OS were called OS, MVS, and OS/390. While these differences in name reflect important differences in the operating system, SAS users do not necessarily need to be aware of the differences.
Another distinguishing features of the IBM mainframe environment of z/OS is the use of the EBCDIC character set. For more on this, see: