Uniface 10.4.01: Issues Fixed Since 10.3.02
Uniface 10.4.01 consolidates bug fixes made in patches since 10.3.02. Documentation was updated for the following issues.

When a trigger with default runtime behavior is declared but left empty, its runtime behavior is now the same as what it was in Uniface 9. The default runtime behavior of triggers apstart, accept, preactivate, prerequest, postrequest, quit, and store is now correctly described. For more information, see Triggers with Default Behavior.

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.

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

To retrieve details of errors that occur when calling out to COM components, if is now possible retrieve the details from the ADDITIONAL item returned in $procerrorcontext. Prior to this, COM error details were only available in the message frame or log file. For more information, see

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 /shut
) NetworkConnector:
Host+
Port .
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.
For more information, see urouter, /stop (or /shut) , and Stop and Start the Uniface Router.

With the updated CEF, it is now possible to use MSAA-based testing tools with HTML widgets. To do so, you must set Accessibility=TestMode
in the initialization file and also specify a port number that allows access to the widget. To do so, set the new widget property debugport. For example:
Html=uhtml(debugport=8081)
For more information, see uhtml (HTML Widget) and DebugPort.

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 .

Uniface usually follows Windows behavior in applying colors, but for recent versions of Windows, this can lead to undesirable results for the headers in grid widgets. Two new properties, HeaderColor and HeaderTextColor, now enable you to control these colors.
In new installations, these properties are set by default in usys.ini. To apply these defaults to an existing installation, use the following settings:
[widgets] ... Egrid=egrid(font=editfont;labelfont=editfont;bordertype=flat;bordercolor=silver;headercolor=ControlLight; headertextcolor=black)
For more information, see egrid (Grid),Header Color (HeaderColor) , and Header Text Color (HeaderTextColor) .

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.

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.

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.
For more information, see DatePicker and Display Formats for Date and Time Data.

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.

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.

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 webload and $procerror.

You can use the set and reset ProcScript commands to set the value of $instancemod to 0
. For more information, see $instancemod.

There is no simple match between Uniface data types and JavaScript types and values. Depending on the widget properties, the values returned by getValue may need to be converted before processing. For more information, see getValue().

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 false
. For more information, see RtlAttachMirroring.

In 10.3.01, specifying library
as the object type has no effect when compiling and exporting objects using $ude. You must specify the type of library object, such as message
or variables
. For example:
$result = $ude ("compile", "message", "", "", "library=sales")
Although library
is accepted for the ObjectType parameter, it does nothing. For more information, see

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

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 in the Properties Inspector.

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.

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
True
for 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.GENERIC>
and< MY_ENT>
will both resolve toMYENTITY.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
=1
.For more information, see Migration of Component Templates and Attached Components and Migration Logicals.

If you use non-ASCII characters in configuration file or other text file read by Uniface, you need to ensure that the encoding is UTF-8 or UTF-16, and that the apporpriate Byte-Order-Mark is written to the file. For more information, see Uniface File I/O.

If a display format pattern (DIS(Pattern)
or 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

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.

It is therefore not guaranteed that the ws_getsVisible operation is always fired after the ws_getsInvisible operation when switching between two IDE Editors and user-defined worksheets. For more information, see Worksheet Plug-In Operations.

To compile entities, specify the entity
object type. The model
object type is now deprecated. For more information, see $ude ("compile").

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

In network connection strings, the HostID, PortNumber, UserName, and Password may be replaced by a question mark (?) or omitted completely. If one of these elements is omitted, the corresponding part of a default path is used. If a question mark is specified, either in the network connection string or in a default path, a logon dialog is displayed. For more information, see Network Connection Strings.

-8
if certificates required by STARTTLS security driver cannot be found.
This can occur if the certificate file or location is not correctly specified (using USYS$TLS_PARAM), or if the specified file does not contain the correct certificate. For more information, see

If there is no response from the SMTP server, GetSMTPResponse returns empty values for the reply code or message. If authentication fails when setting the security context, an error code of 535 is returned. FOr more information, see GetSMTPResponse.

The new assignment setting $ZIP_KEEPOPEN prevents the Uniface Server from closing UAR and ZIP archives after every read. It is intended for use only in deployment environments, where the Uniface Server reads but does not write to UAR and ZIP files. For more information, see $ZIP_KEEPOPEN.