The data file and variable attributes records represent custom attributes for the system file or for individual variables in the system file, as defined on the DATAFILE ATTRIBUTE (see DATAFILE ATTRIBUTE in PSPP Users Guide) and VARIABLE ATTRIBUTE commands (see VARIABLE ATTRIBUTE in PSPP Users Guide), respectively.
/* Header. */
int32 rec_type;
int32 subtype;
int32 size;
int32 count;
/* Exactly count
bytes of data. */
char attributes[];
int32 rec_type;
Record type. Always set to 7.
int32 subtype;
Record subtype. Always set to 17 for a data file attribute record or to 18 for a variable attributes record.
int32 size;
The size of each element in the attributes
member. Always set to 1.
int32 count;
The total number of bytes in attributes
.
char attributes[];
The attributes, in a text-based format.
In record subtype 17, this field contains a single attribute set. An
attribute set is a sequence of one or more attributes concatenated
together. Each attribute consists of a name, which has the same
syntax as a variable name, followed by, inside parentheses, a sequence
of one or more values. Each value consists of a string enclosed in
single quotes ('
) followed by a line feed (byte 0x0a). A value
may contain single quote characters, which are not themselves escaped
or quoted or required to be present in pairs. There is no apparent
way to embed a line feed in a value. There is no distinction between
an attribute with a single value and an attribute array with one
element.
In record subtype 18, this field contains a sequence of one or more
variable attribute sets. If more than one variable attribute set is
present, each one after the first is delimited from the previous by
/
. Each variable attribute set consists of a long
variable name,
followed by :
, followed by an attribute set with the same
syntax as on record subtype 17.
System files written by Stata 14.1/-savespss- 1.77 by
S.Radyakin
may include multiple records with subtype 18, one per
variable that has variable attributes.
The total length is count
bytes.
A system file produced with the following VARIABLE ATTRIBUTE commands in effect:
VARIABLE ATTRIBUTE VARIABLES=dummy ATTRIBUTE=fred[1]('23') fred[2]('34'). VARIABLE ATTRIBUTE VARIABLES=dummy ATTRIBUTE=bert('123').
will contain a variable attribute record with the following contents:
0000 07 00 00 00 12 00 00 00 01 00 00 00 22 00 00 00 |............"...| 0010 64 75 6d 6d 79 3a 66 72 65 64 28 27 32 33 27 0a |dummy:fred('23'.| 0020 27 33 34 27 0a 29 62 65 72 74 28 27 31 32 33 27 |'34'.)bert('123'| 0030 0a 29 |.) |