Veröffentlicht am :
Verwaltung EXTERNE

Makro zum Löschen externer Dateien

Dieser Code ist auch verfügbar auf: Français English Español
Attention : Dieser Code erfordert Administratorrechte.
Dieses Makro mit dem Namen `_delFile` wurde entwickelt, um eine externe Datei zu löschen, deren vollständiger Pfad als Parameter (`i_file`) übergeben wird. Es verwendet die SAS©-Systemfunktionen `filename`, um einen temporären Fileref mit der Datei zu verknüpfen, und dann `fdelete`, um den Löschvorgang durchzuführen. Der Rückgabecode des Vorgangs wird vom Makro zurückgegeben. Abschließend wird der temporäre Fileref freigegeben.
Datenanalyse

Type : EXTERNE


Das Skript interagiert mit einer externen Datei, die durch einen Parameter (`i_file`) angegeben wird, und führt einen Löschvorgang direkt auf dem Dateisystem des Betriebssystems aus. Es verbraucht oder erzeugt keine traditionellen SAS-Datensätze.

1 Codeblock
MACRO
Erklärung :
Dieser Block definiert das Makro `_delFile`, das `i_file` (den Pfad der zu löschenden Datei) als Parameter akzeptiert.
1. `%LOCAL rc filrf;`: Deklariert die Makrovariablen `rc` (Rückgabecode) und `filrf` (temporärer Fileref) als lokal, um Konflikte zu vermeiden.
2. `%LET filrf=_tmpf;`: Weist der Variablen `filrf` den temporären Fileref-Namen `_tmpf` zu.
3. `%LET rc=%sysfunc(filename(filrf,&i_file));`: Verknüpft den Fileref `_tmpf` mit dem durch `&i_file` angegebenen Dateipfad. Der Rückgabecode dieses Vorgangs wird in `rc` gespeichert.
4. `%LET rc=%sysfunc(fdelete(_tmpf));`: Löscht die dem Fileref `_tmpf` zugeordnete Datei. Der Rückgabecode des Löschvorgangs wird in `rc` aktualisiert.
5. `&rc`: Diese Zeile gibt den Wert von `rc` aus, der den Status des Löschvorgangs darstellt.
6. `%LET rc=%sysfunc(filename(filrf));`: Gibt die Zuordnung des Filerefs `_tmpf` frei, eine gute Praxis zur Bereinigung von Ressourcen.
Kopiert!
1%MACRO _delFile(i_file);
2 
3 %LOCAL rc filrf;
4 %LET filrf=_tmpf;
5 %LET rc=%sysfunc(filename(filrf,&i_file));
6 %LET rc=%sysfunc(fdelete(_tmpf));
7 &rc
8 %LET rc=%sysfunc(filename(filrf));
9%MEND _delFile;
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. Diese Datei ist Teil von SASUnit, dem Unit-Test-Framework für SAS(R)-Programme. Informationen zu Copyright und Nutzungsbedingungen unter der GNU Lesser General Public License finden Sie in der beigefügten Datei README.md oder unter https://github.com/HMS-Analytical-Software/SASUnit/wiki/readme/.


Banner
Expertenrat
Expert
Simon
Expert SAS et fondateur.
« Das Makro _delFile illustriert eine saubere und robuste Methode, um das Löschen von Dateien direkt über den Makro-Prozessor zu steuern, ohne auf betriebssystemabhängige Befehle (wie rm oder del) zurückgreifen zu müssen. Durch die Nutzung der Funktionen FILENAME und FDELETE bietet es eine vollständige Portabilität zwischen Windows und Unix und ermöglicht gleichzeitig eine präzise Kontrolle über den Erfolg der Operation.

Strategische Empfehlungen & Best Practices
Bedeutung des Rückgabecodes: Eine der Stärken dieses Makros ist, dass es den Wert von &rc zurückgibt, der von fdelete generiert wurde. Ein Wert von 0 bestätigt das Löschen, während ein Wert ungleich Null oft auf eine gesperrte Datei oder unzureichende Berechtigungen hinweist. In der Praxis sollten Sie diesen Rückwert prüfen (z. B. %if %_delFile(...) = 0 %then...), um den weiteren Programmablauf abzusichern.

Verwaltung des Filerefs: Das Skript verwendet den festen Fileref _tmpf. Dies ist eine gute Praxis, kann aber bei parallelen Prozessen zu Konflikten führen. Eine Experten-Optimierung wäre die Verwendung der Funktion DUMMY oder eines dynamisch generierten Namens, um die Einzigartigkeit des Filerefs während der Ausführung zu garantieren.

Dateisperren beachten: Beachten Sie, dass fdelete eine Datei nur löschen kann, wenn diese nicht bereits von einer anderen SAS-Session oder einer externen Anwendung (wie Excel oder einem Texteditor) exklusiv geöffnet ist. »