finding letters, but could equally well be a cross reference of books or
articles, recipes, or a sort of diary of things to do. In fact anything that
can be found from a key. All useful stuff, but not half as clever as the next
MAXIFILE can evaluate logical string expressions. In other words, I
can say, find the reference which contains the words “Jim” and “Fred” but not
“Sid”, or some such. It is equipped with logical AND, logical OR and logical
NOT. The expressions may be (but need not be) enclosed either within quotes or
within brackets, if the expression contains quotes then these should be
enclosed in brackets, if the expression contains brackets then these should be
enclosed within quotes. If the expression contains both brackets and quotes,
then you’re on your own!!. Proper precedence is given to the evaluation.
Unlike the simple ‘find’ mode, the ‘expression’ mode will work on records
within a file. Records are separated by ^L within a file, and the evaluation
is carried out on a record by record, then file by file basis. When a match is
found the start of the record is displayed, and the options open under the
simple ‘find’ mode are again available. This mode is particularly useful in
preparing text as it means that several things may be found and brought
together by the scanning of existing files for chunks of text which do or do
not contain certain keys.
A few other things about MAXiFILE, it is intended for use with text.
It can’t cope with files like .COM files, it doesn’t crash or anything, it
simply wastes time searching for something which patently will not be there.
There are two characters it can’t find, the ‘_’ and ^Z, as the former is used
as a string delimiter in Nascom versions of PEN, and the latter is used as a
file delimiter by PEN. Although it uses sequential file searches its speed is
impressive as it is written in machine code (none of your interpretive Basic
here). I’ve timed it at about 90 seconds for about 320K of text, which is
equivalent to about 80 A4 pages of text, there aren’t many people who can read
So MAXiFILE embodies all the principles of a ‘free field’ database.
The ability to create and enter data, to find it again, and to allow re-editing
and re-saveing of the file. Really there is not much more that can be
done with a ‘free field’ database, except perhaps to give it some arithmetic
capability for summing results in fields, but this is difficult as the fields
are not necessarily in the same place in each record. This sort of thing is
much simpler with the ‘fixed field’ database. The other improvement is to
provide some sort of indexing to speed the search, but this is really outside
the scope of MAXiFILE. There is only 1K of it and what it does in that space
is little short of a miracle. Apart from that, the whole philosophy of PEN and
its overlays is that it be cheap, powerful and simple to use, and indexing
records in a ‘free field’ database is neither cheap nor easy to use.
So having finished the discussion of the structure of a database file,
where now? In the next episode we will look at indexing the data for faster
retrieval and some of the more important features that may be incorporated
into the database controller. All good clean fun, and as I only have
experience with my own ‘home brew’ database controllers and dBASE II, I’ll
have to do a bit of reading up on some of the others around if I intend to
be objective next time round.