1
0
mirror of https://github.com/sasjs/core.git synced 2026-01-14 20:10:05 +00:00

fix: enabling fileref as output option for sas code obtained via mm_getstpcode. Also updated some doc headers and macro footers.

This commit is contained in:
Allan Bowe
2021-05-06 15:06:13 +03:00
parent 04a3189a89
commit 61701f3c6a
4 changed files with 373 additions and 64 deletions

View File

@@ -1,20 +1,23 @@
/**
@file
@brief Writes the code of an to an external file, or the log if none provided
@details Get the
@brief Writes the code of an STP to an external file
@details Fetches the SAS code from a Stored Process where the code is stored
in metadata.
usage:
Usage:
%mm_getstpcode(tree=/some/meta/path
,name=someSTP
,outloc=/some/unquoted/filename.ext
)
@param tree= The metadata path of the Stored Process (can also contain name)
@param name= Stored Process name. Leave blank if included above.
@param outloc= full and unquoted path to the desired text file. This will be
overwritten if it already exists. If not provided, the code will be written
to the log.
@param [in] tree= The metadata path of the Stored Process (can also contain
name)
@param [in] name= Stored Process name. Leave blank if included above.
@param [out] outloc= (0) full and unquoted path to the desired text file.
This will be overwritten if it already exists.
@param [out] outref= (0) Fileref to which to write the code.
@param [out] showlog=(NO) Set to YES to print log to the window
@author Allan Bowe
@@ -23,8 +26,10 @@
%macro mm_getstpcode(
tree=/User Folders/sasdemo/somestp
,name=
,outloc=
,outloc=0
,outref=0
,mDebug=1
,showlog=NO
);
%local mD;
@@ -92,14 +97,18 @@ data _null_;
stop;
%local outeng;
%if %length(&outloc)=0 %then %let outeng=TEMP;
%if "&outloc"="0" %then %let outeng=TEMP;
%else %let outeng="&outloc";
%local fref;
%if &outref=0 %then %let fref=%mf_getuniquefileref();
%else %let fref=&outref;
/* read the content, byte by byte, resolving escaped chars */
filename __outdoc &outeng lrecl=100000;
filename &fref &outeng lrecl=100000;
data _null_;
length filein 8 fileid 8;
filein = fopen("__getdoc","I",1,"B");
fileid = fopen("__outdoc","O",1,"B");
fileid = fopen("&fref","O",1,"B");
rec = "20"x;
length entity $6;
do while(fread(filein)=0);
@@ -140,9 +149,9 @@ data _null_;
rc=fclose(fileid);
run;
%if &outeng=TEMP %then %do;
%if &showlog=YES %then %do;
data _null_;
infile __outdoc lrecl=32767 end=last;
infile &fref lrecl=32767 end=last;
input;
if _n_=1 then putlog '>>stpcodeBEGIN<<';
putlog _infile_;
@@ -151,6 +160,8 @@ run;
%end;
filename __getdoc clear;
filename __outdoc clear;
%if &outref=0 %then %do;
filename &fref clear;
%end;
%mend;
%mend mm_getstpcode;