Attention : Dieser Code erfordert Administratorrechte.
Das Skript beginnt mit der Erstellung von zwei temporären Verzeichnissen (`&sasjswork/path1` und `&sasjswork/path2`) mithilfe des Makros `mf_mkdir` und weist diesen dann `libname`-Zuweisungen (path1, path2) zu. Anschließend wird dasselbe Format `whichpath` in diesen beiden Bibliotheken definiert, jedoch mit unterschiedlichen Ausgabewerten ('path1' bzw. 'path2'). Zwei Szenarien werden getestet: das erste, in dem `path1` in `FMTSEARCH` Priorität hat, und das zweite, in dem `path2` Priorität hat. In jedem Szenario wird ein `DATA _NULL_`-Schritt verwendet, um das Format auf den Wert 0 anzuwenden und das Ergebnis in einer Makrovariablen (`test1` oder `test2`) zu speichern. Das Makro `mp_assert` wird aufgerufen, um zu überprüfen, ob das korrekte Format (das der prioritären Bibliothek) angewendet wurde. Das Makro `mp_getformats` wird dann ausgeführt, um die Details des Formats `WHICHPATH` in Ausgabedatensätze (`detail1` oder `detail2`) zu extrahieren, und die Ergebnisse (insbesondere das mit 'OTHER' verbundene Label) werden erneut mit `mp_assert` überprüft, um sicherzustellen, dass die detaillierten Informationen der gefundenen Formatversion entsprechen.
Datenanalyse
Type : CREATION_INTERNE
Die von diesem Skript verarbeiteten Hauptdaten (die SAS-Formate namens `whichpath`) werden direkt im Skript über `PROC FORMAT` erstellt und definiert. Es werden keine externen Daten oder Daten aus Standard-SAS-Bibliotheken als Eingabe für den Formattestprozess verwendet. Temporäre Datensätze werden von den Makros `mp_getformats` (`sum`, `detail1`, `detail2`) und `mp_assert` (`work.test_results`) erstellt, um Testergebnisse und detaillierte Formatinformationen zu speichern.
1 Codeblock
Appel Macro
Erklärung : Diese Zeilen rufen das Makro `mf_mkdir` auf, um zwei temporäre Verzeichnisse zu erstellen: `path1` und `path2` innerhalb des durch die Makrovariable `&sasjswork` definierten Speicherorts. Diese Verzeichnisse dienen als Bibliotheken zum Speichern von SAS-Formaten.
Erklärung : Zwei SAS-Bibliotheken, `path1` und `path2`, werden definiert und den zuvor erstellten physischen Verzeichnissen `&sasjswork/path1` bzw. `&sasjswork/path2` zugeordnet. Diese Bibliotheken werden zum Registrieren und Suchen von SAS-Formaten verwendet.
Erklärung : Dieser Block definiert ein SAS-Format namens `whichpath` in jeder der beiden Bibliotheken `path1` und `path2`. Jede Definition weist dem Wert '0' ein spezifisches Label ('path1' oder 'path2') und allen anderen Werten ein generisches Label ('big fat problem if not path1/path2') zu. Dies ermöglicht es, zu testen, welche Version des Formats abhängig von der `FMTSEARCH`-Konfiguration verwendet wird.
Kopiert!
PROC FORMAT library=path1;
value whichpath 0 = 'path1' other='big fat problem if not path1';
PROC FORMAT library=path2;
value whichpath 0 = 'path2' other='big fat problem if not path2';
RUN;
1
PROC FORMAT library=path1;
2
value whichpath 0 = 'path1' other='big fat problem if not path1';
3
PROC FORMAT library=path2;
4
value whichpath 0 = 'path2' other='big fat problem if not path2';
5
RUN;
4 Codeblock
Options / DATA STEP / Appel Macro
Erklärung : Dieser Block konfiguriert das erste Testszenario. Die Option `FMTSEARCH` wird so definiert, dass Formate zuerst in `path1` und dann in `path2` gesucht werden. Ein `DATA _NULL_`-Schritt wird verwendet, um das Format `whichpath` auf den Wert `0` anzuwenden und das Ergebnis in der Makrovariablen `test1` zu speichern. Das Makro `mp_assert` überprüft, ob der erwartete Wert 'path1' ist. Anschließend wird das Makro `mp_getformats` aufgerufen, um die Details des Formats `WHICHPATH` in den Datensatz `detail1` zu extrahieren. Ein zweiter `DATA _NULL_`-Schritt liest diesen Datensatz, um das mit '**OTHER**' verbundene Label abzurufen und in `tst1` zu speichern. Eine letzte `mp_assert` validiert, dass dieses Label dem in `path1` definierten entspricht.
Kopiert!
options insert=(fmtsearch=(path1 path2));
data _null_;
test=0;
call symputx('test1',put(test,whichpath.));
run;
%mp_assert(
iftrue=("&test1"="path1"),
desc=Check correct format is applied,
outds=work.test_results
)
%mp_getformats(fmtlist=WHICHPATH,outsummary=sum,outdetail=detail1)
%let tst1=0;
data _null_;
set detail1;
if fmtname='WHICHPATH' and start='**OTHER**' then call symputx('tst1',label);
putlog (_all_)(=);
run;
%mp_assert(
iftrue=("&tst1"="big fat problem if not path1"),
desc=Check correct detail results are applied,
outds=work.test_results
)
IF fmtname='WHICHPATH' and start='**OTHER**'THEN call symputx('tst1',label);
16
putlog (_all_)(=);
17
RUN;
18
%mp_assert(
19
iftrue=("&tst1"="big fat problem if not path1"),
20
desc=Check correct detail results are applied,
21
outds=work.test_results
22
)
5 Codeblock
Options / DATA STEP / Appel Macro
Erklärung : Dieser Block führt das zweite Testszenario aus, ähnlich dem vorherigen, jedoch mit umgekehrter Reihenfolge für `FMTSEARCH` (`path2` dann `path1`). Dieselben Überprüfungsschritte werden durchgeführt: Anwendung des Formats in einem `DATA _NULL_`-Schritt, Validierung des Ergebnisses mit `mp_assert`, um sicherzustellen, dass der Wert diesmal 'path2' ist. Anschließend extrahiert `mp_getformats` die Details des Formats in `detail2`, und eine abschließende `mp_assert` überprüft, ob das Label von '**OTHER**' dem in `path2` definierten entspricht.
Kopiert!
options insert=(fmtsearch=(path2 path1));
data _null_;
test=0;
call symputx('test2',put(test,whichpath.));
run;
%mp_assert(
iftrue=("&test2"="path2"),
desc=Check correct format is applied,
outds=work.test_results
)
%mp_getformats(fmtlist=WHICHPATH,outsummary=sum,outdetail=detail2)
%let tst2=0;
data _null_;
set detail2;
if fmtname='WHICHPATH' and start='**OTHER**' then call symputx('tst2',label);
putlog (_all_)(=);
run;
%mp_assert(
iftrue=("&tst2"="big fat problem if not path2"),
desc=Check correct detail results are applied,
outds=work.test_results
)
IF fmtname='WHICHPATH' and start='**OTHER**'THEN call symputx('tst2',label);
16
putlog (_all_)(=);
17
RUN;
18
%mp_assert(
19
iftrue=("&tst2"="big fat problem if not path2"),
20
desc=Check correct detail results are applied,
21
outds=work.test_results
22
)
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.