Das Makro verarbeitet keine Datensätze. Es operiert auf einer Zeichenkette, die ihm als Parameter übergeben wird. Die 'Datenquelle' ist daher intern zum Makroaufruf.
1 Codeblock
MACRO
Erklärung : Dieser Block definiert das Makro `dropmodifmac`, das einen Zeichenkettenparameter `str` akzeptiert. Eine lokale Makrovariable `tempstr` wird deklariert. Die Verarbeitung beginnt damit, doppelt und dann einfach zitierte Zeichenketten zu neutralisieren, indem sie durch ein spezielles Zeichen ersetzt werden, um zu vermeiden, dass eventuelle Klammern darin versehentlich verarbeitet werden. Anschließend wird eine `%do %while`-Schleife ausgeführt, solange eine öffnende Klammer in der Zeichenkette erkannt wird. In jeder Iteration wird die Funktion `prxchange` mit einem regulären Ausdruck verwendet, um das innerste Klammerpaar `()` und seinen Inhalt zu finden und zu entfernen. Die Schleife wiederholt sich, bis alle Klammerpaare eliminiert wurden. Schließlich gibt das Makro die bereinigte Zeichenkette `tempstr` zurück.
Kopiert!
%put MACRO CALLED: dropmodifmac v1.0;
%macro dropmodifmac(str);
%local tempstr;
%*- non-greedy replace stuff in double quotes with "" -;
%let tempstr=%sysfunc(prxchange(s!%str(%"-).*?%str(%"-)!""!,-1,
%superq(str)));
%*- non-greedy replace stuff in single quotes with '' -;
%let tempstr=%sysfunc(prxchange(s!%str(%'-).*?%str(%'-)!''!,-1,
%superq(tempstr)));
%*- repeat until we have no more left round brackets -;
%do %while( %index(%superq(tempstr),%str(%()) );
%*- Non-greedy replace stuff inside "( )" that does -;
%*- not include a left round bracket with null. -;
%let tempstr=%sysfunc(prxchange(s!\%str(%()[^\%str(%()]*?\%str(%))!!,-1,
%superq(tempstr)));
%end;
&tempstr
%mend dropmodifmac;
1
%put MACRO CALLED: dropmodifmac v1.0;
2
3
%macro dropmodifmac(str);
4
%local tempstr;
5
%*- non-greedy replace stuff in double quotes with "" -;
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.