Veröffentlicht am :
Tests CREATION_INTERNE

Spaltenvalidierungstests (mp_validatecol)

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Dieses SAS©-Skript führt eine Reihe von Tests aus, um die Funktionalität des Makros `%mp_validatecol` zu bewerten. Für jeden Testfall (Validierung von Bibliotheks-/Dataset-Namen, Zahlen, SAS©-Formaten und Ganzzahlen) wird ein temporärer Datensatz unter Verwendung von Inline-Daten (`datalines4`) erstellt. Das Makro `%mp_validatecol` wird anschließend aufgerufen, um die gültigen Daten entsprechend dem angegebenen Typ zu filtern. Das Makro `%mp_assertdsobs` wird nach jedem Testblock verwendet, um zu überprüfen, ob die Anzahl der resultierenden Beobachtungen den Erwartungen entspricht, wobei die Ergebnisse im Datensatz `work.test_results` konsolidiert werden.
Datenanalyse

Type : CREATION_INTERNE


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!
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 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.
Kopiert!
1%mp_assertdsobs(work.test1,
2 desc=Testing LIBDS,
3 test=EQUALS 2,
4 outds=work.test_results
5)
3 Codeblock
DATA STEP Data
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!
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 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.
Kopiert!
1%mp_assertdsobs(work.test2,
2 desc=Test2 - ISNUM,
3 test=EQUALS 4,
4 outds=work.test_results
5)
5 Codeblock
DATA STEP Data
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!
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 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.
Kopiert!
1%mp_assertdsobs(work.test3,
2 desc=Test3 - ISFORMAT,
3 test=EQUALS 5,
4 outds=work.test_results
5)
7 Codeblock
DATA STEP Data
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!
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 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.
Kopiert!
1%mp_assertdsobs(work.test4,
2 desc=Test4 - ISFORMAT,
3 test=EQUALS 6,
4 outds=work.test_results
5)
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/.