RWBROOK interface: General Principles.
In RWBROOK interface, each data set (a content of the whole coordinate file) is associated with a single number -- a "channel" number. It may be viewed in quite a close analogy with FORTRAN input/output channel (unit) numbers used in FORTRAN operators read/write. In reality, however, it is merely a handle to a particular instance of the coordinate hierarchy. There is no principal limitation on the number of channels.
The coordinate file is read all at once when a channel is open for input. The coordinates of atoms may be then retrieved in a sequential manner, atom by atom, replicating the FORTRAN-style reading of 'ATOM' etc. cards from a PDB file. Unlike the older rwbrook.h, which physically read coordinates from a file each time they were requested, the new RWBROOK interface retrieves them from RAM. This eliminates inefficiency of older rwbrook.f in random accessing the coordinates; however all the process remains based on the notion of an "internal channel pointer" (ICP) running over atom indices. More details about ICP are found here.
Writing the coordinate file is imitated as a sequential process as well -- the atoms are added one by one to a coordinate hierarchy located in memory. The physical writing of the hierarchy into a file is done by issuing a special call or by closing the "channel".
The following important difference between the older rwbrook.f module and the newer RWBROOK interface should be realized:
Technically, use of the library reduces simply to linking your code with mmdb.tar. On my Silicon Graphics, I do it as follows:
f77 fortcode.f ccode.c cppcode.cpp mmdb.a -lftn -lm -lc -lC
where fortcode.f, ccode.c and cppcode.cpp are sources of FORTRAN, C and C++ codes, correspondingly.