Der Parameter `libds` des Makros verwendet standardmäßig `sashelp.class`, einen internen SAS-Datensatz. Die in den Makro-Kommentaren enthaltenen Anwendungsbeispiele erstellen auch einen temporären Datensatz (`data test;`) intern über einen DATA-Schritt, der die Verwendung mit im Skript generierten Daten demonstriert.
1 Codeblock
MACRO
Erklärung : Dieser Block definiert das Makro `%getVarLabel`. Es öffnet einen Datensatz, der durch `libds` (oder standardmäßig `sashelp.class`) angegeben wird, unter Verwendung von `%sysfunc(open)`. Anschließend wird die Variablennummer `var` mit `%sysfunc(varnum)` ermittelt und deren Label mit `%sysfunc(varlabel)` abgerufen. Fehlermeldungen oder Hinweise werden generiert, wenn der Datensatz nicht geöffnet werden kann oder die Variable nicht gefunden wird. Schließlich wird der Datensatz geschlossen und das Label der Variablen zurückgegeben.
Kopiert!
%macro getVarLabel(libds=sashelp.class /* two level name */
, var= /* variable name for which to return the label */
);
%local dsid vnum vlabel rc;
/* Open dataset */
%let dsid = %sysfunc(open(&libds));
%if &dsid > 0 %then %do;
/* Get variable number */
%let vnum = %sysfunc(varnum(&dsid, &var));
%if(&vnum. > 0) %then
/* Variable exists, so get label */
%let vlabel = %sysfunc(varlabel(&dsid, &vnum));
%else %do;
%put NOTE: Variable &var does not exist in &libds;
%let vlabel = %str();
%end;
%end;
%else %put dataset &libds not opened! (rc=&dsid);
/* Close dataset */
%let rc = %sysfunc(close(&dsid));
/* Return variable label */
&vlabel
%mend;
1
%macro getVarLabel(libds=sashelp.class /* two level name */
2
, var= /* variable name for which to return the label */
3
);
4
%local dsid vnum vlabel rc;
5
/* Open dataset */
6
%let dsid = %sysfunc(open(&libds));
7
%IF &dsid > 0 %THEN %DO;
8
/* Get variable number */
9
%let vnum = %sysfunc(varnum(&dsid, &var));
10
%IF(&vnum. > 0) %THEN
11
/* Variable exists, so get label */
12
%let vlabel = %sysfunc(varlabel(&dsid, &vnum));
13
%ELSE %DO;
14
%put NOTE: Variable &var does not exist in &libds;
15
%let vlabel = %str();
16
%END;
17
%END;
18
%ELSE %put dataset &libds not opened! (rc=&dsid);
19
20
/* Close dataset */
21
%let rc = %sysfunc(close(&dsid));
22
/* Return variable label */
23
&vlabel
24
%mend;
2 Codeblock
DATA STEP / MACRO CALLS Data
Erklärung : Dieser Block enthält ein Beispiel für die Verwendung des Makros `%getVarLabel`. Er beginnt mit der Erstellung eines temporären Datensatzes namens `test` mit drei Variablen (`str`, `num`, `x`) und ihren zugeordneten Labels und Formaten. Anschließend wird das Makro `%getVarLabel` viermal mit verschiedenen Kombinationen von Datensätzen und Variablen aufgerufen, einschließlich Fällen, in denen die Variable existiert und in denen sie fehlt, um die Funktionalität des Makros zu demonstrieren. Die Ergebnisse der Makroaufrufe werden über die `%put`-Funktion im SAS-Log angezeigt.
Kopiert!
data test;
label str='My String' num='My Number' ;
format str $1. num datetime19. x 8.;
stop;
run;
%put %getVarLabel(ds=test, var=str);
%put %getVarLabel(ds=work.test, var=num);
%put %getVarLabel(ds=test, var=x);
%put %getVarLabel(ds=test, var=renegade);
1
DATA test;
2
label str='My String' num='My Number' ;
3
FORMAT str $1. num datetime19. x 8.;
4
stop;
5
RUN;
6
%put %getVarLabel(ds=test, var=str);
7
%put %getVarLabel(ds=work.test, var=num);
8
%put %getVarLabel(ds=test, var=x);
9
%put %getVarLabel(ds=test, var=renegade);
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) 2016 Scott Bass (sas_l_739@yahoo.com.au). Dieser Code ist unter der Unlicense-Lizenz (http://unlicense.org/UNLICENSE) lizenziert, wie in der referenzierten Datei @code_sas/@TEMPLATE.sas angegeben.
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.