La macro ne crée pas de données. Elle lit les métadonnées d'une table externe dont le nom est fourni en paramètre ('inds') pour en analyser une variable.
1 Bloc de code
%MACRO
Explication : Ce bloc définit la macro 'varlen' qui accepte trois paramètres : 'inds' (la table), 'var' (la variable), et 'IncludeDollarSign' (un indicateur pour ajouter le préfixe '$'). Elle utilise la fonction %sysfunc(open) pour obtenir un identifiant de la table. Ensuite, %sysfunc(varnum) et %sysfunc(varlen) sont utilisées pour récupérer le numéro et la longueur de la variable. La fonction %vartype détermine si la variable est de type caractère afin d'ajouter le préfixe '$' si nécessaire. La macro gère les erreurs si la table ne peut être ouverte ou si la variable n'existe pas, et affiche des messages d'erreur dans le log SAS.
Copié !
%macro varlen(inds,var,IncludeDollarSign=Y);
%local dsid varnum varlen rc ;
%if NOT %length(&IncludeDollarSign.) %then %let IncludeDollarSign = Y ;
%let IncludeDollarSign = %substr(&IncludeDollarSign.,1,1) ;
%let dsid = %sysfunc(open(&inds.,is));
%if (&dsid. NE 0) %then %do;
%let varnum = %sysfunc(varnum(&dsid.,&var.));
%if (&varnum. < 1) %then %put %upcase(Error): (VARLEN) Variable &var. not in dataset &inds. ;
%else %let varlen = %sysfunc(varlen(&dsid.,&varnum.)) ;
%let rc = %sysfunc(close(&dsid.));
%if "%vartype(&inds.,&var.)" = "C" and "&IncludeDollarSign." = "Y" %then %let varlen=$&varlen;
&varlen.
%end;
%else %do;
%put %upcase(Error): (VARLEN) Dataset &inds. not opened due to the following reason:;
%put %sysfunc(sysmsg());
%end ;
%mend ;
1
%macro varlen(inds,var,IncludeDollarSign=Y);
2
3
%local dsid varnum varlen rc ;
4
5
%IF NOT %LENGTH(&IncludeDollarSign.) %THEN %let IncludeDollarSign = Y ;
%IF"%vartype(&inds.,&var.)" = "C" and "&IncludeDollarSign." = "Y" %THEN %let varlen=$&varlen;
17
&varlen.
18
%END;
19
%ELSE %DO;
20
%put %upcase(Error): (VARLEN) Dataset &inds. not opened due to the following reason:;
21
%put %sysfunc(sysmsg());
22
%END ;
23
24
%mend ;
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.
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.