1
0
mirror of https://github.com/sasjs/core.git synced 2025-12-10 14:04:36 +00:00
Files
core/xplatform/mx_getcode.sas

58 lines
1.6 KiB
SAS

/**
@file
@brief Fetches code from Viya Job, SAS 9 STP, or SASjs Server STP
@details When building applications that run on multiple flavours of SAS, it
is convenient to use a single macro (like this one) to fetch the source
code from a Viya Job, SAS 9 Stored Process, or SASjs Stored Program.
The alternative would be to compile a generic macro in target-specific
folders (SASVIYA, SAS9 and SASJS). This avoids compiling unnecessary macros
at the expense of a more complex sasjsconfig.json setup.
@param [in] loc The full path to the Viya Job, SAS 9 Stored Process or SASjs
Stored Program in Drive or Metadata, WITHOUT the .sas extension (SASjs only)
@param [out] outref= (0) The fileref to create, which will contain the source
code.
<h4> SAS Macros </h4>
@li mf_getplatform.sas
@li mm_getstpcode.sas
@li ms_getfile.sas
@li mv_getjobcode.sas
@author Allan Bowe
**/
%macro mx_getcode(loc,outref=0
)/*/STORE SOURCE*/;
%local platform name shortloc;
%let platform=%mf_getplatform();
%if &platform=SASJS %then %do;
%ms_getfile(&loc..sas, outref=&outref)
%end;
%else %if &platform=SAS9 or &platform=SASMETA %then %do;
%mm_getstpcode(tree=&loc,outref=&outref)
%end;
%else %if &platform=SASVIYA %then %do;
/* extract name & path from &loc */
data _null_;
loc=symget('loc');
name=scan(loc,-1,'/');
shortloc=substr(loc,1,length(loc)-length(name)-1);
call symputx('name',name,'l');
call symputx('shortloc',shortloc,'l');
run;
%mv_getjobcode(
path=&shortloc,
name=&name,
outref=&outref
)
%end;
%else %put &sysmacroname: &platform is unsupported!!!;
%mend mx_getcode;