SAS Institute. The Power to Know

What's New in SAS(R) 9.2

What's New

What's New in the Base SAS 9.2 Language


Overview

The SAS 9.2 Base new features, language elements, and enhancements to the language elements continue to expand the capabilities of SAS:

  • SAS now supports the next generation Internet Protocol, IPv6, as well as IPv4.

  • For Universal Printing, 31 new TrueType fonts are available when you install SAS. In addition, Universal Printing now supports Scalable Vector Graphics (SVG), Portable Network Graphics (PNG), and PDFA-1b print output formats.

  • You can access remote files by using the Secure File Transfer Protocol (SFTP) access method.

  • SAS now reads and writes ISO 8601 dates, time, and intervals.

  • In support of batch programming, if a program terminates without completion, the new checkpoint mode enables programs to be resubmitted in restart mode, resuming with the DATA or PROC step that was executing when the program terminated.

  • In the "Functions and CALL Routines" section there are several new and enhanced functions as well as functions that were previously in other products and that are now part of Base SAS. The functions that moved from the Risk Dimensions product calculate the call and put prices from European options on futures, based on various models. The functions that moved from SAS/ETS return information about various date and time intervals. The functions from SAS High-Performance Forecasting return specific dates.

  • In a DATA step, you can track the execution of code within a DO group. The DATA statement has an optional argument for you to write a note to the SAS log when the DO statement begins and ends.

  • New SAS system options enable you to set a default record length, specify options for accessing PDF files, specify values for Scalable Vector Graphics, support the checkpoint mode and the restart mode, and support fonts.

  • Some of the new features for the DATA step object attributes, operators, and methods remove all items from the hash object without deleting the instance of the hash object, consolidate the FIND and ADD methods into a single method call, return the number of items in the hash object, and specifies a starting key item for iteration.

  • In previous versions of SAS Language Reference: Dictionary, references to language elements in other publications were included in their respective dictionary for each language element type. For example, you could find a reference for the $BIDI format in the format dictionary entries. You can now find references to language elements that are documented in other publications within each section for the language element types. Online, this section appears just before the dictionary entries for each language element type. In the PDF or print copy, this section appears as the last topic for each language element type.


SAS System Features


Checkpoint Mode and Restart Mode

If a batch program terminates before it completes and it was started in checkpoint mode, the program can be resubmitted in restart mode, resuming with the DATA or PROC step that was executing when the program terminated. DATA and PROC steps that have already completed do not need to be rerun. See "Checkpoint Mode and Restart Mode" in SAS Language Reference: Concepts.


Support for ISO 8601 Basic and Extended Time Notations

In SAS 9.1.3, the formats and informats that support the ISO 8601 basic and extended time notations were documented in the SAS 9.1.3 XML LIBNAME: User's Guide. These formats and informats have been renamed and are now documented in SAS Language Reference: Dictionary.

The new names clearly distinguish the basic and extended formats and informats. You can see the renamed formats and informats in their respective sections in the topics that follow. In addition, a new CALL routine, IS8601_CONVERT, converts ISO 8601 intervals to datetime and duration values, and datetime and duration values to an ISO 8601 interval.


Support for IPv6

SAS 9.2 introduces support for the "next generation" of Internet Protocol, IPv6, which is the successor to the current Internet Protocol, IPv4. Rather than replacing IPv4 with IPv6, SAS 9.2 supports both protocols. A primary reason for the new protocol is that the limited supply of 32-bit IPv4 address spaces is being depleted. IPv6 uses a 128-bit address scheme, which provides more IP addresses than IPv4 did.

For more information, see Internet Protocol Version 6 (IPV6) in SAS Language Reference: Concepts.


Universal Printing and New TrueType Fonts

In SAS 9.2, all Universal Printers and many SAS/GRAPH devices use the FreeType library to render TrueType fonts for output in all of the operating environments that SAS software supports. In addition, by default, many SAS/GRAPH device drivers and all Universal Printers generate output using ODS styles, and these ODS styles use TrueType fonts.

In addition to SAS Monospace and SAS Monospace Bold, 31 new TrueType fonts are made available when you install SAS:

  • Five Latin fonts compatible with Microsoft

  • Eight multilingual Unicode fonts

  • Eight monolingual Asian fonts

New Universal printers include the following:

PDFA

produces an archivable PDF compliant with PDF/A-1b .

PNG

produces Portable Network Graphics, which is a raster image format that is designed to replace the older simple GIF and the more complex TIFF format.

PNGt

produces transparent Portable Network Graphics.

SVG

produces Scalable Vector Graphics, which is a language for describing two-dimensional graphics and graphical applications in XML.

SVGt

produces transparent Scalable Vector Graphics.

SVGView

produces Scalable Vector Graphics with controls to scroll through SVG output.

SVGZ

produces compressed Scalable Vector Graphics.

For more information, see Printing with SAS in SAS Language Reference: Concepts.


WHERE-Expression Processing

In a WHERE expression, the LIKE operator now supports an escape character. The escape character enables you to search for the percent sign (%) and the underscore (_) characters in values. For more information, see Syntax of WHERE Expression in SAS Language Reference: Concepts.


DATA Step Java Object

The DATA step component Java object is production software starting with this release of Base SAS.

Documentation for the Java object can be found on the Base Focus Area page on support.sas.com. Full documentation for the Java object will be available in a future release.


SAS Language Elements


Data Set Options

  • The following data set option has a new argument:

    DLDMGACTION=NOINDEX

    automatically repairs the data set without the indexes and integrity constraints, deletes the index file, updates the data file to reflect the disabled indexes and integrity constraints, and limits the data file to be opened only in INPUT mode.


Formats

  • The following formats are new:

    $BASE64X

    converts character data to ASCII text using Base 64 encoding.

    $N8601B

    writes ISO 8601 duration, datetime, and interval forms using the basic notations PnYnMnDTnHnMnS and yyyymmddThhmmss.

    $N8601BA

    writes ISO 8601 duration, datetime, and interval forms using the basic notations PyyyymmddThhmmss and yyyymmddThhmmss.

    $N8601E

    writes ISO 8601 duration, datetime, and interval forms using the extended notations PnYnMnDTnHnMnS and yyyy-mm-ddThh:mm:ss.

    $N8601EA

    writes ISO 8601 duration, datetime, and interval forms using the extended notations Pyyyy-mm-ddThh:mm:ss and yyyy-mm-ddThh:mm:ss.

    $N8601EH

    writes ISO 8601 duration, datetime, and interval forms for the extended notations Pyyyy-mm-ddThh:mm:ss and yyyy-mm-ddThh:mm:ss, using a hyphen ( - ) for omitted components.

    $N8601EX

    writes ISO 8601 duration, datetime, and interval forms for the extended notations Pyyyy-mm-ddThh:mm:ss and yyyy-mm-ddThh:mm:ss, using an x for each digit of an omitted component.

    $N8601H

    writes ISO 8601 duration, datetime, and interval forms PnYnMnDTnHnMnS and yyyy-mm-ddThh:mm:ss, dropping omitted components in duration values and using a hyphen ( - ) for omitted components in datetime values.

    $N8601X

    writes ISO 8601 duration, datetime, and interval forms PnYnMnDTnHnMnS and yyyy-mm-ddThh:mm:ss, dropping omitted components in duration values and using an x for each digit of an omitted component in datetime values.

    B8601DA

    writes date values using the IOS 8601 base notation yyyymmdd.

    B8601DN

    writes the date from a datetime value using the ISO 8601 basic notation yyyymmdd.

    B8601DT

    writes datetime values in the ISO 8601 basic notation yyyymmddThhmmssffffff.

    B8601DZ

    writes datetime values in the Coordinated Universal Time (UTC) time scale using the ISO 8601 datetime and time zone basic notation yyyymmddThhmmss+|-hhmm.

    B8601LZ

    writes time values as local time by appending a time zone offset difference between the local time and UTC, using the ISO 8601 basic time notation hhmmss+|-hhmm.

    B8601TM

    writes time values using the ISO 8601 basic notation hhmmssffff.

    B8601TZ

    adjusts time values to the Coordinated Universal Time (UTC) and writes them using the ISO 8601 basic time notation hhmmss+|-hhmm.

    BESTD

    prints numeric values, lining up decimal places for values of similar magnitude, and prints integers without decimals.

    E8601DA

    writes date values using the ISO 8601 extended notation yyyy-mm-dd.

    E8601DN

    writes the date from a SAS datetime value using the ISO 8601 extended notation yyyy-mm-dd.

    E8601DT

    writes datetime values in the ISO 8601 extended notation yyyy-mm-ddThh:mm:ss.ffffff.

    E8601DZ

    writes datetime values in the Coordinated Universal Time (UTC) time scale using the ISO 8601 datetime and time zone extended notation yyyy-mm-ddThh:mm:ss+|-hh:mm.

    E8601LZ

    writes time values as local time, appending the Coordinated Universal Time (UTC) offset for the local SAS session, using the ISO 8601 extended time notation hh:mm:ss+|-hh:mm.

    E8601TM

    writes time values using the ISO 8601 extended notation hh:mm:ss.ffffff.

    E8601TZ

    adjusts time values to the Coordinated Universal Time (UTC) and writes the values using the ISO 8601 extended notation hh:mm:ss+|-hh:mm.

    PERCENTN

    produces percentages, using a minus sign for negative values.

    VMSZN

    generates VMS and MicroFocus COBOL zoned numeric data.

  • The following formats were previously documented in other publications and are now part of this document:

    WEEKUw.

    writes a week number in decimal format by using the U algorithm.

    WEEKVw.

    writes a week number in decimal format by using the V algorithm.

    WEEKWw.

    writes a week number in decimal format by using the W algorithm.

  • The following format is enhanced:

    DATEw.

    In addition to writing dates in the form ddmmmyy or ddmmmyyyy, the DATEw. format now writes dates in the form dd-mmm-yyyy.


Functions and CALL Routines

  • The following functions and CALL routines are new:

    ALLCOMB

    generates all combinations of the values of n variables taken k at a time in a minimal change order.

    ALLPERM

    generates all permutations of the values of several variables in a minimal change order.

    ARCOSH

    returns the inverse hyperbolic cosine.

    ARSINH

    returns the inverse hyperbolic sine.

    ARTANH

    returns the inverse hyperbolic tangent.

    CALL ALLCOMB

    generates all combinations of the values of n variables taken k at a time in a minimal change order.

    CALL ALLCOMBI

    generates all combinations of the indices of n objects taken k at a time in a minimal change order.

    CALL GRAYCODE

    generates all subsets of n items in a minimal change order.

    CALL ISO8601_CONVERT

    converts an ISO 8601 interval to datetime and duration values, or converts datetime and duration values to an ISO 8601 interval.

    CALL LEXCOMB

    generates all distinct combinations of the non-missing values of n variables taken k at a time in lexicographic order.

    CALL LEXCOMBI

    generates all combinations of the indices of n objects taken k at a time in lexicographic order.

    CALL LEXPERK

    generates all distinct permutations of the non-missing values of n variables taken k at a time in lexicographic order.

    CALL LEXPERM

    generates all distinct permutations of the non-missing values of several variables in lexicographic order.

    CALL SORTC

    sorts the values of character arguments.

    CALL SORTN

    sorts the values of numeric arguments.

    CATQ

    concatenates character or numeric values by using a delimiter to separate items and by adding quotation marks to strings that contain the delimiter.

    CHAR

    returns a single character from a specified position in a character string.

    CMISS

    counts the number of missing arguments.

    COUNTW

    counts the number of words in a character expression.

    DIVIDE

    returns the result of a division that handles special missing values for ODS output.

    ENVLEN

    returns the length of an environment variable.

    EUCLID

    returns the Euclidean norm of the non-missing arguments.

    FINANCE

    computes financial calculations such as deprecation, maturation, accrued interest, net present value, periodic savings, and internal rates of return.

    FINDW

    searches a character string for a word.

    FIRST

    returns the first character in a character string.

    GCD

    returns the greatest common divisor for one or more integers.

    GEODIST

    returns the geodetic distance between two latitude and longitude coordinates.

    GRAYCODE

    generates all subsets of n items in a minimal change order.

    INTFIT

    returns a time interval that is aligned between two dates.

    INTGET

    returns an interval based on three date or datetime values.

    INTSHIFT

    returns the shift interval that corresponds to the base interval.

    INTTEST

    returns 1 if a time interval is valid, and returns 0 if a time interval is invalid.

    LCM

    returns the smallest multiple that is exactly divisible by every number in a set of numbers.

    LCOMB

    computes the logarithm of the COMB function--that is, the logarithm of the number of combinations of n objects taken r at a time.

    LEXCOMB

    generates all distinct combinations of the non-missing values of n variables taken k at a time in lexicographic order.

    LEXCOMBI

    generates all combinations of the indices of n objects taken k at a time in lexicographic order.

    LEXPERK

    generates all distinct permutations of the non-missing values of n variables taken k at a time in lexicographic order.

    LEXPERM

    generates all distinct permutations of the non-missing values of several variables in lexicographic order.

    LFACT

    computes the logarithm of the FACT (factorial) function.

    LOG1PX

    returns the log of 1 plus the argument.

    LPERM

    computes the logarithm of the PERM function--that is, the logarithm of the number of permutations of n objects, with the option of including r number of elements.

    LPNORM

    returns the Lp norm of the second argument and subsequent non-missing arguments.

    MD5

    returns the result of the message digest of a specified string.

    MSPLINT

    returns the ordinate of a monotonicity-preserving interpolating spline.

    RENAME

    renames a member of a SAS library, an external file, or a directory.

    SUMABS

    returns the sum of the absolute values of the non-missing arguments.

    TRANSTRN

    replaces all occurrences of a substring found in a character string if the substring has a value greater than zero.

    WHICHC

    searches for a character value that is equal to the first argument, and returns the index of the first matching value.

    WHICHN

    searches for a numeric value that is equal to the first argument, and returns the index of the first matching value.

    ZIPCITYDISTANCE

    returns the geodetic distance between two zip code locations.

  • The descriptions of the arguments in the following functions are enhanced:

    DOPEN

    opens a directory, and returns a directory identifier value.

    EXIST

    verifies the existence of a SAS library member.

    FOPEN

    opens an external file and returns a file identifier value.

    FEXIST

    verifies the existence of an external file that is associated with a fileref.

    FILENAME

    assigns or deassigns a fileref to an external file, a directory, or an output device.

    FILEREF

    verifies whether a fileref has been assigned for the current SAS session.

    LIBNAME

    assigns or deassigns a libref for a SAS library.

    LIBREF

    verifies that a libref has been assigned.

    MOPEN

    opens a file by directory ID and member name, and returns either the file identifier or a 0.

    PATHNAME

    returns the physical name of a SAS library or an external file, or returns a blank.

  • The following functions were previously in Risk Dimensions, and are now in Base SAS:

    BLACKCLPRC

    calculates the call price for European options on futures, based on the Black model.

    BLACKPTPRC

    calculates the put price for European options on futures, based on the Black model.

    BLKSHCLPRT

    calculates the call price for European options, based on the Black-Scholes model.

    BLKSHPTPRT

    calculates the put price for European options, based on the Black-Scholes model.

    GARKHCLPRC

    calculates the call price for European options on stocks, based on the Garman-Kohlhagen model.

    GARKHPTPRC

    calculates the put price for European options on stocks, based on the Garman-Kohlhagen model.

    MARGRCLPRC

    calculates the call price for European options on stocks, based on the Margrabe model.

    MARGRPTPRC

    calculates the put price for European options on stocks, based on the Margrabe model.

  • The following functions were previously in SAS/ETS, and are now in Base SAS:

    INTCINDEX

    returns the cycle index, given a date, time, or datetime value.

    INTCYCLE

    returns the date, time, or datetime interval at the next higher seasonal cycle, given a date, time, or datetime interval.

    INTFMT

    returns a recommended format, given a date, time, or datetime interval.

    INTINDEX

    returns the seasonal index, given a date, time, or datetime interval and value.

    INTSEAS

    returns the length of the seasonal cycle, given a date, time, or datetime interval.

  • The following functions were previously in SAS High-Performance Forecasting, and are now in Base SAS:

    HOLIDAY

    returns the date of the specified holiday for the specified year.

    NWKDOM

    returns the date for the nth occurrence of a weekday for the specified month and year.

  • The following functions were moved from SAS Language Reference: Dictionary to the SAS/IML documentation:

    MODULEIC

    calls an external routine and returns a character value (in the IML environment only).

    MODULEIN

    calls an external routine and returns a numeric value (in the IML environment only).

    CALL MODULEI

    calls an external routine without any return code (in the IML environment only).

  • The following functions and CALL routine are enhanced:

    CALL POKE

    can now write floating-point numbers directly into memory on a 32-bit platform.

    CALL POKELONG

    can now write floating-point numbers directly into memory on 32-bit and 64-bit platforms.

    CALL SCAN

    returns the position and length of a given word from a character expression.

    DATDIF

    added the values 'ACT/360' and 'ACT/365' to the basis argument, and added a reference to a document that is published by the Securities Industry Association.

    FSEP

    added an optional argument for a hexadecimal character delimiter.

    INDEX

    added an example that shows how leading and trailing spaces are handled.

    LAG

    added information about the memory limit for the LAG function.

    SCAN

    returns the nth word from a character expression.

    ZIPSTATE

    added information about Army Post Office (APO) and Fleet Post Office (FPO) to the documentation.

  • The RX set of functions and CALL routines have been removed from the documentation. They have been replaced by a set of PRX functions and CALL routines, which have been available in previous versions of SAS, and which provide superior functionality.

    The following RX functions and CALL routines were removed:

    RXMATCH function

    RXPARSE function

    RXCHANGE CALL routine

    RXFREE CALL routine

    RXSUBSTR CALL routine

  • The SCANQ function and the CALL SCANQ routine have been removed from the documentation and replaced by the superior functionality of the SCAN function and CALL SCAN routine.


Informats

  • The following informats are new:

    $BASE64X

    converts ASCII text to character data by using Base 64 encoding.

    $N8601B

    reads complete, truncated, and omitted forms of ISO 8601 duration, datetime, and interval values that are specified in either the basic or extended notations.

    $N8601E

    reads ISO 8601 duration, datetime, and interval values that are specified in the extended notation.

    B8601DA

    reads date values that are specified in the ISO 8601 basic notation yyyymmdd.

    B8601DN

    reads date values that are specified the ISO 8601 basic notation yyyymmdd and returns SAS datetime values where the time portion of the value is 000000.

    B8601DT

    reads datetime values that are specified in the ISO 8601 basic notation yyyymmddThhmmssffffff.

    B8601DZ

    reads datetime values that are specified in the Coordinated Universal Time (UTC) time scale using the ISO 8601 datetime basic notation yyyymmddThhmmss+|-hhmm or yyyymmddThhmmssffffffZ.

    B8601TM

    reads time values that are specified in the ISO 8601 basic notation hhmmssffffff.

    B8601TZ

    reads time values that are specified in the ISO 8601 basic time notation hhmmssfffff+|-hhmm or hhmmssffffffZ.

    E8601DA

    reads date values that are specified in the ISO 8601 extended notation yyyy-mm-dd.

    E8601DN

    reads date values that are specified in the ISO 8601 extended notation yyyy-mm-dd and returns SAS datetime values where the time portion of the value is 000000.

    E8601DT

    reads datetime values that are specified in the ISO 8601 extended notation yyyy-mm-ddThh:mm:ss.ffffff.

    E8601DZ

    reads datetime values that are specified in the Coordinated Universal Time (UTC) time scale using the ISO 8601 datetime extended notation hh:mm:ss+|-hh:mm.fffff orhh:mm:ss.fffffZ.

    E8601LZ

    reads Coordinated Universal Time (UTC) values that are specified in the ISO 8601 extended notation hh:mm:ss+|-hh:mm.fffff or hh:mm:ss.fffffZ and converts them to the local time.

    E8601TM

    reads time values that are specified in the ISO 8601 extended notation hh:mm:ss.ffffff.

    E8601TZ

    reads time values that are specified in the ISO 8601 extended time notation hh:mm:ss+|-hh:mm.ffffff or hh:mm:ssZ.

    VMSZN

    reads VMS and MicroFocus COBOL zoned numeric data.

  • The following informat is enhanced:

    TRAILSGN

    In addition to reading trailing plus (+) and minus (-) signs, the TRAILSGN informat now reads values that contain commas.

  • The following informats were previously documented in other publications and are now part of this document:

    WEEKUw.

    reads the format of the number-of-week value within the year and returns a SAS date value using the U algorithm.

    WEEKVw.

    reads the format of the number-of-week value within the year and returns a SAS date value using the V algorithm.

    WEEKWw.

    reads the format of the number-of-week value within the year and returns a SAS date value using the W algorithm.


Statements

  • The following statements are new:

    CHECKPOINT EXECUTE_ALWAYS

    enables you to execute the DATA or PROC step that immediately follows without considering the checkpoint-restart data.

    FILENAME, SFTP Access Method

    enables you to access remote files by using the SFTP protocol.

    SYSECHO

    enables IOM clients to manually track the progress of a segment of a submitted SAS program.

  • The following statements are enhanced:

    %INCLUDE

    • The filename of a file that is located in an aggregate storage location and does not have a valid SAS name can be used as a fileref if the filename is enclosed in quotation marks.

    • The maximum line limit is now 6K.

    ABORT

    Two new optional arguments enable you to do the following:

    • cause the execution of the submitted statements to be canceled.

    • suppress the output of all variables to the SAS log.

    ATTRIB

    The TRANSCODE=NO attribute is not supported by some SAS Workspace Server clients. In SAS 9.2, if the attribute is not supported, variables with TRANSCODE=NO are replaced (masked) with asterisks (*). Before SAS 9.2, variables with TRANSCODE=NO were transcoded.

    BY

    The BY statement honors the linguistic collation of data that is sorted by using the SORT procedure with the SORTSEQ=LINGUISTIC option.

    DATA

    Three new optional arguments enable you to do the following:

    • write a note to the SAS log for the beginning and end of each level of nesting DO statements.

    • specify the maximum number of nested LINK statements.

    • suppress the output of all variables to the SAS log.

    DECLARE

    • Data set options can now be used with the dataset: argument tag.

    • Three new argument tags enable you to do the following:

      • maintain a summary count of hash object keys.

      • ignore duplicate keys when loading a data set into the hash object.

      • specify whether multiple data items are allowed for each key.

    FILE

    • The filename of a file that is located in an aggregate storage location and does not have a valid SAS name can be used as a fileref if the filename is enclosed in quotation marks.

    • A new option enables you to specify a character string as an alternate delimiter (other than a blank) to be used for LIST output.

    FILENAME, CATALOG Access Method

    You can now specify RECFM=S (stream-record format).

    FILENAME, EMAIL (SMTP) Access Method
    • You can now specify a file attachment without an extension.

    • A new option enables you to specify the priority of the e-mail message.

    FILENAME, FTP Access Method

    Six new FTP options enable you to do the following:

    • specify the name of an authentication domain metadata object that references credentials (user ID and password) in order to connect to the FTP server without your having to explicitly specify the credentials.

    • specify that the member type of DATA is automatically appended to the member name when you use the DIR option.

    • enable autocall macro retrieval of lowercase directory or member names from FTP servers.

    • save the user ID and password after the user ID and password prompt are successfully executed.

    • specify the line delimiter to use for variable-record formats: carriage return followed by a line feed, a line feed only, or a NULL character.

    • specify the length of the FTP server response message.

    FILENAME, URL Access Method

    • N can now be used as an alias for a stream-record format (RECFM=S).

    • Four new URL options enable you to do the following:

      • specify the name of an authentication domain metadata object that references credentials (user ID and password) in order to connect to the proxy or Web server without your having to explicitly specify the credentials.

      • specify a fileref to which the header information is written when a file is opened using the URL access method. The header information is the same information that is written to the SAS log.

      • specify a user name with which you can access the proxy server.

      • specify a password with which you can access the proxy server.

      • specify the line delimiter to use when RECFM=V.

    FILENAME, WebDAV Access Method

    • The SASBAMW keyword in the FILENAME statement syntax has been changed to WEBDAV.

    • Three new WebDAV options enable you to do the following:

      • access directory files.

      • specify that a file extension is automatically appended to the file name when you use the DIR option.

      • retry lowercase directory or member names from WebDAV servers by using an autocall macro.

    FOOTNOTE

    a new argument enables you to specify formatting options for the ODS HTML, RTF, and PRINTER(PDF) destinations.

    INFILE

    • The filename of a file that is located in an aggregate storage location and does not have a valid SAS name can be used as a fileref if the filename is enclosed in quotation marks.

    • A new option enables you to specify a character string as an alternate delimiter (other than a blank) to be used for LIST output.

    • A new optional argument specifies the type of device or the access method that is used if the fileref points to an input or output device or location that is not a physical file.

    LIBNAME for WebDAV Server Access

    • When you assign a libref to a file on a WebDAV server, the path (URL location), user ID, and password are associated with that libref. After the first libref is assigned, the user ID and password will be validated on subsequent attempts to assign another libref to the same library.

    • SAS will honor a lock request on a file on a WebDAV server only if the file is already locked by another user.

    • Two new WebDAV options enable you to do the following:

      • specify the name of an authentication domain metadata object that references credentials (user ID and password) in order to connect to the WebDAV server without your having to explicitly specify the credentials.

      • prompt the user for an ID and password.

    MERGE

    a new argument enables you to specify at least two existing SAS data sets by using either a numbered range list or a named prefix list.

    SET

    • a new argument creates and names a variable that stores the name of the SAS data set from which the current observation is read. The stored name can be a data set name or a physical name. The physical name is the name by which the operating environment recognizes the file.

    • a new argument enables you to specify at least two existing SAS data sets by using either a numbered range list or a named prefix list.

    TITLE

    added an argument that enables you to specify formatting options for the ODS HTML, RTF, and PRINTER(PDF) destinations.


System Options

  • The following system options are new:

    CMPMODEL

    specifies the output model type for the MODEL procedure.

    DEFLATION

    specifies the level of compression for device drivers that support the Deflate compression algorithm.

    DMSPGMLINESIZE

    specifies the maximum number of characters in a Program Editor line.

    EMAILFROM

    when sending an e-mail that uses SMTP, specifies whether the e-mail option FROM is required in either the FILE or the FILENAME statement.

    FILESYNC=

    specifies when operating system buffers that contain contents of permanent SAS files are written to disk.

    FONTEMBEDDING

    specifies whether font embedding is enabled in Universal Printer and SAS/GRAPH printing.

    FONTRENDERING=

    specifies whether SAS/GRAPH display drivers and image format drivers display or print fonts by using the operating system or by using the FreeType font engine.

    GSTYLE

    specifies whether ODS styles can be used in the generation of graphs that are stored as GRSEG catalog entries.

    IBUFNO=

    specifies an optional number of extra buffers to be allocated for navigating an index file. SAS automatically allocates a minimal number of buffers in order to navigate the index file. Typically, you do not need to specify extra buffers. However, using IBUFNO= to specify extra buffers could improve execution time by limiting the number of input/output operations that are required for a particular index file.

    JPEGQUALITY

    specifies the JPEG quality factor that determines the ratio of image quality to the level of compression for JPEG files processed by the SAS/GRAPH JPEG device driver.

    LRECL=

    specifies the default logical record length to use for reading and writing external files.

    PDFACCESS

    specifies whether text and graphics from PDF documents can be read by screen readers for the visually impaired.

    PDFASSEMBLY

    specifies whether PDF documents can be assembled.

    PDFCOMMENT

    specifies whether PDF document comments can be modified.

    PDFCONTENT

    specifies whether the contents of a PDF document can be changed.

    PDFCOPY

    specifies whether text and graphics from a PDF document can be copied.

    PDFFILLIN

    specifies whether PDF forms can be filled in.

    PDFPAGELAYOUT

    specifies the page layout for PDF documents.

    PDFPAGEVIEW

    specifies the page viewing mode for PDF documents.

    PDFPASSWORD

    specifies the password to use to open a PDF document and the password used by a PDF document owner.

    PDFPRINT

    specifies the resolution to print PDF documents.

    PDFSECURITY

    specifies the printing permissions for PDF documents.

    S2V=

    specifies the starting position to begin reading a file specified in a %INCLUDE statement, an autoexec file, or an autocall macro file with a variable length format.

    SORTVALIDATE

    specifies whether the SORT procedure verifies that a data set is sorted according to the variables in the BY statement when the sort indicator metadata indicates a user-specified sort order.

    SQLCONSTDATETIME

    specifies whether the SQL procedure replaces references to the DATE, TIME, DATETIME, and TODAY functions in a query with their equivalent constant values before the query executes.

    SQLREDUCEPUT=

    for the SQL procedure, specifies the engine type that a query uses for which optimization is performed by replacing a PUT function in a query with a logically equivalent expression.

    SQLREDUCEPUTOBS=

    for the SQL procedure when the SQLREDUCEPUT= system option is set to NONE, specifies the minimum number of observations that must be in a table for PROC SQL to consider optimizing the PUT function in a query.

    SQLREDUCEPUTVALUES=

    for the SQL procedure when the SQLREDUCEPUT= system option is set to NONE, specifies the minimum number of SAS format values that can exist in a PUT function expression in order for PROC SQL to consider optimizing the PUT function in a query.

    SQLREMERGE

    specifies whether the SQL procedure can process queries that use remerging of data.

    SQLUNDOPOLICY=

    specifies whether the SQL procedure keeps or discards updated data if errors occur while the data is being updated.

    STEPCHKPT

    specifies whether to run a batch program in checkpoint-restart mode. In checkpoint-restart mode, if a batch program terminates during execution, the program can be restarted beginning with the DATA or PROC step that was executing when the program terminated.

    STEPCHKPTLIB

    specifies the libref which identifies the library that contains the checkpoint-restart data.

    STEPRESTART

    specifies whether to start a batch program using the checkpoint data.

    SVGCONTROLBUTTONS

    specifies whether to display the paging control buttons and an index in a multi-page SVG document.

    SVGHEIGHT

    specifies the height of the viewport unless the SVG output is embedded in another SVG output; specifies the value of the HEIGHT attribute of the outermost <svg> element in the XML file.

    SVGPRESERVEASPECTRATIO

    specifies whether to force uniform scaling of SVG output; sets the preserveAspectRatio attribute on the outermost <svg> element.

    SVGTITLE

    specifies the title in the title bar of the SVG output; specifies the value of the <title> element in the XML file.

    SVGVIEWBOX

    specifies the coordinates, width, and height that are used to set the viewBox attribute on the outermost <svg> element, which enables SVG output to scale to the viewport.

    SVGWIDTH

    specifies the width of the viewport unless the SVG output is embedded in another SVG output; specifies the value of the width attribute of the outermost <svg> element in the XML file.

    SVGX

    specifies the x-axis coordinate of one corner of the rectangular region into which an embedded <svg> element is placed; specifies the x attribute on the outermost <svg> element of the XML file.

    SVGY

    specifies the y-axis coordinate of one corner of the rectangular region into which an embedded <svg> element is placed; specifies the y attribute on the outermost <svg> element of the XML file.

    UPRINTCOMPRESSION

    specifies whether to enable compression of Universal Printer and SAS/GRAPH print files.

  • The following system options have a new argument:

    DLDMGACTION=NOINDEX

    For data sets, automatically repairs the data set without the indexes and integrity constraints, deletes the index file, updates the data file to reflect the disabled indexes and integrity constraints, and limits the data file to be opened only in INPUT mode.

    CMPOPT=FUNCDIFFERENCING

    specifies whether analytic derivatives are computed for user-defined functions.

  • The following system options are enhanced:

    ECHOAUTO

    SAS writes the autoexec file statements to the SAS log.

    EMAILHOST

    You can now specify multiple Simple Mail Transfer Protocol (SMTP) mail servers.

    E-mail system options

    All e-mail system options can now be set at any time. They are no longer restricted to being set when SAS starts.

    OVP

    The default value for the OVP system option is now NOOVP.

    SYSPRINTFONT

    You can specify the name of a Universal Printer to which the SYSPRINTFONT system option setting applies.

  • The following system options are no longer supported and have been removed from the documentation:

    BATCH

    no longer has an impact on the settings for the LINESIZE, OVP, PAGESIZE, and SOURCE system options when SAS executes.

    GISMAPS

    SAS 9.2 no longer supplies U.S. Census Tract maps for SAS/GIS.


DATA Step Object Attributes, Operators, and Methods

  • The following methods are new:

    CLEAR

    removes all items from the hash object without deleting the hash object instance.

    EQUALS

    determines whether two hash objects are equal.

    FIND_NEXT

    sets the current list item to the next item in the current key's multiple item list and sets the data for the corresponding data variables.

    FIND_PREV

    sets the current list item to the previous item in the current key's multiple item list and sets the data for the corresponding data variables.

    HAS_NEXT

    determines whether there is a next item in the current key's multiple data item list.

    HAS_PREV

    determines whether there is a previous item in the current key's multiple data item list.

    REF

    consolidates the FIND and ADD methods into a single method call.

    REMOVEDUP

    removes the data that is associated with the specified key's current data item from the hash object.

    REPLACEDUP

    replaces the data that is associated with the current key's current data item with new data.

    SETCUR

    specifies a starting key item for iteration.

    SUM

    retrieves the summary value for a given key from the hash table and stores the value in a DATA step variable.

    SUMDUP

    retrieves the summary value for the current data item of the current key and stores the value in a DATA step variable.

  • The following method is enhanced:

    DEFINEDONE

    added an optional argument that enables recovery from memory failure when loading a data set into a hash object.

  • The following attribute is new:

    ITEM_SIZE

    returns the number of items in the hash object.

  • The _NEW_ statement has been reclassified as an operator.