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é !
data test1;
infile datalines4 dsd;
input;
libds=_infile_;
%mp_validatecol(libds,LIBDS,is_libds)
if is_libds=1;
datalines4;
some.libname
!lib.blah
%abort
definite.ok
not.ok!
nineletrs._
;;;;
run;
1
DATA test1;
2
INFILE datalines4 dsd;
3
INPUT;
4
libds=_infile_;
5
%mp_validatecol(libds,LIBDS,is_libds)
6
IF is_libds=1;
7
datalines4;
8
some.LIBNAME
9
!lib.blah
10
%abort
11
definite.ok
12
not.ok!
13
nineletrs._
14
;;;;
15
RUN;
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`.
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é !
data test2;
infile datalines4 dsd;
input;
infile=_infile_;
%mp_validatecol(infile,ISNUM,is_numeric)
if is_numeric=1;
datalines4;
1
0001
1e6
-44
above are good
the rest are bad
%abort
1&somethingverybad.
&
+-1
;;;;
run;
1
DATA test2;
2
INFILE datalines4 dsd;
3
INPUT;
4
INFILE=_infile_;
5
%mp_validatecol(INFILE,ISNUM,is_numeric)
6
IF is_numeric=1;
7
datalines4;
8
1
9
0001
10
1e6
11
-44
12
above are good
13
the rest are bad
14
%abort
15
1&somethingverybad.
16
&
17
+-1
18
;;;;
19
RUN;
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`.
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é !
data test3;
infile datalines4 dsd;
input;
infile=_infile_;
%mp_validatecol(infile,FORMAT,is_format)
if is_format=1;
datalines4;
$.
$format.
$format12.2
somenum.
somenum12.4
above are good
the rest are bad
%abort
1&somethingverybad.
&
+-1
.
a.A
$format12.1b
$format12.1b1
;;;;
run;
1
DATA test3;
2
INFILE datalines4 dsd;
3
INPUT;
4
INFILE=_infile_;
5
%mp_validatecol(INFILE,FORMAT,is_format)
6
IF is_format=1;
7
datalines4;
8
$.
9
$FORMAT.
10
$format12.2
11
somenum.
12
somenum12.4
13
above are good
14
the rest are bad
15
%abort
16
1&somethingverybad.
17
&
18
+-1
19
.
20
a.A
21
$format12.1b
22
$format12.1b1
23
;;;;
24
RUN;
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`.
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é !
data test4;
infile datalines4 dsd;
input;
infile=_infile_;
%mp_validatecol(infile,ISINT,is_integer)
if is_integer=1;
datalines4;
1
1234
-134
-1.0
1.0
0
above are good
the rest are bad
0.1
1.1
-0.001
%abort
1&somethingverybad.
&
+-1
.
a.A
$format12.1b
$format12.1b1
;;;;
run;
1
DATA test4;
2
INFILE datalines4 dsd;
3
INPUT;
4
INFILE=_infile_;
5
%mp_validatecol(INFILE,ISINT,is_integer)
6
IF is_integer=1;
7
datalines4;
8
1
9
1234
10
-134
11
-1.0
12
1.0
13
0
14
above are good
15
the rest are bad
16
0.1
17
1.1
18
-0.001
19
%abort
20
1&somethingverybad.
21
&
22
+-1
23
.
24
a.A
25
$format12.1b
26
$format12.1b1
27
;;;;
28
RUN;
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`.
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/.
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.