dBase (DBF) Troubleshooting

Widths of Numeric Attributes are Inflated on Write

When FME writes to dBase, it has to convert any numeric attributes from binary to text. To do so, FME selects a field width that can represent the full range of values of that binary representation. This can mean that a 16-bit integer that was originally stored as 3 characters in dBase will be written as a 6-character field. Since the range of values of a 16-bit integer is -32,768 to 32,767, in order to represent the negative end of that range as text, 6 characters are required: "-32768" (without the negative sign, the number will be read back as positive).

If you notice that FME is inflating the field width of your numeric attributes, you can change the Numeric Attribute Type Handling Reader parameter to Explicit Width and Precision. This will cause FME to keep the attributes as fixed-width numeric fields rather than converting to binary representation and making the writer guess the field widths.

Numbers are being stored as text

When reading from a dBase file and converting to some other format, it is possible that FME will choose a text or string type to store that attribute. For example, if converting to a Database format, a dBase number(5,0) may be converted to a char(5) instead of a short int.

To make FME convert number fields to their binary representation, change the Numeric Attribute Type Handling Reader parameter to Standard Types and the smallest integer type that can represent all.