Next: , Previous: Portable File Format, Up: Top


Appendix B System File Format

A system file encapsulates a set of cases and dictionary information that describes how they may be interpreted. This chapter describes the format of a system file.

System files use three data types: 8-bit characters, 32-bit integers, and 64-bit floating points, called here char, int32, and flt64, respectively. Data is not necessarily aligned on a word or double-word boundary: the long variable name record (see Long Variable Names Record) and very long string records (see Very Long String Record) have arbitrary byte length and can therefore cause all data coming after them in the file to be misaligned.

Integer data in system files may be big-endian or little-endian. A reader may detect the endianness of a system file by examining layout_code in the file header record (see layout_code).

Floating-point data in system files may nominally be in IEEE 754, IBM, or VAX formats. A reader may detect the floating-point format in use by examining bias in the file header record (see bias).

PSPP detects big-endian and little-endian integer formats in system files and translates as necessary. PSPP also detects the floating-point format in use, as well as the endianness of IEEE 754 floating-point numbers, and translates as needed. However, only IEEE 754 numbers with the same endianness as integer data in the same file has actually been observed in system files, and it is likely that other formats are obsolete or were never used.

The PSPP system-missing value is represented by the largest possible negative number in the floating point format (-DBL_MAX). Two other values are important for use as missing values: HIGHEST, represented by the largest possible positive number (DBL_MAX), and LOWEST, represented by the second-largest negative number (in IEEE 754 format, 0xffeffffffffffffe).

System files are divided into records, each of which begins with a 4-byte record type, usually regarded as an int32.

The records must appear in the following order:

Each type of record is described separately below.