Publié le :
Tests CREATION_INTERNE

Tests de validation de colonnes (mp_validatecol)

Ce code est également disponible en : Deutsch English Español
En attente de validation
Ce script SAS© exécute une série de tests pour évaluer la fonctionnalité de la macro `%mp_validatecol`. Pour chaque cas de test (validation de noms de librairie/dataset, de nombres, de formats SAS© et d'entiers), un jeu de données temporaire est créé en utilisant des données en ligne (`datalines4`). La macro `%mp_validatecol` est ensuite appelée pour filtrer les données valides selon le type spécifié. La macro `%mp_assertdsobs` est utilisée après chaque bloc de test pour vérifier que le nombre d'observations résultantes correspond aux attentes, consolidant les résultats dans le jeu de données `work.test_results`.
Analyse des données

Type : CREATION_INTERNE


Toutes les données utilisées pour les tests sont définies directement dans le script via des blocs `datalines4` au sein de `DATA STEP`.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc `DATA STEP` crée le jeu de données `test1`. Il lit des chaînes de caractères depuis `datalines4`, les assigne à la variable `libds`, puis appelle la macro `%mp_validatecol` avec le type `LIBDS` pour valider si `libds` est un nom de bibliothèque/jeu de données SAS valide. Seules les observations où `is_libds` est 1 (valide) sont conservées, filtrant les entrées non conformes.
Copié !
1DATA test1;
2 INFILE datalines4 dsd;
3 INPUT;
4 libds=_infile_;
5 %mp_validatecol(libds,LIBDS,is_libds)
6 IF is_libds=1;
7datalines4;
8some.LIBNAME
9!lib.blah
10%abort
11definite.ok
12not.ok!
13nineletrs._
14;;;;
15RUN;
2 Bloc de code
Macro (%mp_assertdsobs)
Explication :
Cet appel de macro utilise `%mp_assertdsobs` pour vérifier que le jeu de données `work.test1` contient exactement 2 observations après la validation `LIBDS`, confirmant le comportement attendu. Le résultat de cet assert est stocké dans le jeu de données `work.test_results`.
Copié !
1%mp_assertdsobs(work.test1,
2 desc=Testing LIBDS,
3 test=EQUALS 2,
4 outds=work.test_results
5)
3 Bloc de code
DATA STEP Data
Explication :
Ce `DATA STEP` crée `test2` en lisant des chaînes depuis `datalines4` dans `infile`. La macro `%mp_validatecol` est ensuite appelée avec le type `ISNUM` pour déterminer si chaque chaîne représente un nombre valide. Seules les observations numériques valides (`is_numeric=1`) sont conservées dans le jeu de données `test2`.
Copié !
1DATA test2;
2 INFILE datalines4 dsd;
3 INPUT;
4 INFILE=_infile_;
5 %mp_validatecol(INFILE,ISNUM,is_numeric)
6 IF is_numeric=1;
7datalines4;
81
90001
101e6
11-44
12above are good
13the rest are bad
14%abort
151&somethingverybad.
16&
17+-1
18;;;;
19RUN;
4 Bloc de code
Macro (%mp_assertdsobs)
Explication :
Cet appel de macro `%mp_assertdsobs` vérifie que le jeu de données `work.test2` contient exactement 4 observations après la validation `ISNUM`, confirmant la reconnaissance correcte des valeurs numériques par `mp_validatecol`. Le résultat est ajouté à `work.test_results`.
Copié !
1%mp_assertdsobs(work.test2,
2 desc=Test2 - ISNUM,
3 test=EQUALS 4,
4 outds=work.test_results
5)
5 Bloc de code
DATA STEP Data
Explication :
Ce `DATA STEP` crée `test3`. Il lit des chaînes depuis `datalines4` dans `infile` et utilise `%mp_validatecol` avec le type `FORMAT` pour identifier les chaînes qui sont des noms de format SAS valides. Seules les observations avec des formats valides (`is_format=1`) sont conservées.
Copié !
1DATA test3;
2 INFILE datalines4 dsd;
3 INPUT;
4 INFILE=_infile_;
5 %mp_validatecol(INFILE,FORMAT,is_format)
6 IF is_format=1;
7datalines4;
8$.
9$FORMAT.
10$format12.2
11somenum.
12somenum12.4
13above are good
14the rest are bad
15%abort
161&somethingverybad.
17&
18+-1
19.
20a.A
21$format12.1b
22$format12.1b1
23;;;;
24RUN;
6 Bloc de code
Macro (%mp_assertdsobs)
Explication :
Cet appel de macro `%mp_assertdsobs` valide que `work.test3` contient 5 observations, confirmant que la macro `mp_validatecol` identifie correctement les formats SAS valides. Le résultat est ajouté à `work.test_results`.
Copié !
1%mp_assertdsobs(work.test3,
2 desc=Test3 - ISFORMAT,
3 test=EQUALS 5,
4 outds=work.test_results
5)
7 Bloc de code
DATA STEP Data
Explication :
Ce `DATA STEP` crée `test4`, lit des chaînes depuis `datalines4` dans `infile`, et utilise `%mp_validatecol` avec le type `ISINT` pour vérifier si chaque chaîne représente un entier valide. Seules les observations qui sont des entiers (`is_integer=1`) sont conservées.
Copié !
1DATA test4;
2 INFILE datalines4 dsd;
3 INPUT;
4 INFILE=_infile_;
5 %mp_validatecol(INFILE,ISINT,is_integer)
6 IF is_integer=1;
7datalines4;
81
91234
10-134
11-1.0
121.0
130
14above are good
15the rest are bad
160.1
171.1
18-0.001
19%abort
201&somethingverybad.
21&
22+-1
23.
24a.A
25$format12.1b
26$format12.1b1
27;;;;
28RUN;
8 Bloc de code
Macro (%mp_assertdsobs)
Explication :
Cet appel final de `%mp_assertdsobs` s'assure que le jeu de données `work.test4` contient 6 observations, prouvant que `mp_validatecol` identifie correctement les valeurs entières. Le résultat est stocké dans `work.test_results`.
Copié !
1%mp_assertdsobs(work.test4,
2 desc=Test4 - ISFORMAT,
3 test=EQUALS 6,
4 outds=work.test_results
5)
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 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de This file is part of SASUnit, the Unit testing framework for SAS(R) programs. For copyright information and terms of usage under the GNU Lesser General Public License see included file README.md or https://github.com/HMS-Analytical-Software/SASUnit/wiki/readme/.