Hi,
I am trying to Unzip some files in a location connected to UNIX.
However there are several to Unzip and I thought it will be easier to code using a macro.
But I am not sure how to alter the "x" command or use the following statement in the macro
x "gunzip /sas/data/...."
Would anyone have any ideas of how to implement this code in the macro.
Thanks.
EG typically doesn't allow for X commands unless you've overridden the default settings.
Whats the parameter for your macro? The filenames? Or will you automatically scan a folder for zip files and unzip them all?
Before writing a macro first get base code working. Then determine your parameters, and then convert.
First of all, gunzip accepts a list of files on the commandline. Therefore you can use wildcard characters to name a group or groups of files.
Second, you need to have the XCMD system option enabled at startup; there is an option for that in the metadata of workspace servers. You cannot change this option during SAS runtime.
Third, you can run your gunzip command repeatedly from a dataset containing filenames with call system(). No need for a macro, unless you want to automate that (parameterized filename patterns, directories).
If you have IML Studio then you should have a bridge to R you can then do the following
library(R.utils);
wd<-getwd();
setwd("c:\\temp");
gunzip("class.sas7bdat.gz",remove=FALSE,overwrite=TRUE);
setwd(wd);
Note gunzip removes the gz file and creates c:/temp/class.sas7bdat
You can call the X command in a macro the same way you would call it outside of a macro.
%macro gunzip(filename);
x "gunzip &filename" ;
%mend gunzip;
But I find it is usually better to use a pipe to run commands since you can then capture any responses the command might make.
%macro gunzip(filename);
data _null_;
infile "gunzip &filename" pipe;
input;
put _infile_;
run;
%mend gunzip;
Have you considered using the Filename ZIP engine? Here how this could work:
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
Check out this tutorial series to learn how to build your own steps in SAS Studio.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.