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é !
%MACRO smile_attrc(data, attrib) / MINOPERATOR MINDELIMITER=',';
%LOCAL dsid rc macro;
%LET macro = &sysmacroname;
%* check: ATTRIB must contain valid options;
%IF NOT (%UPCASE(&attrib) IN (CHARSET,COMPRESS,DATAREP,ENCODING,ENCRYPT,ENGINE,LABEL,LIB,MEM,MODE,MTYPE,
SORTEDBY,SORTLVL,SORTSEQ,TYPE))
%THEN %DO;
%PUT %STR(ERR)OR: ¯o - Invalid value for ATTRIB (&attrib).;
-1
%RETURN;
%END;
%* perform action and put value for processing;
%LET dsid=%SYSFUNC(OPEN(&data,is));
%IF &dsid EQ 0
%THEN %DO;
%PUT %STR(ERR)OR: ¯o - DATA (&data) does not exist.;
-1
%END;
%ELSE %DO;
%SYSFUNC(attrc(&dsid,&attrib))
%LET rc=%SYSFUNC(CLOSE(&dsid));
%END;
%MEND smile_attrc;
%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.
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.