dc/sas/sasjs/macros/mpeinit.sas
allan d1f0879f0a
Some checks failed
Release / release (push) Blocked by required conditions
Release / Build-production-and-ng-test (push) Successful in 3m54s
Release / Build-and-test-development (push) Has been cancelled
fix: prevent errors when using sqlrc in a DI job in a HOOK
2025-03-24 21:35:17 +00:00

124 lines
3.1 KiB
SAS
Executable File

/**
@file mpeinit.sas
@brief Initialisation file for Data Controller- sets SASAUTOs etc
@details Runs at the beginning of every service. Used to configure settings,
options and macro variables. Requires the staging area and DC library to be
preconfigured.
<h4> SAS Macros </h4>
@li dc_getsettings.sas
@li mf_fmtdttm.sas
@li mf_getuser.sas
@li mp_abort.sas
@li mp_init.sas
@param fetch= Fetch the SASjs tables. Use NO if not loading SASjs content,
eg for file upload.
@version 9.3
@author 4GL Apps Ltd
@copyright 4GL Apps Ltd. This code may only be used within Data Controller
and may not be re-distributed or re-sold without the express permission of
4GL Apps Ltd.
**/
%macro mpeinit(fetch=YES);
%global mpeinit
mpeadmins /* group with unrestricted Meditor access */
mpelocapprovals /* location for landing and staging files */
mpelib /* location of configuration tables for DC */
dc_repo_users /* location of user / group metadata */
/* extracted in dc_getsettings */
dc_activation_key
dc_licence_key
dc_locale
dc_request_logs
dc_restrict_viewer
dc_dttmtfmt /* can be overridden in dc_getsettings */
_debug /* automatic variable when provided in URL */
sasjs_mdebug /* used to show extra info when _debug is enabled */
sqlrc /* avoid errors when using DI jobs in HOOK scripts */
;
%if &mpeinit=1 %then %return;
%else %let mpeinit=1;
%mp_abort(iftrue= (&syscc ne 0)
,mac=&_program
,msg=%str(Problem on service startup (&syswarningtext &syserrortext))
)
%mp_init()
%if &fetch=YES %then %do;
%webout(FETCH)
%end;
%global _CLIENTNAME;
%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)
,mac=&_program..sas
,msg=%str(Data Controller is a web app and should not be executed from EG)
)
options urlencoding=utf8 nobomfile lrecl=32767;
%let perf=%sysfunc(datetime());
%put perfdiff: 0;
%let dc_locale=SYSTEM; /* default if not set */
/**
* E8601DT26.6 has widest database support - but not all SAS flavours can
* handle it. Override in the settings STP if needed.
*/
data _null_;
dc_dttmtfmt='"%sysfunc(datetime(),'!!"%mf_fmtdttm()"!!')"dt';
call symputx('dc_dttmtfmt',dc_dttmtfmt);
put dc_dttmtfmt=;
run;
%put &=dc_dttmtfmt;
%mp_abort(iftrue= (&syscc ne 0)
,mac=&_program
,msg=%str(syscc=&syscc prior to dc_getsettings)
)
%dc_getsettings()
%mp_abort(iftrue= (&syscc ne 0)
,mac=&_program
,msg=%str(syscc=&syscc after dc_getsettings)
)
data _null_;
set &DC_LIBREF..mpe_config(where=(
var_scope="DC"
and &dc_dttmtfmt lt tx_to
and var_active=1
));
call symputx(var_name,var_value,'G');
putlog var_name "=" var_value;
run;
%let mpelib=&dc_libref;
%let mpeadmins=&dc_admin_group;
%let mpelocapprovals=&dc_staging_area;
%let dc_repo_users=&dc_repo_users;
%if &dc_locale ne SYSTEM %then %do;
options locale=&dc_locale;
%end;
%mp_abort(iftrue= (&syscc ne 0)
,mac=&_program..sas
,msg=%str(Problem during compilation or with STP precode (&syswarningtext))
)
%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"
%then %do;
%let sasjs_mdebug=1;
%end;
%mend mpeinit;