Das Programm ist in einer Reihe von Tests strukturiert. Zunächst wird `%mf_writefile` verwendet, um eine Datei im Verzeichnis `&sasjswork` mit zwei Zeilen zu erstellen. Ein `DATA _null_`-Schritt liest dann die zweite Zeile, um sie in einer Makrovariable (`test1`) zu speichern. Das Makro `%mp_assert` wird dann verwendet, um das Fehlen von Fehlern und die Konformität des Inhalts zu überprüfen. Ein zweiter Aufruf von `%mf_writefile` überschreibt die Datei mit geändertem Inhalt. Dieselben Lese- und Assertionsschritte werden wiederholt, um das Überschreiben (`test2`) zu überprüfen. Schließlich deklariert das Skript globale Makrovariablen (`test3`, `test4`) und ruft `%mf_writefile` mit der Option `mode=a` auf, um neue Zeilen zur Datei hinzuzufügen. Eine letzte Reihe von `DATA _null_` und `%mp_assert` validiert, dass die vorherigen Zeilen nicht geändert und die neuen Zeilen korrekt hinzugefügt wurden.
Datenanalyse
Type : CREATION_INTERNE
Die Daten werden vollständig intern generiert und manipuliert. Das Makro `%mf_writefile` erstellt eine temporäre Textdatei (`&sasjswork/myfile.txt`), die als Quelle und Ziel für Lese- und Schreiboperationen dient. Es werden keine externen Daten oder Standard-SAS-Bibliotheken wie SASHELP für die Geschäftslogik oder Tests verwendet.
1 Codeblock
Macro %mf_writefile Data
Erklärung : Dieser Aufruf des Makros `%mf_writefile` erstellt oder überschreibt die Datei `myfile.txt` im temporären Arbeitsverzeichnis `&sasjswork`. Er schreibt 'some content' als erste Zeile und 'more content' als zweite Zeile.
Erklärung : Dieser `DATA _null_`-Block liest den Inhalt der Datei `&sasjswork/myfile.txt`. Er durchläuft jede Zeile, und wenn die zweite Zeile erreicht wird (`_n_=2`), speichert er deren genauen Inhalt in der Makrovariable `test1`.
Kopiert!
data _null_;
infile "&sasjswork/myfile.txt";
input;
if _n_=2 then call symputx('test1',_infile_);
run;
1
DATA _null_;
2
INFILE"&sasjswork/myfile.txt";
3
INPUT;
4
IF _n_=2THEN call symputx('test1',_infile_);
5
RUN;
3 Codeblock
Macro %mp_assert
Erklärung : Diese beiden Aufrufe des Makros `%mp_assert` sind Unit-Tests. Der erste überprüft, ob die Ausführung des vorherigen Codes keine SAS-Fehler (`&syscc=0`) generiert hat. Der zweite stellt sicher, dass die Makrovariable `test1` tatsächlich den Wert 'more content' enthält, wodurch bestätigt wird, dass die zweite Zeile der Datei korrekt geschrieben und gelesen wurde.
Kopiert!
%mp_assert(
iftrue=(&syscc=0),
desc=Check code ran without errors,
outds=work.test_results
)
%mp_assert(
iftrue=(&test1=more content),
desc=Checking line was created,
outds=work.test_results
)
1
%mp_assert(
2
iftrue=(&syscc=0),
3
desc=Check code ran without errors,
4
outds=work.test_results
5
)
6
%mp_assert(
7
iftrue=(&test1=more content),
8
desc=Checking line was created,
9
outds=work.test_results
10
)
4 Codeblock
Macro %mf_writefile Data
Erklärung : Dieser Aufruf des Makros `%mf_writefile` überschreibt die Datei `&sasjswork/myfile.txt` erneut. Diesmal wird die zweite Zeile auf 'different content' gesetzt, um die Fähigkeit des Makros zu testen, vorhandene Inhalte zu ersetzen.
Erklärung : Ähnlich wie der vorherige Block liest dieser `DATA _null_` die Datei nach dem Überschreibungsvorgang. Er extrahiert die zweite Zeile und speichert sie in der Makrovariable `test2` zur späteren Überprüfung.
Kopiert!
data _null_;
infile "&sasjswork/myfile.txt";
input;
if _n_=2 then call symputx('test2',_infile_);
run;
1
DATA _null_;
2
INFILE"&sasjswork/myfile.txt";
3
INPUT;
4
IF _n_=2THEN call symputx('test2',_infile_);
5
RUN;
6 Codeblock
Macro %mp_assert
Erklärung : Diese Assertions überprüfen, ob der vorherige Code fehlerfrei ausgeführt wurde. Sie bestätigen auch, dass die Makrovariable `test2` 'different content' enthält, wodurch validiert wird, dass die zweite Zeile der Datei korrekt durch den neuen Inhalt überschrieben wurde.
Kopiert!
%mp_assert(
iftrue=(&syscc=0),
desc=Check code ran without errors for test2,
outds=work.test_results
)
%mp_assert(
iftrue=(&test2=different content),
desc=Checking second line was overwritten,
outds=work.test_results
)
1
%mp_assert(
2
iftrue=(&syscc=0),
3
desc=Check code ran without errors for test2,
4
outds=work.test_results
5
)
6
%mp_assert(
7
iftrue=(&test2=different content),
8
desc=Checking second line was overwritten,
9
outds=work.test_results
10
)
7 Codeblock
Macro %mf_writefile Data
Erklärung : Dieser Block deklariert die Makrovariablen `test3` und `test4` als global. Anschließend wird das Makro `%mf_writefile` mit der Option `mode=a` aufgerufen, was einen Anhängemodus (append) anzeigt. Die neuen Zeilen 'aah, content' (wobei `%str` das Komma schützt) und 'append content' werden am Ende der vorhandenen Datei hinzugefügt, ohne die vorherigen Zeilen zu ändern.
Erklärung : Dieser `DATA _null_` liest die Datei nach dem Anhangsvorgang. Die zweite Zeile wird in `test3` gelesen, um ihre Integrität zu überprüfen (dass sie nicht geändert wurde). Die vierte Zeile, die der zweiten hinzugefügten Zeile entspricht, wird in `test4` gelesen, um das korrekte Hinzufügen des Inhalts zu überprüfen.
Kopiert!
data _null_;
infile "&sasjswork/myfile.txt";
input;
if _n_=2 then call symputx('test3',_infile_);
if _n_=4 then call symputx('test4',_infile_);
run;
1
DATA _null_;
2
INFILE"&sasjswork/myfile.txt";
3
INPUT;
4
IF _n_=2THEN call symputx('test3',_infile_);
5
IF _n_=4THEN call symputx('test4',_infile_);
6
RUN;
9 Codeblock
Macro %mp_assert
Erklärung : Diese finalen Assertions validieren den Anhangsvorgang. Sie bestätigen das Fehlen von Fehlern, stellen sicher, dass der Inhalt der zweiten Zeile (`test3`) 'different content' geblieben ist (d.h. nicht durch das Anhängen überschrieben wurde), und überprüfen, dass die vierte Zeile (`test4`) tatsächlich 'append content' enthält, was das erfolgreiche Hinzufügen bestätigt.
Kopiert!
%mp_assert(
iftrue=(&syscc=0),
desc=Check code ran without errors for test2,
outds=work.test_results
)
%mp_assert(
iftrue=(&test3=different content),
desc=Checking second line was not overwritten,
outds=work.test_results
)
%mp_assert(
iftrue=(&test4=append content),
desc=Checking fourth line was appended,
outds=work.test_results
)
1
%mp_assert(
2
iftrue=(&syscc=0),
3
desc=Check code ran without errors for test2,
4
outds=work.test_results
5
)
6
%mp_assert(
7
iftrue=(&test3=different content),
8
desc=Checking second line was not overwritten,
9
outds=work.test_results
10
)
11
%mp_assert(
12
iftrue=(&test4=append content),
13
desc=Checking fourth line was appended,
14
outds=work.test_results
15
)
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.
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.