Le code opère sur le catalogue `work.sasmacr` de la session SAS courante, qui contient les macros compilées. Il crée un jeu de données temporaire `_listmac` dans la bibliothèque `WORK` pour stocker la liste des macros avant de les filtrer avec `PROC SQL`. Aucune donnée externe n'est lue ou requise pour son fonctionnement.
1 Bloc de code
MACRO DEFINITION
Explication : Ce bloc définit la macro `delmac` avec un paramètre `like`. Il initialise des variables locales, capture l'état actuel de l'option `notes` de SAS et la désactive pour la durée de la macro. Il effectue également une validation du paramètre `like` et le pré-traite pour la recherche SQL en le passant en majuscules et en remplaçant les ':' par '%'.
Explication : Ce bloc utilise `PROC CATALOG` pour lister toutes les entrées de type 'macro' du catalogue `work.sasmacr` et les écrit dans un jeu de données temporaire nommé `_listmac`.
Explication : Ce bloc `PROC SQL` sélectionne les noms de macros du jeu de données temporaire `_listmac` qui correspondent au motif fourni par le paramètre `like`. Les noms de macros trouvés sont concaténés dans la variable macro `delmac`, séparés par des espaces. L'option `escape '\'` permet d'utiliser le caractère '\' pour échapper les caractères génériques SQL ('_').
Copié !
proc sql noprint;
select name into :delmac separated by " " from _listmac
where name like "&like" escape '\';
quit;
1
PROC SQL noprint;
2
select name into :delmac separated BY" " from _listmac
3
where name like "&like" escape '\';
4
QUIT;
4 Bloc de code
PROC DATASETS
Explication : Ce bloc utilise `PROC DATASETS` pour supprimer le jeu de données temporaire `_listmac`, qui n'est plus nécessaire après l'extraction des noms de macros.
Copié !
proc datasets nolist;
delete _listmac;
quit;
1
2
PROC DATASETS nolist;
3
delete _listmac;
4
5
QUIT;
6
5 Bloc de code
PROC CATALOG
Explication : Ce bloc conditionnel vérifie si la variable macro `delmac` contient des noms de macros (c'est-à-dire si des macros correspondant au motif ont été trouvées). Si c'est le cas, `PROC CATALOG` est utilisé pour supprimer ces macros du catalogue `work.sasmacr`.
Explication : Ce bloc gère la logique de sortie de la macro. Il inclut une étiquette `%exit:` pour la gestion des erreurs (si aucun motif 'like' n'est fourni) et une étiquette `%skip:` pour la fin normale de l'exécution. Enfin, il restaure l'option SAS `notes` à sa valeur d'origine, assurant que la macro n'affecte pas durablement l'environnement SAS.
%exit: %put &err: (delmac) No "like" string supplied;
3
%skip:
4
5
options &savopts;
6
7
%mend delmac;
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.
Informations de Copyright : This is public domain software. No guarantee as to suitability or accuracy is given or implied. User uses this code entirely at their own risk.
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.