Form field input differences
This topic describes differences in field input between I4GL and Genero BDL.
PICTURE chars disappear with null field
With IBM® Informix® 4GL, the mask characters defined in the PICTURE attribute of the
field are still displayed when you leave the field with no value.
With Genero BDL, the form field is left completly empty, without any character from the
PICTURE input mask. When re-entering the form field with the
PICTURE attribute, the mask characters appear again.
DATABASE FORMONLY
SCREEN
{          
[f01      ]
[f02      ]
}   
END 
ATTRIBUTES
f01 = FORMONLY.field1, PICTURE="AA-###-AA";
f02 = FORMONLY.field2;
ENDMAIN
    DEFINE rec RECORD
           field1 CHAR(9),
           field2 CHAR(9)
       END RECORD
    OPEN FORM f1 FROM "form"
    DISPLAY FORM f1
    INPUT BY NAME rec.*
    DISPLAY "rec.field1 = ", rec.field1
END MAINGenero BDL implements a consistent behavior while I4GL does not: The mask characters of a field
with a PICTURE attribute are part of the value. If a field is
NULL, no mask characters must be shown to the user to have a visual result that
corresponds to the actual field value.
Space clears whole DATETIME and INTERVAL field
With IBM Informix 4GL, if a DATETIME or INTERVAL field contains a
value, a single space input at the beginning of the field does not erase the whole value.
With Genero BDL, a single space input at the beginning of the field erases the current
DATETIME or INTERVAL value, as done for numeric and
DATE types.
DATABASE FORMONLY
SCREEN
{          
[f01                        ]
[f02                        ]
[f03                        ]
[f04                        ]
}   
END 
ATTRIBUTES
f01 = FORMONLY.field1;
f02 = FORMONLY.field2;
f03 = FORMONLY.field3;
f04 = FORMONLY.field4;
ENDMAIN
    DEFINE rec RECORD
           field1 INTEGER,
           field2 DATE,
           field3 DATETIME YEAR TO SECOND,
           field4 INTERVAL HOUR(6) TO MINUTE
       END RECORD
    OPEN FORM f1 FROM "form"
    DISPLAY FORM f1
    LET rec.field1 = 9999
    LET rec.field2 = MDY(12,24,2002)
    LET rec.field3 = "2012-11-24 11:22:33"
    LET rec.field4 = "-9999:55"
    INPUT BY NAME rec.* WITHOUT DEFAULTS
END MAINThe input behavior of Genero BDL for DATETIME and INTERVAL
fields is consistent with numeric and DATE types: Entering a space must erase all
the value.
get_fldbuf() returns NULL for empty fields
With IBM Informix 4GL, after clearing the form field with CLEAR FORM or CLEAR
field-name, the get_fldbuf() function returns a set of
space characters for a CHAR field. For other types INTEGER or
DATE, I4GL returns NULL when the field is empty.
In such case, with Genero BDL, get_fldbuf() returns NULL when
the field is empty.
The Genero BDL behavior is more consistent than I4GL: Returned NULL reflects the
empty field seen by the end user.
get_flgbuf() returns stars when overflow
With IBM Informix 4GL, when a numeric field is to show to hold the value, your can see
*** stars to indicate an overflow, but the get_fldbuf() function
returns the actual value of the program variable.
The Genero BDL behavior is more consistent than I4GL: In such case, get_fldbuf()
returns *** stars as seen by the user.
Review the form definition by increasing the width of the form field, or use values that fit into the field size.