Review of dbFree
by
Shawn Gordon
President
The Kompany

Introduction

I am in the habit of reading all my monthly publications from cover to cover, especially the advertisements and new product release announcements. Some time back I started seeing ads for a product called DBfree which was being touted as a ‘Natural Language processor’. This struck me as a bit hokey and probably just another attempt to throw new buzz words around, but eventually I figured it was probably worth a look, since if it could do what it said it could do, then I might very well find it useful.

My shop consists of an HP 3000 series 70 with 12 meg of main memory, 3 gig of disc and about 50 users on at any given time. We are currently on MPE V release 21 of platform 1P with not patch’s. I ran all tests during the day with my regular load on the CPU.

First a little history; Los Altos Software markets a couple of different application systems for sales leads tracking and human resource management. The DBfree product was originally developed as part of these systems as a utility program to give their users a little more power and flexibility so they wouldn’t have to by some other third party system. It turned out that DBfree became very popular among their user base and they decided to market it as a stand alone system. So while we have only been hearing about it for the last couple of years or so, it has been around for some time.

Los Altos Software doesn’t claim that DBfree is a 4GL or even that it’s a report writer, I would tend to say that it infringes on both these areas. Since it isn’t exactly the most robust report writer (they don’t claim it is), and it allows updates to data as well it is justifiable to not call it a report writer.

There have been many ‘languages’ over the years that have been designed to be as ‘English’ like as possible in an effort to reduce the learning curve and provide better functionality, COBOL is a good example of one of the earlier ones. DBfree claims to be a ‘Natural Language Processor’ (NLP) that works in the natural language of the user, this is part of the Artificial Intelligence craze that seems to be fizzling out, the only problem with this is that it invariably turns out to be the natural language of the guy who programmed it. This isn’t necessarily a bad thing, but it is inevitable.

Features

I suppose the easiest way to think of DBFree’s interface is to think of QUERY with some of COBOL’s syntax. This of course doesn’t cover it all by any means, but it’s a good starting point. DBFree has more than 35 commands with fairly extensive help available at every level to assist you. The tutorial part is a good introduction to the commands that you will be using the only drawback is that it doesn’t actually run you through the commands, it just displays examples and descriptions.

DBFree commands can be grouped into the following categories; arithmetic operators, ADD, SUBTRACT, DIVIDE, MULTIPLY, these work with literals, data items or user declared variables, these operators automatically align decimal points if applicable as well. I/O commands, ACCEPT/DEMAND, LIST, PLACE, PRESENT, REPORT, READ, SORT, WRITE, WRITE-ENTRY. Logic/looping constructs and boolean operators, IF, ELSE, ENDIF, PERFORM WHILE, AND, OR, and the comparison operators =, <, >, # (not equal). Since I don’t want to name every command I will say that the software supports the ability to add, modify, and delete items or records in a data set. I don’t know if I said this clearly earlier, but you can define your own local variables that can be used in any of the constructs that I mentioned the same way a literal or data item could be used.

The first thing you want to do is to tell DBFree about the data base’s that you want it to use and define such global parameters as security, synonyms for base’s, sets and items and what they call database segmentation. This lets you partition a database into a logical segment for a user, i.e., your accounts payable person doesn’t need to see the customer accounts set.
This brings up to one of the very nice features of DBFree, and that is the ability to assign synonym names to any part of the data base to make it more
intuitive for your users. For example I have a field called AMT-TBAL which I know is the total balance, but the user isn’t likely to know it, so I can assign a synonym name to it so they see something like ‘Total Balance’ when the list out the fields. The ability to assign synonyms also applies to data sets and data base’s.

So to load the data base you would issue the command ‘DB-ACCESS base’ this then leads you through a series of configuration prompts. Additional passwords can be defined with the ‘PW-ACCESS pass’ command. This is rather unique in that you can assign a maximum number of find commands that can be issued for a password thus giving you the ability to control what a user can do based on his password. This includes what data sets and items they can see or access as well as allowing the ability to modify the data base, this includes additions, changes, and deletes.

What is nice about DBFree is it’s ability to do exception reporting, this kind of thing is usually very difficult or impossible for a regular report writer. To test this I decided to make sure that all my order lines
had an order hear, here is the syntax that I used:

ENTER REMOTE
FINDALL ORDLINE FIND ORDHEAD.SALES-ORD SALES-ORD;
ELSE LIST SALES-ORD END END

The ENTER command has 8 different options, by telling DBFree to ENTER REMOTE we are telling it to route all displays other than prompts to the printer. This will remain in effect until you exit DBFree or issue the reverse command which is ENTER LOCAL. The FINDALL command causes DBFree to read every record in a data set, in other words a serial read, this then initiates the chained
read to ORDHEAD on the key SALES-ORD using the value SALE-ORD from ORDLINE.
The semi-colon (;) is used as a continuation character in DBFree so we go
to the next line and process our ELSE statement. This tells DBFree to LIST the SALES-ORD item and then the two END statements match off the two FIND statements. So for every record that doesn’t find a match we will list the value to the line printer. Pretty neat huh?

The software supports a sort of recorder/script file capability that they call procedures. Basically, after you perform a function you can save it so it can be used later and you won’t have to remember it or re-type it. This makes the ability to create local variables and to prompt for information even more powerful, you basically end up with a small program with very little effort on your part. The only thing that is a little confusing is that they seem to refer to procedures and functions interchangeably and neither is very well explained in the documentation. This didn’t keep me from creating and using procedures however. I also didn’t notice any facility for editing a procedure once it is stored. I would have liked to have had a facility for copying a procedure and then editing it, this is mostly because I tend to be lazy whenever I can get away with it.

Usability (also installation)

As far as installation goes, the software uses the standard type of process, i.e., log on as MANAGER.SYS, restore some files, add your passwords to the install job streams (unless you don’t need to), and then stream the job. This process works just fine, my only complaint is that it doesn’t clean up after itself, in other words it leaves the files in your SYS account. Many software vendors are guilty of this same thing, it just happens to be a pet peeve of mine.

While I’m at it I might as well mention the other small things that I didn’t care for. The program could benefit for the ability to REDO the last command, they do go to the trouble to explain how to use the LINE MODIFY ability of the HP terminal to go back and modify lines, but I didn’t really think that was enough. I also wish that they would at least reset my function keys to their default values if not their original values upon exiting the program instead of leaving them loaded from DBFREE.

In defense of Los Altos they were very open to my suggestions and said they would probably implement at least some of them.

Reliability

Since the software never crashed my system I will have to say that it seemed reliable. It did everything that I felt I understood it to do, the only time it didn’t was when I made a mistake in my syntax, usually a quick look at the manual or using the help facility cleared this up. There really isn’t much that can go wrong beyond parsing your commands incorrectly, but I never found an instance of this.

Performance

DBFree won’t win any speed contests, it’s as fast as any other language that does data base I/O, they could probably benefit from a module to do MR NOBUF I/O against the data base’s. I used PROBE/3000 to examine the performance of the software on my computer and I found that during a long transaction (such as the exception report I mentioned earlier) that it was using 27% of a 41% busy CPU, or about 10% of the total CPU. Since all my other process’s seemed to be getting all the CPU they wanted I will give DBFree a thumbs up for not hogging my CPU. However if you go to look at the process detail you will find that DBFree has opened every data set that it has access to for that user, this isn’t necessarily bad, but don’t be surprised if you see it.

Supportability (including Doc)

The folks at Los Altos software are very helpful friendly and responsive to questions over the phone. Since I started to look at the product before I decided to do the review I figure they are this way with everybody. The documentation provided with the software is mercifully small, but overall it is complete. It serves as a good reference manual and each of the commands has an example to help you. They could benefit from a little more documentation for the functions that aren’t commands however.

Summary

Overall I would have to say that DBFree is a fine product that fits into a rather unique place in the data processing community. At the time of this writing DBFree was only $2500 which I felt was a very good price for the product. I think that the $5000 that they will be charging is a little high and might discourage some people from buying it. However there does seem to be a feeling in the community at large that the higher the price the higher the quality, so I can’t say I blame them for raising the price.

I would have to say that even if you have a report writer but need something that can do exception reporting and/or allow you to make changes to a data base then DBFree is for you. The software is also very good if your a small shop (like me) and need a tool to help with all that ad-hoc emergency stuff that always seems to crop up. It doesn’t support KSAM files so remember that when looking at the product. So DBFree gets two snaps and a twirl from me.

At-a-Glance box

DBFree version V:1.0, L:005
Los Altos Software
PO Box 639
Los Altos CA 94023-0639
(415) 941-6030
Call or write for more information or demo
Product is $5000 regardless of CPU size and support for the first year is included. After that it is 13% or price paid per year.
Available in both Compatibility and Native mode.
One user guide is included and is about 80 pages.

Good Points:
Fairly easy to learn
flexible syntax
very configurable
unique product
good help facility

Bad Points:
faster retrieval
better explanations in manual in addition to examples
sorting doesn’t let you specify key fields