Hi everyone,
I have performed a load process in SAS and I am hardly trying to copy a set of files of a /directory1 into a different directory, but I am facing a problem to implement this action with a simple if condition, since I need to copy these files into a /directory2 when the variable trans_rc is equal to 0 and into a /directory3 when the variable trans_rc is different from 0.
I am trying the following code, but it does not copy the files when the variable trans_rc is different from 0 (i.e. when the load process finishes with errors):
%macro skip(trans_rc,
in,
out,
);
%put **&=trans_rc.**;
%if (&trans_rc. ne 0) %then %do;
data _null_;
rc = filename("_IN_", &in.);
if rc = 0 and fexist("_IN_") then
do;
rc = filename('_OUT_',&out.);
rc = fcopy("_IN_", '_OUT_');
rc = fdelete("_IN_"); rc = filename('_OUT_');
end;
rc = filename("_IN_"); run;
%end;
%mend skip;
%skip(&trans_rc.
,'/directory1/file1'
,'/directory3/file1'
)
%skip(&trans_rc.
,'/directory1/file2'
,'/directory3/file2'
)
However, when the load process is completed without any error, then the following code works fine and the files are appropriately copied into the corresponding directory:
%macro skip(trans_rc,
in,
out,
);
%put **&=trans_rc.**;
%if (&trans_rc. eq 0) %then %do;
data _null_;
rc = filename("_IN_", &in.);
if rc = 0 and fexist("_IN_") then
do;
rc = filename('_OUT_',&out.);
rc = fcopy("_IN_", '_OUT_');
rc = fdelete("_IN_"); rc = filename('_OUT_');
end;
rc = filename("_IN_"); run;
%end;
%mend skip;
%skip(&trans_rc.
,'/directory1/file1'
,'/directory2/file1'
)
%skip(&trans_rc.
,'/directory1/file2'
,'/directory2/file2'
)
Any idea?
... View more