Dieses Makro mit dem Namen comma2andmac wurde entwickelt, um eine Zeichenkette zu ändern, indem das letzte Vorkommen der Sequenz 'Komma-Leerzeichen' spezifisch durch ' and ' ersetzt wird. Es verwendet die Funktion %sysfunc mit dem regulären Ausdruck PRXCHANGE, um diese Substitution durchzuführen. Es nimmt einen einzigen Positionsparameter 'str' entgegen, der die zu ändernde Eingabezeichenkette ist. Die typische Verwendung ist `%let newstr=%comma2andmac(&oldstr);`. Das Makro ist als Funktionsmakro implementiert und verwendet `parmbuff`, um auf den übergebenen Parameter zuzugreifen.
Datenanalyse
Type : CREATION_INTERNE
Das Makro arbeitet mit einer Zeichenkette, die beim Aufruf als Parameter übergeben wird. Keine externen Datenquellen (Dateien, Datenbanken) oder interne SAS-Quellen (SASHELP) werden direkt von diesem Makro gelesen oder manipuliert. Es verarbeitet Daten, die vollständig intern übergeben oder generiert werden.
1 Codeblock
MACRO
Erklärung : Dieser Block definiert das Funktionsmakro 'comma2andmac'.
- `%put MACRO CALLED...`: Zeigt eine Debug-Nachricht an, die angibt, dass das Makro aufgerufen wurde.
- `%macro comma2andmac / parmbuff;`: Deklariert das Makro 'comma2andmac' und verwendet die Option `parmbuff`, um über `&syspbuff` direkt auf den vollständigen Inhalt des Makroaufrufs zuzugreifen.
- `%if %length(&syspbuff) GT 2 %then %do;`: Überprüft, ob ein Parameter angegeben wurde (die Länge muss größer als 2 sein, um leere Klammern auszuschließen).
- `%local buff;`: Deklariert eine lokale Makrovariable 'buff'.
- `%let buff=%qsubstr(&syspbuff,2,%length(&syspbuff)-2);`: Extrahiert die als Parameter übergebene Zeichenkette, indem die öffnenden und schließenden Klammern entfernt werden. `%qsubstr` wird verwendet, um Sonderzeichen zu erhalten.
- `%unquote(%sysfunc(prxchange(...)))`: Dies ist der Kern der Logik.
- `%sysfunc(prxchange(...))`: Ruft die SAS Perl Regular Expression Change Funktion auf.
- `s/^(.*)(%str(, ))(.*$)/$1 and $3/,1,&buff`: Der reguläre Ausdruck sucht das letzte ', ' in der Zeichenkette.
- `^(.*)`: Erfasst alles vom Anfang der Zeichenkette (Gruppe 1).
- `(%str(, ))`: Erfasst wörtlich ', ' (Komma Leerzeichen) (Gruppe 2). `%str` wird verwendet, um die Makrointerpretation von Sonderzeichen zu vermeiden.
- `(.*$)`: Erfasst alles bis zum Ende der Zeichenkette (Gruppe 3).
- Die Ersetzung ist `$1 and $3`, was 'alles vor dem letzten , ' + ' and ' + 'alles nach dem letzten , ' bedeutet.
- `,1`: Zeigt an, dass die Substitution nur einmal erfolgen soll.
- `&buff`: Die Zeichenkette, auf der operiert werden soll.
- `%unquote()`: Entfernt alle Anführungszeichenschutz, die von `%sysfunc` oder `%qsubstr` hinzugefügt werden könnten.
%unquote(%sysfunc(prxchange(s/^(.*)(%str(, ))(.*$)/$1 and $3/,1,&buff)))
8
%END;
9
%mend comma2andmac;
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 : This is public domain software. No guarantee as to suitability or accuracy is given or implied. User uses this code entirely at their own risk.
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.