Beim Importieren von Rohtextdateien (über DATA STEP und INFILE) kommt es häufig vor, dass die Zeilen nicht alle die gleiche Länge haben. Standardmäßig verhält sich SAS© gefährlich: Wenn es eine Variable nicht vollständig lesen kann, springt es zur nächsten Zeile, um fortzufahren (Option FLOWOVER).
Um dies zu verhindern, gibt es zwei Optionen: MISSOVER und TRUNCOVER. Viele denken, sie seien austauschbar. Es gibt jedoch einen entscheidenden Unterschied, der Ihre Daten verfälschen kann.
1. Das Crash-Szenario
Stellen Sie sich vor, Sie bitten SAS©, 5 Zeichen ab Position 18 zu lesen.
INPUT @articles_translated/article_18_de.json code $5.;
Aber Ihre Datenzeile ist kürzer als erwartet: Sie endet bei Position 20.
SAS© benötigt die Positionen: 18, 19, 20, 21, 22.
Die Datei enthält: 18, 19, 20 (Zeilenende).
Es fehlen also 2 Zeichen, um die Anforderung zu erfüllen. Hier ändert die Wahl der Option alles.
2. MISSOVER: "Alles oder Nichts"
Die Option MISSOVER (Missing Over) ist streng.
Wenn SAS© nicht alle vom Format angeforderten Zeichen findet, betrachtet es das Lesen dieser Variablen als unmöglich.
Verhalten: "Du hast mir 5 Zeichen versprochen, ich sehe nur 3. Ich nehme nichts."
Ergebnis: Die Variable erhält einen fehlenden Wert (Missing).
Risiko: Sie verlieren die teilweise vorhandenen Informationen am Zeilenende (die Zeichen 18, 19 und 20 werden ignoriert).
3. TRUNCOVER: "Nimm, was da ist"
Die Option TRUNCOVER (Truncated Over) ist flexibel.
Wenn die Zeile vor dem Ende des Formats endet, nimmt SAS© alles, was es bis zum Zeilenumbruch findet.
Verhalten: "Ich wollte 5 Zeichen, du hast nur 3? Egal, gib mir die 3."
Ergebnis: Die Variable enthält den teilweisen Wert (die Zeichen an den Positionen 18-20).
Vorteil: Es gehen keine Daten verloren.
4. Vergleichsbeispiel
SAS©-Code:
