This record, if present, specifies missing values for long string variables.
/* Header. */
int32 rec_type;
int32 subtype;
int32 size;
int32 count;
/* Repeated up to exactly count
bytes. */
int32 var_name_len;
char var_name[];
char n_missing_values;
int32 value_len;
char values[values_len * n_missing_values];
int32 rec_type;
Record type. Always set to 7.
int32 subtype;
Record subtype. Always set to 22.
int32 size;
Always set to 1.
int32 count;
The number of bytes following the header until the next header.
int32 var_name_len;
char var_name[];
The number of bytes in the name of the long string variable that has
missing values, plus the variable name itself, which consists of
exactly var_name_len
bytes. The variable name is not padded to
any particular boundary, nor is it null-terminated.
char n_missing_values;
The number of missing values, either 1, 2, or 3. (This is, unusually, a single byte instead of a 32-bit number.)
int32 value_len;
The length of each missing value string, in bytes. This value should be 8, because long string variables are at least 8 bytes wide (by definition), only the first 8 bytes of a long string variable’s missing values are allowed to be non-spaces, and any spaces within the first 8 bytes are included in the missing value here.
char values[values_len * n_missing_values]
The missing values themselves, without any padding or null terminators.
An earlier version of this document stated that value_len
was
repeated before each of the missing values, so that there was an extra
int32
value of 8 before each missing value after the first.
Old versions of PSPP wrote data files in this format. Readers can
tolerate this mistake, if they wish, by noticing and skipping the
extra int32
values, which wouldn’t ordinarily occur in strings.