Veröffentlicht am :
Test CREATION_INTERNE

Test des mf_writefile Makros

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
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.
Kopiert!
1%mf_writefile(&sasjswork/myfile.txt,l1=some content,l2=more content)
2 Codeblock
DATA STEP
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!
1DATA _null_;
2 INFILE "&sasjswork/myfile.txt";
3 INPUT;
4 IF _n_=2 THEN call symputx('test1',_infile_);
5RUN;
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!
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.
Kopiert!
1%mf_writefile(&sasjswork/myfile.txt,l1=some content,l2=different content)
5 Codeblock
DATA STEP
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!
1DATA _null_;
2 INFILE "&sasjswork/myfile.txt";
3 INPUT;
4 IF _n_=2 THEN call symputx('test2',_infile_);
5RUN;
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!
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.
Kopiert!
1%global test3 test4;
2%mf_writefile(&sasjswork/myfile.txt
3 ,mode=a
4 ,l1=%str(aah, content)
5 ,l2=append content
6)
8 Codeblock
DATA STEP
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!
1DATA _null_;
2 INFILE "&sasjswork/myfile.txt";
3 INPUT;
4 IF _n_=2 THEN call symputx('test3',_infile_);
5 IF _n_=4 THEN call symputx('test4',_infile_);
6RUN;
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!
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.