La macro utilise le dataset interne SASHELP.CLASS par défaut pour démontrer sa fonctionnalité. Cependant, elle est conçue pour fonctionner avec tout dataset SAS valide fourni via le paramètre 'libds', qu'il soit interne ou externe. Elle ne crée ni ne modifie de données, mais extrait des métadonnées (noms de variables).
1 Bloc de code
MACRO %getVarList
Explication : Ce bloc définit la macro '%getVarList'. Il déclare des variables macro locales. La fonction '%sysfunc(open(&libds))' tente d'ouvrir le dataset spécifié et renvoie un identifiant de dataset (dsid) ou 0 en cas d'échec. Si l'ouverture réussit, '%sysfunc(attrn(&dsid,NVARS))' récupère le nombre de variables. Une boucle parcourt ensuite toutes les variables en utilisant '%sysfunc(varname(&dsid,&x))' pour obtenir leur nom. Les noms sont concaténés dans la variable macro 'outvar' en utilisant le délimiteur 'dlm'. Enfin, le dataset est fermé avec '%sysfunc(close(&dsid))' et la chaîne résultante 'outvar' est renvoyée.
Copié !
/***
Macro to get a list of variables directly from a dataset.
WAY faster than dictionary tables or sas views, and can
also be called in macro logic (is pure macro).
Default is to have space delimited variable names in &MyGlobalVar.
@html/SAS Help Center_ isAuthorized Action.html Allan Bowe @code_sas_json/hsdua2304@gmail.com_SAS_Assignment_1.json @code_sas/_version.sas 9.2 @code_sas_json/hsdua2304@gmail.com_SAS_Assignment_1.json @code_sas/assert_i_config_usage_configtest.sas
%put %getVarList(libds=sashelp.class);
@code_sas_json/hsdua2304@gmail.com_SAS_Assignment_1.json
#macrofunction
***/
%macro getVarList(libds=sashelp.class /* two level name */
,dlm=%str( ) /* provide delimeter (eg comma or space) to separate vars */
);
/* declare local vars */
%local outvar dsid nvars x rc dlm;
/* open dataset in macro */
%let dsid=%sysfunc(open(&libds));
%if &dsid %then %do;
%let nvars=%sysfunc(attrn(&dsid,NVARS));
%if &nvars>0 %then %do;
/* add first dataset variable to global macro variable */
%let outvar=%sysfunc(varname(&dsid,1));
/* add remaining variables with supplied delimeter */
%do x=2 %to &nvars;
%let outvar=&outvar.&dlm%sysfunc(varname(&dsid,&x));
%end;
%End;
%let rc=%sysfunc(close(&dsid));
%end;
%else %do;
%put unable to open &libds (rc=&dsid);
%let rc=%sysfunc(close(&dsid));
%end;
/* return the value */
&outvar
%mend;
1
/***
2
Macro to get a list of variables directly from a dataset.
3
WAY faster than dictionary tables or sas views, and can
4
also be called in macro logic (is pure macro).
5
Default is to have space delimited variable names in &MyGlobalVar.
6
7
@html/SAS Help Center_ isAuthorized Action.html Allan Bowe @code_sas_json/hsdua2304@gmail.com_SAS_Assignment_1.json @code_sas/_version.sas 9.2 @code_sas_json/hsdua2304@gmail.com_SAS_Assignment_1.json @code_sas/assert_i_config_usage_configtest.sas
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 : Copyright (c) 2001-2006 Rodney Sparapani (du fichier _version.sas); Copyright 2010-2023 HMS Analytical Software GmbH (du fichier assert_i_config_usage_configtest.sas). Les commentaires dans la macro analysée font également référence à 'Allan Bowe'.
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.