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
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
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
bias in the file header record
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 (
other values are important for use as missing values:
represented by the largest possible positive number (
LOWEST, represented by the second-largest negative number
(in IEEE 754 format,
System files are divided into records, each of which begins with a
4-byte record type, usually regarded as an
The records must appear in the following order:
Each type of record is described separately below.