Descriptions of the new and enhanced language elements for national language support can be found in 'What's New for SAS 9 and 9.1 National Language Support' in SAS National Language Support (NLS): User 's Guide .
The following data set options are new:
OBSBUF=
determines the size of the view buffer for processing a DATA step view.
SPILL=
specifies whether to create a spill file for non-sequential processing of a DATA step view.
The following data set options are enhanced:
BUFNO=
supports the same syntax as the BUFNO= system option in order to specify the number of buffers to be allocated for processing a SAS data set.
BUFSIZE=
supports the same syntax as the BUFSIZE= system option in order to specify the permanent buffer page size for an output SAS data set.
FIRSTOBS=
supports the same syntax as the FIRSTOBS= system option in order to specify which observation SAS processes first.
OBS=
supports the same syntax as the OBS= system option in order to specify when to stop processing observations.
The maximum length for character format names is increased to 31. The maximum length for numeric format names is increased to 32.
The following formats are new:
MMYY
writes date values in the form mmM<yy>yy, where M is the separator and the year is written in either 2 or 4 digits.
YYMM
writes date values in the form <yy>yyMmm, where the year is written in either 2 or 4 digits and M is the separator.
YYQ
writes date values in the form <yy>yyQq, where the year is written in either 2 or 4 digits, Q is the separator, and q is the quarter of the year.
YYQR
writes date values in the form <yy>yyQqr, where the year is written in either 2 or 4 digits, Q is the separator, and qr is the quarter of the year expressed in Roman numerals.
The PVALUE format now returns missing values that are specified by the MISSING= system option.
New functions and CALL routines include character, mathematical, descriptive statistical, and special functions, and character-string matching functions that can use PERL expressions.
The following character functions are new:
ANYALNUM
searches a character string for an alphanumeric character and returns the first position at which it is found.
ANYALPHA
searches a character string for an alphabetic character and returns the first position at which it is found.
ANYCNTRL
searches a character string for a control character and returns the first position at which it is found.
ANYDIGIT
searches a character string for a digit and returns the first position at which it is found.
ANYFIRST
searches a character string for a character that is valid as the first character in a SAS variable name under VALIDVARNAME=V7, and returns the first position at which that character is found.
ANYGRAPH
searches a character string for a graphical character and returns the first position at which it is found.
ANYLOWER
searches a character string for a lowercase letter and returns the first position at which it is found.
ANYNAME
searches a character string for a character that is valid in a SAS variable name under VALIDVARNAME=V7, and returns the first position at which that character is found.
ANYPRINT
searches a character string for a printable character and returns the first position at which it is found.
ANYPUNCT
searches a character string for a punctuation character and returns the first position at which it is found.
ANYSPACE
searches a character string for a white-space character (blank, horizontal tab, vertical tab, carriage return, line feed, or form feed), and returns the first position at which it is found.
ANYUPPER
searches a character string for an uppercase letter and returns the first position at which it is found.
ANYXDIGIT
searches a character string for a hexadecimal character that represents a digit and returns the first position at which that character is found.
CAT
concatenates character strings without removing leading or trailing blanks.
CATS
concatenates character strings and removes leading and trailing blanks.
CATT
concatenates character strings and removes trailing blanks only.
CATX
concatenates character strings, removes leading and trailing blanks, and inserts separators.
CHOOSEC
returns a character value that represents the results of choosing from a list of arguments.
CHOOSEN
returns a numeric value that represents the results of choosing from a list of arguments.
COMPARE
returns the position of the leftmost character by which two strings differ , or returns 0 if there is no difference.
COMPGED
compares two strings by computing the generalized edit distance.
COMPLEV
compares two strings by computing the Levenshtein edit distance.
COUNT
counts the number of times that a specific substring of characters appears within a character string that you specify.
COUNTC
counts the number of specific characters that either appear or do not appear within a character string that you specify.
FIND
searches for a specific substring of characters within a character string that you specify.
FINDC
searches for specific characters that either appear or do not appear within a character string that you specify.
IFC
returns a character value that matches an expression.
IFN
returns a numeric value that matches an expression.
LENGTHC
returns the length of a character string, including trailing blanks.
LENGTHM
returns the amount of memory (in bytes) that is allocated for a character string.
LENGTHN
returns the length of a non-blank character string, excluding trailing blanks, and returns 0 for a blank character string.
NLITERAL
converts a character string that you specify to a SAS name literal (n-literal).
NOTALNUM
searches a character string for a non-alphanumeric character and returns the first position at which it is found.
NOTALPHA
searches a character string for a non-alphabetic character and returns the first position at which it is found.
NOTCNTRL
searches a character string for a character that is not a control character and returns the first position at which it is found.
NOTDIGIT
searches a character string for any character that is not a digit and returns the first position at which that character is found.
NOTFIRST
searches a character string for an invalid first character in a SAS variable name under VALIDVARNAME=V7, and returns the first position at which that character is found.
NOTGRAPH
searches a character string for a non-graphical character and returns the first position at which it is found.
NOTLOWER
searches a character string for a character that is not a lowercase letter and returns the first position at which that character is found.
NOTNAME
searches a character string for an invalid character in a SAS variable name under VALIDVARNAME=V7, and returns the first position at which that character is found.
NOTPRINT
searches a character string for a non-printable character and returns the first position at which it is found.
NOTPUNCT
searches a character string for a character that is not a punctuation character and returns the first position at which it is found.
NOTSPACE
searches a character string for a character that is not a white-space character (blank, horizontal tab, vertical tab, carriage return, line feed, or form feed), and returns the first position at which it is found.
NOTUPPER
searches a character string for a character that is not an uppercase letter and returns the first position at which that character is found.
NOTXDIGIT
searches a character string for a character that is not a hexadecimal digit and returns the first position at which that character is found.
NVALID
checks a character string for validity for use as a SAS variable name in a SAS statement.
PROPCASE
converts all words in an argument to proper case.
PRXCHANGE
performs a pattern-matching replacement.
PRXPOSN
returns the value for a submatch.
SCANQ
returns the n th word from a character expression and ignores delimiters that are inside quotation marks.
STRIP
returns a character string with all leading and trailing blanks removed.
SUBPAD
returns a substring that has a length you specify, using blank padding if necessary.
SUBSTRN
returns a substring that allows a result with a length of 0.
The following descriptive statistics functions are new:
GEOMEAN
returns the geometric mean.
GEOMEANZ
returns the geometric mean without fuzzing the values of the arguments that are approximately 0.
HARMEAN
returns the harmonic mean.
HARMEANZ
returns the harmonic mean without fuzzing the values of the arguments that are approximately 0.
IQR
returns the interquartile range.
LARGEST
returns the k th largest non-missing value.
MAD
returns the median absolute deviation from the median.
MEDIAN
computes median values.
MODZ
returns the remainder from the division of the first argument by the second argument, using 0 fuzzing.
PCTL
computes percentiles.
RMS
returns the root mean square.
SMALLEST
returns the k th smallest non-missing value.
The following macro functions are new:
SYMEXIST
indicates the existence of a macro variable.
SYMGLOBL
indicates whether a macro variable is in a global scope in the DATA step during DATA step execution.
SYMLOCAL
indicates whether a macro variable is in a local scope in the DATA step during
DATA step execution.
The following mathematical functions are new:
BETA
returns the value of the beta function.
COALESCE
returns the first non-missing value from a list of numeric arguments.
COALESCEC
returns the first non-missing value from a list of character arguments.
LOGBETA
returns the logarithm of the beta function.
The following probability function is new:
LOGCDF
returns the logarithm of a left cumulative distribution function.
The following quantile function is new:
QUANTILE
returns the quantile from the specified distribution.
The following special function is new:
UUIDGEN
returns the short or binary form of a Universal Unique Identifier (UUID).
The following state and ZIP code function is new:
ZIPCITY
returns a city name and the two-character postal code that corresponds to a ZIP code.
The following trigonometric function is new:
ATAN2
returns the arc tangent of two numeric variables .
The following truncation functions are new:
CEILZ
returns the smallest integer that is greater than or equal to the argument, using 0 fuzzing.
FLOORZ
returns the largest integer that is less than or equal to the argument, using 0 fuzzing.
INTZ
returns the integer portion of the argument, using 0 fuzzing.
ROUND
rounds the first argument to the nearest multiple of the second argument, or to the nearest integer when the second argument is omitted.
ROUNDE
rounds the first argument to the nearest multiple of the second argument, and returns an even multiple when the first argument is halfway between the two nearest multiples .
ROUNDZ
rounds the first argument to the nearest multiple of the second argument, with 0 fuzzing.
The following variable information functions are new:
VVALUE.
returns the formatted value that is associated with the variable that you specify.
VVALUEX
returns the formatted value that is associated with the argument that you specify.
Using Perl regular expression (PRX) functions and CALL routines is new.
See 'Pattern Matching Using SAS Regular Expressions (RX) and Perl Regular Expressions (PRX)' on page 260 for more information.
PRXMATCH
searches for a pattern match and returns the position at which the pattern is found.
PRXPAREN
returns the last bracket match for which there is a match in a pattern.
PRXPARSE
compiles a Perl regular expression that can be used for pattern-matching of a character value.
CALL PRXCHANGE
performs a pattern-matching substitution.
CALL PRXDEBUG
enables Perl regular expressions in a DATA step to send debug output to the SAS log.
CALL PRXFREE
frees unneeded memory that was allocated for a Perl regular expression.
CALL PRXNEXT
returns the position and length of a substring that matches a pattern and iterates over multiple matches within one string.
CALL PRXPOSN
returns the start position and length for a capture buffer.
CALL PRXSUBSTR
returns the position and length of a substring that matches a pattern.
The following CALL routines are new:
CALL ALLPERM
generates all permutations of the values of several variables.
CALL CATS
concatenates character strings and removes leading and trailing blanks.
CALL CATT
concatenates character strings and removes trailing blanks only.
CALL CATX
concatenates character strings, removes leading and trailing blanks, and inserts separators.
CALL COMPCOST
sets the costs of operations for later use by the COMPGED function.
CALL LOGISTIC
returns the logistic value of each argument.
CALL MISSING
assigns a missing value to the specified character or numeric variables.
CALL RANPERK
randomly permutes the values of the arguments and returns a permutation of k out of n values.
CALL RANPERM
randomly permutes the values of the arguments.
CALL SCAN
returns the position and length of a given word from a character expression.
CALL SCANQ
returns the position and length of a given word from a character expression, and ignores delimiters that are inside quotation marks.
CALL SOFTMAX
returns the softmax value for each argument.
CALL STDIZE
standardizes the values of one or more variables.
CALL STREAMINIT
specifies a seed value to use for subsequent random number generation by the RAND function.
CALL SYMPUTX
assigns a value to a macro variable and removes both leading and trailing blanks.
CALL TANH
returns the hyperbolic tangent of each argument.
CALL VNEXT
returns the name, type, and length of a variable that is used in a DATA step.
The following functions are enhanced:
COMPRESS
accepts a third optional argument that can modify the characters in the second argument.
EXIST
accepts all SAS data library type members . A third optional argument enables you to specify a generation data set number.
INDEXW
accepts a third optional argument that enables you to use delimiters for inter-word boundaries.
accepts an argument that enables you to use a Perl regular expression.
SUBSTR (left of=)
assigns a length of 8 to an undeclared variable when the function is compiled.
The maximum length for character informat names is increased to 30. The maximum length for numeric informat names is increased to 31.
The following informats are new:
ANYDTDTE
extracts date values from DATE, DATETIME, DDMMYY, JULIAN, MMDDYY, MONYY, TIME, or YYQ informat values.
ANYDTDTM
extracts datetime values from DATE, DATETIME, DDMMYY, JULIAN, MMDDYY, MONYY, TIME, or YYQ informat values.
ANYDTTME
extracts time values from DATE, DATETIME, DDMMYY, JULIAN, MMDDYY, MONYY, TIME, or YYQ informat values.
STIMER w .
reads time values and determines whether the values are hours, minutes, or seconds; reads the output of the STIMER system option.
The new ARM macro, %ARMCONV, converts an ARM log that is created in SAS 9 or later, which uses a simple format, into the ARM log format that is used in Release 8.2, which is more detailed.
The new SAS utility macro, %DS2CSV, converts SAS data sets to comma-separated value (CSV) files.
The following statements are new:
ODS Statements
can be used to control different features of the Output Delivery System. For more information about these statements, see the SAS Output Delivery System: User's Guide .
FILENAME, CLIPBAORD Access Method
enables you to read text data from and write text data to the clipboard on the host machine.
DECLARE
declares a DATA step component object; creates an instance of and initializes data for a DATA step component object.
_NEW_
creates an instance of a DATA step component object.
PUTLOG
writes a message to the SAS log.
The following statements are enhanced:
FILENAME, FTP Access Method
supports directory services and multiple FTP service commands.
FILENAME, URL Access Method
supports Secure Sockets Layering (SSL).
LIBNAME statement
has new options:
COMPRESS= controls the compression of observations in output SAS data sets in a SAS data library.
CVPBYTES= specifies the number of bytes to expand character variable lengths when processing a SAS data set that requires transcoding.
CVPENGINE= specifies the engine to use in order to process character variable lengths for a SAS data set that requires transcoding.
CVPMULTIPLIER= specifies a multiplier value in order to expand character variable lengths when processing a SAS data set that requires transcoding.
INENCODING= overrides the encoding for input processing.
OUTENCODING= overrides the encoding for output processing.
The following system options are new:
ARMAGENT=
specifies an ARM agent, which is an executable module that contains a vendor's implementation of the ARM API.
ARMLOC=
specifies the location of the ARM log.
ARMSUBSYS=
enables and disables the ARM subsystems that determine the internal SAS processing transactions to be logged.
AUTHPROVIDERDOMAIN=
associates a domain suffix with an authentication provider.
AUTOSAVELOC=
specifies the location of the Program Editor autosave file.
BYSORTED
specifies whether observations in one or more data sets are sorted in alphabetic or numeric order or are grouped in another logical order.
CMPLIB=
specifies one or more SAS catalogs that contain compiler subroutines to be included during program compilation.
CMPOPT=
specifies the type of code generation optimizations to use in the SAS language compiler.
CPUCOUNT=
specifies the number of processors that the thread-enabled applications should assume are available for concurrent processing.
DMSLOGSIZE=
specifies the maximum number of rows that the SAS windowing environment Log window can display.
DMSOUTSIZE=
specifies the maximum number of rows that the SAS windowing environment Output window can display.
DMSSYNCHK
enables syntax checking for multiple steps in the SAS windowing environment.
DTRESET
updates date and time in the SAS log and in the listing file.
EMAILAUTHPROTOCOL=
specifies the authentication protocol for SMTP e-mail.
EMAILID=
specifies the identity of the individual sending e-mail from within SAS.
EMAILPW=
specifies your e-mail login password.
ERRORBYABEND
specifies how SAS responds to BY- group error conditions.
FONTSLOC=
specifies the location that contains the SAS fonts that are loaded by a printer to use with Universal Printing.
HELPENCMD
controls whether SAS uses the English version or the translated version of the keyword list for the command-line Help.
IBUFSIZE=
specifies the buffer page size for an index file.
LOGPARM=
controls when SAS log files are opened and closed and, in conjunction with the LOG= system option, how they are named.
METAAUTORESOURCES=
identifies resources to be assigned at SAS start-up.
METACONNECT=
identifies the named connection from the metadata user profiles to use as the default values for logging into the SAS Metadata Server.
METAENCRYPTALT=
specifies the type of encryption to use when communicating with a SAS Metadata Server.
METAENCRYPTLEVEL=
specifies what is to be encrypted when communicating with a SAS Metadata Server.
METAID=
identifies the current SAS version installed on the SAS Metadata Server.
METAPASSWORD=
sets the default password for the SAS Metadata Server.
METAPORT=
sets the TCP port for the SAS Metadata Server.
METAPROFILE=
identifies the file that contains the SAS Metadata Server user profiles.
METAPROTOCOL=
sets the network protocol for communicating with the SAS Metadata Server.
METAREPOSITORY=
sets the default SAS Metadata Repository to use on the SAS Metadata Server.
METASERVER=
sets the address of the SAS Metadata Server.
METAUSER=
sets the default user identification for logging on to the SAS Metadata Server.
PAGEBREAKINITIAL
begins the SAS log and listing files on a new page.
QUOTELENMAX
specifies that SAS write a warning to the SAS log about the maximum length that can be used for strings that are enclosed in quotation marks.
SORTEQUALS
controls the order in which PROC SORT arranges observations that have identical BY values in the output data set.
SYSPRINTFONT
sets the font for the current default printer.
SYNTAXCHECK
specifies whether to validate SAS program syntax.
TERMSTMT=
specifies the SAS statements to be executed when the SAS session is terminated .
TEXTURELOC=
specifies the location of textures and images that are used by ODS styles.
THREADS
specifies that SAS use threaded processing if it is available.
TOOLSMENU
specifies to include or suppress the Tools menu in windows that display SAS menus .
UUIDCOUNT
specifies the number of UUIDs to acquire each time the UUID Generator Daemon is used.
UUIDGENHOST
identifies the host and the port of the UUID Generator Daemon.
UTILLOC=
specifies a set of file system locations in which applications can store utility files.
VALIDFMTNAME=
controls the length of format and informat names that can be used when creating new SAS data sets and format catalogs.
VIEWMENU
specifies to include or suppress the View menu in windows that display menus.
V6CREATEUPDATE=
controls or monitors the creation of new Version 6 data sets or the updating of existing Version 6 data sets.
The following system options have been enhanced:
CMPOPT=
specifies the type of code generation optimizations to use in the SAS language compiler.
SORTSIZE=
specifies the amount of memory that is available when using the SORT procedure.