Publié le :
Macro MIXTE

Macro pour retourner un attribut caractère d'un dataset

Cette macro prend en entrée un nom de table SAS© et un nom d'attribut (par exemple, LIB, LABEL, SORTEDBY). Elle utilise les fonctions %SYSFUNC, OPEN, ATTRC et CLOSE pour ouvrir la table, lire la valeur de l'attribut spécifié, et retourner cette valeur. Une validation est effectuée pour s'assurer que l'attribut demandé est bien un attribut de type caractère valide. La macro gère également le cas où la table n'existerait pas, retournant un code d'erreur.
Analyse des données

Type : MIXTE


La macro ne contient pas de données en propre. Elle est conçue pour opérer sur n'importe quel ensemble de données SAS passé en paramètre. Les exemples fournis dans les commentaires montrent une utilisation avec la bibliothèque SASHELP et une table de travail (WORK).

1 Bloc de code
MACRO
Explication :
Ce bloc définit la macro 'smile_attrc'. Elle prend deux paramètres : 'data' (la table) et 'attrib' (l'attribut). Elle vérifie d'abord si la valeur de 'attrib' est valide parmi une liste prédéfinie. Ensuite, elle ouvre la table avec %SYSFUNC(OPEN), récupère la valeur de l'attribut avec %SYSFUNC(ATTRC), puis referme la table avec %SYSFUNC(CLOSE). La valeur de l'attribut est retournée comme sortie de la macro. Des messages d'erreur sont affichés dans le journal SAS si l'attribut est invalide ou si la table n'existe pas.
Copié !
1%MACRO smile_attrc(DATA, attrib) / MINOPERATOR MINDELIMITER=',';
2 %LOCAL dsid rc macro;
3 
4 %LET macro = &sysmacroname;
5 
6 %* check: ATTRIB must contain valid options;
7 %IF NOT (%UPCASE(&attrib) IN (CHARSET,COMPRESS,DATAREP,ENCODING,ENCRYPT,ENGINE,LABEL,LIB,MEM,MODE,MTYPE,
8 SORTEDBY,SORTLVL,SORTSEQ,TYPE))
9 %THEN %DO;
10 %PUT %STR(ERR)OR: ¯o - Invalid value for ATTRIB (&attrib).;
11 -1
12 %RETURN;
13 %END;
14 
15 %* perform ACTION and put value for processing;
16 %LET dsid=%SYSFUNC(OPEN(&DATA,is));
17 
18 %IF &dsid EQ 0
19 %THEN %DO;
20 %PUT %STR(ERR)OR: ¯o - DATA (&DATA) does not exist.;
21 -1
22 %END;
23 %ELSE %DO;
24 %SYSFUNC(attrc(&dsid,&attrib))
25 %LET rc=%SYSFUNC(CLOSE(&dsid));
26 %END;
27%MEND smile_attrc;
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 : Author: Katja Glass, Creation: 2021-02-19, License: MIT. La macro est basée sur du code de Roland Rashleigh-Berry.