/******************************************************************************
* Programme : Administration SAS : Comment automatiser l'extraction des contextes serveur via les métadonnées
* Reference : OBTENIC0A8
* Source : https://www.wearecas.eu/en/sampleCode/OBTENIC0A8
******************************************************************************/
/* --- BLOC 1 --- */
%macro mm_getservercontexts(
outds=work.mm_getrepos
)/*/STORE SOURCE*/;
%local repo repocnt x;
%let repo=%sysfunc(getoption(metarepository));
/* first get list of available repos */
%mm_getrepos(outds=work.repos)
/* --- BLOC 2 --- */
%let repocnt=0;
data _null_;
set repos;
where repositorytype in('CUSTOM','FOUNDATION');
keep id name ;
call symputx(cats('repo',_n_),name,'l');
call symputx('repocnt',_n_,'l');
run;
filename __mc1 temp;
filename __mc2 temp;
data &outds;
length serveruri servername $200;
call missing (of _all_);
stop;
run;
/* --- BLOC 3 --- */
%do x=1 %to &repocnt;
options metarepository=&&repo&x;
proc metadata in=
"$METAREPOSITORY
ServerContextSAS
0"
out=__mc1;
run;
/*
data _null_;
infile __mc1 lrecl=1048576;
input;
put _infile_;
run;
*/
data _null_;
file __mc2;
put '';
put "/GetMetadataObjects/Objects/ServerContext";
put "";
put '';
put "/GetMetadataObjects/Objects/ServerContext/ @Id";
put "";
put "characterstring200";
put '';
put '';
put "/GetMetadataObjects/Objects/ServerContext/ @Name";
put "";
put "characterstring200";
put '';
put '
';
run;
libname __mc3 xml xmlfileref=__mc1 xmlmap=__mc2;
proc append base=&outds data=__mc3.SASContexts;run;
libname __mc3 clear;
%end;
/* --- BLOC 4 --- */
options metarepository=&repo;
filename __mc1 clear;
filename __mc2 clear;
%mend mm_getservercontexts;