Publicado el :
Macro EXTERNE

Aserción de no-vacuidad de un conjunto de datos

Este código también está disponible en: Deutsch English Français
Esta macro, `assert_not_empty`, sirve como rutina de aserción. Primero verifica la existencia del conjunto de datos pasado a través del parámetro `DS`. Si el conjunto de datos no existe, o si existe pero no contiene ninguna observación, se desencadena un evento mediante la llamada a una macro externa `%generate_event`. Los detalles de este evento (mensaje, nivel, tipo, etc.) pueden personalizarse a través de parámetros. Si no se proporciona ningún mensaje personalizado, se genera automáticamente un mensaje predeterminado para indicar la naturaleza del problema (inexistente o vacío).
Análisis de datos

Type : EXTERNE


La macro está diseñada para operar sobre un conjunto de datos cuyo nombre se proporciona a través del parámetro `DS`, que es, por lo tanto, externo a la macro misma. Su funcionamiento también depende de la macro `%generate_event`, que no está definida en este script y debe estar disponible en el entorno SAS.

1 Bloque de código
Macro
Explicación :
Este bloque define la macro `assert_not_empty`. Utiliza las funciones macro `%exist` para verificar si el conjunto de datos existe y `%obs` para contar las observaciones. Si el conjunto de datos es inexistente o está vacío, una variable local `EVENT_COUNT` se establece en 1. En este caso, se llama a la macro externa `%generate_event` para señalar la anomalía, transmitiéndole los parámetros correspondientes. La variable global `futs_tst_cnt` se incrementa, lo que sugiere que esta macro forma parte de un marco de pruebas más amplio.
¡Copiado!
1%macro assert_not_empty( DS,
2 MESSAGE=,
3 TYPE=,
4 LEVEL=,
5 ATTACHDATA=,
6 ATTACHFILE=,
7 METRIC=,
8 PROPERTIES=,
9 ON_EVENT=,
10 DESCRIPTION=, ABORT= );
11 
12%local EVENT_COUNT DS_EXIST;
13%let EVENT_COUNT = 0;
14%let DS_EXIST = %exist(&DS);
15%*put LOG: ds_exist = <&DS_EXIST.>;
16 
17%IF &DS_EXIST eq 0 %THEN %DO;
18 %let EVENT_COUNT = 1;
19 %IF &MESSAGE = %str() %THEN %let MESSAGE = DATA SET &DS does not exist;
20%END;
21%ELSE %DO;
22 %IF %obs(&DS) eq 0 %THEN %DO;
23 %let EVENT_COUNT = 1;
24 %IF &MESSAGE = %str() %THEN
25 %let MESSAGE = DATA SET &DS is empty;
26 %END;
27%END;
28 
29%let futs_tst_cnt = %eval(&futs_tst_cnt.+1);
30 
31%IF &EVENT_COUNT gt 0 %THEN
32 %generate_event(TYPE=&TYPE, LEVEL=&LEVEL,
33 MESSAGE=&MESSAGE,
34 ATTACHDATA=&ATTACHDATA, ATTACHFILE=&ATTACHFILE,
35 METRIC=&METRIC,
36 PROPERTIES=&PROPERTIES,
37 ON_EVENT=&ON_EVENT,
38 DESCRIPTION=&DESCRIPTION, ABORT=&ABORT);
39 
40%mend assert_not_empty;
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) 2015 John Jacobs. All rights reserved.