2.1.6.1 Future Record Mechanism

Future records are specified as a collection of records (section 2.1.4) that exists between a set of BrtFRTBegin (section 2.4.684) and BrtFRTEnd (section 2.4.685) record pairs. An application uses the productVersion.product and productVersion.version fields of the BrtFRTBegin record to determine whether that application supports the collection of future records following that BrtFRTEnd record.

An application supports the collection of future records following a given BrtFRTBegin record if the productVersion.product field matches the application’s product value, and the productVersion.version field is less than or equal to the application’s version value. Otherwise the application does not support the collection of future records following this BrtFRTBegin record, and can ignore but preserve those future records in the file, including the BrtFRTBegin and BrtFRTEnd records.

Every record in the collection of future records between a set of BrtFRTBegin and BrtFRTEnd records—except BrtFRTBegin, BrtFRTEnd, BrtACBegin (section 2.4.2), and BrtACEnd (section 2.4.3) records—is a future record and MUST start with an FRTHeader (section 2.5.61) structure that specifies future record attributes unless the record is less than 4 bytes, in which case an FRTBlank (section 2.5.55) is inferred as the FRTHeader structure for that future record, and the bytes in the future record specify record data. Future record data that occurs after the FRTHeader is application specific.

For example, consider an application that implements the basic concepts of a spreadsheet as specified by the structures and records in this document and that implements other features and concepts not specified in this document. That application can use the future record mechanism to persist data associated with those other features and concepts as extensions to the structures and records specified in this document.