1.16 Long String Missing Values Record

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.