You are on page 1of 103

What's New in Uniface 9

September 9, 2016

What's New in Uniface 9


Uniface 9 introduces significant changes and enhancements to support web development and
web services, easier deployment, mobile applications, and Unicode. It also provides new features
for developing modern, dynamic user interfaces for desktop applications.

What's New in Uniface 9.7


Uniface 9.7.01 introduces a modernized user interface and significant enhancements to support
mobile platforms.

What's New in Uniface 9.7.03


Uniface 9.7.03 features updated database connectors and supported platforms, as well as bug
fixes.

Table 1. What's New in Uniface 9.7.03

Description More Information

A new channel is available for the Output Box widget. The Output Channel Output Channel
property can now be set to display messages issued by the message Proc
statement.

Uniface has added support for the following databases and platforms Platform Availability Matrix
• Microsoft SQL Server on Windows Server 2016
• Oracle 12.c on Windows Server 2016
• Oracle 11gR2 on OpenVMS 8.4
• SYB U5.1 connector on Windows 10
• Sybase SDK 16 for Windows Server 2008 R2, AIZ 6.1, and Red Hat Linux
Enterprise Edition 6
What's New in Uniface 9

Uniface 9.7: Documentation Updates for Patches and Service


Packs
The Uniface 9.7 documentation incorporates changes resulting from enhancements, fixes for
software and documentation issues, and feedback from users. Significant changes are listed
here.

Table 2. Uniface 9.7.03 (MG02): Documentation Updates for Reported Issues

Issue Number Description New/Changed Documentation

31242 For Android splash screens, you can use either resizable Resource Bundle for Mobile Apps
NinePatch PNG images or normal PNG files. Prepare a Resource Bundle

31255 Third-party components (such as OCX controls, COM Integration with Other
components, or DLLs) that are integrated into Uniface Technologies
applications must support the Data Execution Protection
(DEP) policy. The DEP policy protects against attacks from
web pages that insert executable code into data and then
exploit some browser security hole to get that code to run.
The DEP policy is automatically turned on when Uniface
renders HTML (for example in the HTML widget), but it
may also be turned on by your machine administrator to
comply with a change in your company's security policy, or
it may be turned on in the future by Uniface because of a
change in Uniface's security policy.

NOTE
It is highly recommended that you upgrade all third-party
components to the latest versions available. Most vendors
will have solved DEP-related problems in their most recent
versions.

— The documentation for the $TRANSCRIPT_LOG_FILE has $TRANSCRIPT_LOG_FILE


been corrected. It is possible to specify an identifier in the
FileName parameter and to set the total disk space using the
totalsize parameter (not max).

— The OnFocus and OnBlur triggers of dynamic server page OnFocus


widgets are web triggers and must be declared using OnBlur
webtrigger and implemented in JavaScript.

— The example for the maxlockwait DBMS option has been maxlockwait
corrected.

— Example for the loadError trigger has been corrected. loadError

— When a Uniface 32-bit application is installed on a 64-bit Uniface and the Registry
machine, HKEY_LOCAL_MACHINE definitions are stored under
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Uniface\Uniface
Version\Application. (not under

September 9, 2016 2
What's New in Uniface 9

Table 2. Uniface 9.7.03 (MG02): Documentation Updates for Reported Issues (continued)

Issue Number Description New/Changed Documentation

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432\Uniface\Uniface
Version\Application)

— The XML Data Type dateTime has been corrected to reflect xmlToStruct
the correct case-sensitive notation.

— A new version of the Previewer app is available which Uniface Previewer App
includes all supports Cordova plugins.

— The reason that compiler warning 1146 occurs is now 1146 Non-database entity
explained. EntityName contains database
field FieldName

— The error -1905 <STRUCTERR_INPUT> may also be returned


after the statements structToComponent and structToXml, structToComponent
not just structToJson. structToXml

— Corrected PGS connection string. The database does not Installation and Configuration of
need to be specified. PGS Connector

— The UHTTP file operations do not support Supported Media Types


multipart/form-data messages.

Table 3. Uniface 9.7.02 (MG01): Documentation Updates for Reported Issues

Issue Number Description New/Changed Documentation

29572 When the binding type is Document/Literal Bare, the Importing WSDL Definitions for
developer provides the document, element, and contents for Web Services
IN parameters and OUT parameters. Complex Nested Parameters
For other binding styles, Uniface applies certain rules for
how complex data should be provided in parameters..

30320 The following fields in the UROUTMON model have been


enlarged from C80 to C256 characters to allow for long host GET_CLIENT_DYN
names, as often used in cloud-based environments. GET_CLIENTS
GET_SERVER_DYN
CLTHOST.URSERVERD GET_SERVERS
HOST.URCLIENTD GET_UROUTER
HOST.URCLIENTS GET_UROUTER_DYN
HOST.UROUTERS
HOST.URSERVERS
MSGTOCLIENTS.UROUTERD

30704 Compiler error -1054 is generated if an entity frame is


positioned below a break frame or trailer frame.

30768 Grid widget performance when using store/e/complete $GRID_READALL_ON_STORECOMPLETE


has been improved by not firing the Read trigger for store
occurrences that have not yet been read from the completed

September 9, 2016 3
What's New in Uniface 9

Table 3. Uniface 9.7.02 (MG01): Documentation Updates for Reported Issues (continued)

Issue Number Description New/Changed Documentation

hitlist. A compatibility switch has been introduced to restore


the pre-9.7.02 behavior, if that is required.

30798 forentity returns error -1102 if the EntityName forentity


parameter is incorrect or the entity is not included in the
component structure.

30867 The documentation has been updated with information about psdef.txt
the psdef.txt file, which is used to configure PostScript
printing on Unix.

30944 The timeout values specified by the cto and rto SOAP SOAP Connector Options
connection options are also applied when reading the WSDL
file prior to sending a SOAP request.

30945 The default request timeout for the rto SOAP connector
option is now 30,000 milliseconds for both the SOP 1.0 and
SOP 2,0 connectors.

30946 The default connection timeout for the cto SOAP connector
option is now 30,000 milliseconds for both the SOP 1.0 and
SOP 2,0 connectors.

30962 A new bom connector option is available for the TXT driver. bom
It enables you to control whether a Byte Order Mark is
written, expected, or required for Unicode files.

30979 Any popup form that does not fit the screen will be clipped. Popup Forms
Popup Window
NOTE
PopupRect
This is a change in behavior. In previous versions of Uniface,
when a popup form did not fit, it was centered on the screen,
which disconnecting it from its anchor or field.

A popup form with a title bar opens according to its


Position property but will not move with its anchor. If the
parent field, rectangle, or form is moved, the opened popup
form with title bar stays where it is. It does not move with
its parent field. This is contrast to other popup forms, which
remain with the parent field and move with it when the field
or form is moved.

30985 Even when the Input Method Editor (IME) is enabled, either AutoImeOpen
by setting AutIoImeOpen=on or setting the field syntax to
YIME, the IME is disabled fields the field syntax NDI (do
not display contents).
For Unifields that have the IME enabled, the IME remains
enabled even when the syntax is NDI.

September 9, 2016 4
What's New in Uniface 9

Table 3. Uniface 9.7.02 (MG01): Documentation Updates for Reported Issues (continued)

Issue Number Description New/Changed Documentation

NOTE
In fixing this issue, some behavior changes have been
introduced when the IME is enabled:
• When the field syntax is set to NPR, the IME remains
enabled.
• When the field syntax of a Unifield is set to NDI, the
IME remains enabled.
• When the field syntax of a Unifield is set to NED using
$fieldsyntax (or fieldsyntax), the IME is disabled.

31004 It is now possible to specify the authentication method used Authentication with UHTTP
by the UHTTP component when submitting SEND requests. UHTTP_DEF_AUTH
• Use the UHTTP_DEF_AUTH logical to set the default $UHTTP_DEF_PROXY_AUTH
authentication for the web server of the destination SEND
URL.
Use the $UHTTP_DEF_PROXY_AUTH setting to set the
default authentication for the proxy server, if used.
• Per SEND request, use the Username parameter of the
SEND operation, to specify an authentication method
for the applicable server, .

If there is an authentication scheme defined, either in the


assignment file or in Proc, authentication will be carried
out, whether a user name is provided or not.

NOTE
This represents a behavior change. Previously, there was no
authentication if the Username parameter was empty.

On Windows only, when the default authentication is


specified in the assignment file, and no user name is supplied
by the SEND operation, the credentials of the current user
are used for authentication. (This functionality is not
available under Unix.)

31041 For a Checkbox widget in a static server page (USP), Checkbox


Uniface now maps a Null (empty) value in the data to a
False value in the HTML. As a result, the behavior of the
Checkbox in retrieve profiles has changed.
A retrieve profile that includes the Checkbox can retrieve
only True or only False values. To retrieve data the
contains both True or False values, the value of the
checkbox field must be set to null in Proc.

September 9, 2016 5
What's New in Uniface 9

Table 3. Uniface 9.7.02 (MG01): Documentation Updates for Reported Issues (continued)

Issue Number Description New/Changed Documentation

Prior to this fix, an empty Checkbox retrieved both True


and Null values, but not False values.

For List, Menu, and RadioButton widgets in USPs, the List


format of values in the ValRep list must be same as the Menu
display format of the field.
RadioButton

31076 It is not possible to directly compare two parameters, raw in the Uniface Library 9.7.03
variables, or fields that use the data type raw or image—they raw
will always evaluate to True. An alternative is to calculate image
and compare a hash of the data.

31093 There are compatibility issues when combining the new Area Frames
styling properties for area frames and entity frames with the Default Entity Widget
existing Border and Color properties.
Color
• If both the Border and BorderType properties are set, Border
two borders are displayed. Only a flat BorderType can
BorderType
be styled.
• If Color is set, all properties set in the initialization
file are ignored, including BorderType and colors.

To prevent these issues in existing components, it is


recommended that you use the new properties only for new
and modified components, and for new named area frames.
When modifying a component to use the new properties for
an entity or area frame, it is recommended that you set Color
to No and turn Border off. For an entity, remove all entity
property values set in the Entity Properties dialog.

TIP
More information on using entity and area frame properties
is available in blogs and downloads on uniface.info.

31129 Use a Uniface list (GOLD-separated), not a $curoccvideo


comma-separated list, when specifying occurrence options.
For example:

$curoccvideo ("ENT1","inner;off")

31132 The LM_LOAD license option also supports the value dlm, $LICENSE_OPTIONS
which specifies the DLM installation directory as the
location of DLM DLLs. The default value is uniface, which
specifies the Uniface installation (\common\bin).

31156 The online help for the Uniface COM Configuration Utility Uniface COM Configuration
is enabled. Utility

31157 The UHTTP component API now supports the MIME type Supported MIME Types
application/json.

September 9, 2016 6
What's New in Uniface 9

Table 3. Uniface 9.7.02 (MG01): Documentation Updates for Reported Issues (continued)

Issue Number Description New/Changed Documentation

The Web Request Dispatcher (WRD) has been upgraded to Web Request Dispatcher (WRD
version 5.5 and includes support for HTTP request and
response with the application/json content-type. To
support UTF-32 encoded requests with application/json,
the Java runtime must be J2SE 1.6 or higher.

31165 A new SYB connector (U5.2) is available to support SAP Platform Availability Matrix
Adaptive Server 16 (Sybase).

31170 To show or hide the session panel in the Development PanelType


Environment using [Gold X], change the value of the Session Panel
PanelType initialization setting in
\uniface\adm\usys.ini to a value other than No or None.
In Uniface 9.7.01, the value of PanelType in the Uniface
installation was changed from Top to No.

31194 By default, video attributes set with Proc instructions such $ACTIVE_FIELD_FIRST
as $fieldvideo override those specified by the $ACTIVE_FIELD
$ACTIVE_FIELD assignment setting.
If you need the $ACTIVE_FIELD settings to take precedence,
use the new assignment setting
$ACTIVE_FIELD_FIRST=true.

Table 4. Uniface 9.7.02 (MG01): Miscellaneous Documentation Updates


Uniface documentation is constantly updated to improve, correct, and fine-tune the information. Many
of these improvements are in response to users who provide feedback via the Feedback link (available
at the end of every page in the Uniface Library). This table lists some of the more significant changes.

Description New/Modified Topics

APIs

UHTTP Component API: Added expected location of certificate store. SET_FLAGS

UHTTP Component API: Corrected the syntax and removed the restriction Authentication with UHTTP
on the use of the Negotiate option for proxy servers.

3GL API: The usysparm function can be used to get the value of the usysparm
$dberrortext Proc function.

JavaScript API: The documentation for the JavaScript API functions for setValue
getting and setting the text of a label has been corrected. The functions getValue
are setValue and getValue.

Proc

Corrected syntax to add comma between parameters. jsonToStruct

It is possible to use either Gold-separated lists or comma-separated lists sort


when specifying sort criteria for the sort and sort/list commands. sort/list
The documentation has been updated to reflect this.

September 9, 2016 7
What's New in Uniface 9

Table 4. Uniface 9.7.02 (MG01): Miscellaneous Documentation Updates (continued)

Description New/Modified Topics

Added note: Do not to use $fielddbvalue in the Delete trigger. This $fielddbvalue
will lead to problems such as infinite looping or an incorrect value for
$fielddbvalue.

Corrected description of error -1158. $procerror

Updated the description of the MUL field syntax. Field Syntax Definitions

Configuration Settings and Command Line Switches

In 9.7.01, new widget and font definitions were added to the default [widgets] and [screen]
usys.ini. These are required to support the modernized appearance of
the Uniface Development Environment and Debugger.

The /aft and /bef sub-switches are also applicable to /dtd. /aft= or /bef=

Database Connectors

ORA: To be able to work with Unicode in SQL Workbench, Oracle Oracle Connector Features
Service Stored procedures, and the where clauses, $def_charset must Restrictions on Use of Unicode
be set to UTF8. and Installable Character Sets

PGS: Clarified instructions for configuring the PGS connector. Installation and Configuration
of PGS Connector

PGS: Corrected configuration example. Removed pg_catalog.*.* Load Definitions Utility for
PostgreSQL

Miscellaneous

The Default Entity widget in form components supports the Default Entity Widget
AttachMargin property. AttachMargin

Changed example URLs. Uniface URL Format


Uniface URL-Based State
Management

Uniface 9.7: Changes in Proc


New Proc instructions have been added and existing Proc has been enhanced.
For more information, see Proc statement and function descriptions in the Uniface Reference
section of the Uniface Library.

Table 5. Changed Proc Instructions

Proc Description Introduced in

$occhandle $occhandle can now be used to select an occurrence by 9.7.01


setting its $selected attribute.
The $selectedoccs attribute and $clearselection
operation can be used to get and clear the collection.

September 9, 2016 8
What's New in Uniface 9

Table 5. Changed Proc Instructions (continued)

Proc Description Introduced in

$collhandle $collhandle can now be used manipulate selected 9.7.01


occurrences using the $selectedoccs attribute and
$clearselection operation.

$webinfo $webinfo now has a channel called PATHINPUT that 9.7.01


contains a Uniface list of path-based input parameters
from a semantic URL.

Uniface 9.7: Changes in the JavaScript API


New JavaScript API objects and functions have been added and existing functions have been
enhanced.

Table 6. New APIs

API Change

focus() Gives the field focus. 9.7.02

hasFocus() Checks whether the field has focus. 9.7.02

getDeclarativeSyntax Returns a JavaScript object containing the field syntax 9.7.02


properties, as defined in the field's definition.

getError Returns a uniface.SyntaxError object for the field, if 9.7.02


a syntax error occurred.

uniface.SyntaxError Error object returned by getError, which contains the 9.7.02


exceptionCode, error message, and valueInError.

uniface.Label New uniface.Label object. The setValue and 9.7.01


getValue functions can be used to set and get the text of
the label.

Table 7. Changed APIs

API Change

uniface.Field The following functions have been added:

focus()
hasFocus()
getDeclarativeSyntax
getError
getLabel

uniface.Occurrence The following functions have been added:


getLabel

activate() Returns a JavaScript Promise object.

September 9, 2016 9
What's New in Uniface 9

Table 7. Changed APIs (continued)

API Change

createInstance() Returns a JavaScript Promise object.

Uniface 9.7: Changes in Configuration Settings


A number of changes have been made to initialization settings and logicals.

Table 8. New and Changed Assignment Settings and Logicals

Initialization Setting Description Version

[WEB] A new file section has been added to the Web Application Server New in 9.7.01
assignment file.
If the settings it contains, or their aliases in the [SETTINGS] section,
are set multiple times, Uniface will use the last setting it encounters.

$CODE_BASE Specifies the location of the web syntax applet files for static server New in 9.7.01
pages. Replaces $WEB_CODE_BASE, which is deprecated.

$GRID_READALL_ON_STORECOMPLETE This compatibility setting determines whether the Read trigger is fired New in 9.7.02
for occurrences that have not yet been read from the completed hitlist.
Default is false because the behavior has changed to improve
performance.

$HTML_GENERATION This setting should now be defined in the [WEB] section. The Changed in 9.7.01
[SETTINGS] location is deprecated (although still accepted).

$JS_BASE_URL This setting should now be defined in the [WEB] section. The Changed in 9.7.01
[SETTINGS] location is deprecated (although still accepted).

$SERVER_SECRET Specifies a unique string to be used as a key in calculating the New in 9.7.01
hash-values used to protect non-editable fields from being modified
in a web browser. Replaces $WEBKEY.

UHTTP_DEF_AUTH Uniface logical that determines the default authentication scheme to New in 9.7.01
be used by the web server when processing UHTTP SEND requests. G102

$UHTTP_DEF_PROXY_AUTH Specifies the default authentication scheme to be used by the proxy New in 9.7.01
server (if used) when processing UHTTP SEND requests. G102

$UNIFACE_RUNTIME_BASE_URL Specify the URL for JavaScript and CSS files that are used by DSP New in 9.7.01
components.

$WEBGEN_X_FOR_DEFAULT This setting should now be defined in the [WEB] section. The Changed in 9.7.01
[SETTINGS] location is deprecated (although still accepted).

$WEBGEN_X_ID_DEFAULT This setting should now be defined in the [WEB] section. The Changed in 9.7.01
[SETTINGS] location is deprecated (although still accepted).

$WEBGEN_X_ID_INSNAME This setting should now be defined in the [WEB] section. The Changed in 9.7.01
[SETTINGS] location is deprecated (although still accepted).

$WEB_CODE_BASE Deprecated (although still accepted). Use [WEB]/$CODE_BASE instead. Deprecated in


9.7.01

September 9, 2016 10
What's New in Uniface 9

Table 8. New and Changed Assignment Settings and Logicals (continued)

Initialization Setting Description Version

$WEBKEY Deprecated (although still accepted). Use [WEB]/$SERVER_SECRET Deprecated in


instead. 9.7.01

Table 9. New and Changed Initialization Settings

Initialization Description Version


Section/Setting

[areaframes] New file section contains area frame property definitions. It enables New in 9.7.01
you to style the appearance of area frames based on their name.

[entities] New file section specifies default widget properties for entities New in 9.7.01
displayed with the default entity widget on Windows.
It is possible to set the widget properties for all entities, for all entities
with the same name, or for an entity in a specific form component.

[screen] The following font definitions have been added to the default New in 9.7.01
usys.ini file:

IDFButtonText
IDFButtonTextLarge
IDFCategories

NOTE
If these definitions are missing, buttons in the Development
Environment and Debugger may have an incorrect appearance.

[widgets] The following new Uniface widgets have been defined in the default New in 9.7.01
usys.ini file:

IDFSpeedSearch
IDFTextCell
IDFButtonBottom
IDFButtonSide
IDFButtonHeader
IDFButtonImage
IDFButtonSpecial
IDFOpenProfile

NOTE
If these definitions are missing, many buttons in the Development
Environment and Debugger may not be available.

Accessibility Causes Uniface applications to return a technical name for supported New in 9.7.01
field widgets. This name can be used by testing tools acting as
Microsoft Active Accessibility (MSAA) clients to implement
automated testing.

September 9, 2016 11
What's New in Uniface 9

Table 9. New and Changed Initialization Settings (continued)

Initialization Description Version


Section/Setting

NOTE
Uniface currently supports this feature only for the Edit Box, Check
Box, and Command Button. Although other widgets may return
technical names, these are subject to change and Uniface does not
support their use by testing tools.

AccessibleNameSeparator Defines a string of characters that is used to identify parts of the New in 9.7.01
MSAA accessible name for Uniface interface objects. By default a
dot is used, but this is not accepted by some tools. You can use this
setting to provide an alternative separator.

DefEntity The DefEntity setting can also be specified in the new [entities] Changed in 9.7.01
section of the .ini file, which supports additional properties.
If set in both the [application] section and the [entities] section, the
definition in the [entities] section is used.

SaveContainedForm The initialization setting SaveContainedForm replaces SaveTabForm. New in 9.7.01

NOTE
Uniface no longer reads the SaveTabForm setting. Thus, if you used
this setting, you need to edit your initialization file and change it to
SaveContainedForm.

SaveTabForm Deprecated. It has been replaced by SaveContainedForm Deprecated in


9.7.01

PanelType In the default Uniface installation, PanelType is set to No instead of Change in 9.7.01
Top. This means that it is no longer possible to show or hide the
Uniface session panel using [Gold X]. To restore this functionality,
edit usys.ini file.

What's New in Uniface 9.7.02


Uniface 9.7.02 introduces significant enhancements in the areas of mobile and web development.

Table 10. What's New in Uniface 9.7.02: General Changes

Description More Information

The Uniface Development Environment features a new editor for defining startup Define Startup Shell Properties
shells. It makes it easier to create startup shells for different purposes, with
different sets of properties for Windows applications, character-based
applications, application servers, and mobile apps.

September 9, 2016 12
What's New in Uniface 9

Table 10. What's New in Uniface 9.7.02: General Changes (continued)

Description More Information

Table 11. What's New in 9.7.02: Mobile App Development

Description More Information

Uniface 9.7.02 enables you to generate deployable mobile apps for Android and Buildozer
iOS platforms via the Buildozer service. From the Development Environment, Building a Mobile App
you can login and submit the app definition and resources to the Buildozer
service, which then creates installable app packages.

To build a mobile app, you need to define a mobile startup shell. This is a Startup Shells
development object that defines the properties for an app that can be deployed Startup Shells for Mobile Apps
on both Android and iOS devices.
The properties defined in the startup shell are used to generate a file called
appFactory.json that is submitted to a cloud-based app factory to generate
the platform-specific binaries for the app. These provide a native wrapper around
the dynamic server pages (DSPs) that implement the app functionality.
Unlike other startup shells, the mobile shell has no triggers and an .aps file is
not generated.

The startup shell editor includes a tool for viewing and maintaining the app Prepare a Resource Bundle
resources bundle containing images for icons and spash screens.

A Uniface JavaScript plug-in is automatically built into every mobile app. This Uniface System Information
can be used to retrieve and display license information about third-party libraries Plug-in
that are built into the app.

September 9, 2016 13
What's New in Uniface 9

Table 12. What's New in 9.7.02: Web Development

Description More Information

Syntax error handling for DSP widgets mapped to HTML controls has been Syntax Checking in Dynamic Server
significantly enhanced by means of new functions in the Uniface JavaScript Pages in the Uniface Library
API and a new OnSyntaxErrorResolved web trigger 9.7.03 Syntax Checking in Dynamic
Server Pages

A new OnSyntaxErrorResolved web trigger is available to handle processing OnSyntaxErrorResolved


after the user has corrected a syntax error. For example, if you implemented OnSyntaxError
your own error handling in an OnSyntaxError trigger, you can reverse the effects
using the OnSyntaxErrorResolved web trigger.

The OnSyntaxError and OnSyntaxErrorResolved triggers can access information uniface.SyntaxError


about the specific field syntax error via the getError function of the getError
uniface.Field object.
getDeclarativeSyntax
This returns uniface.SyntaxError object, which is generated when the user
makes a syntax error or corrects it. It has properties for the error number, error
messages and the value of the field that caused the error.
In addition, the Field.getDeclarativeSyntax function provides access to
the field's syntax properties, as sent to the browser. (This is in contrast to the
getSyntaxProperties function, which only returns field syntax properties
that were modified using setSyntaxProperty or setSyntaxProperties).
To get the default properties as defined in the field definition, use the new
getDeclarativeSyntax function.

Uniface now provides improved field focus control, enabling you to use focus()
JavaScript to give focus to a DSP field, and check whether it has focus. New hasFocus()
functions are available on the uniface.Field object:
OnBlur
focus()
hasFocus()

In addition, all HTML input widgets now support the OnBlur web trigger, which
is fired when the user tabes or clicks away from the field in the browser.
These enhancements can be useful for implementing more responsive error
handling, for example, in preventing a user leaving a field if the syntax is
incorrect.
These functions and trigger work only with widgets that are mapped to HTML5
controls. They do not work in Dojo JavaScript widgets.

Table 13. What's New in Uniface 9.7.02: Other Changes

Description More Information

The HTML widget has been upgraded to use the Chromium Embedded HTML Widget
Framework 3 (CEF3). As a result: LoadError
• The HTML widget is now supported on 64-bit platforms. GFPRendering
• A new LoadError extended trigger is provided that enables you to handle
errors returned by the embedded browser.

September 9, 2016 14
What's New in Uniface 9

Table 13. What's New in Uniface 9.7.02: Other Changes (continued)

Description More Information

Previously, an error page would be displayed when an error occurred while


loading a web page. In the new implementation, a blank page is displayed
and the LoadError trigger is fired. You can use this trigger to provide your
own error handling.
• A new property is available to control rendering in the Paint Tableau.

The performance of Uniface struct handling has been substantially improved. It


is now much faster to query and access nodes in Structs.

The documentation has also been updated as a result of fixes for following Uniface 9.7: Documentation
software and documentation issues: Updates for Patches and Service
Packs
30768
31132
31156
31157
31170
31194

What's New in Uniface 9.7.01


Uniface 9.7.01 introduces a modernized user interface and Windows GUI enhancements, web
enhancements to support mobile platforms, and currency features that include support for Uniface
10 and new DBMS connectors.

Modernization and GUI [p. 15]


Web and Mobile [p. 18]
Database and Currency [p. 21]
Other Changes [p. 21]

Modernization and GUI


The Uniface Development Environment features a modernized user interface, with a new Start
Page and a refreshed appearance to match Windows 8 and Windows 10, with their colored
blocks and flat appearance. To support this, enhancements have been made that allow you to
style area frames, entities, buttons, and the grid widget. You can also better manage the layout
of a form when it is resized.

TIP
More information on these enhancements is available in blogs on uniface.info.

For more information about the new functionality, see the topics referred to in the More
Information column. If the listed topic is not in this document, it is in the Uniface Library.

September 9, 2016 15
What's New in Uniface 9

Table 14. What's New in 9.7.01: Modernization and Windows GUI Enhancements

Description More Information

The Development Environment features a new Start Page that provides quick Uniface Development Environment
access to the editors you need to build different types of applications. [widgets] and [screen]
Colors and buttons in the user interface of the Development Environment and
Debugger have also been changed. To support this, new definitions have been
added to the [screen] and [widgets] section of usys.ini file.

Area frames and the default entity widget have been significantly enhanced with Area Frames
new styling properties. These enable you to apply a flat border and set its color, Default Entity Widget
shade the background in different colors, and apply a colored drop shadow. For
example:

The new properties are:


Gradient Fill Style
BackColorFill (Gradient Fill Style) GradientStart
GradientStart BackColorStart
BackColorStart DropShadowColor
DropShadowColor
BorderType
BorderType
BorderColor
BorderColor
BorderRadius
BorderRadius

For area frames, the new properties can be set only in the application initialization
file.
For entity frames, they can be set in the initialization file, in the More Properties
dialog of the widget properties, and using $entityproperties in Proc.
Properties set in the initialization file can be overridden by setting them
declaratively in the Development Environment, or in Proc.

For area frames, the new properties can be set only in the application initialization Area Frames
file. A new [areaframes] section can be used to define the styling of area frames. [areaframes]
Area frames can be given a name. In the initialization file, you can set properties
for all frames that have the same name. Frames that do not have a name get the
default name of FRAME.

For entities, you can set properties for the default entity widget using the Default Entity Widget
defentity setting in either the [application] section or the[entities] section of [entities]
the initialization file.
DefEntity
In the new [entities] section, you can also define default styling for entities based
on their name and, optionally, the component name.

September 9, 2016 16
What's New in Uniface 9

Table 14. What's New in 9.7.01: Modernization and Windows GUI Enhancements (continued)

Description More Information

In addition to the new styling properties, the default entity widget now supports Attach to Window Border
the Attach and AttachMargin properties. This allows the entity to be resized AttachMargin
when the form is resized.

For the Grid widget, it is now possible to style the grid border using the Grid
BorderType, BorderColor. and BorderWidth properties.
BorderType
BorderColor
BorderWidth

Command buttons in forms can now be rendered with a Windows 8 or 10 look Command Button
and feel. New properties have been added that make it possible to display Frame Type
command buttons as flat buttons, and to control the size and color of the frame
that delineates the button.
To define a flat button, set Representation to Uniface, and the new Frame
Type property to Flat.

Layout management has been improved. The Attach property is now supported Attach to Window Border
by entities and area frames, and labels can now move with their associated fields. Spit Bars
In other words, when a form is resized or split bars are moved, the entity, area
frame, field and label are also resized.

It is now possible for labels to move with their associated fields when the field Anchor
is repositioned by $paintedfieldproperties or as a result of a split bar being
moved.
To enable this feature, set the Anchor property for labels in the usys.ini file.

By default, Uniface is now configured to use the standardized approach for Standardized Deployment
compiling outputs and deploying applications. Uniface reads its own resources Reconfigure Uniface for Classic
from archive files (UAR), and writes all compiled objects to the resources Deployment
directory.
The classic deployment approach is still supported, but you need to explicitly
configure your application for this.

It is now possible to customize the title bar of the Uniface Development [LOGICALS]
Environment to suit your own environment. To do so, set the logical IDFTITLE
in the [LOGICALS] section of the idf.asn file.

Uniface can now return a technical name for selected widgets when queried by Accessibility
Microsoft Active Accessibility (MSAA) clients. This is useful for testing tools AccessibleNameSeparator
to enable automated tests.

NOTE
Uniface currently supports this feature only for the Edit Box, Check Box, and
Command Button. Although other widgets may return technical names, these
are subject to change and Uniface does not support their use by testing tools.

To enable this feature, set the initialization setting Accessibility=testmodein


the application .ini file. When queried by the get_accName method provided

September 9, 2016 17
What's New in Uniface 9

Table 14. What's New in 9.7.01: Modernization and Windows GUI Enhancements (continued)

Description More Information

by the MSAA IAccessible interface, Uniface returns a unique accessible name


for the widget, such as ORDERNR.ORDER.WAREHOUSE.21.
By default, Uniface uses dots to separate the different parts of the name. Some
MSAA clients cannot accept this separator and therefor create their own name,
which may not be unique. In this case, you can use the
AccessibleNameSeparator setting to specify an alternative separator.

Web and Mobile


Uniface's mobile web solution makes use of web technologies such as HTML, CSS, and
JavaScript to provide a flexible user interface that can be used on multiple platforms. Uniface
has introduced significant enhancements to dynamic server pages to support responsive web
designs suitable for mobile platforms.

Table 15. What's New in 9.7.01: Web and Mobile Functionality

Description More Information

You can now start developing enterprise mobile apps that can be deployed on Developing for Mobile Devices
multiple mobile platforms, including Android and Apple.
In this release of Uniface, you can use dynamic server pages to develop the user
interface of applications intended for use on mobile devices, and you can test
them in a native app that also support access to device functionality.

You can download the Uniface Previewer Android and iOS from Google Play Uniface Previewer App
Store and Apple App Store. The Previewer consists of a mobile web browser
and interfaces to some native device functionality, such as the camera and
geolocation. It enables you to preview and test DSPs on real devices without
having to go through the deployment process.

Dynamic Server Pages support Uniface's Mobile App Layout framework, which Mobile App Layout
maps HTML elements in a DSP layout to generic layout definitions for headers, data-uniface-role
footers, and content.
You can define multiple headers and footers, which enable the DSP to adhere
to platform standards on the different devices, add standard controls such as
Back and Close buttons, and so on.
The data-uniface-role is a custom attribute that is applied to an element in
the HTML layout of a DSP to bind it to a definition in the Mobile App Layout
framework.

The following DSP widgets are now implemented as HTML5 controls instead Widgets for Dynamic Server Pages
of Dojo JavaScript widgets: html:type

EditBox Change Widget Mappings for


CommandButton Dynamic Server Pages
CheckBox
DatePicker
DropdownList

September 9, 2016 18
What's New in Uniface 9

Table 15. What's New in 9.7.01: Web and Mobile Functionality (continued)

Description More Information

ListBox
Password
RadioGroup
TextArea

Depending on the browser, the HTML controls differ slightly in behavior and
appearance from the Dojo JavaScript controls.
• The widget appearance depends on the browser and operating system. This
is especially noticeable for the date picker widget, which looks completely
different on Windows, Android, and iOS.
• Some browsers do not currently support all HTM5 controls. For example,
the data picker is not supported by Microsoft Internet Exporer or Mozilla
Firefox. In this case, the widget is rendered as a input text box.
• When browser-side syntax checking is enabled, for HTML5 controls, an
error message is displayed only if a bound error element is present in the
layout (this must be manually added), or an OnSyntaxError web trigger
has been defined. In JavaScript controls, a balloon with the error message
is automatically displayed.
• In the graphical Server Page Layout Editor, many widgets are represented
by an Input Element, even if they are defined as a check box, command
button, or date picker. This is because these logical widgets are based on
the same physical widget, with only the html:type property specifying a
different value. The properties are only applied at run time, so it is not
possible to distinguish between these widgets in the layout editor.
• When copying fields into the layout, there is no longer a type="text"
attribute in the bound HTML element.

NOTE
When type="text" is present in the layout, the HTML5 Password widget
will not mask the text. To use the HTML5 widget in a DSP that was created
prior to Uniface 9.7, you need to remove this attribute from the layout.

NOTE
Uniface continues to deliver the old JavaScript widgets. For existing applications,
you may prefer to continue using these. To do so, edit the [webwidgets] section
of the usys.ini file.

Uniface introduces a new mechanism for customizing and displaying Syntax Checking in Dynamic Server
browser-side syntax error handling. Bound error elements can be inserted into Pages
web layouts to display syntax errors. You can customize error handing using OnSyntaxError
the new OnSyntaxError web trigger.

At runtime, Uniface generates the HTML for the DSP web page based on Controlling Load Order for
definitions in the DSP. By default, references to the Uniface JavaScript and CSS JavaScript and CSS in DSPs
files are inserted just before the closing tag of the header (</head>). This can

September 9, 2016 19
What's New in Uniface 9

Table 15. What's New in 9.7.01: Web and Mobile Functionality (continued)

Description More Information

be a problem if you need to inject custom JavaScript or CSS that has


dependencies on the Uniface files.
It is now possible to specify another location for injecting the Uniface files using
placeholders inserted in the DSP layout.

When generating HTML for DSPs, Uniface automatically applies predefined Generating HTML class Attributes
classes to empty occurrences and entities, bound error elements, and mobile app for Styling
layout definitions. These can be used to style the elements using CSS.

-uent-empty-
-uocc-empty-
-uflderror-no-error-
-uflderror-in-error-
-ufld-highlight-error-
-uf-header
-uf-footer
-uf-content

To make web applications more configurable for developers and deployers, new Uniface 9.7: Changes in
configuration files and settings have been introduced. Configuration Settings

Uniface now supports RESTful, or semantic URLs. Uniface URL Format


The format of URLs that Uniface can accept has been enhanced to support input $webinfo: Data Channels
parameters passed as path elements. For example:
http://example.com/products/chairs/red, instead of
http://example.com/products?category=chairs&color=red
The $webinfo function now has a channel called PATHINPUT which contains
a Uniface list of path-based input parameters.

It is now possible to select specific occurrences in Proc. Each occurrence has a


Boolean property ($selected), that can be used to mark or clear an occurrence Occurrences
as selected, using $occhandle.
Each selected occurrence is added to the collection of selected occurrences,
which can be addressed using $collhandle. The $selectedoccs attribute
and $clearselection operation can be used to get and clear the collection.

The Uniface JavaScript API has been enhanced to support JavaScript promises, Promises
making it much easier to handle asynchronous activation of server-side and activate()
client-side code.
createInstance()
A promise is a placeholder for the return value of an operation that is called
asynchronously. Promises make code more understandable because they do not
required the server-side and client-side code to mutually call each other.
Both the activate and createInstance JavaScript API functions now return
a Promise object.

It is now possible to dynamically set the text of labels in dynamic server pages uniface.Label
using the Uniface javaScript API. A new data object, uniface.Label, is

September 9, 2016 20
What's New in Uniface 9

Table 15. What's New in 9.7.01: Web and Mobile Functionality (continued)

Description More Information

provided. It is returned by Field.getLabel and Occurrence.getLabel, and


provides the functions setValue and getValue.

You can set the URL to the WRD in JavaScript by means of the wrdurl
uniface.wrdurl member.

Database and Currency

Table 16. What's New in 9.7.01: Database and Currency Enhancements

Description More Information

A new DBMS connector is available for PostgreSQL. PostgreSQL

A new DBMS connector is available for SAP HANA. SAP HANA

Uniface is now delivered with Apache Tomcat 8.

Other Changes

Table 17. What's New in 9.7.01: Other Changes

Description More Information

The location to which Uniface saves information in the registry has changed. Uniface and the Registry
Uniface now reads and stores information under its own Registry keys instead Migrate Logical Printers
of Compuware registry keys. They are now located in
HKEY_CURRENT_USER\Software\Uniface\Uniface 9\.

NOTE
If you have defined your own logical printers, you will need to move these
definitions to the new Registry keys.

The web output filter for Gomez Actual Experience XF has been removed from Creating a Web Output Filter
Uniface. However the mechanism to add your own web output filter plug-in Plug-in
remains unchanged.

An alternative key combination is available to represent the Gold key. Function Keys, Shortcuts, and
Ctrl+Shift+F1 is a keyboard combination that can be used on laptops without a Wildcards
numeric keyboard or Mac keyboards, when Windows is running on a Mac.

Uniface Flow is no longer delivered, so the Workflow workspace, Process Studio,


and test environment have been removed from the Uniface Development
Environment.
If you need to maintain Uniface Flow applications, you should continue to use
the Uniface 9.6 Development Environment.

September 9, 2016 21
What's New in Uniface 9

Other Documentation Updates

Table 18. Updates for Fixed Issues


This table lists documentation changes resulting from fixes for software and documentation issues that have not been
included in previous release or patches.

Issue Number Description New/Changed Topics

30487 Fallback paths for logical printers have been documented. LogPrinter

What's New in Uniface 9.6


Uniface 9.6 adds significant new functionality in the areas of GUI support, web applications,
complex parameter support, and database support.

What's New in Uniface 9.6.08


Uniface 9.6.08 introduces support for Windows 10. It also fixes some issues that have not been
addressed in previous patches.

Table 19. Table 1. What's New in 9.6.08

Description More information

Windows 10 is now supported for Uniface 9.6. $oprsys


You can test for the operating system in Proc using $oprsys.

Other Documentation Updates


The documentation has also been updated as a result of fixes for following software and
documentation issues:

30798
30944
30945
30946
30958
30979

For more information, see Uniface 9.6: Documentation Updates for Patches [p. 26].

Uniface 9.6: Changes in Proc


New Proc instructions have been added and existing Proc has been enhanced.
For more information, see Proc statement and function descriptions in the Uniface Reference
section of the Uniface Library.

September 9, 2016 22
What's New in Uniface 9

Table 20. New Proc Instructions

Proc Description Introduced in

jsonToStruct The Struct functionality has been extended to support 9.6.04


structToJson conversion to and from JSON streams. Two new Proc
statements have been added—structToJson and
jsonToStruct

structToXml/schema Convert a Struct to XML using a schema 9.6.01

$fieldhandle Return the handle of the requested field. 9.6.01

$signatureproperties It is now possible to dynamically set the endpoint URL 9.6.04


of a web service. The $signatureproperties enables
you to set SOAP U2.0 connector options in Proc. A new
svc connector option defines the endpoint for a SOAP
web service.

$widgetoperation Execute the specified widget operation or JavaScript 9.6.01


operation via the field handle. Only available for HTML
widgets.

#pragma Provides a specific instruction to the compiler. Currently, 9.6.05 X502


the only supported instruction is fsyntaxoverride,
which instructs the compiler to allow the field syntax in
a subtype entity to override that defined in its supertype.

Table 21. Changed Proc Instructions

Proc Description

componentToStruct and Structs can now be used in the reconnect process. 9.6.06
structToComponent componentToStruct features new switches (/notags,
/reconnectTags, and /firetriggers) that enable you
to fine-tune the tags that are generated and to fire pre- and
post-processing triggers.
structToComponent now recognizes occurrence
metadata tags, and the new /firetriggers switch
enables you to fire pre- and post-processing triggers.

filedump and lfiledump The filedump and lfiledump have been enhanced with 9.6.04
a /nobom qualifier so that Unicode files can be written
without a Unicode byte order mark (BOM)

scope The scope block now supports dynamic scoping, enabling 9.6.01
DSP instances that are dynamically created to be included
in the scope of an operation or trigger.

newinstance The InstanceProperties argument of newinstance 9.6.01


can now include properties for the new popup window

params Struct parameters can now be passed to public operations. 9.6.02


The default behavior is to pass Struct parameters by
reference in partner operations and entries, and to pass

September 9, 2016 23
What's New in Uniface 9

Table 21. Changed Proc Instructions (continued)

Proc Description

them by value in public operations. It is possible to


override this behavior when declaring the parameters
using the byRef or byVal qualifier.

read The read statement now supports the offset option, 9.6.01
specifying the number of records to be skipped before
data reading starts. The offset option can only be used
when the database has a data paging mechanism and the
Uniface database connector supports it.

reconnect and The reconnect and retrieve/reconnect commands 9.6.06


retrieve/reconnect can now reconnect data in Structs.

return If the return statement specifies an expression, it can 9.6.02


evaluate to any data type, not just numeric.

NOTE
To make use of this change in behavior, you must
recompile your Proc code.

$collSize The $collsize Struct function can now return a value 9.6.02
of 0.

$encode and $decode The $encode and $decode Proc functions are now 9.6.02, X201
supported on the Alpha VMS.

$entityproperties, You can now use $entityproperties, 9.6.06


$CurEntProperties, and $CurEntProperties, $occproperties to get and set
$occproperties the widget properties of entities and occurrences in
Dynamic Server Pages. Entities and occurrences support
the same properties as the AttributesOnly widget.

$number If the input is a Numeric or Float with value "", $number 9.6.01, X012
returns "".

$occproperties Dynamically controls the appearance of occurrences in 9.6.01


the DSP.

$oprsys New OS codes added: M for Windows 8, and N for 9.6.01, X102
Windows Server 2012

$paintedfieldproperties Changes made by $paintedfieldproperties remain 9.6.01, X104


in effect until the form is reopened.

$setting The $setting function can also be used to address 9.6.03, X301
settings in the assignment file.

$widgetoperation When calling a JavaScript function in the HTML widget 9.6.02


with parameters, the data is mapped and translated to a
JavaScript data type.
When called with an empty string, error -1113 is returned
instead of -1122.

September 9, 2016 24
What's New in Uniface 9

Uniface 9.6: Changes in Configuration Settings


A number of changes have been made to initialization settings and logicals.

Table 22. New and Changed Assignment Settings

Initialization Setting Description Introduced in

$NET_FMT If HIT_META is specified, it converts data to Unicode, not Changed in 9.6.04


TRX as it did prior to Uniface 9.

$NET_TIMEOUT You can now set timeouts for a Uniface existence check Changed in 9.6.07
(uec) and connection verification check (vfy). These
timeouts should only be used if required.

$WEBGEN_X_FOR_DEFAULT Determines the default value of the x-for placeholder New in 9.6.03
attribute for attached labels in static server pages.

$WEBGEN_X_ID_DEFAULT Determines the default value of the x-id placeholder New in 9.6.03
attribute for fields in static server pages.

$WEBGEN_X_ID_INSNAME Determines whether webgen appends the instance name New in 9.6.03
of the static server page to the id attribute that it
generates for the x-id placeholder attribute.

$NLS_DATE_UNIFACE_PARSER Determines whether date and time fields will be parsed New in 9.6.01,
by Uniface rules instead of NLS conventions. X104

$LICENSE_OPTIONS New option: LM_LOAD=uniface reverses the default Changed in 9.6.01,


search order and attempts to load from the Uniface PATH X102
(Uniface\bin) first, before attempting to load from the
DLM installation path.

Table 23. New and Changed Initialization Settings

Initialization Setting Description Introduced in

AsynchGui If the AsynchGui initialization setting is 2(Flush), it is Changed in 9.6.01,


not possible to activate a popup form that has the Auto X104
Close property set to True.

ButtonStyle A new value, User-Defined, has been added, making it Changed in 9.6.01
possible to control the appearance of panels and toolbars.

Menu Set the font, color, and image properties for all menus in New in 9.6.01
the application.

Panel Set the color and border properties for all panels and New in 9.6.01
toolbars in the application.

[widgets] The widgets section has been updated with definitions for New in 9.6.01
the new widgets:

FormContainer=ucontainer
HTML=uhtml
TabEx=utabex

September 9, 2016 25
What's New in Uniface 9

Uniface 9.6: Documentation Updates for Patches


The Uniface 9.6 documentation incorporates changes resulting from enhancements, fixes for
software and documentation issues, and feedback on the documentation. Significant changes
are listed here.

Table 24. Uniface 9.6.08 (MX07): Documentation Updates for Reported Issues

Issue Number Description New/Changed Topics

30320 The following fields in the UROUTMON model have been


enlarged from C80 to C256 characters to allow for long host GET_CLIENT_DYN
names, as often used in cloud-based environments. GET_CLIENTS
GET_SERVER_DYN
CLTHOST.URSERVERD GET_SERVERS
HOST.URCLIENTD GET_UROUTER
HOST.URCLIENTS GET_UROUTER_DYN
HOST.UROUTERS
HOST.URSERVERS
MSGTOCLIENTS.UROUTERD

30267 For the INPUT and OUTPUT channels of $webinfo, Uniface $webinfo: USP Data
only supports text/* MIME types such as text/plain, Channels
text/json. Other MIME types, such as application/json
are not supported.

30485 For the Document/Literal Wrapped type of web service, /gen


parameter repetition is now recognized. This may affect the /gen
options xml and rfe.

30586 If the Supercede option is selected when converting data, the $ude copy
existing data is overwritten. Supersede

30699 Help topic has been added for the Global Proc Search form. Searching Proc
Global Proc Search

30704 Compiler error -1054 is generated if an entity frame is positioned


below a break frame or trailer frame.

30798 The forentity statement returns error -1102 if the EntityName forentity
parameter is incorrect or the entity is not included in the
component structure.

30848 When using filedump and lfiledump to write XML files, the filedump and lfiledump
XML encoding is derived from the UnicodeFormat or CharSet
specified in the statement, or otherwise from the $SYS_CHARSET.
There are some differences between the character sets and the
encoding formats, especially with Windows code page 1252 and
ISO-8859-1. It is best practice to specify the encoding yourself
using the CharSet parameter.

30858 When importing signatures for COM interfaces, you may need /sti
to modify the signature after import. This is because methods

September 9, 2016 26
What's New in Uniface 9

Table 24. Uniface 9.6.08 (MX07): Documentation Updates for Reported Issues (continued)

Issue Number Description New/Changed Topics

may return a different type of object depending on the context


in which they are used.

30893 The maximum size that the Value can have in a ValRep list item ValRep List Syntax
is 289 bytes.

30927 String parameters for web service call-out must not exceed 400 activate
MB on 32 bit systems and 1GB on 64 bit systems. This can result Maximums
in errors -1202 and -1406 after activation.

30928 For Uniface call-in, we recommend that you do not change the SOAP Connector Options
name of the service using the svc SOAP connector option, unless
you are fully aware of the consequences.

30937 Corrected example for UHTTP.SEND. UHTTP

30944 The timeout values specified by the cto and rto SOAP SOAP Connector Options
connection options are also applied when reading the WSDL file
prior to sending a SOAP request.

30945 The default request timeout for the rto SOAP connector option
is now 30,000 milliseconds for both the SOP 1.0 and SOP 2,0
connectors.

30946 The default connection timeout for the cto SOAP connector
option is now 30,000 milliseconds for both the SOP 1.0 and SOP
2,0 connectors.

30958 The UHTTP component now recognizes the "Connection: UHTTP


Keep-Alive" header and will attempt to keep using the same
connection as long as successive calls all go to the same host.

New options are also available for the UHTTP LOAD_FILE_CONTENTS


LOAD_FILE_CONTENTS and DUMP_FILE_CONTENTS operations. DUMP_FILE_CONTENTS
The TCPSNDBUF and TCPRCVBUF options can be used to set the
GET_INFO
size of the TCP send and receive buffers before calling the SEND
operation.
These options can also be used with the GET_INFO operation
(after calling the SEND operation) to return the specified TCP
buffer size that was used for file transfer.

30967 Unifields can now be edited when there are split bars in the Unifields
component. However, changes in the layout as a result of moving
split bars are not applicable to Unifields.

30979 A popup form may have a title bar if it inherits the Caption Popup Forms
property of its parent form. In this case, it can be moved by the Popup Window
end user. If the parent field or form is moved, the opened popup
form with title bar stays where it is. It does not stay attached to
its parent field.

September 9, 2016 27
What's New in Uniface 9

Table 24. Uniface 9.6.08 (MX07): Documentation Updates for Reported Issues (continued)

Issue Number Description New/Changed Topics

This is contrast to other popup forms, which remain attached to


the parent field and move with it if the field or form is moved.

31010 In the Edit Box and Rich Edit Box widgets, the Frame property Frame
can be changed dynamically in Proc, but only if the 3-D Effect
property is false when the form is initialized.

31016 When $NLS_INTERNAL_TIME is UTC, special corrections are $NLS_INTERNAL_TIME


applied to the conversions between the UTC internal time and $nlsinternaltime
the external time zone during the shift from or to Daylight
Savings Time.

31041 For a Checkbox widget in a static server page (USP), Uniface Checkbox
now maps a Null (empty) value in the data to a False value in
the HTML. As a result, the behavior of the Checkbox in retrieve
profiles has changed.
A retrieve profile that includes the Checkbox can retrieve only
True or only False values. To retrieve data the contains both
True or False values, the value of the checkbox field must be
set to null in Proc.
Prior to this fix, an empty Checkbox retrieved both True and
Null values, but not False values.

For List, Menu, and RadioButton widgets in USPs, the format List
of values in the ValRep list must be same as the display format Menu
of the field.
RadioButton

31069 The spawn command is no longer deprecated. There are no plans Uniface 9.1: Deprecated
to remove this from Uniface. Proc

— The usysparm function can be used to get the value of the usysparm
$dberrortext Proc function.

Table 25. Uniface 9.6.07(MX06): Documentation Updates for Reported Issues

Issue Number Description New/Changed Topics

30456 Changes to widget font and color settings in the Month Calendar Month Calendar
are supported only in Windows Classic mode. They cannot be
applied when Windows visual styles are in effect, for example
when a theme is applied or in Windows 8.

30581 If Keep Layout State is False for a Form, but True for a Grid Keep Layout State
in the Form, the Grid layout state is stored at the Instance level Layout State Storage
in the Registry, but only if the instance name has not been
generated by Uniface. In other words, Uniface behaves as if
Layout State Storage is set to INSTANCE.

September 9, 2016 28
What's New in Uniface 9

Table 25. Uniface 9.6.07(MX06): Documentation Updates for Reported Issues (continued)

Issue Number Description New/Changed Topics

30625 The Resized trigger of the Form Container widget is now fired Resized
when its parent form is loaded (even if the Attach property is
not set.), as well as whenever the form is resized.

NOTE
The returned size of the widget now excludes the widget frame.
Previously, it included the widget frame so the returned size is
now smaller by several pixels.

30627 The Viewport_resized trigger of the Grid widget is now fired Viewport_Resized
when its parent form is started, or is loaded into a form container,
as well as whenever the grid is resized.

30711 The way that sql/print and sql/data handle trailing white sql
space is different. When using sql/data trailing white spaces
is stripped from the returned data. When using sql/print,
trailing spaces are not stripped.

30731 Widget operations called in an HTML widget only affect the HTML Widget
widget, not the field. The field that is bound to a widget changes
when scrolling through data. For this reason, $widgetoperation
should not be used if you want to change the displayed content
based on the occurrence being displayed.

30752 When Uniface parses and displays the value of a Date, Time, or Parsing and Displaying
Dateline field, it uses either Classic mode or NLS mode, as Date and Time Data
determined by the $nlslocale and $nlsformat variables. The $NLS_DATE_UNIFACE_PARSER
parsing behavior can be further influenced by the and
$NLS_DATE_UNIFACE_PARSER and $NLS_DATETIME_UNIFACE_PARSER
$NLS_DATETIME_UNIFACE_PARSERassignment setting.

30796 It is possible to specify a title for the message box displayed by askmess
askmess.

30789 UHTTP proxy authentication is now available for Windows [LOGICALS] and SENDand
platforms. For compatibility reasons, it is not used by default. SET_FLAGS
To ensure that the default behavior is the same on all platforms,
set the logical UHTTP_WPOST_FORM in the [LOGICALS] section
of your assignment file. If you do so, you may need to make
some code changes, for example by changing the flags set with
the UHTTP.SET_FLAGS operation.

30825 The No Form Scrollbars property now applies to overlay, No Form Scrollbars
contained, and popup forms, as well as to normal forms.

30834 The following types of Proc syntax now result in compiler errors: Error: 1000 Operand not
• A line of code that ends with an operator that should be valid
followed by an operand. Error: 1000 Syntax error
(Statement not valid)

September 9, 2016 29
What's New in Uniface 9

Table 25. Uniface 9.6.07(MX06): Documentation Updates for Reported Issues (continued)

Issue Number Description New/Changed Topics

• An empty condition in condition statements such as if,


while, for, until in which parentheses are omitted.

30879 You can now use handles to component instances as parameters Call-Out Using activate
to 3GL callout operations.

30888 You can now set timeouts for a Uniface existence check (uec) $NET_TIMEOUT
and connection verification check (vfy) in the Uniface Router /uec and /vfy
assignment file. These timeouts should only be used if required.
It is also possible to set these on the network path setting in the
client’s assignment file.

— The documentation for the Oracle connector options unicode


smp and nclob_ext has been updated to add additional unicode smp
information about their use. nclob_ext

Table 26. Uniface 9.6.06 (MX05): Documentation Updates for Reported Issues

Issue Number Description New/Changed Topics

30264 The performance of structToXml/schema has been significantly structToXml/schema


improved. However, using structToXml without /schema is still
faster than using structToXml/schema.

30315 If an imported Uniface 8 file contains Uniface meta dictionary data, Migrate Repository Utility
the Migrate Repository Utility can be used to automatically import
the Uniface 9 meta dictionary.

30405 The database connectors for Oracle, Solid, and SQLite now support DBMS Connector Limits
a maximum record length of 2GB-1 for records with only fixed
length fields.
The maximum record size for entities that have variable length
fields remains 8192 bytes; the rest goes into the overflow table.

30499 In addition to being passed as a literal string, entity and occurrence params
parameters can now be passed as a field, an indirect field, a variable,
or a function that returns a string.

30545 The documentation has been updated to clarify namespace handling xmlToStruct
by xmlToStruct.

30595 The new directive #pragma fsyntaxoverride instructs the #pragma


compiler to allow the field syntax in a subtype entity to override
that defined in its supertype.

30600 When discard is used during processing of the xmlsave statement, discard
$status returns -3 and $procerror returns -1320.

30629 The maximum number of levels in a Proc call stack depends on the Proc Call Stack
type of Proc module. Entries can have a larger call stack than
operations.

September 9, 2016 30
What's New in Uniface 9

Table 26. Uniface 9.6.06 (MX05): Documentation Updates for Reported Issues (continued)

Issue Number Description New/Changed Topics

30661 The activate command returns -168 if it is used to activate a activate


Form from a Zoom window.

30677 The Check Box widget supports a new property FocusIndicator FocusIndicator
which determines how the check box shows it has focus when no
attached label is available.

30732 It is now possible to use Structs for disconnected record sets. New Using Structs for
switches and Struct annotations have been added to Disconnected Record Sets
componentToStruct and structToComponent to support the componentToStruct
occurrence reconnect information required by the reconnect
structToComponent
statement.
This functionality works in the same way as xmlsave and xmlload.

30748 $procreturncontext includes error 1024 when the #pragma #pragma


fsyntaxoverride is present, and the field syntax of the subtype
entity differs from the supertype.

30773 A new Sybase connector option is available. This is a compatibility convert numeric
option that is applicable to SYB U5.1 connector and higher.

Table 27. 9.6.05 (MX04): Documentation Updates for Reported Issues

Issue Number Description New/Changed Topics

29978 In the Grid widget, the following properties of the Drop Down List Widgets and Properties
widget are now supported: Supported in Grid Widget

Active Background Color (BackColorSelect)


Active Foreground Color (ForeColorSelect)
Gradient Fill Style (BackcolorFill)

30307 A new 3GL function is available. ufputext supports sending more ufputext
data to a field than it can contain.

30305 When a WSDL file contains complex XML schema types that Importing WSDL
Uniface does not support, they are mapped to them to string Definitions for Web Services
parameters, so special handling is required when activating the web
service operation. Unsupported XML constructs include:

Nested complex types


Repeating fields or groups of fields
Derived types from abstract types that are identified by an
xsi:type attribute in the instance document.
Substitute elements from the defined substitution group instead
of the <head> element.

30351 If an imported Uniface 8 file contains Uniface meta dictionary data, Migrate Repository Utility
the Migrate Repository Utility can be used to automatically import
the Uniface 9 meta dictionary.

September 9, 2016 31
What's New in Uniface 9

Table 27. 9.6.05 (MX04): Documentation Updates for Reported Issues (continued)

Issue Number Description New/Changed Topics

30495 The correct literal property name for Current Occurrence Row CurOccRowHeigh
Height is CurOccRowHeight.

30327 If the IdPart or the ValuePart in a list item is not specified, it is Associative Lists
considered to be empty.

30380 Transparency is not supported for PNG images that are used in the Supported Image Formats
Tree widget (for example, for icons specified by the Type property). Type

30404 Tooltips can be displayed in non-modal forms (including tabs and Tool Tip Text
contained forms), and in modal forms that have focus. No tool tip
is shown on disabled forms (such as a modal form that has opened
another form). They can only be displayed when Uniface is active.

30486 When XML schema data types datetime, date and time are received Date, Time, and Time Zones
in SOAP responses, without a time zone specified, they are for Web Services
interpreted as the current local time and no time zone conversion
is applied.

30531 Clarified that the literal name of the Multiple Rows property is Multiple Rows
multiline for the TabEx widget and multi for the Tab widget.

30547 When addressing Windows registry data with $setting, it is $setting


possible to specify either the 32-bit or the 64-bit registry.

30552 It is now possible to start a popup form without giving it focus. This edit
can be done using the edit/nofocus statement in the form itself, InitialFocus
or the instance property InitialFocus=false.

30676 The Tab and Form Container widgets do not support the Color Inheritance
Background Color and Foreground Color properties.

— Descriptions of Proc commands that have been introduced or Many


enhanced in Uniface 9 now record the Uniface version in which a
command or syntax change was introduced.

— Documented how to get HTTP session attributes using $webinfo $webinfo


("WEBSERVERCONTEXT"). This information was unintentionally ("WEBSERVERCONTEXT")
omitted when the Session Management API was introduced.
These attributes can be set and deleted using $webinfo
("WEBSERVERCONTEXT").

Table 28. Uniface 9.6.04 (MX03): Documentation Updates for Reported Issues

Issue Number Description New/Changed Topics

30245 The documentation for the Uniface Resource Manager (URM) has urm
been updated to include missing switches for urm entitycopy.

30269 When activating operating system commands, If the command is Operating System
not valid, an activation error occurs and $status and $procerror Commands
will be set to -150.

September 9, 2016 32
What's New in Uniface 9

Table 28. Uniface 9.6.04 (MX03): Documentation Updates for Reported Issues (continued)

Issue Number Description New/Changed Topics

30281 The Dimmed Background Color property is supported by the Dimmed Background
Color Box widget, but not the Color List or Rich Edit Box widgets. Color
Its default value is True, but this is overridden in the default
usys.ini file.

30326 The $setting function can also be used to address settings in the $setting
assignment file

30369 The number of fields supported by the Oracle database connector DBMS Connector Limits
(ORA) has been increased from 274 to 1000.

30371 It is now possible to dynamically set the endpoint URL of a web $signatureproperties
service. The $signatureproperties enables you to set SOAP SOAP Connector Options
U2.0 connector options in Proc. A new svc connector option defines
the endpoint for a SOAP web service.

30394 The maximum length of an operating system command has been Operating System
changed to conform to the maximum length supported by the Commands
operating system.

30413 It is not possible for a Uniface component to activate another COM Call-In to Uniface
Uniface component via a COM interface when they are running in
the same Uniface process. This is only possible if they are running
in different processes.

30443 The drop-down list widget now supports the FrameColor property. Drop-Down List
Frame Color
NOTE
For the drop-down list widget, the Frame property, and its
dependent properties FrameColor and 3D Effect, are applied only
if the Dynamic property is True, and the field does not have focus.

30488 $NET_FMT now works in Uniface 9. If HIT_META is specified, it $NET_FMT


converts data to Unicode, not TRX as it did prior to Uniface 9.

— The UTIMER component can run in an exclusive server but it can UTIMER
only post messages to applications that are registered with the Inter-Component
Uniface Router. It cannot send postmessages to local components Messaging
in that exclusive server. This differs from normal postmessage
postmessage
behavior.

— On Linux and Unix platforms, if the UST command line is too long, [SERVERS]
it may not be reported to the Uniface Router. In this case, the
urouter.log file may report that the Uniface Server was
successfully started, but then fails to register and reports a timed-out
error.

September 9, 2016 33
What's New in Uniface 9

Table 29. Uniface 9.6.03 (MX02): Documentation Updates for Reported Issues

Issue Number Description New/Changed Topics

29756 Each time a Proc entry or operation is called recursively, a level of Proc Call Stack
Proc nesting is added to the Proc call stack. Too many levels of
nesting cause Uniface to issue a fatal error message (9033
"Runtime error: Proc stack overflow")

29867 The $encode and $decode Proc functions are now supported on $encode and $decode
the Alpha VMS.
However, the RSA and DSA encryption algorithms are not
supported on the Alpha VMS and are very slow on the Itanium
VMS.

30080 The search order for color inheritance has been made clarified. This Color Inheritance
affects forms, entities, area frames, and labels, as well as widgets Inherit Colors
that support the Inherit Colors property.

30025 The Detail trigger of the Color Box widget can be fired only if the Color Box
Double-Click (DblClk) property is set to Detail. You can do this
in the usys.ini file or in the More Properties dialog (click More
in the Define Color Box Properties dialog).

30103 The UPOPMAIL Send operation has been enhanced to allow Send
sending to other recipients even if one of the recipients is invalid. GetRecipientDetails
A new operation, GetRecipientDetails, has also been added to
the UPOPMAIL component. It returns a list of recipients that were
not accepted, and the SMTP reply code and message text.

30140 When using retrieve or retrieve/e, if the outer entity is in the retrieve
application model, but its DBMS Path is Not in database, the
Read triggers of the inner entities are not activated. In this case,
ensure that the read statement in the outer entity's Read trigger
explicitly retrieves the inner entity.

30162 Popup forms are now always created as attached forms. Popup Window

NOTE
This is a change in behavior since 9.6.01, when they were created
as detached forms.

30167 The size limit for Proc labels is 128 chars. Proc Labels

30173 A new connector option, connection pooling, is available for connection pooling
the MSS connector. It determines whether connection pooling is
enabled.

30222 The way that empty elements are represented by UXMLWRITER ENDELEMENT
has changed. Since Uniface 9.6.01 X103, it is written as
<ElementName/>, rather than <ElementName> </ElementName>.

30227 A new operation, SetMessageID, is available on the UPOPMAIL SetMessageId


component.

September 9, 2016 34
What's New in Uniface 9

Table 29. Uniface 9.6.03 (MX02): Documentation Updates for Reported Issues (continued)

Issue Number Description New/Changed Topics

30249 The newinstance documentation has been updated to include the newinstance
FieldName property for popup windows.

30291 The component library has been added to the search path for glyphs. Search Order for Global
It is now the same as for menus. Objects

30352 The stored layout of a form (if HISTORY is set) is ignored when the History
form is displayed in a popup window.

— The IdPart of an associative list is limited to 150 bytes, not 80 Associative Lists
bytes

— The values returned in $status after the macro statement have macro
been corrected.

— The default widget definition for the drop-down list has been Drop-Down List
corrected.

Table 30. 9.6.02 (MX01): Documentation Updates for Reported Issues

Issue Number Description New/Changed Topics

29502 The window property Overlay Parent can be used to link an overlay Overlay Parent
form with a specific contained form instance, such as a tab page.

29650 Labels and edit boxes can inherit both foreground and background InheritColors
colors from their parent entity or form. It is possible to set both
foreground and background colors of entities in Proc.

29680 Uniface arithmetic expressions use string representations of the Arithmetic Operators
numbers as input, and return a string representation of the result,
truncated at 38 digits. If the 39th digit is 5 or higher, the number is
now rounded upwards.

29769 When retrieving the field syntax, only syntax attributes that are $fieldsyntax
dynamic and that have previously been set with $fieldsyntax are $fieldinfo
retrieved. If syntax attributes have been set declaratively (in the
model or component), an empty string is returned. You can retrieve
declaratively set field syntax with $fieldinfo("SYNTAX").

29772 The DSP widget property Syntax Check on Browser Syntax Check on Browser
(ClientSyntaxCheck) does not disable the field syntax check; it
just makes it possible for the browser to submit a request, even if
a field holds syntactically incorrect data.

29773 If the web service component is located in a subsystem, you need Exporting WSDL and
to recompile the signature using /sig ServiceName, before Schema Files for Web
exporting the WSDL file. This ensures that the WSDL export facility Services Call-In
creates a WSDL with the correct target namespace.

29775 The postmessage Proc statement is intended for asynchronous postmessage


communication. However, when both the sending and receiving

September 9, 2016 35
What's New in Uniface 9

Table 30. 9.6.02 (MX01): Documentation Updates for Reported Issues (continued)

Issue Number Description New/Changed Topics

instances are running in a Uniface Server process, omitting the


InstancePath from the Destination parameter causes the
messages to be sent synchronously. This is because the Uniface
Server does not have the queuing functionality provided by the
structure editor or Uniface Router.

29801 and 29881 A new initialization setting determines whether the background of ColorNo
labels and fields with the Color property set to No are printed on a
transparent background, or a white, non-transparent background.

29805 The JavaScript API setValRep can now accept a JavaScript array setValrep,
as parameter. setValrepArray,
New JavaScript APIs setValrepArray and getValrepArray are getValrepArray
available.

29806 The ButtonStyle .ini setting has 4 additional styles, which are ButtonStyle
now documented.

29822 Describe how to set the font style in font definitions in the [screen] and [printer]
initialization file.

29836 The LDAP 2.0 connector is now available for Windows 32-bit LDAP Connector
systems.

29847 A new property, maxtags, controls the number of tags that are maxtags
dynamically updated as you type in the Proc Editor. Configuring and Using the
Proc Editor

29852 Command line switches and sub- switches are normally separated Command Line Switches
by spaces, but this is not required. However, if spaces are omitted,
a switch that can take a value cannot be followed by another switch.

29886 You can set ColorNo in the Setup utility—in the Printer tab, ColorNo
choose Print transparent background when Color set to No.

29894 Except in exceptional circumstances, it is recommended that you Lock


always have a lock statement in the Lock trigger.

29895 By default, structToXml produces escape sequences for GOLD structToXml


and text formatting characters (bold, italic, underline, and their
combinations). By specifying the Uniface DTD in the Struct, you
can substitute XML entities defined in the DTD.

29898 If the return statement specifies an expression, it can evaluate to return


any data type, not just numeric.

NOTE
To make use of this change in behavior, you must recompile your
Proc code.

September 9, 2016 36
What's New in Uniface 9

Table 30. 9.6.02 (MX01): Documentation Updates for Reported Issues (continued)

Issue Number Description New/Changed Topics

29903 and 30009 The $oprsys Proc function returns M when the operating system $oprsys
is Windows 8, and N for Windows Server 2012.

29933 and 29940 The ActionEachClick property has been added to the Command Command Button
Button properties dialog box, and the labels of the color properties
have been changed.

29910 A new assignment setting is available. Use $NLS_DATE_UNIFACE_PARSER


$NLS_DATE_UNIFACE_PARSER if you want date and time fields to
be parsed by Uniface rules instead of NLS conventions.

29911 If the input of $number is a Numeric or Float with value "", $number
$number will also return "".

29924 The $LICENSE_OPTIONS assignment setting can now specify the $LICENSE_OPTIONS
search order for loading DLM DLLS. The LM_LOAD=uniface option
reverses the default search order and attempts to load from the
Uniface PATH (Uniface\bin) first, before attempting to load from
the DLM installation path.

29964 During compilation, if the offset= string of the read statement is read
detected and there is no order by clause, a warning is issued.

29946 The names of border color properties (introduced in 9.6.01) for BorderColorSelect and
panels and menus have been changed. colorselectborder BorderColorHover
becomes colorborderselect, and backcolorlockedborder
becomes colorborderlocked.

29958 In MSS service stored procedures, the name specified by the Service Stored Procedures
dbowner option is used when a schema name is not explicitly used. on Microsoft SQL Server
Naming Specifications for
Service Store Procedures

29960 When specifying the Base URL for an HTML widget, a directory Base URL
should end with a slash, a document should not.

30002 When converting or exporting data to a zip file using the Data Zip Files
Conversion Utility (/cpy), Export Utility, entitycopy, $ude
("copy"), or $ude ("export"), the zip archive is created in the
Zip64 format. This is required for zip files that are 4GB or larger.

30007 Uniface 9.6 only supports SYB U5.x connectors. The Sybase Sybase
documentation has been updated to remove all references to SYB
4.x connectors

30011 A new ql connector option is available for TCP. It determines the ql


requested queue length, which controls how many concurrent client
connection requests can be handled.

30017 Changes made by $paintedfieldproperties remain in effect $paintedfieldproperties


until the form is reopened.

September 9, 2016 37
What's New in Uniface 9

Table 30. 9.6.02 (MX01): Documentation Updates for Reported Issues (continued)

Issue Number Description New/Changed Topics

30023 The HTML widget can interpret UNiface keyboard commands that HTML Widget
are defined by the UnifaceKeys property UnifaceKeys

30034 When a global Proc contains a call to another global Proc, and Search Order for Global
the library is not specified, Uniface first looks for the called module Objects
in the (calling) global Proc itself, then in the same library as the
calling global Proc.

30042 When $widgetoperation is called with an empty string, error $widgetoperation


-1113 is returned instead of -1122.

30043 The edit Proc statement is ignored in dynamic server pages. edit

30045 If you are creating a ValRep list that only contains images, or if the ValRep List Syntax
representation of some items is an image and others is text, you
need to use a percent sign (%) to replace the text that is expected
after the GOLD !.

30081 If the AsynchGui initialization setting is 2(Flush), it is not possible Auto Close
to activate a popup form that has the Auto Close property set to AsynchGui
True.

30085 The layout of the grid is only stored if all columns have a size. This Grid
ensures that columns that may have been hidden (by
$columnsyntax) are visible when the form is restarted.

30102 It is recommended that you avoid setting a Proc entry as a watch Watches
because this sets the value of $status at each step, which can affect
subsequent code execution..

30109 The documentation about multiple selection in a List Box has been List Box and ExtendedSel
updated.

30134 XML element names in DTD mappings are case-sensitive. Defining DTD Mappings

— Samples for Uniface 9.6 functionality are being made available on Uniface Samples
Uniface.info

— The MSS connector makes use of ODBC to connector to Microsoft Environment


SQL Server, and requires the correct SQL Server Native Client Considerations for
version to be installed on the client machine. Microsoft SQL Server

— The new Command Button properties are not supported in the Grid Widgets and Properties
widget. Supported in Grid Widget

— The documentation about USYSSTAT, the Uniface State Manager USYSSTAT


Component, has been revised.

— The Uniface Setup utility has been documented Setup Utility

September 9, 2016 38
What's New in Uniface 9

What's New in Uniface 9.6.07


Uniface 9.6.07/MX06 features enhancements to the UHTTP component to support RESTful
services.

Table 31. What's New in 9.6.07

Description More Information

You can now integrate Uniface applications and cloud-based data storage services UHTTP
such as Amazon, DropBox, Google Drive, and Microsoft OneDrive that provide Web Services
REST-compliant APIs.
To enable this, the Uniface UHTTP component has been enhanced to support
binary file transport. The UHTTP component is Uniface's HTTP client and has
operations that enable you to integrate communication with web sites (including
REST-compliant services), implement basic browser functionality, and so on.
The following operations have been added:
• LOAD_FILE_CONTENTS—load a file, or part of a file, into the body of a
request prior to calling SEND to upload to a REST API.
• DUMP_FILE_CONTENTS—declare the response of a SEND operation as a full
or partial file download from a REST API.
• GET_INFO—get information about the about the body of the request or
response, either before or after the SEND operation.
• CLOSE_FILE—close the current file that was being used for chunked file
transfer.

Uniface no longer supports the z/OS platform.

Internalized labels of command buttons and check boxes are now documented. Labels

Other Documentation Updates


The documentation has also been updated as a result of fixes for following software and
documentation issues:

30789
30879
30888

For more information, see Uniface 9.6: Documentation Updates for Patches [p. 26].

What's New in Uniface 9.6.06


Uniface 9.6.06 provides a number of enhancements, primarily for Struct and web functionality.
It also consolidates all updates and bug fixes in patches since the 9.6.05 release.

September 9, 2016 39
What's New in Uniface 9

Table 32. What's New in 9.6.06


For more information about the new functionality, see the topics referred to in the More Information column. If the
listed topic is not in this document, it is in the Uniface Library.

Description More Information

It is now possible to use Structs for disconnected record sets. Disconnected Record Sets
componentToStruct features new switches (/notags, /reconnectTags, and componentToStruct and
/firetriggers) that enable you to fine-tune the tags that are generated and to structToComponent
fire pre- and post-processing triggers. reconnect and
structToComponent now recognizes occurrence metadata tags, and the new retrieve/reconnect
/firetriggers switch enables you to fire pre- and post-processing triggers.
The reconnect and retrieve/reconnect commands can now reconnect data
in Structs.

In addition to variables and parameters, non-database fields (Characteristics struct


is set to Not in database) can also be used to reference Structs.

It is now possible to dynamically address entity and occurrence properties in Entity Widgets
Dynamic Server Pages using Proc and JavaScript. Entities and occurrences AttributesOnly
support the same properties as the AttributesOnly widget.
$entityproperties,
In Proc, you can use $entityproperties, $CurEntProperties, $CurEntProperties, and
$occproperties to get and set their widget properties. $occproperties
In the JavaScript API, the uniface.Entity object now has the following uniface.Entity
members:

getProperty
setProperty
getProperties
setProperties
clearProperty
clearProperties

Other Changes

Samples of working Uniface functionality are now available on


uniface.info/samples. They are no longer delivered in the Uniface installation.

What's New in Uniface 9.6.05


Uniface 9.6.05 provides currency enhancements and fixes a number of software and
documentation issues that have not been included in previous patches.

Table 33. What's New in 9.6.05


For more information about the new functionality, see the topics referred to in the More Information column. If the
listed topic is not in this document, it is in the Uniface Library.

Description More Information

Windows GUI Enhancements

September 9, 2016 40
What's New in Uniface 9

Table 33. What's New in 9.6.05 (continued)

Description More Information

The Double-Click property is now supported by the Combo Box widget in both Double-Click
normal use and in the Grid widget.

Database and Currency Enhancements

SQL Lite is now provided with the Uniface e-distribution as the default DBMS SQLIte
for the Uniface Repository. A new database connector for SQLite is available.
SolidDB is no longer provided in the Uniface e-distribution. This has no impact
for existing users who use SolidDB for the Repository.

NOTE
SQLite is not supported for Uniface Flow. If you use SQLite for the Uniface
Repository, it is not possible to use the Process Studio.

The MySQL connector now supports segmented fields. MySQL Data Packing

On Windows, the default location for user data, including the Repository
database, is C:\Users\UserAccount\Documents\Uniface Version.
This location is visible under the My Documents folder in the Documents
Library.

NOTE
This location is accessible to only one user. If you want the Repository to be
available to multiple users, we recommend that you use a database other than
SQLite.

Uniface no longer supports Windows XP.

Other Documentation Updates


The documentation has also been updated as a result of fixes for following software and
documentation issues:

30351
30676

For more information, see Uniface 9.6: Documentation Updates for Patches [p. 26].

What's New in Uniface 9.6.04


Uniface 9.6.04 provides enhancements in the areas of Structs, Windows GUI, web, and currency.
It also fixes a number of software and documentation issues that have not been included in
previous patches.

September 9, 2016 41
What's New in Uniface 9

Table 34. What's New in 9.6.04


For more information about the new functionality, see the topics referred to in the More Information column. If the
listed topic is not in this document, it is in the Uniface Library.

Description More Information

Struct Enhancements

The Struct functionality has been extended to support conversion to and from Structs for JSON Data
JSON streams. Two new Proc statements have been added—structToJson structToJson
and jsonToStruct
jsonToStruct

The filedump and lfiledump have been enhanced with a /nobom qualifier so filedump and lfiledump
that Unicode files can be written without a Unicode byte order mark (BOM)

Windows GUI Enhancements

The Edit Box widget now supports incremental searching by means of an onEdit trigger onEdit
extended trigger that can be used to respond to user input as the user enters data. OnEdit and EditDelay properties

NOTE
There is no placeholder definition placed in the Extended Triggers trigger. You
must manually define and implement this trigger.

The trigger is enabled only if the OnEdit widget property is set to True. The
EditDelay property can be used to apply a delay of 200 milliseconds after the
user stops entering data. This reduces the frequency of firing the onEdit trigger
to improve performance when retrieving data.

The TabEx widget now supports a customizable tab button that executes an TabEx
extended trigger, onTabButton, when clicked. You can use this to implement a onTabButton
Close button (for example) on each tab.
The following properties are added:

TabButton—determines whether a tab button is added to the tabs


TabButtonImg—specifies an image for the tab button
TabButtonImgHover—specifies an image when the mouse cursor hovers
over the tab button

The behavior of the Auto Close property has been changed to enable a cascading Popup Window
chain of popup forms, in which one popup form can activate another. This can Auto Close
be used to create a type of context menu.
In this case, when Auto Close is set to True, the parent does not close when the
child popup form gets focus. However when a popup form that is higher in the
chain gets focus, all popup windows below the form with focus are closed.

The BackColorSelect, ForeColorSelect, and BackcolorFill properties Active Background Color


are now supported by the Drop-Down List, List Box, and Color List widgets. Active Foreground Color
Gradient Fill Style

Web Enhancements

September 9, 2016 42
What's New in Uniface 9

Table 34. What's New in 9.6.04 (continued)

Description More Information

The JavaScript API has been enhanced to simplify code when addressing the uniface
main component instance. The uniface object now supports the functions
getEntity, getEntities, and activate.

Database and Currency Enhancements

The sql Proc statement has been enhanced with an extra switch, /data, which sql
returns data in $result as a nested Uniface list. This makes it easier to
post-process the data using standard Uniface list processing functions. An
optional /fieldname subswitch, enables you to include a header of field names
in the returned data.
These switches are available only for solidDB, Oracle, Microsoft SQL Server,
MySQL, and DB2.

Uniface reintroduces support for mobile application development. Theme: Mobile Applications

The MSS U5.0 connector for Microsoft SQL Server is now available on Linux. Environment Considerations for
It provides the same server-side functionality as on Windows. However, it cannot Microsoft SQL Server
support SQL Native Client features, such as snapshot Isolation and multiple
active result sets (MARS), because the Microsoft ODBC driver on Linux does
not support SQL Server Native Client.

The U4.0 DB2 connector is now available for Windows and Unix. This connector Data Retrieval on DB2
supports the offset option on the read statement, but to make used of it on
Windows and Unix, you need to configure the DB2 server to support the LIMIT
and OFFSET SQL keywords.

Other Documentation Updates


The documentation has also been updated as a result of fixes for following software and
documentation issues:

30488

For more information, see Uniface 9.6: Documentation Updates for Patches [p. 26].

What's New in Uniface 9.6.03


Uniface 9.6.03 provides enhancements in the areas of GUI, static server pages, and currency.
It also fixes a number of software and documentation issues that have not been included in
previous patches.

Table 35. What's New in 9.6.03


For more information about the new functionality, see the topics referred to in the More Information column. If the
listed topic is not in this document, it is in the Uniface Library.

Description More Information

Web Enhancements

September 9, 2016 43
What's New in Uniface 9

Table 35. What's New in 9.6.03 (continued)

Description More Information

Static server pages have been enhanced so that labels can be bound to fields, Customizing the XHTML
making it possible to select a field by selecting its label. For RadioButtons, labels Generated for USPs
can be associated with the values.
You can configure the behavior of the webgen statement, globally or for
individual fields, so that it:
• Generates a label element, instead of producing plain text. The label can
have a for attribute that references the id of the associated field.
• Generates a unique id for each field, which can be used to bind the field
to labels, or address the field in JavaScript.

New placeholder XHTML attributes x-id and x-for are available for USP <x-subst type="FieldType">
widgets and labels

New assignment settings have been introduced to support the id and for $WEBGEN_X_ID_DEFAULT
attributes in static server pages. $WEBGEN_X_ID_INSNAME
$WEBGEN_X_FOR_DEFAULT

The UHTTP component for handling HTTP requests has been enhanced to UHTTP
support Unicode, and other character sets that Uniface supports, such as Shift_JIS.

The new DB2 U4.0 connector provides native data pagination by means of the Data Retrieval on DB2
offset option of the read statement.

GUI Enhancements

Uniface 9.6.03 makes it much easier to respond to changes in the layout resulting Attach to Window Border
from form windows being resized and split bars being moved. The Attach to
Window Border (Attach) property has been significantly enhanced so that
widgets can be attached to split bars, if they are present, instead of the window
border. New values enable you to choose whether to resize attached widgets, or
maintain the same size and simply move the widget with the border or split bar.

The Radio Group widget now supports the Attach and AttachMargin properties. Radio Group

A new extended trigger is available on the Form Container and Tabex widgets. Resized
The Resized trigger allows you to control the response of the widget when the
widget is resized. For example, you could display a different component when
the size is larger or smaller than a specified size.

Currency Enhancements

A new version of the DB2 database connector is available. The DB2 U4.0 DB2
connector is supported on all platforms.

A new version of the TXT connector is available. The TXT U2.0 connector TXT
supports Unicode. The uni connector option defines the default Unicode Unicode Support in TXT
encoding used by the TXT connector, and the /uni assignment switch defines
uni and /uni
the Unicode encoding to use for a specific entity.

September 9, 2016 44
What's New in Uniface 9

Other Documentation Updates


The documentation has also been updated as a result of fixes for following software and
documentation issues:

30103
30227
30291
30352

For more information, see Uniface 9.6: Documentation Updates for Patches [p. 26].

What's New in Uniface 9.6.02


Uniface 9.6.02 provides enhancements in the areas of GUI, web applications, Structs, and
currency. It also fixes a number of software and documentation issues that have not been included
in previous patches.
For more information about the new functionality, see the topics referred to in the More
Information column. If the listed topic is not in this document, it is in the Uniface Library.

Table 36. GUI Enhancements

Enhancement More Information

You can now hide the message line in an application using the MessageLine property MessageLine
of the startup shell. This can be set in usys.ini or in Proc.

You can set the padding around the label displayed in a command button or TabEx tab padding
using the new padding property.

You can specify the size of the margin around a widget when it is attached to one or AttachMargin
more sides of window, using the new AttachMargin property.

The Check Box widget now supports the Foreground Color, Transparency, and Check Box
InheritColors properties. These are applied to the associated label of the check box,
not to the box itself.
As a consequence, the appearance of a check box for which colors are defined may
differ between 9.6.01 and 9.6.02:
• If a color is defined for a checkbox (using Background Color or Color), the
color is only applied to the associated label. If there is no associated label, the
color is no longer visible as a border around the checkbox.
• If an index color is specified for the check box, the associated label now accurately
shows both the foreground and background color. Previously, only the background
color was applied.

The Radio Group widget now supports the Transparency and InheritColors Radio Group
properties.

The Active Tab Line Color property is now available for the TabEx widget. Active Tab Line Color
As a result, the behavior of the Tab Colors property has changed slightly. The active Tab Colors
tab is no longer highlighted by a black tab line. You must now explicitly set the Active
Tab Line Color to achieve this effect.

September 9, 2016 45
What's New in Uniface 9

Table 36. GUI Enhancements (continued)

Enhancement More Information

A primary resizable form is now displayed without a horizontal scroll bar. FormPositionFromInside
This is a change in behavior. If the old behavior is desired, set the initialization setting
FormPositionFromInside to on.

Table 37. Struct Enhancements

Description More Information

Struct parameters can now be passed to public operations. The default behavior is to Struct Parameters
pass Struct parameters by reference in partner operations and entries, and to pass them params
by value in public operations. It is possible to override this behavior when declaring
the parameters using the byRef or byVal qualifier.

A Struct variable (or any Struct expression) whose value is NULL, is now interpreted $collSize
as being a collection of zero references to Structs. Previously it was interpreted as a Null Values
scalar value. As a result, the $collsize Struct function can now return a value of 0.
This change introduces a change of behavior when assigning Structs. For example,
Struct A has 2 members name x, and Struct B has zero members named y. The
following assignment will result in Struct A having zero members named x.
vStructA->x = vStructB->y
Effectively, such an assignment removes all of the members named x.

The Struct documentation has been changed to more clearly show the relationship Structs
between Structs and struct variables. Struct Variables

Table 38. Other Enhancements

Description More Information

New documentation has been provided on the configuration and use of asynchronous Inter-Component Messaging
messages for inter-component communication (also known as postmessages).

When using $widgetoperation to call a JavaScript function in the HTML widget $widgetoperation
with parameters, the data is mapped and translated to a JavaScript data type.

In the JavaScript API, the uniface.DSPInstance object has been renamed to uniface.Instance
uniface.Instance, and a number of functions have also been renamed. uniface.getInstance
The old names are deprecated, although for compatibility, they still work. Object.getInstance

Other Documentation Updates


The documentation has also been updated as a result of fixes for following software and
documentation issues:

29680
29898
30085
30102

September 9, 2016 46
What's New in Uniface 9

30109
30134

For more information, see Uniface 9.6: Documentation Updates for Patches [p. 26].

What's New in Uniface 9.6.01


Uniface 9.6 adds significant new functionality in the areas of GUI support, web applications,
complex parameter support, and database and operating system support.
New widgets and properties make it possible to create flexible and dynamic user interfaces for
desktop applications. Database-based data paging and dynamic data scoping make it easier to
build responsive web applications. New web service functionality makes it easier to handle
complex parameters.
As of Uniface 9.6, Uniface View is no longer included in the Uniface installation and Windows
CE deployment files are not included.

GUI Enhancements
New widgets have been added for form components, and existing widgets have been enhanced.

Table 39. GUI Enhancements in Uniface 9.6.01


For more information about the new functionality, see the topics referred to in the More Information column. If the
listed topic is not in this document, it is in the Uniface Library.

Description More Information

It is now possible to display popup forms. This makes it possible to create dynamic, Popup Forms
modern user interface features, such as ribbons bars, enhanced tooltips, and web-like Popup Window
menus in client-server applications.

The new Form Container widget makes it possible to nest forms within forms. You can: Form Container
• Dynamically display different forms within a parent form.
• Display multiple instances of the same form within a parent form.
• Embed tabs within a parent form.
• Display the same entity more than once in a form without the use of component
subtypes.

The new HTML widget enables you to embed HTML 5 into a form component. You can: HTML Widget
• Show rich text within an application, for example, help information.
• Embed wed pages into a Uniface form, and have the Uniface application interact
with them.
• Execute Javascript functions inside an HTML widget, or call Uniface functions from
JavaScript
• Load HTML or a URL into the widget, without actually assigning or changing the
value of the field.

The new TabEx widget provides a wealth of extra properties for controlling the look and TabEx
feel of the widget and its tabs.

September 9, 2016 47
What's New in Uniface 9

Table 39. GUI Enhancements in Uniface 9.6.01 (continued)

Description More Information

Although the basic tab widget (utab) is still available, you can easily switch your
application to the new TabEx widget by assigning the new physical widget, utabex, to
the existing logical widget:
[widgets]
; TabEx=utabex ; new Tab widget
; Tab=utab ; old tab widget
Tab=utabex ; assign new implementation to existing name

The default appearance of the new tab widget follows Windows, so this switch does not
affect the appearance and behavior of the tabs until you start customizing it.

The Command Button widget has been substantially enhanced. If you change the Command Button
Representation property to Uniface, you can:
• Change the text colors of the button depending on the button state. (A button can be
active, the field can have focus, or the mouse cursor can hover over the button.)
• Replace the button representation with an image.
• Use different images depending on the button state.

Menu functionality has been enhanced to support colors and images in menus. By defining Menus and Toolbars
menu properties in the initialization file, it is possible to influence the appearance of the Menu Properties
foreground, background, and current selection, and to display icons in front of menu text.

Panel functionality has also been enhanced, enabling you to define your own color scheme Panels
for toolbars and panels. Like menus, you can set properties in the initialization file to
define the background colors to use for panels, and the colors to apply to buttons when
they have focus or are locked.

To add an image to the text in menu items, command buttons, and tab labels, and the Image Size
ValRep lists of drop-down list and listbox widgets, you can define a list substring with Label Image Alignment
the following format:
{@Image | ^Glyph!} Text
It is now possible to configure the size of this icon using the Label Image Size or Item
Image Size property. For icons in tabs and command buttons, it is also possible to
configure the alignment , in relation to the text using Label Image Alignment property.

New window types are introduced to support the popup form, form container widget, and Window Type
the tab widgets. The Window Type form property now allows the values Contained
Form (which replaces Tab Page) or Popup Window.

Uniface now supports Alpha channels for PNG files, with the result that the PNG Image Filters
transparency property is also supported.

Labels and edit boxes can inherit both foreground and background colors from their parent InheritColors
entity or form.

Web Enhancements
Enhancements have been made to improve client-side code execution, data paging, and web
server security for Uniface web applications. Support for complex parameters for web services
has also been improved.

September 9, 2016 48
What's New in Uniface 9

Table 40. Web and Web Services Enhancements in Uniface 9.6.01


For more information about the new functionality, see the topics referred to in the More Information column. If the
listed topic is not in this document, it is in the Uniface Library.

Description More Information

Dynamic server pages now support dynamic scope, which makes it possible to determine Dynamic Scope
the scope of operations and triggers at runtime. DSP instances that are dynamically created
can be included in the scope of an operation or a trigger.

It is now possible to use the native pagination functionality provided by some databases, Data Paging in Web
instead of having to implement your own data paging mechanism to replace stepped Applications
hitlists. read
The read statement has a new offset option that defines the number of records to be
skipped before data reading starts. In combination with the maxhits and orderby options,
it can be used to implement data paging in web applications. Currently, this is supported
for Solid, Microsoft SQL Server, MySQL, and Oracle.

It is now possible to dynamically control the appearance of occurrences in the DSP layout uniface.Occurrence
using $occproperties or the JavaScript API.
The JavaScript API has been extended with property manipulation functions on the
uniface.Occurrence object:

GetProperty and GetProperties


SetProperty and SetProperties
ClearProperty and ClearProperties
discard

A CSS class selector can now be dynamically applied to, or removed from, a bound class:ClassName
HTML element in the layout. The class:ClassName property enables you to change
the styling of HTML elements that are bound to Uniface objects, without replacing the
complete value of the class attribute. You can add or remove a class in the list, without
affecting other classes. This is in contrast to the html:class property, which replaces
the entire list of classes.

By default, Tomcat is now installed with the Security Manager enabled. This ensures that Configuring the Tomcat
it can be used for deploying Uniface web applications in a production environment. Security Manager

The WSDL import functionality for the U2.0 SOAP connector has been enhanced to /gen
provide extra support for complex web service parameters. Using the Example XML
When a parameter contains complex data, Uniface defines that parameter as a string data Generated by WSDL
type. The developer must provide the complex data as a well-formed XML string. To Import
help in this task, the new /gen switch generates items that can help with creating the
complex structures that are frequently used as web service parameters. It generates an
XML example that documents what is required for each complex parameter, and generates
model entities, where possible.

September 9, 2016 49
What's New in Uniface 9

Database Connector and Other Enhancements

Table 41. Other Changes in Uniface 9.6.01


For more information about the new functionality, see the topics referred to in the More Information column. If the
listed topic is not in this document, it is in the Uniface Library.

Description More Information

The following new connector versions support the read offset option (for data paging): read
Data Retrieval Support
SOL U4.0 for Solid 6.5
MSS U5.0 for Microsoft SQL Server 2012
MQL U3.0 for MySQL 5.5
ORA U7.0 for Oracle 11gr2

The MSS U5.0 connector supports the MAX specifier for varchar, nvarchar and Microsoft SQL Server
varbinary storage formats. Data Packing

New SYB U5.x database connectors support the same select mechanism for hitlist Sybase Cursors and
management, which provides an alternative to the use of Sybase cursors. Hitlist Management
The SYB U5.x connectors also support Unicode. Support for Unicode in
the SYB Connector

Uniface can take advantage of extra memory on Windows systems that have 1 GB or Increasing Virtual
more of physical memory available. Memory on Windows

Uniface 9.6 provides native Windows 64-bit client support. However, the following
functionality is not supported in the 64-bit installation.

HTML widget
Uniface Flow
SOP U1.0 SOAP connector

If you need any of these features, you should install the 32-bit version.

Documentation Updates for Fixed Issues


For documentation updates on Uniface 9.6.01, see Uniface 9.6: Documentation Updates for
Patches [p. 26].
The Uniface Library for 9.6.01 includes documentation updates resulting from fixes of software
and documentation issues, including all those fixed in patches on Uniface 9.5 through to patch
E111. For more information, see Uniface 9.5: Documentation Updates for Patches [p. 55].

What's New in Uniface 9.5


Uniface 9.5 enhancements are concentrated in three main areas—Rich Internet Applications
(RIAs), web services support, and customer wishes for improvements in the Grid widget and
iterative list handling.
For more information about the new functionality, see the topics referred to in the More
Information column. If the listed topic is not in this document, it is in the Uniface Library.

September 9, 2016 50
What's New in Uniface 9

Table 42. Changes in Uniface 9.5

Change Description More Information

RIA enhancements Uniface RIA functionality has been enhanced to enable code to Uniface 9.5: Uniface RIA
be executed in the client browser as well as on the server. Support Enhancements [p. 53]
for client-side processing includes new Proc instructions, a
JavaScript API that enables you to implement triggers and
operations as JavaScript, and changes in runtime support and
configuration.
In addition, changes have been made to session management to
improve security, and we have provided guidelines about how to
protect web applications from a variety of security threats.
Functionality to support incremental searching has also been
added.

New struct data type Uniface introduces a flexible new struct data type that holds Structs
complex data that is typically represented as a tree-like structure. Transforming Complex
The struct data type is intended for data manipulation rather Data Using Structs
than storing data, so it is only available for variables and
parameters, not for fields.
New operators and Proc instructions enable you to create complex
data structures, load data from XML or Uniface component
structures (nested entities), manipulate it, and then transform it
back to an external format (XML, component structure).
You can use this new functionality, for example, to transfer data
from XML to struct, manipulate it to match the entity structure
of a component, and then transfer the struct data to the entities.
This is particularly useful for manipulating data sent to and
received from web services.

Improved SOAP Uniface now supports callback operations that can be used to SOAP Callback
support provide additional processing before and after handling a call-in Operations
request for a Uniface web service or before and after calling out
to a web service with the SOP U2.0 connector.

Error handling has also been enhanced. Uniface generates SOAP Error Handling
complete SOAP faults when an error occurs during call-in and
returns SOAP fault data in $procerrorcontext when errors
occur during call-out with the SOP U2.0 connector.

GUI enhancements: New properties, extended triggers, and Proc functions have been
Grid added to provide more control over the display of information in
the grid widget (and multi-occurrence lists).

Dynamically change the width of a column in the grid widget by ColumnWidth


setting the new columnwidth entity property. This enables you
to dynamically adjust the column width to display more data. (Of
course, the user can also adjust the column width, thereby
overriding the programmed width.)

September 9, 2016 51
What's New in Uniface 9

Table 42. Changes in Uniface 9.5 (continued)

Change Description More Information

Proportionally resize columns automatically when the size of the Column_Resized


grid or width of columns are changed. Use the new extended Viewport_Resized
triggers Column_Resized and Viewport_Resized.

Dynamically change field syntax attributes for multiple $columnsyntax


occurrences of a field using the $columnsyntax Proc function.

Display the contents of an edit box or picture widget in a tooltip Hover View
using the Hover View widget property.

GUI enhancements: You can now dynamically set or get the entity widget properties Representation
Appearance of inner for a specific inner entity occurrence. Properties
entities With $occproperties, you could control the appearance of a $CurEntProperties
specific occurrence in web pages, but it also affected the
appearance of inner entities. Now, it is possible to control the
appearance of a specific inner entity as well using the new
$CurEntProperties function.

GUI enhancements: Panels and toolbars can now be styled to match the appearance ButtonStyle
Appearance of panels of toolbars in several versions of Windows Office or other
and toolbars pre-defined style.
To change the style, in the Setup utility, choose the Toolbar tab,
and then select the style in Toolbar and panel button style. This
sets the ButtonStyle setting in usys.ini.

Iterative list handling New Proc functions are available for iterative processing of lists for, forentity and
and entities. forlist

Component APIs A new operation GetSMTPResponse has been added to GetSMTPResponse


UPOPMAIL to retrieve SMTP reply codes and messages. This
provides improved information for error handling.

A new operation CDATA has been added to UXMLWRITER to CDATA


insert unparsed data marked as <![CDATA[....]]>.

The UHTTP component operations READ_CONTENT, SEND, and UHTTP


WRITE_CONTENT now support a maximum of 10 MB for their
Content parameter

SolidDB You can upgrade existing Solid databases to Solid 6.5 using the
-x autoconvert parameter

Unicode support in The Uniface DB2 connector now enables Unicode support (with Support for Unicode in
DB2 some limitations) DB2 Connector

Support for Service Service stored procedures are now supported for Microsoft SQL Service Stored
Stored Procedures in Server Procedures on Microsoft
Microsoft SQL Server SQL Server

UXMLREADER and XML namespaces are supported, either by using the SAX Callback Operations
XML namespace STARTPREFIXMAPPING and ENDPREFIXMAPPING operations in
support

September 9, 2016 52
What's New in Uniface 9

Table 42. Changes in Uniface 9.5 (continued)

Change Description More Information

your SAX event handler, or by implementing the STARTELEMENT


or ENDELEMENT operations with namepace-specific parameters.

JRE Uniface uses the Java Runtime Environment (JRE) for selected Java Runtime
functionality, including running Java servlets for Uniface web Environment
applications, parsing XML, and for Java call-in.
By default, Uniface has always installed its own JRE but it is now
possible to configure Uniface to use an existing Java installation.

New Tutorials New RIA Tutorials have been added and existing tutorials Uniface Tutorials
updated.

New Test with Debug In the Component Editor, you can click a button to test a Starting the Uniface
menu option and component in debug mode, instead of inserting a debug statement Debugger
toolbar button or starting the Debugger separately.

Uniface Query Tool The Uniface Query Tool is no longer delivered with Uniface.

Uniface documentation The Uniface Library now features the following enhancements:
enhancements • You can provide direct feedback about individual topics in
the Uniface Library—just click the link at the bottom of the
page. This launches your email client with the email address
and subject line already filled in, so it's easy to send a
suggestion or comment that can help us improve the
documentation.
• Calling online help now opens a single instance of the
Uniface Library, instead of a new instance each time you
press F1. This instance is automatically closed when Uniface
is closed.

TIP
To see the complete context of a topic returned by search,
double-click the topic, then click the Contents tab.

Uniface 9.5: Uniface RIA Enhancements


Uniface 9.5 makes it possible to make Uniface Rich Internet Applications (RIAs) even more
responsive and dynamic by enabling code to be executed in the browser, instead of only on the
server.

Table 43. Changes in Uniface 9.5

New Feature Impact More Information

Support for client-side code Enabling code to be executed on the client makes it possible Executing Logic in the
execution to reduce the number of server-client communication rounds, Browser
especially when the browser already has required information.
Support for client-side processing includes new Proc

September 9, 2016 53
What's New in Uniface 9

Table 43. Changes in Uniface 9.5 (continued)

New Feature Impact More Information

instructions, the ability to implement triggers and operations


as JavaScript, and changes in runtime support and
configuration.

JavaScript APIs for The JavaScript APIs are object-oriented programming APIs: JavaScript
client-side processing in interfaces that make it possible to execute triggers and
DSPs operations on the client of a RIA application, without
round-trip processing to the server.

Non-Protected DSP Widgets To make it possible to set the value of display-only fields Widgets for Dynamic
using the Uniface JavaScript API, the following DSP widgets Server Pages
are now available in a non-protected version:
• CommandButton
• FlatButton
• PictureButton
• Picture
• StaticText
• RawHTML

The normal version of these widgets cannot be edited in the


browser—the field syntax is set to NED (non-editable).
However, the non-protected versions allow changes by the
Uniface JavaScript API.

Support for incremental Modern Web applications often feature the ability to search OnEdit trigger
searching incrementally, meaning the returned list of items is refined
as you type in more characters. Uniface introduces a new
OnEdit trigger for the EditBox widget in DSPs, which can
be used to implement the client-side of the functionality. A
complete working sample, including both DSPs and a
database search service, is provided on uniface.info.

Improved session Uniface now provides a session management API for the State and Session
management and security Web Request Dispatcher (WRD). Management
The API enables you to invalidate the current session and APIs: Session
request a new session at critical points in the application, Management
such as after authentication or before committing data. You $webinfo:
can call the session API commands using the SESSIONCOMMANDS
$webinfo("SESSIONCOMMANDS") channel.
$webinfo:
You can also use the API to set session attributes which can REQUESTCONTEXT
be shared by several components that access the session (such
as an authentication service and DSP). You can specify
session attributes using $webinfo("REQUESTCONTEXT")

NOTE
The Session Management API is new in Uniface 9.5.01. It
was not available in the Uniface 9.5 Controlled Release

September 9, 2016 54
What's New in Uniface 9

Table 43. Changes in Uniface 9.5 (continued)

New Feature Impact More Information

Web security guidelines Web applications present developers with more security Web Security Guidelines
challenges than a desktop or client/server application.
Guidelines have been added to the documentation about the
threats that web applications need to defend against, and the
ways in which you can design and implement your Uniface
web application to do this.

New Tutorials New RIA Tutorials have been added and existing tutorials Tutorials
updated.

Uniface 9.5: Documentation Updates for Patches


The Uniface Library for 9.6.01 includes documentation updates resulting from fixes of software
and documentation issues, including those fixed in patches on Uniface 9.5 through to patch
E111.

IMPORTANT
Issues may be fixed on both Uniface 9.5 and 9.6 codelines, but after E111, they are only listed
for Uniface 9.6 patches.For more information, see Uniface 9.6: Documentation Updates for
Patches [p. 26].

For more information about the new functionality, see the topics referred to in the More
Information column. If the listed topic is not in this document, it is in the Uniface Library.

Table 44. Updates for E111

Issue/Enhancement Description New/Changed Topics


Number

29769 When retrieving the field syntax, only syntax attributes that are $fieldsyntax
dynamic and that have previously been set with $fieldsyntax $fieldinfo
are retrieved. If syntax attributes have been set declaratively (in
the model or component), an empty string is returned. You can
retrieve declaratively set field syntax with
$fieldinfo("SYNTAX").

29772 The DSP widget property Syntax Check on Browser Syntax Check on Browser
(ClientSyntaxCheck) does not disable the field syntax check;
it just makes it possible for the browser to submit a request,
even if a field holds syntactically incorrect data.

29801 By default, objects with Color= No (use system colors) are ColorNoTransparency
printed with a non-transparent white background. This is usually
undesirable when the underlying form has a color or image. To
ensure that the background of objects is transparent, set the
ColorNoTransparency initialization setting to On.

September 9, 2016 55
What's New in Uniface 9

Table 44. Updates for E111 (continued)

Issue/Enhancement Description New/Changed Topics


Number

29806 The ButtonStyle initialization setting has 4 additional styles, ButtonStyle


which are now documented.

29816 It is now possible to set the SOAP connector option wsdl for SOAP Connector Options
the SOP U1.0 connector. This specifies the location of the
WSDL file (as a URL or a local path and file name), and
overrides the location recorded in the SOAP signature that was
created by importing the WSDL.

Table 45. Updates for E110

Issue/Enhancement Description New/Changed Topics


Number

29703 The default output format for /lse is XML, so the xml: prefix /lse
is optional.

29746 On Microsoft Windows, when the Uniface Router service is Installing the Uniface
being started, the registry key and the value name must exist Router as a Service
otherwise an error message will be written to the log file and
the start up will be aborted.

29761 Sybase connector versions SYB U5.0 and U5.1 have been added. Sybase Cursors and Hitlist
They support the same select mechanism for hitlist management, Management
which provides an alternative to the use of Sybase cursors.

29782 Proc functions $curentproperties, $entityproperties, $curentproperties


and $fieldproperties are used to set properties at runtime. $entityproperties
For each property, Uniface looks for it in the property string
$fieldproperties
returned by by the function. If the property is not there, it is
sought in the declarative properties, and finally in the .ini
properties.

29822 It is possible to specify font styles, such as bold and italic, in [screen] and [printer]
the logical font definitions in the usys.ini file.

Table 46. Updates for E109

Issue/Enhancement Description New/Changed Topics


Number

29704 The Source string can be 2048 MB, but using very long Source $replace
strings (larger than 50,000 bytes) is not recommended because
this can degrade performance.

29716 When sorting data, the default sort order is determined by the Sorting Based on Locale
data type. For string data (including lists), the values of
$nlslocale and $nlssortorder can also affect the sort order.

September 9, 2016 56
What's New in Uniface 9

Table 46. Updates for E109 (continued)

Issue/Enhancement Description New/Changed Topics


Number

29728 For the STARTELEMENT of the UXMLWRITER, the maximum STARTELEMENT


length of the ElementName parameter is 255 bytes.

29738 When testing conditions, do not use strings as if they were Conditions
Booleans (relying on implicit type conversion). Instead, always
explicitly state what you are testing for.

29760 Sorting is only done on the first 8K of an item or field data, sort, sort/list,
and on a maximum of 32K of accumulated field data per $sortlist, $sortlistid
occurrence.

Table 47. Updates for E108

Issue/Enhancement Description New/Changed Topics


Number

29143 Added documentation about handling complex web services Importing WSDL
parameters. Definitions for Web Services
Complex Nested Parameters

29544 If an entity is used as a parameter, only "In Database" fields are Characteristics
available for use in the entity parameter. entity

29583 Focus trigger should not be used to change focus. For example, Form Gets Focus
you should not use Proc instructions such as setformfocus or Form Loses Focus
$prompt, popup a dialog box, or activate another component
instance in this trigger.

29682 The Datepicker DSP widget is not suitable for some Uniface Datepicker
date and time formats.

29719 A new version of the MSS connector is available. MSS U5.0 Microsoft SQL Server Data
supports the MAX specifier for varchar, nvarchar and Packing
varbinary storage formats.

29721 Some code corrections and enhancements have been made in Struct Code Examples
Struct examples. Example: Struct
Conversions
Example: Structs as
Parameters

29726 Uniface now maps the central directory (table of contents) of $MEMORY
ZIP files (including DOL and URR files) into memory. This
improves the performance when applications access the contents
of these files.
You can use assignment setting $MEMORY ZIP=OFF to disable
this functionality, or $MEMORY ZIP=ALL to read the complete
file into memory.
Memory mapping has limitations on OpenVMS and iSeries.

September 9, 2016 57
What's New in Uniface 9

Table 47. Updates for E108 (continued)

Issue/Enhancement Description New/Changed Topics


Number

— Code examples have been corrected or updated in a number of forentity


topics. webactivate
$rscan

Table 48. Updates for E107

Issue/Enhancement Description New/Changed Topics


Number

29569 $prompt is ignored if it is used in any component except a form $prompt

29583 Triggers that are executed when the focus changes should not Form Gets Focus
themselves change the focus, for example, by activating a Form Loses Focus
message dialog or other form.

29590 A new property is available that enables labels to inherit the InheritColors
background and foreground colors of their parent.

29692 The documentation on Unicode support for the MySQL Support for Unicode in the
connector has been expanded. MQL Connector

29712 The Sybase connector now supports Unicode. Support for Unicode in the
SYB Connector

— $CurEntProperties works only on inner entities. $CurEntProperties

— forentity blocks should not include statements that increment forentity


$curocc, such as remocc or discard statements.

Table 49. Updates for E106

Issue/Enhancement Description New/Changed Topics


Number

29592 In dynamic server pages, it is now possible to create occurrences Read-Only Fields in
in the browser for entities that have Control or Boilerplate fields. Dynamic Server Pages

29625 The Force Fit property is dynamic and can be set in Proc. Force Fit

29664 The UPOPMAIL component API supports additional character GetMail and GetMailX
sets. If a mail is received that uses a non-supported character
set, the error code -17 is returned and the subject and the message
are returned without converting to UTF-8.

September 9, 2016 58
What's New in Uniface 9

Table 50. Updates for E105

Issue/Enhancement Description New/Changed Topics


Number

29606 Uniface 9 supports compound operators, which combine an Operators


assignment operator (=) with an arithmetic operator. They
provide a shortened notation when performing an arithmetic
calculation on the value of a field or variable and assigning the
result to the same field or variable. For example: A += 1 is equal
to A = A + 1.

29664 UPOPMAIL now supports additional Windows character sets GetMail and GetMailX
1250, 1251, 1252, and 1253. When an unsupported character
set is encountered, error -17 is returned in $status, but the
subject line and message body are no longer replaced with an
error message.

29666 U2 transaction connector option for Sybase connector forces U2 transaction


the U4.x connector to always create isolated transactions. This
compatibility switch is applicable only if the database is not
configured for chained transactions.

Table 51. Updates for E104

Issue/Enhancement Description New/Changed Topics


Number

29520 Additional keywords are supported when defining the spacebar, [accelerators]
Insert, Delete, Page Up and Page Down keys as accelerators

29604 Field-level functions that navigate or insert data (such as macro Structure Editor
^NEXT_WORD, ^INS_CHAR, and so on) work only in Functions
Unifields, not in edit box widgets.

29613 structToXml now supports schemas. structToXml/schema structToXml /schema


takes an input Struct and an XML schema and generates an
XML document using the names and values in the Struct that
conforms to the XML schema.

Table 52. Updates for E103

Issue/Enhancement Description New/Changed Topics


Number

29486 New maxlockwait connector option for Sybase maxlockwait

29519 It is now possible to specify a foreground color as well as a Foreground Color


background color for entities. Define Entity Window
Properties
Color

September 9, 2016 59
What's New in Uniface 9

Table 52. Updates for E103 (continued)

Issue/Enhancement Description New/Changed Topics


Number

29521 A new LDAP connector, LDP 2.0 OpenLDAP, is available for LDAP Connector
use on Linux. For both the LDP 1.0 and LDP 2.0, new connector nulldefault
options are provided.
identifier case

29548 New property for character mode Check Box widget. Alignment

29578 $encode and $decode now support algorithms for asymmetric $encode
key cryptography. $decode
Cryptography Support

29587 The WRD has been updated to improve web application Update Web Applications for
security. Web Security Enhancements

IMPORTANT
The changes made to the WRD can affect existing web
applications and may require you to make changes in existing
web applications.

The default behavior for cookies has changed. If the secure Cookies Containing
attribute of a cookie is not specified, it defaults to: Sensitive Data
• T if the request is sent via an HTTPS secured connection. $webinfo: Cookie Channels

• F if the request is sent by an HTTP connection.

As a result, cookies can no longer be shared between HTTP


and HTTPS requests and you must modify your application to
ensure that this does not occur.

By default, the httponly property for Uniface application $webinfo: Cookie Channels
cookies is set to true when the WRD runs in servlet engines
that support the Servlet API 3.0 (such as Tomcat 7.0).
As a result, it is no longer possible to share a cookie between
JavaScript on the browser and the Uniface web application.
You should modify your application to ensure that this does
not occur.

NOTE
This property is ignored on Tomcat versions prior to 7.0 (such
as those delivered with Uniface 9.3, 9.4, and 9.5).

The WRD now requires JRE 1.5 or higher. If your using JRE Web Request Dispatcher
1.4 or earlier, you need to upgrade to JRE 1.5 or higher (WRD)
(preferably 1.6).

The default value for the WRD setting TESTABLE has changed TESTABLE
to FALSE. Configuring a Web Server
for Uniface Applications

September 9, 2016 60
What's New in Uniface 9

Table 52. Updates for E103 (continued)

Issue/Enhancement Description New/Changed Topics


Number

In addition, the WRD_Version page, which is displayed when Configuring the Uniface
TESTABLE=TRUE, now displays only the version information Web Application Server
and not the full request information.

The WRD now supports the SERVER_PORT_SECURE server $webinfo


variable, which indicates whether access is via HTTP or (WEBSERVERCONTEXT)
HTTPS.
You can use this information to determine the values and
attributes to set for a cookie, or to otherwise affect the
application behavior.

— In addition to zip files, flush and lflush can be used to flush and lflush
explicitly close XML files that are accessed using $ude $ude ("copy") and $ude
("copy") or $ude ("copy") with the keepopen option. ("copy")

Table 53. Updates for E102

Issue/Enhancement Description New/Changed Topics


Number

29153 $datim returns an empty string ("") if the source cannot be $datim
converted to a Date value (for example, $datim("abc")) .

29304 If an accelerator is incorrectly defined in the .ini file, an error [accelerators]


is displayed in the Transcript window.

29322 After migrating character mode applications to Uniface 9, Transparency


transparent component texts from Uniface 8 are no longer
transparent. In character mode (CHUI), the Transparency
property of a label has no effect. To have the label appear
transparent, set the background color of the label to the
background color of the parent widget or entity.

29492 A new assignment setting has been added, which determines $NO_BOM_UTF8
whether Uniface writes a Unicode Byte-Order-Mark (BOM)
when the UTF-8 format is specified in $SYS_CHARSET or with
filedump or lfiledump.

29496 A new connector option is available for the SOAP call-out SOAP Connector Options
connector. wsdl enables you to configure the location of the Configuring the SOAP
WSDL file in the assignment file instead of in the service Connector
signature.

— xmlToStruct is not supported on VMS platforms. On iSeries, xmlToStruct


there is no schema support, so /schema and SchemaList cannot
be used.

September 9, 2016 61
What's New in Uniface 9

Table 54. Updates for E101

Issue/Enhancement Description New/Changed Topics


Number

29193 Proc functions only set $procerror in case of failure; they do $procerror
not reset $procerror to 0 in case of success.

29254 Auto jump behavior is affected by the maximum field length, Auto Jump
which is counted in characters, not bytes.

29287 New initialization setting LogoSynch, which determines whether LogoSynch


the logo screen and the Uniface application are launched in
parallel or in sequence.

29303 The Entity parameter is optional for the sort Proc statement sort

29380 Global Updates forms now list dynamic server pages. The online Define Component Field
help topics have been updated accordingly. Property Updates
Define Field Property
Updates

29416 The AutoMaximize initialization setting only works when the AutoMaximize
form runs in a startup shell and the LayoutStorage setting is
switched on. The default value is off.

29443 DBE does not support the hold statements connector option hold statements

29456 To use an operator in String substitution, enclose the whole Substitution in String
29479 expression in parentheses. For example: Values
putmess "The result of 1+2 is %%(1+2)" ; = 3
putmess "Struct member is %%(myStruct->member)"

29481 $encode now supports additional Hash Message Authentication $encode


Codes (HMAC): HMAC SHA224, SHA256, SHA384, SHA512

29482 New Struct function $dbgStringPlain, which returns a string $dbgStringPlain


that represents the Struct or Struct collection, without the
annotations ($tags) Structs.

29483 New Struct function $scalar, which returns (or sets) scalar $scalar
members of a Struct

— The Struct code examples have been updated Working With Structs: Code
Examples
Struct Code Examples

— Added instructions for creating and converting client-side Verification for Web
certificates for SOAP. Services over HTTPS

— In the Rich Edit Box, the Ctrl+F and Ctrl+H keys can be Rich Edit Box
mapped to native Windows functions Find and Replace, Native Key
repspectively.

Uniface 9.5: Changes in Proc


New Proc instructions have been added and existing Proc has been enhanced.

September 9, 2016 62
What's New in Uniface 9

For more information, see Proc statement and function descriptions in the Uniface Reference
section of the Uniface Library.

Table 55. New Proc Statements

Proc Description

for Defines a loop that repeatedly processes until a counter has reached
a specified value.

forentity Defines a loop that processes all the occurrences of an entity.

forlist Defines a loop that processes all the items in an indexed list.

forlist/id Defines a loop that processes all the items in an associative list.

javascript / endjavascript Defines a block of JavaScript code.

componentToStruct Convert data in a UNiface component into a Struct.

structToComponent Load data from a Struct or Struct list into the entities and occurrences
on the component.

structToXml Load data from a Struct or Struct list into and XML stream.

weboperation Defines an operation in a DSP that will be run on the client.

webtrigger Defines a trigger (Detail or extended trigger) in a DSP that will be


run on the client.

webactivate Send an instruction to the browser to invoke an operation.

xmlToStruct Convert an XML document into a Struct.

Table 56. New Proc Functions

Proc Description

$columnsyntax Set or retrieve field syntax attributes for all fields in a column of a
grid or multi-occurrence list.

$CurEntProperties Set or retrieve the entity widget properties for the current entity.

$newstruct Create a new Struct with no members

$equalStructRefs Check whether two struct variables refer to the same physical Struct

Uniface 9.5 introduces Struct functions, which enable you to get information about a Struct
(such as the number of members it has), get or set Struct annotations, or perform actions such
as inserting and moving Struct members. Struct function names always begin with a dollar sign
$. Syntactically, they are treated as Struct members and are accessed using the dereference
operator (->). They form an addition to the Proc language but are not Proc functions. For more
information, see Struct Functions in the Uniface Library 9.7.03.

September 9, 2016 63
What's New in Uniface 9

Table 57. New Struct Functions

Proc Description

$collSize Get the number of Structs in the collection

$dbgString Get a string that represents the Struct or Struct collection.

$dbgStringPlain Get a string that represents the Struct or Struct collection, but without
annotations (as of Uniface 9.5 E101).

$index Get or set the index of the Struct in a Struct collection.

$isleaf Check whether a Struct is a Struct leaf (the logical end point in a
Struct tree)

$isScalar Check whether a Struct is a scalar Struct.

$isTags Check whether the Struct is a $tags Struct for another Struct

$memberCount Get the number of members in a Struct.

$name Get the name of a Struct

$parent Get or set the parent of the Struct.

$scalar Get or set the scalar members of a Struct (as of Uniface 9.5 E101).

$tags Get or set annotations for a Struct.

Table 58. Changed Proc

Proc Description

call When calling an entry in a specified library, use a double-colon (::)


rather than a single colon (:); for example call MyLib::MyEntry.
The use of a single colon is no longer supported.

selectcase It is possible to specify multiple expressions in a single case


expression.

$encode As of Uniface 9.5 E101, $encode supports additional Hash Message


Authentication Codes (HMAC): HMAC SHA224, SHA256, SHA384,
SHA512

$procerrorcontext Now returns SOAP fault information when errors occur during web
services call-out. For more information, see Information Returned
for Web Services Call-Out Errors in the Uniface Library 9.7.03.

$procreturncontext $procreturncontext is now set by structToComponent and


structToXml, as well as by $ude, and entitycopy. For details on
the information returned, see the documentation for these commands.

September 9, 2016 64
What's New in Uniface 9

Table 58. Changed Proc (continued)

Proc Description

IMPORTANT
The contents of $procreturncontext have changed for $ude and
entitycopy. $procreturncontext now includes a DETAILS section
containing messages, warnings, and errors that occur during
processing. This replaces the AdditionalInfo section, so the option
prcadditional=true no longer has any effect.

$webinfo New channels have been added to $webinfo to enable calls to the
$webinfo (SESSIONCOMMANDS) new session management API.
$webinfo (REQUESTCONTEXT) For more information, see APIs: Session Management in the Uniface
Library 9.7.03.

Conditions Parentheses are no longer required around conditions.


Prior to Uniface 9.5, the following construct would generate 2 errors,
but it is now accepted without errors:
if $STR$ != "&" & $NR$
message/info "true"
endif

Uniface 9.5: Changes in Assignment Settings


A number of changes have been made to assignment settings.
For more information, see the assignment setting descriptions in the Uniface Reference section
of the Uniface Library.

Table 59. New Assignment Settings and Sections

Assignment Setting Description

$JS_BASE_URL Specify the URL for JavaScript files that are used by DSP components.

$SOAP_CALLIN_CB Specifies as list of services that implement the callback operations for SOAP
call-in.

$SOAP_CALLIN_FAULT Determines how Uniface generates SOAP faults when an error occurs during
web services call-in. It does not affect SOAP faults generated by SOAP
callback operations.

callback Specifies a list of services that implement callback operations for web services
call-out.
Use as connector option ( USYS$SOP_PARAMS ) in [DRIVER_SETTINGS].
For more information, see SOAP Connector Options in the Uniface Library
9.7.03.
Use as parameter in [SERVICES_EXEC] to specify the callback services
that are specific to a web service. For more information, see
[SERVICES_EXEC] in the Uniface Library 9.7.03.

September 9, 2016 65
What's New in Uniface 9

Table 60. Changed Assignment Settings

Assignment Setting Description

$WEBKEY During Uniface installation, a unique string value for $WEBKEY is automatically
generated and set in the wasv.asn file. This string is used as a key in
calculating the hash-values used to protect non-editable fields from being
modified in a web browser.

Uniface 9.5: Changes in Initialization Settings


A new initialization setting has been added.
For more information, see initialization setting descriptions in the Uniface Reference section
of the Uniface Library.

Table 61. New Initialization Settings

Setting Description

tooltip Controls the size of all tool tips in the application, whether they display Tool
Tip Text or the contents of the field (Hover View). It also determines how long
the tool tip remains visible when the cursor remains in one place in within the
tool tip.

What's New in Uniface 9.4


Uniface 9.4 provides major enhancements in the areas of Web development, Uniface product
integration, national language support, HTML email, and encoding and decoding.
Uniface 9.4 features:
• Support for creating and deploying rich internet applications (RIA) using a new web
development paradigm which fully supports AJAX concepts
• Enhanced National Language Support (NLS), featuring locale-based sorting, data formatting,
currency display, and string searching.
• Support for sending HTML email in Uniface applications
• Improved migration of Uniface 8 USPs to Uniface 9
• Proc-based encoding and decoding for security and encryption

For more information about the new functionality, see the topics referred to in the More
Information column. If the listed topic is not in this document, it is in the Uniface Library.

Table 62. Changes in Uniface 9.4

Change Impact More Information

Support for Rich Internet Uniface introduces a new component type, the Dynamic Server Uniface 9.4: Web
Application development Page (DSP), that enables you to develop rich internet applications Development
and deployment that are more interactive, faster, and flexible than the ones you Enhancements
can create with static server pages (USPs).

September 9, 2016 66
What's New in Uniface 9

Table 62. Changes in Uniface 9.4 (continued)

Change Impact More Information

USP enhancements As a result of the introduction of DSPs, the way that USPs are Uniface 9.4: Web
developed and stored has also been enhanced. Development
• Server page layouts can be stored externally as one or more Enhancements
files, making it possible to have separate layouts for headers,
footers, and bodies.
• A source-based layout editor is now available for
maintaining the server pages. This is in addition to the
graphical editor that is already available.
• Migration from Uniface 8.4 is easier
• The procedure for defining the layout has changed
• Remote debugging is preconfigured

NOTE
The traditional Uniface server page components (USPs) are now
known as static server pages.

Uniface Product Uniface 9.4: Uniface


Integration NOTE APS Product Integration
Uniface 9.4 integrated several Uniface products into a single
application suite. However, Uniface Flow and Uniface View are
no longer delivered in Uniface 9. Changes made to the directory
structure and configuration still apply.

NLS enhancements Uniface can now format numeric, floating point, and date and Uniface 9.4: NLS
time data to conform to the conventions of the language and Enhancements
country (that is, the locale). It can detect the client locale and
time zone, and handle differences between client and server time
zones.
Uniface now also supports sorting, normalization, and
case-bending of Unicode characters. As a result, the functionality
for sorting, case conversion, and searching using syntax strings
has been enhanced.
New assignment settings, Proc functions, and display formats
have been introduced to enable you to control the ways in which
Uniface formats, displays, sorts, and searches data. Some existing
Proc instructions have also been enhanced.

Sorting enhancements In addition to being able to take locale into account when sorting, Sorting Data
multi-level sorting is now supported for both entities and lists. Lists and Sublists
This enables you to specify a sort on several fields, each with
its own sort options.
New sort options have been added that enable you to perform
case-insensitive searching, eliminate duplicates, and sort string
data in numeric order or by hierarchical level.

September 9, 2016 67
What's New in Uniface 9

Table 62. Changes in Uniface 9.4 (continued)

Change Impact More Information

New Proc functions have been added for sorting lists with
sublists.

Proc-based encoding and The new Proc functions $encode and $decode support a variety $encode and $decodein
decoding for security and of encoding and encryption algorithms that enable you to:
encryption • Encrypt and decrypt data
• Encode confidential data using hash functions such as MD5
• Encode and decode data in other encoding schemes, such
as Base64, hexadecimal and URL-based encoding.
• Convert data between Uniface raw and string data types.

HTML email support The Uniface component API for email integration has been UPOPMAIL
enhanced to support sending HTML email, including attachments
and inline objects.

The default value of the As a result: USERUNPREFIX


UseRunPrefix servlet
• Relative paths do not cause errors.
setting has been changed
to false • The URL of a server page should not contain the run prefix.
• The value of the WEBAPPURL setting, if set, is ignored.

As of patch R102, the Assuming the size of the form is the same as or smaller than the Defining Non-Maximized
default behavior of forms screen, a form is no longer maximized if the Caption property Forms for Mobile
on mobile devices has is True or if the Window Type property is set to Secondary.
changed.

The ability to implement Uniface provides a generic mechanism that enables you to add Creating a Web Output
filter plugins was added your own JavaScript or HTML to web pages generated from Filter Plug-in
in R104. DSPs and USPs.

NOTE
Such a plug-in was originally delivered for the Gomez Actual
Experience XF, but this was removed from Uniface in 9.7.01.

Uniface 9.4: Web Development Enhancements


Uniface 9.4 features support for rich internet applications (RIA) that are more interactive, faster,
and more flexible, as well as enhancements in the way static server pages (USPs) are developed.

Table 63. Changes in Web Development in Uniface 9.4

Feature/Change Impact More Information

New server page The dynamic server page (DSP) supports RIA Dynamic Server Pages
component type: functionality through JavaScript-based widgets, enhanced
Dynamic Server Page and specialized Proc, and ID-based binding to make the
(DSP) layout much more flexible.

September 9, 2016 68
What's New in Uniface 9

Table 63. Changes in Web Development in Uniface 9.4 (continued)

Feature/Change Impact More Information

New user interface Web widgets offer a richer set of interface controls than Widgets for Dynamic
controls for traditional HTML controls. They include widgets such Server Pages
DSPs—web widgets as a date picker and drop-dwon list, and offer functionality
such as browser-side validation, and styling features that
makes it easy to give them a new look and feel.

DspContainer widget The DspContainer widget allows you to build RIA web DspContainer
pages using multiple DSP components.

AttributesOnly widget The AttributesOnly DSP widget enables you to manipulate AttributesOnly
the attributes of HTML elements in Proc.

Static Server Pages The traditional Uniface server page components (USPs) Static Server Pages
are now known as static server pages. They now feature
a split between the component structure and the
presentation and a more flexible approach to constructing
them.
USPs created with earlier versions of Uniface continue
to be supported in the runtime environment.
For development, if they were created with Uniface 8,
they are easily migrated to Uniface 9.4 using the
Migration Utility. If they were created with Uniface 9,
they only need to be recompiled.
USPs created with beta and controlled release versions
of Uniface 9.4 are fully supported and do not require
migration.

Component structure The component structure of a server page is separate from Presentation-Logic
and layout of USPs the layout, even if they are stored together in the Split for Server Pages
and DSPs are handled Repository. Insert Uniface Objects
separately. As a result, the procedure for defining the structure and in the Server Page
binding it to the layout has changed: Layout
• You explicitly maintain the component structure and
the layout separately.
• You can insert elements from the component
structure into the layout, rather than having Uniface
automatically synchronize the structure and layout.
This adds to the flexibility of the layout, which no
longer requires the same structure as the component
structure.
• If changes are made to the model while you are
editing the component, you need to refresh the
component structure to update the properties.
Previously, the automatic synchronization handled
this.

September 9, 2016 69
What's New in Uniface 9

Table 63. Changes in Web Development in Uniface 9.4 (continued)

Feature/Change Impact More Information

Binding style of DSPs Fields are no longer constrained to being inside an entity, Binding Web Layout
based on IDs instead and the XHMTL is standards-compliant so it can be edited to Component
of proprietary tags by any XHTML editor. Structure

NOTE
This binding style is used only in DSPs. USPs continue
to use the proprietary tags.

Server page layouts To make Web layouts more flexible and easier to Presentation-Logic
can be stored maintain, Web layouts for both USPs and DSPs can now Split for Server Pages
externally as one or be stored as one or more external files (or they can
more files continue to be stored in the repository).
Layout can be stored either internally or as one or more
external .hts files
Uniface 8 Web applications can be easily migrated to
Uniface 9, since these already use external layouts.

HTML Source Editor In addition to the graphical Server Page Layout Editor, a HTML Source Editor
source-based layout editor is now available for
maintaining the layout of server pages.
Unlike the graphical editor, which regenerates the HTML
source each time you switch between edit modes, the
Source Editor enables you to maintain your own HTML
code and formatting.
You can choose whether to use the source editor or the
graphical editor on a component-by-component basis.
By default, server pages that are migrated from Uniface
8 are edited with the source editor. The default layout
editor for server pages developed in Uniface 9 is the
graphical editor.

Server Page Layout Use of an integrated layout editor is mandatory when Server Page Layout
Editor storing the component layout in the component definition. Editor
You can choose to use the GUI-based Server Page Layout HTML Source Editor
Editor, or the HTML Source Editor to maintain the HTML
code yourself.
If the layout is stored outside of the Repository, you can
use your editor of choice.

Preconfigured The default Uniface installation on Windows provides a Uniface Debugger


debugging pre-configured remote debugging environment . Debugging a Web
Application Over TCP

New Proc instructions New Proc instructions have been introduced to support Uniface 9.4: Changes
dynamic server pages in Proc [p. 76]

September 9, 2016 70
What's New in Uniface 9

NOTE
If you were a beta tester or used the controlled release, you need to be aware of the changes
between the GA, controlled release, and beta release. For more information, see Differences
Between Uniface 9.4 GA and Uniface 9.4 CR [p. 71] and Differences Between Uniface 9.4 CR
and Uniface 9.4 Beta [p. 71]..

Differences Between Uniface 9.4 GA and Uniface 9.4 CR


Uniface 9.4.01 introduces some changes compared with the controlled release.

Table 64. What's New in Uniface 9.4 Since Uniface 9.4 CR

Feature Description Details

New Proc functions New functions enable you to tailor the data sent to and $webrequesttype
from dynamic a server based on the type of request or $webresponsetype
response. These functions are used in the Get State and
Set State triggers.

Default Proc has changed The new Proc functions work on component level and Get State and Set State
not on request level. The default code for DSPs has
changed as a result.

Differences Between Uniface 9.4 CR and Uniface 9.4 Beta


The Uniface 9.4 Controlled Release introduces a number of changes in the way RIA functionality
is implemented. If you were a beta tester, you need to be aware of the changes between the beta
and controlled release versions.

NOTE
Applications that you build with Uniface 9.4 CR are forward-compatible, meaning that they
will run on future versions of Uniface. This is not true for applications built with the Beta release.

Table 65. What's New in Uniface 9.4 CR Since Uniface 9.4 Beta

Feature Description Details

New DspContainer widget The DspContainer widget allows you to build RIA DspContainer
web pages using multiple DSP components.

Support for duplicate entities in In Uniface 9.4 Beta, an entity had to be unique within
single web page a RIA web page, even if the page was constructed with
multiple DSP components. In Uniface 9.4 CR, you
can use the DspContainer widget to define the same
entity in multiple DSP components and use these
components to construct a single RIA web page.

For security reasons you must You must explicitly declare that a trigger or operation web
explicitly make a trigger public to the is accessible from the browser by putting a public

September 9, 2016 71
What's New in Uniface 9

Table 65. What's New in Uniface 9.4 CR Since Uniface 9.4 Beta (continued)

Feature Description Details

web using the Proc instruction web declaration in the trigger. If this declaration is
public web. omitted, the trigger is not executed.
As a result, the Triggers tab in the DSP widget
properties is no longer required and has been removed.

Scope declarations in triggers and You can define a scope block after a web declaration Execution of
operations to define the data to be included in a request-response Server-Side Triggers
exchange. This enables you to: and Operations
• Reduce the amount of data traffic between Input and Output
browser and server when a DSP trigger gets fired. Scope
In the 9.4 Beta, all data in the component data scope
was included in both the request and response. It
is now possible to make a distinction between
request (input scope) and response (output scope).
• Include data from multiple components in the
request-response exchange. In Uniface 9.4 Beta,
it was only possible to send the data of one
component to the server—the component
containing the trigger that was fired. In Uniface
9.4 CR, you can specify data from the current
component, as well as data from other
components available in the web page, in the
request and/or the response.

Data blocking to prevent race All data involved in a request-response exchange is


conditions blocked for the duration of the exchange. The prevents
race condition problems: as long as data is blocked, it
cannot be modified by the end user (it will be
overwritten anyway) and it cannot be used in other
request-response cycles (the data is outdated).

Deleted widget properties The following widget properties are no longer available
in Uniface 9.4 CR:
• trigger:onchange and
trigger:detail—specify whether a widget
fires the trigger. This property was required to
avoid unnecessary request-response exchanges
if the trigger contained no Proc. In Uniface 9.4
CR, this is automatically determined by the
existence of the trigger specification. If a trigger
is not defined, it is never fired. The tab that
contained these properties has been removed.
• onerror—specify whether a trigger is fired if a
validation error occurs on the browser. This
property was required to fire a trigger even if an
error occurred. It is no longer required because
you can use the scope declaration prevent data

September 9, 2016 72
What's New in Uniface 9

Table 65. What's New in Uniface 9.4 CR Since Uniface 9.4 Beta (continued)

Feature Description Details

from being submitted. Just exclude input in the


scope declaration of the trigger

Full page update not supported It is not possible to specify that a RIA response
includes the whole web page.

Changed Proc behavior A new channel, LAYOUT, has been added to $webinfo. $webinfo
The weblayout statement now copies the layout into weblayout
the $webinfo("LAYOUT") channel instead of
$webinfo("OUTPUT"). It also does not support the
/append switch.

Operation calltrigger no longer In Uniface 9.4 Beta, the calltrigger operation was callfieldtrigger
fired fired for every event initiated on the browser. It acted
as a trigger dispatcher. In 9.4 CR, triggers are directly
bound to the widget, so this intermediate operation is
no longer required and is no longer fired. It is removed
from the Uniface defaults.

New default code in triggers for DSP The Execute trigger contains a default web web
component accessibility declaration making it, by default, public
to the web.

The Get State and Set State triggers are changed to Get State
enable a default mechanism to manage the Set State
request-response cycle.

For more information, see Proc statement and function descriptions in the Uniface Reference
section of the Uniface Library.

Uniface 9.4: Uniface Product Integration


Uniface 9.4 integrated several Uniface products into a single application suite. However, Uniface
Flow and Uniface View are no longer delivered in Uniface 9. Changes made to the directory
structure and configuration still apply.
For more information about the new functionality, see the topics referred to in the More
Information column. If the listed topic is not in this document, it is in the Uniface Library.

Table 66. New Features and Changes in Uniface 9.4

Change Impact More Information

Enhanced installation from The installation program has been enhanced. You can Uniface Installer for
single media now specify the service names and port numbers of the Windows
Uniface Router and Tomcat Web Server. This enables Installing Uniface on
you to avoid conflicts with existing services and servers Windows
in your environment.

September 9, 2016 73
What's New in Uniface 9

Table 66. New Features and Changes in Uniface 9.4 (continued)

Change Impact More Information

Changes in installation The directory structure for the Uniface installation has Uniface Directory Structure
directory structure and been changed. /adm
configuration Common resources are located in the common
subdirectory. Uniface development and testing resources
are located in the uniface subdirectory.
On Windows, the default location for user data was
changed. It is now
C:\Users\UserAccount\Documents\Uniface
Version.
Both the common and uniface directories have an \adm
subdirectory containing configuration files. A new
command line switch is used in the startup command to
specify the \adm directory to use

New USYS path logicals for New USYS logicals can be used as a prefix in a path USYS Path Logicals
use in file redirections specification in Proc or in an assignment file:
In addition, you can define your own USYS path logicals.
Any setting beginning with USYS can be used as a prefix
in a path specification in Proc or in an assignment file.

Multiple \webapps The installation features a single Tomcat web server that Apache Tomcat
directories containing Web can be used for testing purposes for all Uniface products.
applications for the Uniface It is located in \common\Tomcat, and has a \webapps
applications. subdirectory that contains some standard web
applications.
The uniface\webapps directory contains the web
application files required for the pre-configured web
application server used for testing Uniface web
applications.
If you need to create or edit files to be served by Tomcat,
they must be added to the correct directory, and the
Uniface Router must to be configured to find them. You
can use the new USYS path logicals to direct files to the
correct location in assignment files.
For example, if you are importing or exporting WSDL
files for Web services, you can direct the files to the
\uniface\webapps directory:
;assignment file
[FILES]
*.wsdl
usysuniface:webapps\uniface\WEB-INF\wsdl\*.wsdl

Uniface 9.4: NLS Enhancements


Uniface 9.4 introduces processing rules for formatting, sorting, and searching data that are based
on the language variation used in a given country.

September 9, 2016 74
What's New in Uniface 9

A language such as English, French, or Arabic can be spoken in many countries, but each country
will have its own conventions for expressing numbers, currency, date and time. For example:

Table 67. Effect of Locale on Data Display

Locale Code Locale Currency and Numeric Date Time


Separators

en_US English (United $12,345.67 Wednesday, December 2, 4:08:42 PM


States) 2009

en_GB English (United £12,345.67 Wednesday, 2 December 2009 16:08:42


Kingdom)

fr_FR French (France) 12 345,67 € mercredi 2 décembre 2009 16:08:42

fr_CA French (Canada) 12 345,67 $ mercredi 2 décembre 2009 16:08:42

nl_NL Dutch € 12.345,67 woensdag 2 december 2009 16:08:42


(Netherlands)

ja_JP Japanese (Japan) 12,346 2009 12 2 16:08:42

bg_BU Bulgarian 12 345,67 лв. 02 декември 2009, сряда 16:08:42


(Bulgaria)

The characters used also affect the sort order and the way they are converted between upper
and lower case. For example, diacritical symbols may be ignored or applied when sorting,
depending on the language and region.
Prior to Uniface 9.4.01, Uniface used the language, date and time as set by the operating system
when displaying, interpreting, storing, and retrieving data. With Uniface 9.4, you can explicitly
set the locale and time zone to use. Uniface can then use this information to apply locale-based
processing rules, or not (keeping the pre-9.4 behavior).

NOTE
Setting the locale has no effect when retrieving using order by. This is done by the database.
On Windows, setting the TZ environment variable now affects the date returned by $date and
$datetime. To ensure that the date and time data used by Uniface is in sync with Windows,
set $NLS_TIME_ZONE to System.

Uniface can now:


• Format numeric, floating point, and date and time data to conform to the conventions
(including currency) of the language and country (that is, the locale).
• Detect the client locale and time zone, and handle differences between client and server
time zones.
• Sort entities, lists, and hitlists using the sorting conventions of the locale
• Apply locale-based rules for case-related pattern-matching (searching) and data conversion

September 9, 2016 75
What's New in Uniface 9

Table 68. NLS Enhancements

Enhancement Impact More Information

Locale-based processing You can set a specific locale in the assignment file or in Language and Locale
Proc, or enforce pre-9.4 behavior.

External and internal time You can set the current external and internal time zone, Time Zones
zones or enforce pre-9.4 behavior. Uniface can automatically
convert between the local client time and the time on the
server.

Locale-based sorting You can determine whether to take locale into account Sorting Based on Locale
when sorting data. This can affect the sort order of
characters amd diacriticals.

Enhanced pattern matching in Syntax strings have been enhanced to support modes, Syntax Strings for Pattern
syntax strings which enable improved case-sensitive and Matching
case-insensitive pattern matching $syntax

Enhanced display formats New NLS display formats have been added to support Display Formats
locale-based display of data with data types Numeric,
Floating decimal, Date, Time, and Datetime.

Locale-based case conversion When converting strings between uppercase and Case Conversion
lowercase, Uniface can support case conversion rules
based on locale, such as converting a Turkish dotted I to
a dotted uppercase I, or converting a single character to
multiple characters, for example, converting the German
lowercase ß to uppercase SS.

Uniface 9.4: Changes in Proc


New Proc instructions have been added and existing Proc has been enhanced.
For more information, see Proc statement and function descriptions in the Uniface Reference
section of the Uniface Library.

Table 69. New Proc Statements

Proc instruction Description

callfieldtrigger Explicitly call the named trigger (Detail, Help, Menu, or extended
trigger) for the specified field.

reconnect Reconnect data loaded from an XML or JSON stream with the
occurrences in a database or component.

scope/endscope Define a scope block that specifies the data to be included in a DSP
request-response exchange

web Determine whether the DSP trigger or operation in which this


statement is declared, can be fired from the web browser.

webdefinitions Use the current component to load channels in the


$webinfo("definitions") channel.

September 9, 2016 76
What's New in Uniface 9

Table 69. New Proc Statements (continued)

Proc instruction Description

webload Load data from a JSON stream into a component.

webmessage Display a message in a dialog box in the browser.

websave Create a JSON stream from the data in a component and put it into
the $webinfo("data") channel.

weblayout Retrieve the layout of the server page component and make it available
in the $webinfo("layout") channel.

websetocc Get a list of entity name and occurrence id from httprequestparams


channel of $webinfo, and set the current occurrence according this
list.

#entry Insert global Proc entry. At runtime it is compiled into local Proc.

Table 70. New Proc Functions

Proc instruction Description

$cellinfo Get an associative list with the dimensions of a character cell in pixels.
The dimensions are determined by the font0 setting in the [SCREEN]
section of usys.ini.

$encode Encode or encrypt data using a variety of algorithms including hash


functions, block ciphers, Base64, and others.

$dberrortext Return the message string associated with the DBMS or network error
returned by $dberror

$decode Decode or decrypt data using a variety of algorithms including block


ciphers, Base64, and others.

$nlscase Set or get the setting that controls the default case switching rules of
$uppercase and $lowercase

$nlsformat Set or get the setting that controls the default formatting of numeric,
floating point, date, time, and datetime data

$nlsinternaltime Set or get the setting that controls the default internal time and display
behavior.

$nlslocale Set or get the setting that determines the default locale (country and
region) and controls whether locale-related rules are applied when
displaying, sorting, and parsing numeric, floating point, date, time,
and datetime data

$nlslocalelist Returns a list of available locales

$nlssortorder Set or get the setting that determines Uniface's default sort behavior

$nlstimezone Sets or gets the setting that defines the default time zone and controls
the data returned by $clock, $date, and $datim

$nlstimezonelist Returns a list of available time zones

September 9, 2016 77
What's New in Uniface 9

Table 70. New Proc Functions (continued)

Proc instruction Description

$rscan Scans for a string or a pattern in a string starting from the end of the
string.

$sortlist Sort an associative list, an indexed list, or an indexed list of sublists.

$sortlistid Sort an associative list in which the value part of each list item is an
indexed list.

$webrequesttype Returns a value indicating the type of request from the browser.

$webresponsetype Returns a value indicating the response expected by the browser for
the current DSP component instance.

Table 71. Changed Proc Statements and Functions

Proc instruction Change

sort Additional options for controlling entity and list sorting

sort/list

$componentinfo A new topic parameter has been added, making it possible to retrieve
a list of outer entities of the specified component instance.

$componenttype Returns D if the component instance is a dynamic server page.

$webinfo New channels have been added and the function can be set by more
Proc instructions.

$clock Additional option for overriding the default behavior if the time zone
has been defined (using $nlstimezone or $NLS_TIME_ZONE)
$date

$datim

$syntax Additional options for pattern matching to allow searching or parsing


based on locale and case (case-sensitive or case insensitive).

$lowercase Additional options for overriding the default behavior if the locale is
defined ($nlslocale or $NLS_LOCALE is set)
$uppercase

Uniface 9.4: Changes in Assignment Settings


A number of changes have been made to assignment settings.
For more information, see the assignment setting descriptions in the Uniface Reference section
of the Uniface Library.

Table 72. New Assignment Settings and Sections

Assignment Setting or Section Description

$JSON_INDENT Formats JSON output with indents to make it more readable.

September 9, 2016 78
What's New in Uniface 9

Table 72. New Assignment Settings and Sections (continued)

Assignment Setting or Section Description

$JSON_SHOW_NAMES Shows the fully-qualified name of each entity and field in a JSON
stream, instead of just the ID.

$NLS_CASE Specifies the default behavior when switching case using $uppercase
and $lowercase; overrides the behavior specified by $NLS_LOCALE

$NLS_FORMAT Specifies the default behavior when formatting or parsing numeric,


floating point, date, time, and datetime data; overrides the behavior
specified by $NLS_LOCALE

$NLS_INTERNAL_TIME Specifies the default internal time and display behavior.

$NLS_LOCALE Specifies the default locale (country and region) and controls whether
locale-related rules are applied when displaying, sorting, and parsing
numeric, floating point, date, time, and datetime data

$NLS_TIME_ZONE Specifies the default time zone and controls the data returned by
$clock, $date, and $datim

$USP_NED_TEXTAREA Specifies how to render the TextArea control for a non-editable field
(NED) in static server pages.
Since Uniface 9, it is rendered as a TextArea HTML control with the
readonly attribute. Prior to Uniface 9, it was rendered as plain text
in the HTML layout.

Table 73. Changed Assignment Settings

Assignment Setting or Section Description

$NLS_SORT_ORDER New sort order settings have been added.

What's New in Uniface 9.3


Uniface 9.3 features support for easier deployment, improved mobile application GUI, and
introduces a new implementation of the cross-reference feature. Uniface provides built-in
migration functionality when importing an existing Uniface 8 or 9 application into Uniface 9.3.

Table 74. New and Changed Functionality in Uniface 9.3

Functionality Description More Information

Easy deployment A new standardized deployment mechanism is Uniface 9.3: Changes in


introduced that significantly simplifies application Deployment [p. 81]
deployment.
Uniface applications can now be deployed directly as
Uniface deployment archive files (*.uar), and these
now use the zip compression format. All application
resources (including components, global objects,
descriptors, and other files) are available as compiled

September 9, 2016 79
What's New in Uniface 9

Table 74. New and Changed Functionality in Uniface 9.3 (continued)

Functionality Description More Information

files in one or more archives and can be used without


unpacking them.
New configuration settings make it possible to update
deployed applications simply by adding the location of
the updated archive file to the application's assignment
file, without stopping and restarting Uniface Routers
and Servers.
The classic deployment mechanism, featuring
component files, DOL files, and URR files, is still
supported, although DOL and URR files now use the
zip compression format.
The UAR, DOL, and URR files can be inspected and
updated using standard compression tools.

Compilation It is now possible to compile all objects as files in a Resources Output Path
fixed directory structure on the file system, instead of ($RSO)
components as files, and global objects and descriptors
in the Repository.
This makes it easier to use the new standardized
approach to deploying applications.

Cross-reference facilities Cross-reference data identifies where objects are used Uniface 9.3: Changes in
or referenced in application sources. Uniface 9 Cross-Reference
introduces new facilities for generating, maintaining, Functionality [p. 83]
reporting, and using this cross-reference information. Cross-Reference Data and
Facilities
NOTE
The Uniface 9 cross-reference functionality is a
completely new implementation, which provides
extended coverage and more flexibility than the Uniface
8.4 cross-reference implementation.

Proc listing enhancements It is now possible to generate Proc listings for menus Proc Listings
and global Proc, as well as for components. The naming
convention for Proc listing files has changed and Proc
listings themselves provide better source and line
numbering.
Level 2 listings can report all the information about the
compiled object, including compile phase information,
errors, warnings and info messages.
The $ude exist, delete, and load operations can be
used with listing files.

Mobile application A Uniface Setup utility now enables the user to Assigning Actions to Hot
enhancements configure hot keys on the mobile device. Keys on Mobile Devices

September 9, 2016 80
What's New in Uniface 9

Table 74. New and Changed Functionality in Uniface 9.3 (continued)

Functionality Description More Information

Field navigation has been improved so that Uniface $prompt


automatically scrolls to the field that is given focus by
the $prompt Proc function.

The new widget properties Bottom Line and Show Bottom Line
ellipsis have been introduced to enhance the mobile Show Ellipsis
user interface.

It is possible to replace the X button in the task bar with OK Button


an OK button using the OK Button window property.

Email enhancements Unicode is now supported in the message text and UPOPMAIL
subject of sent and received messages. SetSecurity GetSecurity
The UPOPMAIL component API now supports SMTP
authentication via security drivers. To handle this, the
SetSecurity and GetSecurity operations have been
added, and the LogonSMTP and send operations have
been updated.

The Uniface Security Driver API has been extended to Security Drivers
handle the SMTP security

Widget enhancements for The associated labels of grid widget columns can now $labelproperties
grid widget and mobile be changed dynamically using the new
applications $labelproperties Proc function

The Bottom Line property displays fields with an Bottom Line


underline rather than a frame.

The Show Ellipsis property adds an ellipsis to data when Show Ellipsis
there is more data in the field than can be displayed.
Clicking the ellipsis positions the cursor at the end of
the data.

Documentation The Uniface Library now includes documentation on Database Connector


enhancements the Database Connector Interface, the API that enables Interface
you to build your own database connectors. This was
previously available as the Database Connector
Cookbook.

Uniface 9.3: Changes in Deployment


Uniface 9.3 introduces a significant new approach to deploying Uniface applications, making
deployment easier and more consistent. For existing applications, the classic deployment approach
used in earlier Uniface versions continues to be supported.
For more information, see Standardized vs. Classic Deployment in the Uniface Library 9.7.03..

September 9, 2016 81
What's New in Uniface 9

Table 75. New and Changed Deployment Functionality

Change Impact More Information

Uniface applications can be deployed To deploy, you only need to copy the UAR Standardized Deployment
directly as Uniface deployment archive files file to the required location and ensure that
(UAR), without extracting and distributing the assignment file specifies the location of
the contents to different locations. the archive.
It is no longer necessary to use the Uniface
Deployment Utility to unpack files to the
required locations.

All runtime resources, including It is no longer necessary to put all global Standardized Directory
components, global objects, Proc, entity objects in a DOL file and all descriptors in Structure
descriptors, and descriptors, can be stored a URR file. Instead you can create UAR Resources Output Path
as files in a fixed directory structure for easy files that contain a mixture of the resources ($RSO)
retrieval, either on the file system during needed at a specific location.
development, or in a UAR for deployment. The size of files required for mobile
applications is easily controlled.

NOTE
DOL and URR files, and the repository
tables UOBJ, ULANA, USYSANA are no
longer required, although they continue to
be supported for users who wish to use the
classic deployment approach.

UAR, DOL, URR, and DIS files all use the To create and manipulate these files, you UAR Files
standard zip compression format instead of can use: DOL Files
a proprietary format. • Uniface Resource Manager URR Files
• Third-party tools such as WinZip
• Proc file and directory functions (such
as dircreate, fileload, filecopy)

UAR, DOL, URR, and DIS files must be


regenerated to use the new format.

New configuration settings and logical paths These settings make it easier to deploy and [RESOURCES]snf
for storing and locating application manage application resource files. They are $SEARCH_RESOURCES in
resources, during both development and required to take advantage of some new the Uniface Library
deployment. deployment functionality. Resources Output Path
($RSO)
Resources Deployment
Path ($RES)

Running applications can be updated without To take advantage of this feature, the Update a Deployed
stopping and restarting Uniface Routers and application must deployed directly from Application
Uniface Servers. (Restrictions apply.) UAR files that are identified in the
[RESOURCES] assignment file section.

September 9, 2016 82
What's New in Uniface 9

Table 75. New and Changed Deployment Functionality (continued)

Change Impact More Information

New command line utility, the Uniface The utility provides facilities for copying Resource Manager
Resource Manager (urm), has been provided and moving resources and splitting UAR urm
for managing UAR files and their contents. files into multiple files. It is also possible
to use other tools for these tasks, such as
WinZip.
It is no longer necessary to merge URR and
DOL files, or UOBJ, USYSANA, ULANA
repository tables. The objects in these
locations are now simple files (inside a
.uar or not).

The Deployment Utility continues to be The Deployment Utility handles the new Deployment Utility
supported. archive file format. udeploy

For compatiblity reasons, Uniface itself is Classic Deployment


deployed using the classic deployment
approach.

Names of compiled objects are no longer In previous versions, the name of a


truncated to 16 characters before searching compiled objects was always truncated to
them. 16 characters. This can result in different
behavior if you have code that relies on this
behavior.
For example, the Proc instruction
($text("PO_TESTMESSAGE16A") will no
longer find message PO_TESTMESSAGE
whereas it did before.

Uniface 9.3: Changes in Cross-Reference Functionality


Uniface 9 features a completely new implementation of cross-reference functionality. Both the
facilities used to generate and update cross-reference data, and the ways in which the data is
stored, have changed.

Table 76. Differences Between Uniface 8 and Uniface 9 Cross-Reference Functionality

Feature Uniface 8 Uniface 9 More


Information

Data coverage No references for many objects and All objects and instructions are Objects Included
instructions included in Symbol Tables

Data granularity Each object reference was only to the Object references include more Object References
trigger level detailed information about the type in Symbol Tables
objects and the reference goes to the
line number in the source

Data storage UGCROSS UXCROSS

September 9, 2016 83
What's New in Uniface 9

Table 76. Differences Between Uniface 8 and Uniface 9 Cross-Reference Functionality (continued)

Feature Uniface 8 Uniface 9 More


Information

Symbol tables New mechanism for storing object


references that are used to generate
cross-reference data.

Data generation /cro /sym=2|3 /sym


Cross-reference data is generated $SYMBOL_TABLE=2|3 $SYMBOL_TABLE
directly during compilation Cross-reference data is generated from
symbol tables, either directly during
compilation, or imported from symbol
table files.
This makes it easier and faster to
generate and maintain cross-reference
data.

Data maintenance /cro New utility that enables you to add or Generate and
delete records in the UXCROSS table Maintain
as required, based on object profiles Cross-Reference
Data

Performance Noticeably slower performance during Better performance and more flexible
compilation control for generating and maintaining
cross-reference data

Uniface 8 cross-reference data is not migrated to the new table. It is a compilation product of
the sources rather than a source itself. It needs to be recreated in the new UXCROSS table.
Existing data is not deleted, but it is considered to be outdated and is no longer maintained by
Uniface.

Uniface 9.3: Changes in Proc


New Proc instructions have been added and existing Proc has been enhanced.
For more information, see Proc statement and function descriptions in the Uniface Reference
section of the Uniface Library.

Table 77. New Proc Statements and Functions

Proc instruction Description

$labelproperties Sets the value of associated labels that are used as column headings
in a grid widget.

$ude delete Deletes a runtime object, symbol table, or Proc listing.

$ude exist Checks whether a runtime object, symbol table, or Proc listing exists.

$ude load Loads a symbol table or Proc listing from a file into a field or variable.

$ude getReferenceList Retrieves a list of all runtime objects referenced by an object.

September 9, 2016 84
What's New in Uniface 9

Table 77. New Proc Statements and Functions (continued)

Proc instruction Description

$ude import symboltable Imports symbol table files into the UXCROSS repository table

Table 78. Changed Proc Statements and Functions

Proc instruction Description

$prompt If a field is not visible and is given focus by $prompt, it is scrolled


into view. This behavior can be switched off by setting the
$PROMPT_SCROLL assignment setting to false.

Uniface 9.3: Changes in Assignment Settings


A number of changes have been made to assignment files and sections.
For more information, see the assignment setting descriptions in the Uniface Reference section
of the Uniface Library.

Table 79. New Assignment Settings and Sections

Assignment Setting or Section Description

[RESOURCES] Identifies the locations of Uniface application resources in a deployed


application. These are usually .uar files but can also be directory
paths. Uniface applications use this section to locate all the objects
they need.

$RESOURCE_OUTPUT Identifies the location where the compilation process stores compiled
objects. This location can also be used for other resouces that may
be needed for testing and debugging.

$LISTING_LEVEL Produces compile listings of Proc modules in components, menus,


and global Proc. Also specifies the listing level.

$PROMPT_SCROLL Specifies whether Uniface automatically scrolls to the field that has
focus when the $prompt function is executed.

$SEARCH_RESOURCES Specifies the search order of application resources.

$SYMBOLTABLE Specifies whether object references are generated during compilation,


and where they are located.

$RES Logical path to the location of application resources

$RSO Logical path to the output location of compiled resources

Table 80. Changed Assignment Settings and Sections

Assignment Setting or Section Description

[FILES] The [FILES] section is required only to locate non-standard Uniface


resource files, such as HTML files. For classic deployment, or if

September 9, 2016 85
What's New in Uniface 9

Table 80. Changed Assignment Settings and Sections (continued)

Assignment Setting or Section Description

$SEARCH_RESOURCES is set to resource_excluded, it can also be


used to specify the standard location of components and files.

$SEARCH_DESCRIPTOR Descriptors can now be stored in .uar files, rather than in


ULANA.DICT, USYSANA.TEXT, and the URR. This setting is
useful only if there is no [RESOURCES] section in the application
assignment file, or if $SEARCH_RESOURCES is set to
resource_excluded.

$SEARCH_OBJECT Compiled global objects, such as menus, messages, and glyphs, can
now be stored in .uar files rather than in UOBJ.TEXT and uobj.dol.
This setting is useful only if there is no [RESOURCES] section in
the application assignment file, or if $SEARCH_RESOURCES is set to
resource_excluded.

Uniface 9.3: Changes in Command Line Switches


Changes have been made to the functionality of some command line switches and subswitches
For more information, see command line switch descriptions in the Uniface Reference section
of the Uniface Library.

Table 81. New Command Line Switches and Subswitches

Switch Description

/cpt Compile all components

/plg Puts messages in the specified log file. This switch takes precedence over
any log file specified with the $PUTMESS_LOG_FILE assignment setting.

/sym Specify whether to generate symbol tables, and where they should be located.

Table 82. Changed Command Line Switches and Subswitches

Switch Description

/dis The files that are produced by these switches are now in zip format, although
/ins their names are unchanged.
/dol
/urr

/who The default output has been changed to provide more information, including
the release update, directory paths, and $RES and $RSO logical paths. The
installed drivers and logical paths are no longer listed by default, but can be
shown by setting /who=2. The C runtime library, byte sequence, and default
video attributes are no longer shown.

September 9, 2016 86
What's New in Uniface 9

What's New in Uniface 9.2


Uniface 9.2 features support for mobile applications, enhanced Web services support, and
integration. Uniface provides built-in migration functionality when importing an existing Uniface
8 or 9.1 application into Uniface 9.2.

Table 83. New and Changed Functionality in Uniface 9.2

Functionality Description More Information

Uniface Mobile Uniface now supports applications on mobile devices that Theme: Mobile
Applications support Windows CE 5. Supported databases include DB Applications
Anywhere, Oracle Lite, and EDB.

Enhanced Web Services Uniface now supports Web services call-in and call-out for Web Services
both Windows and Unix. Web services support has been
enhanced to handle the more commonly used document
format rather than the RPC format.

Installation The default database for Uniface is automatically started as Start the Uniface
a service. Development Environment

Enhanced Diagram Editor The Diagram Editor can now show fields and keys for Diagram Editor
each entity. You can also select the entities to include in the
diagram, so each diagram for a model can show a subset of
entities.

Unicode improvements On Oracle and Solid, the full Unicode character set is now Restrictions on Use of
supported in the sql Proc statement, SQL Workbench, and Unicode and Installable
error messages. Character Sets

Widget enhancements Uniface widgets can now use any system mouse cursor. In Mouse Pointer
addition, all widgets (except the tree widget) can now have Tool Tip Text
tool tips, which can be set dynamically in Proc.
The properties that define the cursor and tool tip can be set
in the widget properties dialog and in Proc.

The Tab widget has additional properties, Tab Position and Tab
Style that can set the position of the tabs and Windows
mobile display style.

The History window property has been replaced by Keep Keep Layout State
Layout State and Layout State Storage property. Layout State Storage
Components that have the History property set are
Migrate Component
automatically migrated to the new properties.
Window Properties

Uniface Router Uniface Router is automatically restarted if it crashes. Uniface Router

TCP Connector The TCP connector has been enhanced to support wireless TCP/IP and IPv6
connectivity. Connector

SOAP Call-out Connector A new U2.0 connector is delivered to support WS-I Basic WSDL
Profile 1.0 Compliant binding styles. The older U1.0 Call-Out From Uniface to
connector, that supports only the RPC/Encoded binding a Web Service
style, is still available.

September 9, 2016 87
What's New in Uniface 9

Table 83. New and Changed Functionality in Uniface 9.2 (continued)

Functionality Description More Information

New DBMS Connectors Uniface now supports DB2 Everyplace, Oracle Lite, and DB2 Everyplace
EDB databases for use in mobile applications. EDB
Oracle Lite

Memory Management The way in which Uniface handles USM memory has been $MEMORY
changed. Formerly, Uniface never freed up USM memory.
Now it does so when there is more than the minimum unused
memory available. This amount is configurable using the
$MEMORY setting.

Automatic Field Lists Segmented string fields (packing codes SC and SU) that are Field Lists
not needed for a component to function properly, are now Segmented Fields: String
excluded from automatic field lists. This can result in a Packing Codes (SC and
significant performance improvement. SU)

Solid Uniface now uses named pipes instead of shared memory


for Solid.

Documentation The documentation on deployment and printing has been


Enhancements rewritten.

Uniface 9.2: Changes in Proc


New Proc instructions have been added, existing Proc has been enhanced, and some Proc has
been deprecated.
For more information, see Proc statement and function descriptions in the Uniface Reference
section of the Uniface Library.

Table 84. Changes in Proc

Proc Description

$clock and $datim When used without Source, these Proc functions are accurate to one
hundredth of a second (1 tick). In Uniface 8 they were accurate to the
second.

Uniface 9.2: Changes in Command Line Switches


Changes have been made to the functionality of some command line switches and subswitches
For more information, see command line switch descriptions in the Uniface Reference section
of the Uniface Library.

Table 85. New Command Line Switches and Subswitches

Switch Description

/bare Import a Document/Literal WSDL file using the Document/Literal


Bare binding style.

September 9, 2016 88
What's New in Uniface 9

Table 85. New Command Line Switches and Subswitches (continued)

Switch Description

/rpcencoded Create a RPC/Encoded WSDL file from a Uniface signature.

Uniface 9.2: Changes in Assignment Settings


A number of changes have been made to assignment files and sections.
For more information, see the assignment setting descriptions in the Uniface Reference section
of the Uniface Library.

Table 86. New Assignment Settings and Sections

Assignment Setting or Section Description

$MEMORY Controls memory allocation for the Uniface application. It is especially


useful for mobile devices.

What's New in Uniface 9.1


Uniface 9 features enhanced Web application development, more flexible form layout, Unicode
support, extended XML support, new widgets, and functionality changes that support these
initiatives. Uniface provides built-in migration functionality when importing an existing Uniface
8 application into Uniface 9.
For more information about the new functionality, see the topics referred to in the More
Information column. If the listed topic is not in this document, it is in the Uniface Library.

Table 87. New and Changed Functionality in Uniface 9.1

Functionality Description More Information

Unicode support Uniface is now Unicode-enabled, so you can create fully Theme: International
international applications. Applications

Enhanced Web Uniface applications for the Web are now based on XHTML rather Uniface 9.1: Changes
development than HTML, making them more extensible and portable. The in Web Development
functionality of the UComposer is now integrated into the Server [p. 92]
Page Editor, making it possible to edit and save the data structure
and layout of server pages in the Uniface Development
Environment, instead of generating and maintaining external
HTML skeleton files.

Diagram Editor It is now possible to create and edit multiple diagrams for each Diagram Editor
application model, which can display supertype and subtype entities,
one-to-many relationships, and inheritance relationships.

Dynamic form layout It is now possible to determine the layout of fields on forms in Proc Changing Form Layout
using $paintedfieldproperties. Although you define the data Dynamically
structure and initial form layout in the Form Editor, you can
modify form layout by changing the new position and size

September 9, 2016 89
What's New in Uniface 9

Table 87. New and Changed Functionality in Uniface 9.1 (continued)

Functionality Description More Information

properties of fields. Thus, the layout is no longer restricted to a


frames-in-frames approach.

Dynamic menus Menus can be dynamically built using Proc code. A new type of Dynamic Menus
menu item serves as a placeholder for dynamic content added by
the new $inlinemenu Proc function.

Enhanced color Color handling has been extended with your choice of RGB colors, Color Handling
handling MS Windows colors, or Web colors (conforming to the W3C
standard), enabling visual integration into the Windows desktop
appearance and improved customization for end users, if required.
You can add color customization functionality for application end
users using the new Color List and Color Box widgets, or use the
colorbox Proc statement to launch the Microsoft Windows Color
dialog box from within the application.

New widgets and In addition to the Color List and Color Box widgets, the following Widget descriptions in
enhancements widgets have been added: Rich Edit Box, Month the Uniface Library.
Calendar,Output Box , and Progress Bar.
The Grid widget has been enhanced to allow dynamic changes to
the cell widget types, field-based color, spin button and drop-down
widgets. In addition, many existing Uniface widgets have additional
properties.

Extended support for It is now possible to set default background colors and images for Controlling the
background colors and startup shells, form component windows, and entities, and to set Appearance of an
background images these properties in Proc. A new Background Image (backimage) Application
property is available for form windows, startup shell windows, and
entities. It is a dynamic property that replaces the static image
property.

Import and export In Uniface 9, data is exported only as XML 1.0 compliant data, $ude
enhancements and optionally compressed into .zip files. The TRX format is entitycopy
supported only for import.
New Proc instructions have been added to enable import, export,
and data conversion from Proc, and local file management Proc
instructions have been enhanced to support zipped files.

Zip support Uniface now supports zip archives in all file system I/O, including Zip Files
import and export, and file management Proc. This allows you to Proc for File System
access files in zip archives using regular file I/O instructions, Management
including file redirections in your assignment file.

Enhanced file New Proc statements and function have been added that support Proc for File System
management creating, moving, renaming and deleting files, taking redirections Management
in the assignment file into account.

September 9, 2016 90
What's New in Uniface 9

Table 87. New and Changed Functionality in Uniface 9.1 (continued)

Functionality Description More Information

XML Component APIs Uniface now provides internal components that can be used to read Procedural XML
and write XML in Proc. Use UXMLWRITER to generate a XML file Handling
or data stream. Use UXMLREADER to parse an existing XML file or
data stream.

Component text Component text is migrated to a Uniface 9 Label widget Label


(unattached), with the attributes FormText=True, Font=FormText,
and Transparency=True. Pieces of Uniface 8 component text
that are directly adjacent horizontally (that is, without any
intervening spaces) are converted to a single Uniface 9 Label.
In character mode (CHUI), setting Transparency=True has no
effect. To appear transparent, the background color of the label
must be set to the background color of the parent widget or entity.

Typed component Component templates are typed in Uniface 9, so each component Component Templates
templates type (form, report, and so on) has a corresponding component
template. In Uniface 8, component templates are not typed, meaning
that a specific template can be used potentially by several
component types. Component templates are automatically migrated
to typed component templates based on the components that use
it.

Enriched String data The String data type has been enriched to support the same syntax Uniface 9.1: Changes
type definition as Special String. The Special String data type is no in Default Behavior of
longer available and there are new field syntax properties and String Data Type
shorthand codes. [p. 94]

Meta Dictionary The Uniface Meta Dictionary has been changed to add a new
UDIAGRAM for the model diagrams, enable Unicode on
Repository fields used for filenames, and change Special String
fields have been changed to String.
For those String fields used for Unicode, the packing code has been
changed from C to W, and they are located in the variable-length
part of the entity definition.

Registry entry For Uniface 9, the location in the Microsoft Windows registry of
the history settings for layout management has changed.
Since 9.7.01, it is
HKEY_CURRENT_USER\Software\Uniface\Uniface 9\. If you
do not want to lose your Uniface 8 layout settings, copy the USYS8
registry settings to this location.

Widget size The size of the widgets in Uniface 9 may vary slightly from their
size in Uniface 8. For example, the list box is slightly larger. This
is because the Unicode-enabled Windows control used to represent
the widget is accurately calculated. The non-Unicode control used
in Uniface 8 was not.

September 9, 2016 91
What's New in Uniface 9

Deprecated, Replaced, or Removed Functionality


• Application distribution using distribution lists is no longer supported. You can distribute
and deploy applications using deployment archives.
• Cross-reference facility as implemented in earlier Uniface versions is not supported.

NOTE
Uniface 9.3 introduces a new implementation of this functionality.

Uniface 9.1: Changes in Web Development


Uniface 9 introduces greatly enhanced Web development, which results in many changes in the
way Uniface supports and stores Web application definitions.
The major changes are the following:
• Server page layout information is incorporated into the server page itself rather than in an
external skeleton file. The complete definition of a server page is stored in the Repository
and compiled into .usp files.
• The new Server Page Editor incorporates an integrated graphical HTML layout editor,
the Server Page Layout Editor, which is the main tool for defining server pages. The
Component Editor is used to view the data structure, load fields, define properties, and
write Proc code in triggers.
• Skeleton files (.hts) are no longer required, but they are still supported at runtime. You
can use the $SEARCH_SKELETON assignment setting to designate the search order for the
source of Web layout information. The default is to use the .usp file. For more information,
see $SEARCH_SKELETON in the Uniface Library 9.7.03..
• HTML hooks are no longer required. Instead the Uniface XHTML tags can be inserted
directly into the server page layout.
• It is now possible to load fields into an empty server page entity using Free Format and
Tabular layout, as well as Vertical layouts.

Complete documentation about Web development and deployment using Uniface is available
in Theme: Web Application in the Uniface Library. The tutorial Developing Your First Static
Web Application can help you get started.

Skeleton Files
Uniface 9 integrates Web page layout information into the structure of server pages and stores
this layout information in the Repository, whereas Uniface 8 used HTML skeleton files (.hts).
Uniface 9 server page layouts are available at compile time and can be edited using the integrated
HTML editor, which appears when you open a server page component.
In Uniface 8, HTML skeletons are explicit and separate from their corresponding Uniface 8
server pages. A Uniface 8 HTML skeleton is combined with its server page only at run time,
so you cannot see what your server page will look like until you have built and modified the
skeleton file and tested the server page.

September 9, 2016 92
What's New in Uniface 9

The Migrate Repository Utility offers several options for migrating Uniface 8 server pages,
with or without corresponding skeleton files. For more information, see Migrate Repository
Utility in the Uniface Library 9.7.03..
A server page can contain only one HTML structure. If multiple HTML structures are required
to generate the HTML output for one server page, you need to use external .hts files. However,
Uniface 9 does not automatically synchronize external skeleton files (.hts) with a server page.

Server Page Editor and Layout Editor


Server page layout information is maintained by the enhanced Server Page Editor using an
integrated graphical HTML layout editor. The Server Page Layout Editor replaces the Paint
Tableau used in previous Uniface versions. It is used to define the layout, including the
embedded data structure and other HTML-based definitions, by inserting text, images, links,
tables, and so on. The layout editor also supports more advanced features such as Java scripting
and style sheets.
For more information, see Server Page Editor in the Uniface Library 9.7.03 and Server Page
Layout Editor in the Uniface Library 9.7.03..
Because of the enhanced Uniface 9 functionality, the Component Editor Preferences form no
longer has the options Generate HTML and HTML Editor.

Uniface XHTML tags


In Uniface 8, HTML hooks were used to insert Uniface-specific HTML tags into the HTML
structure. in Uniface 9, you can insert these tags directly into the layout from the Insert menu
of the Server Page Layout Editor.
• <x-entity>—defines component entities
• <x-occurrence>—defines multiple occurrences
• <x-subst>—defines Web-specific fields and label representations. It can also be used to
insert a limited set of Uniface functions and JavaScript files

For more information, see Uniface XHTML Elements for Static Server Pages in the Uniface
Library 9.7.03 and Layout of Static Server Pages in the Uniface Library 9.7.03..

Server Page Data Structure

NOTE
Uniface 9.4 introduced a different mechanism for synchronizing the component data structure
and layout. Synchronization is no longer automatic.

The entity and field elements in the HTML structure control the component’s data structure.
The component's data structure determines the entity relationships and order of field processing.
It can be viewed in the Component Editor and is automatically regenerated at any significant
Component Editor action, such as store, compile, exit, and so on. The data structure can also
be manually regenerated using the Refresh Structure option in the toolbar or View menu.
Objects in the data and HTML structure are synchronized based on the object name. Any
duplicates can result in unpredictable behavior.

September 9, 2016 93
What's New in Uniface 9

It is possible to define the data structure only in the Server Page Layout Editor, not in the
Component Editor. In Uniface 8, because you could modify the .hts file, it was possible that
the component's data structure could differ from the HTML structure, which can cause undesirable
behavior in Uniface 9. For more information, see Migrating to Uniface 9 in the Uniface Library
9.7.03..

Uniface 9.1: Changes in Default Behavior of String Data Type


The Special String data type for fields is discontinued in Uniface 9.1 because the String data
type now offers the functionality of both Uniface 8 Strings and Special Strings. The default
behavior of a Uniface 9 string field is different from that of a Uniface 8 string, so it is possible
that your application might behave differently.
The following table summarizes the differences in default behavior between Uniface 8 String
and Special String fields, and Uniface 9 String fields:
Feature Uniface 8 String Uniface 8 Special String Uniface 9 String

Characters Allowed (field MUL (font 0 and 1) FUL (All fonts) FUL (as defined with the
syntax) $FULL_SYNTAX
assignment setting). For
more information, see
$FULL_SYNTAX in the
Uniface Library 9.7.03.

Subfield separators Not allowed Allowed Allowed

Bold, Italic, and Not allowed Allowed Allowed. Syntax


Underline for Unifields definitions for Strings are
YBLD, YITA, and
YUND, by default

Gold characters Not allowed Allowed Allowed. Default syntax


definition for Strings is
YGLD

The input mode when Direct input mode Language-specific input Language-specific input
AUTOIMEOPEN=On in the mode mode, unless NIME is
INI file. specified in the field
syntax property

Multi-line behavior of Single-line Multi-line Single-line


fields painted with a
height of 1 cell

Multi-line behavior of Multi-line Multi-line Multi-line (no change)


fields painted with a
height of 2 or more cells

IME (Input Method Editor)

NOTE
This section is relevant only if IME is available on your system.

September 9, 2016 94
What's New in Uniface 9

In Uniface 8, when AUTOIMEOPEN is On, the language-specific input mode (such as Hiragana)
in the IME is automatically started for Special Strings but not for Strings. In Uniface 9 it is
started for Strings.
The AUTOIMEOPEN initialization setting affects all string fields in a Uniface application. You
can use the new YIME or NIME field syntax properties to set the input mode for specific string
fields. If present, the YIME and NIME properties override the AUTOIMEOPEN setting.

Multi-Line With Height of 1 Cell


In Uniface 9 String fields that are painted with a height of 1 cell, carriage returns are no longer
allowed . This changes the field’s default behavior from multi-line to single-line, that is, with
syntax NCR for Unifields, and the widget property Multiline set off for other text widgets.
You can override these defaults—to turn multi-line behavior back on:
• For Unifields, set the field syntax definition to YCR (new).
• For an EditBox or a RichEditBox, set the widget property MULTILINE to On and set the
field syntax definition to YCR.

New Shorthand Codes


The following new shorthand codes are available for Strings in Uniface 9:
• YCR—carriage return allowed. The default syntax definition for fields with a height of one
cell is carriage returns not allowed (NCR). To override this default, use YCR.
• YGLD—Gold characters allowed (default). In Uniface 8, Gold characters could be stored
only in Special Strings. To override this default, use NGLD.
• YIME—language-specific input mode is automatically switched on when the string field
has focus. For string fields, YIME is the default.
• NIME—direct input mode is automatically switched on. For non-string fields, the default
is NIME.
If YIME and NIME are not specified, the IME is started according to the AUTOIMEOPEN
INI file setting. If YIME or NIME is specified, it overrides the AUTOIMEOPEN setting. (For
more information, see AutoImeOpen in the Uniface Library 9.7.03.).

NOTE
The Uniface 8 setting AUTOIMECLOSE is obsolete in Uniface 9.

Unchanged Behavior
After migration of a Uniface 8 application to Uniface 9, the following related functionality is
unchanged:
• The default syntax definition of originally String fields painted with a height of 1 cell—where
carriage returns were not allowed in Uniface 8, they are still not allowed in Uniface 9
(single-line)

September 9, 2016 95
What's New in Uniface 9

• The default syntax definition of originally Special String fields (String in Uniface 9) painted
with a height of 2 cell or more—where carriage returns were allowed in Uniface 8, they
are still allowed in Uniface 9 (multi-line)

Uniface 9.1: Changes in Proc


New Proc instructions have been added, existing Proc has been enhanced, and some Proc has
been deprecated.
For more information, see Proc statement and function descriptions in the Uniface Reference
section of the Uniface Library.

Table 88. New Proc Statements

Proc instruction Description

colorbox Starts the Microsoft Windows Color dialog box

dircreate Creates the specified directory

dirdelete Deletes the specified directory

dirrename Renames the specified directory

entitycopy Copies one or more occurrences from a source to a destination

filecopy Copies the specified file to the target location

filedelete Deletes the specified file

filemove Moves the specified file to the target location

filerename Renames the specified file within the same directory

flush Flushes and closes the specified ZIP archive

lflush Flushes and closes the specified ZIP archive, ignoring any assignment file
redirections

Table 89. New Proc Functions

Proc instruction Description

$curoccvideo Returns or sets the video properties for fields of the current occurrence

$fieldsyntax Returns or sets the syntax attributes of the specified field

$fieldvideo Returns or sets the video attributes of the specified field

$paintedfieldproperties Returns or sets the position and size for a specific instance of a field widget
drawn on a form

$procreturncontext Returns context information about the return value of the previous Proc
instruction

$inlinemenu Inserts or retrieves one or more menu items at the location of an inline menu
placeholder

$itemcount Returns the number of items in a list

September 9, 2016 96
What's New in Uniface 9

Table 89. New Proc Functions (continued)

Proc instruction Description

$string Returns a string that replaces each XML entity in the parameter string with the
character represented by the entity

$ude Exports, imports or converts data within the context of the development
environment, depending on the arguments

Table 90. Changed Proc Instructions

Proc instruction Description

$fieldproperties Dynamic form layout support. Can set and get the position and size of a specific
field in the hitlist.

$properties Sets and gets the default position and size of fields in the hitlist.

$stripattributes Uniface 9 does not strip unknown characters from the string, unlike Uniface 8.
and stripattributes

File I/O: Zip support. These instructions can now create, read, and write zip files and
• filedump
directories. For more information, see Syntax of File and Directory Names in
the Uniface Library 9.7.03..
• fileload
Unicode encoding for fileload, filedump, lfileload, and lfiledump. These
Local directory instructions have a parameter specifying the type of Unicode encoding.
management:
• ldircreate

• ldirdelete

• ldirrename

• $ldir

• $ldirlist

Local file
management:
• lfilecopy

• lfiledelete

• lfiledump

• lfileload

• lfilemove

• lfilerename

• $lfileexists

• $lfileproperties

September 9, 2016 97
What's New in Uniface 9

Uniface 9.1: Deprecated Proc


Proc instructions that Uniface intends to discontinue are labeled Deprecated. Deprecated Proc
is still supported, but the level of support depends on the reason it is deprecated. Proc can be
deprecated if it is based on an obsolete concept or uses old syntax.
• Proc instructions using old syntax are supported but no longer promoted, meaning that they
are not highlighted in the Proc Editor and are not documented. The Proc compiler issues
an information message when it encounters Proc of this type. Uniface will fix bugs if
customers request them but will not change such instructions proactively.
• Proc instructions based on obsolete features are supported, but the documentation directs
customers to the new concept. Uniface will fix bugs if customers request them and may
make changes proactively, if required.

Table 91. Deprecated Proc

Deprecated Proc Preferred Proc Reason

abs $abs Old syntax

acos $acos Old syntax

asin $asin Old syntax

atan $atan Old syntax

concat $concat Old syntax

condition $condition Old syntax

cos $cos Old syntax

curocc_video curoccvideo Old syntax


$curoccvideo

delete_instance deleteinstance Old syntax

display_length displaylength Old syntax


$displaylength

e $e Old syntax

exp $exp Old syntax

exp10 $exp10 Old syntax

fact $fact Old syntax

field_syntax fieldsyntax Old syntax


$fieldsyntax

field_video fieldvideo Old syntax


$fieldvideo

file_dump filedump Old syntax


lfiledump

September 9, 2016 98
What's New in Uniface 9

Table 91. Deprecated Proc (continued)

Deprecated Proc Preferred Proc Reason

file_load fileload Old syntax


lfileload

frac $frac Old syntax

idpart $idpart Old syntax

int $int Old syntax

item $item Old syntax

log $log Old syntax

log10 $log10 Old syntax

ltrim $ltrim Old syntax

new_instance newinstance Old syntax

$outer $entinfo Old syntax

perform activate Obsolete feature

pi $pi Old syntax

power $power Old syntax

pragma None Obsolete feature. For more


information, see Call-Out to 3GL in
the Uniface Library 9.7.03.

print_break printbreak Old syntax

replace $replace Old syntax

rtrim $rtrim Old syntax

run activate Obsolete feature

scan $scan Old syntax

sendmessage activate Old syntax

sin $sin Old syntax

split $split Old syntax

sqrt $sqrt Old syntax

strip_attributes stripattributes Old syntax


$stripattributes

tan $tan Old syntax

$time $clock Old syntax

typed $typed Old syntax

valuepart $valuepart Old syntax

September 9, 2016 99
What's New in Uniface 9

Uniface 9.1: Changes in Assignment Settings


A number of changes have been made to assignment files and sections.
For more information, see the assignment setting descriptions in the Uniface Reference section
of the Uniface Library.

Table 92. New Assignment Settings and Sections

Assignment Setting Description


or File Section

[META_LANGUAGE] New file section containing character mappings between Unicode and the character
set specified in LANGUAGE.

$ALLOW_NOBREAKSPACE Allow non-breaking spaces (0xA0) in Proc code.

$EXTENDED_SYNTAX Specify which characters are allowed as extended characters (~& or ~@) in the field
syntax definition.

$FILELOAD_SINGLE_LINE Strip end-of-line character from empty input file when using fileload and
lfileload.

$FULL_SYNTAX Specify the allowed character set for the FUL shorthand code for field syntax.

$GAIJI Allows the use of Japanese Gaiji characters.

$META_IN_TRX Sets the data storage format of String fields with the U* packing code to XML or
TRX.

$SEARCH_SKELETON Specify the order of searching for layout definitions of server pages.

$WIDE_CHAR_BEHAVIOR Specifies the character set used for String fields with the W packing code.

$ZIP_CHARSET Sets the character set used for reading and writing to zip archives. If not specified,
$SYS_CHARSET is used

$ZIP_LINECRLF Specify the end-of-line charater to use when reading and writing to zip files. If not
specified, $NEWLINE is used.

Table 93. Deprecated, Replaced, or Removed Assignments Settings

Uniface 8 Uniface 9 replacement

$DOUBLE_WIDTH=8 $GAIJI=true

$DOUBLE_WIDTH=33 $GAIJI=false

$ONE_BYTE_STORAGE None

$TESTMODE_DESCRIPTORS $CHECK_SIGNATURE_ID.

Zip Path Assignments


Assignment file redirections now accept zip archive definitions. For example:
[FILES]
; All forms compiled into a ZIP archive
*.frm = myforms.zip:*.frm
; All xml files are imported from the sources ZIP in the installation directory

September 9, 2016 100


What's New in Uniface 9

umeta.xml = usys:..\sources\sources.zip:umeta.xml
usource.xml = usys:..\sources\sources.zip:usource.xml
udefault.xml = usys:..\sources\sources.zip:udefault.xml

Uniface 9.1: Changes in Initialization Settings


A number of changes have been made to initialization settings.
For more information, see initialization setting descriptions in the Uniface Reference section
of the Uniface Library.

Table 94. New, Changed, and Obsolete Initialization Settings

Setting Description

htmlhelp The native online help for a Uniface application that is deployed on Microsoft
Windows can be HTML-based help or WinHelp. If the setting is not present,
the default value is TRUE.

registry_style The value BY_INI is no longer supported.

AutoImeClose Obsolete in Uniface 9

Widgets
To make Uniface behavior more standards compliant, the default widget definitions for the
following widgets now include the setting dimmedBackColor = 0ff. This results in the text
of inactive fields being set to gray by Microsoft Windows, but Uniface does not change the
background color, as was the case in Uniface 8.
• ColorBox
• ColorList
• Combobox
• DropDownList
• EditBox
• ListBox
• NoEditBox
• SpinButton
• RichEditBox

If you prefer the background color to be changed as well, change the value of these properties
in usys.ini.

Uniface 9.1: Changes in Command Line Switches


Changes have been made to the functionality of some command line switches and subswitches
For more information, see command line switch descriptions in the Uniface Reference section
of the Uniface Library.

September 9, 2016 101


What's New in Uniface 9

Table 95. New Command Line Switches and Subswitches

Switch Description

/noc Compiles and saves components to disk as uncompressed files.

Table 96. Changed Command Line Switches and Subswitches

Switch Change

/cpy Supports ZIP archives


No longer allows /cut switch

/imp Supports ZIP archives

Table 97. Deprecated and Deleted Switches

Switch Change Reason for Change

/cro Deleted Cross-reference facility is no longer available.

/cut subswitch Deleted TRX is no longer a supported export file format


(with /cpy)

/pre switch Deleted Application distribution using distribution lists is no


longer available

/exp switch Deleted Application distribution using distribution lists is no


longer available

/zip switch Deleted Components are now compressed by default, so this


switch is no longer required.

September 9, 2016 102


What's New in Uniface 9

Please direct questions about Uniface to uniface.info or uniface.technical.support@uniface.com.

For comments or questions about this document, you can email doc.feedback@uniface.com.

Copyright © 2016 Uniface B.V.. All rights reserved.

U.S. GOVERNMENT RIGHTS-Use, duplication, or disclosure by the U.S. Government is subject to restrictions as set forth in
applicable license agreement with Uniface B.V. and/or its predecessor in interest and as provided in DFARS 227.7202-1(a) and
227.7202-3(a) (1995), DFARS 252.227-7013(c)(1)(ii)(OCT 1988), FAR 12.212(a)(1995), FAR 52.227-19, or FAR 52.227-14(ALT
III), as applicable. Uniface B.V.

This product contains confidential information and trade secrets of Uniface B.V. Use, disclosure, or reproduction is prohibited
without the prior express written permission of Uniface B.V.

Uniface is a registered trademark of Uniface B.V.

Adobe® Reader® is a registered trademark of Adobe Systems Incorporated in the United States and/or other countries.

All other company and product names are trademarks or registered trademarks of their respective owners.

Local Build: September 9, 2016, 15:47

September 9, 2016 103

You might also like