Information about changes and enhancements that were implemented in Version 8 is preceded by . All other changes and enhancements described in this section were implemented in Version 7. In other words, if your site upgraded directly from Version 6 to Version 8, then all of the changes and enhancements described here are new to you. If you upgraded from Version 7 to Version 8, then only the items preceded by are new to you.
If you use SAS software under OS/2, OpenVMS Alpha, OpenVMS VAX, UNIX, or Windows, then see also Additional Version 7 Changes and Enhancements for OS/2, OpenVMS Alpha, OpenVMS VAX, UNIX, and Windows.
If you use SAS software under OS/390, CMS, or OpenVMS VAX, then see also Additional Version 7 Changes and Enhancements for OS/390, CMS, and OpenVMS VAX.
For information about changes and enhancements to base SAS software that are relevant only to a particular operating environment, see the SAS documentation for that operating environment.
SAS System Enhancements and New Features
New SAS System features, which are described in more detail in the following sections, include:
For information concerning year 2000 compliance of SAS software products, see the Institute's web site
Also, the Professional Services Division at SAS Institute offers a course that explains the issues and describes SAS tools and techniques for achieving year 2000 compliance. See "The Year 2000: Achieving Date Compliance" in SAS Applications Course Notes.
With regard to changes in Version 7 of base SAS software, the default value for the YEARCUTOFF= system option is now 1920.
Output Delivery System
In previous versions of SAS, printed output from SAS procedures and from the DATA step was designed for a traditional line-printer. In Version 7, printed output is much more flexible. The new Output Delivery System (ODS) enhances your ability to manage both DATA step and procedure output. ODS features include the ability to:
This section briefly illustrates these features. For more information on the Output Delivery System, see The Complete Guide to the SAS Output Delivery System and see the FILE, ODS and PUT, ODS statements in this manual.
DATA Step Reporting
Reports that are created with the FILE and PUT statements in a DATA step have two new features:
SAS I/O: Long Variable Names and Expanded Rules for SAS Names
The rules for SAS names have been expanded to provide more functionality. Some SAS names, such as DATA step variables, members of SAS data libraries, and catalog entries, can be up to 32 bytes long. A variable name can be mixed case.
In a DATA step or a PROC SQL step, you can more easily use DBMS files. You can use a new name literal to express a DBMS column name that may contain characters that are not normally allowed in SAS names. The SAS system option VALIDVARNAME= enables you to specify what rules apply to the variable names that you can create and process in a SAS session.
Referencing a Permanent SAS Data Set Without a Libref
You can create or reference a permanent SAS data set without first assigning a libref. You can refer to a SAS data set directly by specifying in quotes the name by which the operating system refers to the file.
Enhancements to Stored Compiled DATA Step Programs and DATA Step Views
In Version 8, SAS no longer requires that you recompile stored compiled DATA step programs or recreate DATA step views that were created in previous versions or releases of SAS. Stored programs and views created in Version 6 or Version 7 run as is in Version 8, provided that you run them on the same operating system on which they were created.
By default, SAS also saves the source statements when you create stored compiled programs and DATA step views in Version 8. You can retrieve and/or execute the statements by using the new DESCRIBE and EXECUTE statements within the DATA step.
SAS I/O: Logical Concatenation of SAS Libraries
You can now reference two or more SAS libraries with a single libref in all operating environments. To make your code easier to use in multiple operating environments, you can use a libref, rather than only the physical name as in Version 6, to specify the aggregate storage location that contains your SAS files.
SAS I/O: Logical Concatenation of SAS Catalogs
You can now logically concatenate entries in two or more SAS catalogs. Use the LIBNAME statement to implicitly concatenate entries in SAS catalogs. Use the new CATNAME statement to explicitly concatenate entries in SAS catalogs.
SAS I/O: Generation Data Sets
Generation data sets enable you to keep multiple copies of a SAS data set. The copies represent versions of the same data set, which is archived each time it is replaced. To request generation data sets, use the GENMAX= data set option. To reference a specific version of a data set, use the GENNUM= data set option.
SAS I/O: Integrity Constraints
Integrity constraints enable you to specify rules that guarantee the consistency and correctness of stored data. The rules restrict the data that can be added, updated, or deleted from a data set, and they also link the data in one data set to data in another data set.
You can specify integrity constraints either when a data set is created or after it already contains data. To create and delete integrity constraints, you can use the DATASETS procedure, the SQL procedure, or SCL functions. To list integrity constraints, use the CONTENTS procedure.
SAS I/O: Indexing Enhancements
Version 7 provides the following performance improvements for indexed data sets:
WHERE processing for an indexed data set is enhanced for the pattern-matching operators LIKE and NOT LIKE.
The system makes greater use of composite indexes for compound optimization, which is the process of optimizing multiple WHERE conditions with a single composite index. WHERE expressions that contain the EQ or IN operator now support three new operators: directional inequalities, NOT operations, and truncated comparisons.
Two new data set options, IDXNAME= and IDXWHERE=, provide more control over index usage.
The MSGLEVEL= system option provides more information about index usage.
When you append to an indexed data set, SAS improves performance by not updating the index until all observations have been added.
SAS I/O: Enhancements for Compressed Files
Compressed data sets are more flexible to use. You can now access observations in a compressed SAS data set directly by using the POINT= or FIRSTOBS= option.
You can choose a compression algorithm that best fits your data. For compressing character data, specify CHAR to use the RLE (Run Length Encoding) algorithm. For compressing binary (for example, numeric) data, specify BINARY to use the RDC (Ross Data Compression) algorithm. If your application can benefit from a specialized algorithm, you can supply your own if you also license SAS/TOOLKIT software.
In Version 8, you can use the POINTOBS= data set option to control whether a compressed data set may be processed with random access rather than with sequential access only.
SAS I/O: Audit Trail
An audit trail enables you to log updates to a SAS data file in a separate audit file. Each time an observation is added, deleted, or updated, information is added to the audit file about who made the modification, what was modified, and when.
You can also define special variables that are stored in the audit file. The user can assign values to them just like regular data set variables. They are stored with each record written to the audit trail. For example, they could be used to log a "reason for modification."
The audit trail is initiated with the AUDIT statement in PROC DATASETS. See SAS Procedures Guide for more information.
Double-Byte Character Sets
Starting with Release 6.07, SAS has supported double-byte character sets (DBCS), which are used for many Asian languages, such as Japanese, Korean, simplified Chinese, and traditional or complex Chinese. The documentation for Version 8 contains the first complete version of the DBCS information in English. See the category tables at the beginning of the Formats, Functions, Informats, and System Options chapters for a complete listing of DBCS language elements.
SAS Explorer Window
The SAS workspace is composed of windows that enable you to accomplish specific tasks. Along with the main programming windows (Program Editor, Log, and Output), the workspace now includes SAS Explorer, a central point for managing basic SAS software tasks such as
If you issue the CAT, DIR, LIB, or FILENAME commands, an Explorer window opens. For example, if you type CAT WORK.TEST, you will see the contents of your TEST catalog in a modified Explorer window.
SAS Registry Editor
The SAS Registry stores configuration data about the SAS session and about various applications. You can use the SAS Registry Editor window to
You can also use PROC REGISTRY to accomplish these tasks.
Results Window
The Results window contains pointers to various locations in the Output window. When procedure code executes, pointers to specific output are generated and are listed in the Results window. You can click the navigation pointers to locate the desired output.
New and Enhanced Base SAS Language Elements
Data Set Options
Changes to data set options include the following:
COMPRESS= accepts additional values.
RENAME= accepts variable lists.
These are the new data set options for data set control:
DLDMGACTION=
specifies what type of action to take when a SAS file in a SAS data library is detected as damaged.
GENMAX=
requests generations for a data set and specifies the maximum number of versions.
GENNUM=
references a specific generation of a data set.
OUTREP=
specifies an operating environment's requirements vector for an output file.
REPEMPTY=
controls replacement of like-named temporary or permanent SAS data sets when the new one is empty.
TRANTAB=
specifies a translation table for character conversions.
These are the new data set options for observation control:
IDXNAME=
directs the SAS System to use a specific index to satisfy the conditions of a WHERE expression.
IDXWHERE=
overrides the SAS System decision about whether to use an index to satisfy the conditions of a WHERE
expression.
POINTOBS=
controls whether a data set may be processed with random access (by observation number) rather than with
sequential access only.
WHEREUP=
specifies whether to evaluate added observations and modified observations against a WHERE expression.
Formats
Changes to formats include the following:
Character formats can handle strings up to 32,767 characters (32K) long.
The DOLLARw.d, DOLLARXw.d, COMMAw.d, and COMMAXw.d formats no longer restrict d to 0 or
2.
The following formats are new:
DDMMYYxw.
writes date values in the form ddmmyy or ddmmyyyy and specifies separators or no separators between date
values.
IBRw.d
writes integer binary (fixed-point) values in Intel and DEC format.
MMDDYYxw.
writes date values in the form mmddyy or mmddyyyy and specifies separators or no separators between date
values.
PIBRw.d
writes positive integer binary (fixed-point) values in Intel and DEC formats.
PDJULGw.
writes packed Julian date values in the hexadecimal format yyyydddF for IBM.
PDJULIw.
writes packed Julian date values in the hexadecimal format ccyydddF for IBM.
YYMMDDxw.
writes date values in the form yymmdd or yyyymmdd and specifies separators or no separators between date
values.
Functions and CALL Routines
Changes to existing functions include the following:
The PUT function now supports alignment of values with formats.
The QUOTE function no longer strips trailing blanks from values.
You can use the SCAN function to scan from right to left by specifying a negative number as an argument.
The following mathematical and probability functions have been added to base SAS software:
COMB
computes the number of combinations of n elements taken r at a time and returns a value.
CONSTANT
computes some machine and mathematical constants and returns a value.
DEVIANCE
computes the deviance and returns a value.
FACT
computes a factorial and returns a value.
PERM
computes the number of permutations of n elements taken r at a time and returns a value.
PROBBNRM
computes a probability from the bivariate normal distribution and returns a value.
PROBMC
computes a probability or a quantile from various distributions for multiple comparisons of means and returns
a value.
The following new RX functions and CALL routines provide character-string matching functionality. That is, they
enable you to search for (and, optionally, to replace) patterns or characters in a string.
CALL RXCHANGE
changes one or more substrings that match a pattern.
CALL RXFREE
frees memory that is allocated by other regular expression (RX) functions and CALL routines.
CALL RXSUBSTR
finds the position, length, and score of a substring that matches a pattern.
RXMATCH
finds the beginning of a substring that matches a pattern and returns a value.
RXPARSE
parses a pattern and returns a value.
The following functions return information about the attributes of variables. The functions with names that end in an
"X" can accept an expression as an argument; the others require a variable name as an argument:
VARRAY
returns a value that indicates whether the given variable is an array.
VARRAYX
returns a value that indicates whether the value of a given argument is an array.
VFORMAT
returns the format that is associated with the given variable.
VFORMATD
returns the format decimal value that is associated with the given variable.
VFORMATDX
returns the format decimal value that is associated with the value of a given argument.
VFORMATX
returns the format that is associated with the value of a given argument.
VFORMATN
returns the format name that is associated with the given variable.
VFORMATNX
returns the format name that is associated with the value of a given argument.
VFORMATW
returns the format width that is associated with the given variable.
VFORMATWX
returns the format width that is associated with the value of a given argument.
VINARRAY
returns a value that indicates whether the given variable is a member of an array.
VINARRAYX
returns a value that indicates whether the value of a given argument is a member of an array.
VINFORMAT
returns the informat that is associated with the given variable.
VINFORMATX
returns the informat that is associated with the value of a given argument.
VINFORMATD
returns the informat decimal value that is associated with the given variable.
VINFORMATDX
returns the informat decimal value that is associated with the value of a given argument.
VINFORMATN
returns the informat name that is associated with the given variable.
VINFORMATNX
returns the informat name that is associated with the value of a given argument.
VINFORMATW
returns the informat width that is associated with the given variable.
VINFORMATWX
returns the informat width that is associated with the value of a given argument.
VLABEL
returns the label that is associated with the given variable.
VLABELX
returns the variable label for the value of a given argument.
VLENGTH
returns the compile-time (allocated) size of the given variable.
VLENGTHX
returns the compile-time (allocated) size for the value of a given argument.
VNAME
returns the name of the given variable.
VNAMEX
validates the value of a given argument as a variable name.
VTYPE
returns the type (character or numeric) of the given variable.
VTYPEX
returns the type (character or numeric) for the value of a given argument.
These date and time functions are new:
DATDIF
returns the number of days between two dates.
JULDATE7
returns a seven digit Julian date from a SAS date value.
YRDIF
returns the difference in years between two dates.
The following functions are also new:
IORCMSG
returns a formatted error message for _IORC_.
MISSING
returns a numeric result that indicates whether the argument contains a missing value.
The following web-based functions have been added to base SAS software:
HTMLDECODE
decodes a string containing HTML numeric character references or HTML character entity references and
returns the decoded string.
HTMLENCODE
encodes characters using HTML character entity references and returns the encoded string.
URLDECODE
returns a string that was decoded using the URL escape syntax.
URLENCODE
returns a string that was encoded using the URL escape syntax.
In Version 8, the following financial functions have been added to base SAS software:
CONVX
returns the convexity for an enumerated cashflow.
CONVXP
returns the convexity for a periodic cashflow stream, such as a bond.
DUR
returns the modified duration for an enumerated cashflow.
DURP
returns the modified duration for a periodic cashflow stream, such as a bond.
PVP
returns the present value for a periodic cashflow stream, such as a bond.
YIELDP
returns the yield-to-maturity for a periodic cashflow stream, such as a bond.
Informats
Character informats can handle strings up to 32,767 characters (32K) long.
The following informats are new:
IBRw.d
reads integer binary (fixed-point) values in Intel and DEC format.
JDATEYMD
reads Japanese kanji date values in the format yymmmdd or yyyymmmdd.
JNENGO
reads Japanese Kanji date values in the form yymmdd.
PDJULGw.
reads packed Julian date values that are produced on IBM mainframe systems in the hex representation form
of yyyydddF. and converts the values to SAS date values.
PDJULIw.
reads packed Julian date values that are produced on IBM mainframe systems in the form ccyyddF. and
converts the values to SAS date values.
PIBRw.d
reads positive integer binary (fixed-point) values in Intel and DEC formats.
SHRSTAMP.w
reads date and time values of SHR records.
YYMMNw.
reads date values that are in the form yymm or yyyymm and that contain no delimiters, then adds a date value
of 01 so that these values become valid SAS date values.
Statements
There are three new statements:
CATNAME
logically concatenates the contents of two or more SAS catalogs. It can also assign or de-assign a catref or
list all currently assigned catrefs.
DESCRIBE
retrieves source code from a stored compiled DATA step program or a DATA step view and writes it to the
SAS log. It is used within a DATA step with the DATA statement's PGM= or VIEW= options.
EXECUTE
executes a stored compiled DATA step program. It is used within a DATA step with the DATA statement's
PGM= option.
Enhancements to statements include the following:
The FILE statement now has a FOOTNOTES option, which allows DATA step reports that are created
with a PUT statement to use footnotes. Using the DELIMITER= option, you can write data that are
delimited by a specified character other than a blank. Using the DSD option, you can write data that contain
a delimiter.
The FILE statement contains new options that allow you to produce output in HTML format.
In the INFILE statement, you can now use the _INFILE_= option to assign the contents of the current input
buffer to a variable.
In the FILE statement, you can now use the _FILE_= option to assign the contents of the current output
buffer to a variable.
New host options are available for the INFILE and FILE statements. See the SAS documentation for your
operating environment.
The LIBNAME statement can implicitly concatenate two or more SAS catalogs. (See the CATNAME
statement.)
The LIBNAME statement now has the REPEMPTY= option, which controls the replacement of like-named
temporary or permanent SAS data sets when the new one is empty.
The LIBNAME statement provides SAS/ACCESS users with an easier way to access DBMS tables.
Note: In order to use this new feature of the LIBNAME statement, you must license SAS/ACCESS
software.
The PUT statement contains new options that allow you to produce output in HTML format.
The RENAME statement accepts variable lists.
In the SET statement, you can use the OPEN= option to open only the first data set that is listed in the SET
statement during compilation. Some restrictions apply.
System Options
The following system options were changed:
The RESERVEDB1 system option is now called MFILE. It controls whether or not MPRINT output is
directed to an external file.
The default value for YEARCUTOFF= is 1920.
The following are new communication system options:
CONNECTREMOTE=
specifies the remote session ID that is used for SAS/CONNECT software.
CONNECTSTATUS
specifies whether or not to display the SAS/CONNECT transfer status window.
CONNECTWAIT
specifies whether or not to wait for the SAS/CONNECT remote submit statement (RSUBMIT) to complete
before control returns to the local session.
NETENCRYPT
specifies encryption of all network communications.
NETENCRYPTALGORITHM=
specifies the algorithm to use for the encryption of data that are passed over the network.
NETENCRYPTKEYLEN=
specifies the key size for network data encryption.
NETMAC
controls whether SAS uses Message Authentication Codes (MACs) to detect message corruptions across a
network.
TBUFSIZE=
specifies the buffer size to use when you transmit data with SAS/CONNECT or SAS/SHARE software.
TCPPORTFIRST=
specifies the first TCP/IP port for SAS/CONNECT software.
TCPPORTLAST=
specifies the last TCP/IP port for SAS/CONNECT software.
The following are new environment control system options:
APPLETLOC
specifies the location of Java applets.
CMPOPT
controls whether SAS language compiler optimization is in effect.
DMSEXP
invokes SAS with the Explorer, Program, Log, Output, and Results windows.
DOCLOC=
specifies the base location of SAS online documentation.
EXPLORER
controls whether you invoke SAS with the Explorer window only.
MERGENOBY
controls whether a message is issued when MERGE processing occurs without an associated BY statement.
REP_MGRLOC=
specifies the location of the repository manager for common metadata.
SASCMD
used by the SIGNON portion of SAS/CONNECT to invoke a remote or server SAS session.
SOLUTIONS
specifies whether SOLUTIONS appears on menus in the SAS windows.
STARTLIB
allows previous library references to persist in a new SAS session.
TRAINLOC=
specifies the base location of SAS online training courses.
VALIDVARNAME=
controls the type of SAS variable names that can be created or processed during a SAS session.
The following are new log and procedure output control system options:
CONSOLELOG=
specifies the location of the console log.
PRINTMSGLIST
controls the printing of extended lists of messages to the SAS log.
The following are new sort system options:
SORTDUP=
controls the SORT procedure's application of the NODUP option to physical or logical records.
SUMSIZE=
specifies a limit on the amount of memory that is available for data summarization procedures when class
variables are active.
The following are new file control system options:
ASYNCHIO
specifies whether asynchronous I/O is enabled.
DLDMGACTION=
specifies what type of action to take when a SAS file in a SAS data library is detected as damaged.
SYNCHIO
specifies whether synchronous I/O is enabled.
The following are new graphics system options:
GISMAPS=
specifies the location of the SAS data library that contains SAS/GIS-supplied TIGER map data sets.
In , the following new system options control printing with the Output Delivery System (ODS):
BINDING=
specifies the binding edge for the ODS printer destination.
BOTTOMMARGIN=
specifies the size of the margin at the bottom of the page for the ODS printer destination.
COLLATE
specifies the collation of multiple copies for output for the ODS printer destination.
COLORPRINTING
specifies color printing, if it is supported, for the ODS printer destination.
COPIES=
specifies the number of copies to make when printing to the ODS printer destination.
DUPLEX=
specifies duplexing controls for the ODS printer destination.
LEFTMARGIN=
specifies the size of the margin on the left side of the page for the ODS printer destination.
ORIENTATION=
specifies the paper orientation to use when printing to the ODS printer destination.
PAPERDEST=
specifies the bin to receive printed output for the ODS printer destination.
PAPERSIZE=
specifies the paper size to use when printing to the ODS printer destination.
PAPERSOURCE=
specifies the paper bin to use for printing to the ODS printer destination.
PAPERTYPE=
specifies the type of paper to use for printing to the ODS printer destination.
PRINTERPATH=
specifies a printer for SAS print jobs directed to the ODS printer destination.
RIGHTMARGIN=
specifies the size of the margin at the right side of the page for printed output directed to the ODS printer
destination.
TOPMARGIN=
specifies the size of the margin at the top of the page for the ODS printer destination.
The following is a new system administration option:
SETINIT
controls whether site license information can be altered.
*SAS is the registered trademark of SAS Institute Inc., Cary, N.C. 27511, U.S.A. SAS/GRAPH and SAS/ETS are trademarks of SAS Institute Inc., Cary, N.C. 27511, U.S.A.
This page updated September 25, 2000 by Amy W. Yarbrough,
Academic Research and Data Center.
Copyright © 2000, The Board of Trustees of the University of South Carolina.
URL http://www.sc.edu/ardc/docs/sasprocs.htm