Dieses Makro generiert einen eindeutigen Dateipfad, indem es ein Präfix, eine zufällige, auf einem Hash basierende Zeichenkette (CRC32 aus Job-ID, Prozess-ID, Zeit, Zufall) und eine optionale Erweiterung kombiniert. Wird kein Pfad angegeben, wird der physische Pfad der WORK-Bibliothek verwendet. Das Ergebnis wird in einer aufrufenden Makrovariablen zurückgegeben. Es beinhaltet eine Fehlerstatusverwaltung (SYSCC), um das Protokoll bei erfolgreicher interner Ausführung nicht zu belasten.
Datenanalyse
Type : CREATION_INTERNE
Die Verarbeitung erfolgt über einen DATA _NULL_ Schritt, der Zeichenketten und Systemfunktionen zur Generierung des Dateinamens manipuliert.
1 Codeblock
Macro Definition
Erklärung : Initialisierung des Makros: Deklaration lokaler Variablen, Aufruf eines internen Debugging-Makros und Speichern des aktuellen Systemfehlerstatus (SYSCC, SYSMSG) zur Isolierung der Makroausführung.
Erklärung : Kern der Logik: Bestimmt das Stammverzeichnis (Parameter oder WORK), generiert eine eindeutige Zufallszeichenkette (basierend auf dem Hashing von Systeminformationen), fügt die Erweiterung hinzu und erstellt den vollständigen Pfad. Das Ergebnis wird über CALL SYMPUT in der Rückgabe-Makrovariablen gespeichert.
Kopiert!
data _null_ ;
length root $ 4096
str $ 1024 ;
%* -- identify parent path ;
%* note: if not specified, using path of WORK library ;
root = symget('path');
if ( missing(root) ) then
root = pathname('WORK');
%* initililze with prefix ;
str = strip(symget('prefix'));
%* force first character to be A-Z-ish (thanks SAS) ;
if missing(str) then
str = byte( mod( floor(100*rand("uniform")), 26) + rank("A") - 1 ) ;
%* add random string ;
call cats( str, hashing( "crc32", catx( "-", symget('sysjobid'), symget('sysprocessid'), put( rand("uniform"), best32.), put( datetime(), datetime23.3) ) ) );
%* add file extension;
if ( not missing( symget('fileext') ) ) then
call catx( '.', str, symget('fileext') );
%* assign output value ;
call symput( symget('return'), translate( catx( "/", root, lowcase(str) ), "/", "\") );
run;
1
DATA _null_ ;
2
3
LENGTH root $ 4096
4
str $ 1024 ;
5
6
%* -- identify parent path ;
7
%* note: IF not specified, using path of WORK library ;
8
root = symget('path');
9
10
IF ( missing(root) ) THEN
11
root = pathname('WORK');
12
13
14
%* initililze with prefix ;
15
str = strip(symget('prefix'));
16
17
18
%* force first character to be A-Z-ish (thanks SAS) ;
Erklärung : Stellt den Zustand der Systemfehlercodes (SYSCC) so wieder her, wie er vor der Ausführung des Makros war, um sicherzustellen, dass das Makro keine vorherigen Fehler löscht.
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.