Lors de l'importation de fichiers textes bruts (via DATA STEP et INFILE), il arrive souvent que les lignes n'aient pas toutes la même longueur. Par défaut, SAS© a un comportement dangereux : s'il n'arrive pas à lire une variable jusqu'au bout, il saute à la ligne suivante pour continuer (option FLOWOVER).
Pour empêcher cela, deux options existent : MISSOVER et TRUNCOVER. Beaucoup pensent qu'elles sont interchangeables. Or, il existe une différence critique qui peut fausser vos données.
1. Le Scénario du Crash
Imaginez que vous demandiez à SAS© de lire 5 caractères à partir de la position 18.
INPUT @18 code $5.;
Mais, votre ligne de données est plus courte que prévu : elle s'arrête à la position 20.
SAS© a besoin des positions : 18, 19, 20, 21, 22.
Le fichier contient : 18, 19, 20 (fin de ligne).
Il manque donc 2 caractères pour satisfaire la demande. C'est ici que le choix de l'option change tout.
2. MISSOVER : "Tout ou Rien"
L'option MISSOVER (Missing Over) est stricte.
Si SAS© ne trouve pas la totalité des caractères demandés par le format, il considère que la lecture est impossible pour cette variable.
Comportement : "Tu m'as promis 5 caractères, je n'en vois que 3. Je ne prends rien."
Résultat : La variable est mise à valeur manquante (Missing).
Risque : Vous perdez l'information partielle présente en fin de ligne (les caractères 18, 19 et 20 sont ignorés).
3. TRUNCOVER : "Prends ce qu'il y a"
L'option TRUNCOVER (Truncated Over) est flexible.
Si la ligne se termine avant la fin du format, SAS© récupère tout ce qu'il trouve jusqu'au saut de ligne.
Comportement : "Je voulais 5 caractères, tu n'en as que 3 ? Pas grave, donne-moi les 3."
Résultat : La variable contient la valeur partielle (les caractères aux positions 18-20).
Avantage : Aucune donnée n'est perdue.
4. Exemple Comparatif
Code SAS© :
