Veröffentlicht am :
Dienstprogramm CREATION_INTERNE

Überprüfung der Existenz einer Datei auf SAS Drive

Dieser Code ist auch verfügbar auf: English Español Français
Das Makro `%mfv_existfile` nimmt einen Parameter `filepath` (den vollständigen Pfad der Datei auf SAS© Drive, z.B. /Public/myfile.txt) entgegen. Es verwendet `%mf_getuniquefileref()`, um einen temporären Fileref zu generieren. Der Dateiname und der Pfad werden aus `filepath` extrahiert. Es wird versucht, den Fileref über die Funktion `filename()` mit der 'filesrvc'-Engine der Datei zuzuordnen. Wenn die Zuordnung erfolgreich ist (gibt 0 zurück), wird die Funktion `fexist()` verwendet, um die tatsächliche Existenz der Datei zu bestätigen. Im Falle eines Fehlers bei `filename()` gibt das Makro 0 zurück und stellt sicher, dass die System-Makrovariable `&syscc` auf 0 zurückgesetzt wird, um das Verbergen potenzieller späterer Probleme zu vermeiden. Eine erste Überprüfung von `&syscc` wird über `%mf_abort` durchgeführt, um sicherzustellen, dass das Makro nicht in einem Fehlerzustand aufgerufen wird.
Datenanalyse

Type : CREATION_INTERNE


Das Skript verwendet oder erstellt keine Daten im Sinne traditioneller SAS-Datensätze. Sein Ziel ist es, mit den Metadaten des SAS Drive-Dateisystems zu interagieren, um die Existenz eines Objekts (Datei) zu überprüfen, dessen Pfad als Parameter übergeben wird.

1 Codeblock
Appel Macro (%mf_abort)
Erklärung :
Dieser Block ruft das Makro `%mf_abort` auf, um zu überprüfen, ob die System-Makrovariable `&syscc` (Fehlercode) ungleich Null ist. Ist dies der Fall, deutet dies auf einen vorherigen Fehler hin und das Makro wird beendet, wodurch die Ausführung des Codes in einem unerwarteten Zustand vermieden wird.
Kopiert!
1%mf_abort(
2 iftrue=(&syscc ne 0),
3 msg=Cannot enter mfv_existfile.sas with syscc=&syscc
4 )
2 Codeblock
Manipulation de Variables Macro
Erklärung :
Dieser Block deklariert lokale Makrovariablen (`fref`, `rc`, `path`, `name`). Er initialisiert `fref` mit einem eindeutigen Dateiverweis, der von `%mf_getuniquefileref()` generiert wird. Die Makrofunktionen `%scan` und `%substr` werden verwendet, um den Dateinamen (`name`) und dessen Pfad (`path`) aus dem bereitgestellten Parameter `filepath` zu extrahieren.
Kopiert!
1%local fref rc path name;
2 %let fref=%mf_getuniquefileref();
3 %let name=%scan(&filepath,-1,/);
4 %let path=%substr(&filepath,1,%LENGTH(&filepath)-%LENGTH(&name)-1);
3 Codeblock
Fonctions SAS (filename, fexist)
Erklärung :
Dieser bedingte Block versucht, den Fileref (`fref`) der angegebenen Datei auf SAS Drive mithilfe der Funktion `filename()` mit der Engine `filesrvc` zuzuordnen. Wenn die Zuordnung erfolgreich ist (gibt 0 zurück), wird `fexist(&fref)` aufgerufen, um die Existenz der Datei zu überprüfen, und das Ergebnis wird zurückgegeben. Wenn die Zuordnung fehlschlägt, gibt das Makro `0` zurück und die Makrovariable `&syscc` wird explizit auf `0` zurückgesetzt.
Kopiert!
1%IF %sysfunc(filename(fref,,filesrvc,folderPath="&path" filename="&name"))=0
2 %THEN %DO;
3 %sysfunc(fexist(&fref))
4 %let rc=%sysfunc(filename(fref));
5 %END;
6 %ELSE %DO;
7 0
8 %let syscc=0;
9 %END;
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 : Hauptautor des Makros `mfv_existfile`: Allan Bowe. Dieses Makro ruft oder verweist auf separate und urheberrechtlich geschützte Komponenten oder Makros, insbesondere: '_version.sas' (Copyright (c) 2001-2006 Rodney Sparapani) und 'print_macro_parameters.sas' (Copyright © 2022, SAS Institute Inc.).