Migrate Component Variables wipe out template name

Author: ulrichmerkel@web.de (ulrich-merkel)

As most uniface experts are aware, the component variables (pre-10) have their own entity where you can enter layout information either as shorthand or template. Importing an existing form in U10 will loose all shorthand like WID() (perhaps they will never be of any use), but templates are totally wiped out. We are all aware that using templates (instead of hardcoded shorthand) provides a professional flexibility in changing the sources so I expect a lot of uniface customers will loose an important part of their implementation when component variable template names are lost.


  1. Hi Ulli, The Uniface 10 Migration Guide, section Migration Utility, states: 

    Converts component variables from separate objects to variable definitions in the component's Declarations container. Layout definitions that are not relevant are removed, such as right-aligned (RGT), and variables with an SS or Z data type are converted to S.

    Definitions like WID(), RGT are of no use in a component variable, since the variable is not displayed on screen. The only layout definitions that are converted to the new variable definition are DIS() and templates. Examples:

    numeric   DIS(999P99)            myNumber
    date      @LIB::DATE_MMYYYY      myDate

    A component variable's layout definition that points to a template in Uniface 9 is converted to @LIB::template_name In Uniface 10, modeled layout definitions (and modeled syntax and field interface definitions etc.) are stored in a library. At this point in time, that is a hard coded library named 'LIB', hence the use of the fixed prefix @LIB::  If you encounter a situation that does not adhere to the rules listed here, please forward a (small) test set, so we can follow up on that. Regards, Henk van der Veer

    Author: Henk van der Veer (henk.van.der.veer@uniface.com)
  2. Hi Henk, My small demo-test is sent via eMail,   Uli

    Author: ulrich-merkel (ulrichmerkel@web.de)
  3. Repro set received, problem reproduced and found the cause: the layout template (prefixed with @LIB::) is not converted if the datatype for the component variable is $ (any). After changing the datatype of the component variable for testing purposes from '$' into 'date' (using Uniface 9), then exporting/importing again, the layout template was used as expected:

    variables       date        @LIB::DTO10A_MYDATE      ABC_DOLLAR       string      ABC_STRING                       endvariables

    The fact that the reference to the modeled layout is lost in the migration for a component variable of type $ (any) does not seem correct. We will log an issue for this symptom. Regards, Henk van der Veer

    Author: Henk van der Veer (henk.van.der.veer@uniface.com)
  4. Hi Henk, thanks for the fast check on that issue. Uli

    Author: ulrich-merkel (ulrichmerkel@web.de)
  5. Recorded as bug# 31385 - Comp. variable of type '$' with layout template not migrated orrectly

    Author: Henk van der Veer (henk.van.der.veer@uniface.com)