2.1.4 Record

A record is the basic building block used to store information about features in a workbook. Each binary record is a variable-length sequence of bytes. A binary record consists of three components: a record type, a record size, and the record data that is specific to that record type.

The record type is a two-byte unsigned integer that specifies what type of information is specified by the record and how the structure of the record data specific to this record is ordered and structured. Record type values MUST be a value from the Record Enumeration (section 2.3) or the record MUST make use of the future record architecture (section 2.1.6).

The record size is a two-byte unsigned integer that specifies the count of bytes that specifies the total size of the record data. The record size MUST be greater than or equal to 0 and MUST be less than or equal to 8224.

The record data component contains fields that correspond to a particular record type and comprise the remainder of the record. The order and structure of the fields for a given record type listed in section 2.3 are specified in the corresponding section for that record type in section 2.4. The size of the record data component MUST be equal to the record size. Fields in the record data component can contain simple values, arrays of values, structures of several fields, arrays of fields, and arrays of structures.

If the total number of bytes to be written for a given record data component is greater than 8224, a collection of Continue (section 2.4.58), ContinueFrt (section 2.4.60), ContinueFrt11 (section 2.4.61), or ContinueFrt12 (section 2.4.62) records, as specified in the respective ABNF for that record, is used to contain the remaining record data. In general, the first 8224 bytes of data is contained in the record data component of the given record and the remaining data is divided into blocks of 8224 bytes and contained in the subsequent collection of Continue (section 2.4.58), ContinueFrt (section 2.4.60), ContinueFrt11 (section 2.4.61), or ContinueFrt12 records, until all the data is written. See specific record definitions for exceptions. ContinueBigName (section 2.4.59) and CrtMlFrtContinue (section 2.4.71) are special cases that only apply to a single record type.