/**
@file
@brief Exports the data controller library in DB specific DDL
@details If user is in the administrator group, they can call this
service directly adding the following URL params:
@li &flavour= (SAS, PGSQL or TSQL - defaults to SAS)
@li &schema= (optional, if target schema is needed)
Data inserts are generated for the SAS and PGSQL flavours only; the TSQL
export contains DDL without inserts.
SAS Macros
@li mf_getuser.sas
@li mp_abort.sas
@li mp_ds2ddl.sas
@li mp_lib2inserts.sas
@li mp_streamfile.sas
@li mpe_getgroups.sas
@version 9.2
@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.
**/
%mpeinit()
%global flavour schema;
/* if no flavour is specified, default to SAS */
%let flavour=%sysfunc(coalescec(&flavour,SAS));
/* if no schema var provided, DC Libref is used */
%let schema=%sysfunc(coalescec(&schema,&dc_libref));
/* check user is in admin group */
%mpe_getgroups(user=%mf_getuser(),outds=work.usergroups)
data work.admins;
set work.usergroups;
put (_all_)(=);
run;
%let cnt=0;
proc sql noprint;
select count(*) into:cnt
from usergroups
where groupname="&mpeadmins";
%put &=cnt;
%mp_abort(iftrue= (&cnt=0)
,mac=&_program
,msg=%str(The &DC_LIBREF library can only be exported by &mpeadmins members)
)
%mp_ds2ddl(&DC_LIBREF
,flavour=&flavour
,schema=&schema
,applydttm=YES
,showlog=NO
,fref=tmpref
)
%mp_lib2inserts(&DC_LIBREF,flavour=&flavour,schema=&schema, outref=tmpref)
%mp_streamfile(contenttype=TEXT
,inref=tmpref
,outname=&dc_libref..ddl
)