Macros SAS. Contar las palabras de una macro variable

11 Dic

Una macro de SAS interesante que nos permite ahorrar código. Dada una macro variable necesitamos contar el número de palabras que tiene esta macro variable. Para ello vamos a crear una función con código macro:

%let texto = uno dos tres;

%macro cuenta(mv);
%eval(%sysfunc(length(%cmpres(&mv.),%str( ))) - %length(&mv.) + 1)
%mend;

%put La Macrovariable Texto tiene %cuenta(&texto.) palabras;

Vemos que la macro variable texto tiene tres palabras y necesitamos contabilizarlas para automatizar un código. La propuesta que se plantea es el cálculo de la longitud de la macro sin espacios frente a la longitud de la macro variable con espacios. La diferencia más uno será el número de palabras de nuestro texto. Como aspectos interesantes tenéis el uso de %str( ), %cmpres y como se juega con %sysfunc para evitar algún que otro problema. Esta macro tiene sus problemas, no pongáis más de dos espacios que la volvéis loca. Pero puede resultar muy útil para determinadas cosas. Saludos.

3 respuestas a «Macros SAS. Contar las palabras de una macro variable»

  1. Otra versión:
    %let texto=a c v f r t g h yjj jj7 jj4 jj;

    %macro cuenta(mv);
    %global palabras;
    %let palabras=%sysfunc(countw(&mv));
    %mend;

    %cuenta(&texto);

    %put La Macrovariable Texto tiene &palabras palabras;

    Saludos

  2. Se supone que la cadena en la variable macro texto debería tener varios espacios entre sus palabras pero se han borrador al pegar el código.

  3. En la versión que yo empleo de SAS la función countw no funciona, el problema de los espacios se podría resolver con compbl. Pero desde luego que esta versión es menos complicada. Gracias.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *