El parámetro `libds` de la macro utiliza por defecto `sashelp.class`, que es un conjunto de datos interno de SAS. Los ejemplos de uso incluidos en los comentarios de la macro también crean un conjunto de datos temporal (`data test;`) internamente a través de un paso DATA, demostrando el uso con datos generados en el script.
1 Bloque de código
MACRO
Explicación : Este bloque define la macro `%getVarLabel`. Abre un conjunto de datos especificado por `libds` (o `sashelp.class` por defecto) utilizando `%sysfunc(open)`. Luego determina el número de la variable `var` con `%sysfunc(varnum)` y recupera su etiqueta con `%sysfunc(varlabel)`. Se generan mensajes de error o notas si el conjunto de datos no se abre o si la variable no se encuentra. Finalmente, el conjunto de datos se cierra y se devuelve la etiqueta de la variable.
¡Copiado!
%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 Bloque de código
DATA STEP / MACRO CALLS Data
Explicación : Este bloque proporciona un ejemplo de uso de la macro `%getVarLabel`. Comienza creando un conjunto de datos temporal llamado `test` con tres variables (`str`, `num`, `x`) y sus etiquetas y formatos asociados. Luego, llama a la macro `%getVarLabel` cuatro veces con varias combinaciones de conjuntos de datos y variables, incluyendo casos donde la variable existe y donde falta, para demostrar la funcionalidad de la macro. Los resultados de las llamadas a la macro se muestran en el log de SAS a través de la función `%put`.
¡Copiado!
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);
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) 2016 Scott Bass (sas_l_739 @yahoo.com.au). Este código está bajo la licencia Unlicense (http://unlicense.org/UNLICENSE), como se indica en el archivo @code_sas/@TEMPLATE.sas referenciado.
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.