Al importar archivos de texto sin formato (mediante DATA STEP e INFILE), a menudo sucede que las líneas no tienen todas la misma longitud. Por defecto, SAS© tiene un comportamiento peligroso: si no puede leer una variable hasta el final, salta a la siguiente línea para continuar (opción FLOWOVER).
Para evitar esto, existen dos opciones: MISSOVER y TRUNCOVER. Muchos piensan que son intercambiables. Sin embargo, existe una diferencia crítica que puede distorsionar sus datos.
1. El Escenario del Colapso
Imagine que le pide a SAS© que lea 5 caracteres a partir de la posición 18.
INPUT @articles_translated/article_18_es.json code $5.;
Pero su línea de datos es más corta de lo esperado: termina en la posición 20.
SAS© necesita las posiciones: 18, 19, 20, 21, 22.
El archivo contiene: 18, 19, 20 (fin de línea).
Por lo tanto, faltan 2 caracteres para satisfacer la solicitud. Aquí es donde la elección de la opción lo cambia todo.
2. MISSOVER: "Todo o Nada"
La opción MISSOVER (Missing Over) es estricta.
Si SAS© no encuentra la totalidad de los caracteres solicitados por el formato, considera que la lectura es imposible para esta variable.
Comportamiento: "Me prometiste 5 caracteres, solo veo 3. No tomo nada."
Resultado: La variable se establece en valor faltante (Missing).
Riesgo: Pierde la información parcial presente al final de la línea (los caracteres 18, 19 y 20 son ignorados).
3. TRUNCOVER: "Toma lo que haya"
La opción TRUNCOVER (Truncated Over) es flexible.
Si la línea termina antes del final del formato, SAS© recupera todo lo que encuentra hasta el salto de línea.
Comportamiento: "Quería 5 caracteres, ¿solo tienes 3? No importa, dame los 3."
Resultado: La variable contiene el valor parcial (los caracteres en las posiciones 18-20).
Ventaja: No se pierde ningún dato.
4. Ejemplo Comparativo
Código SAS©:
