Instructions for the use of FLEXI-BASE Current version 2.0 February 1990 Flexi-base is a small (30K) but powerful database program. It originally came about because I feel there is a real shortage of database programs for the Amiga, and those that are around are virtually falling over themselves with complexity of use. These also prove to be rather expensive ! Flexi-Base is simplicity to use. You are not tied to any particular layout of your data page or the order in which you enter the data thereon. To start using Flexi-Base you must set up a database specification, and the program Flexi-Config will help you to do just this. Click on it`s icon and a very simple CLI style window will open, you are asked the database`s name, how many fields in each record and what their names and lengths are. Then you are asked to position each on the data page with the mouse. The field will appear at the bottom of the screen and by passing the pointer over this, it will "stick" and move with the pointer. When it`s in the right place, one click will secure it there. Once this is done, the specification or configuration is stored and the program will exit. To use this new database, click on the Flexi-Base Icon and select the database`s name from the list of files given. The data page will be built up on screen and the first record (if there is one) will be displayed. If this is a new or empty database then you will automatically be placed in the Enter New Record mode, the only exit from this page is by the ESC key which may be pressed at any time while entering data. The "Yes, No, Cancel" dialogue boxes at the end of these data entry pages do not necessarily require the use of the mouse, you may click one of the three buttons but just stiking the initial key on the keyboard, I think this is a nice short cut. In normal use there are three menus. The Project, Record and Mailshot menus. The former controls the system functions of Flexi-Base and these are very few,Different Database which requests the user to select a different database to open (Never!), Kill a data base which kills the current database, and Quit which exits to the workbench, selecting cancel from the file requester also has the effect of quitting. The record menu has Ten options available at present and all but one have keyboard short cuts. The first two have the effect of stepping forwards or backwards through the database one record at a time unless you have a search profile active and then it will be stepping forwards and backwards through the records that match the search requirements. The next two options move the display to either the top or bottom of the database and cancel the stepping through of only the records that match the search profile. The search option allows you to enter a search profile with which to match any records in the database and display only these. For a search to take place you must fill out a data page but you are able to place one extra character before each field to inform Flexi-Base how the data you enter is to be matched with records on the database. There are eight special characters, these are:- = Is the Same as ... # Is NOT the Same as ... ^ Does Contain ... - Does NOT Contain ... > Comes after ... } < Comes before ... } Not implimented } on Version 1.01 ? Does Contain ... or is blank } / Does NOT Contain ... or is blank } any other characters or blank is a wild card and no comparison will take place, e.g. anything goes. So if a profile had the entry of ^fred all records where "fred" appeared anywhere within that given field would be displayed (as long as no other field profile inhibited it). The comparisons are not case sensitive and so there are no constraints placed on you to know what is already in your database. As an example, suppose a simple record was given the profile:- Name:^smith Tel.:^01 Address:-high street :#camden :=london This would instruct Flexi-Base to display all records where the name contains "smith" and the telephone number has an "01" in it but does not live in camden but does live in london. A record that would match this might be:- Name:John Smithson Tel.:01 123 1234 Address:Station Road :Finchley :London And one that would not:- Name:Eric Smith Tel.:0895 12345 Address:Station Road :Hillingdon :London by virtue of the fact that the `phone No. does not contain "01" even though all the other criteria are satisfied. Once a (group of) record(s) has been matched to the profile, the "Next record", Previous record" display options will only work on this group. To reset this to work on all records in the database, use the "First record", "Last record" options from the menu. The print option is exteremely simple at this stage, merely sending a stream to the printer as it is fetched from disc. No formatting takes place at the moment... (later Ver... 2.1?) The modify option is very similar to entering new data. The current record on display is stepped through and the fields may be altered at will. If the new data is ok the record will be stored, if not it may be re-entered or cancelled in which case the new data will be ignored and the old record will be re-displayed. The Enter New Records option has been discussed at the beginning of this document. About the Sort option see later... Deleting records, the current record will be deleted and the display adjusted accordingly. If the only record in a database is deleted you will automatically be placed in the data entry mode afterwards. No checks are made on the records you are about to delete so be careful ! All records on Flexi-Base are completely RAM: based, that is the whole file is brought into ram and any operations occur there. This results in fairly fast activity but has several drawbacks. Firstly if you reset your Amiga or the power fails, Any changes you have made will not be stored but the program is fail safe in this respect, that is: no file is left open on disc so you will not get "File already open" alerts when it is obvious that it most definately is not but was not closed before the machine reset. The second aspect is that the file must be buffered before and after use. The file is copied in it`s entirety to RAM: and then copied back when finished with (if anything has changed). To prevent worrying periods of apparent inactivity, when any appreciable work is being done, there is a "Work done guage" which is displayed at the top of the screen. When buffering or unbuffering a database or when re-organising the database after a delete, the gauge is displayed and the level of work done will gradually step up to the 100% mark when Flexi-base will listen to you again. The sort routine is fairly good. I originally wrote it as a straight- forward bubble sort but with a database of 480 records each 179 bytes long it took over five hours (!!"?##?!) to sort. This was due mainly to two problems. 1. Bubble sorts are inherently slow. 2. All sorting was done using the filing system. Bubble sorts (stop laughing at the back) are good for two reasons 1. They always work ! 2. They are easy to program (double !) I remember from college going into all sorts of different sort algorithms and remember a demonstration of a shell sort where data was arranged in absolute worst condition and it failed to sort correctly as well as being slower than a bubble sort. Moral: doctors should attend the sick and leave the.. (sh)ell alone... (don`t throw monitors, they break easily). So I set about exploring new methods of sorting and came up with something I call a "Pre-ordered Bubble Sort" someone`s probably thought of it before and called it something completely different. The thinking goes... Bubble sorts are great on small lumps of data. So to give Flexi-Base a head start, the database is scanned and all of a particular field starting with the same character are grouped together and then bubbled. Thus Flexi-Base will fragment the database and end up with, say, twenty small(ish) lumps of data, even the accursed AmigaDOS would be able to move small groups of records about with reasonable speed... And it worked!!, well, sort of. The problem comes in that if you have a big database with a lot of fields (the one you choose to sort by) all starting with the same character... you`re back to square one. Large lump of data + Bubble sort = go-and-watch-a-film-time. Another problem is that this lump of data, is not handled by AmigaDOS until it`s sorted that means that because I only gave Flexi-Base a measely 50K to play with, as workspace, if you have a 100K database with half the records with a given field all starting with the same letter/number/character, your going to have: 1. A long wait 2. A cross Amiga 3. Probably a program failure (not GURU don`t panic) Whichever, either you or your amiga will disappear up it`s own hole ! The way to avoid this is three fold: a. Try to avoid sorting on fields that bear a startling similarity b. Use several smaller databases ( <40K ) c. Don`t use the sort option, Flexi-base will use however much is free in RAM: maybe upto 8 or 9 Megs. On it`s own it`ll handle huge databases Now your probably thinking "Jesus, all those limitations, this bloke must be a pratt!" well on the latter part your probably right but... I use Flexi-base with a 340K database holding my work records and I don`t find any problem. It seems these limitations only rear their ugly heads if you go looking for em`. See what you think, if you don`t like it go and pay ninety quid for superbase, so there. (sniff)