SAS VERSIONS 7 AND 8: CHANGES AND ENHANCEMENTS
September 25, 2000
INTRODUCTION
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
[RETURN TO TOP]
OVERVIEWNew SAS System features,
which are described in more detail in the following sections,
include:
[RETURN TO TOP]
YEAR 2000 COMPLIANCE
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.
[RETURN TO TOP]
SAS OUTPUT
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:
- combine the raw data that is produced with one or more
templates to produce one or more output objects that contain
the formatted results
- store a link to each output object in the Results folder
in the Results window
- generate HTML files that contain the formatted results and
that contain links to the results in the form of a table of
contents
- generate output for a high-resolution printer
- generate output data sets from procedure output
- allow you to customize the procedure output by creating
templates that you can use whenever you run the procedure.
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:
- You can use footnotes in addition to titles.
- Reports can take advantage of the new Output Delivery
System.
[RETURN TO TOP]
SAS FILES AND I/O
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:
- When creating an index, no sort is performed if the data
set is already in the correct order.
- The system's ability to determine the more cost-efficient
way to access the data (either by sequential reading or by
using an index) is improved by storing statistics that
represent the distribution of values.
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.
WINDOWING ENVIORNMENTSAS 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
- viewing and managing tables, libraries, and members
- creating new libraries and file shortcuts
- creating new library members and catalog entries.
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
- view the contents of the registry, showing keys as well as
the values that are stored in the keys
- add, modify, and delete keys and key values
- export and import registry files to and from the registry
- compare the contents of a file to the registry
- install and uninstall registry files.
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.
|