<!--
	Title: (Project Database 3) Cornerstone
	Author: Robert Kendall
	Source: PC Magazine, v7(5)
	Date: April 26, 1988
	Transcription by Steve Derby
-->

Infocom has packed a respectable number of features into its $99.95 relational database,
*Cornerstone*, Version 5.21 . While it can't compete with high-end packages, the
program certainly has an edge in the low-price market, where most products have
no relational capability.

As you might expect from a vendor that has made its mark with interactive fiction,
Infocom has provided a very attractive user interface for this program, combining
menus with a command line. You create a string of commands either by typing the
first few letters of each command and pressing the Spacebar to fill in the rest
automatically, or by selecting commands from a menu just below the command line.

At each stage, you're prompted for the next command; a new menu then presents
your available options. If the command string must include the name of a file,
field, or set of saved criteria, the menu will present you with all the appropriate names
you've created.

To make things even easier, there's context-sensitive help that incorporates the
names of your flies and fields into its messages. An excellent interactive on-disk tutorial
will help the novice user get started.

The documentation is quite good. Although it neglects to provide instructions
for making the program self-booting from a floppy disk, you will probably want to
run it from a hard disk (as with most databases). An AT is also advisable for *Cornerstone*,
since it’s a sluggish performer on an 8088-based PC. Even screen scrolling
and cursor movement are agonizingly slow on the less-powerful machine.

*Cornerstone* provides a good range of options for data entry. There’s automatic
range testing, and you can specify default values, mandatory fill, and unique entries.
The program understands such entries as Today, Next Monday, and Last Month
and will convert each of them to the appropriate date. You can also specify a list of
values from which you must select to fill a particular field; you can then type only the
fust few letters of the value and have *Cornerstone* automatically fill in the rest. If
you’ve forgotten which values are valid, pressing F5 will show you your options.

Another nice feature lets you designate a field as a subrecord, which can contain a
number of subfields. Creating subrecords within a file can provide an easier alternative
to creating two separate files and linking them relationally.

For the sake of simplicity. *Cornerstone* relies heavily on on-screen forms. To select
records, you enter your selection criteria after the appropriate field names in a
blank form. Using AND or OR specifications, you can link several forms to perform
Boolean operations.

If you wish to change the way your data is displayed, you’re presented with another
blank form representing a record. You can then use the cursor to move fields
around on the form or change their display lengths, hide field names, and add fixed
text. And for later use, you can save numerous different display format or selection
forms.

## FILE LINKING AND REPORTING

*Cornerstone* is somewhat limited in its relational capabilities. You can view or generate
a report on only one file at time. If you wish to view or use information from
one file in the context of another, you must link the files, create some new fields in the
first file, and then specify that the values in these fields are to be derived from fields in
the second file. On the positive side, you have a good assortment of math, financial,
time, and date functions at your disposal for deriving values from different fields.

In other areas, too, *Cornerstone* often forces you to go about things in very awkward
ways. If, for example, you decide to transfer last year's records from your active
file to a new file, you're in for a cumbersome process. You must select the records
you wish to move, save the selection criteria, export the file to ASCII format using
the saved criteria, import it under the new filename, and then delete the redundant
records from the original file.

To perform a global update on a text field, you must select all the records containing
the string you want changed, assign the replacement string as a default value
for the field you want to update, and then issue a recompute command.

*Cornerstone* has fairly limited reporting capabilities. To define a report, you
must select the records you want, sort them, define the display formal, then calculate
totals and subtotals — each time waiting for one procedure to finish before
beginning the next. You can save report criteria for later use, but you must store selection
criteria separately from the other elements.

<img class="float-right" style="border: 1px solid; border-top: 4px solid;" src="/public/img/articles/pcmag-cornerstone-review-3/cornerstone-fact-file.jpg" alt="Cornerstone fact file">

This is not a program for handling very large databases, although it can process
files containing up to 32,700 records. After watching *Cornerstone* devote 3 hours
to importing a 30,000-record ASCII file and nearly half an hour to sorting it, we
gave up on running the remaining PC Labs tests on the largest file size.

If you need to generate complex reports or work with huge numbers of records,
*Cornerstone* is no substitute for a high-end relational database. If your needs are more
modest, however, and speed isn’t a primary concern, you would do well to consider
*Cornerstone* for its elegant user interface and its impressive array of data entry options.
It would certainly prove a more powerful alternative to many flat file programs
that are priced significantly higher.
