How error detection works
When data is validated, the system may encounter data that does not match its type definition. A combination of how that type is defined and what data shows up determines what happens next. As data is validated, the system tracks valid data objects, data objects that exist but are in error, and data that cannot be recognized as belonging to any type.
If a data object is valid, the information is recorded, as needed, and validation continues.
If the system is looking for a data object of a particular type, and something in the data does not exactly match the type definition, the system bases the determination on whether to continue validation on whether that data object is known to exist.
If a data object contains enough information to determine its existence, errors associated with that data object are recorded and validation continues.
If a data object exists but contains errors, it is marked as an error. If a restart point is specified for the component of the type in error, these errors are ignored and validation continues.
If a data object does not contain enough information to determine its existence, the following occurs:
- If no validation recovery mechanism is specified, validation is stopped because it will get lost if it continues. Validation recovery mechanisms are discussed in the section "Error Recovery" .
- If recovery mechanisms are specified, the system returns to the nearest restart point and resets what it is looking for. It proceeds by examining the data byte-by-byte until it either recognizes something or reaches the end of the data stream. All rejected bytes (from the first byte not associated with a type to the last unrecognizable byte) are collectively marked as an unidentified foreign object (UFO). A UFO is data in error with no valid data contained within it.
In summary, the data object of an input card could be valid, yet contain errors. If the data object of any input card is invalid, output data is not built. If all input card data objects are valid, the input is mapped to the output based on the map rules. Operators, most functions, and map references operate on valid data. To map invalid data, use the REJECT function.