| %macro HILDARenameStripFirst(dataset); |
| /* -------------------------------------------------------------------------- |
| Generates a rename statement of the form |
| Xvar1=var1 Xvar2=var2 etc |
| where XvarN includes all variables (except Xwaveid). |
|
| Usage example when setting up a long file: |
| data long2; |
| set hilda.combined_a (rename=(%HILDARenameStripFirst(hilda.combined_a)) in=in1) |
| hilda.combined_b (rename=(%HILDARenameStripFirst(hilda.combined_b)) in=in2); |
| if in1 then Wave=1; |
| else if in2 then Wave=2; |
| keep xwaveid hhrhid wave; |
| run; |
| proc sort data=long2;by xwaveid wave;run; |
|
| Bruce Bradbury Aug07. |
| Tested on SAS version 9.1.3 |
| I used SAS paper 107-28 by Derek Morgan as inspiration for the sysfunc calls. |
| ----------------------------------------------------------------------------- */ |
| %let DS = %sysfunc(open(&dataset,i)); /* open dataset to get variable names */ |
| %if (&DS = 0) %then %put %sysfunc(sysmsg()); /* if can't open */ |
| %else |
| %do i=1 %to %sysfunc(attrn(&DS,NVARS)); |
| %let varname = %sysfunc(varname(&DS,&i)); /* get the ith variable name */ |
| %let newvarname = %substr(&varname,2); /* strip off the first character */ |
| %if %upcase(&varname)^=XWAVEID %then %do; |
| %* output code here; |
| &varname=&newvarname |
| %end; |
| %end; |
| %let CloseCode = %sysfunc(close(&DS)); |
| %mend HILDARenameStripFirst; |