----------------------------------------------------------------------

ELOQUENCE B.08.10 - patch PE81-1302180

----------------------------------------------------------------------

This patch adds enhancements or fixes defects of the eloqcore
program as released with Eloquence B.08.10. This patch will be
integrated in the Eloquence B.08.10 release.

Eloquence B.08.10 must be installed before applying this patch.

Severity:
 PE81-1302180: BUG FIX

Superseded patches:
 PE81-1301231: BUG FIX
 PE81-1211201: BUG FIX
 PE81-1106210: ENHANCEMENT
 PE81-1104280: BUG FIX, ENHANCEMENT
 PE81-1102220: BUG FIX
 PE81-1102070: BUG FIX


Patch PE81-1302180
------------------

Platforms: All

* Fixed a problem when assigning COM variables that could result in
  an internal failure with a message as below.

  Assertion failed: (((sym) & 0x8000))
  file prerun.c, line 1847 in function link_com


Patch PE81-1301231
------------------

Platforms: Windows

* Fixed a problem where printing could fail on Windows 8 and
  Windows Server 2012 (#4120).


Patch PE81-1211201
------------------

Platforms: HP-UX, Linux

* Fixed a race condition obtaining a unique taskid. If multiple
  eloqcore processes are started simultanously eloqcore could fail
  with a message as below.

  Taskid already in use
  eloqcore: Unable to setup daemon session


Patch PE81-1106210
------------------

Platforms: All

* 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:

  A$=RPT$("X",100)

  PLEASE NOTE:

  - 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.


Patch PE81-1104280
------------------

Platforms: All

Bug fixes:

* Fixed a bug when passing a structure by value to a function or
  subroutine. This could result in an eloqcore crash or abort.

* Fixed a problem with 64 bit builds when passing structures
  in the common block.

* Fixed a problem in detecting a user defined type was referenced
  in a type definition. This would result in a failed consistency
  test.

* Fixed a problem when interactively assigning a structure
  (#1136, #3850). This resulted in a failed consistency test.

* Fixed a problem when accessing member variables after the
  program was stopped. In this case the type definitions were
  Discarded though the program variables were still accessible.
  this resulted in a failed consistency test.

Enhancements:

* Add support for DBINFO mode 114.

* 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.


Patch PE81-1102220
------------------

Platforms: All

* Fixed a wrong consistency check in the LEN function that caused
  an internal failure with strings longer than 32767 characters.

  An error message as below was output:
  Assertion failed: res->v.s.len >= 0 && res->v.s.len < 32768
  file string.c, line 94


Patch PE81-1102070
------------------

Platforms: All

* Fixed an internal buffer overflow in the MD5$ function which
  could cause the eloqcore program to abort unexpectedly (#3885).


Installation:
-------------

Please download the patch archive that corresponds with the installed
release. The patch files follow the conventions below:

   PE81-1302180-hpux-ia64.tar.gz
        ^       ^    ^
        |       |    Architecture / OS specific build
        |       Operating system
        Patch ID


HP-UX:

In order to install this patch, you need to unpack it with gzip and tar.
Gzip is included with HP-UX. Installation requires root privileges.

cd /opt/eloquence/8.1
gzip -dc /path/to/PE81-1302180-hpux.tar.gz | tar xf -

Files:

   bin/eloqcore
   share/doc/PE81-1302180-README


Linux:

In order to install this patch, you need to unpack it with tar.
Installation requires root privileges.

cd /opt/eloquence/8.1
tar xzf /path/to/PE81-1302180-linux.tar.gz

Files:

   bin/eloqcore
   share/doc/PE81-1302180-README


Windows:

Two options are available for patch installation. The patch is
available as self extracting archive for automatic installation
and as a zip archive for manual installation. Both patches are
equivalent. Installation requires administrative capabilities.

For automatic installation of this patch, please download the patch
file PE81-1302180-win32.exe. Installation does not require a reboot
unless the patched files were active.

For a manual installation of the patch, please download the patch
file PE81-1302180-win32.zip and unpack its contents. Then perform
the following steps:

* Please copy the eloqcore.exe file into the Eloquence bin directory.
  (Default location: C:\Program Files\Eloquence\8.1\bin)

* Please copy the PE81-1302180-README.txt file into the Eloquence
  share\doc directory.
  (Default location: C:\Program Files\Eloquence\8.1\share\doc)

Files:

   eloqcore.exe
   PE81-1302180-README.txt