.
contact contact

Dialog enhancements

 
.
  A.06.31 Release Notes
Eloquence A.06.31 supports enhanced dialog functionality. The changes are fully backwards compatible, overcome previous limitations and add forward compatibility to the next Eloquence A.07.00 major release.

Contents of this document:


The syntax to specify a dialog driver has been enhanced to support additional options. This specification applies when a dialog driver (also referred to as dialog server) is specified using the DLG SET ".driver",... statement or the -dlg command line option with the eloq or eloqcore programs.

The new specification

  • is fully backward compatible
  • allows usage of multiple instances of the RUNSRV progrm on a single system (e.g. with the Citrix Metaframe or MS Terminal Server products)
  • and adds a new connect option which is compatible with the next Eloquence A.07.00 major release and allows usage of A.07.00 components (jdlg, webdlg) with A.06.31.

With previous Eloquence versions, the driver was specified with an '@' character and the host name. The new syntax is:

 [protocol]host[:service]

Where

  • protocol is an optional specification of the connection protocol to be used.
  • host is the host name or IP address of the system the driver is running on
  • service is the name of a service (as defined in the services file) or a port number which is used to contact the driver.

For example:

  runsrv://dhcp10
  @dhcp10:runsrv
  dhcp10:1234
  dhcp10

Protocol

  • The protocol "runsrv://" or a leading '@' character specifies the usage of the runsrv protocol. The RUNSRV program on the remote system is contacted to establish the driver connection.
  • The protocol "dlg://" specifies the usage of the new connection protocol. This protocol is not compatible with dlgsrv (Windows GUI driver).
  • If no protocol is specified this is equivalent to specifying "dlg://".

Service

  • With the runsrv protocol this is the port number to contact the RUNSRV program on the remote system.
  • With the new dlg protocol this is the port number which is configured for the driver on the remote system.
  • If no service or port number is specified, the defaults (which can be specified in the eloq.ini configuration file) are used. Unless specified in the eloq.ini configuration file the following defaults are used:
    • For the runsrv protocol the default port is specified by the runsrv service (as defined in the services file).
    • For the new dlg protocol the default port is 8011.


The eloq.ini configuration file format (on the system running eloqcore) has changed. The previous eloq.ini file should be replaced after installing the A.06.31 update with the new template file included with A.06.31 when the functionality is intended to be used.

Platform Template file
HP-UX /opt/eloquence6/newconfig/config/eloq.ini
Linux /opt/eloquence6/newconfig/config/eloq.ini
Windows \Program Files\Hewlett-Packard\Eloquence\etc\eloq.ini.sam

Please note: This is a different eloq.ini file than the one used by the 16-bit Windows dialog driver and applies only to systems running the Eloquence language. Any client systems running a dialog server are not affected by this change.

The eloq.ini file format

The eloq.ini file contains several sections each containing a group of related configuration items. The sections and configuration items have the following format:
  [Section]
  Item=Value

Section is the name of a section. The enclosing brackets ([ ]) are required and the must start at the 1st column. Item=Value defines a value of a configuration item. Item is the name of a configuration item. It consists of any sequence of characters (case insensitive) and digits followed by a equal sign (=). Depending on item type, the value may either be an integer or a string (optionally enclosed in double quotes). Comment lines must start with a semicolon (;) or a hash character(#) in the first column.

Section [runsrv]

The Section [runsrv] specifies the defaults used with the runsrv connection protocol. The following configuration items are supported:
Service The default service name or port number to be used with the runsrv dlg protocol. If no value is defined the port associated with the service runsrv is used.

Section [eloqdlg]

The Section [eloqdlg] specifies the defaults used with the new dlg connection protocol. The following configuration items are supported:
Service The default service name or port number to be used with the new dlg protocol. If no value is defined the port 8011 is used.

Mapping driver specifications

Other sections in the eloq.ini file can be used to map a driver specification to a different value. When a driver is specified (e.g. in the DLG SET ".driver",... statement) the argument is looked up in the eloq.ini configuration file after any protocol specification has been removed. If a section has been found it is used to replace the original argument.

The following configuration items are supported:
dlg When contacting a DLG driver this is used as a replacement for the specified driver. The value can specify a different protocol.
runsrv When using runsrv to execute a remote operation or to contact a dlg driver the runsrv variable can be used to specify a different host (and port number) which should be used instead of the passed value.

For example:

[runsrv]
Service = runsrv

[eloqdlg]
Service = 8011

[mike]
dlg = dlg://lxmike

[chris]
dlg = runsrv://wserv:8765
runsrv = wserv:8765

This example eloq.ini file specifies to use a port number for the runsrv protocol which is associated with the service runsrv (as defined in the services file). For the new dlg protocol the port 8011 should be used by default.

When a driver argument "mike" is specified (e.g. "@mike", "dlg://mike" or "runsrv://mike") the value "dlg://lxmike" is used instead. When a driver argument "chris" is specified it gets replaced by "runsrv://wserv:8765". When the runsrv is contacted from either the command line (using the runclnt tool) or the RunSrv.DLL and a remote name "chris" is passed, the value "wserv:8765" is used instead.

Running multiple runsrv instances on a single system

This is required if the Citrix Metaframe or the Windows Terminal Server product is used. Each user needs to start the RUNSRV(32).exe program with a different port number (probably during autostart). Then a driver name containing the host name and the user name is passed and translated by using the mapping defined in eloq.ini.

Suppose the user "chris" has a RUNSRV(32).exe using port 8765 when working on system wserv, then the following mapping section should be added in the eloq.ini file:

[wserv_chris]
dlg = runsrv://wserv:8765
runsrv = wserv:8765

The A.06.31 EloqStart utility has the ability to pass this information automatically to eloquence without requiring to configure each user individually.


New -dlg command line option

The -dlg command line option has been added to eloq and eloqcore. It has a similar effect than the DLG SET ".driver",... statement and connects to the specified driver.

There are a few minor differences:

  • If a -dlg command line option is present all DLG SET ".driver" are ignored

  • DLG STOP disconnects the DLG server and tries to reconnect. This does fail for webdlg and DLG STOP returns an error. The program should terminate then.

Improved support for ASYNC protocol option

The support for the ASYNC protocol option has been improved. The ASYNC protocol option can be used to improve the performance of remote dialog operations.

The ASYNC protocol option is enabled or disabled by using the DLG SET ".async",Enable statement (a nonzero value enables the ASYNC operations, a zero value disables ASYNC operation).

The following changes have been included with A.06.31:

  • A status failure when the protocol is in ASYNC mode is no longer returned to the application. The first status code is saved and can be retrieved from the application.

    This allows more controlled behaviour when a status code is returned by the driver. Previous Eloquence versions triggered a runtime error on an arbitrary DLG statement which was currently executed when the driver status was received.

  • The last ASYNC status code can be retrieved with the DLG GET ".async_status",Result statement. This also clears the saved status code. Only the first ASYNC status code is remembered.

    The last ASYNC status code is implicitely cleared when the ASYNC mode is enabled ( DLG SET ".async",1) to avoid returning stale results.

Improved dlg file syntax

The interpretation of dialog resource files has been enhanced to support setting attributes of child objects. This is used if a dialog object is created from a template (model) which has child objects. Previous Eloquence versions returned an syntax error.

For instance:

  GroupBox Template {
   StaticText St {
    .text = "Template";
   }
   ...
  }

  Model.Template X {
   .St.text = "Clone"

Miscellaneous changes

  • A DLG GET with a string result variable is always considered valid. An integer result is converted to a string and assigned to the result variable. Previous Eloquence versions returned an empty string if a string variable was used with an integer result.

  • The DLG GET ".driver_type",V$ statement can be used to retrieve the driver type (as returned by the driver). An empty string is returned if the driver does not support identification.

    The driver identification is obtained by asking the driver for the value of its "System.Driver" attribute and saving the response value. This is equivalent to a DLG GET "System.Driver",V$ statement. However since the result is saved it does not result in a client/server transaction if this information is used frequently by the application to provide different behaviour depending on the driver type.

    The following values are planned or currently returned by the various driver implementations:

       (empty) - The driver does not support this feature
       JDLG    - The Java(tm) dialog server
       IDM     - dlgsrv (Dialog Manager based driver)
       DLG     - Text based (builtin) dialog
       WEB     - Webdlg
    
    Currently only the A.07.00 JDLG driver supports this feature.

  • Usually, ASYNC status codes are discarded silently. A DLG SET ".debug",V statement causes all ASYNC status status messages indicating a failure to be output to stderr. Otherwise ASYNC status messages are only output if informational messages for the GUI are enabled (-dG1).

  • The new Log identifier 'G' can be used to request GUI related debug information.


 
 
.
 
 
  Privacy | Webmaster | Terms of use | Impressum Revision:  2002-11-18  
  Copyright © 1995-2002 Marxmeier Software AG