The SAS Output Delivery System and reporting techniques

The Proper function

Reply
N/A
Posts: 0

The Proper function

In Excel there is a proper function, quote from their help:

"Capitalizes the first letter in a text string and any other letters in text that follow any character other than a letter. Converts all other letters to lowercase letters."

There is no equivalent SAS function (I think), but is there is easier way than this?

data _null_;
label='I nEED tO_BE/mAdE PRopeR!';
label=lowcase(label);
z=1;
do i=1 to length(label);
if 97 le rank(substr(label,i,1)) le 122 then y=0;
else y=1;
if z=1 then substr(label,i,1)=upcase(substr (label,i,1));
z=y*1;
end;
put label=;
run;
N/A
Posts: 0

Re: The Proper function

Posted in reply to deleted_user
Here is the code that will convert first letter of string to upcase.

/**Macro to convert 1st letter to uppercase**/
%macro UpfirstLetter(Invar);
&Invar.=compbl(lowcase(&Invar.));
length next $ 50;
i=0;
do until(next=' ');
i+1;
next=scan(&Invar.,i," ' '- , . / : ");
pos=index(&Invar.,trim(next));
substr(&Invar.,pos,1)=upcase(substr(&Invar.,pos,1));
end;
%mend UpFirstLetter;
*%UpFirstLetter(name);
N/A
Posts: 0

Re: The Proper function

Posted in reply to deleted_user
You need to use the propcase function. Syntax:
propcase(var)

This will do what you are trying to do.
N/A
Posts: 0

Re: The Proper function

Posted in reply to deleted_user
Quote Q:
"You need to use the propcase function. Syntax:
propcase(var)

This will do what you are trying to do. "

I am using version 8.2 and there is no such function. Is this a new function in version 9?
N/A
Posts: 0

Re: The Proper function

Posted in reply to deleted_user
Propcase() is new in SAS 9. Try the code I posted, should give you what you are looking for.
N/A
Posts: 0

Re: The Proper function

Posted in reply to deleted_user
Thanks snk1!
Ask a Question
Discussion stats
  • 5 replies
  • 571 views
  • 0 likes
  • 1 in conversation