Copy Any File With SAS

The code below copies a file byte by byte - so can be used to copy any file, even pictures!  It is also platform agnostic (will work on both Unix and Windows).


%macro copyFile(in,out);
/_ these IN and OUT filerefs can point to any file /
filename in ”&in”;
filename out ”&out”;

/ copy the file byte-for-byte  /
data _null;
  length filein 8 fileid 8;
  filein = fopen(‘in’,‘I’,1,‘B’);
  fileid = fopen(‘out’,‘O’,1,‘B’);
  rec = ‘20’x;
  do while(fread(filein)=0);
     rc = fget(filein,rec,1);
     rc = fput(fileid, rec);
     rc =fwrite(fileid);
  end;
  rc = fclose(filein);
  rc = fclose(fileid);
run;

filename in clear;
filename out clear;
%mend;

Credit for this code given to Chris Hemedinger!