Visión general (mandato FILTER)
FILTER se utiliza para excluir casos de procedimientos de programa sin suprimirlos del conjunto de datos activo. Cuando FILTER está en vigor, los casos con un valor cero o perdido para la variable especificada no se utilizan en los procedimientos del programa. Estos casos no se suprimen realmente y están disponibles de nuevo si el filtro está desactivado. Para ver el estado actual del filtro, utilice el mandato SHOW .
Especificación básica
La especificación básica es la palabra clave BY seguida de un nombre de variable. Los casos que tienen un valor cero o perdido para la variable de filtro se excluyen de los procedimientos posteriores.
Reglas de la sintaxis
- Sólo se puede especificar una variable numérica. La variable puede ser una de las variables originales del archivo de datos o una variable calculada con mandatos de transformación.
- La palabra clave
OFFdesactiva el filtro. Todos los casos del conjunto de datos activo pasan a estar disponibles para los procedimientos posteriores. - Si se especifica
FILTERsin una palabra clave, se asumeFILTER OFFpero el programa muestra un mensaje de aviso. FILTERse puede especificar en cualquier lugar de la secuencia de mandatos. A diferencia deSELECT IF,FILTERtiene el mismo efecto dentro de un programa de entrada que fuera de un programa de entrada. Debe prestarse atención a la colocación de cualquier mandato de transformación utilizado para calcular los valores de la variable de filtro (consulteINPUT PROGRAM).
Operaciones
FILTERrealiza la selección de mayúsculas y minúsculas sin cambiar el conjunto de datos activo. Los casos que tienen un valor cero o perdido se excluyen de los procedimientos posteriores, pero no se suprimen del archivo.- Los valores perdidos del sistema y perdidos del usuario se tratan como perdidos. El mandato
FILTERno ofrece opciones para cambiar los criterios de selección. Para configurar distintos criterios para la exclusión, cree una variable numérica y calcule condicionalmente sus valores antes de especificarla enFILTER. - Si se especifica
FILTERdespués deTEMPORARY,FILTERsólo afecta al siguiente procedimiento. Después de ese procedimiento, el estado del filtro vuelve a ser el que era antes del mandatoTEMPORARY. - El estado del filtro no cambia hasta que se especifica otro mandato
FILTER, se especifica un mandatoUSEo se sustituye el conjunto de datos activo. FILTERyUSEson mutuamente excluyentes.USEdesactiva automáticamente cualquier mandatoFILTERanterior yFILTERdesactiva automáticamente cualquier mandatoUSEanterior.- Si se cambia el nombre de la variable de filtro especificada, seguirá en vigor. El mandato
SHOWmostrará el nuevo nombre de la variable de filtro. Sin embargo, el filtro se desactiva si la variable de filtro se recodifica en una variable de serie o se suprime del archivo. - Si el conjunto de datos activo se sustituye después de un mandato
MATCH FILES,ADD FILESoUPDATEy el conjunto de datos activo es uno de los archivos de entrada, el filtro permanece en vigor si el nuevo conjunto de datos activo tiene una variable numérica con el nombre de la variable de filtro. Si el conjunto de datos activo no tiene una variable numérica con ese nombre (por ejemplo, si la variable de filtro se ha descartado o renombrado), el filtro se desactiva. - Si el conjunto de datos activo se sustituye por un archivo de datos completamente nuevo (por ejemplo, mediante un mandato
DATA LIST,GEToIMPORT), el filtro se desactiva. - El mandato
FILTERcambia el estado del filtro y entra en vigor cuando se ejecuta un procedimiento o se encuentra un mandatoEXECUTE.