SAS Programming Professionals,
Did you know that you can make an exact copy of a SAS data set in the same library as the original using a SAS procedure?
If you are thinking that you cannot use PROC COPY to do this, then you are absolutely right! PROC COPY does not have a facility for specifying a new name for the data set that is being copied.
The SAS procedure to use is… (drum roll, please): PROC APPEND! The technique to use is to append the data set you want to have “copied” to a non-existent data set with the new name that you want for the copy. For example, say that we have a SAS data set named HEART and want to create a copy of that data set named HEART_BACKUP in the same library. We would code the following:
libname ctemp "c:\temp";
proc append base=ctemp.heart_backup
That would result in the following being written to the SAS log:
2 proc append base=ctemp.heart_backup
NOTE: Appending CTEMP.HEART to CTEMP.HEART_BACKUP.
NOTE: BASE data set does not exist. DATA file is being copied to BASE file.
INFO: Engine's block-read method is in use.
INFO: Engine's block-write method is in use.
NOTE: There were 5209 observations read from the data set CTEMP.HEART.
NOTE: The data set CTEMP.HEART_BACKUP has 5209 observations and 17 variables.
I highlighted the second NOTE which states that the BASE data set—HEART_BACKUP in this case—doesn’t exist. That NOTE is confirmation that you did not overwrite an existing SAS data set, but created a copy from the original. Now you are one of the very few SAS professionals who know the secret to using a SAS procedure to copy a SAS data set to same data library as the original!
Best of luck in all your SAS endeavors!
(aka Michael A. Raithel)
Excerpt from the book: Did You Know That? Essential Hacks for Clever SAS Programmers
I plan to post each and every one of the hacks in the book to social media on a weekly basis. Please pass them along to colleagues who you know would benefit.