Publié le :
Macro EXTERNE

Assertion de non-vacuité d'un jeu de données

Ce code est également disponible en : Deutsch English Español
Cette macro, `assert_not_empty`, sert de routine d'assertion. Elle vérifie d'abord l'existence du jeu de données passé via le paramètre `DS`. Si le jeu de données n'existe pas, ou s'il existe mais ne contient aucune observation, un événement est déclenché par l'appel à une macro externe `%generate_event`. Les détails de cet événement (message, niveau, type, etc.) peuvent être personnalisés via des paramètres. Si aucun message personnalisé n'est fourni, un message par défaut est automatiquement généré pour indiquer la nature du problème (inexistant ou vide).
Analyse des données

Type : EXTERNE


La macro est conçue pour opérer sur un jeu de données dont le nom est fourni via le paramètre `DS`, qui est donc externe à la macro elle-même. Son fonctionnement dépend également de la macro `%generate_event`, qui n'est pas définie dans ce script et doit être disponible dans l'environnement SAS.

1 Bloc de code
Macro
Explication :
Ce bloc définit la macro `assert_not_empty`. Elle utilise les fonctions macro `%exist` pour vérifier si le jeu de données existe et `%obs` pour en compter les observations. Si le jeu de données est inexistant ou vide, une variable locale `EVENT_COUNT` est mise à 1. Dans ce cas, la macro externe `%generate_event` est appelée pour signaler l'anomalie, en lui transmettant les paramètres correspondants. La variable globale `futs_tst_cnt` est incrémentée, ce qui suggère que cette macro fait partie d'un framework de test plus large.
Copié !
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;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Copyright (c) 2015 John Jacobs. All rights reserved.