This paper presents a pair of algorithms for output and input of pointer structures in binary format. Both algorithms operate in linear space and time. They have been inspired by copying garbage collection algorithms, and make similar assumptions about the representations of pointer structures, In real programs, the transfer of entire pointer structures is often inappropriate. The algorithms are extended to transfer partitions of a pointer structure lazily: the receiver requests partitions when it needs them.A remote procedure call mechanism is presented that uses the binary transfer algorithms for communicating arguments and results. A use of this as an enabling mechanism in the implementation of a software engineering environment is discussed.KEY WORDS Pointer structure Lazy transfer Distributed system Inter-process communication Remote procedure call Cadiz THE PROBLEM Many programs build data structures that consist of pieces of primary memory (often called records, structures or nodes) linked by memory addresses (often called pointers or references). Such linked data structures, or pointer structures, can be used to represent linear lists, trees, directed acyclic graphs, and unrestricted cyclic graphs. Pointer structures can be built, traversed, and revised, and finally the space they occupy can be reclaimed for reuse.The problem is how to transfer a pointer structure from one process to another, either via secondary storage or more directly via an inter-process communication stream. The requirements on a solution are that it be able to cope with an arbitrary pointer structure (maintaining any sharing and cycles), and that the original pointer structure be left in its original state.The links in the receiving process' copy of the pointer structure will almost inevitably be represented by different primary memory addresses to those in the original pointer structure, simply because primary memory at the same addresses is unlikely to be free. The major difficulty is in the maintenance of the links. Whether the transfer takes place via secondary storage or via an inter-process communication stream makes no difference.