Ce script ne traite aucune donnée en entrée. Il se contente de créer des macros. Les macros elles-mêmes sont conçues pour agir sur des jeux de données fournis par l'utilisateur lors de leur appel.
1 Bloc de code
OPTIONS
Explication : Active la fonctionnalité des macros stockées et spécifie que la bibliothèque de macros nommée 'MSTORE' doit être utilisée pour les stocker.
Copié !
options mstored sasmstore=MSTORE;
1
options mstored sasmstore=MSTORE;
2 Bloc de code
MACRO
Explication : Définit une macro 'assertExists' qui vérifie si un jeu de données spécifié en paramètre existe. Si le jeu de données n'existe pas, un message d'erreur d'assertion est affiché dans le log.
Copié !
%macro assertExists(dataset) / store source des="Check if dataset exists";
%if ^%sysfunc(exist(&dataset.)) %then %put ERROR: Assertion error, table &dataset. does not exist;
%mend;
1
%macro assertExists(dataset) / store
2
SOURCE des="Check if dataset exists";
3
%IF ^%sysfunc(exist(&dataset.)) %THEN %put ERROR: Assertion error, TABLE &dataset. does not exist;
4
%mend;
5
3 Bloc de code
MACRO
Explication : Définit une macro 'assertNotExist' qui vérifie si un jeu de données spécifié en paramètre n'existe pas. Si le jeu de données existe, un message d'erreur d'assertion est affiché.
Copié !
%macro assertNotExist(dataset) / store source des="Check if dataset does not exist";
%if %sysfunc(exist(&dataset.)) %then %put ERROR: Assertion error, table &dataset. exist;
%mend;
Explication : Définit le chemin de recherche pour les macros compilées, pointant vers le catalogue 'tables' dans la bibliothèque 'mstore' (implicitement créée par l'option mstored).
Copié !
options cmplib=mstore.tables;
1
options cmplib=mstore.tables;
5 Bloc de code
MACRO
Explication : Définit la macro 'assertNobsEquals' qui compare le nombre d'observations ('nobs') d'un jeu de données à un nombre attendu. Si les nombres ne correspondent pas, une erreur est consignée.
Explication : Définit une macro générique 'assert' qui lit une ligne spécifique ('nrow') d'un jeu de données. Elle vérifie si la valeur de la colonne ('column') est égale ('eq') ou non égale ('neq') à une valeur attendue ('expected'). Un message d'erreur est généré en cas d'échec de l'assertion.
Copié !
%macro assert(dataset, nrow /* which row should be considered */,
column /* which column should be considered */, expected /* the expected value */, operator /*'eq' or 'neq'*/)
/ store source des="Assert values are equal/not equal in a dataset";
data _null_;
set &dataset.;
if (_N_ = symget("nrow")) then do;
expected = &expected.;
operator = &operator.;
if (operator = 'eq' and &column. ^= expected) then do;
putlog 'ERROR: Expected ' expected ', found ' &column.;
end;
if (operator = 'neq' and &column. = expected) then do;
putlog 'ERROR: Expected not equals=' expected ' and ' &column.;
end;
end;
run;
%mend;
1
%macro assert(dataset, nrow /* which row should be considered */,
2
column /* which column should be considered */, expected /* the expected value */, operator /*'eq' or 'neq'*/)
3
/ store SOURCE des="Assert values are equal/not equal in a dataset";
4
5
DATA _null_;
6
SET &dataset.;
7
8
IF (_N_ = symget("nrow")) THENDO;
9
expected = &expected.;
10
operator = &operator.;
11
IF (operator = 'eq' and &column. ^= expected) THENDO;
12
putlog 'ERROR: Expected ' expected ', found ' &column.;
13
END;
14
IF (operator = 'neq' and &column. = expected) THENDO;
15
putlog 'ERROR: Expected not equals=' expected ' and ' &column.;
16
END;
17
END;
18
RUN;
19
%mend;
7 Bloc de code
MACRO
Explication : Définit la macro 'assertEquals' comme un raccourci pour la macro 'assert'. Elle est utilisée pour vérifier si une valeur dans un jeu de données est égale à une valeur attendue.
Copié !
%macro assertEquals(dataset, nrow /* which row should be considered */,
column /* which column should be considered */, expected /* the expected value */) / store source des="Check if values are equal in a dataset";
%assert(&dataset., &nrow., &column., &expected., 'eq');
%mend;
1
%macro assertEquals(dataset, nrow /* which row should be considered */,
2
column /* which column should be considered */, expected /* the expected value */) / store SOURCE des="Check if values are equal in a dataset";
Explication : Définit la macro 'assertNotEquals' comme un raccourci pour la macro 'assert'. Elle est utilisée pour vérifier qu'une valeur dans un jeu de données est différente d'une valeur spécifiée.
Copié !
%macro assertNotEquals(dataset, nrow /* which row should be considered */,
column /* which column should be considered */, notExpected /* the not expected value */)
/ store source des="Check if values are not equal in a dataset";
%assert(&dataset., &nrow., &column., ¬Expected., 'neq');
%mend;
1
%macro assertNotEquals(dataset, nrow /* which row should be considered */,
2
column /* which column should be considered */, notExpected /* the not expected value */)
3
/ store SOURCE des="Check if values are not equal in a dataset";
Explication : Définit la macro 'assertEqualsValue' qui compare deux valeurs transmises en tant que paramètres. Si les valeurs sont différentes, un message d'erreur est affiché, en ajoutant des guillemets aux valeurs si elles ne sont pas de type caractère pour une meilleure lisibilité dans le log.
Copié !
%macro assertEqualsValue(expected, found) / store source des="Check if values are equal";
%local e;
%local f;
if (&expected. ^= &found.) then do;
/* apply quotes for non character variables */
%if(%datatyp(&expected.) = CHAR) %then %let e = &expected.; %else %let e = "&expected.";
%if(%datatyp(&found.) = CHAR) %then %let f = &found.; %else %let f = "&found.";
putlog 'ERROR: expected=' &e. ' found=' &f.;
end;
%mend;
1
%macro assertEqualsValue(expected, found) / store SOURCE des="Check if values are equal";
2
3
%local e;
4
%local f;
5
6
IF (&expected. ^= &found.) THENDO;
7
8
/* apply quotes for non character variables */
9
%IF(%datatyp(&expected.) = CHAR) %THEN %let e = &expected.; %ELSE %let e = "&expected.";
10
%IF(%datatyp(&found.) = CHAR) %THEN %let f = &found.; %ELSE %let f = "&found.";
11
12
putlog 'ERROR: expected=' &e. ' found=' &f.;
13
14
END;
15
%mend;
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.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.