Das Makro verwendet standardmäßig das interne SASHELP.CLASS-Dataset, um seine Funktionalität zu demonstrieren. Es ist jedoch darauf ausgelegt, mit jedem gültigen SAS-Dataset zu arbeiten, das über den Parameter 'libds' bereitgestellt wird, unabhängig davon, ob es intern oder extern ist. Es erstellt oder ändert keine Daten, sondern extrahiert Metadaten (Variablennamen).
1 Codeblock
MACRO %getVarList
Erklärung : Dieser Block definiert das Makro '%getVarList'. Er deklariert lokale Makrovariablen. Die Funktion '%sysfunc(open(&libds))' versucht, das angegebene Dataset zu öffnen und gibt eine Dataset-ID (dsid) oder 0 bei Fehlschlag zurück. Wenn das Öffnen erfolgreich ist, ruft '%sysfunc(attrn(&dsid,NVARS))' die Anzahl der Variablen ab. Eine Schleife iteriert dann durch alle Variablen unter Verwendung von '%sysfunc(varname(&dsid,&x))', um deren Namen zu erhalten. Die Namen werden dann in der Makrovariable 'outvar' unter Verwendung des Trennzeichens 'dlm' verkettet. Schließlich wird das Dataset mit '%sysfunc(close(&dsid))' geschlossen und die resultierende Zeichenfolge 'outvar' zurückgegeben.
Kopiert!
/***
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
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : 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'.
Zugehörige Dokumentation
Aucune documentation spécifique pour cette catégorie.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.