Veröffentlicht am :
Macro CREATION_INTERNE

Manipulation von Zeichenketten mit dem %SCAN-Makro

Dieser Code ist auch verfügbar auf: English Español Français
Der Code definiert ein Makro namens `name`, das einen Parameter `fullname` akzeptiert. Innerhalb des Makros wird die Makrofunktion `%SCAN` verwendet, um die verschiedenen Teile des Namens zu extrahieren. Das zweite Wort (angenommen, es ist der Vorname) wird zuerst extrahiert, gefolgt vom ersten Wort (angenommen, es ist der Nachname), wobei das Komma als implizites Standardtrennzeichen verwendet wird (oder das zweite Trennzeichen, wenn das Komma explizit in der Liste der Standardtrennzeichen von %SCAN enthalten ist und nicht maskiert wird). Die extrahierten Teile werden dann in der Reihenfolge 'Vorname Nachname' zu einer neuen Makrovariable `newname` zusammengefügt, die dann über `%PUT` im SAS©-Log angezeigt wird. Der Makroaufruf verwendet die Funktion `%str`, um das Komma in der Zeichenkette 'O'Malley, George' zu maskieren, wodurch sichergestellt wird, dass die Zeichenkette als ein einziges Argument vom Makro behandelt wird.
Datenanalyse

Type : CREATION_INTERNE


Der Quellcode manipuliert keine Daten aus SAS-Tabellen oder externen Dateien. Er operiert ausschließlich auf einer literal als Argument an ein Makro übergebenen Zeichenkette. Daher gibt es keine Abhängigkeiten von SASHELP-Daten oder unkontrollierten externen Daten.

1 Codeblock
MACRO DEFINITION
Erklärung :
Dieser Block definiert das Makro `name`. Es nimmt ein Argument `fullname` entgegen. Im Inneren verwendet es `%SCAN`, um den zweiten und ersten Teil der Zeichenkette `fullname` zu extrahieren (entsprechend Vorname und Nachname, wenn das Format 'Nachname, Vorname' ist). Anschließend werden diese Teile in der Reihenfolge 'Vorname Nachname' zusammengefügt und das Ergebnis in der Makrovariablen `newname` gespeichert. Schließlich wird der Wert von `newname` in das SAS-Log geschrieben.
Kopiert!
1%macro name(fullname);
2 %let first=%scan(&fullname,2);
3 %let last=%scan(&fullname,1);
4 %let newname=&first &last;
5 %put &newname;
6%mend name;
2 Codeblock
MACRO CALL
Erklärung :
Dieser Block ruft das zuvor definierte Makro `name` auf. Die Zeichenkette 'O'Malley, George' wird als Argument `fullname` übergeben. Die Verwendung von `%str()` ist hier entscheidend, um das Komma und den Apostroph zu maskieren, damit sie als literale Zeichen der Zeichenkette und nicht als Makroparameter-Trennzeichen oder Sonderzeichen vom SAS-Makroprozessor behandelt werden. Das im Log angezeigte Ergebnis wird 'George O'Malley' sein.
Kopiert!
1%name(%str(O%'Malley, George))
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.