Omit fields with initial values
- Last Updated: January 17, 2024
- 1 minute read
- OpenEdge
- Version 12.8
- Documentation
When a field is defined, it gets an initial value either by using the default initial value for the field's data type or from the INITIAL option in the definition statement. The following table shows the default initial values for ABL data types.
| Data type | Default initial value |
|---|---|
| BLOB | Unknown value (?) |
| CHARACTER | "" (empty string) |
| CLOB | Unknown value (?) |
| COM-HANDLE | Unknown value (?) |
| DATE | Unknown value (?) |
| DATETIME | Unknown value (?) |
| DATETIME-TZ | Unknown value (?) |
| DECIMAL | 0 |
| HANDLE | Unknown value (?) |
| INT64 | 0 |
| INTEGER | 0 |
| LOGICAL | No |
| RAW | Zero-length sequence of bytes |
| RECID | Unknown value (?) |
| ROWID | Unknown value (?) |
Omitting initial value fields from your XML can be useful if:
- Fields with initial values are not important to the business or application logic of your XML consumer
- The XML consumer knows how to recreate missing fields and populate them with initial values
To omit these fields, specify TRUE for the optional omit-initial-values argument
of the WRITE-XML( ) and WRITE-XMLSCHEMA( ) methods.
The ABL extensions to XML Schema specify that an omitted field
is optional and what its initial value should be. Therefore, if
you generate an XML Document from ABL, the READ-XML( ) method
will always correctly restore omitted fields and their initial values.
A non-ABL consumer may correctly restore omitted fields and values.
For example, .NET can read an XML Schema and XML document
into a dynamic ADO.NET Dataset using its ReadXmlSchema( ) and ReadXml( ) APIs,
but missing elements are always interpreted as a null (unknown in
ABL terms) DataColumn in the DataTable. They do recognize the initial
value definition in the XML Schema when creating rows in the DataTable
directly (initial value in the XML Schema gets translated to the
DefaultValue property on the DataColumn), but do not with ReadXml( ).