Contents:
TurboIMAGE compatibility library (image3k)
DBINFO MODE 205 ON customers OF sample DBFIND MODE 21 ON customers.custno OF sample
To be effective the environment variable needs to start with the prefix "EQ3K__" followed by the upshifted database name. Any dot characters (.) in the database name are replaced by underscore characters (_).
For example:
Database Name Environment Variable --------------- --------------------- Sample EQ3K__SAMPLE sample.test EQ3K__SAMPLE_TEST
Any application that relies on TPI items having numbers above 10000 needs to be changed to use an offset of 5000 on little endian platforms. The HP-UX version of the image3k currently retains an offset of 10000 for TPI item numbers for full backwards compatibility.
Please note that other intrisic calls that modifiy the database could still return status -35 in case a deadlock situation is encounted.
The DBMAINT arguments are similar to DBOPEN:
DBMAINT (base,password,mode,status)
The following constructs are valid for the password and user identifier (a _ represents a blank):
password [{_;}[/USERIDENT{_;}]]The examples below specify an user name and an empty password
[/USERIDENT]{_;} ;[/USERIDENT{_;}]The example below specifies an user name and a password
password[/USERIDENT]{_;}
The password or the user identifier string must be terminated by a semicolon, space or NUL character. Since Eloquence does not assume a fixed length, a termination character should always be present.
Unless both the password and the user identifier string are present, the password argument is ignored.
1 - create the database 2 - erase the database. 4 - purge the database (Eloquence specific)
DBMAINT requires exclusive access to the database and affects all sets of a database. The Eloquence dbcreate, dberase and dbpurge utility programs allow to specify a list of data sets in addition.
Eloquence either requires that the user has administrative access to the database (eg. it is member of the "dba" group) or has the erase privilege (in case of mode 4).
DBFIND was expecting that numeric values are passed as text and converted it to the binary representation. However the TPI documentation defines that numeric values should be passed as a binary value. DBFIND mode 1/21 on indexes has been changed to follow the TPI documentation.
The HP3K_TPI_COMPAT property may be used to enable the previous behavior. If the bit 1 in the HP3K_TPI_COMPAT property value is set (+2) then a numeric argument may be passed as text if the argument either starts with an operator (==, <=, >=), a positive or the negative sign. Otherwise a binary value is assumed. As this may cause ambiguities, the default is that numeric values must be passed as a binary value.
Setting this property can be done with the dbutil utility either interactively or using the following script:
--- snip --- database "<database_name>"; create property "HP3K_TPI_COMPAT" value "2"; --- snip ---
Element Description ------- ------------------------------------ 1 IMAGE status code 2 - 4 unchanged 5 zero 6 IMAGE intrinsic ID 7 Eloquence status code 8 Eloquence extended status code 9 IMAGE mode 10 Encoded Eloquence call ID and mode (Format: 6 bit id, 10 bit mode)
TurboIMAGE btree indexes and TPI indexes use slightly different conventions in the DBFIND mode 1/21 search argument. With TurboIMAGE btree indexes the wildcard character can be configured through DBCONTROL or dbutil. For TPI indexes a "@" character is used. TPI also considers a space character before the "@" wildcard to be special.
The IMAGE btree functions are currently not enabled in Eloquence and Eloquence indexes are used used as a replacement. However Eloquence indexes follow the TPI conventions which could cause problems with applications relying on the IMAGE btree behavior. As Eloquence allows to use all TurboIMAGE DBFIND modes, independendly of the index type, this option allows DBFIND mode 1/21 calls to work more closely.
The HP3K_TPI_COMPAT database property can be used to cause Eloquence indexes to follow the TurboIMAGE btree behavior more closely. If HP3K_TPI_COMPAT is set to nonzero it causes TPI indexes to use the current IMAGE btree wildcard character and not handle trailing spaces as a special case. The default value is zero which implements the previous behavior. Setting this property can be done with the dbutil utility either interactively or using the following script:
--- snip --- database "<database_name>"; create property "HP3K_TPI_COMPAT" value "1"; --- snip ---This property is currently not available in the dbutil TurboIMAGE property dialog.
MPE/iX: "HP30391 C.1005" Eloquence : "IMAGE3K B.0700.12"
Database client library (eloqdb)
The process information includes the user id (not on Windows), the process id and the command line. In addition, if the environment variable EQ_AUDIT_INFO is set its content is also included. The EQ_AUDIT_INFO environment variable allows to include application specific information in the status output.
Any attempt to access the database in the forked child process will now abort with an internal error like below:
Assertion failed: initial_process_id == current_process_idA fork() is valid if no database is currently opened.
The image3k library internally makes use of the Eloquence DBINFO mode 303 to implement DBINFO mode 301. However the Eloquence DBINFO mode 303 did not return sort item information when a master set was provided as qualifier.