contact contact

Eloquence B.08.10 Release Notes (B130529)



After the release of Eloquence B.08.10 a number of bug fixes and enhancements were released as patches, providing improved functionality, performance and reliability.

The user visible changes implemented through these patches (along with critical bug fixes) are covered in this document (relative to the original B.08.10 release).

This document extends on the Eloquence B.08.10 release notes and reflects the changes in the Eloquence patch bundle PE81-B130529 relative to the Eloquence B.08.10 release.


Database server

Critical fixes for corner-case issues in the database server include
  • Under rare conditions, an internal deadlock condition could result in a database server hang while on-line backup mode is active (#4059).
  • A dbpurge operation could cause the database server to abort due to an internal race condition (#3781).
  • In a certain corner case, deleting a record using the Eloquence language could result in a server panic.
  • Under rare conditions, the database server could abort due to a segment violation if multiple dbctl list or HTTP session status invocations were issued at the same time (#4062, #4063, #4065).
  • Under rare conditions, the HTTP thread could terminate unexpectedly on a failed network call (#4094).
  • A dbutil UPGRADE DATABASE command could cause the database server process to abort if applied to a database where the items were reordered alphabetically so that the column identifiers are no longer incremental (#4098).
  • In a rare case, data corruption could occur when on-line backup mode was stopped (#4108).
  • A transaction journal corruption could occur if the database server was stopped or aborted while in on-line backup mode after using the dblogreset or dbrecover utility (#4126).
  • The eloqdb startup behavior was modified to prevent that a transaction journal corruption remains undetected.

User visible changes to the database server include
  • Modified database server startup behavior in case a transaction journal corruption is detected:

    If the database server aborts unexpectedly due to a power failure or an operating system problem and the SyncMode configuration has been deactivated, it might happen in rare cases that the transaction journal is damaged so that on startup the database server cannot perform its usual transaction recovery.

    In such a case, the database server now aborts immediately with a message like below, preventing the problem to remain unnoticed:

     WARNING: Unable to perform volume recovery due to inconsistencies.
     Please restore the data volume files from a backup, then use
     dbrecover to apply the forward-log. If this is not possible, use
     dblogreset to manually perform a volume recovery, then check the
     data volume with dbfsck.

  • Fixed a corner case incompatibility with TurboIMAGE (#4024).

    In TurboIMAGE a failed DBFIND call does not change the current chain. This behavior change does not apply to programs written in the Eloquence language.

    This change is only effective if this patch and the related client library patch PE81-1102251 (or newer) are installed.

Database Utilities

Database utility changes include


  • Fixed a problem with the NOT MATCHING clause in a MULTIFIND command. Due to a bug the NOT negation had no effect unless it was the first condition in an expression (#3993).

     >MU orders.order-date=0621 &
     >>AND order-details.shipment-date NOT MATCHING "0628"

  • Fixed a problem with the NOT MATCHING syntax parsing in a MULTIFIND command. Due to a bug the NOT MATCHING must be specified as the last condition or a syntax error is reported (#3993).

    For example:

     >MU order-details.shipment-date NOT MATCHING "0628" &
     >>AND orders.order-date=0621
    However, the following worked:
     >MU order-details.shipment-date MATCHING "0628" &
     >>AND orders.order-date=0621


  • Ordering FORM fields was limited to a maximum field length of 80. This limitation was removed.


  • A problem was fixed where in a rare corner case it could happen that forward-log actions were not processed because a session sign-off record was encountered too early (#4088).

    Under rare conditions a session sign-off record might be written while there are still transactions pending for the associated session.

    The fwaudit utility was modified to correctly handle this case.

Eloquence Language

Changes to the Eloquence programming language include
  • Fixed a race condition obtaining a unique taskid. If multiple eloqcore processes are started simultaneously, eloqcore could fail with a message as below.
     Taskid already in use
     eloqcore: Unable to setup daemon session

  • The DEFSTRSZ and AUTOSTRSZ configuration options were added to eloq.config and the user/group specific configuration files. They may be used to configure the default dimension of string variables.

    AUTOSTRSZ specifies the dimension of string variables that are implicitly allocated upon use (auto variables). For example, A$="TEST" or A$(1)="HELLO".

    DEFSTRSZ specifies the dimension of string variables that were declared without specifying the dimension. For example, DIM A$(1:10) or COM A$.

    DEFSTRSZ defaults to a 18 characters. AUTOSTRSZ defaults to the DEFSTRSZ value.

    For example, the configuration below specifies that undeclared string variables are allocated with a size of 100 characters:

    option AUTOSTRSZ 100

    Consequently, the following statement works without causing a string overflow error:



    • Changing the default string variable dimension may have an impact on existing applications. More memory is used for string variables. Also, the application may fail if it relies on the default string variable dimension.

      Specifically, variables used in a PACK USING statement will change the layout of the resulting packed buffer. It is strongly recommended to explicitly declare all variables used in a PACK USING statement.

    • It is recommended to not specify the DEFSTRSZ option. This will limit any potential impact to auto variables which are expected to be less critical. It recommended to only change AUTOSTRSZ after careful consideration.

  • Added support for DBINFO mode 114.

Java Dialog System

Enhancements to the Eloquence JDLG include
  • Add keepalive support for JDLG connections. This requires JDLG version 1.5.7-110429-1914 or newer.

    DLG SET ".keepalive",Seconds

    If Seconds is nonzero, JDLG sends keepalive messages in the specified interval during a DLG DO or POPUP BOX instruction.

    This allows eloqcore to detect whether a JDLG connection is still active. The latter case is assumed if eloqcore does not receive any message from JDLG for five times the specified interval during a DLG DO or POPUP BOX instruction. If an interrupted JDLG connection is detected, the connection is closed and ERROR 684 is returned to the program.

    This function may also be useful to solve idle timeout problems caused by network router/firewall configuration. A network router might be configured to close a connection if it has been inactive for some time. To prevent this from affecting JDLG connections, a JDLG keepalive interval could be set.

    For example, assumed the router idle timeout is 30 minutes, DLG SET ".keepalive",900 would cause JDLG to send a keepalive message every 15 minutes so that the router idle timeout would not expire.

    Instead of using DLG SET ".keepalive", the keepalive interval may be configured using the JDLG eloquence.config.keepalive property, for example: eloquence.config.keepalive=900

  • Add idle timeout support for DLG network connections. This may be used with JDLG or Windows DLG (DLGSRV32).

    DLG SET ".timeout",Seconds

    If Seconds is nonzero and the specified timeout has expired during a DLG DO or POPUP BOX instruction, the DLG connection is terminated and ERROR 684 is returned to the program.

    This may be used to automatically terminate DLG sessions that have been idle for a long time. For example, a DLG SET ".timeout",28800 would terminate any DLG session that has been idle for more than 8 hours.


The WEBDLG patch provides a substantially enhanced WebDLG from Eloquence B.08.20 to Eloquence B.08.10 users. The following list summarizes the major enhancements and new functionality.
  • Dialogs are dynamically updated (not reloaded) using Ajax browser functionality.

  • The Dialog tab order is enforced, RETURN and ENTER keys are enabled for tab navigation.

  • Enhanced the support for CSS style definitions.

  • Added support for HTTP Basic Authentication against the eloqsd server (Apache version 2.2 only).

  • Added support for token and environment variable resolving in the mod_eloq command and environment configuration.

  • Added the PopText object class.

  • Added the borderstyle attribute (Dialog, GroupBox, Image).

  • Added the ListBox ruleoverride and singleclick attributes.

  • Added the System authlogin and authpassword attributes.

  • Allow the browser to keep JavaScript functions in memory.

For details on these enhancements refer to the Eloquence B.08.20 release note section.


Enhancements to eloq.cgi include
  • The Content-Type character set, if specified, is now evaluated to determine whether or not eloq.cgi should apply an HP-ROMAN8 to ISO-8859-1 or HP-ROMAN9 to ISO-8859-15 character conversion of the program output.

    By default, if the first line of the program output is one of

    Content-Type: text/html
    Content-Type: text/plain
    without explicitly specifying a character set, ISO-8859-1 is assumed, so that eloq.cgi converts the program output from HP-ROMAN8 to ISO-8859-1.

    In addition, a character set may be specified to activate the character conversion for content types other than text/html and text/plain, for example:

    Content-Type: text/richtext; charset=ISO-8859-1
    To activate the eloq.cgi character conversion of the program output, either the ISO-8859-1 or the ISO-8859-15 character set must be specified. Other character sets are not recognized.

    Content type and character set are not case sensitive.

  • POST request decoding has been enhanced.

    If the application/x-www-form-urlencoded or multipart/form-data content type is used, the POST request data is assumed to contain form items, which are stored into corresponding WWW_ prefixed environment variables.

    The form item values are converted to the HP-ROMAN8 character set, according to the content type character set, if specified. The ISO-8859-1 and ISO-8859-15 and UTF-8 character sets are recognized. If no character set is specified, ISO-8859-1 is assumed. An UTF-8 encoded item is first converted to ISO-8859-1 and then converted to HP-ROMAN8.

    Any content type other than application/x-www-form-urlencoded or multipart/form-data is used to store the binary POST request data to a temporary file. The temporary file is removed by eloq.cgi after the program has ended. To prevent eloq.cgi from removing the temporary file, a program may move or rename the file.

    The environment variables below are provided by eloq.cgi to the program:

    Contains the content type. If the request is not a POST request or the content type is not specified, this variable is not set. For example: application/x-www-form-urlencoded
    Contains the character set. If no character set is specified, this variable is not set. For example: ISO-8859-1
    Contains the temporary file name. If no temporary file is created, this variable is not set.
    Contains the size of the POST request data in bytes. If a temporary file is created, this is equivalent to the temporary file size.

    In addition, if the content type is text/xml, the environment variables below are set for backward compatibility:

    Same as POSTDATA_NAME (see above).
    Same as POSTDATA_SIZE (see above).

  • Logging of error/informational/debug messages has been added.

    The EQCGI_LOGFILE environment variable may be set to specify a log file. If set, the log file directory must allow read/write access to the user running the web server process.

    If the EQCGI_LOGFILE environment variable is not set, messages are output to stderr, which is usually redirected to the web server error log file.

    The EQCGI_LOGLEVEL environment variable may be set to specify the log level. If not set or set to zero, only error messages are output. If set to 1, informational messages are output in addition. If set to 2, debug messages are output in addition. If set to 3, more verbose debug messages are output.

    Note: The EQCGI_DEBUG environment variable is no longer used.

Linux IA-64 Note

On Linux IA-64 the following additional manual procedure is required
  • to update the IA32 eqdb client library:
     mv /opt/eloquence/8.1/lib/libeqdb.so.ia32 \

  • to update the IA32 fwutil library:
     mv /opt/eloquence/8.1/lib/libfwutil.so.ia32 \

  Privacy | Webmaster | Terms of use | Impressum Revision:  2013-05-29  
  Copyright © 2013 Marxmeier Software AG