The Uniface 10 documentation is regularly updated to reflect new features, enhancements, bug fixes, and user feedback.
Currency: New MQL connector to support MySQL 8 on Windows
Version 5.0 of the MQL connector is now available. To use this connector, you need to copy libmysql.dll from connector folder of the MySQL installation to the common\bin folder of the Uniface installation.
Note: Be sure to copy the correct version. The 32-bit and 64-bit versions are not binary compatible.
For more information, see MySQL .
Issue 32087: Display format errors in numeric fields
If a display format pattern (
DIS($NLS(Pattern) consists of illegal characters, or it contains legal characters that are combined into an invalid display format, a compiler warning is issued, the display format is ignored, and the scaling defined by the database interface is applied.
This behavior is applicable to both form and dynamic server page components. Prior to this patch, this resulted in a format error in form components.
For more information, see Display Formats for Numeric and Float Data and Display Formats for Numeric and Float Data in Dynamic Server Pages
Doc Maintenance: Added list of unsupported ProcScript
ProcScript commands that were deprecated in Uniface 9 are not supported in Uniface 10. They result in a warning message when compiled and must be replaced by the current ProcScript command. For more information, see Uniface 10: Changes in ProcScript.
Feature: New LDAP U3.0 connector supports connections using TCP or TLS.
The new LDAP connector enhances security by supporting TLS connections to the LDAP server. It ensures that you can comply with a recent Microsoft Security Update (see 2020 LDAP channel binding and LDAP signing requirements for Windows).
Feature: Display format
$NLS(FormatPattern) in DSPs
The display format
$NLS(FormatPattern) is now supported in DSPs for fields with Numeric or Float data type and the
htmlinput widget of type
text. This makes is possible to specify the number of digits after the decimal point. For more information, see Display Formats for Numeric and Float Data in Dynamic Server Pages.
Feature: Bound to property in newly-derived component now defaults to qualified entity name
When creating a new derived component, the Bound to property now contains the qualified name of the generic entity, for example
MYENTITY.GENERIC instead of
MYENTITY. For more information, see Generic and Bound Entities and Fields.
Issue 31289: Using forward slashes as path separators is not supported when addressing registry keys
When addressing registry keys using $setting or deletesetting, you can only use a backslash (
\) as a path separator, not a forward slash (
/). For more information, see
Doc Maintenance: Corrected default timeout for LDAP logon timeout option
The default logon timeout for LDAP is 32 seconds. For more information, see logon timeout..
Feature: Display formats
$NLS(Float) in DSPs
$NLS(Float) are now supported in DSPs for fields with Numeric or Float data type and the
htmlinput widget of type
text. For more information, see Display Formats for Numeric and Float Data in Dynamic Server Pages.
Feature: New options for compiling palettes and templates
You can now use the new compile sub-switch /iap to compile all development objects regardless of their purpose (Normal, Palettes, and Templates). It is also possible to do so in ProcScript using the IncludeAllPurposes options with $ude("compile").
Issue 32060: Attached Property cannot be set in the Window Properties of a Form
You can set the Attachment property for a Form in the Properties Inspector. and the Modality property in the Window Properties. The Modality & Attachment setting has been removed from the Windows Properties dialog.
For more information, see Setting Widget Properties DeclarativelySetting Widget Properties Declaratively in the Uniface Library.
Issues 32071 and 32072: Migrated modeled and derived components now work correctly
Derived components that were migrated from Uniface 9 attached components, as well as derived components created from migrated modeled components (Uniface 9 component templates), can now be compiled correctly.
- The Is Bound property is now correctly set to
Truefor entities and fields in derived components.
- For better compatibility with Uniface 9 naming conventions, Uniface generates implicit constants mappings for both qualified and unqualified entity names when compiling derived components. For example, in a derived component with entity MYENTITY.ORG bound to generic entity MY_ENT.GENERIC, the references
< MY_ENT>will both resolve to
MYENTITY.ORG. For more information, see Generic and Bound Entities and Fields.
- A new migration logical is available for migration of derived components. By default, Uniface migrates implicit mappings for generic entity and field constants to explicit mappings in the
Declarations container of the derived component. However, these definitions override Uniface 10's automatic name resolution mechanism and, in most cases, this is unnecessary.
To prevent these definitions from being added during migration, you can first set the migration logical MIGRATION_REMOVE_MAPPING_DERIVED_COMPONENTS
For more information, see Migration of Component Templates and Attached Components and Migration Logicals.
Doc maintenance: Enhanced information on the use of external web page definitions
The /ext subswitch enables you to generate external server page layout definitions when compiling server pages from the command line. The information on how to use external layout files has been expanded.
Doc maintenance: Raw data parameter now supported in Service Stored Procedures
The Uniface Raw data type is not supported as a parameter for most service stored procedures. It is only supported on Sybase. See Parameter Types Used With Service Stored Procedures.
Issue 32067: Default name of Uniface Router service
When installing, stopping, or removing the Uniface Router service on Windows without specifying a service name, the default name is now assumed to be
Uniface10 URouter. Previously, the name was assumed to be
Uniface9 URouter, so if you want to stop or remove a service that was installed with the old default name, you must explicitly specify it.
For more information, see urouter.
Issue 32073: Compiling entities with $ude("compile")
To compile entities, specify the
entity object type. The
model object type is now deprecated. For more information, see $ude ("compile").
Issue 32076: Layouts of derived web components are now inherited from modeled components
Modeled components of type USP or DSP have an HTML layout that contains references to the generic entities and fields. In derived components these references are now replaced by references to the bound entities and fields. For more information, see
htmlinput widget of type
text now supports selected display formats for Numeric and Float data
In dynamic server pages, it is now possible to use format codes
K for Numeric and Float fields associated with the
htmlinput widget of type
text (such as the EditBox logical widget).
Uniface returns the appropriate warnings or errors for invalid display formats, and when data cannot be formatted for display for deformatted for storage. For more information, see Display Formats for Numeric and Float Data in Dynamic Server Pages.
Feature: IDE command-line compilation can now return an exit code of 1 when errors are found
Uniface now returns a Windows exit code of
EXIT_FAILURE) when compiling Global ProcScript libraries from the command line (using /lib). For more information, see Compiling from the IDE Command Line.
Issues 32027 and 32056: Exporting DTDs using $ude("export")
To export Uniface DTDs, you can now use $ude("export", "dtd") instead of $ude("export", "model;dtd"). The
model object type is now deprecated when exporting using $ude("export"). For more information, see $ude ("export") .
Issue 32064: Compiling to UARs
It is possible to direct compilation output directly to a Uniface archive file (UAR). During development, this is not recommended, but it can be useful when preparing an application for deployment. It is also possible to direct compilation output to a remote host. For more information, see $RESOURCES_OUTPUT.
Feature: MSAA is now supported in the TabEx widget
You can use Microsoft Active
Accessibility (MSAA) API when automating tests for this widget, and its child tabs and the tab strip scrollbar. For more information, see
Issue 31569: Stopping remote Uniface Routers
It is only possible to shut down a remote Uniface Router using the Uniface Router Monitor or by calling UROUTMON operations.
It is no longer possible to stop a remote Uniface Router using
urouter /stop (or
If you need to shut down remote Uniface Routers in a script, for example, you must create a small application using the UROUTMON component, calling the CONNECT, ADMLOGON, and UROUTER_SHUT operations.
The UROUTMON component and Uniface Router Monitor now support a TLS connection to the Uniface Router.
To enable TLS support, a number of changes have been made to the UROUTMON component, and these have consequences:
- The CONNECT operation of the UROUTMON component has been updated to support longer connection strings. For more information, see CONNECT .
If you have created your own monitor using the UROUTMON component, you may need to enlarge the connection address field, used for connecting to the Uniface Router, to allow TLS profile names.
If you use the Uniface Router Monitor application provided in the distribution, be aware that the connection address will only show a maximum of 2 characters of the TLS profile name.
UROUTMON now makes use of network connectors, so TCP and TLS connectors can be configured in the monitor assignment file. This has the following consequences:
The connection timeout, which was built-in to the previous implementation, must now be explicitly set. To prevent long delays when a connection error occurs, set the network timeout. For example, in urmon.asn:
$net_timeout cct = 5
- You can send connector error messages to the application log file by setting $IOPRINT.
- If TLS is used, the UROUTMON component works only in the context of a Uniface application and cannot be called from 3GL components.
If you continue to use TCP for Uniface Router Monitor connections, you don't have to make any changes to your existing monitor application.
Feature: New assignment setting: $NO_DEBUG
$NO_DEBUG = 1, compiling components and application shells generates corresponding runtime objects that cannot be debugged. This is useful when preparing an application for release. It is the equivalent of the /nodebug command line switch.
For more information, see $NO_DEBUG.
Feature: IDE command-line compilation now exits with a non-zero exit code when the compiler encounters errors
Prior to this patch, Uniface always returned an exit code of 0 (EXIT_SUCCESS) when compiling from the command line. The new code makes it easier to automate compilation and build scripts so that they can determine whether to continue if compilation fails.
For more information, see Compiling from the IDE Command Line.
Feature: Additional options for $ude("compile")
Additional options are now available for $ude("compile"), which enable you to configure the information generated during compilation. These bring the functionality into line with equivalent assignment settings and command line sub-switches, such as $NO_DEBUG and /nodebug,
Currency: Removal of Dojo Widgets for DSPs
The Dojo widget library will no longer be delivered in future Uniface 10 installations.
Note: If you are still using the Dojo widgets (which were the default before Uniface 9.7), we strongly urge you to switch to the normal HTML5 widgets. The Dojo widget library is outdated, and support for Dojo is being phased out.
The Dojo widgets files are still provided in the Uniface 10.3.02 installation, but in this patch, the widget definitions are no longer be provided in the uweb.def file. If you still want to use the Dojo widgets: before applying this patch, copy the Dojo widget definitions from uweb.def to a file called web.ini in uniface\adm directory, or see Continuing to Use Dojo Widgets for DSPs.
Feature: Smart filtering added to Resource Browser of Define Keys/Indexes worksheet
In the Fields tab of the Define Keys/Indexes worksheet of the Entity Editor, it is now possible to filter the listed fields based on their name and description.
Feature: Updated Uniface templates
The Uniface default templates have been enhanced. Object descriptions have been updated and Field templates restyled for usability. To take advantage of these changes, choose Load Templates from the Main Menu ( ≡ ).
Doc Maintenance: Packing codes C, N, and H also support scaling
Updated the information about scaling support for numeric packing codes. For more information, see Packing Codes for Numeric Data.
Feature: Smart filtering added to Templates tab of Project Editor
The Templates tab of the Project Editor is now enhanced with smart filtering capabilities.
For more information, see Smart Suggestions and Filtering.
Feature: Create a New Project from the Start Page
It is now possible to create a new project from the Uniface IDE Start Page. For more information, see Create a Project.
For more information, see getValue().
Doc Maintenance: Third-party tool available for creating 9.png files for Android mobile
For more information, see Resource Bundle for Mobile Apps.
Feature: It is now possible to set the message severity for the compiler message
#Include not found.
By default, if Uniface cannot find a specified IncludeScript during compilation, it issues a warning message that it cannot find the specified IncludeScript (
1000 - (Preprocessor) #INCLUDE IncludeName Not Found).
You can now change the message severity level to
info using the assignment setting $INCLUDE_NOT_FOUND_LEVEL or the command line switch /ilv.
Feature: Smart filtering added to Templates tab of Component Editor
The Template tabs of the Component Editor are now enhanced with smart filtering and suggestions.
To support this, the default component palettes have been restructured and enhanced. They now feature an entity called
ENT.HIDDENINPALETTE which contains all other templates for fields and entities. Any entity with the suffix
HIDDENINPALETTE is hidden when the palette is displayed in the Resource Browser.
Note: To take advantage of changes made in the default templates in the Component Editor, you need to reload the default palettes and templates.
Issue 31789: Pathscrambler security has been enhanced
The Pathscrambler security has been enhanced to prevent tampering with encoded lines. It now appends a digest to strings or assignment file lines that contain encrypted data.
Existing files and strings that were encrypted with Pathscrambler will continue to work as they did before. However, it is no longer possible to regenerate them using the old encryption (without digest). This has consequences if you want to make changes to assignments and logon strings.
For more information, see pathscrambler.exe .
Issue 30978: Limits for SchemaList parameter of xmlToStruct
When specifying the SchemaList parameter of xmlToStruct/schema, $procerror returns
-4 if the
NAMESPACE exceed 4096 characters or the
LOCATION exceeds 260 characters.
For more information, see xmlToStruct.
Feature: Specifying the message level of compilation messages
When compiling from the command line, you can specify whether to display warning and information messages (in addition to error messages) . It is now possible to specify this at a general level using the new assignment setting $MESSAGE_LEVEL.
Feature: Smart filtering added to Templates tab of Entity Editor
For more information, see Smart Suggestions and Filtering.
Doc Maintenance: Exporting Libraries with $ude.
Libraries are typed in Uniface 10, so to export a library you must specify the type of object you want to export, rather than specifying just a library. For more information, see $ude ("export") .
Doc Maintenance: Using Pathscrambler
Scrambling section headers of assignment files is not supported. This has been made more explicit. For more information, see pathscrambler.exe .
Feature: Customizing license expiration messages handling
By default, when a Uniface license will expire within 30 days, Uniface starts displaying a hard-coded message in a dialog box whenever the application is started. Although it has always been possible to change the notification period , it is now possible to provide custom message handling in the retrieveMessage trigger or the application.
A new license option is provided in the $LICENSE_OPTIONS assignment setting. By specifying the
LM_NOTIFICATION_POSTMESSAGE option, Uniface suppresses the default notification message and sends the relevant expiry information to the application as an asynchronous message (postmessage), where it can be handled by code in the receiveMessage trigger.
For more information, see $LICENSE_OPTIONS.
Feature: New web triggers for custom reporting of server-side validation errors
In dynamic server pages (DSPs) it is now possible to define field-level web triggers for reporting and clearing validation errors returned from the server.
Uniface provides default reporting of validation errors, but this can be added to or replaced using the showError and clearError triggers.
Feature: Smart filtering added to Templates tabs of Library editors
Smart filtering capabilities have been added to the Templates tabs of editors for snippet libraries, Global ProcScript libraries, and IncludeScript libraries. For more information, see Smart Suggestions and Filtering.
Issue 32012: Android mobile apps now require NinePatch (.9.png) images for splash screens.
Normal resizable PNG files (.png) can no longer be used for custom splashscreens on Android. For more information, see Resource Bundle for Mobile Apps.
Feature: Enhancements for right-to-left (RTL ) desktop application development
This patch features several enhancements for RTL application development:
- The assignment setting $RTL_APPLICATION now works on left-to-right (LTR) systems, and not just on right-to-left (RTL) systems. For more information, see $RTL_APPLICATION.
- The direction of form components (as specified by the Direction window property) and fields (in the Field Layout) is now applied on a left-to-right system. Previously, it was only applied when the application was running on a right-to-left system. For more information, see
Direction and Field Layout.
- Menus are correctly mirrored, including the right-align marker.
- Fields, entities, and area frames that are attached to the left or right window border are now mirrored when run as RTL application. Thus, if the object's Attach to Window Border(Attach) property is set to Left, the widget, entity, or area frame is attached to the right in an RTL application. For more information, see Attach to Window Border (attach) .
These changes make it possible to develop an application on a left-to-right system (the Uniface IDE only runs LTR) and run, test, and deploy on both LTR and RTL systems. For more information, see Desktop Applications for Bidirectional Languages.
Issue 32009: New initialization setting for attachment behavior in right-to-left (RTL) applications
For migrated RTL applications that rely on absolute positioning of the Attach to Window Border(Attach) property, a new initialization setting is available to ensure compatibility. To prevent attached objects from being mirrored in an RTL application, you can set RtlAttachMirroring to
For more information, see RtlAttachMirroring.
Feature: Smart filtering for related One and Many entities
The Model tab of the Resource Browser in the Component Editor has been enhanced so that you can browse for entities that are related to the selected entity through one-to-many relationships.
In the Resource Browser U-Bar, you can enter or select Entity.Model
/many: to list the related entities, or choose One Entities or Many Entities from the Resource Browser context menu.
For more information, see Filter and Search for Objects in Resource Browser .
Issue 31877: $password now returns an encrypted password
Uniface transparently handles encryption and decryption when passing and returning the password to and from the database. The documentation for $password has been updated.
Important: This change in the behavior $password can cause compatibility issues if you have ProcScript that is expecting unencrypted passwords. Therefore, before releasing the patch to your users, check and correct the application logic.
Doc Maintenance: Clarify the cause of error 1633.
For more information, see 1633 Store not permitted on this form..
There are no documentation updates in this release.
Doc Maintenance: In Main U-Bar, suggestions are not offered for property names, labels, lines, or area frames.
In the Main U-Bar, object code suggestions for
prop: are provided to help you construct a valid URL. Once you have chosen one of these codes, no further suggestions are offered for object or property names.
For more information, see Smart Suggestions and Filtering
Feature: Smart filtering for snippets
You can now filter the contents of the Snippets tab in the Resource Browser to find the snippet you want to insert. For example, you can filter snippets intended for a target objector or module type, or find a snippet by module name or snippet description.
Issue 31967: It is now possible to set (or reset) the value of $instancemod
You can use the set and reset ProcScript commands to set the value of $instancemod to
0. For more information, see $instancemod.
Feature: Japanese language setups now support Reiwa era.
The language setup for Japan has been updated with the new Japanese Era Reiwa (令和).
For more information, see Japanese Era Date Formats.
Feature: HTTP must be explicitly enabled for mobile apps.
A new property, Enable HTTP, has been added to the Mobile Application Shell settings. By default, new mobile apps are now built with HTTPS for encrypted communication. If for some reason, you need to use HTTP, you must explicitly enable it.
For more information, see Application Shells for Mobile Apps.
Issue 31981: Updated images in mobile resource bundle.
New images are now provided in the Resource Bundle for Uniface and obsolete ones have been removed. You can replace these images with your own, as long as they conform to the image names and the standards required for the target devices.
For more information, see Resource Bundle for Mobile Apps.
Feature: Disable line numbering in Script Editor.
To turn line numbering off, you can edit the
SourceEdit widget definition in usys.ini by adding the option
gutters=fold. This can improve performance when a code container has a large amount of code.
For more information, see Configure Indentation and Line Numbering in the Script Editor.
Doc Maintenance: Updated the versions of Cordova plug-ins tested with Previewer App
For a list of the most recently tested versions of Cordova plug-ins, see Uniface Previewer App.
Feature: Smart suggestions when defining relationships.
The Model tab of the Resource Browser in the Entity Editor now provides smart suggestions. This enables you to find the One entity you want to use when defining relationships between entities.
Feature: New ProcScript function for setting client-side locale in DSPs.
A new ProcScript function, $webinfo("Locale"), enables you to set the client-side locale in a DSP application. This is used to apply locale-based formatting to Date, Datetime, Time data instead of using the default English locale (
"en"). For more information, see $webinfo("Locale").
Feature: Smart suggestions when adding entities and fields to the component structure.
The Model tab of the Resource Browser has been re-designed and now features a U-Bar that supports smart suggestions, so you can search for modeled entities based on their name. You can also browse for a selected entity's fields, sub-entities, or parent entity.
Issue 31888: The OnChange trigger may be fired more than once for the Datepicker widget.
Depending on the browser, the OnChange trigger may be fired more than once for the Datepicker widget or any native HTML5 controls for Time, Datetime-Local, Week, Month, and so on that are mapped to the Uniface physical widget
htmlinput with html:type set to
date. For more information, see webtrigger OnChange.
Doc Maintenance: Display Formats for Date and Time Data in DSPs
In Dynamic Server Pages, display formats for date and time may not be applied as expected, depending on the data type of the field, the HTML control to which the field's widget resolves, and the browser used.
The documentation has been expanded to clarify this behavior. For more information, see Display Formats for Date and Time in Dynamic Server Pages.
Feature: Format error when data type and
htmlinput type are incompatible
If the HTML control generated by the DSP
htmlinput widget is unable to correctly format the data for its input type, a format error results and an exception is displayed in the web browser's console. For more information on supported data types and how data is formatted for each
htmlinput type, see htmlinput.
Documentation: Restructured widget documentation
The widget documentation has been restructured to emphasize physical widgets rather than logical widgets.
In the past, the documentation discussed widgets in terms of logical widgets because these are visible in development environment when you select the widget type for a field.
However, logical widgets are just user-defined configurations for physical widgets. Uniface supplies a default set of logical widgets but you can define your own, in which case the emphasis on Uniface's own logical widgets is not helpful. It is the physical widgets that provide the functionality and determine the properties a widget can have.
For more information, see following topics and their sub-topics:
Issue 31930: Improved consistency in numeric handling provided by $number
A new version of the ICU (International Components for Unicode) libraries was integrated in 9.7.05 and 10.3.01. This resulted in some missing functionality and errors in numeric handling performed by $number. These have been corrected, and some inconsistencies reduced.
The improved consistency results in the following differences compared with Uniface 9.7.04:
- Trailing minus sign is now supported for basic numeric strings and scientific notation.
- Bracketed numbers are now seen as negative, also when using NLS locales.
- All white space is now ignored. In previous versions, white spaces were ignored in bracketed numbers, caused an error when outside the brackets, but caused truncation in scientific notation.
- All digit group separators are now ignored. In previous versions, they were ignored in basic numbers but caused truncation in scientific notation.
- NLS locales are now applied to scientific notation. This affects the interpretation of the number because the decimal point and digit group separators are NLS locale-specific.
For more information, see $number.
Feature: DLM 9.2 supports IPv6.
A new version of the DLM client is delivered in this patch. For more information, consult the DLM Installation Guide.
When using DLM 9.2, it is possible to specify the IP protocol version to use when connecting to the License Service. It is possible to do this at an application level using the
$LICENSE_OPTIONS assignment setting. For more information, see $LICENSE_OPTIONS.
Feature: Write Script Worksheet has been enhanced.
The Write Script worksheet of the Component Editor has been enhanced:
- You can now edit objects in the Structure of the Write Script worksheet. For example, you can rename or delete fields.
- Except for Form and Report components, you can also add objects using the new Template and Model tabs in the Resource Browser, and you can use standard editing functionality such as insert, copy, and paste.
- It is easier to split the Script Editor into two views, making it consistent with other Write Script worksheets.
Doc maintenance: Clarified contents of export files for migration.
If you want to maintain Uniface 9 entry inheritance behavior, it is strongly recommended that you use a single export file for the whole application, or at least combine application model and related components into a single file. For more information, see Migrate the Application.
Issue 31928: The sql92npw connector option is now supported for MSS connector U5.2.
For MSS connector U5.2, the sql92npw option was initially deprecated and the default set to
on. It is now possible to set this option
off, but the default remains
on for MSS U5.2 and higher. For MSS U5.1 and lower, the default is
off. For more information, see sql92npw.
Issue 31931: webload now reports an error if the submitted data value or format of a Date, Time, and DateTime field is incorrect.
In Dynamic Server Pages, when a Date, Time, or DateTime field is used, data in the field is validated on the server to ensure it has a correct value and format.
For more information, see getError().
Feature: You can now dynamically change the the Position property of popup forms using $windowproperties.
Issue 31899: When a Date, Time, or DateTime field is used with a DSP EditBox widget, the NLS locale is ignored in display formats.
In Dynamic Server Pages, when a Date, Time, or DateTime field is used with an EditBox widget, NLS formats are applied but the NLS locale is ignored, meaning that only English text is displayed in formats that call for text. This is also the case when a browser does not support the
Datepicker, and an HTML
text input control is used instead.
Doc Maintenance: Updated example for client-side data storage using Dynamic Server Pages.
For more information, see Client-Side Data Storage.