Introduction to Eloquence

By Bob Green

Eloquence is a database that may be of interest to MPE users because it is very much like the TurboIMAGE database that they already use.

Eloquence does not run on the HP 3000, but it does run on the HP 9000 (HP-UX), one of the target platforms for HP 3000 users if they decide to migrate their applications. Of course, we realize that some users plan to stay on their reliable HP 3000s indefinitely, and we think that is great. Others may decide to adopt a totally new application on a relational database. Fine again, if you can afford it.

But many sites are happy with their existing HP 3000 applications that have years of corporate brainpower invested in them and would like to replicate them on a platform with a longer future. For them Eloquence is a real option.

Is Eloquence a clone of TurboIMAGE?

No. Eloquence is an integrated development environment, including a programming language, a database, utilities, and runtime. It was originally developed as a migration platform for the HP 250/260 customers. It is currently supported on HP-UX, LINUX and Windows, including the Itanium (IA-64) architecture on HP-UX.

Internally, Eloquence is nothing like TurboIMAGE; it is more like an SQL database. It doesn't use the hashing that TurboIMAGE uses to find key values; instead it uses B-trees (the same technology used for indexed sequential access, as in KSAM files; the tree structure of key values grows as more values are added). It uses a client/server architecture, so the application program does not even need to know where the database is located. It doesn't put each dataset in a separate file; instead it mixes all datasets in the same set of files.

Is Eloquence a new, untested product?

No. It has been in production use for over a decade and has 2500+ installations, worldwide. Eloquence has had over 10 years of constant development and improvement.

Why does HP say that Eloquence is recommended for small to mid-size applications?

The reason has nothing to do with any known inherent limits in Eloquence. It has to do with lack of experience. Eloquence developed as a database engine for applications aimed at smaller IT problems. As a result, the largest actual Eloquence database to date is smaller than the largest TurboIMAGE databases that users have experience with.

What size applications are we talking about?

Eloquence is currently deployed in applications with 250+ concurrent users and 10+GB of data. There is no hard limit in Eloquence that prescribes theses sizes. They are just the largest applications that have been seen so far. It is expected that experience with larger applications will appear over the next year.

Will my programmers have to rewrite COBOL programs?

No. Eloquence supports the TurboIMAGE intrinsics (i.e., API, application program interface). It has the same parameters, same options, and returns the same results. Your programmers will be happy.

Will my Suprtool tasks need to be changed?

No, the logic and syntax is exactly the same. There is one change, due to the extra flexibility of Eloquence. That is the Base command, which connects Suprtool to the database. Since Eloquence uses a client server architecture and allows you to connect to databases and servers on multiple systems, the syntax for naming the database is different. But that is a mechanical edit of the Suprtool jobs, where necessary.

Does Eloquence have the bells and whistles of Oracle?

Some. Eloquence has integrated online backup. And because of the client/server model, remote database access becomes a given. Optional Eloquence products include an ODBC driver, a graphical user interface, and the SQL/R report writer which allows you to write reports against Eloquence databases in SQL syntax.

However, Eloquence does not have everything -- replication for example (an automatic copy of your data on another server for backup and performance reasons). Eloquence is working on a replication capability, but they do not have it today. Or constraints and triggers, which enforce business rules within the database. Eloquence does not have them.

Will my operations staff need to learn new commands?

Yes, the operation of Eloquence is quite different from TurboIMAGE, since it is a client/server architecture. However, the good news is that once Eloquence is set up, it runs virtually unattended.

Is Eloquence hard to administer?

Some databases require a full-time DBA to tune and monitor them. Eloquence is mostly self-maintaining. If you don't change the database structure and you don't run out of disk space, there is little administration to do. This is due to the original target market: dedicated applications in small to medium-size businesses where there is probably not even a dedicated computer operator!

How does the performance of Eloquence compare?

Experience so far indicates that Eloquence is fast and efficient as a TurboIMAGE replacement (something that big SQL databases were never intended to do).

Is Eloquence 100% compatible with TurboIMAGE?

Almost 100% compatible. The recently released Eloquence version B.07.00 supports all the TurboIMAGE intrinsics and limits. For example,

Can I just "restore" my databases onto HP-UX?

Almost. Eloquence supports the same data types as TurboIMAGE, the same record layouts, and the same indexing (plus new options). The transformation needed to convert IMAGE databases to Eloquence is simple and automatic. Either use Suprtool to copy the data, or use Eloquence's DBExport and DBImport utilities.

However, the file formats and internal structures of Eloquence are dramatically different from IMAGE. Only the programming interface is the same.

What about B-trees and Third-Party Indexing (TPI)?

Indexed sequential access is inherent in the internal design of Eloquence. Indexes are available to applications to implement indexed database access, such as partial key retrieval, using wildcard or ordered retrieval. With Eloquence B.07.00, both the TPI programming interface as well as using indexes with master data sets (i.e. TurboIMAGE B-tree feature) are supported. Advanced TPI functionality, such as keywords, relational access and independent indexing, currently is not supported and requires a third-party indexing product such as Omnidex. DISC has indicated some interest in adding Eloquence support to Omnidex, but as of April 2003 we have not seen any product/beta announcement (a search of their web site shows no references to 'Eloquence'). According to Bradmark's web site, Superdex is not available on UNIX, so that is not an option.

What about automatic dataset expansion (MDX and DDX)?

These are enhancements that were added to TurboIMAGE after years of user requests. They allow the database to grow automatically as more data is entered. Because Eloquence stores data in a different way and uses B-trees instead of hashing, it has this automatic expansion inherently. There is no need for an "enhancement" feature.

What about the things we have been waiting for in TurboIMAGE?

Eloquence has a number of things that users have asked for in TurboIMAGE. Some of them are a little technical, but let's see if we can explain them.

Read-only DBLOCK: TurboIMAGE has only one kind of DBLOCK, which locks out all other attempts to DBLOCK on that data, even if the other program does not need to update it. Eloquence has an option to lock data so that other programs cannot lock and change the data, but allows other programs to do their own Read-only locks.

Selective DBUNLOCK: TurboIMAGE releases all your locks on the database; Eloquence has an option to release specific dataset and data item locks, while retaining the others. This makes it easier to program independent modules that deal with specific subsets of the data, such that they can be invoked from several different functions. For example, adding a new customer to the database.

Nested Transactions: Using DBXBEGIN before a "transaction" of database changes allows you to dynamically abort and back out the changes with DBXUNDO (and ensures that the changes will be backed out in case of system/program abort). This is called a dynamic transaction. Both TurboIMAGE and Eloquence have this, for single or multiple databases. However, TurboIMAGE does not allow you to begin a new transaction while an existing transaction is active, while Eloquence does. This makes it easier to write modular programs. For example, you begin a transaction to create a customer order, in the midst of which you sometimes start a nested transaction to create a new customer.

Who owns Eloquence?

Eloquence was based on the design of software for the HP 250/260 systems and was owned by HP Germany. However, Marxmeier Software AG has always done the R&D for Eloquence. Recently, HP and Markmeier made an important announcement:

"Effective November 20, 2002, Hewlett-Packard transferred the HP Eloquence product responsibility to Marxmeier Software AG... Marxmeier Software AG has been responsible for the HP Eloquence product development and back level support under contract with Hewlett-Packard for the past 14 years. Marxmeier Software has, in addition, been responsible for worldwide Eloquence distribution since 1997."

We see this as a valuable development for Eloquence users, because the most focused, qualified and motivated people will be in charge of Eloquence and its future.

What about pricing? Is Eloquence going to break my budget?

No. Pricing is very reasonable.

The maximum you can spend is $7740 per server. And that is for unlimited users. If you only have 8 users, the license fee is $1282.

Where do I purchase Eloquence?

You can purchase a license either from Marxmeier directly at

What about software updates?

Marxmeier offers software updates to Eloquence at a fee which is about 10% of the license fee annually. Updates can be obtained directly or through a reseller. Software updates do not include any technical support, which is purchased separately.

What about technical support?

You can purchase technical support from one of several authorized resellers of Eloquence. For example,