Le script n'utilise pas de sources de données externes ou de datasets SAS traditionnels. Il interagit directement avec le service de métadonnées SAS. Les informations nécessaires sont soit fournies en tant que paramètre macro (`target`), soit générées dynamiquement (XML de requête) au sein du script lui-même. Aucune donnée provenant de SASHELP ou d'autres sources non gérées n'est requise.
1 Bloc de code
Macro Définition
Explication : Ce bloc définit la macro SAS `%mm_deletedocument`. Elle est conçue pour être appelée avec un paramètre `target`, qui est le chemin complet de l'objet 'Document' de métadonnées à supprimer.
Explication : Ce `DATA STEP _null_` initialise des variables locales (`type`, `uri`) et utilise la fonction `metadata_pathobj` pour interroger le référentiel de métadonnées afin de vérifier l'existence de l'objet spécifié par `&target` et d'en obtenir le type ('Note') et l'URI. Les informations récupérées sont stockées dans les macro-variables `type` et `stpuri`. Si l'objet n'est pas un 'Document' ou n'est pas trouvé, un message d'avertissement est émis et la macro se termine.
Copié !
/**
* Check document exist
*/
%local type;
data _null_;
length type uri $256;
rc=metadata_pathobj("","&target",'Note',type,uri);
call symputx('type',type,'l');
call symputx('stpuri',uri,'l');
run;
%if &type ne Document %then %do;
%put %str(WARN)ING: No Document found at ⌖
%return;
%end;
Explication : Ce bloc prépare des fichiers temporaires pour l'entrée (`__in`) et la sortie (`__out`) de la procédure `proc metadata`. Un `DATA STEP _null_` est utilisé pour générer un document XML de suppression de métadonnées, incluant l'URI du document à supprimer (`&stpuri`), et l'écrire dans le fichier `__in`. La `proc metadata` est ensuite invoquée avec ces fichiers pour soumettre la requête de suppression au serveur de métadonnées SAS.
Copié !
filename __in temp lrecl=10000;
filename __out temp lrecl=10000;
data _null_ ;
file __in ;
put "<DeleteMetadata><Metadata><Document Id='&stpuri'/>";
put "</Metadata><NS>SAS</NS><Flags>268436480</Flags><Options/>";
put "</DeleteMetadata>";
run ;
proc metadata in=__in out=__out verbose;run;
1
filename __in temp lrecl=10000;
2
filename __out temp lrecl=10000;
3
DATA _null_ ;
4
file __in ;
5
put "<DeleteMetadata><Metadata><Document Id='&stpuri'/>";
6
put "</Metadata><NS>SAS</NS><Flags>268436480</Flags><Options/>";
7
put "</DeleteMetadata>";
8
RUN ;
9
PROC METADATA in=__in out=__out verbose;RUN;
4 Bloc de code
DATA STEP
Explication : Ce `DATA STEP _null_` lit et affiche le contenu du fichier `__out`, qui contient la réponse du serveur de métadonnées suite à l'opération de suppression. Cela permet de visualiser le statut de l'opération. Ensuite, les définitions des fileref `__in` et `__out` sont effacées.
Copié !
/* list the result */
data _null_;infile __out; input; list; run;
filename __in clear;
filename __out clear;
1
/* list the result */
2
DATA _null_;INFILE __out; INPUT; list; RUN;
3
4
filename __in clear;
5
filename __out clear;
5 Bloc de code
DATA STEP
Explication : Ce bloc effectue une vérification finale pour s'assurer que le document a bien été supprimé. La fonction `metadata_pathobj` est appelée à nouveau pour vérifier l'existence de l'objet à `&target`. Si le document est toujours présent (`&isgone = Document`), un message d'erreur est affiché, le code de retour système (`syscc`) est fixé à 4, et la macro se termine, indiquant que la suppression a échoué.
Copié !
/**
* Check deletion
*/
%local isgone;
data _null_;
length type uri $256;
call missing (of _all_);
rc=metadata_pathobj("","&target",'Note',type,uri);
call symputx('isgone',type,'l');
run;
%if &isgone = Document %then %do;
%put %str(ERR)OR: Document not deleted from ⌖
%let syscc=4;
%return;
%end;
%put %str(ERR)OR: Document not deleted from ⌖
13
%let syscc=4;
14
%return;
15
%END;
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.
« La macro %mm_deletedocument illustre parfaitement les meilleures pratiques d'administration du SAS Metadata Server. Contrairement à une suppression manuelle via la console, l'utilisation programmatique de PROC METADATA permet une gestion industrielle et auditable des objets de type Document. Ce type d'objet est souvent utilisé dans l'architecture Open Metadata Architecture (OMA) pour stocker des descriptions, des liens vers des fichiers externes ou des informations textuelles critiques. »
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.