Compressing an entire dataset library using SAS
Published on 26th September 2019 Estimated Reading Time: 2 minutesTurning dataset compression for SAS datasets can produce quite a reduction in size, so it is often standard practice to do just this. It can be set globally with a single command, and many working systems do this for you:
options compress=yes;
It also can be done on a dataset by dataset option by adding (compress=yes) beside the dataset name on the data line of a data step. The size reduction can be gained retrospectively too, but only if you create additional copies of the datasets. The following code uses the DATASETS
procedure to accomplish this end at the time of copying the datasets from one library to another:
proc datasets lib=adam nolist;
copy inlib=adam outlib=adamc noclone datecopy memtype=data;
run;
quit;
The NOCLONE
option on the COPY
statement allows the compression status to be changed, while the DATECOPY
one keeps the same date/time stamp on the new file at the operating system level. Lastly, the MEMTYPE=DATA
setting ensures that only datasets are processed, while the NOLIST
option on the PROC DATASETS
line suppresses listing of dataset information.
It may be possible to do something like this with PROC COPY
too, but I know from use that the option presented here works as expected. It also does not involve much coding effort, which helps a lot.