Для одной задачки компьютерной алгебры делаю некую квази-файловую системку.
Выясняется следующее.

Райдеры (Reader, Writer) модуля Stores (это, кстати, записи на стеке) подсоединяются к нужному файлу посредством метода .ConnectTo( файл ),
а затем нацеливаются на нужное место в файле методом .SetPos( pos ).

На самом деле точнее было бы подсоединять их не к файлу, а к райдеру, типа:

Stores.Writer.BindTo( baton: Files.Writer ); (* baton = эстафетная палочка *)

Райдеры модуля Files помнят своё положение, и из-за этого очищается код:
ансамбль процедурок обмениваются таким baton-ом без необходимости мусолить Pos, SetPos и передавать соответствующее целое.

Для себя я добавил в Stores простые процедуры

PROCEDURE BindReader (VAR rd: Reader; to: Files.Reader);
PROCEDURE BindWriter (VAR wr: Writer; to: Files.Writer);

но чище было бы сделать их стандартным средством каркаса, привязав к Reader/Writer.

Это предложение по развитию каркаса.

PS
Разумеется, я пробовал всякие варианты вроде того, чтобы роль эстафетной палочки играл указатель на Stores.Writer, размещённый на куче. Как-то обойтись можно -- но ценой грязи в коде.
Объективная логика диктует вышеописанное решение.