The Eloquence TurboIMAGE compatibility extension provides
all TurboIMAGE intrinsics.
Due to differences in the underlying implementation
some details may differ from TurboIMAGE.
For each TurboIMAGE intrinsic call a short description is provided
along with notes which describe possible Eloquence specific
behavior or limitations.
Additional database documentation
This section provides some general overview which applies
to all database calls.
The Eloquence database implements transaction nesting and
transaction isolation. So nesting of dynamic transactions is
allowed and modified information is not exposed to concurrent
sessions until the transaction is committed.
A concurrent read access outside the transaction context returns
the unmodified information.
Database "intrinsics" might return different status values
in case of "unusual" situations. While all common status values
are converted to TurboIMAGE conventions, Eloquence status
values differ from TurboIMAGE and not all can be translated.
If you discover a problem please send us a message so we can
investigate the situation and improve the status translation.
In case of a status error, status elements 7 .. 10 are different
from TurboIMAGE. They include additional Eloquence specific
In case a nonzero status is returned the status array is used as below:
||IMAGE status code
|2 - 4
||IMAGE intrinsic ID
||Native Eloquence status code
||Native Eloquence extended status code
||Encoded native Eloquence call ID and mode
(Format: 6 bit ID, 10 bit mode)
In addition to ' ' (space) and ';' (semicolon) a NUL character
is also accepted as a delimiter/terminating character.
Database, data set and item names are not case sensitive.
The Eloquence database procedures may provide additional modes
and functionality (eg. Index access, locking modes). Additional
Eloquence functionality has been made available in a non-conflicting
manner so aware applications can make use of additional functionality.
Eloquence does not enforce locking. It's optional and there
are no special requirements depending on data set types
The Eloquence database handles concurrency internally
through transactions. So you are free to use locking according
to the requirement of your application.
Instead of checking if a write access is covered by a lock
Eloquence checks if a concurrent lock has been granted.
In this case a write attempt will return with a database status -12.
The DBLOCK-COMPAT database property may be used to modify
the locking policy for a database in cases where mandatory
DBLOCKs are required for close TurboIMAGE compatibility.
Eloquence does not use hashing. So there are no secondaries
in master sets.
The Eloquence schema processor is able to process the
TurboIMAGE schema syntax (you need to specify the -T commandline
The item types J and R are not supported natively and are only
visible to the TurboIMAGE emulation.
- The 'R' item type is supported in TurboIMAGE compatibility
only, values are expected to be encoded in IEEE format.
Native Eloquence considers this an 'E' type.
- The 'J' item type is supported in TurboIMAGE compatibility
only. Native Eloquence considers this an 'I' type.
The Eloquence security system differs from the traditional
A user name and password is required to connect to a database.
Unless specified a default user ("public") is used.
A user name and password can be specified either by using the
Eloquence specific DBLOGON call or providing a user name
and password with DBOPEN.
Item level security is not implemented. All items are considered
Eloquence B.08.10 and newer supports "Enhanced Item Level Security"
for protecting or masking the contents of sensitive items depending on
database user privileges.
Data set and item numbers passed as a qualifier conflict with
single character data set or item names on little endian
machines (Intel) when a NUL character is used as a separator.
When specifying single character data set or item name you
must use a separator other than a NUL character.
Static transactions are currently not supported with Eloquence
and DBBEGIN, DBEND and DBMEMO have no effect by default. Eloquence
relies on dynamic transactions internally.
The HP3K_API_COMPAT database property may be used to enable
support for the DBBEGIN, DBEND and DBMEMO calls in conjunction
with forward logging / database auditing.