-@node Variable Attributes, Data Manipulation, System and Portable Files, Top
+@node Variable Attributes
@chapter Manipulating variables
The variables in the active file dictionary are important. There are
@menu
* ADD VALUE LABELS:: Add value labels to variables.
* DELETE VARIABLES:: Delete variables.
-* DISPLAY:: Display variable names & descriptions.
-* DISPLAY VECTORS:: Display a list of vectors.
+* DISPLAY:: Display information about the active file.
* FORMATS:: Set print and write formats.
* LEAVE:: Don't clear variables between cases.
* MISSING VALUES:: Set missing values for variables.
* RENAME VARIABLES:: Rename variables.
* VALUE LABELS:: Set value labels for variables.
* STRING:: Create new string variables.
+* VARIABLE ATTRIBUTE:: Set custom attributes on variables.
* VARIABLE LABELS:: Set variable labels for variables.
* VARIABLE ALIGNMENT:: Set the alignment for display.
* VARIABLE WIDTH:: Set the display width.
* WRITE FORMATS:: Set variable write formats.
@end menu
-@node ADD VALUE LABELS, DELETE VARIABLES, Variable Attributes, Variable Attributes
+@node ADD VALUE LABELS
@section ADD VALUE LABELS
@vindex ADD VALUE LABELS
LABELS} (@pxref{VALUE LABELS}), but it does not clear value
labels from the variables before adding the ones specified.
-@node DELETE VARIABLES, DISPLAY, ADD VALUE LABELS, Variable Attributes
+@node DELETE VARIABLES
@section DELETE VARIABLES
@vindex DELETE VARIABLES
causes the data to be read. If it is used while @cmd{TEMPORARY} is in
effect, it causes the temporary transformations to become permanent.
-@node DISPLAY, DISPLAY VECTORS, DELETE VARIABLES, Variable Attributes
+@node DISPLAY
@section DISPLAY
@vindex DISPLAY
@display
-DISPLAY @{NAMES,INDEX,LABELS,VARIABLES,DICTIONARY,SCRATCH@}
- [SORTED] [var_list]
+DISPLAY [SORTED] NAMES [[/VARIABLES=]var_list].
+DISPLAY [SORTED] INDEX [[/VARIABLES=]var_list].
+DISPLAY [SORTED] LABELS [[/VARIABLES=]var_list].
+DISPLAY [SORTED] VARIABLES [[/VARIABLES=]var_list].
+DISPLAY [SORTED] DICTIONARY [[/VARIABLES=]var_list].
+DISPLAY [SORTED] SCRATCH [[/VARIABLES=]var_list].
+DISPLAY [SORTED] ATTRIBUTES [[/VARIABLES=]var_list].
+DISPLAY [SORTED] @@ATTRIBUTES [[/VARIABLES=]var_list].
+DISPLAY [SORTED] VECTORS.
@end display
-@cmd{DISPLAY} displays requested information on variables. Variables can
-optionally be sorted alphabetically. The entire dictionary or just
-specified variables can be described.
+@cmd{DISPLAY} displays information about the active file. A variety
+of different forms of information can be requested.
-One of the following keywords can be present:
+The following keywords primarily cause information about variables to
+be displayed. With these keywords, by default information is
+displayed about all variable in the active file, in the order that
+variables occur in the active file dictionary. The SORTED keyword
+causes output to be sorted alphabetically by variable name. The
+VARIABLES subcommand limits output to the specified variables.
@table @asis
@item NAMES
variable labels, and value labels are displayed.
@item SCRATCH
-Varible names are displayed, for scratch variables only (@pxref{Scratch
+Variable names are displayed, for scratch variables only (@pxref{Scratch
Variables}).
-@end table
-If SORTED is specified, then the variables are displayed in ascending
-order based on their names; otherwise, they are displayed in the order
-that they occur in the active file dictionary.
+@item ATTRIBUTES
+Datafile and variable attributes are displayed, except that attributes
+whose names begin with @code{@@} or @code{$@@} are omitted.
-@node DISPLAY VECTORS, FORMATS, DISPLAY, Variable Attributes
-@section DISPLAY VECTORS
-@vindex DISPLAY VECTORS
+@itemx @@ATTRIBUTES
+All datafile and variable attributes are displayed.
+@end table
-@display
-DISPLAY VECTORS.
-@end display
+With the @code{VECTOR} keyword, @cmd{DISPLAY} lists all the currently
+declared vectors. If the SORTED keyword is given, the vectors are
+listed in alphabetical order; otherwise, they are listed in textual
+order of definition within the PSPP syntax file.
-@cmd{DISPLAY VECTORS} lists all the currently declared vectors.
+For related commands, see @ref{DISPLAY DOCUMENTS} and @ref{DISPLAY
+FILE LABEL}.
-@node FORMATS, LEAVE, DISPLAY VECTORS, Variable Attributes
+@node FORMATS
@section FORMATS
@vindex FORMATS
@cmd{FORMATS} takes effect immediately. It is not affected by
conditional and looping structures such as @cmd{DO IF} or @cmd{LOOP}.
-@node LEAVE, MISSING VALUES, FORMATS, Variable Attributes
+@node LEAVE
@section LEAVE
@vindex LEAVE
certain transformations---for instance, @cmd{COMPUTE} and @cmd{IF}.
Left status is also reset by all procedure invocations.
-@node MISSING VALUES, MODIFY VARS, LEAVE, Variable Attributes
+@node MISSING VALUES
@section MISSING VALUES
@vindex MISSING VALUES
HI or HIGHEST may take the place of num2.
@end display
-@cmd{MISSING VALUES} sets user-missing values for numeric and
-short string variables. Long string variables may not have missing
-values.
+@cmd{MISSING VALUES} sets user-missing values for numeric and string
+variables. Long string variables may have missing values, but
+characters after the first 8 bytes of the missing value must be
+spaces.
Specify a list of variables, followed by a list of their user-missing
values in parentheses. Up to three discrete values may be given, or,
affected by conditional and looping constructs such as @cmd{DO IF} or
@cmd{LOOP}.
-@node MODIFY VARS, NUMERIC, MISSING VALUES, Variable Attributes
+@node MODIFY VARS
@section MODIFY VARS
@vindex MODIFY VARS
@cmd{MODIFY VARS} may not be specified following @cmd{TEMPORARY}
(@pxref{TEMPORARY}).
-@node NUMERIC, PRINT FORMATS, MODIFY VARS, Variable Attributes
+@node NUMERIC
@section NUMERIC
@vindex NUMERIC
Variables created with @cmd{NUMERIC} are initialized to the
system-missing value.
-@node PRINT FORMATS, RENAME VARIABLES, NUMERIC, Variable Attributes
+@node PRINT FORMATS
@section PRINT FORMATS
@vindex PRINT FORMATS
Its syntax is identical to that of @cmd{FORMATS} (@pxref{FORMATS}),
but @cmd{PRINT FORMATS} sets only print formats, not write formats.
-@node RENAME VARIABLES, VALUE LABELS, PRINT FORMATS, Variable Attributes
+@node RENAME VARIABLES
@section RENAME VARIABLES
@vindex RENAME VARIABLES
@cmd{RENAME VARIABLES} may not be specified following @cmd{TEMPORARY}
(@pxref{TEMPORARY}).
-@node VALUE LABELS, STRING, RENAME VARIABLES, Variable Attributes
+@node VALUE LABELS
@section VALUE LABELS
@vindex VALUE LABELS
To set up value labels for a set of variables, specify the
variable names after a slash (@samp{/}), followed by a list of values
-and their associated labels, separated by spaces. Long string
-variables may not be specified.
+and their associated labels, separated by spaces.
Before @cmd{VALUE LABELS} is executed, any existing value labels
are cleared from the variables specified. Use @cmd{ADD VALUE LABELS}
(@pxref{ADD VALUE LABELS}) to add value labels without clearing those
already present.
-@node STRING, VARIABLE LABELS, VALUE LABELS, Variable Attributes
+@node STRING
@section STRING
@vindex STRING
Created variables are initialized to spaces.
-@node VARIABLE LABELS, VARIABLE ALIGNMENT, STRING, Variable Attributes
+@node VARIABLE ATTRIBUTE
+@section VARIABLE ATTRIBUTE
+@vindex VARIABLE ATTRIBUTE
+
+@display
+VARIABLE ATTRIBUTE
+ VARIABLES=var_list
+ ATTRIBUTE=name('value') [name('value')]@dots{}
+ ATTRIBUTE=name@b{[}index@b{]}('value') [name@b{[}index@b{]}('value')]@dots{}
+ DELETE=name [name]@dots{}
+ DELETE=name@b{[}index@b{]} [name@b{[}index@b{]}]@dots{}
+@end display
+
+@cmd{VARIABLE ATTRIBUTE} adds, modifies, or removes user-defined
+attributes associated with variables in the active file. Custom
+variable attributes are not interpreted by PSPP, but they are saved as
+part of system files and may be used by other software that reads
+them.
+
+The required VARIABLES subcommand must come first. Specify the
+variables to which the following ATTRIBUTE or DELETE subcommand
+should apply.
+
+Use the ATTRIBUTE subcommand to add or modify custom variable
+attributes. Specify the name of the attribute as an identifier
+(@pxref{Tokens}), followed by the desired value, in parentheses, as a
+quoted string. The specified attributes are then added or modified in
+the variables specified on VARIABLES. Attribute names that begin with
+@code{$} are reserved for PSPP's internal use, and attribute names
+that begin with @code{@@} or @code{$@@} are not displayed by most PSPP
+commands that display other attributes. Other attribute names are not
+treated specially.
+
+Attributes may also be organized into arrays. To assign to an array
+element, add an integer array index enclosed in square brackets
+(@code{[} and @code{]}) between the attribute name and value. Array
+indexes start at 1, not 0. An attribute array that has a single
+element (number 1) is not distinguished from a non-array attribute.
+
+Use the DELETE subcommand to delete an attribute from the variable
+specified on VARIABLES. Specify an attribute name by itself to delete
+an entire attribute, including all array elements for attribute
+arrays. Specify an attribute name followed by an array index in
+square brackets to delete a single element of an attribute array. In
+the latter case, all the array elements numbered higher than the
+deleted element are shifted down, filling the vacated position.
+
+To associate custom attributes with the entire active file, instead of
+with particular variables, use @cmd{DATAFILE ATTRIBUTE} (@pxref{DATAFILE ATTRIBUTE}) instead.
+
+@cmd{VARIABLE ATTRIBUTE} takes effect immediately. It is not affected
+by conditional and looping structures such as @cmd{DO IF} or
+@cmd{LOOP}.
+
+@node VARIABLE LABELS
@section VARIABLE LABELS
@vindex VARIABLE LABELS
To assign a variable label to a group of variables, specify a
list of variable names and the variable label as a string.
To assign different labels to different variables in the same command,
-preceed the subsequent variable list with a slash (@samp{/}).
+precede the subsequent variable list with a slash (@samp{/}).
-@node VARIABLE ALIGNMENT, VARIABLE WIDTH, VARIABLE LABELS, Variable Attributes
+@node VARIABLE ALIGNMENT
@comment node-name, next, previous, u
@section VARIABLE ALIGNMENT
@vindex VARIABLE ALIGNMENT
-@node VARIABLE WIDTH, VARIABLE LEVEL, VARIABLE ALIGNMENT, Variable Attributes
+@node VARIABLE WIDTH
@comment node-name, next, previous, up
@section VARIABLE WIDTH
@vindex VARIABLE WIDTH
the display of variables in the PSPP output.
-@node VARIABLE LEVEL, VECTOR, VARIABLE WIDTH, Variable Attributes
+@node VARIABLE LEVEL
@comment node-name, next, previous, up
@section VARIABLE LEVEL
@vindex VARIABLE LEVEL
Currently, this has no effect except for certain third party software.
-@node VECTOR, WRITE FORMATS, VARIABLE LEVEL, Variable Attributes
+@node VECTOR
@section VECTOR
@vindex VECTOR
Variables within a vector may be referenced in expressions using
@code{vector(index)} syntax.
-@node WRITE FORMATS, , VECTOR, Variable Attributes
+@node WRITE FORMATS
@section WRITE FORMATS
@vindex WRITE FORMATS
to the specified format specification. Its syntax is identical to
that of FORMATS (@pxref{FORMATS}), but @cmd{WRITE FORMATS} sets only
write formats, not print formats.
-@setfilename ignored