Publicado el :
Macro CREATION_INTERNE

Manipulación de cadenas de caracteres con macro %SCAN

Este código también está disponible en: Deutsch English Français
El código define una macro llamada `name` que acepta un parámetro `fullname`. Dentro de la macro, la función de macro `%SCAN` se utiliza para extraer las diferentes partes del nombre. La segunda palabra (supuestamente el nombre) se extrae primero, seguida de la primera palabra (supuestamente el apellido), utilizando la coma como delimitador implícito por defecto (o el segundo delimitador si la coma está explícitamente en la lista de delimitadores predeterminados de %SCAN si no está enmascarada). Las partes extraídas se concatenan luego en el orden 'nombre apellido' en una nueva variable macro `newname`, que luego se muestra en el log SAS© a través de `%PUT`. La llamada a la macro utiliza la función `%str` para enmascarar la coma presente en la cadena 'O'Malley, George', asegurando así que la cadena se trate como un solo argumento por la macro.
Análisis de datos

Type : CREATION_INTERNE


El código fuente no manipula datos de tablas SAS o archivos externos. Opera únicamente sobre una cadena de caracteres literal pasada como argumento a una macro. Por lo tanto, no hay dependencias de datos SASHELP o datos externos no gestionados.

1 Bloque de código
MACRO DEFINITION
Explicación :
Este bloque define la macro `name`. Toma un argumento `fullname`. Dentro, usa `%SCAN` para extraer la segunda y la primera parte de la cadena `fullname` (correspondientes respectivamente al nombre y al apellido si el formato es 'Apellido, Nombre'). Luego, ensambla estas partes en el orden 'nombre apellido' y almacena el resultado en la variable macro `newname`. Finalmente, el valor de `newname` se escribe en el log SAS.
¡Copiado!
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 Bloque de código
MACRO CALL
Explicación :
Este bloque llama a la macro `name` definida anteriormente. La cadena 'O'Malley, George' se pasa como argumento `fullname`. El uso de `%str()` es crucial aquí para enmascarar la coma y el apóstrofo, de modo que se traten como caracteres literales de la cadena en lugar de como delimitadores de parámetros de macro o caracteres especiales por el preprocesador de macros SAS. El resultado que se muestra en el log será 'George O'Malley'.
¡Copiado!
1%name(%str(O%'Malley, George))
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.