| Functions and CALL Routines | 
Returns a character string with
specified characters removed from
the original string.
| Category: | 
Character
 | 
| Restriction: | 
I18N Level 0
 | 
| Tip: | 
DBCS equivalent function is KCOMPRESS in 
SAS National Language Support (NLS): Reference Guide.
 | 
| 
COMPRESS(<source><, chars><,
modifiers>)
 | 
- 
source
 
- 
specifies a character constant, variable,
or expression from which specified characters will be removed.
 
- 
chars
 
- 
specifies a character constant, variable,
or expression that initializes a list of characters. 
By default, the characters in this list are removed from the source argument. If you specify the K
modifier in the third
argument, then only the characters in this list are kept in the result.
| Tip: | 
You can add more characters
to this list by using other modifiers in the third argument. | 
| Tip: | 
Enclose a literal string
of characters in quotation marks. | 
 
- 
modifier
 
- 
specifies a character constant, variable,
or expression in which each non-blank character modifies the action of the
COMPRESS function. Blanks are ignored. The following characters can be used
as modifiers:
| 
a or A | 
 
adds alphabetic characters to the
list of characters.  | 
| 
c or C | 
 
adds control characters to the list
of characters.  | 
| 
d or D | 
 
adds digits to the list of characters.  | 
| 
f or F | 
 
adds the underscore character and
English letters to the list of characters.  | 
| 
g or G | 
 
adds graphic characters to the list
of characters.  | 
| h or H | 
 adds a horizontal tab to the list of characters.  | 
| 
i or I | 
 
ignores the case of the characters
to be kept or removed.  | 
| 
k or K | 
 
keeps the characters in the list
instead of removing them.  | 
| 
l or L | 
 
adds lowercase letters to the list
of characters.  | 
| 
n or N | 
 
adds digits, the underscore character,
and English letters to the list of characters.  | 
| 
o or O | 
 
processes the second and third arguments
once rather than every time the COMPRESS function is called. Using the O modifier
in the DATA step (excluding WHERE clauses), or in the SQL procedure, can make
COMPRESS run much faster when you call it in a loop where the second and third
arguments do not change.  | 
| 
p or P | 
 
adds punctuation marks to the list
of characters.  | 
| 
s or S | 
 
adds space characters (blank, horizontal
tab, vertical tab, carriage return, line feed, and form feed) to the list
of characters.  | 
| 
t or T | 
 
trims trailing blanks from the first
and second arguments.  | 
| 
u or U | 
 
adds uppercase letters to the list
of characters.  | 
| 
w or W | 
 
adds printable characters to the
list of characters.  | 
| 
x or X | 
 
adds hexadecimal characters to the
list of characters.  | 
| Tip: | 
If the modifier
is a constant, enclose it in quotation marks. Specify multiple constants in
a single set of quotation marks. Modifier can
also be expressed as a variable or an expression. | 
 
In a DATA
step, if the COMPRESS function returns a value to a variable that has not
previously been assigned a length, then that variable is given the length
of the first argument.
The COMPRESS function allows
null arguments. A null argument is treated as a string that has a length of
zero.
Based on the number of arguments, the COMPRESS functions
works as follows:
  | 
Number of Arguments | 
  
Result | 
  | 
only the first argument, source | 
  
The argument has all blanks removed. If the argument
is completely blank, then the result is a string with a length of zero. If
you assign the result to a character variable with a fixed length, then the
value of that variable will be padded with blanks to fill its defined length. | 
  | 
the first two arguments, source
and chars | 
  
All characters that appear in the second argument are
removed from the result. | 
  | 
three arguments, source, chars, and
modifier(s) | 
  
The K modifier (specified in the third argument) determines
whether the characters in the second argument are kept or removed from the
result. | 
The COMPRESS function compiles a list of characters
to keep or remove, comprising the characters in the second argument plus any
types of characters that are specified by the modifiers. For example, the
D modifier specifies digits. Both of the following function calls remove digits
from the result:
COMPRESS(source, "1234567890");
COMPRESS(source, , "d");
To remove digits and plus or minus signs, you can use
either of the following function calls:
COMPRESS(source, "1234567890+-");
COMPRESS(source, "+-", "d");
  | 
SAS Statements | 
  
Results  | 
  
  | 
  
----+----1 
 | 
  
a='AB C D ';
b=compress(a);
put b; 
 | 
  
 
ABCD 
 | 
  | 
SAS Statements | 
  
Results  | 
  
  | 
  
----+----1----+----2----+----3 
 | 
  
x='123-4567-8901 B 234-5678-9012 c';
y=compress(x,'ABCD','l');
put y; 
 | 
  
  
123-4567-8901 234-5678-9012 
 | 
  | 
SAS Statements | 
  
Results  | 
  
  | 
  
----+----1 
 | 
  
x='1    2    3    4    5';
y=compress(x,,'s');
put y; 
 | 
  
 
12345 
 | 
  | 
SAS Statements | 
  
Results  | 
  
  | 
  
----+----1 
 | 
  
x='Math A English B Physics A';
y=compress(x,'ABCD','k');
put y; 
 | 
  
 
ABA 
 | 
  | 
SAS Statements | 
  
Results | 
  
  | 
  
----+----1 
 | 
  
x=' ';
l=lengthn(compress(x));
put l; 
  | 
  
 
0 
  | 
 
Copyright © 2011 by SAS Institute Inc., Cary, NC, USA. All rights reserved.