Help using Base SAS procedures

Lenght statement

Accepted Solution Solved
Reply
Super Contributor
Posts: 1,041
Accepted Solution

Lenght statement

Hi,

I have variable VAR like shown and is left justified:

length of VAR is $5

Does that mean 593 and 555 has 2 extra spaces after the number!!!

and like wise 6940 has one space after the number???

VAR

593

6940

555

Thanks


Accepted Solutions
Solution
‎06-03-2014 03:27 PM
Super User
Posts: 5,516

Re: Lenght statement

Posted in reply to robertrao

I can't comment about the PRXCHANGE function, but otherwise the right pieces are in place.  WANT will have a length of 5, and any values that are shorter than 5 characters will have blanks added to the end.

View solution in original post


All Replies
Super Contributor
Posts: 578

Re: Lenght statement

Posted in reply to robertrao

I would answer it this way:

They all have 5 bytes allocated to the variable.  The Length function returns the length of a non-blank character string, excluding trailing blanks, and returns 1 for a blank character string

Super Contributor
Posts: 1,041

Re: Lenght statement

thanks for the reply.

I was asking because of the following condition and wondering if length 5 could be used

Diagnosis codes with fewer than five digits should be padded with spaces (not zeros) on the right.

Thanks

Super Contributor
Posts: 578

Re: Lenght statement

Posted in reply to robertrao

SAS wouldn't add zeroes unless you coded it to do that.  Default is spaces.

Super Contributor
Posts: 1,041

Re: Lenght statement

hi,

So what I did is right???

I am not adding zeros ..

then is this below condition satisfied???

Diagnosis codes with fewer than five digits should be padded with spaces (not zeros) on the right.

Super User
Posts: 5,516

Re: Lenght statement

Posted in reply to robertrao

Yes, extra blanks are stored at the end.  In a DATA step, that makes no difference and you could use any of these statements to get the same result:

if var='593' then do;

if var='593  ' then do;

if var='593          ' then do;

However, if you are using pass-through SQL with a WHERE clause, a database might not process trailing blanks in the same way.  The WHERE clause might have to add the TRIM function.

Super Contributor
Posts: 1,041

Re: Lenght statement

Posted in reply to Astounding

/*CHECKING TO SEE IF THIS ONE SATIFIES THAT CONDITION*/

data have;

input x $20.;

cards;


930.0

934

941.04

V12.09

V10.46

696.1

008.45

;

run;

data want;

set have;

length want $5.;

want=prxchange('s/\.//',-1,x);

run;

Solution
‎06-03-2014 03:27 PM
Super User
Posts: 5,516

Re: Lenght statement

Posted in reply to robertrao

I can't comment about the PRXCHANGE function, but otherwise the right pieces are in place.  WANT will have a length of 5, and any values that are shorter than 5 characters will have blanks added to the end.

Super Contributor
Posts: 1,041

Re: Lenght statement

Posted in reply to Astounding

great.

I got help on this PRXCHANGE function .

this basically removes dots from the codes

V10.46 becomes V1046

930.0 becomes 9300

934 stays 934

Do you think there is any better way to do this???

Super User
Posts: 5,516

Re: Lenght statement

Posted in reply to robertrao

Are you sure that is all that PRXCHANGE is doing?  I'm not familiar enough with it to comment, but it would have been simple to code:

want = compress(x, '.');

That would remove the dots and might be easier to understand.

Super User
Super User
Posts: 7,076

Re: Lenght statement

Posted in reply to robertrao

If you want to remove particular characters from a string then use the COMPRESS() function.

want = compress(x,'.');

Respected Advisor
Posts: 3,156

Re: Lenght statement

Posted in reply to robertrao

data have;

input x $20.;

nondot=compress(x,'.');

cards;

930.0

934

941.04

V12.09

V10.46

696.1

008.45

;

run;

Trusted Advisor
Posts: 1,230

Re: Lenght statement

Posted in reply to robertrao

In $w. informats w represents the total number of columns that contain the raw data filed.

🔒 This topic is solved and locked.

Need further help from the community? Please ask a new question.

Discussion stats
  • 12 replies
  • 391 views
  • 9 likes
  • 6 in conversation