01-02-2018 01:03 PM
When it comes to reading in raw data with Infile statements, can someone explain what a 'short line' is?
This seems to play a big part in distinguishing between Missover, stopover and truncover?
(It would be great to get an explanation of the differences here too!)
Is it to do with the row of data being read in to have fewer columns or entries than expected?
Thanks very much,
01-02-2018 02:35 PM - edited 01-02-2018 02:38 PM
If you're just asking what the term "short line" is, then yes, it's a line of input data that has a record length that is less than the longest requested record length by the INPUT statement.
The missover/stopover/truncover options determine what to do when that happens (when SAS attempts to read past a line delimiter, meaning a CR/LF/whichever or both are used by your OS/program).
Kiranv's linked paper explains them well, but in brief: STOPOVER says to treat as an error any time it attempts to read past a line delimiter. MISSOVER says to treat any variable that extends past the line delimiter as missing (including one that starts before it). TRUNCOVER is similar but does not treat a variable that starts before the line delimiter as missing, it just truncates it to the line delimiter. FLOWOVER basically ignores the line delimiter and keeps looking for more data after it (and is default).