Вкниге «Программирование на Обероне»приведён такой пример чтения из файла (стр. 52):

> -- Цитата:
> The file can thereafter be read by the following pattern. First, the file with specified name is associatedwith variable f. Then a rider is placed at the start of the file, and then advanced by reading.Note that the rider indicates that the end of the file had been reached after the first unsuccessful attemptof reading.
Тогда как вкниге «Проект Оберон»приведён следующий пример (стр. 85):

## Код:
```
VAR f: Files.File; r: Files.Rider;
f := Files.Old(name);
IF f # NIL THEN
 Files.Set (r, f, 0); Files.Read(r, x);
 WHILE ~ r.eof DO ... x ...; Files.Read(r, x) END
END
```

По-моему, в первой книжке ошибка, т. к. код не стыкуется с комментарием («Заметим, что бегунок указывает, достигнут ли конец файла, только после первой неудачной попытки чтения»).

Вопрос:
Надо ли производить вызов Files.Read до начала цикла? Понятно, что среди различных реализаций Оберона можно найти оба варианта, но интересней всего знать, какдолжнобыть по науке.