Publicado el :
Macro CREATION_INTERNE

Generación de cláusulas WHEN para bloques SELECT (_bwhen)

Este código también está disponible en: Français Deutsch English
La macro _bwhen reemplaza a una antigua macro %_WHEN que se volvió inestable en SAS© 9.3. Utiliza la opción /PARMBUFF para aceptar una lista variable de argumentos (valores individuales, rangos de valores con guiones). Se basa en macros externas (%_count, %_list) para analizar esta lista (gestionando paréntesis y comas) y devolver una sintaxis 'when(...)' correctamente formateada para el Data Step.
Análisis de datos

Type : CREATION_INTERNE


La macro realiza la generación de código y la manipulación de cadenas de caracteres. No lee ninguna tabla de datos.

1 Bloque de código
MACRO
Explicación :
Definición de la macro. Calcula el número de elementos a través de %_count, luego itera para generar el contenido de la instrucción when() utilizando %_list y %qscan para formatear cada elemento.
¡Copiado!
1%macro _bwhen/parmbuff;
2 
3%local i j;
4 
5%*put SYSPBUFF=&syspbuff;
6 
7%let j=%_count(&syspbuff, split=%str(,()));
8 
9when(%DO i=1 %to &j;
10 %_list(%qscan(&syspbuff, &i, %str(,())), split=%str(,)) %IF &i<&j %THEN ,;
11%END;)
12 
13%mend _bwhen;
2 Bloque de código
DATA STEP
Explicación :
Código de prueba (actualmente comentado en la fuente) que demuestra el uso de la macro en un Data Step para verificar si una variable 'hcpcs_cd' pertenece a una larga lista de códigos o rangos.
¡Copiado!
1/* Exemple de validation (commenté dans la source) */
2DATA _null_;
3 
4 hcpcs_cd='63279';
5 
6 select(hcpcs_cd);
7 %_bwhen('22100', '22110', '22318', '22319', '22326', '22548',
8 '22590', '22595', '61343', '63180', '63182', '63194', '63196', '63198',
9 '63250', '63265'-'63285', '63300', '63304') ex15=1;
10 otherwise;
11 END;
12 
13 put ex15=;
14RUN;
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 : Copyright (c) 2013 Rodney Sparapani