FORMATS: Allow setting formats of string variables.
[pspp-builds.git] / doc / variables.texi
1 @node Variable Attributes
2 @chapter Manipulating variables
3
4 The variables in the active dataset dictionary are important.  There are
5 several utility functions for examining and adjusting them.
6
7 @menu
8 * ADD VALUE LABELS::            Add value labels to variables.
9 * DELETE VARIABLES::            Delete variables.
10 * DISPLAY::                     Display information about the active dataset.
11 * FORMATS::                     Set print and write formats.
12 * LEAVE::                       Don't clear variables between cases.
13 * MISSING VALUES::              Set missing values for variables.
14 * MODIFY VARS::                 Rename, reorder, and drop variables.
15 * MRSETS::                      Add, modify, and list multiple response sets.
16 * NUMERIC::                     Create new numeric variables.
17 * PRINT FORMATS::               Set variable print formats.
18 * RENAME VARIABLES::            Rename variables.
19 * VALUE LABELS::                Set value labels for variables.
20 * STRING::                      Create new string variables.
21 * VARIABLE ATTRIBUTE::          Set custom attributes on variables.
22 * VARIABLE LABELS::             Set variable labels for variables.
23 * VARIABLE ALIGNMENT::          Set the alignment for display.
24 * VARIABLE WIDTH::              Set the display width.
25 * VARIABLE LEVEL::              Set the measurement level.
26 * VECTOR::                      Declare an array of variables.
27 * WRITE FORMATS::               Set variable write formats.
28 @end menu
29
30 @node ADD VALUE LABELS
31 @section ADD VALUE LABELS
32 @vindex ADD VALUE LABELS
33
34 @display 
35 ADD VALUE LABELS
36         /var_list value 'label' [value 'label']@dots{}
37 @end display
38
39 @cmd{ADD VALUE LABELS} has the same syntax and purpose as @cmd{VALUE
40 LABELS} (@pxref{VALUE LABELS}), but it does not clear value
41 labels from the variables before adding the ones specified.
42
43 @node DELETE VARIABLES
44 @section DELETE VARIABLES
45 @vindex DELETE VARIABLES
46
47 @display
48 DELETE VARIABLES var_list.
49 @end display
50
51 @cmd{DELETE VARIABLES} deletes the specified variables from the
52 dictionary.  It may not be used to delete all variables from the
53 dictionary; use @cmd{NEW FILE} to do that (@pxref{NEW FILE}).
54
55 @cmd{DELETE VARIABLES} should not used after defining transformations
56 and before executing a procedure.  If it is used in such a context, it
57 causes the data to be read.  If it is used while @cmd{TEMPORARY} is in
58 effect, it causes the temporary transformations to become permanent.
59
60 @node DISPLAY
61 @section DISPLAY
62 @vindex DISPLAY
63
64 @display
65 DISPLAY [SORTED] NAMES [[/VARIABLES=]var_list].
66 DISPLAY [SORTED] INDEX [[/VARIABLES=]var_list].
67 DISPLAY [SORTED] LABELS [[/VARIABLES=]var_list].
68 DISPLAY [SORTED] VARIABLES [[/VARIABLES=]var_list].
69 DISPLAY [SORTED] DICTIONARY [[/VARIABLES=]var_list].
70 DISPLAY [SORTED] SCRATCH [[/VARIABLES=]var_list].
71 DISPLAY [SORTED] ATTRIBUTES [[/VARIABLES=]var_list].
72 DISPLAY [SORTED] @@ATTRIBUTES [[/VARIABLES=]var_list].
73 DISPLAY [SORTED] VECTORS.
74 @end display
75
76 @cmd{DISPLAY} displays information about the active dataset.  A variety
77 of different forms of information can be requested.
78
79 The following keywords primarily cause information about variables to
80 be displayed.  With these keywords, by default information is
81 displayed about all variable in the active dataset, in the order that
82 variables occur in the active dataset dictionary.  The SORTED keyword
83 causes output to be sorted alphabetically by variable name.  The
84 VARIABLES subcommand limits output to the specified variables.
85
86 @table @asis
87 @item NAMES
88 The variables' names are displayed.
89
90 @item INDEX
91 The variables' names are displayed along with a value describing their
92 position within the active dataset dictionary.
93
94 @item LABELS
95 Variable names, positions, and variable labels are displayed.
96
97 @item VARIABLES
98 Variable names, positions, print and write formats, and missing values
99 are displayed.
100
101 @item DICTIONARY
102 Variable names, positions, print and write formats, missing values,
103 variable labels, and value labels are displayed.
104
105 @item SCRATCH
106 Variable names are displayed, for scratch variables only (@pxref{Scratch
107 Variables}).
108
109 @item ATTRIBUTES
110 Datafile and variable attributes are displayed, except that attributes
111 whose names begin with @code{@@} or @code{$@@} are omitted.
112
113 @itemx @@ATTRIBUTES
114 All datafile and variable attributes are displayed.
115 @end table
116
117 With the @code{VECTOR} keyword, @cmd{DISPLAY} lists all the currently
118 declared vectors.  If the SORTED keyword is given, the vectors are
119 listed in alphabetical order; otherwise, they are listed in textual
120 order of definition within the PSPP syntax file.
121
122 For related commands, see @ref{DISPLAY DOCUMENTS} and @ref{DISPLAY
123 FILE LABEL}.
124
125 @node FORMATS
126 @section FORMATS
127 @vindex FORMATS
128
129 @display
130 FORMATS var_list (fmt_spec) [var_list (fmt_spec)]@dots{}.
131 @end display
132
133 @cmd{FORMATS} set both print and write formats for the specified
134 variables to the specified format specification.
135 @xref{Input and Output Formats}.
136
137 Specify a list of variables followed by a format specification in
138 parentheses.  The print and write formats of the specified variables
139 will be changed.  All of the variables listed together must have
140 the same type and, for string variables, the same width.
141
142 Additional lists of variables and formats may be included following
143 the first one.
144
145 @cmd{FORMATS} takes effect immediately.  It is not affected by
146 conditional and looping structures such as @cmd{DO IF} or @cmd{LOOP}.
147
148 @node LEAVE
149 @section LEAVE
150 @vindex LEAVE
151
152 @display
153 LEAVE var_list.
154 @end display
155
156 @cmd{LEAVE} prevents the specified variables from being
157 reinitialized whenever a new case is processed.
158
159 Normally, when a data file is processed, every variable in the active
160 dataset is initialized to the system-missing value or spaces at the
161 beginning of processing for each case.  When a variable has been
162 specified on @cmd{LEAVE}, this is not the case.  Instead, that variable is
163 initialized to 0 (not system-missing) or spaces for the first case.
164 After that, it retains its value between cases.
165
166 This becomes useful for counters.  For instance, in the example below
167 the variable SUM maintains a running total of the values in the ITEM
168 variable.
169
170 @example
171 DATA LIST /ITEM 1-3.
172 COMPUTE SUM=SUM+ITEM.
173 PRINT /ITEM SUM.
174 LEAVE SUM
175 BEGIN DATA.
176 123
177 404
178 555
179 999
180 END DATA.
181 @end example
182
183 @noindent Partial output from this example:
184
185 @example
186 123   123.00
187 404   527.00
188 555  1082.00
189 999  2081.00
190 @end example
191
192 It is best to use @cmd{LEAVE} command immediately before invoking a
193 procedure command, because the left status of variables is reset by
194 certain transformations---for instance, @cmd{COMPUTE} and @cmd{IF}.
195 Left status is also reset by all procedure invocations.
196
197 @node MISSING VALUES
198 @section MISSING VALUES
199 @vindex MISSING VALUES
200
201 @display
202 MISSING VALUES var_list (missing_values).
203
204 missing_values takes one of the following forms:
205         num1
206         num1, num2
207         num1, num2, num3
208         num1 THRU num2
209         num1 THRU num2, num3
210         string1
211         string1, string2
212         string1, string2, string3
213 As part of a range, LO or LOWEST may take the place of num1;
214 HI or HIGHEST may take the place of num2.
215 @end display
216
217 @cmd{MISSING VALUES} sets user-missing values for numeric and string
218 variables.  Long string variables may have missing values, but
219 characters after the first 8 bytes of the missing value must be
220 spaces.
221
222 Specify a list of variables, followed by a list of their user-missing
223 values in parentheses.  Up to three discrete values may be given, or,
224 for numeric variables only, a range of values optionally accompanied by
225 a single discrete value.  Ranges may be open-ended on one end, indicated
226 through the use of the keyword LO or LOWEST or HI or HIGHEST.
227
228 The @cmd{MISSING VALUES} command takes effect immediately.  It is not
229 affected by conditional and looping constructs such as @cmd{DO IF} or
230 @cmd{LOOP}.
231
232 @node MODIFY VARS
233 @section MODIFY VARS
234 @vindex MODIFY VARS
235
236 @display 
237 MODIFY VARS
238         /REORDER=@{FORWARD,BACKWARD@} @{POSITIONAL,ALPHA@} (var_list)@dots{}
239         /RENAME=(old_names=new_names)@dots{}
240         /@{DROP,KEEP@}=var_list
241         /MAP    
242 @end display
243
244 @cmd{MODIFY VARS} reorders, renames, and deletes variables in the
245 active dataset.
246
247 At least one subcommand must be specified, and no subcommand may be
248 specified more than once.  DROP and KEEP may not both be specified.
249
250 The REORDER subcommand changes the order of variables in the active
251 dataset.  Specify one or more lists of variable names in parentheses.  By
252 default, each list of variables is rearranged into the specified order.
253 To put the variables into the reverse of the specified order, put
254 keyword BACKWARD before the parentheses.  To put them into alphabetical
255 order in the dictionary, specify keyword ALPHA before the parentheses.
256 BACKWARD and ALPHA may also be combined.
257
258 To rename variables in the active dataset, specify RENAME, an equals sign
259 (@samp{=}), and lists of the old variable names and new variable names
260 separated by another equals sign within parentheses.  There must be the
261 same number of old and new variable names.  Each old variable is renamed to
262 the corresponding new variable name.  Multiple parenthesized groups of
263 variables may be specified.
264
265 The DROP subcommand deletes a specified list of variables from the
266 active dataset.
267
268 The KEEP subcommand keeps the specified list of variables in the active
269 dataset.  Any unlisted variables are deleted from the active dataset.
270
271 MAP is currently ignored.
272
273 If either DROP or KEEP is specified, the data is read; otherwise it is
274 not.
275
276 @cmd{MODIFY VARS} may not be specified following @cmd{TEMPORARY}
277 (@pxref{TEMPORARY}).
278
279 @node NUMERIC
280 @section NUMERIC
281 @vindex NUMERIC
282
283 @display
284 NUMERIC /var_list [(fmt_spec)].
285 @end display
286
287 @cmd{NUMERIC} explicitly declares new numeric variables, optionally
288 setting their output formats.
289
290 Specify a slash (@samp{/}), followed by the names of the new numeric
291 variables.  If you wish to set their output formats, follow their names
292 by an output format specification in parentheses (@pxref{Input and Output
293 Formats}); otherwise, the default is F8.2.
294
295 Variables created with @cmd{NUMERIC} are initialized to the
296 system-missing value.
297
298 @node MRSETS
299 @section MRSETS
300 @vindex MRSETS
301
302 @display
303 MRSETS 
304     /MDGROUP NAME=name VARIABLES=var_list VALUE=value
305      [CATEGORYLABELS=@{VARLABELS,COUNTEDVALUES@}]
306      [@{LABEL='label',LABELSOURCE=VARLABEL@}]
307
308     /MCGROUP NAME=name VARIABLES=var_list [LABEL='label']
309
310     /DELETE NAME=@{[names],ALL@}
311
312     /DISPLAY NAME=@{[names],ALL@}
313 @end display
314
315 @cmd{MRSETS} creates, modifies, deletes, and displays multiple
316 response sets.  A multiple response set is a set of variables that
317 represent multiple responses to a single survey question in one of the
318 two following ways:
319
320 @itemize @bullet
321 @item
322 A @dfn{multiple dichotomy set} is analogous to a survey question with
323 a set of checkboxes.  Each variable in the set is treated in a Boolean
324 fashion: one value (the "counted value") means that the box was
325 checked, and any other value means that it was not.
326
327 @item
328 A @dfn{multiple category set} represents a survey question where the
329 respondent is instructed to list up to @var{n} choices.  Each variable
330 represents one of the responses.
331 @end itemize
332
333 Any number of subcommands may be specified in any order.
334
335 The MDGROUP subcommand creates a new multiple dichotomy set or
336 replaces an existing multiple response set.  The NAME, VARIABLES, and
337 VALUE specifications are required.  The others are optional:
338
339 @itemize @bullet
340 @item
341 NAME specifies the name used in syntax for the new multiple dichotomy
342 set.  The name must begin with @samp{$}; it must otherwise follow the
343 rules for identifiers (@pxref{Tokens}).
344
345 @item
346 VARIABLES specifies the variables that belong to the set.  At least
347 two variables must be specified.  The variables must be all string or
348 all numeric.
349
350 @item
351 VALUE specifies the counted value.  If the variables are numeric, the
352 value must be an integer.  If the variables are strings, then the
353 value must be a string that is no longer than the shortest of the
354 variables in the set (ignoring trailing spaces).
355
356 @item
357 CATEGORYLABELS optionally specifies the source of the labels for each
358 category in the set:
359
360 @itemize @minus
361 @item
362 VARLABELS, the default, uses variable labels or, for variables without
363 variable labels, variable names.  PSPP warns if two variables have the
364 same variable label, since these categories cannot be distinguished in
365 output.
366
367 @item 
368 COUNTEDVALUES instead uses each variable's value label for the counted
369 value.  PSPP warns if two variables have the same value label for the
370 counted value or if one of the variables lacks a value label, since
371 such categories cannot be distinguished in output.
372 @end itemize
373
374 @item
375 LABEL optionally specifies a label for the multiple response set.  If
376 neither LABEL nor LABELSOURCE=VARLABEL is specified, the set is
377 unlabeled.
378
379 @item
380 LABELSOURCE=VARLABEL draws the multiple response set's label from the
381 first variable label among the variables in the set; if none of the
382 variables has a label, the name of the first variable is used.
383 LABELSOURCE=VARLABEL must be used with CATEGORYLABELS=COUNTEDVALUES.
384 It is mutually exclusive with LABEL.
385 @end itemize
386
387 The MCGROUP subcommand creates a new multiple category set or
388 replaces an existing multiple response set.  The NAME and VARIABLES
389 specifications are required, and LABEL is optional.  Their meanings
390 are as described above to MDGROUP.  PSPP warns if two variables in the
391 set have different value labels for a single value, since each of the
392 variables in the set should have the same possible categories.
393
394 The DELETE subcommand deletes multiple response groups.  A list of
395 groups may be named within a set of required square brackets, or ALL
396 may be used to delete all groups.
397
398 The DISPLAY subcommand displays information about defined multiple
399 response sets.  Its syntax is the same as the DELETE subcommand.
400
401 Multiple response sets are saved to and read from system files by,
402 e.g., the @cmd{SAVE} and @cmd{GET} command.  Otherwise, multiple
403 response sets are currently used only by third party software.
404
405 @node PRINT FORMATS
406 @section PRINT FORMATS
407 @vindex PRINT FORMATS
408
409 @display
410 PRINT FORMATS var_list (fmt_spec) [var_list (fmt_spec)]@dots{}.
411 @end display
412
413 @cmd{PRINT FORMATS} sets the print formats for the specified
414 variables to the specified format specification.
415
416 Its syntax is identical to that of @cmd{FORMATS} (@pxref{FORMATS}),
417 but @cmd{PRINT FORMATS} sets only print formats, not write formats.
418
419 @node RENAME VARIABLES
420 @section RENAME VARIABLES
421 @vindex RENAME VARIABLES
422
423 @display
424 RENAME VARIABLES (old_names=new_names)@dots{} .
425 @end display
426
427 @cmd{RENAME VARIABLES} changes the names of variables in the active
428 dataset.  Specify lists of the old variable names and new
429 variable names, separated by an equals sign (@samp{=}), within
430 parentheses.  There must be the same number of old and new variable
431 names.  Each old variable is renamed to the corresponding new variable
432 name.  Multiple parenthesized groups of variables may be specified.
433
434 @cmd{RENAME VARIABLES} takes effect immediately.  It does not cause the data
435 to be read.
436
437 @cmd{RENAME VARIABLES} may not be specified following @cmd{TEMPORARY}
438 (@pxref{TEMPORARY}).
439
440 @node VALUE LABELS
441 @section VALUE LABELS
442 @vindex VALUE LABELS
443
444 @display 
445 VALUE LABELS
446         /var_list value 'label' [value 'label']@dots{}
447 @end display
448
449 @cmd{VALUE LABELS} allows values of numeric and short string
450 variables to be associated with labels.  In this way, a short value can
451 stand for a long value.
452
453 To set up value labels for a set of variables, specify the
454 variable names after a slash (@samp{/}), followed by a list of values
455 and their associated labels, separated by spaces.
456
457 Before @cmd{VALUE LABELS} is executed, any existing value labels
458 are cleared from the variables specified.  Use @cmd{ADD VALUE LABELS}
459 (@pxref{ADD VALUE LABELS}) to add value labels without clearing those
460 already present.
461
462 @node STRING
463 @section STRING
464 @vindex STRING
465
466 @display
467 STRING /var_list (fmt_spec).
468 @end display
469
470 @cmd{STRING} creates new string variables for use in
471 transformations.
472
473 Specify a slash (@samp{/}), followed by the names of the string
474 variables to create and the desired output format specification in
475 parentheses (@pxref{Input and Output Formats}).  Variable widths are
476 implicitly derived from the specified output formats.
477
478 Created variables are initialized to spaces.
479
480
481 @node VARIABLE ATTRIBUTE
482 @section VARIABLE ATTRIBUTE
483 @vindex VARIABLE ATTRIBUTE
484
485 @display
486 VARIABLE ATTRIBUTE
487          VARIABLES=var_list
488          ATTRIBUTE=name('value') [name('value')]@dots{}
489          ATTRIBUTE=name@b{[}index@b{]}('value') [name@b{[}index@b{]}('value')]@dots{}
490          DELETE=name [name]@dots{}
491          DELETE=name@b{[}index@b{]} [name@b{[}index@b{]}]@dots{}
492 @end display
493
494 @cmd{VARIABLE ATTRIBUTE} adds, modifies, or removes user-defined
495 attributes associated with variables in the active dataset.  Custom
496 variable attributes are not interpreted by PSPP, but they are saved as
497 part of system files and may be used by other software that reads
498 them.
499
500 The required VARIABLES subcommand must come first.  Specify the
501 variables to which the following ATTRIBUTE or DELETE subcommand
502 should apply.
503
504 Use the ATTRIBUTE subcommand to add or modify custom variable
505 attributes.  Specify the name of the attribute as an identifier
506 (@pxref{Tokens}), followed by the desired value, in parentheses, as a
507 quoted string.  The specified attributes are then added or modified in
508 the variables specified on VARIABLES.  Attribute names that begin with
509 @code{$} are reserved for PSPP's internal use, and attribute names
510 that begin with @code{@@} or @code{$@@} are not displayed by most PSPP
511 commands that display other attributes.  Other attribute names are not
512 treated specially.
513
514 Attributes may also be organized into arrays.  To assign to an array
515 element, add an integer array index enclosed in square brackets
516 (@code{[} and @code{]}) between the attribute name and value.  Array
517 indexes start at 1, not 0.  An attribute array that has a single
518 element (number 1) is not distinguished from a non-array attribute.
519
520 Use the DELETE subcommand to delete an attribute from the variable
521 specified on VARIABLES.  Specify an attribute name by itself to delete
522 an entire attribute, including all array elements for attribute
523 arrays.  Specify an attribute name followed by an array index in
524 square brackets to delete a single element of an attribute array.  In
525 the latter case, all the array elements numbered higher than the
526 deleted element are shifted down, filling the vacated position.
527
528 To associate custom attributes with the entire active dataset, instead of
529 with particular variables, use @cmd{DATAFILE ATTRIBUTE} (@pxref{DATAFILE ATTRIBUTE}) instead.
530
531 @cmd{VARIABLE ATTRIBUTE} takes effect immediately.  It is not affected
532 by conditional and looping structures such as @cmd{DO IF} or
533 @cmd{LOOP}.
534
535 @node VARIABLE LABELS
536 @section VARIABLE LABELS
537 @vindex VARIABLE LABELS
538
539 @display
540 VARIABLE LABELS
541         var_list 'var_label' 
542         [ /var_list 'var_label']
543         .
544         .
545         .
546         [ /var_list 'var_label']
547 @end display
548
549 @cmd{VARIABLE LABELS} associates explanatory names
550 with variables.  This name, called a @dfn{variable label}, is displayed by
551 statistical procedures.
552
553 To assign a variable label to a group of variables, specify a 
554 list of variable names and the variable label as a string.
555 To assign different labels to different variables in the same command, 
556 precede the subsequent variable list with a slash (@samp{/}).
557
558
559 @node VARIABLE ALIGNMENT
560 @comment  node-name,  next,  previous,  u
561 @section VARIABLE ALIGNMENT
562 @vindex VARIABLE ALIGNMENT
563
564 @display
565 VARIABLE ALIGNMENT
566         var_list ( LEFT | RIGHT | CENTER )
567         [ /var_list ( LEFT | RIGHT | CENTER ) ]
568         .
569         .
570         .
571         [ /var_list ( LEFT | RIGHT | CENTER ) ]
572 @end display
573
574 @cmd{VARIABLE ALIGNMENT} sets the alignment of variables for display editing 
575 purposes.   This only has effect for third party software.  It does not affect 
576 the display of variables in the PSPP output.
577
578
579
580
581 @node VARIABLE WIDTH
582 @comment  node-name,  next,  previous,  up
583 @section VARIABLE WIDTH
584 @vindex VARIABLE WIDTH
585 @display
586 VARIABLE WIDTH
587         var_list (width)
588         [ /var_list (width) ] 
589         .
590         .
591         .
592         [ /var_list (width) ] 
593 @end display
594
595 @cmd{VARIABLE WIDTH} sets the column width of variables for display editing
596 purposes.   This only affects third party software.  It does not affect 
597 the display of variables in the PSPP output.
598
599
600 @node VARIABLE LEVEL
601 @comment  node-name,  next,  previous,  up
602 @section VARIABLE LEVEL
603 @vindex VARIABLE LEVEL
604 @display
605 VARIABLE LEVEL
606         var_list ( SCALE | NOMINAL | ORDINAL )
607         [ /var_list ( SCALE | NOMINAL | ORDINAL ) ]
608         .
609         .
610         .
611         [ /var_list ( SCALE | NOMINAL | ORDINAL ) ]
612 @end display
613
614 @cmd{VARIABLE LEVEL} sets the measurement level of  variables.
615 Currently, this has no effect except for certain third party software.
616
617
618 @node VECTOR
619 @section VECTOR
620 @vindex VECTOR
621
622 @display
623 Two possible syntaxes:
624         VECTOR vec_name=var_list.
625         VECTOR vec_name_list(count [format]).
626 @end display
627
628 @cmd{VECTOR} allows a group of variables to be accessed as if they
629 were consecutive members of an array with a vector(index) notation.
630
631 To make a vector out of a set of existing variables, specify a name
632 for the vector followed by an equals sign (@samp{=}) and the variables
633 to put in the vector.  All the variables in the vector must be the same
634 type.  String variables in a vector must all have the same width.
635
636 To make a vector and create variables at the same time, specify one or
637 more vector names followed by a count in parentheses.  This will cause
638 variables named @code{@var{vec}1} through @code{@var{vec}@var{count}}
639 to be created as numeric variables.  By default, the new variables
640 have print and write format F8.2, but an alternate format may be
641 specified inside the parentheses before or after the count and
642 separated from it by white space or a comma.  Variable names including
643 numeric suffixes may not exceed 64 characters in length, and none of
644 the variables may exist prior to @cmd{VECTOR}.
645
646 Vectors created with @cmd{VECTOR} disappear after any procedure or
647 procedure-like command is executed.  The variables contained in the
648 vectors remain, unless they are scratch variables (@pxref{Scratch
649 Variables}).
650
651 Variables within a vector may be referenced in expressions using
652 @code{vector(index)} syntax.
653
654 @node WRITE FORMATS
655 @section WRITE FORMATS
656 @vindex WRITE FORMATS
657
658 @display
659 WRITE FORMATS var_list (fmt_spec) [var_list (fmt_spec)]@dots{}.
660 @end display
661
662 @cmd{WRITE FORMATS} sets the write formats for the specified variables
663 to the specified format specification.  Its syntax is identical to
664 that of FORMATS (@pxref{FORMATS}), but @cmd{WRITE FORMATS} sets only
665 write formats, not print formats.