> -- Цитата:
> VAR . Значение done устанавливается в TRUE при успешном вызове Open или Restart, и устанавливается в FALSE первой неуспешной операции ввода. Однажды установленная в FALSE, она сохраняет это значение до следующего вызова Open или Restart. Прямые обращения к методам сканера scanner не влияют на значение done. Поэтому для чтения потока ввода нужно либо использовать исключительно scanner, либо не использовать его вообще. VAR Объект, выполняющий работу по сканированию потока ввода. Подсоединяется к копии вводимого текста при выполнении процедуры Open (см. правила определения вводимого текста в описании процедуры Open).Использовать scanner следует лишь в тех случаях, когда требуется детальный (посимвольный) анализ структуры вводимых данных, например, когда структура вводимых данных неизвестна или слишком сложна.Приходится сталкиваться с ситуацией, когда структура вводимых данных проста и схема In.A(a); In.B(b); ...; ASSERT(In.done) устраивает, но местами требуются процедуры ввода данных специфического типа, которых в In нету.Эта проблема решалась бы дописыванием доп. процедур ввода, следующих логике In.done, если бы они имели возможность In.done менять (нужен полный экспорт вместо "на чтение").

Откуда возникают вопросы. Логично ли с т.з. расширямости такоерадикальное установление? Имеются ли соображения другого плана, которые перевешивают в пользу In.done только на чтение?