Alle für die Tests verwendeten Daten werden direkt im Skript über `datalines4`-Blöcke innerhalb von `DATA STEP` definiert.
1 Codeblock
DATA STEP Data
Erklärung : Dieser `DATA STEP`-Block erstellt den Datensatz `test1`. Er liest Zeichenketten aus `datalines4`, weist sie der Variablen `libds` zu, und ruft dann das Makro `%mp_validatecol` mit dem Typ `LIBDS` auf, um zu überprüfen, ob `libds` ein gültiger SAS-Bibliotheks-/Datensatzname ist. Nur die Beobachtungen, bei denen `is_libds` 1 (gültig) ist, werden beibehalten, wodurch nicht konforme Einträge herausgefiltert werden.
Kopiert!
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 Codeblock
Macro (%mp_assertdsobs)
Erklärung : Dieser Makroaufruf verwendet `%mp_assertdsobs`, um zu überprüfen, dass der Datensatz `work.test1` nach der `LIBDS`-Validierung genau 2 Beobachtungen enthält, was das erwartete Verhalten bestätigt. Das Ergebnis dieses Assert wird im Datensatz `work.test_results` gespeichert.
Erklärung : Dieser `DATA STEP` erstellt `test2`, indem er Zeichenketten aus `datalines4` in `infile` liest. Anschließend wird das Makro `%mp_validatecol` mit dem Typ `ISNUM` aufgerufen, um festzustellen, ob jede Zeichenkette eine gültige Zahl darstellt. Nur die gültigen numerischen Beobachtungen (`is_numeric=1`) werden im Datensatz `test2` beibehalten.
Kopiert!
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 Codeblock
Macro (%mp_assertdsobs)
Erklärung : Dieser Makroaufruf `%mp_assertdsobs` überprüft, ob der Datensatz `work.test2` nach der `ISNUM`-Validierung genau 4 Beobachtungen enthält, was die korrekte Erkennung numerischer Werte durch `mp_validatecol` bestätigt. Das Ergebnis wird zu `work.test_results` hinzugefügt.
Erklärung : Dieser `DATA STEP` erstellt `test3`. Er liest Zeichenketten aus `datalines4` in `infile` ein und verwendet `%mp_validatecol` mit dem Typ `FORMAT`, um Zeichenketten zu identifizieren, die gültige SAS-Formatnamen sind. Nur Beobachtungen mit gültigen Formaten (`is_format=1`) werden beibehalten.
Kopiert!
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 Codeblock
Macro (%mp_assertdsobs)
Erklärung : Dieser Makroaufruf `%mp_assertdsobs` bestätigt, dass `work.test3` 5 Beobachtungen enthält, womit bestätigt wird, dass die Makro `mp_validatecol` die gültigen SAS-Formate korrekt identifiziert. Das Ergebnis wird zu `work.test_results` hinzugefügt.
Erklärung : Dieser `DATA STEP` erstellt `test4`, liest Zeichenketten aus `datalines4` mittels `infile` und verwendet `%mp_validatecol` mit dem Typ `ISINT`, um zu überprüfen, ob jede Zeichenkette eine gültige Ganzzahl darstellt. Nur Beobachtungen, die Ganzzahlen sind (`is_integer=1`), werden beibehalten.
Kopiert!
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 Codeblock
Macro (%mp_assertdsobs)
Erklärung : Dieser abschließende Aufruf von `%mp_assertdsobs` stellt sicher, dass der Datensatz `work.test4` 6 Beobachtungen enthält, und beweist, dass `mp_validatecol` die ganzzahligen Werte korrekt identifiziert. Das Ergebnis wird in `work.test_results` gespeichert.
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : 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 und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.