EOF is a pre-defined name indicating that the end of file has been reached on the current input stream. All stream input primitives, such as READ, READCHAR, READLINE, READLIST, or READQUOTE, output :EOF if the stream from which they are reading reaches the end of a file. If an attempt is made to read characters past the end of a file, an error message displays. The default value of "EOF is EOF.
The procedure below reads every character from a file the end of file marker is reached. Thus, the file is checked for bad sectors or other hardware problems.
TO SCAN :FILE
- IF NOT FILE? :FILE THEN (PRINT :FILE [DOES NOT EXIST]) STOP
- MAKE "OLDSTREAM :STANDARD.INPUT
- MAKE "STANDARD.INPUT OPEN :FILE
- CLOSE :STANDARD.INPUT
- MAKE "STANDARD.INPUT :OLDSTREAM
- IF EQUAL? RC :EOF THEN STOP