CAT Function
Does not remove leading or trailing blanks, and returns a concatenated character string.
| Category: | Character |
| Restriction: | This function is assigned an I18N Level 2 status, and is designed for use with SBCS, DBCS, and MBCS (UTF8). For more information, see Internationalization Compatibility. |
| Note: | This function supports the VARCHAR type. |
| Tip: | DBCS equivalent function is KSTRCAT in SAS Viya National Language Support: Reference Guide. |
Table of Contents
Syntax
Required Argument
item
specifies a constant, variable, or expression, either character or numeric. If item is numeric, then its value is converted to a character string by using the BESTw. format. In this case, leading blanks are removed and SAS does not write a note to the log.
Details
Length of Returned Variable
In a DATA step, if the
CAT function returns a value to a variable that has not previously
been assigned a length, then that variable is given a length of 200
bytes. If the concatenation operator (||) returns a value to a variable
that has not previously been assigned a length, then that variable
is given a length that is the sum of the lengths of the values that
are being concatenated.
Length of Returned Variable: Special Cases
The CAT function returns
a value to a variable, or returns a value in a temporary buffer. The
value that is returned from the CAT function has the following length:
-
up to 200 characters in WHERE clauses and in PROC SQL
-
up to 32767 characters in the DATA step except in WHERE clauses
-
up to 65534 characters when CAT is called from the macro processor
If CAT returns a value
in a temporary buffer, the length of the buffer depends on the calling
environment, and the value in the buffer can be truncated after CAT
finishes processing. In this case, SAS does not write a message about
the truncation to the log.
If the length of the
variable or the buffer is not large enough to contain the result of
the concatenation, SAS does the following:
-
changes the result to a blank value in the DATA step, and in PROC SQL
-
writes a warning message to the log stating that the result was either truncated or set to a blank value, depending on the calling environment
-
writes a note to the log that shows the location of the function call and lists the argument that caused the truncation
-
sets _ERROR_ to 1 in the DATA step
The CAT function removes
leading and trailing blanks from numeric arguments after it formats
the numeric value with the BESTw.
format.
Comparisons
The results of the CAT,
CATS, CATT, and CATX functions are usually equivalent
to results that are produced by certain combinations of the concatenation
operator (||) and the TRIM and LEFT functions. However, the default
length for the CAT, CATS, CATT, and CATX functions is different from
the length that is obtained when you use the concatenation operator.
For more information, see Length of Returned Variable.
Using the CAT, CATS,
CATT, and CATX functions is faster than using TRIM and LEFT, and you
can use them with the OF syntax for variable lists in calling environments
that support variable lists.
The following table
shows equivalents of the CAT, CATS, CATT, and CATX functions. The
variables X1 through X4 specify character variables, and SP specifies
a delimiter, such as a blank or comma.
|
Function
|
Equivalent Code
|
|---|---|
CAT(OF X1-X4) |
X1||X2||X3||X4 |
CATS(OF X1-X4) |
TRIM(LEFT(X1))||TRIM(LEFT(X2))||TRIM(LEFT(X3))|| TRIM(LEFT(X4)) |
CATT(OF X1-X4) |
TRIM(X1)||TRIM(X2)||TRIM(X3)||TRIM(X4) |
CATX(SP, OF X1-X4) |
TRIM(LEFT(X1))||SP||TRIM(LEFT(X2))||SP|| TRIM(LEFT(X3))||SP||TRIM(LEFT(X4)) |
Example
The following example
shows how the CAT function concatenates strings.
data _null_; x=' The 2012 Olym'; y='pic Arts Festi'; z=' val included works by D '; a='ale Chihuly.'; result=cat(x, y, z, a); put result $char.; run;
SAS writes the following
output to the log:
The 2012 Olympic Arts Festi val included works by D ale Chihuly.
See Also
Copyright © SAS Institute Inc. All Rights Reserved.
Last updated: March 16, 2017