DATA Step, Macro, Functions and more

How to retain trailing blanks in substr function

Reply
Contributor
Posts: 63

How to retain trailing blanks in substr function

Hi All,

 

While using substring function, it ignores the trailing blanks , and i need to retain the trailing blanks of the string,

 

ex.

 

data b;

one= "abc ";

two=substr(one,3);

three=lengthc(one);

four=length(two);

run;

this is the output

one two three  four

abc c    7      1

Respected Advisor
Posts: 4,930

Re: How to retain trailing blanks in substr function

[ Edited ]
Posted in reply to arunasaran

Replace four=length(two) with four=lengthc(two) and you will see that the trailing blanks are kept in variable two.

 

data b;
one= "abc ";
two=substr(one, 3);
three=lengthc(one);
four=lengthc(two);
five = cat('"', two, '"');
run;

proc print; run;
PG
Super User
Posts: 7,841

Re: How to retain trailing blanks in substr function

Posted in reply to arunasaran

When you put a string into a SAS character variable that is shorter than the defined length of the variable, then it is always padded with blanks (unless you use substr() on the left side).

data test;
length x1 $5 x2 $10 x3 $20;
x1 = 'AAAAA';
x2 = 'XXXXXXXXXX';
x3 = put(x2,$hex20.);
output;
x2 = x1;
x3 = put(x2,$hex20.);
output;
run;

proc print data=test noobs;
run;

Result:

 x1      x2                     x3

AAAAA    XXXXXXXXXX    58585858585858585858
AAAAA    AAAAA         41414141412020202020
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Ask a Question
Discussion stats
  • 2 replies
  • 146 views
  • 2 likes
  • 3 in conversation