McMax — The dBASE III Work-Alike
Volume 5 no. 11 (November 1987), page 9
Because my first computer ran MS-DOS (albeit in a completely non-IBM-compatible way), and because the only “language” I ever really learned to use effectively was dBASE II, I have had a passing interest in the various dBASE work-alikes that have flared and faded over the last year or so.
Thus it was that when Nantucket Software’s full-color full-page ad for McMax caught my eye, I felt a pleasant sense of anticipation. Nantucket, who markets Clipper, a top-of-the-line dBASE compiler for the IBM world, knows dBASE as well as anybody, lending McMax the credibility some of the previous dBASE work-alike programs have lacked. McMax’s credibility increased when I called Nantucket and found that they were already shipping the product.
For those who are wondering why I am not comparing McMax with dBASE Mac or some other Macintosh database program, it is because McMax is not currently competing directly against them. As a “Mac” application McMax is not even in the running. McMax’s biggest boosters will be those who have dBASE III applications they wish to run on the Mac (it’s not likely to be used to write dBASE III programs for the IBM-compatible world although it can be done). From that viewpoint, none of the other “traditional” Mac database programs begin to compare.
For those not familiar with dBASE in any of its incarnations, McMax is a relational database program that may either be used interactively (by typing in commands one at a time) or in “batch” mode (by creating programs using McMax’s built-in programming language). The programming language is robust enough to provide developers with the resources for building turn-key packages similar to those that might be created using OMNIS 3.
Like dBASE, McMax’s programming language is interpretive. Unlike dBASE, however, McMax runs like a scalded cat. Nantucket states that McMax is many times faster than dBASE running on an IBM PC/AT. While I didn’t check that claim, it is so much faster than dBASE II running on my MS-DOS machine that there were many instances during my timing runs that I was caught off guard by the speed of this program. I can’t imagine how fast McMax would run on a Mac II.
Among the over 200 commands available in McMax is the ASSIST command, which Ashton-Tate added to dBASE III to quiet criticisms of its products ease of use. Although you will need to know McMax commands in order to make the most of the ASSIST mode, it is still handy for impromptu queries and learning the McMax syntax.
For programmers, McMax includes a built-in debugger, and allows the calling up of alert boxes. Last but far from least, applications written in McMax can be encrypted and distributed with McMax Run, Nantucket’s royalty-free run-time module.
Nantucket claims near total compatibility with dBASE III and dBASE III Plus data and program files. While I didn’t have time to explore every nook and cranny of the program, McMax is a success in its ability to run existing applications. DBASE II programs ran with only one minor change (which would have been required under dBASE III as well), and in spite of my best efforts to find “trick” code in both the Advanced Programmer’s Guide and dBASE III Plus Programming Tips & Techniques that would fool McMax, every example of code I found worked as advertised.
As previously mentioned, McMax’s speed is easy to appreciate. For test purposes, I ported over my 915 record database of the book titles, authors, and categories in my library. The index was defined as a concatenation of all three fields. Using both the LOCATE and FIND commands typically produced results in less than three seconds. While not as fast as HyperCard in this area, McMax performs its tasks quickly enough that you will not find yourself waiting on your computer very often. LISTing the database to the screen, for example, caused a continuous stream of data to scroll virtually without a pause.
Using a large index has, in my experience, resulted in some slowing with dBASE. With McMax there was no appreciable slowing, even when APPENDing records with the index on. To REINDEX the entire file required just over 15 seconds … truly stunning performance.
Similarly, PACKing the database happened almost instantaneously. For the 915 record file, packing with two deletions with the index set off took just over one second. PACKing the same database with the same deletions with the index set on required less than 18 seconds. And while processing-intensive tasks such as these show off the stunning performance of McMax, mundane occurrences such as DO… WHILE loops and procedure calling also happen as quickly as could be hoped for.
In the course of testing I did run into a bug or two. One, which involved McMax’s confusion on SKIPping past the beginning of the file, was solved with a simple work-around.
The other was more complex, and unfortunately made it impossible to check Nantucket’s claim that programs can be written using McMax and then made into stand-alone applications by combining the code with McMax Run. I was, however, still able to create a run-time checkbook program. As soon as a stand-alone version is ready I will post it on the bulletin board for all to see.
Ease of Use
I’m not sure that any dBASE product should be recommended to the computer novice, and McMax is no exception. In some ways, it may be worse for the Mac community, which by now has become used to a user interface universally recognized as being superior to the TTY-style found in McMax.
Given that the user is familiar with dBASE, however, McMax is a pleasure to use. In addition to the built-in program editor, the McMax disk contains a separate programming editor, RMaker, and ResEdit, all of which are useful tools.
Oddly enough, even though McMax provides a method of calling alert boxes, I found that they annoyed me, so I didn’t use them. Having reverted to my dBASE ways, I found it easier to perform error handling within the program, avoiding use of the mouse. The mouse habit is a difficult one to break, however, and several times when learning the program I tried to use it to select text on the screen. McMax doesn’t support this in the interactive mode, of course (neither does the IBM version), leaving me to retype the command. Fortunately, both editors do understand the mouse.
One other feature that I would like to see better implemented is the debugging. The debug window opens over the active window, which is fine, but when input to the main (program) window is required the debug window is sent to the back. This means you have to call it up again to continue debugging. It would be nicer if, after main window input had been accepted, the debug window would automatically be brought forward.
McMax comes with two wire-spine manuals of the size popularized by IBM, neither of which could accurately be called scrawny. The first, the User’s Guide, is more of a step-by-step introduction to McMax, while the other, the Reference Guide, is an alphabetized listing of the commands and functions.
The manuals are attractive and are printed on good paper, but are sadly lacking in clear examples, or even in a good index. They are adequate, but not much more. Fortunately, there are some great dBASE books available, two of which are mentioned above.
A day or so after I received McMax, I received a letter in the mail reminding me about Nantucket’s customer support! I don’t remember any other company ever doing this. Nantucket’s customer support is three-fold. First, there is a customer support department you can reach by phone (they do not have a toll-free number). Second, you can subscribe to Nantucket’s newsletter. And third, you can join The Source, where Nantucket maintains a file library, bulletin board, news and information section, membership directory, and the Nantucket Private Network. Nantucket provides a free Source membership form with each copy of McMax, leaving only the ten dollar monthly minimum fee.
Nantucket’s telephone support I found to be a little busy, due to the fact that McMax is not their only product. However, each call was returned the same day by a courteous and knowledgeable person.
I have grown to love the Macintosh, but I can’t begin to describe the thrill I felt upon seeing that epitome of user hostility, the dot prompt, sitting at the left edge of my screen (one analogy that comes to mind is that of a crystal clear compact disk recording of Bill Haley and the Comets playing through a phase-perfect pre-amp, Class-A power amp, and Time Aligned® speakers). Within a few seconds I had created a new database and was entering and manipulated records just like the old days. I suppose this means there is something seriously wrong with me.
Using McMax is similar to using a telecommunications terminal program, in that everything to be communicated to the remote computer must be typed in. However, McMax’s superior performance suggests that its biggest drawback is the fact that it is dBASE III compatible; in other words, it could have been made differently if it wasn’t designed for such a special purpose.
What’s ahead for McMax? According to Nantucket, McMax will received increased Mac-ishness (perhaps including font support), user defined functions, and the ability to operate in a networked environment (ala dBASE III Plus) in the next major upgrade.
|McMax||McMax run||dBASE Mac||Reflex*||HyperCard|
|Time to open||8.0 sec||8.0 sec||22.1 sec||8.8 sec||11.8 sec|
|Time to close||4.7 sec||4.7 sec||7.0 sec||6.5 sec||5.5 sec|
|Build file||20 sec||N/A||(auto)||20 sec||(auto)|
|Import data||4.3 sec||4.3 sec||10.0 sec**||60 sec||1167 sec|
|Sort/index||15.5 sec||15.5 sec||85 sec||(auto)||52 sec|
|Data file size (bytes)||60519||60519||51041||74752||287616|
|Index file size (bytes)||45056||45056||**||included||included|
|Program size (bytes)||260K||146K||767K||202K||360K|
|Help file size (bytes)||included||user supplied||85K||105K||721K|
The size of the original data file (915 records) in dBASE II running under MS-DOS 1.25 is 76,288 bytes with an index file size of 144,384 bytes.
All tests performed on a Mac Plus with 2 MB of memory and a SuperMac DataFrame XP20. Memory caching was turned off for all tests.
* Reflex does not have a built-in procedural language.
** Dbase Mac was the only program that did not translate the data file into its own format. Data remained as a text file; dBASE Mac accesses the text file via a separate structure file.