La macro no procesa ningún conjunto de datos. Opera sobre una cadena de caracteres que se le proporciona como parámetro. La fuente de 'datos' es, por lo tanto, interna a la llamada de la macro.
1 Bloque de código
MACRO
Explicación : Este bloque define la macro `dropmodifmac` que acepta un parámetro de cadena de caracteres `str`. Se declara una variable macro local `tempstr`. El procesamiento comienza neutralizando las cadenas de caracteres entre comillas dobles y luego simples, reemplazándolas por un carácter especial, para evitar que posibles paréntesis internos sean tratados. Luego, un bucle `%do %while` se ejecuta mientras se detecte un paréntesis de apertura en la cadena. En cada iteración, la función `prxchange` se utiliza con una expresión regular para encontrar y eliminar el primer par de paréntesis `()` más interno y su contenido. El bucle se repite hasta que todos los pares de paréntesis hayan sido eliminados. Finalmente, la macro devuelve la cadena `tempstr` limpia.
¡Copiado!
%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 "" -;
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.
Información de copyright : 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 y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.