SAS Base Best Practice: So erweitern Sie SASAUTOS sicher und ohne Duplikate

Dieser Code ist auch verfügbar auf: Français English Español
Schwierigkeitsgrad
Anfänger
Veröffentlicht am :
Michael

Expertenrat

Michael
Responsable de l'infrastructure Viya.

Der kritischste Teil dieses Codes ist die Unterscheidung im ELSE-Block: SAS verlangt zwingend, dass physische Pfade in der Option SASAUTOS in Anführungszeichen stehen, während logische Filerefs (wie MYMACRO) ohne Anführungszeichen übergeben werden müssen, da SAS sonst fälschlicherweise nach einem Unterordner mit dem wörtlichen Namen des Filerefs sucht.

Attention : Dieser Code erfordert Administratorrechte.
Dieses Makro, `_insertAutoCallPath`, nimmt einen Pfad (`autocallpath`) als Eingabe entgegen. Es überprüft, ob dieser Pfad bereits in der SASAUTOS-Systemoption definiert ist, um Duplikate zu vermeiden. Wird der Pfad nicht gefunden, ermittelt es, ob es sich um einen gültigen Fileref (Länge von 8 Zeichen oder weniger und bereits zugewiesen) oder einen Verzeichnispfad handelt. Anschließend fügt es den Pfad oder den Fileref mit `OPTIONS APPEND` zu SASAUTOS hinzu und stellt sicher, dass Verzeichnispfade korrekt in Anführungszeichen gesetzt werden.
Datenanalyse

Type : CREATION_INTERNE


Das Makro verarbeitet keine Datenbestände. Es interagiert mit der SAS-Umgebung, indem es eine Systemoption (`SASAUTOS`) liest und ändert über die Funktionen `%sysfunc(getoption(...))` und `OPTIONS APPEND`.

1 Codeblock
MACRO
Erklärung :
Dieser Block definiert das Makro `%_insertAutoCallPath`. Es deklariert lokale Makrovariablen und prüft dann, ob der Eingabeparameter `autocallpath` leer ist. Es verwendet `%sysfunc(getoption())`, um den aktuellen Wert von SASAUTOS abzurufen, und `%sysfunc(findw())`, um zu suchen, ob der Pfad bereits darin enthalten ist. Ist der Pfad nicht enthalten, prüft es mit `%sysfunc(fileref())`, ob der Parameter ein Fileref ist. Schließlich verwendet es `OPTIONS APPEND`, um entweder den Fileref oder den Pfad (in Anführungszeichen) zur SASAUTOS-Liste hinzuzufügen.
Kopiert!
1%macro _insertAutoCallPath(autocallpath);
2
3 %local
4 l_currentAutoCallPath
5 l_found
6 l_autoCallPath
7 l_paramIsFileRef
8 ;
9
10 %IF (%LENGTH(&autocallpath.)=0) %THEN %goto exit;
11 
12 %*-- %_issueTraceMessage (&g_currentLogger., Searching for Autocallpath &autocallpath); --*;
13 
14 %let l_currentAutoCallPath=%sysfunc (getoption (SASAUTOS));
15 %let l_found=%sysfunc (findw (&l_currentAutoCallPath., &autocallpath., %str(% %"%(%)), I));
16
17 %if (&l_found. > 0) %then %do;
18 %*-- %_issueDebugMessage (&g_currentLogger., Autocallpath &autocallpath already set.); --*;
19 %end;
20 %else %do;
21 %let l_paramIsFileRef = 0;
22 %if (%length(&autocallpath.) <= 8) %then %do;
23 %let l_paramIsFileRef = %eval(%sysfunc (fileref (&autocallpath.))=0);
24 %end;
25
26 %if (&l_paramIsFileRef.) %then %do;
27 options append=(SASAUTOS=(&autocallpath.));
28 %end;
29 %else %do;
30 options append=(SASAUTOS=("&autocallpath."));
31 %END;
32 %END;
33
34 %exit:
35%mend _insertAutoCallPath;
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.


Zugehörige Dokumentation

Aucune documentation spécifique pour cette catégorie.