Les données proviennent des dépôts de métadonnées SAS interrogeant les contextes de serveur. Un appel à la macro `%mm_getrepos` est effectué initialement, potentiellement pour lister les dépôts de métadonnées disponibles. La sortie est un jeu de données SAS créé par la macro.
1 Bloc de code
MACRO
Explication : Définition de la macro `%mm_getservercontexts` avec un paramètre pour le jeu de données de sortie. Initialisation des variables locales et récupération du dépôt de métadonnées actuel. Appel de la macro `%mm_getrepos` pour lister les dépôts disponibles.
Copié !
%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)
1
%macro mm_getservercontexts(
2
outds=work.mm_getrepos
3
)/*/STORE SOURCE*/;
4
%local repo repocnt x;
5
%let repo=%sysfunc(getoption(metarepository));
6
7
/* first get list of available repos */
8
%mm_getrepos(outds=work.repos)
2 Bloc de code
DATA STEP Data
Explication : Crée les variables macro nécessaires et initialise le jeu de données de sortie `&outds` avec les champs requis. Prépare également les fichiers temporaires pour la gestion de la sortie XML.
Copié !
%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;
1
%let repocnt=0;
2
DATA _null_;
3
SET repos;
4
where repositorytype in('CUSTOM','FOUNDATION');
5
keep id name ;
6
call symputx(cats('repo',_n_),name,'l');
7
call symputx('repocnt',_n_,'l');
8
RUN;
9
filename __mc1 temp;
10
filename __mc2 temp;
11
DATA &outds;
12
LENGTH serveruri servername $200;
13
call missing (of _all_);
14
stop;
15
RUN;
3 Bloc de code
MACRO / PROC METADATA Data
Explication : Boucle sur chaque dépôt de métadonnées trouvé. Définit l'option `metarepository` pour le dépôt courant. Exécute `PROC METADATA` pour extraire les `ServerContext`. Génère un map XML pour structurer les données, utilise `LIBNAME XML` pour les lire, et `PROC APPEND` pour ajouter les résultats au jeu de données de sortie. Nettoie la libname XML après utilisation.
Copié !
%do x=1 %to &repocnt;
options metarepository=&&repo&x;
proc metadata in=
"<GetMetadataObjects><Reposid>$METAREPOSITORY</Reposid>
<Type>ServerContext</Type><Objects/><NS>SAS</NS>
<Flags>0</Flags><Options/></GetMetadataObjects>"
out=__mc1;
run;
/*
data _null_;
infile __mc1 lrecl=1048576;
input;
put _infile_;
run;
*/
data _null_;
file __mc2;
put '<SXLEMAP version="1.2" name="SASContexts"><TABLE name="SASContexts">';
put "<TABLE-PATH syntax='XPath'>/GetMetadataObjects/Objects/ServerContext";
put "</TABLE-PATH>";
put '<COLUMN name="serveruri">';
put "<PATH syntax='XPath'>/GetMetadataObjects/Objects/ServerContext/ @Id";
put "</PATH>";
put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>200</LENGTH>";
put '</COLUMN>';
put '<COLUMN name="servername">';
put "<PATH syntax='XPath'>/GetMetadataObjects/Objects/ServerContext/ @Name";
put "</PATH>";
put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>200</LENGTH>";
put '</COLUMN>';
put '</TABLE></SXLEMAP>';
run;
libname __mc3 xml xmlfileref=__mc1 xmlmap=__mc2;
proc append base=&outds data=__mc3.SASContexts;run;
libname __mc3 clear;
%end;
Explication : Restaure l'option `metarepository` à sa valeur d'origine. Nettoie les références aux fichiers temporaires utilisés. Termine la définition de la macro.
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
« Dans les environnements SAS complexes, les définitions de serveurs ne résident pas toujours uniquement dans le référentiel 'Foundation'. L'erreur classique est de se limiter au contexte par défaut.
La force de %mm_getservercontexts est sa capacité à itérer dynamiquement sur l'ensemble des dépôts de métadonnées (Foundation et Custom). En balayant systématiquement chaque repository, cette macro garantit une cartographie exhaustive de vos serveurs d'application (SASApp, etc.). C'est un outil indispensable pour les administrateurs qui doivent auditer l'architecture ou préparer des migrations, sans risquer de laisser des configurations 'fantômes' de côté. »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.