80-Bus News


July–August 1983 · Volume 2 · Issue 4

Page 48 of 55

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 bit!!

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 that fast.

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.

Page 48 of 55