El script primero define la macro `dostuff` que acepta un parámetro `action`. Según el valor de `action` ('ADD', 'DEL', 'MOD', 'NOTHING'), la macro crea variables globales, las elimina, las modifica o no hace nada. Luego, el script ejecuta una serie de pruebas. Cada prueba toma una 'instantánea' del entorno de las variables de macro globales con `%mp_assertscope(SNAPSHOT)`, ejecuta `dostuff` con una acción específica, luego compara el nuevo estado con la instantánea inicial usando `%mp_assertscope(COMPARE, ...)`. Finalmente, `%mp_assert` se utiliza para validar que el informe de comparación (almacenado en una tabla de trabajo) corresponde al resultado esperado para cada acción (adición, modificación, eliminación o ninguna modificación).
Análisis de datos
Type : CREATION_INTERNE
El script no lee ningún dato fuente. Genera dinámicamente tablas de trabajo (work.testing_the_tester1, work.testing_the_tester2, etc.) como salida de la macro de prueba `%mp_assertscope`. Estas tablas contienen los resultados de la comparación del entorno de las variables de macro antes y después de la ejecución de la macro `dostuff`.
1 Bloque de código
MACRO
Explicación : Definición de la macro 'dostuff'. Toma un parámetro 'action' y puede añadir ('ADD'), eliminar ('DEL') o modificar ('MOD') variables de macro globales (`NEWVAR1`, `NEWVAR2`). La acción 'NOTHING' declara variables locales para una prueba de no modificación del entorno global.
¡Copiado!
%macro dostuff(action);
%if &action=ADD %then %do;
%global NEWVAR1 NEWVAR2;
%end;
%else %if &action=DEL %then %do;
%symdel NEWVAR1 NEWVAR2;
%end;
%else %if &action=MOD %then %do;
%let NEWVAR1=Let us pray..;
%end;
%else %if &action=NOTHING %then %do;
%local a b c d e;
%end;
%mend dostuff;
1
%macro dostuff(ACTION);
2
%IF &ACTION=ADD %THEN %DO;
3
%global NEWVAR1 NEWVAR2;
4
%END;
5
%ELSE %IF &ACTION=DEL %THEN %DO;
6
%symdel NEWVAR1 NEWVAR2;
7
%END;
8
%ELSE %IF &ACTION=MOD %THEN %DO;
9
%let NEWVAR1=Let us pray..;
10
%END;
11
%ELSE %IF &ACTION=NOTHING %THEN %DO;
12
%local a b c d e;
13
%END;
14
%mend dostuff;
2 Bloque de código
MACRO Data
Explicación : Este bloque prueba la adición de variables. `%mp_assertscope(SNAPSHOT)` registra el estado inicial de las variables globales. `%dostuff(ADD)` se llama para crear `NEWVAR1` y `NEWVAR2`. `%mp_assertscope(COMPARE)` compara el estado final con la instantánea y escribe las diferencias en `work.testing_the_tester1`. `%mp_assert` verifica que el comentario de prueba en la tabla de salida indica la adición de estas dos variables.
¡Copiado!
/* check for adding variables */
%mp_assertscope(SNAPSHOT)
%dostuff(ADD)
%mp_assertscope(COMPARE,outds=work.testing_the_tester1)
%mp_assert(
iftrue=(
"%mf_getvalue(work.testing_the_tester1,test_comments)"
="Mod:() Add:(NEWVAR1 NEWVAR2) Del:()"
),
desc=Checking result when vars added,
outds=work.test_results
)
Explicación : Este bloque prueba la modificación de una variable. Después de la instantánea, `%dostuff(MOD)` modifica `NEWVAR1`. La macro `%mp_assert` valida que el informe de comparación (en `work.testing_the_tester2`) refleja correctamente la modificación de `NEWVAR1`.
¡Copiado!
/* check for modifying variables */
%mp_assertscope(SNAPSHOT)
%dostuff(MOD)
%mp_assertscope(COMPARE,outds=work.testing_the_tester2)
%mp_assert(
iftrue=(
"%mf_getvalue(work.testing_the_tester2,test_comments)"
="Mod:(NEWVAR1) Add:() Del:()"
),
desc=Checking result when vars modified,
outds=work.test_results
)
Explicación : Este bloque prueba la eliminación de variables. `%dostuff(DEL)` elimina `NEWVAR1` y `NEWVAR2`. La macro `%mp_assert` verifica que el informe de comparación (en `work.testing_the_tester3`) indica la eliminación de estas dos variables.
¡Copiado!
/* check for deleting variables */
%mp_assertscope(SNAPSHOT)
%dostuff(DEL)
%mp_assertscope(COMPARE,outds=work.testing_the_tester3)
%mp_assert(
iftrue=(
"%mf_getvalue(work.testing_the_tester3,test_comments)"
="Mod:() Add:() Del:(NEWVAR1 NEWVAR2)"
),
desc=Checking result when vars deleted,
outds=work.test_results
)
Explicación : Este bloque verifica que no se realizan modificaciones a las variables globales. `%dostuff(NOTHING)` solo declara variables locales. La macro `%mp_assert` confirma que el informe de comparación (en `work.testing_the_tester4`) indica que las variables globales no han sido modificadas.
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.
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.