Date: Fri, 10 Nov 2000 13:09:19 -0500
Reply-To: Ian Whitlock <WHITLOI1@WESTAT.COM>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: Ian Whitlock <WHITLOI1@WESTAT.COM>
Subject: Re: How to convert all variable names into upper cases?
Content-Type: text/plain; charset="iso-8859-1"
Victor,
Just put
options validvarname = upcase ;
in your autoexec. This will probably solve any problems with needing upper
case names.
If you really need to change the names of an existing data set then I would
suggest modifying your macro to use PROC DATASETS to do the renaming, since
there is no need to copy data just to rename variables. In this case be
sure that
options validvarname = v7 ;
during the renaming process.
Ian Whitlock <whitloi1@westat.com>
-----Original Message-----
From: Victor Kamensky [mailto:kamensky@AECOM.YU.EDU]
Sent: Friday, November 10, 2000 12:36 PM
To: SAS-L@LISTSERV.UGA.EDU
Subject: How to convert all variable names into upper cases?
Hi,SAS-L-ers!
a). The problem. (V8).
Variable names can be in uppercase and in lowercase.
Sometimes alphabetical order in proc contents is desired.
How to convert all variable names into upper cases?
b) My quick tested solution:
%macro upvar(dataset);
proc contents noprint data=&dataset out=_c_(keep=name);run;
%let nobs=0;
data _c_; set _c_; length upname $ 32;
upname=upcase(name);
if upname^=name;
call symput('nobs','1');
run;
%if &nobs > 0 %then
%do ;
data _null_; set _c_ end=last;
if _N_=1 then
call execute("data &dataset; set &dataset; rename");
call execute(name||'='||upname);
if last then
call execute("; run;");
run;
%end;
%mend upvar;
c) I understand my solution is old-fashioned.
Surely someone can come with a modern solution.
But will it be simpler? Or (and) shorter?
Victor Kamensky
Programmer
Albert Einstein College of Medicine