Makro zum Auflisten der Variablen eines Datasets

Dieser Code ist auch verfügbar auf: English Español Français
Schwierigkeitsgrad
Anfänger
Veröffentlicht am :
Das Makro '%getVarList' wurde entwickelt, um die Namen aller Variablen eines bestimmten SAS©-Datensatzes zu extrahieren. Es akzeptiert zwei Parameter: 'libds' (der zweistufige Datensatzname, mit 'sashelp.class' als Standardwert) und 'dlm' (das Trennzeichen, das zum Trennen der Variablennamen in der Ausgabekette verwendet werden soll, wobei das Leerzeichen das Standardtrennzeichen ist). Das Makro verwendet die Makrofunktionen '%sysfunc(open)', '%sysfunc(attrn)' und '%sysfunc(varname'), um den Datensatz zu öffnen, die Anzahl der Variablen zu bestimmen und den Namen jeder Variablen abzurufen. Anschließend werden diese Variablennamen unter Verwendung des angegebenen Trennzeichens zu einer einzigen Zeichenfolge zusammengeführt. Falls das Öffnen des Datensatzes fehlschlägt, wird eine Fehlermeldung angezeigt. Das Ergebnis ist die Zeichenfolge, die die Variablenliste enthält.
Datenanalyse

Type : SASHELP


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!
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
8 %put %getVarList(libds=sashelp.class);
9 @code_sas_json/hsdua2304@gmail.com_SAS_Assignment_1.json
10 
11 #macrofunction
12 
13***/
14 
15%macro getVarList(libds=sashelp.class /* two level name */
16 ,dlm=%str( ) /* provide delimeter (eg comma or space) to separate vars */
17 );
18 /* declare local vars */
19 %local outvar dsid nvars x rc dlm;
20 
21 /* open dataset in macro */
22 %let dsid=%sysfunc(open(&libds));
23 
24 %IF &dsid %THEN %DO;
25 %let nvars=%sysfunc(attrn(&dsid,NVARS));
26 %IF &nvars>0 %THEN %DO;
27 /* add first dataset variable to global macro variable */
28 %let outvar=%sysfunc(varname(&dsid,1));
29 /* add remaining variables with supplied delimeter */
30 %DO x=2 %to &nvars;
31 %let outvar=&outvar.&dlm%sysfunc(varname(&dsid,&x));
32 %END;
33 %END;
34 %let rc=%sysfunc(close(&dsid));
35 %END;
36 %ELSE %DO;
37 %put unable to open &libds (rc=&dsid);
38 %let rc=%sysfunc(close(&dsid));
39 %END;
40 /* return the value */
41 &outvar
42%mend;
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.