mirror of
https://github.com/sasjs/core.git
synced 2025-12-11 06:24:35 +00:00
chore: generating all.sas and fixing indentation
This commit is contained in:
78
all.sas
78
all.sas
@@ -2723,6 +2723,83 @@ run;
|
||||
run;
|
||||
%mend mp_cleancsv;
|
||||
/** @endcond *//**
|
||||
@file
|
||||
@brief A macro to recursively copy a directory
|
||||
@details Performs a recursive directory listing then works from top to bottom
|
||||
copying files and creating subdirectories.
|
||||
|
||||
Usage:
|
||||
|
||||
%let rootdir=%sysfunc(pathname(work))/demo;
|
||||
%let copydir=%sysfunc(pathname(work))/demo_copy;
|
||||
%mf_mkdir(&rootdir)
|
||||
%mf_mkdir(&rootdir/subdir)
|
||||
%mf_mkdir(&rootdir/subdir/subsubdir)
|
||||
data "&rootdir/subdir/example.sas7bdat";
|
||||
run;
|
||||
|
||||
%mp_copyfolder(&rootdir,©dir)
|
||||
|
||||
@param source Unquoted path to the folder to copy from.
|
||||
@param target Unquoted path to the folder to copy to.
|
||||
|
||||
<h4> SAS Macros </h4>
|
||||
@li mf_getuniquename.sas
|
||||
@li mf_isdir.sas
|
||||
@li mf_mkdir.sas
|
||||
@li mp_abort.sas
|
||||
@li mp_dirlist.sas
|
||||
|
||||
<h4> Related Macros </h4>
|
||||
@li mp_copyfolder.test.sas
|
||||
|
||||
**/
|
||||
|
||||
%macro mp_copyfolder(source,target);
|
||||
|
||||
%mp_abort(iftrue=(%mf_isdir(&source)=0)
|
||||
,mac=&sysmacroname
|
||||
,msg=%str(Source dir does not exist (&source))
|
||||
)
|
||||
|
||||
%mf_mkdir(&target)
|
||||
|
||||
%mp_abort(iftrue=(%mf_isdir(&target)=0)
|
||||
,mac=&sysmacroname
|
||||
,msg=%str(Target dir could not be created (&target))
|
||||
)
|
||||
|
||||
/* prep temp table */
|
||||
%local tempds;
|
||||
%let tempds=%mf_getuniquename();
|
||||
|
||||
/* recursive directory listing */
|
||||
%mp_dirlist(path=&source,outds=work.&tempds, maxdepth=MAX)
|
||||
|
||||
/* create folders and copy content */
|
||||
data _null_;
|
||||
set work.&tempds;
|
||||
filepath2="&target/"!!substr(filepath,%length(&source)+2);
|
||||
if file_or_folder='folder' then call execute('%mf_mkdir('!!filepath2!!')');
|
||||
else do;
|
||||
length fref1 fref2 $8;
|
||||
rc1=filename(fref1,filepath,'disk','recfm=n');
|
||||
rc2=filename(fref2,filepath2,'disk','recfm=n');
|
||||
if fcopy(fref1,fref2) ne 0 then do;
|
||||
sysmsg=sysmsg();
|
||||
putlog "%str(ERR)OR: Unable to copy " filepath " to " filepath2;
|
||||
putlog sysmg=;
|
||||
end;
|
||||
end;
|
||||
rc=filename(fref1);
|
||||
rc=filename(fref2);
|
||||
run;
|
||||
|
||||
/* tidy up */
|
||||
proc sql;
|
||||
drop table work.&tempds;
|
||||
|
||||
%mend mp_copyfolder;/**
|
||||
@file mp_createconstraints.sas
|
||||
@brief Creates constraints
|
||||
@details Takes the output from mp_getconstraints.sas as input
|
||||
@@ -3337,6 +3414,7 @@ run;
|
||||
data _null_;
|
||||
set &out_ds;
|
||||
where file_or_folder='folder';
|
||||
length code $10000;
|
||||
code=cats('%nrstr(%mp_dirlist(path=',filepath,",outds=&outds"
|
||||
,",getattrs=&getattrs,level=%eval(&level+1),maxdepth=&maxdepth))");
|
||||
put code=;
|
||||
|
||||
Reference in New Issue
Block a user