La macro utiliza el dataset interno SASHELP.CLASS por defecto para demostrar su funcionalidad. Sin embargo, está diseñada para funcionar con cualquier dataset SAS válido proporcionado a través del parámetro 'libds', ya sea interno o externo. No crea ni modifica datos, sino que extrae metadatos (nombres de variables).
1 Bloque de código
MACRO %getVarList
Explicación : Este bloque define la macro '%getVarList'. Declara variables macro locales. La función '%sysfunc(open(&libds))' intenta abrir el dataset especificado y devuelve un identificador de dataset (dsid) o 0 en caso de fallo. Si la apertura es exitosa, '%sysfunc(attrn(&dsid,NVARS))' recupera el número de variables. Un bucle recorre luego todas las variables usando '%sysfunc(varname(&dsid,&x))' para obtener su nombre. Los nombres se concatenan en la variable macro 'outvar' usando el delimitador 'dlm'. Finalmente, el dataset se cierra con '%sysfunc(close(&dsid))' y se devuelve la cadena resultante 'outvar'.
¡Copiado!
/***
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_ accessPersonalCaslibs Action.html 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_ accessPersonalCaslibs Action.html 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
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Copyright (c) 2001-2006 Rodney Sparapani (del archivo _version.sas); Copyright 2010-2023 HMS Analytical Software GmbH (del archivo assert_i_config_usage_configtest.sas). Los comentarios en la macro analizada también hacen referencia a 'Allan Bowe'.
Documentación relacionada
Aucune documentation spécifique pour cette catégorie.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.