SAS Functions

Concatenate Strings with CAT, CATT, CATS & CATX

Concatenate Strings in SAS

In SAS you can concatenate strings in a variety of ways. This article answers the question how to concatenate strings in SAS with the CAT, CATT, CATS and CATX function. We explain the syntax and the differences between the functions with examples.

The Syntax

The CAT, CATT and CATS have all the same syntax. Each function has two obligatory arguments and n optional arguments.

CAT(item1, item2 <, item3, item4, …, item n>)

CATT(item1, item2 <, item3, item4, …, item n>)

CATS(item1, item2 <, item3, item4, …, item n>)

The items 1 to n are the strings you want to concatenate. The CATX function has an extra, obligatory argument, namely a separator argument. With this argument, you can separate the input items in the output string.

CATX(separator, item1, item2 <,item3, item4, …, item n>)

Differences & Examples

To better explain the differences between the 4 functions we need the data set below. The data set consists of 3 character columns which will be concatenated. It’s important to realize that the first row contains leading and trailing blanks. More specifically, string1 has both leading and trailing blanks, string2 has leading blanks, and string3 has leading and trailing blanks. In the second row, the strings contain only trailing blanks.

data work.ds;
   infile datalines dlm=',' ;
   informat string1 $ CHAR15. string2 $ CHAR15. string3 $ CHAR15.;
   input string1 string2 string3;

datalines;
   A STRING   ,  SECOND STRING,   THIRD STRING 
A STRING,SECOND STRING,THIRD STRING
;
run;
SAS data set for concatenating string.

The CAT function

In SAS you can use the CAT function to simply concatenate one or more strings. It is equivalent to the concatenation operator ‘||’. This function concatenates the inputs regardless of leading or trailing blanks. See the example below.

data work.cat;
	set work.ds;
	
	cat = cat(string1, string2, string3);
	keep cat;
run;
Concatenate strings with the CAT function

Note in the image above how the CAT function ignored any leading or trailing blanks.

The CATT function

Compared to the CAT function, the CATT function does take into account the trailing blanks and removes them during the concatenation. Note the second T in the name of the function, which stands for Trailing.

data work.catt;
	set work.ds;
	
	catt = catt(string1, string2, string3);
	keep catt;
run;
Concatenate strings with the CATT function

Observe how all trailing blanks were removed during concatenation. In the second row, the string only contains the blanks of within each concatenated string. However, the first row still contains blanks because of the leading blanks.

The CATS function

Compared to the CAT and CATT functions, the CATS function removes both leading and trailing blanks while concatenating its input arguments. The S in the function name stands for Strip.

data work.cats;
	set work.ds;
	
	cats = cats(string1, string2, string3);
	keep cats;
run;
Concatenate strings with the CATS function

The image above shows the result of the concatenation with the CATS function. Both leading and trailing blanks are removed and the first and second row are the same.

The CATX function

Using the CATS function might result in a string difficult to read. To solve this problem you can use the CATX function. The CATX function removes both leading and trailing blanks and allows the user to define a separator that separates the input arguments. In the examples below we use a ‘blank’ as a separator and a ‘/’.

data work.catx1;
	set work.ds;
	
	catx = catx(' ',string1, string2, string3);
	keep catx;
run;
Concatenate strings with the CATX Function with blank separator.
data work.catx2;
	set work.ds;
	
	catx = catx('/',string1, string2, string3);
	keep catx;
run;
Concatenate string with the CATX function with / separator

So, to summarize, this article explains how to concatenate strings in SAS with the CAT, CATT, CATS, and CATX functions. The conclusions are:

  • CAT: Concatenates strings regardless of leading and trailing blanks.
  • CATT: Concatenates strings removing trailing blanks.
  • CATS: Concatenates strings removing leading and trailing blanks.
  • CATX: Concatenates strings removing leading and trailing blanks allowing the user to define a separator that separates the strings.

Other functions that use strings and that can be of interest are FIND, SCAN, SUBSTR, and TRANWRD.