README.md


Extended FCS routines for DECUS "C"


These routines allow the "C" programmer on RSX to use some of the
more advanced FCS functions including preallocation files, creating
fixed record size files with record lengths other that 512, randomly
reading and writing a disk block or more at a time, and reading and
writing a random access, fixed record size file.

FOPENX.C provides the extended file open command. It takes advantage
of the existing DECUS "C" fopen() function, modified to leave out
the actual file open call. This code is contained in FDBSET.MAC.

Fopenx() calls FDBSET to setup the filename block, the "C" runtime
system and the FDB. The FDB is modified to request the desired open
options, and OPNFNB is called to complete to open.

Fopenx() can be extended further, the entire FDB is at your
disposal.


FGETB, FPUTB, FGETR, FPUTR

Fgetb() and Fputb() provide a simple way to read and write disk
blocks. They use the qio routine internal to the DECUS "C" runtime
library, so can be used in task that do not reference the CX
library. These routines are much, much faster that the normal "C"
fget and fput if you just need to manipulate disk blocks.

Fgetr() and Fputr() are direct implementations of the getr$ and
putr$ macros in the FCS library. I had a task written in macro that
required extensive changes. Rather that fighting with macro, I
rewrote the taks in "C", and needed these routines.


Building Everything

You should assemble or compile all the .MAC and .C file, then insert
the object modules into a library. We added them to C.OLB, but you
may want to keep them in a separate library if you want to keep a
stock C.OLB.

The documentation is embedded in the source modules. You can
generate the .RNO files by using GETRNO from the DECUS "C" kit. See
the README.1ST file in the other A.P. submission.


Questions, complaints, praise (I rather like the last) can be
addressed to:

Hans J. Jung
Assistant Manager of Research and Development
The Associated Press
50 Rockerfeller Plaza
New York, NY 10020
(212) 621-1568

I will take calls, but am notoriously hard to reach by phone. I also
can't guarantee you much phone time.