Codebase list pspp / debian/0.3.0-8
Import Debian changes 0.3.0-8 pspp (0.3.0-8) unstable; urgency=low * debian/rules: use debhelper, dh_clean deletes src/version.c and pref.h but preserves pref.h.orig, set DESTDIR for "make install" * Makefile.in: export pkgsysconfdir and DESTDIR * config.guess, config.sub: refresh (closes:bug#201251) * lib/gmp/longlong.h: add explicit newlines, and escape the embedded ones (closes:bug#195801) * debian/control: update to policy 3.5.7 James R. Van Zandt authored 20 years ago Andreas Tille committed 5 years ago
27 changed file(s) with 18630 addition(s) and 970 deletion(s). Raw diff Collapse all Expand all
2323 libexecdir = @libexecdir@
2424 datadir = @datadir@
2525 sysconfdir = @sysconfdir@
26 export pkgsysconfdir DESTDIR
2627 sharedstatedir = @sharedstatedir@
2728 localstatedir = @localstatedir@
2829 libdir = @libdir@
00 #! /bin/sh
11 # Attempt to guess a canonical system name.
2 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
3 # Free Software Foundation, Inc.
4
5 timestamp='2001-04-20'
2 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3 # 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
4
5 timestamp='2003-07-02'
66
77 # This file is free software; you can redistribute it and/or modify it
88 # under the terms of the GNU General Public License as published by
2323 # configuration script generated by Autoconf, you may include it under
2424 # the same distribution terms that you use for the rest of that program.
2525
26 # Written by Per Bothner <bothner@cygnus.com>.
27 # Please send patches to <config-patches@gnu.org>.
26 # Originally written by Per Bothner <per@bothner.com>.
27 # Please send patches to <config-patches@gnu.org>. Submit a context
28 # diff and a properly formatted ChangeLog entry.
2829 #
2930 # This script attempts to guess a canonical system name similar to
3031 # config.sub. If it succeeds, it prints the system name on stdout, and
5152 GNU config.guess ($timestamp)
5253
5354 Originally written by Per Bothner.
54 Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000
55 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
5556 Free Software Foundation, Inc.
5657
5758 This is free software; see the source for copying conditions. There is NO
8687 exit 1
8788 fi
8889
89
90 dummy=dummy-$$
91 trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
92
93 # CC_FOR_BUILD -- compiler used by this script.
90 trap 'exit 1' 1 2 15
91
92 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
93 # compiler to aid in system detection is discouraged as it requires
94 # temporary files to be created and, as you can see below, it is a
95 # headache to deal with in a portable fashion.
96
9497 # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
9598 # use `HOST_CC' if defined, but it is deprecated.
9699
100 # Portable tmp directory creation inspired by the Autoconf team.
101
102 set_cc_for_build='
103 trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
104 trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
105 : ${TMPDIR=/tmp} ;
106 { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
107 { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
108 { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
109 { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
110 dummy=$tmp/dummy ;
111 tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
97112 case $CC_FOR_BUILD,$HOST_CC,$CC in
98 ,,) echo "int dummy(){}" > $dummy.c
99 for c in cc gcc c89 ; do
100 ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1
101 if test $? = 0 ; then
102 CC_FOR_BUILD="$c"; break
103 fi
104 done
105 rm -f $dummy.c $dummy.o $dummy.rel
113 ,,) echo "int x;" > $dummy.c ;
114 for c in cc gcc c89 c99 ; do
115 if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
116 CC_FOR_BUILD="$c"; break ;
117 fi ;
118 done ;
106119 if test x"$CC_FOR_BUILD" = x ; then
107 CC_FOR_BUILD=no_compiler_found
120 CC_FOR_BUILD=no_compiler_found ;
108121 fi
109122 ;;
110123 ,,*) CC_FOR_BUILD=$CC ;;
111124 ,*,*) CC_FOR_BUILD=$HOST_CC ;;
112 esac
125 esac ;'
113126
114127 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
115 # (ghazi@noc.rutgers.edu 8/24/94.)
128 # (ghazi@noc.rutgers.edu 1994-08-24)
116129 if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
117130 PATH=$PATH:/.attbin ; export PATH
118131 fi
126139
127140 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
128141 *:NetBSD:*:*)
129 # Netbsd (nbsd) targets should (where applicable) match one or
142 # NetBSD (nbsd) targets should (where applicable) match one or
130143 # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
131144 # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
132145 # switched to ELF, *-*-netbsd* would select the old
133146 # object file format. This provides both forward
134147 # compatibility and a consistent mechanism for selecting the
135148 # object file format.
136 # Determine the machine/vendor (is the vendor relevant).
137 case "${UNAME_MACHINE}" in
138 amiga) machine=m68k-unknown ;;
139 arm32) machine=arm-unknown ;;
140 atari*) machine=m68k-atari ;;
141 sun3*) machine=m68k-sun ;;
142 mac68k) machine=m68k-apple ;;
143 macppc) machine=powerpc-apple ;;
144 hp3[0-9][05]) machine=m68k-hp ;;
145 ibmrt|romp-ibm) machine=romp-ibm ;;
146 *) machine=${UNAME_MACHINE}-unknown ;;
149 #
150 # Note: NetBSD doesn't particularly care about the vendor
151 # portion of the name. We always set it to "unknown".
152 sysctl="sysctl -n hw.machine_arch"
153 UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
154 /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
155 case "${UNAME_MACHINE_ARCH}" in
156 armeb) machine=armeb-unknown ;;
157 arm*) machine=arm-unknown ;;
158 sh3el) machine=shl-unknown ;;
159 sh3eb) machine=sh-unknown ;;
160 *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
147161 esac
148162 # The Operating System including object format, if it has switched
149163 # to ELF recently, or will in the future.
150 case "${UNAME_MACHINE}" in
151 i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k)
164 case "${UNAME_MACHINE_ARCH}" in
165 arm*|i386|m68k|ns32k|sh3*|sparc|vax)
166 eval $set_cc_for_build
152167 if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
153168 | grep __ELF__ >/dev/null
154169 then
164179 ;;
165180 esac
166181 # The OS release
167 release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
182 # Debian GNU/NetBSD machines have a different userland, and
183 # thus, need a distinct triplet. However, they do not need
184 # kernel version information, so it can be replaced with a
185 # suitable tag, in the style of linux-gnu.
186 case "${UNAME_VERSION}" in
187 Debian*)
188 release='-gnu'
189 ;;
190 *)
191 release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
192 ;;
193 esac
168194 # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
169195 # contains redundant information, the shorter form:
170196 # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
171197 echo "${machine}-${os}${release}"
172198 exit 0 ;;
199 amiga:OpenBSD:*:*)
200 echo m68k-unknown-openbsd${UNAME_RELEASE}
201 exit 0 ;;
202 arc:OpenBSD:*:*)
203 echo mipsel-unknown-openbsd${UNAME_RELEASE}
204 exit 0 ;;
205 hp300:OpenBSD:*:*)
206 echo m68k-unknown-openbsd${UNAME_RELEASE}
207 exit 0 ;;
208 mac68k:OpenBSD:*:*)
209 echo m68k-unknown-openbsd${UNAME_RELEASE}
210 exit 0 ;;
211 macppc:OpenBSD:*:*)
212 echo powerpc-unknown-openbsd${UNAME_RELEASE}
213 exit 0 ;;
214 mvme68k:OpenBSD:*:*)
215 echo m68k-unknown-openbsd${UNAME_RELEASE}
216 exit 0 ;;
217 mvme88k:OpenBSD:*:*)
218 echo m88k-unknown-openbsd${UNAME_RELEASE}
219 exit 0 ;;
220 mvmeppc:OpenBSD:*:*)
221 echo powerpc-unknown-openbsd${UNAME_RELEASE}
222 exit 0 ;;
223 pmax:OpenBSD:*:*)
224 echo mipsel-unknown-openbsd${UNAME_RELEASE}
225 exit 0 ;;
226 sgi:OpenBSD:*:*)
227 echo mipseb-unknown-openbsd${UNAME_RELEASE}
228 exit 0 ;;
229 sun3:OpenBSD:*:*)
230 echo m68k-unknown-openbsd${UNAME_RELEASE}
231 exit 0 ;;
232 wgrisc:OpenBSD:*:*)
233 echo mipsel-unknown-openbsd${UNAME_RELEASE}
234 exit 0 ;;
235 *:OpenBSD:*:*)
236 echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
237 exit 0 ;;
173238 alpha:OSF1:*:*)
174239 if test $UNAME_RELEASE = "V4.0"; then
175240 UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
176241 fi
242 # According to Compaq, /usr/sbin/psrinfo has been available on
243 # OSF/1 and Tru64 systems produced since 1995. I hope that
244 # covers most systems running today. This code pipes the CPU
245 # types through head -n 1, so we only detect the type of CPU 0.
246 ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
247 case "$ALPHA_CPU_TYPE" in
248 "EV4 (21064)")
249 UNAME_MACHINE="alpha" ;;
250 "EV4.5 (21064)")
251 UNAME_MACHINE="alpha" ;;
252 "LCA4 (21066/21068)")
253 UNAME_MACHINE="alpha" ;;
254 "EV5 (21164)")
255 UNAME_MACHINE="alphaev5" ;;
256 "EV5.6 (21164A)")
257 UNAME_MACHINE="alphaev56" ;;
258 "EV5.6 (21164PC)")
259 UNAME_MACHINE="alphapca56" ;;
260 "EV5.7 (21164PC)")
261 UNAME_MACHINE="alphapca57" ;;
262 "EV6 (21264)")
263 UNAME_MACHINE="alphaev6" ;;
264 "EV6.7 (21264A)")
265 UNAME_MACHINE="alphaev67" ;;
266 "EV6.8CB (21264C)")
267 UNAME_MACHINE="alphaev68" ;;
268 "EV6.8AL (21264B)")
269 UNAME_MACHINE="alphaev68" ;;
270 "EV6.8CX (21264D)")
271 UNAME_MACHINE="alphaev68" ;;
272 "EV6.9A (21264/EV69A)")
273 UNAME_MACHINE="alphaev69" ;;
274 "EV7 (21364)")
275 UNAME_MACHINE="alphaev7" ;;
276 "EV7.9 (21364A)")
277 UNAME_MACHINE="alphaev79" ;;
278 esac
177279 # A Vn.n version is a released version.
178280 # A Tn.n version is a released field test version.
179281 # A Xn.n version is an unreleased experimental baselevel.
180282 # 1.2 uses "1.2" for uname -r.
181 cat <<EOF >$dummy.s
182 .data
183 \$Lformat:
184 .byte 37,100,45,37,120,10,0 # "%d-%x\n"
185
186 .text
187 .globl main
188 .align 4
189 .ent main
190 main:
191 .frame \$30,16,\$26,0
192 ldgp \$29,0(\$27)
193 .prologue 1
194 .long 0x47e03d80 # implver \$0
195 lda \$2,-1
196 .long 0x47e20c21 # amask \$2,\$1
197 lda \$16,\$Lformat
198 mov \$0,\$17
199 not \$1,\$18
200 jsr \$26,printf
201 ldgp \$29,0(\$26)
202 mov 0,\$16
203 jsr \$26,exit
204 .end main
205 EOF
206 $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
207 if test "$?" = 0 ; then
208 case `./$dummy` in
209 0-0)
210 UNAME_MACHINE="alpha"
211 ;;
212 1-0)
213 UNAME_MACHINE="alphaev5"
214 ;;
215 1-1)
216 UNAME_MACHINE="alphaev56"
217 ;;
218 1-101)
219 UNAME_MACHINE="alphapca56"
220 ;;
221 2-303)
222 UNAME_MACHINE="alphaev6"
223 ;;
224 2-307)
225 UNAME_MACHINE="alphaev67"
226 ;;
227 esac
228 fi
229 rm -f $dummy.s $dummy
230283 echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
284 exit 0 ;;
285 Alpha*:OpenVMS:*:*)
286 echo alpha-hp-vms
231287 exit 0 ;;
232288 Alpha\ *:Windows_NT*:*)
233289 # How do we know it's Interix rather than the generic POSIX subsystem?
241297 Amiga*:UNIX_System_V:4.0:*)
242298 echo m68k-unknown-sysv4
243299 exit 0;;
244 amiga:OpenBSD:*:*)
245 echo m68k-unknown-openbsd${UNAME_RELEASE}
246 exit 0 ;;
247300 *:[Aa]miga[Oo][Ss]:*:*)
248301 echo ${UNAME_MACHINE}-unknown-amigaos
249302 exit 0 ;;
250 arc64:OpenBSD:*:*)
251 echo mips64el-unknown-openbsd${UNAME_RELEASE}
252 exit 0 ;;
253 arc:OpenBSD:*:*)
254 echo mipsel-unknown-openbsd${UNAME_RELEASE}
255 exit 0 ;;
256 hkmips:OpenBSD:*:*)
257 echo mips-unknown-openbsd${UNAME_RELEASE}
258 exit 0 ;;
259 pmax:OpenBSD:*:*)
260 echo mipsel-unknown-openbsd${UNAME_RELEASE}
261 exit 0 ;;
262 sgi:OpenBSD:*:*)
263 echo mips-unknown-openbsd${UNAME_RELEASE}
264 exit 0 ;;
265 wgrisc:OpenBSD:*:*)
266 echo mipsel-unknown-openbsd${UNAME_RELEASE}
303 *:[Mm]orph[Oo][Ss]:*:*)
304 echo ${UNAME_MACHINE}-unknown-morphos
267305 exit 0 ;;
268306 *:OS/390:*:*)
269307 echo i370-ibm-openedition
285323 NILE*:*:*:dcosx)
286324 echo pyramid-pyramid-svr4
287325 exit 0 ;;
326 DRS?6000:unix:4.0:6*)
327 echo sparc-icl-nx6
328 exit 0 ;;
329 DRS?6000:UNIX_SV:4.2*:7*)
330 case `/usr/bin/uname -p` in
331 sparc) echo sparc-icl-nx7 && exit 0 ;;
332 esac ;;
288333 sun4H:SunOS:5.*:*)
289334 echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
290335 exit 0 ;;
313358 echo m68k-sun-sunos${UNAME_RELEASE}
314359 exit 0 ;;
315360 sun*:*:4.2BSD:*)
316 UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
361 UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
317362 test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
318363 case "`/bin/arch`" in
319364 sun3)
326371 exit 0 ;;
327372 aushp:SunOS:*:*)
328373 echo sparc-auspex-sunos${UNAME_RELEASE}
329 exit 0 ;;
330 atari*:OpenBSD:*:*)
331 echo m68k-unknown-openbsd${UNAME_RELEASE}
332374 exit 0 ;;
333375 # The situation for MiNT is a little confusing. The machine name
334376 # can be virtually everything (everything which is not
356398 *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
357399 echo m68k-unknown-mint${UNAME_RELEASE}
358400 exit 0 ;;
359 sun3*:OpenBSD:*:*)
360 echo m68k-unknown-openbsd${UNAME_RELEASE}
361 exit 0 ;;
362 mac68k:OpenBSD:*:*)
363 echo m68k-unknown-openbsd${UNAME_RELEASE}
364 exit 0 ;;
365 mvme68k:OpenBSD:*:*)
366 echo m68k-unknown-openbsd${UNAME_RELEASE}
367 exit 0 ;;
368 mvme88k:OpenBSD:*:*)
369 echo m88k-unknown-openbsd${UNAME_RELEASE}
370 exit 0 ;;
371401 powerpc:machten:*:*)
372402 echo powerpc-apple-machten${UNAME_RELEASE}
373403 exit 0 ;;
384414 echo clipper-intergraph-clix${UNAME_RELEASE}
385415 exit 0 ;;
386416 mips:*:*:UMIPS | mips:*:*:RISCos)
417 eval $set_cc_for_build
387418 sed 's/^ //' << EOF >$dummy.c
388419 #ifdef __cplusplus
389420 #include <stdio.h> /* for printf() prototype */
405436 exit (-1);
406437 }
407438 EOF
408 $CC_FOR_BUILD $dummy.c -o $dummy \
409 && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
410 && rm -f $dummy.c $dummy && exit 0
411 rm -f $dummy.c $dummy
439 $CC_FOR_BUILD -o $dummy $dummy.c \
440 && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
441 && exit 0
412442 echo mips-mips-riscos${UNAME_RELEASE}
413443 exit 0 ;;
414444 Motorola:PowerMAX_OS:*:*)
415445 echo powerpc-motorola-powermax
446 exit 0 ;;
447 Motorola:*:4.3:PL8-*)
448 echo powerpc-harris-powermax
449 exit 0 ;;
450 Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
451 echo powerpc-harris-powermax
416452 exit 0 ;;
417453 Night_Hawk:Power_UNIX:*:*)
418454 echo powerpc-harris-powerunix
474510 exit 0 ;;
475511 *:AIX:2:3)
476512 if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
513 eval $set_cc_for_build
477514 sed 's/^ //' << EOF >$dummy.c
478515 #include <sys/systemcfg.h>
479516
485522 exit(0);
486523 }
487524 EOF
488 $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
489 rm -f $dummy.c $dummy
525 $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
490526 echo rs6000-ibm-aix3.2.5
491527 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
492528 echo rs6000-ibm-aix3.2.4
495531 fi
496532 exit 0 ;;
497533 *:AIX:*:[45])
498 IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
534 IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
499535 if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
500536 IBM_ARCH=rs6000
501537 else
535571 9000/31? ) HP_ARCH=m68000 ;;
536572 9000/[34]?? ) HP_ARCH=m68k ;;
537573 9000/[678][0-9][0-9])
538 case "${HPUX_REV}" in
539 11.[0-9][0-9])
540 if [ -x /usr/bin/getconf ]; then
541 sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
574 if [ -x /usr/bin/getconf ]; then
575 sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
542576 sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
543577 case "${sc_cpu_version}" in
544578 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
547581 case "${sc_kernel_bits}" in
548582 32) HP_ARCH="hppa2.0n" ;;
549583 64) HP_ARCH="hppa2.0w" ;;
584 '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
550585 esac ;;
551586 esac
552 fi ;;
553 esac
554 if [ "${HP_ARCH}" = "" ]; then
555 sed 's/^ //' << EOF >$dummy.c
587 fi
588 if [ "${HP_ARCH}" = "" ]; then
589 eval $set_cc_for_build
590 sed 's/^ //' << EOF >$dummy.c
556591
557592 #define _HPUX_SOURCE
558593 #include <stdlib.h>
585620 exit (0);
586621 }
587622 EOF
588 (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
589 if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
590 rm -f $dummy.c $dummy
591 fi ;;
623 (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
624 test -z "$HP_ARCH" && HP_ARCH=hppa
625 fi ;;
592626 esac
627 if [ ${HP_ARCH} = "hppa2.0w" ]
628 then
629 # avoid double evaluation of $set_cc_for_build
630 test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
631 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
632 then
633 HP_ARCH="hppa2.0w"
634 else
635 HP_ARCH="hppa64"
636 fi
637 fi
593638 echo ${HP_ARCH}-hp-hpux${HPUX_REV}
594639 exit 0 ;;
595640 ia64:HP-UX:*:*)
597642 echo ia64-hp-hpux${HPUX_REV}
598643 exit 0 ;;
599644 3050*:HI-UX:*:*)
645 eval $set_cc_for_build
600646 sed 's/^ //' << EOF >$dummy.c
601647 #include <unistd.h>
602648 int
622668 exit (0);
623669 }
624670 EOF
625 $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
626 rm -f $dummy.c $dummy
671 $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
627672 echo unknown-hitachi-hiuxwe2
628673 exit 0 ;;
629674 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
632677 9000/8??:4.3bsd:*:*)
633678 echo hppa1.0-hp-bsd
634679 exit 0 ;;
635 *9??*:MPE/iX:*:*)
680 *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
636681 echo hppa1.0-hp-mpeix
637682 exit 0 ;;
638683 hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
650695 exit 0 ;;
651696 parisc*:Lites*:*:*)
652697 echo hppa1.1-hp-lites
653 exit 0 ;;
654 hppa*:OpenBSD:*:*)
655 echo hppa-unknown-openbsd
656698 exit 0 ;;
657699 C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
658700 echo c1-convex-bsd
672714 C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
673715 echo c4-convex-bsd
674716 exit 0 ;;
675 CRAY*X-MP:*:*:*)
676 echo xmp-cray-unicos
677 exit 0 ;;
678717 CRAY*Y-MP:*:*:*)
679 echo ymp-cray-unicos${UNAME_RELEASE}
718 echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
680719 exit 0 ;;
681720 CRAY*[A-Z]90:*:*:*)
682721 echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
683722 | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
684 -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
723 -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
724 -e 's/\.[^.]*$/.X/'
685725 exit 0 ;;
686726 CRAY*TS:*:*:*)
687727 echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
688728 exit 0 ;;
689 CRAY*T3D:*:*:*)
690 echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
691 exit 0 ;;
692729 CRAY*T3E:*:*:*)
693730 echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
694731 exit 0 ;;
695732 CRAY*SV1:*:*:*)
696733 echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
697734 exit 0 ;;
698 CRAY-2:*:*:*)
699 echo cray2-cray-unicos
700 exit 0 ;;
735 *:UNICOS/mp:*:*)
736 echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
737 exit 0 ;;
701738 F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
702739 FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
703740 FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
704741 FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
705742 echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
706743 exit 0 ;;
707 hp300:OpenBSD:*:*)
708 echo m68k-unknown-openbsd${UNAME_RELEASE}
709 exit 0 ;;
710744 i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
711745 echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
712746 exit 0 ;;
716750 *:BSD/OS:*:*)
717751 echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
718752 exit 0 ;;
719 *:FreeBSD:*:*)
720 echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
721 exit 0 ;;
722 *:OpenBSD:*:*)
723 echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
753 *:FreeBSD:*:*|*:GNU/FreeBSD:*:*)
754 # Determine whether the default compiler uses glibc.
755 eval $set_cc_for_build
756 sed 's/^ //' << EOF >$dummy.c
757 #include <features.h>
758 #if __GLIBC__ >= 2
759 LIBC=gnu
760 #else
761 LIBC=
762 #endif
763 EOF
764 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
765 # GNU/FreeBSD systems have a "k" prefix to indicate we are using
766 # FreeBSD's kernel, but not the complete OS.
767 case ${LIBC} in gnu) kernel_only='k' ;; esac
768 echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
724769 exit 0 ;;
725770 i*:CYGWIN*:*)
726771 echo ${UNAME_MACHINE}-pc-cygwin
730775 exit 0 ;;
731776 i*:PW*:*)
732777 echo ${UNAME_MACHINE}-pc-pw32
778 exit 0 ;;
779 x86:Interix*:[34]*)
780 echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
781 exit 0 ;;
782 [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
783 echo i${UNAME_MACHINE}-pc-mks
733784 exit 0 ;;
734785 i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
735786 # How do we know it's Interix rather than the generic POSIX subsystem?
736787 # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
737788 # UNAME_MACHINE based on the output of uname instead of i386?
738 echo i386-pc-interix
789 echo i586-pc-interix
739790 exit 0 ;;
740791 i*:UWIN*:*)
741792 echo ${UNAME_MACHINE}-pc-uwin
755806 arm*:Linux:*:*)
756807 echo ${UNAME_MACHINE}-unknown-linux-gnu
757808 exit 0 ;;
809 cris:Linux:*:*)
810 echo cris-axis-linux-gnu
811 exit 0 ;;
758812 ia64:Linux:*:*)
759 echo ${UNAME_MACHINE}-unknown-linux
813 echo ${UNAME_MACHINE}-unknown-linux-gnu
760814 exit 0 ;;
761815 m68*:Linux:*:*)
762816 echo ${UNAME_MACHINE}-unknown-linux-gnu
763817 exit 0 ;;
764818 mips:Linux:*:*)
765 cat >$dummy.c <<EOF
766 #ifdef __cplusplus
767 #include <stdio.h> /* for printf() prototype */
768 int main (int argc, char *argv[]) {
769 #else
770 int main (argc, argv) int argc; char *argv[]; {
771 #endif
772 #ifdef __MIPSEB__
773 printf ("%s-unknown-linux-gnu\n", argv[1]);
774 #endif
775 #ifdef __MIPSEL__
776 printf ("%sel-unknown-linux-gnu\n", argv[1]);
777 #endif
778 return 0;
779 }
819 eval $set_cc_for_build
820 sed 's/^ //' << EOF >$dummy.c
821 #undef CPU
822 #undef mips
823 #undef mipsel
824 #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
825 CPU=mipsel
826 #else
827 #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
828 CPU=mips
829 #else
830 CPU=
831 #endif
832 #endif
780833 EOF
781 $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
782 rm -f $dummy.c $dummy
834 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
835 test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
836 ;;
837 mips64:Linux:*:*)
838 eval $set_cc_for_build
839 sed 's/^ //' << EOF >$dummy.c
840 #undef CPU
841 #undef mips64
842 #undef mips64el
843 #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
844 CPU=mips64el
845 #else
846 #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
847 CPU=mips64
848 #else
849 CPU=
850 #endif
851 #endif
852 EOF
853 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
854 test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
783855 ;;
784856 ppc:Linux:*:*)
785 # Determine Lib Version
786 cat >$dummy.c <<EOF
787 #include <features.h>
788 #if defined(__GLIBC__)
789 extern char __libc_version[];
790 extern char __libc_release[];
791 #endif
792 main(argc, argv)
793 int argc;
794 char *argv[];
795 {
796 #if defined(__GLIBC__)
797 printf("%s %s\n", __libc_version, __libc_release);
798 #else
799 printf("unknown\n");
800 #endif
801 return 0;
802 }
803 EOF
804 LIBC=""
805 $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
806 if test "$?" = 0 ; then
807 ./$dummy | grep 1\.99 > /dev/null
808 if test "$?" = 0 ; then LIBC="libc1" ; fi
809 fi
810 rm -f $dummy.c $dummy
811 echo powerpc-unknown-linux-gnu${LIBC}
857 echo powerpc-unknown-linux-gnu
858 exit 0 ;;
859 ppc64:Linux:*:*)
860 echo powerpc64-unknown-linux-gnu
812861 exit 0 ;;
813862 alpha:Linux:*:*)
814 cat <<EOF >$dummy.s
815 .data
816 \$Lformat:
817 .byte 37,100,45,37,120,10,0 # "%d-%x\n"
818 .text
819 .globl main
820 .align 4
821 .ent main
822 main:
823 .frame \$30,16,\$26,0
824 ldgp \$29,0(\$27)
825 .prologue 1
826 .long 0x47e03d80 # implver \$0
827 lda \$2,-1
828 .long 0x47e20c21 # amask \$2,\$1
829 lda \$16,\$Lformat
830 mov \$0,\$17
831 not \$1,\$18
832 jsr \$26,printf
833 ldgp \$29,0(\$26)
834 mov 0,\$16
835 jsr \$26,exit
836 .end main
837 EOF
838 LIBC=""
839 $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
840 if test "$?" = 0 ; then
841 case `./$dummy` in
842 0-0) UNAME_MACHINE="alpha" ;;
843 1-0) UNAME_MACHINE="alphaev5" ;;
844 1-1) UNAME_MACHINE="alphaev56" ;;
845 1-101) UNAME_MACHINE="alphapca56" ;;
846 2-303) UNAME_MACHINE="alphaev6" ;;
847 2-307) UNAME_MACHINE="alphaev67" ;;
848 esac
849 objdump --private-headers $dummy | \
850 grep ld.so.1 > /dev/null
851 if test "$?" = 0 ; then
852 LIBC="libc1"
853 fi
854 fi
855 rm -f $dummy.s $dummy
863 case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
864 EV5) UNAME_MACHINE=alphaev5 ;;
865 EV56) UNAME_MACHINE=alphaev56 ;;
866 PCA56) UNAME_MACHINE=alphapca56 ;;
867 PCA57) UNAME_MACHINE=alphapca56 ;;
868 EV6) UNAME_MACHINE=alphaev6 ;;
869 EV67) UNAME_MACHINE=alphaev67 ;;
870 EV68*) UNAME_MACHINE=alphaev68 ;;
871 esac
872 objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
873 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
856874 echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
857875 exit 0 ;;
858876 parisc:Linux:*:* | hppa:Linux:*:*)
869887 s390:Linux:*:* | s390x:Linux:*:*)
870888 echo ${UNAME_MACHINE}-ibm-linux
871889 exit 0 ;;
890 sh64*:Linux:*:*)
891 echo ${UNAME_MACHINE}-unknown-linux-gnu
892 exit 0 ;;
872893 sh*:Linux:*:*)
873894 echo ${UNAME_MACHINE}-unknown-linux-gnu
874895 exit 0 ;;
882903 # The BFD linker knows what the default object file format is, so
883904 # first see if it will tell us. cd to the root directory to prevent
884905 # problems with other programs or directories called `ld' in the path.
885 ld_supported_emulations=`cd /; ld --help 2>&1 \
886 | sed -ne '/supported emulations:/!d
906 # Set LC_ALL=C to ensure ld outputs messages in English.
907 ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
908 | sed -ne '/supported targets:/!d
887909 s/[ ][ ]*/ /g
888 s/.*supported emulations: *//
910 s/.*supported targets: *//
889911 s/ .*//
890912 p'`
891 case "$ld_supported_emulations" in
892 i*86linux)
893 echo "${UNAME_MACHINE}-pc-linux-gnuaout"
894 exit 0
895 ;;
896 elf_i*86)
913 case "$ld_supported_targets" in
914 elf32-i386)
897915 TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
898916 ;;
899 i*86coff)
917 a.out-i386-linux)
918 echo "${UNAME_MACHINE}-pc-linux-gnuaout"
919 exit 0 ;;
920 coff-i386)
900921 echo "${UNAME_MACHINE}-pc-linux-gnucoff"
901 exit 0
902 ;;
903 esac
904 # Either a pre-BFD a.out linker (linux-gnuoldld)
905 # or one that does not give us useful --help.
906 # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
907 # If ld does not provide *any* "supported emulations:"
908 # that means it is gnuoldld.
909 test -z "$ld_supported_emulations" && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
910 case "${UNAME_MACHINE}" in
911 i*86)
912 VENDOR=pc;
913 ;;
914 *)
915 VENDOR=unknown;
916 ;;
922 exit 0 ;;
923 "")
924 # Either a pre-BFD a.out linker (linux-gnuoldld) or
925 # one that does not give us useful --help.
926 echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
927 exit 0 ;;
917928 esac
918929 # Determine whether the default compiler is a.out or elf
919 cat >$dummy.c <<EOF
920 #include <features.h>
921 #ifdef __cplusplus
922 #include <stdio.h> /* for printf() prototype */
923 int main (int argc, char *argv[]) {
924 #else
925 int main (argc, argv) int argc; char *argv[]; {
926 #endif
927 #ifdef __ELF__
928 # ifdef __GLIBC__
929 # if __GLIBC__ >= 2
930 printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
931 # else
932 printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
933 # endif
934 # else
935 printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
936 # endif
937 #else
938 printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
939 #endif
940 return 0;
941 }
930 eval $set_cc_for_build
931 sed 's/^ //' << EOF >$dummy.c
932 #include <features.h>
933 #ifdef __ELF__
934 # ifdef __GLIBC__
935 # if __GLIBC__ >= 2
936 LIBC=gnu
937 # else
938 LIBC=gnulibc1
939 # endif
940 # else
941 LIBC=gnulibc1
942 # endif
943 #else
944 #ifdef __INTEL_COMPILER
945 LIBC=gnu
946 #else
947 LIBC=gnuaout
948 #endif
949 #endif
942950 EOF
943 $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
944 rm -f $dummy.c $dummy
951 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
952 test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
945953 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
946954 ;;
947 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
948 # are messed up and put the nodename in both sysname and nodename.
949955 i*86:DYNIX/ptx:4*:*)
956 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
957 # earlier versions are messed up and put the nodename in both
958 # sysname and nodename.
950959 echo i386-sequent-sysv4
951960 exit 0 ;;
952961 i*86:UNIX_SV:4.2MP:2.*)
957966 # Use sysv4.2uw... so that sysv4* matches it.
958967 echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
959968 exit 0 ;;
969 i*86:OS/2:*:*)
970 # If we were able to find `uname', then EMX Unix compatibility
971 # is probably installed.
972 echo ${UNAME_MACHINE}-pc-os2-emx
973 exit 0 ;;
974 i*86:XTS-300:*:STOP)
975 echo ${UNAME_MACHINE}-unknown-stop
976 exit 0 ;;
977 i*86:atheos:*:*)
978 echo ${UNAME_MACHINE}-unknown-atheos
979 exit 0 ;;
980 i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
981 echo i386-unknown-lynxos${UNAME_RELEASE}
982 exit 0 ;;
983 i*86:*DOS:*:*)
984 echo ${UNAME_MACHINE}-pc-msdosdjgpp
985 exit 0 ;;
960986 i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
961987 UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
962988 if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
965991 echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
966992 fi
967993 exit 0 ;;
968 i*86:*:5:7*)
969 # Fixed at (any) Pentium or better
970 UNAME_MACHINE=i586
971 if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then
972 echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION}
973 else
974 echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
975 fi
994 i*86:*:5:[78]*)
995 case `/bin/uname -X | grep "^Machine"` in
996 *486*) UNAME_MACHINE=i486 ;;
997 *Pentium) UNAME_MACHINE=i586 ;;
998 *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
999 esac
1000 echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
9761001 exit 0 ;;
9771002 i*86:*:3.2:*)
9781003 if test -f /usr/options/cb.name; then
9791004 UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
9801005 echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
9811006 elif /bin/uname -X 2>/dev/null >/dev/null ; then
982 UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
983 (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
984 (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
1007 UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
1008 (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
1009 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
9851010 && UNAME_MACHINE=i586
986 (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
1011 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
9871012 && UNAME_MACHINE=i686
988 (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
1013 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
9891014 && UNAME_MACHINE=i686
9901015 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
9911016 else
9921017 echo ${UNAME_MACHINE}-pc-sysv32
9931018 fi
994 exit 0 ;;
995 i*86:*DOS:*:*)
996 echo ${UNAME_MACHINE}-pc-msdosdjgpp
9971019 exit 0 ;;
9981020 pc:*:*:*)
9991021 # Left here for compatibility:
10181040 # "miniframe"
10191041 echo m68010-convergent-sysv
10201042 exit 0 ;;
1043 mc68k:UNIX:SYSTEM5:3.51m)
1044 echo m68k-convergent-sysv
1045 exit 0 ;;
1046 M680?0:D-NIX:5.3:*)
1047 echo m68k-diab-dnix
1048 exit 0 ;;
10211049 M68*:*:R3V[567]*:*)
10221050 test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
1023 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
1051 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
10241052 OS_REL=''
10251053 test -r /etc/.relid \
10261054 && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
10371065 mc68030:UNIX_System_V:4.*:*)
10381066 echo m68k-atari-sysv4
10391067 exit 0 ;;
1040 i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
1041 echo i386-unknown-lynxos${UNAME_RELEASE}
1042 exit 0 ;;
10431068 TSUNAMI:LynxOS:2.*:*)
10441069 echo sparc-unknown-lynxos${UNAME_RELEASE}
10451070 exit 0 ;;
10661091 echo ns32k-sni-sysv
10671092 fi
10681093 exit 0 ;;
1069 PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
1070 # says <Richard.M.Bartel@ccMail.Census.GOV>
1094 PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
1095 # says <Richard.M.Bartel@ccMail.Census.GOV>
10711096 echo i586-unisys-sysv4
10721097 exit 0 ;;
10731098 *:UNIX_System_V:4*:FTX*)
10791104 # From seanf@swdc.stratus.com.
10801105 echo i860-stratus-sysv4
10811106 exit 0 ;;
1107 *:VOS:*:*)
1108 # From Paul.Green@stratus.com.
1109 echo hppa1.1-stratus-vos
1110 exit 0 ;;
10821111 mc68*:A/UX:*:*)
10831112 echo m68k-apple-aux${UNAME_RELEASE}
10841113 exit 0 ;;
11071136 SX-5:SUPER-UX:*:*)
11081137 echo sx5-nec-superux${UNAME_RELEASE}
11091138 exit 0 ;;
1139 SX-6:SUPER-UX:*:*)
1140 echo sx6-nec-superux${UNAME_RELEASE}
1141 exit 0 ;;
11101142 Power*:Rhapsody:*:*)
11111143 echo powerpc-apple-rhapsody${UNAME_RELEASE}
11121144 exit 0 ;;
11141146 echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
11151147 exit 0 ;;
11161148 *:Darwin:*:*)
1117 echo `uname -p`-apple-darwin${UNAME_RELEASE}
1149 case `uname -p` in
1150 *86) UNAME_PROCESSOR=i686 ;;
1151 powerpc) UNAME_PROCESSOR=powerpc ;;
1152 esac
1153 echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
11181154 exit 0 ;;
11191155 *:procnto*:*:* | *:QNX:[0123456789]*:*)
1120 if test "${UNAME_MACHINE}" = "x86pc"; then
1156 UNAME_PROCESSOR=`uname -p`
1157 if test "$UNAME_PROCESSOR" = "x86"; then
1158 UNAME_PROCESSOR=i386
11211159 UNAME_MACHINE=pc
11221160 fi
1123 echo `uname -p`-${UNAME_MACHINE}-nto-qnx
1161 echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
11241162 exit 0 ;;
11251163 *:QNX:*:4*)
11261164 echo i386-pc-qnx
11271165 exit 0 ;;
1128 NSR-[KW]:NONSTOP_KERNEL:*:*)
1166 NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
11291167 echo nsr-tandem-nsk${UNAME_RELEASE}
11301168 exit 0 ;;
11311169 *:NonStop-UX:*:*)
11481186 fi
11491187 echo ${UNAME_MACHINE}-unknown-plan9
11501188 exit 0 ;;
1151 i*86:OS/2:*:*)
1152 # If we were able to find `uname', then EMX Unix compatibility
1153 # is probably installed.
1154 echo ${UNAME_MACHINE}-pc-os2-emx
1155 exit 0 ;;
11561189 *:TOPS-10:*:*)
11571190 echo pdp10-unknown-tops10
11581191 exit 0 ;;
11711204 *:ITS:*:*)
11721205 echo pdp10-unknown-its
11731206 exit 0 ;;
1207 SEI:*:*:SEIUX)
1208 echo mips-sei-seiux${UNAME_RELEASE}
1209 exit 0 ;;
11741210 esac
11751211
11761212 #echo '(No uname command or uname output not recognized.)' 1>&2
11771213 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
11781214
1215 eval $set_cc_for_build
11791216 cat >$dummy.c <<EOF
11801217 #ifdef _SEQUENT_
11811218 # include <sys/types.h>
12901327 }
12911328 EOF
12921329
1293 $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
1294 rm -f $dummy.c $dummy
1330 $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
12951331
12961332 # Apollos put the system type in the environment.
12971333
00 #! /bin/sh
11 # Configuration validation subroutine script.
2 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
3 # Free Software Foundation, Inc.
4
5 timestamp='2001-05-11'
2 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3 # 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
4
5 timestamp='2003-07-17'
66
77 # This file is (in principle) common to ALL GNU software.
88 # The presence of a machine in this file suggests that SOME GNU software
2828 # configuration script generated by Autoconf, you may include it under
2929 # the same distribution terms that you use for the rest of that program.
3030
31 # Please send patches to <config-patches@gnu.org>.
31 # Please send patches to <config-patches@gnu.org>. Submit a context
32 # diff and a properly formatted ChangeLog entry.
3233 #
3334 # Configuration subroutine to validate and canonicalize a configuration type.
3435 # Supply the specified configuration type as an argument.
116117 # Here we must recognize all the valid KERNEL-OS combinations.
117118 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
118119 case $maybe_os in
119 nto-qnx* | linux-gnu* | storm-chaos* | os2-emx*)
120 nto-qnx* | linux-gnu* | kfreebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
120121 os=-$maybe_os
121122 basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
122123 ;;
156157 os=-vxworks
157158 basic_machine=$1
158159 ;;
160 -chorusos*)
161 os=-chorusos
162 basic_machine=$1
163 ;;
164 -chorusrdb)
165 os=-chorusrdb
166 basic_machine=$1
167 ;;
159168 -hiux*)
160169 os=-hiuxwe2
161170 ;;
214223 case $basic_machine in
215224 # Recognize the basic CPU types without company name.
216225 # Some are omitted here because they have special meanings below.
217 tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \
218 | arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \
219 | pyramid | mn10200 | mn10300 | tron | a29k \
220 | 580 | i960 | h8300 \
221 | x86 | ppcbe | mipsbe | mipsle | shbe | shle \
222 | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
223 | hppa64 \
224 | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \
225 | alphaev6[78] \
226 | we32k | ns16k | clipper | i370 | sh | sh[34] \
227 | powerpc | powerpcle \
228 | 1750a | dsp16xx | pdp10 | pdp11 \
229 | mips16 | mips64 | mipsel | mips64el \
230 | mips64orion | mips64orionel | mipstx39 | mipstx39el \
231 | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
232 | mips64vr5000 | miprs64vr5000el | mcore | s390 | s390x \
233 | sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \
234 | v850 | c4x \
235 | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \
236 | pj | pjl | h8500 | z8k)
226 1750a | 580 \
227 | a29k \
228 | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
229 | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
230 | am33_2.0 \
231 | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
232 | c4x | clipper \
233 | d10v | d30v | dlx | dsp16xx \
234 | fr30 | frv \
235 | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
236 | i370 | i860 | i960 | ia64 \
237 | ip2k | iq2000 \
238 | m32r | m68000 | m68k | m88k | mcore \
239 | mips | mipsbe | mipseb | mipsel | mipsle \
240 | mips16 \
241 | mips64 | mips64el \
242 | mips64vr | mips64vrel \
243 | mips64orion | mips64orionel \
244 | mips64vr4100 | mips64vr4100el \
245 | mips64vr4300 | mips64vr4300el \
246 | mips64vr5000 | mips64vr5000el \
247 | mipsisa32 | mipsisa32el \
248 | mipsisa32r2 | mipsisa32r2el \
249 | mipsisa64 | mipsisa64el \
250 | mipsisa64sb1 | mipsisa64sb1el \
251 | mipsisa64sr71k | mipsisa64sr71kel \
252 | mipstx39 | mipstx39el \
253 | mn10200 | mn10300 \
254 | msp430 \
255 | ns16k | ns32k \
256 | openrisc | or32 \
257 | pdp10 | pdp11 | pj | pjl \
258 | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
259 | pyramid \
260 | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
261 | sh64 | sh64le \
262 | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
263 | strongarm \
264 | tahoe | thumb | tic4x | tic80 | tron \
265 | v850 | v850e \
266 | we32k \
267 | x86 | xscale | xstormy16 | xtensa \
268 | z8k)
237269 basic_machine=$basic_machine-unknown
238270 ;;
239271 m6811 | m68hc11 | m6812 | m68hc12)
241273 basic_machine=$basic_machine-unknown
242274 os=-none
243275 ;;
244 m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | w65 | z8k)
276 m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
245277 ;;
246278
247279 # We use `pc' rather than `unknown'
256288 exit 1
257289 ;;
258290 # Recognize the basic CPU types with company name.
259 # FIXME: clean up the formatting here.
260 vax-* | tahoe-* | i*86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
261 | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \
262 | arm-* | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \
263 | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
264 | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
265 | xmp-* | ymp-* \
266 | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \
267 | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
268 | hppa2.0n-* | hppa64-* \
269 | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \
270 | alphaev6[78]-* \
271 | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
272 | clipper-* | orion-* \
273 | sparclite-* | pdp10-* | pdp11-* | sh-* | sh[34]-* | sh[34]eb-* \
274 | powerpc-* | powerpcle-* | sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \
275 | mips16-* | mips64-* | mipsel-* \
276 | mips64el-* | mips64orion-* | mips64orionel-* \
277 | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
278 | mipstx39-* | mipstx39el-* | mcore-* \
279 | f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \
280 | [cjt]90-* \
281 | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
282 | thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \
283 | bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*)
291 580-* \
292 | a29k-* \
293 | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
294 | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
295 | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
296 | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
297 | avr-* \
298 | bs2000-* \
299 | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
300 | clipper-* | cydra-* \
301 | d10v-* | d30v-* | dlx-* \
302 | elxsi-* \
303 | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
304 | h8300-* | h8500-* \
305 | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
306 | i*86-* | i860-* | i960-* | ia64-* \
307 | ip2k-* | iq2000-* \
308 | m32r-* \
309 | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
310 | m88110-* | m88k-* | mcore-* \
311 | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
312 | mips16-* \
313 | mips64-* | mips64el-* \
314 | mips64vr-* | mips64vrel-* \
315 | mips64orion-* | mips64orionel-* \
316 | mips64vr4100-* | mips64vr4100el-* \
317 | mips64vr4300-* | mips64vr4300el-* \
318 | mips64vr5000-* | mips64vr5000el-* \
319 | mipsisa32-* | mipsisa32el-* \
320 | mipsisa32r2-* | mipsisa32r2el-* \
321 | mipsisa64-* | mipsisa64el-* \
322 | mipsisa64sb1-* | mipsisa64sb1el-* \
323 | mipsisa64sr71k-* | mipsisa64sr71kel-* \
324 | mipstx39-* | mipstx39el-* \
325 | msp430-* \
326 | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
327 | orion-* \
328 | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
329 | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
330 | pyramid-* \
331 | romp-* | rs6000-* \
332 | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
333 | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
334 | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
335 | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
336 | tahoe-* | thumb-* \
337 | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
338 | tron-* \
339 | v850-* | v850e-* | vax-* \
340 | we32k-* \
341 | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
342 | xtensa-* \
343 | ymp-* \
344 | z8k-*)
284345 ;;
285346 # Recognize the various machine names and aliases which stand
286347 # for a CPU type and a company and sometimes even an OS.
312373 basic_machine=a29k-none
313374 os=-bsd
314375 ;;
376 amd64)
377 basic_machine=x86_64-pc
378 ;;
315379 amdahl)
316380 basic_machine=580-amdahl
317381 os=-sysv
343407 basic_machine=ns32k-sequent
344408 os=-dynix
345409 ;;
410 c90)
411 basic_machine=c90-cray
412 os=-unicos
413 ;;
346414 convex-c1)
347415 basic_machine=c1-convex
348416 os=-bsd
363431 basic_machine=c38-convex
364432 os=-bsd
365433 ;;
366 cray | ymp)
367 basic_machine=ymp-cray
368 os=-unicos
369 ;;
370 cray2)
371 basic_machine=cray2-cray
372 os=-unicos
373 ;;
374 [cjt]90)
375 basic_machine=${basic_machine}-cray
434 cray | j90)
435 basic_machine=j90-cray
376436 os=-unicos
377437 ;;
378438 crds | unos)
386446 ;;
387447 decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
388448 basic_machine=mips-dec
449 ;;
450 decsystem10* | dec10*)
451 basic_machine=pdp10-dec
452 os=-tops10
453 ;;
454 decsystem20* | dec20*)
455 basic_machine=pdp10-dec
456 os=-tops20
389457 ;;
390458 delta | 3300 | motorola-3300 | motorola-delta \
391459 | 3300-motorola | delta-motorola)
567635 basic_machine=m68k-atari
568636 os=-mint
569637 ;;
570 mipsel*-linux*)
571 basic_machine=mipsel-unknown
572 os=-linux-gnu
573 ;;
574 mips*-linux*)
575 basic_machine=mips-unknown
576 os=-linux-gnu
577 ;;
578638 mips3*-*)
579639 basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
580640 ;;
588648 monitor)
589649 basic_machine=m68k-rom68k
590650 os=-coff
651 ;;
652 morphos)
653 basic_machine=powerpc-unknown
654 os=-morphos
591655 ;;
592656 msdos)
593657 basic_machine=i386-pc
661725 np1)
662726 basic_machine=np1-gould
663727 ;;
728 nv1)
729 basic_machine=nv1-cray
730 os=-unicosmp
731 ;;
664732 nsr-tandem)
665733 basic_machine=nsr-tandem
666734 ;;
668736 basic_machine=hppa1.1-oki
669737 os=-proelf
670738 ;;
739 or32 | or32-*)
740 basic_machine=or32-unknown
741 os=-coff
742 ;;
671743 OSE68000 | ose68000)
672744 basic_machine=m68000-ericsson
673745 os=-ose
690762 pbb)
691763 basic_machine=m68k-tti
692764 ;;
693 pc532 | pc532-*)
765 pc532 | pc532-*)
694766 basic_machine=ns32k-pc532
695767 ;;
696 pentium | p5 | k5 | k6 | nexgen)
768 pentium | p5 | k5 | k6 | nexgen | viac3)
697769 basic_machine=i586-pc
698770 ;;
699 pentiumpro | p6 | 6x86 | athlon)
771 pentiumpro | p6 | 6x86 | athlon | athlon_*)
700772 basic_machine=i686-pc
701773 ;;
702 pentiumii | pentium2)
774 pentiumii | pentium2 | pentiumiii | pentium3)
703775 basic_machine=i686-pc
704776 ;;
705 pentium-* | p5-* | k5-* | k6-* | nexgen-*)
777 pentium4)
778 basic_machine=i786-pc
779 ;;
780 pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
706781 basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
707782 ;;
708783 pentiumpro-* | p6-* | 6x86-* | athlon-*)
709784 basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
710785 ;;
711 pentiumii-* | pentium2-*)
786 pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
712787 basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
788 ;;
789 pentium4-*)
790 basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
713791 ;;
714792 pn)
715793 basic_machine=pn-gould
717795 power) basic_machine=power-ibm
718796 ;;
719797 ppc) basic_machine=powerpc-unknown
720 ;;
798 ;;
721799 ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
722800 ;;
723801 ppcle | powerpclittle | ppc-le | powerpc-little)
724802 basic_machine=powerpcle-unknown
725 ;;
803 ;;
726804 ppcle-* | powerpclittle-*)
727805 basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
806 ;;
807 ppc64) basic_machine=powerpc64-unknown
808 ;;
809 ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
810 ;;
811 ppc64le | powerpc64little | ppc64-le | powerpc64-little)
812 basic_machine=powerpc64le-unknown
813 ;;
814 ppc64le-* | powerpc64little-*)
815 basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
728816 ;;
729817 ps2)
730818 basic_machine=i386-ibm
743831 rtpc | rtpc-*)
744832 basic_machine=romp-ibm
745833 ;;
834 s390 | s390-*)
835 basic_machine=s390-ibm
836 ;;
837 s390x | s390x-*)
838 basic_machine=s390x-ibm
839 ;;
746840 sa29200)
747841 basic_machine=a29k-amd
748842 os=-udi
749843 ;;
844 sb1)
845 basic_machine=mipsisa64sb1-unknown
846 ;;
847 sb1el)
848 basic_machine=mipsisa64sb1el-unknown
849 ;;
850 sei)
851 basic_machine=mips-sei
852 os=-seiux
853 ;;
750854 sequent)
751855 basic_machine=i386-sequent
752856 ;;
754858 basic_machine=sh-hitachi
755859 os=-hms
756860 ;;
757 sparclite-wrs)
861 sh64)
862 basic_machine=sh64-unknown
863 ;;
864 sparclite-wrs | simso-wrs)
758865 basic_machine=sparclite-wrs
759866 os=-vxworks
760867 ;;
821928 os=-dynix
822929 ;;
823930 t3e)
824 basic_machine=t3e-cray
931 basic_machine=alphaev5-cray
932 os=-unicos
933 ;;
934 t90)
935 basic_machine=t90-cray
825936 os=-unicos
826937 ;;
827938 tic54x | c54x*)
828939 basic_machine=tic54x-unknown
829940 os=-coff
830941 ;;
942 tic55x | c55x*)
943 basic_machine=tic55x-unknown
944 os=-coff
945 ;;
946 tic6x | c6x*)
947 basic_machine=tic6x-unknown
948 os=-coff
949 ;;
831950 tx39)
832951 basic_machine=mipstx39-unknown
833952 ;;
834953 tx39el)
835954 basic_machine=mipstx39el-unknown
955 ;;
956 toad1)
957 basic_machine=pdp10-xkl
958 os=-tops20
836959 ;;
837960 tower | tower-32)
838961 basic_machine=m68k-ncr
858981 os=-vms
859982 ;;
860983 vpp*|vx|vx-*)
861 basic_machine=f301-fujitsu
862 ;;
984 basic_machine=f301-fujitsu
985 ;;
863986 vxworks960)
864987 basic_machine=i960-wrs
865988 os=-vxworks
8801003 basic_machine=hppa1.1-winbond
8811004 os=-proelf
8821005 ;;
883 xmp)
884 basic_machine=xmp-cray
1006 xps | xps100)
1007 basic_machine=xps100-honeywell
1008 ;;
1009 ymp)
1010 basic_machine=ymp-cray
8851011 os=-unicos
886 ;;
887 xps | xps100)
888 basic_machine=xps100-honeywell
8891012 ;;
8901013 z8k-*-coff)
8911014 basic_machine=z8k-unknown
9071030 op60c)
9081031 basic_machine=hppa1.1-oki
9091032 ;;
910 mips)
911 if [ x$os = x-linux-gnu ]; then
912 basic_machine=mips-unknown
913 else
914 basic_machine=mips-mips
915 fi
916 ;;
9171033 romp)
9181034 basic_machine=romp-ibm
9191035 ;;
9331049 we32k)
9341050 basic_machine=we32k-att
9351051 ;;
936 sh3 | sh4)
1052 sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
9371053 basic_machine=sh-unknown
1054 ;;
1055 sh64)
1056 basic_machine=sh64-unknown
9381057 ;;
9391058 sparc | sparcv9 | sparcv9b)
9401059 basic_machine=sparc-sun
9411060 ;;
942 cydra)
1061 cydra)
9431062 basic_machine=cydra-cydrome
9441063 ;;
9451064 orion)
9531072 ;;
9541073 pmac | pmac-mpw)
9551074 basic_machine=powerpc-apple
956 ;;
957 c4x*)
958 basic_machine=c4x-none
959 os=-coff
9601075 ;;
9611076 *-unknown)
9621077 # Make sure to match an already-canonicalized machine name.
10131128 | -aos* \
10141129 | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
10151130 | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
1016 | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
1131 | -hiux* | -386bsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \
10171132 | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
10181133 | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
10191134 | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
1135 | -chorusos* | -chorusrdb* \
10201136 | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
10211137 | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
1022 | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
1138 | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
10231139 | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
1024 | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -os2*)
1140 | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
1141 | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
1142 | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
1143 | -powermax* | -dnix* | -nx6 | -nx7 | -sei*)
10251144 # Remember, each alternative MUST END IN *, to match a version number.
10261145 ;;
10271146 -qnx*)
10331152 ;;
10341153 esac
10351154 ;;
1155 -nto-qnx*)
1156 ;;
10361157 -nto*)
1037 os=-nto-qnx
1158 os=`echo $os | sed -e 's|nto|nto-qnx|'`
10381159 ;;
10391160 -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
10401161 | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
10731194 -acis*)
10741195 os=-aos
10751196 ;;
1197 -atheos*)
1198 os=-atheos
1199 ;;
10761200 -386bsd)
10771201 os=-bsd
10781202 ;;
10791203 -ctix* | -uts*)
10801204 os=-sysv
10811205 ;;
1206 -nova*)
1207 os=-rtmk-nova
1208 ;;
10821209 -ns2 )
1083 os=-nextstep2
1210 os=-nextstep2
10841211 ;;
10851212 -nsk*)
10861213 os=-nsk
11191246 -xenix)
11201247 os=-xenix
11211248 ;;
1122 -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
1123 os=-mint
1249 -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
1250 os=-mint
1251 ;;
1252 -aros*)
1253 os=-aros
1254 ;;
1255 -kaos*)
1256 os=-kaos
11241257 ;;
11251258 -none)
11261259 ;;
11531286 arm*-semi)
11541287 os=-aout
11551288 ;;
1289 c4x-* | tic4x-*)
1290 os=-coff
1291 ;;
1292 # This must come before the *-dec entry.
11561293 pdp10-*)
11571294 os=-tops20
11581295 ;;
1159 pdp11-*)
1296 pdp11-*)
11601297 os=-none
11611298 ;;
11621299 *-dec | vax-*)
11831320 mips*-*)
11841321 os=-elf
11851322 ;;
1323 or32-*)
1324 os=-coff
1325 ;;
11861326 *-tti) # must be before sparc entry or we get the wrong os.
11871327 os=-sysv3
11881328 ;;
12461386 *-next)
12471387 os=-nextstep3
12481388 ;;
1249 *-gould)
1389 *-gould)
12501390 os=-sysv
12511391 ;;
1252 *-highlevel)
1392 *-highlevel)
12531393 os=-bsd
12541394 ;;
12551395 *-encore)
12561396 os=-bsd
12571397 ;;
1258 *-sgi)
1398 *-sgi)
12591399 os=-irix
12601400 ;;
1261 *-siemens)
1401 *-siemens)
12621402 os=-sysv4
12631403 ;;
12641404 *-masscomp)
13301470 -ptx*)
13311471 vendor=sequent
13321472 ;;
1333 -vxsim* | -vxworks*)
1473 -vxsim* | -vxworks* | -windiss*)
13341474 vendor=wrs
13351475 ;;
13361476 -aux*)
13441484 ;;
13451485 -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
13461486 vendor=atari
1487 ;;
1488 -vos*)
1489 vendor=stratus
13471490 ;;
13481491 esac
13491492 basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
0 pspp for DEBIAN
1 ----------------------
2
3 PSPP is a work in progress. Some documented features are not
4 implemented (for example, the --pipe switch). Some implemented
5 features may not be documented. There are some bugs. Some are
6 discussed in the info page in the "crosstabs" node (which is under the
7 "statistics" node).
8
9 If you are not familiar with SPSS, you should probably look first at
10 the files in /usr/doc/pspp/examples, starting with example.stat.
11
12 You are invited to contribute documentation and/or code to help
13 complete PSPP. The upstream maintainer is Ben Pfaff
14 <pfaffben@pilot.msu.edu>. He writes:
15
16 Also, with the release of 0.2.0 I will be taking a vacation from PSPP
17 to work on my newest project, known as NOODLE, which is an interpreter
18 for a desktop publishing language of my own invention. I hope that
19 NOODLE will eventually be competitive with PageMaker or QuarkXpress.
20
21 I am still looking for PSPP developers, people who care about
22 statistics and know programming. If there is someone out there who
23 wants to take over PSPP development and maintenance, please contact
24 me. I am tired of this project. 4 years is too long. PSPP
25 development will slow down if I'm still the only one working on it.
26
27 Ben
28
29 -- James R. Van Zandt <jrv@debian.org>, Fri, 13 Jun 2003 15:55:40 -0400
+0
-30
debian/README.debian less more
0 pspp for DEBIAN
1 ----------------------
2
3 PSPP is a work in progress. Some documented features are not
4 implemented (for example, the --pipe switch). Some implemented
5 features may not be documented. There are some bugs. Some are
6 discussed in the info page in the "crosstabs" node (which is under the
7 "statistics" node).
8
9 If you are not familiar with SPSS, you should probably look first at
10 the files in /usr/doc/pspp/examples, starting with example.stat.
11
12 You are invited to contribute documentation and/or code to help
13 complete PSPP. The upstream maintainer is Ben Pfaff
14 <pfaffben@pilot.msu.edu>. He writes:
15
16 Also, with the release of 0.2.0 I will be taking a vacation from PSPP
17 to work on my newest project, known as NOODLE, which is an interpreter
18 for a desktop publishing language of my own invention. I hope that
19 NOODLE will eventually be competitive with PageMaker or QuarkXpress.
20
21 I am still looking for PSPP developers, people who care about
22 statistics and know programming. If there is someone out there who
23 wants to take over PSPP development and maintenance, please contact
24 me. I am tired of this project. 4 years is too long. PSPP
25 development will slow down if I'm still the only one working on it.
26
27 Ben
28
29 James R. Van Zandt <jrv@vanzandt.mv.com>, Mon, 3 Aug 1998 20:21:20 -0400
+0
-117
debian/bug-99739.html less more
0 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
1 <HTML><HEAD>
2 <TITLE>Debian Bug report logs - #99739</TITLE>
3 </HEAD>
4 <BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#800080">
5 <H1>Debian Bug report logs - <A HREF="mailto:99739@bugs.debian.org">#99739</A><BR>can't build on arm</H1>
6 Severity: <em>serious</em>;
7 Package: <A HREF="http://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=pspp&amp;repeatmerged=yes">pspp</A>;
8 ;Reported by: Philip Blundell &lt;philb@gnu.org&gt;;
9 dated Sat, 2 Jun 2001 23:33:01 UTC;
10 Maintainer for pspp is
11 <A href="http://www.debian.org/Bugs/db/ma/l,jrv,vanzandt.mv.com,James_R._Van_Zandt.html">jrv@vanzandt.mv.com (James R. Van Zandt)</A>.
12 <HR><strong>Report forwarded</strong> to <code>debian-bugs-dist@lists.debian.org, jrv@vanzandt.mv.com (James R. Van Zandt)</code>:<br>
13 <code>Bug#99739</code>; Package <code>pspp</code>.
14 <em><A href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=99739&amp;msg=1&amp;repeatmerged=yes">Full text</A> available.</em>
15 <hr>
16 <strong>Acknowledgement sent</strong> to <code>Philip Blundell &lt;philb@gnu.org&gt;</code>:<br>
17 New Bug report received and forwarded. Copy sent to <code>jrv@vanzandt.mv.com (James R. Van Zandt)</code>.
18 <em><A href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=99739&amp;msg=2&amp;repeatmerged=yes">Full text</A> available.</em>
19 <hr>
20 <h2>Message received at submit@bugs.debian.org:</h2><br>
21 <pre>
22 Received: (at submit) by bugs.debian.org; 2 Jun 2001 23:29:03 +0000
23 From philb@gnu.org Sat Jun 02 18:29:03 2001
24 Return-path: &lt;philb@gnu.org&gt;
25 Received: from pc2-camb6-0-cust223.cam.cable.ntl.com (kings-cross.london.uk.eu.org) [213.107.107.223]
26 by master.debian.org with esmtp (Exim 3.12 1 (Debian))
27 id 156KpL-0004Yx-00; Sat, 02 Jun 2001 18:29:03 -0500
28 Received: from localhost
29 ([127.0.0.1] helo=kings-cross.london.uk.eu.org ident=pb)
30 by kings-cross.london.uk.eu.org with esmtp (Exim 3.22 #1 (Debian))
31 id 156KpJ-00043G-00
32 for &lt;submit@bugs.debian.org&gt;; Sun, 03 Jun 2001 00:29:01 +0100
33 X-Mailer: exmh version 2.3.1 01/18/2001 (debian 2.3.1-1) with nmh-1.0.4+dev
34 To: submit@bugs.debian.org
35 Subject: can't build on arm
36 Mime-Version: 1.0
37 Content-Type: multipart/signed; boundary=&quot;==_Exmh_1246203915P&quot;;
38 micalg=pgp-sha1; protocol=&quot;application/pgp-signature&quot;
39 Content-Transfer-Encoding: 7bit
40 Date: Sun, 03 Jun 2001 00:29:01 +0100
41 From: Philip Blundell &lt;philb@gnu.org&gt;
42 Message-Id: &lt;E156KpJ-00043G-00@kings-cross.london.uk.eu.org&gt;
43 Delivered-To: submit@bugs.debian.org
44
45 --==_Exmh_1246203915P
46 Content-Type: text/plain; charset=us-ascii
47
48 Package: pspp
49 Version: 0.3.0-5
50 Severity: serious
51
52 sys/user.h doesn't like the fact that &quot;unused&quot; has been #defined to &quot;attribute
53 (( __unused__ ))&quot; in pref.h.
54
55 gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../src -I../lib -I../intl -D_GNU_SOURCE=1 -Wall -W -Wno-uninitialized -Wwrite-strings -Wstrict-prototypes -Wpointer-arith -c command.c
56 In file included from /usr/include/sys/elf.h:22,
57 from /usr/include/sys/ucontext.h:26,
58 from /usr/include/ucontext.h:27,
59 from /usr/include/signal.h:324,
60 from /usr/include/sys/wait.h:30,
61 from command.c:61:
62 /usr/include/sys/user.h:34: parse error before `:'
63 /usr/include/sys/user.h:34: warning: no semicolon at end of struct or union
64 /usr/include/sys/user.h:34: warning: no semicolon at end of struct or union
65 /usr/include/sys/user.h:35: parse error before `:'
66 /usr/include/sys/user.h:36: parse error before `:'
67 /usr/include/sys/user.h:37: parse error before `:'
68 /usr/include/sys/user.h:38: parse error before `:'
69 /usr/include/sys/user.h:39: parse error before `:'
70 /usr/include/sys/user.h:40: warning: data definition has no type or storage class
71 /usr/include/sys/user.h:41: parse error before `:'
72 /usr/include/sys/user.h:42: parse error before `:'
73 /usr/include/sys/user.h:45: parse error before `}'
74 /usr/include/sys/user.h:66: field `u_fp' has incomplete type
75 In file included from /usr/include/ucontext.h:27,
76 from /usr/include/signal.h:324,
77 from /usr/include/sys/wait.h:30,
78 from command.c:61:
79 /usr/include/sys/ucontext.h:80: field `fpregs' has incomplete type
80 make[3]: *** [command.o] Error 1
81
82
83
84 --==_Exmh_1246203915P
85 Content-Type: application/pgp-signature
86
87 -----BEGIN PGP SIGNATURE-----
88 Version: GnuPG v1.0.5 (GNU/Linux)
89 Comment: Exmh version 2.1.1 10/15/1999 (debian)
90
91 iD4DBQE7GXa9VTLPJe9CT30RArfNAJjk8KeUp36w96GMdDMBUXh9CDuRAKCg5XNe
92 AyQU7qOGqSs6EtHxOCBk6Q==
93 =lLTS
94 -----END PGP SIGNATURE-----
95
96 --==_Exmh_1246203915P--
97
98
99 </pre>
100
101 <hr>
102 <HR><ADDRESS>Darren Benham /
103 <A HREF="mailto:owner@bugs.debian.org">owner@bugs.debian.org</A>. Last modifed:
104 <!--timestamp-->
105 Sat, 30 Jun 2001 02:23:51 UTC
106 <!--timestamp-->
107
108 <P>
109 Debian Bug tracking system<BR>
110 copyright 1999 Darren O. Benham,
111 1997 nCipher Corporation Ltd,
112 1994-7 Ian Jackson,
113 1995 Steven Brenner.<BR>
114 <A HREF="http://www.benham.net/debbugs/">
115 Available under the GPL.</A>
116 </ADDRESS></BODY></HTML>
0 pspp (0.3.0-8) unstable; urgency=low
1
2 * debian/rules: use debhelper, dh_clean deletes src/version.c
3 and pref.h but preserves pref.h.orig, set DESTDIR for "make install"
4 * Makefile.in: export pkgsysconfdir and DESTDIR
5 * config.guess, config.sub: refresh (closes:bug#201251)
6 * lib/gmp/longlong.h: add explicit newlines, and escape the embedded
7 ones (closes:bug#195801)
8 * debian/control: update to policy 3.5.7
9
10 -- James R. Van Zandt <jrv@debian.org> Sun, 15 Jun 2003 10:20:30 -0400
11
012 pspp (0.3.0-7) unstable; urgency=low
113
214 * debian/changelog: remove obsolete local variables
+0
-4
debian/conffiles less more
0 /etc/pspp/devices
1 /etc/pspp/html-prologue
2 /etc/pspp/papersize
3 /etc/pspp/ps-prologue
11 Section: math
22 Priority: optional
33 Maintainer: James R. Van Zandt <jrv@debian.org>
4 Build-Depends: debmake, gettext, libncurses5-dev, tetex-bin, texi2html
5 Standards-Version: 3.5.2
4 Build-Depends: debhelper (>= 3.0.0), gettext, libncurses5-dev, tetex-bin, texi2html
5 Standards-Version: 3.5.7
66
77 Package: pspp
88 Architecture: any
0 NEWS
1 README
2 TODO
0 # This is a configuration files for installing a .info menu
1 # The Description to be placed into the directory
2 DESCR="Statistical analysis tool"
3
4 # The section this info file should be placed in (Regexp) followed by
5 # the new section name to be created if the Regexp does not match
6 # (Optional. If not given the .info will be appended to the directory)
7 SECTION_MATCH="Math"
8 SECTION_NAME="Math"
9
10 # The file referred to from the Info directory
11 FILE=pspp.info
12
13 # Optional. The files to be copied to /usr/info
14 FILES=doc/*.info
0 doc/*.info*
00 #!/usr/bin/make -f
1 # hey, Emacs: -*- makefile -*-
2 # Made with the aid of debmake, by Christoph Lameter,
3 # based on the sample debian/rules file for GNU hello by Ian Jackson.
1 # Sample debian/rules that uses debhelper.
2 # GNU copyright 1997 to 1999 by Joey Hess.
3
4 # Uncomment this to turn on verbose mode.
5 #export DH_VERBOSE=1
6
7 # This is the debhelper compatibility version to use.
8 export DH_COMPAT=3
9
10 # These are used for cross-compiling and for saving the configure script
11 # from having to guess our platform (since we know it already)
12 DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
13 DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
414
515
6 package=pspp
716
8 CFLAGS = -Wall -W -Wno-uninitialized -Wwrite-strings -Wstrict-prototypes -Wpointer-arith
17 CFLAGS = -Wall -g -W -Wno-uninitialized -Wwrite-strings -Wstrict-prototypes -Wpointer-arith
918 INSTALL = install
19 INSTALL_FILE = $(INSTALL) -p -o root -g root -m 644
20 INSTALL_PROGRAM = $(INSTALL) -p -o root -g root -m 755
21 INSTALL_SCRIPT = $(INSTALL) -p -o root -g root -m 755
22 INSTALL_DIR = $(INSTALL) -p -d -o root -g root -m 755
1023
11 ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
12 CFLAGS += -g
13 endif
24 # with -O2 or -O3, src/ascii.c compilation fails
25 # ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
26 CFLAGS += -O0
27 # else
28 # CFLAGS += -O2
29 # endif
1430 ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
15 INSTALL = install-strip
31 INSTALL_PROGRAM += -s
1632 endif
1733
18 build:
19 $(checkdir)
20 ./configure --prefix=/usr --sysconfdir=/etc
21 make CFLAGS="$(CFLAGS)"
22 cd doc; \
23 texi2html -monolithic pspp.texi; \
34
35 config.status: configure
36 dh_testdir
37 # commands to configure the package.
38 ./configure --host=$(DEB_HOST_GNU_TYPE) \
39 --build=$(DEB_BUILD_GNU_TYPE) \
40 --prefix=/usr \
41 --mandir=\$${prefix}/share/man \
42 --infodir=\$${prefix}/share/info \
43 --sysconfdir=/etc/pspp
44
45
46 build: build-stamp
47
48 build-stamp: config.status
49 dh_testdir
50
51 # commands to compile the package.
52 $(MAKE) CFLAGS="$(CFLAGS)" pkgsysconfdir=/etc/pspp
53 cd doc; \
54 texi2html -monolithic pspp.texi; \
2455 make pspp.ps pkgsysconfdir=/etc/pspp < ../debian/tex-workaround
25 # lynx -dump -nolist pspp.html >pspp.txt
26 touch build
56
57 touch build-stamp
2758
2859 clean:
29 $(checkdir)
30 -rm -f build
31 -make distclean
32 -rm -f `find . -name "*~"`
33 -rm -rf debian/tmp debian/files* core debian/substvars \
34 doc/pspp.html doc/pspp.txt
60 dh_testdir
61 dh_testroot
62 rm -f build-stamp
3563
36 binary-indep: checkroot build
37 $(checkdir)
38 # There are no architecture-independent files to be uploaded
39 # generated by this package. If there were any they would be
40 # made here.
64 # Add here commands to clean up after the build process.
65 -$(MAKE) distclean
66 -test -r /usr/share/misc/config.sub && \
67 cp -f /usr/share/misc/config.sub config.sub
68 -test -r /usr/share/misc/config.guess && \
69 cp -f /usr/share/misc/config.guess config.guess
4170
42 DEMOS= aggregate.stat \
43 autorecod.stat \
44 beg-data.stat \
45 bignum.data \
46 bignum.stat \
47 compute.stat \
48 count.stat \
49 crosstabs.stat \
50 data-fmts.stat \
51 data-list.data \
52 data-list.stat \
53 descript.stat \
54 do-if.stat \
55 do-repeat.stat \
56 expr.stat \
57 file-lab.stat \
58 filter.stat \
59 flip.stat \
60 inpt-pgm.stat \
61 lag.stat \
62 list.data \
63 list.stat \
64 loop.stat \
65 mdfy-vars.stat \
66 means.stat \
67 mtch-file.stat \
68 pcs-if.stat \
69 print.stat \
70 recode.stat \
71 repeating.stat \
72 reread.data \
73 reread.stat \
74 sample.stat \
75 sort.data \
76 sort.stat \
77 splt-file.stat \
78 sys-info.stat \
79 t-test.stat \
80 tabs.stat \
81 temporary.stat \
82 time-date.stat \
83 vector.stat \
84 weighting.data \
85 weighting.stat
8671
87 binary-arch: checkroot build
88 $(checkdir)
89 -rm -rf debian/tmp
90 install -d debian/tmp
91 cd debian/tmp && install -d `cat ../dirs`
92 make $(INSTALL) prefix=`pwd`/debian/tmp/usr \
93 sysconfdir=`pwd`/debian/tmp/etc
94 install -m 644 doc/pspp.man debian/tmp/usr/share/man/man1/pspp.1
95 for x in ${DEMOS}; do \
96 install -m 644 tests/$$x \
97 debian/tmp/usr/share/doc/pspp/examples/; \
98 done
99 for x in example.stat README.demos; do \
100 install -m 644 debian/$$x \
101 debian/tmp/usr/share/doc/pspp/examples/; \
102 done
103 install debian/tests debian/tmp/usr/lib/debian-test/tests/pspp
104 # Must have debmake installed for this to work. Otherwise please copy
105 # /usr/bin/debstd into the debian directory and change debstd to debian/debstd
106 #
107 # workaround for installation code in upstream Makefile
108 rm -rf debian/tmp/usr/doc
109 #
110 debstd ChangeLog NEWS README TODO doc/pspp.html doc/pspp.ps
111 dpkg-gencontrol -isp
112 chown -R root.root debian/tmp
113 chmod -R go=rX debian/tmp
114 dpkg --build debian/tmp ..
72 dh_clean --exclude pref.h.orig src/version.c pref.h
11573
116 define checkdir
117 test -f debian/rules
118 endef
74 install: build
75 dh_testdir
76 dh_testroot
77 dh_clean -k --exclude pref.h.orig src/version.c
78 dh_installdirs
79
80 # Add here commands to install the package into debian/pspp.
81 $(MAKE) install INSTALL_PROGRAM="$(INSTALL_PROGRAM)" \
82 pkgsysconfdir=/etc/pspp \
83 prefix=/usr \
84 pkgdocdir=/usr/share/doc/pspp \
85 sysconfdir=/etc/pspp \
86 DESTDIR=$(CURDIR)/debian/pspp
87
88
89 # Build architecture-independent files here.
90 binary-indep: build install
91 # We have nothing to do by default.
92
93 # Build architecture-dependent files here.
94 binary-arch: build install
95 dh_testdir
96 dh_testroot
97 # dh_installdebconf
98 dh_installdocs doc/pspp.ps doc/pspp.html
99 dh_installexamples tests/*.stat tests/*.data* \
100 debian/example.stat debian/README.demos
101 install debian/tests debian/pspp/usr/lib/debian-test/tests/pspp
102 dh_installmenu
103 # dh_installlogrotate
104 # dh_installemacsen
105 # dh_installpam
106 # dh_installmime
107 # dh_installinit
108 dh_installcron
109 dh_installman
110 ${INSTALL_FILE} doc/pspp.man debian/pspp/usr/share/man/man1/pspp.1
111 dh_installinfo
112 # dh_undocumented
113 dh_installchangelogs ChangeLog
114 dh_link
115 dh_strip
116 dh_compress
117 dh_fixperms
118 # dh_makeshlibs
119 dh_installdeb
120 # dh_perl
121 dh_shlibdeps
122 dh_gencontrol
123 dh_md5sums
124 dh_builddeb
119125
120126 binary: binary-indep binary-arch
121
122 checkroot:
123 $(checkdir)
124 test root = "`whoami`"
125
126 .PHONY: binary binary-arch binary-indep clean checkroot
127 .PHONY: build clean binary-indep binary-arch binary install
0 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
1 "http://www.w3.org/TR/html40/loose.dtd">
2 <HTML>
3 <!-- Created on August, 25 2003 by texi2html 1.66 -->
4 <!--
5 Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
6 Karl Berry <karl@freefriends.org>
7 Olaf Bachmann <obachman@mathematik.uni-kl.de>
8 and many others.
9 Maintained by: Many creative people <dev@texi2html.cvshome.org>
10 Send bugs and suggestions to <users@texi2html.cvshome.org>
11
12 -->
13 <HEAD>
14 <TITLE>PSPP</TITLE>
15
16 <META NAME="description" CONTENT="PSPP">
17 <META NAME="keywords" CONTENT="PSPP">
18 <META NAME="resource-type" CONTENT="document">
19 <META NAME="distribution" CONTENT="global">
20 <META NAME="Generator" CONTENT="texi2html 1.66">
21
22 </HEAD>
23
24 <BODY LANG="en" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
25
26 <A NAME="SEC_Top"></A>
27 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
28 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
29 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
30 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
31 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
32 </TR></TABLE>
33 <H1>PSPP</H1>
34
35 <P>
36
37 This file documents the PSPP package for statistical analysis of sampled
38 data. This is edition 0.2, for PSPP version
39 0.2, last modified at Time-stamp: &amp;lt;2000-01-02 22:32:14 blp&amp;gt;.
40 </P>
41 <P>
42
43 </P>
44 <TABLE BORDER="0" CELLSPACING="0">
45 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC1">1. Introduction</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Description of the package.</TD></TR>
46 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC2">2. Your rights and obligations</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
47 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC3">3. Credits</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Acknowledgement of authors.</TD></TR>
48 <TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
49 </TH></TR>
50 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC4">4. Installing PSPP</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to compile and install PSPP.</TD></TR>
51 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC6">5. Configuring PSPP</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
52 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC38">6. Invoking PSPP</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Starting and running PSPP.</TD></TR>
53 <TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
54 </TH></TR>
55 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC44">7. The PSPP language</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Basics of the PSPP command language.</TD></TR>
56 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC58">8. Mathematical Expressions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Numeric and string expression syntax.</TD></TR>
57 <TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
58 </TH></TR>
59 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC83">9. Data Input and Output</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Reading data from user files.</TD></TR>
60 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC104">10. System Files and Portable Files</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Dealing with system &amp; portable files.</TD></TR>
61 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC113">11. Manipulating variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Adjusting and examining variables.</TD></TR>
62 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC129">12. Data transformations</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Simple operations on data.</TD></TR>
63 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC138">13. Selecting data for analysis</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Select certain cases for analysis.</TD></TR>
64 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC147">14. Conditional and Looping Constructs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Doing things many times or not at all.</TD></TR>
65 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC152">15. Statistics</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Basic statistical procedures.</TD></TR>
66 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC156">16. Utilities</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Other commands.</TD></TR>
67 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC169">17. Not Implemented</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">What's not here yet</TD></TR>
68 <TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
69 </TH></TR>
70 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC170">18. Data File Format</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Format of PSPP system files.</TD></TR>
71 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC181">19. Portable File Format</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Format of PSPP portable files.</TD></TR>
72 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC191">20. <CODE>q2c</CODE> Input Format</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Format of syntax accepted by q2c.</TD></TR>
73 <TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
74 </TH></TR>
75 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC195">21. Bugs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Known problems; submitting bug reports.</TD></TR>
76 <TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
77 </TH></TR>
78 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC198">22. Function Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of PSPP functions for expressions.</TD></TR>
79 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC199">23. Concept Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of concepts.</TD></TR>
80 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC200">24. Command Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of PSPP procedures.</TD></TR>
81 <TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
82 </TH></TR>
83 </TABLE>
84 <P>
85
86 <HR SIZE=1>
87 <A NAME="SEC1"></A>
88 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
89 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> &lt; </A>]</TD>
90 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC2"> &gt; </A>]</TD>
91 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> &lt;&lt; </A>]</TD>
92 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
93 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC2"> &gt;&gt; </A>]</TD>
94 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
95 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
96 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
97 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
98 </TR></TABLE>
99 <A NAME="Introduction"></A>
100 <H1> 1. Introduction </H1>
101 <!--docid::SEC1::-->
102 <P>
103
104 <A NAME="IDX1"></A>
105 <A NAME="IDX2"></A>
106 PSPP is a tool for statistical analysis of sampled data. It reads a
107 syntax file and a data file, analyzes the data, and writes the results
108 to a listing file or to standard output.
109 </P>
110 <P>
111
112 The language accepted by PSPP is similar to those accepted by SPSS
113 statistical products. The details of PSPP's language are given
114 later in this manual.
115 </P>
116 <P>
117
118 <A NAME="IDX3"></A>
119 <A NAME="IDX4"></A>
120 <A NAME="IDX5"></A>
121 <A NAME="IDX6"></A>
122 <A NAME="IDX7"></A>
123 <A NAME="IDX8"></A>
124 PSPP produces output in two forms: tables and charts. Both of these can
125 be written in several formats; currently, ASCII, PostScript, and HTML
126 are supported. In the future, more drivers, such as PCL and X Window
127 System drivers, may be developed. For now, Ghostscript, available from
128 the Free Software Foundation, may be used to convert PostScript chart
129 output to other formats.
130 </P>
131 <P>
132
133 The current version of PSPP, 0.2, is woefully incomplete in
134 terms of its statistical procedure support. PSPP is a work in progress.
135 The author hopes to support fully support all features in the products
136 that PSPP replaces, eventually. The author welcomes questions,
137 comments, donations, and code submissions. See section <A HREF="pspp.html#SEC195">Submitting Bug Reports</A>, for instructions on contacting the author.
138 </P>
139 <P>
140
141 <A NAME="License"></A>
142 <HR SIZE="6">
143 <A NAME="SEC2"></A>
144 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
145 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC1"> &lt; </A>]</TD>
146 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC3"> &gt; </A>]</TD>
147 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC1"> &lt;&lt; </A>]</TD>
148 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
149 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC3"> &gt;&gt; </A>]</TD>
150 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
151 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
152 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
153 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
154 </TR></TABLE>
155 <H1> 2. Your rights and obligations </H1>
156 <!--docid::SEC2::-->
157 <P>
158
159 <A NAME="IDX9"></A>
160 <A NAME="IDX10"></A>
161 <A NAME="IDX11"></A>
162 <A NAME="IDX12"></A>
163 <A NAME="IDX13"></A>
164 <A NAME="IDX14"></A>
165 Most of PSPP is distributed under the GNU General Public
166 License. The General Public License says, in effect, that you may
167 modify and distribute PSPP as you like, as long as you grant the
168 same rights to others. It also states that you must provide source code
169 when you distribute PSPP, or, if you obtained PSPP
170 source code from an anonymous ftp site, give out the name of that site.
171 </P>
172 <P>
173
174 The General Public License is given in full in the source distribution
175 as file `<TT>COPYING</TT>'. In Debian GNU/Linux, this file is also
176 available as file `<TT>/usr/doc/copyright/GPL</TT>'.
177 </P>
178 <P>
179
180 To quote the GPL itself:
181 </P>
182 <P>
183
184 <BLOCKQUOTE>
185 This program is free software; you can redistribute it and/or modify it
186 under the terms of the GNU General Public License as published by the
187 Free Software Foundation; either version 2 of the License, or (at your
188 option) any later version.
189 <P>
190
191 This program is distributed in the hope that it will be useful, but
192 WITHOUT ANY WARRANTY; without even the implied warranty of
193 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
194 General Public License for more details.
195 </P>
196 <P>
197
198 You should have received a copy of the GNU General Public License along
199 with this program; if not, write to the Free Software Foundation, Inc.,
200 675 Mass Ave, Cambridge, MA 02139, USA.
201 </BLOCKQUOTE>
202 <P>
203
204 <A NAME="Credits"></A>
205 <HR SIZE="6">
206 <A NAME="SEC3"></A>
207 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
208 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC2"> &lt; </A>]</TD>
209 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC4"> &gt; </A>]</TD>
210 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC2"> &lt;&lt; </A>]</TD>
211 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
212 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC4"> &gt;&gt; </A>]</TD>
213 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
214 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
215 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
216 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
217 </TR></TABLE>
218 <H1> 3. Credits </H1>
219 <!--docid::SEC3::-->
220 <P>
221
222 <A NAME="IDX15"></A>
223 <A NAME="IDX16"></A>
224 <A NAME="IDX17"></A>
225 <A NAME="IDX18"></A>
226 <BLOCKQUOTE>
227 I'm always embarrassed when I see an index an author has made of his own
228 work. It's a shameless exhibition--to the <I>trained</I> eye. Never
229 index your own book.
230 <P>
231
232 ---Claire Minton, <CITE>Cat's Cradle</CITE>, Kurt Vonnegut, Jr.
233 </BLOCKQUOTE>
234 <P>
235
236 <A NAME="IDX19"></A>
237 Most of PSPP, as well as this manual (including the indices),
238 was written by Ben Pfaff. See section <A HREF="pspp.html#SEC197">21.2 Contacting the Author</A>, for
239 instructions on contacting the author.
240 </P>
241 <P>
242
243 <A NAME="IDX20"></A>
244 <A NAME="IDX21"></A>
245 <A NAME="IDX22"></A>
246 <A NAME="IDX23"></A>
247 <A NAME="IDX24"></A>
248 <A NAME="IDX25"></A>
249 The PSPP source code incorporates <CODE>julcal10</CODE> originally
250 written by Michael A. Covington and translated into C by Jim Van Zandt.
251 The original package can be found in directory
252 `<TT>ftp://ftp.cdrom.com/pub/algorithms/c/julcal10</TT>'. The entire
253 contents of that directory constitute the package. The files actually
254 used in PSPP are <CODE>julcal.c</CODE> and <CODE>julcal.h</CODE>.
255 </P>
256 <P>
257
258 <A NAME="Installation"></A>
259 <HR SIZE="6">
260 <A NAME="SEC4"></A>
261 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
262 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC3"> &lt; </A>]</TD>
263 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC5"> &gt; </A>]</TD>
264 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC3"> &lt;&lt; </A>]</TD>
265 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
266 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &gt;&gt; </A>]</TD>
267 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
268 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
269 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
270 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
271 </TR></TABLE>
272 <H1> 4. Installing PSPP </H1>
273 <!--docid::SEC4::-->
274 <P>
275
276 <A NAME="IDX26"></A>
277 <A NAME="IDX27"></A>
278 <A NAME="IDX28"></A>
279 <A NAME="IDX29"></A>
280 PSPP conforms to the GNU Coding Standards. PSPP is written in, and
281 requires for proper operation, ANSI/ISO C. You might want to
282 additionally note the following points:
283 </P>
284 <P>
285
286 <UL>
287 <LI>
288 The compiler and linker must allow for significance of several
289 characters in external identifiers. The exact number is unknown but at
290 least 31 is recommended.
291 <P>
292
293 </P>
294 <LI>
295 The <CODE>int</CODE> type must be 32 bits or wider.
296 <P>
297
298 </P>
299 <LI>
300 The recommended compiler is gcc 2.7.2.1 or later, but any ANSI compiler
301 will do if it fits the above criteria.
302 </UL>
303 <P>
304
305 Many UNIX variants should work out-of-the-box, as PSPP uses GNU
306 autoconf to detect differences between environments. Please report any
307 problems with compilation of PSPP under UNIX and UNIX-like operating
308 systems--portability is a major concern of the author.
309 </P>
310 <P>
311
312 The pages below give specific instructions for installing PSPP
313 on each type of system mentioned above.
314 </P>
315 <P>
316
317 <TABLE BORDER="0" CELLSPACING="0">
318 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC5">4.1 UNIX installation</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Installing on UNIX-like environments.</TD></TR>
319 </TABLE>
320 <P>
321
322 <A NAME="UNIX installation"></A>
323 <HR SIZE="6">
324 <A NAME="SEC5"></A>
325 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
326 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC4"> &lt; </A>]</TD>
327 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &gt; </A>]</TD>
328 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC4"> &lt;&lt; </A>]</TD>
329 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC4"> Up </A>]</TD>
330 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &gt;&gt; </A>]</TD>
331 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
332 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
333 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
334 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
335 </TR></TABLE>
336 <H2> 4.1 UNIX installation </H2>
337 <!--docid::SEC5::-->
338 To install PSPP under a UNIX-like operating system, follow the steps
339 below in order. Some of the text below was taken directly from various
340 Free Software Foundation sources.
341 <P>
342
343 <OL>
344 <LI>
345 <CODE>cd</CODE> to the directory containing the PSPP source.
346 <P>
347
348 <A NAME="IDX30"></A>
349 <A NAME="IDX31"></A>
350 </P>
351 <LI>
352 Type `<SAMP>./configure</SAMP>' to configure for your particular operating
353 system and compiler. Running <CODE>configure</CODE> takes a while. While
354 running, it displays some messages telling which features it is checking
355 for.
356 <P>
357
358 You can optionally supply some options to <CODE>configure</CODE> in order to
359 give it hints about how to do its job. Type <CODE>./configure --help</CODE>
360 to see a list of options. One of the most useful options is
361 `<SAMP>--with-checker</SAMP>', which enables the use of the Checker memory
362 debugger under supported operating systems. Checker must already be
363 installed to use this option. Do not use `<SAMP>--with-checker</SAMP>' if you
364 are not debugging PSPP itself.
365 </P>
366 <P>
367
368 <A NAME="IDX32"></A>
369 <A NAME="IDX33"></A>
370 <A NAME="IDX34"></A>
371 <A NAME="IDX35"></A>
372 </P>
373 <LI>
374 (optional) Edit `<TT>Makefile</TT>', `<TT>config.h</TT>', and `<TT>pref.h</TT>'.
375 These files are produced by <CODE>configure</CODE>. Note that most PSPP
376 settings can be changed at runtime.
377 <P>
378
379 `<TT>pref.h</TT>' is only generated by <CODE>configure</CODE> if it does not
380 already exist. (It's copied from `<TT>prefh.orig</TT>'.)
381 </P>
382 <P>
383
384 <A NAME="IDX36"></A>
385 </P>
386 <LI>
387 Type `<SAMP>make</SAMP>' to compile the package. If there are any errors during
388 compilation, try to fix them. If modifications are necessary to compile
389 correctly under your configuration, contact the author.
390 See section <A HREF="pspp.html#SEC195">Submitting Bug Reports</A>, for details.
391 <P>
392
393 <A NAME="IDX37"></A>
394 </P>
395 <LI>
396 Type `<SAMP>make check</SAMP>' to run self-tests on the compiled PSPP package.
397 <P>
398
399 <A NAME="IDX38"></A>
400 <A NAME="IDX39"></A>
401 <A NAME="IDX40"></A>
402 <A NAME="IDX41"></A>
403 <A NAME="IDX42"></A>
404 <A NAME="IDX43"></A>
405 </P>
406 <LI>
407 Become the superuser and type `<SAMP>make install</SAMP>' to install the
408 PSPP binaries, by default in `<TT>/usr/local/bin/</TT>'. The
409 directory `<TT>/usr/local/share/pspp/</TT>' is created and populated with
410 files needed by PSPP at runtime. This step will also cause the
411 PSPP documentation to be installed in `<TT>/usr/local/info/</TT>',
412 but only if that directory already exists.
413 <P>
414
415 </P>
416 <LI>
417 (optional) Type `<SAMP>make clean</SAMP>' to delete the PSPP binaries
418 from the source tree.
419 </OL>
420 <P>
421
422 <A NAME="Configuration"></A>
423 <HR SIZE="6">
424 <A NAME="SEC6"></A>
425 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
426 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC5"> &lt; </A>]</TD>
427 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC7"> &gt; </A>]</TD>
428 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC4"> &lt;&lt; </A>]</TD>
429 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
430 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
431 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
432 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
433 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
434 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
435 </TR></TABLE>
436 <H1> 5. Configuring PSPP </H1>
437 <!--docid::SEC6::-->
438 <P>
439
440 PSPP has dozens of configuration possibilities and hundreds of
441 settings. This is both a bane and a blessing. On one hand, it's
442 possible to easily accommodate diverse ranges of setups. But, on the
443 other, the multitude of possibilities can overwhelm the casual user.
444 Fortunately, the configuration mechanisms are profusely described in the
445 sections below<small>....</small>
446 </P>
447 <P>
448
449 <TABLE BORDER="0" CELLSPACING="0">
450 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC7">5.1 Locating configuration files</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How PSPP finds config files.</TD></TR>
451 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC8">5.2 Configuration techniques</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Many different methods of configuration<small>....</small></TD></TR>
452 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC9">5.3 Configuration files</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How configuration files are read.</TD></TR>
453 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC10">5.4 Environment variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">All about environment variables.</TD></TR>
454 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC14">5.5 Output devices</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Describing your terminal(s) and printer(s).</TD></TR>
455 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC22">5.6 The PostScript driver class</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Configuration of PostScript devices.</TD></TR>
456 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC30">5.7 The ASCII driver class</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Configuration of character-code devices.</TD></TR>
457 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC34">5.8 The HTML driver class</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Configuration for HTML output.</TD></TR>
458 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC36">5.9 Miscellaneous configuration</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Even more configuration variables.</TD></TR>
459 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC37">5.10 Improving output quality</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Hints for producing ever-more-lovely output.</TD></TR>
460 </TABLE>
461 <P>
462
463 <A NAME="File locations"></A>
464 <HR SIZE="6">
465 <A NAME="SEC7"></A>
466 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
467 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt; </A>]</TD>
468 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC8"> &gt; </A>]</TD>
469 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
470 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> Up </A>]</TD>
471 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
472 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
473 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
474 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
475 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
476 </TR></TABLE>
477 <H2> 5.1 Locating configuration files </H2>
478 <!--docid::SEC7::-->
479 <P>
480
481 PSPP uses the same method to find most of its configuration files:
482 </P>
483 <P>
484
485 <OL>
486 <LI>
487 The <EM>base name</EM> of the file being sought is determined.
488 <P>
489
490 </P>
491 <LI>
492 The path to search is determined.
493 <P>
494
495 </P>
496 <LI>
497 Each directory in the search path, from left to right, is searched for a
498 file with the name of the base name. The first occurrence is read
499 as the configuration file.
500 </OL>
501 <P>
502
503 The first two steps are elaborated below for the sake of our pedantic
504 friends.
505 </P>
506 <P>
507
508 <OL>
509 <LI>
510 A <EM>base name</EM> is a file name lacking an absolute directory
511 reference. Some examples of base names are: `<TT>ps-encodings</TT>',
512 `<TT>devices</TT>', `<TT>devps/DESC</TT>' (under UNIX), `<TT>devps\DESC</TT>' (under
513 M$ environments).
514 <P>
515
516 Determining the base name is a two-step process:
517 </P>
518 <P>
519
520 <OL>
521 <LI>
522 If the appropriate environment variable is defined, the value of that
523 variable is used (see section <A HREF="pspp.html#SEC10">5.4 Environment variables</A>). For instance, when
524 searching for the output driver initialization file, the variable
525 examined is <CODE>STAT_OUTPUT_INIT_FILE</CODE>.
526 <P>
527
528 </P>
529 <LI>
530 Otherwise, the compiled-in default is used. For example, when searching
531 for the output driver initialization file, the default base name is
532 `<TT>devices</TT>'.
533 </OL>
534 <P>
535
536 <STRONG>Please note:</STRONG> If a user-specified base name does contain an
537 absolute directory reference, as in a file name like
538 `<TT>/home/pfaff/fonts/TR</TT>', no path is searched--the file name is used
539 exactly as given--and the algorithm terminates.
540 </P>
541 <P>
542
543 </P>
544 <LI>
545 The path is the first of the following that is defined:
546 <P>
547
548 <UL>
549 <LI>
550 A variable definition for the path given in the user environment. This
551 is a PSPP-specific environment variable name; for instance,
552 <CODE>STAT_OUTPUT_INIT_PATH</CODE>.
553 <P>
554
555 </P>
556 <LI>
557 In some cases, another, less-specific environment variable is checked.
558 For instance, when searching for font files, the PostScript driver first
559 checks for a variable with name <CODE>STAT_GROFF_FONT_PATH</CODE>, then for
560 one with name <CODE>GROFF_FONT_PATH</CODE>. (However, font searching has its
561 own list of esoteric search rules.)
562 <P>
563
564 </P>
565 <LI>
566 The configuration file path, which is itself determined by the
567 following rules:
568 <P>
569
570 <OL>
571 <LI>
572 If the command line contains an option of the form `<SAMP>-B <VAR>path</VAR></SAMP>'
573 or `<SAMP>--config-dir=<VAR>path</VAR></SAMP>', then the value given on the
574 rightmost occurrence of such an option is used.
575 <P>
576
577 </P>
578 <LI>
579 Otherwise, if the environment variable <CODE>STAT_CONFIG_PATH</CODE> is
580 defined, the value of that variable is used.
581 <P>
582
583 </P>
584 <LI>
585 Otherwise, the compiled-in fallback default is used. On UNIX machines,
586 the default fallback path is
587 <P>
588
589 <OL>
590 <LI>
591 `<TT>~/.pspp</TT>'
592 <P>
593
594 </P>
595 <LI>
596 `<TT>/usr/local/lib/pspp</TT>'
597 <P>
598
599 </P>
600 <LI>
601 `<TT>/usr/lib/pspp</TT>'
602 </OL>
603 <P>
604
605 On DOS machines, the default fallback path is:
606 </P>
607 <P>
608
609 <OL>
610 <LI>
611 All the paths from the DOS search path in the `<SAMP>PATH</SAMP>' environment
612 variable, in left-to-right order.
613 <P>
614
615 </P>
616 <LI>
617 `<TT>C:\PSPP</TT>', as a last resort.
618 </OL>
619 <P>
620
621 Note that the installer of PSPP can easily change this default
622 fallback path; thus the above should not be taken as gospel.
623 </OL>
624 </UL>
625 </OL>
626 <P>
627
628 As a final note: Under DOS, directories given in paths are delimited by
629 semicolons (`<SAMP>;</SAMP>'); under UNIX, directories are delimited by colons
630 (`<SAMP>:</SAMP>'). This corresponds with the standard path delimiter under
631 these OSes.
632 </P>
633 <P>
634
635 <A NAME="Configuration techniques"></A>
636 <HR SIZE="6">
637 <A NAME="SEC8"></A>
638 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
639 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC7"> &lt; </A>]</TD>
640 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC9"> &gt; </A>]</TD>
641 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
642 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> Up </A>]</TD>
643 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
644 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
645 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
646 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
647 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
648 </TR></TABLE>
649 <H2> 5.2 Configuration techniques </H2>
650 <!--docid::SEC8::-->
651 <P>
652
653 There are many ways that PSPP can be configured. These are
654 described in the list below. Values given by earlier items take
655 precedence over those given by later items.
656 </P>
657 <P>
658
659 <OL>
660 <LI>
661 Syntax commands that modify settings, such as <CODE>SET</CODE>.
662 <P>
663
664 </P>
665 <LI>
666 Command-line options. See section <A HREF="pspp.html#SEC38">6. Invoking PSPP</A>.
667 <P>
668
669 </P>
670 <LI>
671 PSPP-specific environment variable contents. See section <A HREF="pspp.html#SEC10">5.4 Environment variables</A>.
672 <P>
673
674 </P>
675 <LI>
676 General environment variable contents. See section <A HREF="pspp.html#SEC10">5.4 Environment variables</A>.
677 <P>
678
679 </P>
680 <LI>
681 Configuration file contents. See section <A HREF="pspp.html#SEC9">5.3 Configuration files</A>.
682 <P>
683
684 </P>
685 <LI>
686 Fallback defaults.
687 </OL>
688 <P>
689
690 Some of the above may not apply to a particular setting. For instance,
691 the current pager (such as `<SAMP>more</SAMP>', `<SAMP>most</SAMP>', or `<SAMP>less</SAMP>')
692 cannot be determined by configuration file contents because there is no
693 appropriate configuration file.
694 </P>
695 <P>
696
697 <A NAME="Configuration files"></A>
698 <HR SIZE="6">
699 <A NAME="SEC9"></A>
700 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
701 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC8"> &lt; </A>]</TD>
702 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC10"> &gt; </A>]</TD>
703 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
704 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> Up </A>]</TD>
705 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
706 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
707 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
708 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
709 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
710 </TR></TABLE>
711 <H2> 5.3 Configuration files </H2>
712 <!--docid::SEC9::-->
713 <P>
714
715 Most configuration files have a common form:
716 </P>
717 <P>
718
719 <UL>
720 <LI>
721 Each line forms a separate command or directive. This means that lines
722 cannot be broken up, unless they are spliced together with a trailing
723 backslash, as described below.
724 <P>
725
726 </P>
727 <LI>
728 Before anything else is done, trailing whitespace is removed.
729 <P>
730
731 </P>
732 <LI>
733 When a line ends in a backslash (`<SAMP>\</SAMP>'), the backslash is removed,
734 and the next line is read and appended to the current line.
735 <P>
736
737 <UL>
738 <LI>
739 Whitespace preceding the backslash is retained.
740 <P>
741
742 </P>
743 <LI>
744 This rule continues to be applied until the line read does not end in a
745 backslash.
746 <P>
747
748 </P>
749 <LI>
750 It is an error if the last line in the file ends in a backslash.
751 </UL>
752 <P>
753
754 </P>
755 <LI>
756 Comments are introduced by an octothorpe (#), and continue until the
757 end of the line.
758 <P>
759
760 <UL>
761 <LI>
762 An octothorpe inside balanced pairs of double quotation marks (`<SAMP>&quot;</SAMP>')
763 or single quotation marks (`<SAMP>'</SAMP>') does not introduce a comment.
764 <P>
765
766 </P>
767 <LI>
768 The backslash character can be used inside balanced quotes of either
769 type to escape the following character as a literal character.
770 <P>
771
772 (This is distinct from the use of a backslash as a line-splicing
773 character.)
774 </P>
775 <P>
776
777 </P>
778 <LI>
779 Line splicing takes place before comment removal.
780 </UL>
781 <P>
782
783 </P>
784 <LI>
785 Blank lines, and lines that contain only whitespace, are ignored.
786 </UL>
787 <P>
788
789 <A NAME="Environment variables"></A>
790 <HR SIZE="6">
791 <A NAME="SEC10"></A>
792 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
793 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC9"> &lt; </A>]</TD>
794 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC11"> &gt; </A>]</TD>
795 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
796 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> Up </A>]</TD>
797 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
798 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
799 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
800 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
801 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
802 </TR></TABLE>
803 <H2> 5.4 Environment variables </H2>
804 <!--docid::SEC10::-->
805 <P>
806
807 You may think the concept of environment variables is a fairly simple
808 one. However, the author of PSPP has found a way to complicate
809 even something so simple. Environment variables are further described
810 in the sections below:
811 </P>
812 <P>
813
814 <TABLE BORDER="0" CELLSPACING="0">
815 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC11">5.4.1 Values of environment variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Values of variables are determined this way.</TD></TR>
816 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC12">5.4.2 Environment substitutions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How environment substitutions are made.</TD></TR>
817 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC13">5.4.3 Predefined environment variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A few variables are automatically defined.</TD></TR>
818 </TABLE>
819 <P>
820
821 <A NAME="Variable values"></A>
822 <HR SIZE="6">
823 <A NAME="SEC11"></A>
824 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
825 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC10"> &lt; </A>]</TD>
826 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC12"> &gt; </A>]</TD>
827 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
828 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC10"> Up </A>]</TD>
829 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
830 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
831 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
832 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
833 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
834 </TR></TABLE>
835 <H3> 5.4.1 Values of environment variables </H3>
836 <!--docid::SEC11::-->
837 <P>
838
839 Values for environment variables are obtained by the following means,
840 which are arranged in order of decreasing precedence:
841 </P>
842 <P>
843
844 <OL>
845 <LI>
846 Command-line options. See section <A HREF="pspp.html#SEC38">6. Invoking PSPP</A>.
847 <P>
848
849 </P>
850 <LI>
851 The `<TT>environment</TT>' configuration file--more on this below.
852 <P>
853
854 </P>
855 <LI>
856 Actual environment variables (defined in the shell or other parent
857 process).
858 </OL>
859 <P>
860
861 The `<TT>environment</TT>' configuration file is located through application
862 of the usual algorithm for configuration files (see section <A HREF="pspp.html#SEC7">5.1 Locating configuration files</A>),
863 except that its contents do not affect the search path used to find
864 `<TT>environment</TT>' itself. Use of `<TT>environment</TT>' is discouraged on
865 systems that allow an arbitrarily large environment; it is supported for
866 use on systems like MS-DOS that limit environment size.
867 </P>
868 <P>
869
870 `<TT>environment</TT>' is composed of lines having the form
871 `<SAMP><VAR>key</VAR>=<VAR>value</VAR></SAMP>', where <VAR>key</VAR> and the equals sign
872 (`<SAMP>=</SAMP>') are required, and <VAR>value</VAR> is optional. If <VAR>value</VAR> is
873 given, variable <VAR>key</VAR> is given that value; if <VAR>value</VAR> is absent,
874 variable <VAR>key</VAR> is undefined (deleted). Variables may not be defined
875 with a null value.
876 </P>
877 <P>
878
879 Environment substitutions are performed on each line in the file
880 (see section <A HREF="pspp.html#SEC12">5.4.2 Environment substitutions</A>).
881 </P>
882 <P>
883
884 See <A HREF="pspp.html#SEC9">5.3 Configuration files</A>, for more details on formatting of the
885 environment configuration file.
886 </P>
887 <P>
888
889 <BLOCKQUOTE>
890 <STRONG>Please note:</STRONG> Support for `<TT>environment</TT>' is not yet
891 implemented.
892 </BLOCKQUOTE>
893 <P>
894
895 <A NAME="Environment substitutions"></A>
896 <HR SIZE="6">
897 <A NAME="SEC12"></A>
898 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
899 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC11"> &lt; </A>]</TD>
900 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC13"> &gt; </A>]</TD>
901 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
902 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC10"> Up </A>]</TD>
903 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
904 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
905 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
906 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
907 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
908 </TR></TABLE>
909 <H3> 5.4.2 Environment substitutions </H3>
910 <!--docid::SEC12::-->
911 <P>
912
913 Much of the power of environment variables lies in the way that they may
914 be substituted into configuration files. Variable substitutions are
915 described below.
916 </P>
917 <P>
918
919 The line is scanned from left to right. In this scan, all characters
920 other than dollar signs (`<SAMP>$</SAMP>') are retained unmolested. Dollar
921 signs, however, introduce an environment variable reference. References
922 take three forms:
923 </P>
924 <P>
925
926 </P>
927 <DL COMPACT>
928 <DT><CODE>$<VAR>var</VAR></CODE>
929 <DD>Replaced by the value of environment variable <VAR>var</VAR>, determined as
930 specified in <A HREF="pspp.html#SEC11">5.4.1 Values of environment variables</A>. <VAR>var</VAR> must be one of the
931 following:
932 <P>
933
934 <UL>
935 <LI>
936 One or more letters.
937 <P>
938
939 </P>
940 <LI>
941 Exactly one nonalphabetic character. This may not be a left brace
942 (`<SAMP>{</SAMP>').
943 </UL>
944 <P>
945
946 </P>
947 <DT><CODE>${<VAR>var</VAR>}</CODE>
948 <DD>Same as above, but <VAR>var</VAR> may contain any character (except
949 `<SAMP>}</SAMP>').
950 <P>
951
952 </P>
953 <DT><CODE>$$</CODE>
954 <DD>Replaced by a single dollar sign.
955 </DL>
956 <P>
957
958 Undefined variables expand to a empty value.
959 </P>
960 <P>
961
962 <A NAME="Predefined variables"></A>
963 <HR SIZE="6">
964 <A NAME="SEC13"></A>
965 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
966 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC12"> &lt; </A>]</TD>
967 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC14"> &gt; </A>]</TD>
968 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
969 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC10"> Up </A>]</TD>
970 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
971 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
972 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
973 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
974 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
975 </TR></TABLE>
976 <H3> 5.4.3 Predefined environment variables </H3>
977 <!--docid::SEC13::-->
978 <P>
979
980 There are two environment variables predefined for use in environment
981 substitutions:
982 </P>
983 <P>
984
985 </P>
986 <DL COMPACT>
987 <DT>`<SAMP>VER</SAMP>'
988 <DD>Defined as the version number of PSPP, as a string, in a format
989 something like `<SAMP>0.9.4</SAMP>'.
990 <P>
991
992 </P>
993 <DT>`<SAMP>ARCH</SAMP>'
994 <DD>Defined as the host architecture of PSPP, as a string, in standard
995 cpu-manufacturer-OS format. For instance, Debian GNU/Linux 1.1 on an
996 Intel machine defines this as `<SAMP>i586-unknown-linux</SAMP>'. This is
997 somewhat dependent on the system used to compile PSPP.
998 </DL>
999 <P>
1000
1001 Nothing prevents these values from being overridden, although it's a
1002 good idea not to do so.
1003 </P>
1004 <P>
1005
1006 <A NAME="Output devices"></A>
1007 <HR SIZE="6">
1008 <A NAME="SEC14"></A>
1009 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
1010 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC13"> &lt; </A>]</TD>
1011 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC15"> &gt; </A>]</TD>
1012 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
1013 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> Up </A>]</TD>
1014 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
1015 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
1016 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
1017 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
1018 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
1019 </TR></TABLE>
1020 <H2> 5.5 Output devices </H2>
1021 <!--docid::SEC14::-->
1022 <P>
1023
1024 Configuring output devices is the most complicated aspect of configuring
1025 PSPP. The output device configuration file is named
1026 `<TT>devices</TT>'. It is searched for using the usual algorithm for
1027 finding configuration files (see section <A HREF="pspp.html#SEC7">5.1 Locating configuration files</A>). Each line in the
1028 file is read in the usual manner for configuration files
1029 (see section <A HREF="pspp.html#SEC9">5.3 Configuration files</A>).
1030 </P>
1031 <P>
1032
1033 Lines in `<TT>devices</TT>' are divided into three categories, described
1034 briefly in the table below:
1035 </P>
1036 <P>
1037
1038 </P>
1039 <DL COMPACT>
1040 <DT><I>driver category definitions</I>
1041 <DD>Define a driver in terms of other drivers.
1042 <P>
1043
1044 </P>
1045 <DT><I>macro definitions</I>
1046 <DD>Define environment variables local to the the output driver
1047 configuration file.
1048 <P>
1049
1050 </P>
1051 <DT><I>device definitions</I>
1052 <DD>Describe the configuration of an output device.
1053 </DL>
1054 <P>
1055
1056 The following sections further elaborate the contents of the
1057 `<TT>devices</TT>' file.
1058 </P>
1059 <P>
1060
1061 <TABLE BORDER="0" CELLSPACING="0">
1062 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC15">5.5.1 Driver categories</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to organize the driver namespace.</TD></TR>
1063 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC16">5.5.2 Macro definitions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Environment variables local to `<TT>devices</TT>'.</TD></TR>
1064 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC17">5.5.3 Driver definitions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Output device descriptions.</TD></TR>
1065 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC18">5.5.4 Dimensions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Lengths, widths, sizes, <small>....</small></TD></TR>
1066 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC19">5.5.5 Paper sizes</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Letter, legal, A4, envelope, <small>....</small></TD></TR>
1067 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC20">5.5.6 How lines are divided into types</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Details on `<TT>devices</TT>' parsing.</TD></TR>
1068 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC21">5.5.7 How lines are divided into tokens</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Dividing `<TT>devices</TT>' lines into tokens.</TD></TR>
1069 </TABLE>
1070 <P>
1071
1072 <A NAME="Driver categories"></A>
1073 <HR SIZE="6">
1074 <A NAME="SEC15"></A>
1075 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
1076 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC14"> &lt; </A>]</TD>
1077 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC16"> &gt; </A>]</TD>
1078 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
1079 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC14"> Up </A>]</TD>
1080 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
1081 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
1082 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
1083 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
1084 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
1085 </TR></TABLE>
1086 <H3> 5.5.1 Driver categories </H3>
1087 <!--docid::SEC15::-->
1088 <P>
1089
1090 Drivers can be divided into categories. Drivers are specified by their
1091 names, or by the names of the categories that they are contained in.
1092 Only certain drivers are enabled each time PSPP is run; by
1093 default, these are the drivers in the category `default'. To enable a
1094 different set of drivers, use the `<SAMP>-o <VAR>device</VAR></SAMP>' command-line
1095 option (see section <A HREF="pspp.html#SEC38">6. Invoking PSPP</A>).
1096 </P>
1097 <P>
1098
1099 Categories are specified with a line of the form
1100 `<SAMP><VAR>category</VAR>=<VAR>driver1</VAR> <VAR>driver2</VAR> <VAR>driver3</VAR> <VAR><small>...</small></VAR>
1101 <VAR>driver<VAR>n</VAR></VAR></SAMP>'. This line specifies that the category
1102 <VAR>category</VAR> is composed of drivers named <VAR>driver1</VAR>,
1103 <VAR>driver2</VAR>, and so on. There may be any number of drivers in the
1104 category, from zero on up.
1105 </P>
1106 <P>
1107
1108 Categories may also be specified on the command line
1109 (see section <A HREF="pspp.html#SEC38">6. Invoking PSPP</A>).
1110 </P>
1111 <P>
1112
1113 This is all you need to know about categories. If you're still curious,
1114 read on.
1115 </P>
1116 <P>
1117
1118 First of all, the term `categories' is a bit of a misnomer. In fact,
1119 the internal representation is nothing like the hierarchy that the term
1120 seems to imply: a linear list is used to keep track of the enabled
1121 drivers.
1122 </P>
1123 <P>
1124
1125 When PSPP first begins reading `<TT>devices</TT>', this list contains
1126 the name of any drivers or categories specified on the command line, or
1127 the single item `default' if none were specified.
1128 </P>
1129 <P>
1130
1131 Each time a category definition is specified, the list is searched for
1132 an item with the value of <VAR>category</VAR>. If a matching item is found,
1133 it is deleted. If there was a match, the list of drivers (<VAR>driver1</VAR>
1134 through <VAR>driver<VAR>n</VAR></VAR>) is then appended to the list.
1135 </P>
1136 <P>
1137
1138 Each time a driver definition line is encountered, the list is searched.
1139 If the list contains an item with that driver's name, the driver is
1140 enabled and the item is deleted from the list. Otherwise, the driver
1141 is not enabled.
1142 </P>
1143 <P>
1144
1145 It is an error if the list is not empty when the end of `<TT>devices</TT>'
1146 is reached.
1147 </P>
1148 <P>
1149
1150 <A NAME="Macro definitions"></A>
1151 <HR SIZE="6">
1152 <A NAME="SEC16"></A>
1153 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
1154 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC15"> &lt; </A>]</TD>
1155 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC17"> &gt; </A>]</TD>
1156 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
1157 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC14"> Up </A>]</TD>
1158 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
1159 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
1160 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
1161 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
1162 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
1163 </TR></TABLE>
1164 <H3> 5.5.2 Macro definitions </H3>
1165 <!--docid::SEC16::-->
1166 <P>
1167
1168 Macro definitions take the form `<SAMP>define <VAR>macroname</VAR>
1169 <VAR>definition</VAR></SAMP>'. In such a macro definition, the environment variable
1170 <VAR>macroname</VAR> is defined to expand to the value <VAR>definition</VAR>.
1171 Before the definition is made, however, any macros used in
1172 <VAR>definition</VAR> are expanded.
1173 </P>
1174 <P>
1175
1176 Please note the following nuances of macro usage:
1177 </P>
1178 <P>
1179
1180 <UL>
1181 <LI>
1182 For the purposes of this section, <EM>macro</EM> and <EM>environment
1183 variable</EM> are synonyms.
1184 <P>
1185
1186 </P>
1187 <LI>
1188 Macros may not take arguments.
1189 <P>
1190
1191 </P>
1192 <LI>
1193 Macros may not recurse.
1194 <P>
1195
1196 </P>
1197 <LI>
1198 Macros are just environment variable definitions like other environment
1199 variable definitions, with the exception that they are limited in scope
1200 to the `<TT>devices</TT>' configuration file.
1201 <P>
1202
1203 </P>
1204 <LI>
1205 Macros override other all environment variables of the same name (within
1206 the scope of `<TT>devices</TT>').
1207 <P>
1208
1209 </P>
1210 <LI>
1211 Earlier macro definitions for a particular <VAR>key</VAR> override later
1212 ones. In particular, macro definitions on the command line override
1213 those in the device definition file. See section <A HREF="pspp.html#SEC39">6.1 Non-option Arguments</A>.
1214 <P>
1215
1216 </P>
1217 <LI>
1218 There are two predefined macros, whose values are determined at runtime:
1219 <P>
1220
1221 </P>
1222 <DL COMPACT>
1223 <DT>`<SAMP>viewwidth</SAMP>'
1224 <DD>Defined as the width of the console screen, in columns of text.
1225 <P>
1226
1227 </P>
1228 <DT>`<SAMP>viewlength</SAMP>'
1229 <DD>Defined as the length of the console screen, in lines of text.
1230 </DL>
1231 </UL>
1232 <P>
1233
1234 <A NAME="Device definitions"></A>
1235 <HR SIZE="6">
1236 <A NAME="SEC17"></A>
1237 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
1238 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC16"> &lt; </A>]</TD>
1239 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC18"> &gt; </A>]</TD>
1240 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
1241 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC14"> Up </A>]</TD>
1242 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
1243 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
1244 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
1245 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
1246 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
1247 </TR></TABLE>
1248 <H3> 5.5.3 Driver definitions </H3>
1249 <!--docid::SEC17::-->
1250 <P>
1251
1252 Driver definitions are the ultimate purpose of the `<TT>devices</TT>'
1253 configuration file. These are where the real action is. Driver
1254 definitions tell PSPP where it should send its output.
1255 </P>
1256 <P>
1257
1258 Each driver definition line is divided into four fields. These fields
1259 are delimited by colons (`<SAMP>:</SAMP>'). Each line is subjected to
1260 environment variable interpolation before it is processed further
1261 (see section <A HREF="pspp.html#SEC12">5.4.2 Environment substitutions</A>). From left to right, the four
1262 fields are, in brief:
1263 </P>
1264 <P>
1265
1266 </P>
1267 <DL COMPACT>
1268 <DT><I>driver name</I>
1269 <DD>A unique identifier, used to determine whether to enable the driver.
1270 <P>
1271
1272 </P>
1273 <DT><I>class name</I>
1274 <DD>One of the predefined driver classes supported by PSPP. The
1275 currently supported driver classes include `postscript' and `ascii'.
1276 <P>
1277
1278 </P>
1279 <DT><I>device type(s)</I>
1280 <DD>Zero or more of the following keywords, delimited by spaces:
1281 <P>
1282
1283 </P>
1284 <DL COMPACT>
1285 <DT><CODE>screen</CODE>
1286 <DD><P>
1287
1288 Indicates that the device is a screen display. This may reduce the
1289 amount of buffering done by the driver, to make interactive use more
1290 convenient.
1291 </P>
1292 <P>
1293
1294 </P>
1295 <DT><CODE>printer</CODE>
1296 <DD><P>
1297
1298 Indicates that the device is a printer.
1299 </P>
1300 <P>
1301
1302 </P>
1303 <DT><CODE>listing</CODE>
1304 <DD><P>
1305
1306 Indicates that the device is a listing file.
1307 </DL>
1308 <P>
1309
1310 These options are just hints to PSPP and do not cause the output to be
1311 directed to the screen, or to the printer, or to a listing file--those
1312 must be set elsewhere in the options. They are used primarily to decide
1313 which devices should be enabled at any given time. See section <A HREF="pspp.html#SEC166">16.10 SET</A>, for more
1314 information.
1315 </P>
1316 <P>
1317
1318 </P>
1319 <DT><I>options</I>
1320 <DD>An optional set of options to pass to the driver itself. The exact
1321 format for the options varies among drivers.
1322 </DL>
1323 <P>
1324
1325 The driver is enabled if:
1326 </P>
1327 <P>
1328
1329 <OL>
1330 <LI>
1331 Its driver name is specified on the command line, or
1332 <P>
1333
1334 </P>
1335 <LI>
1336 It's in a category specified on the command line, or
1337 <P>
1338
1339 </P>
1340 <LI>
1341 If no categories or driver names are specified on the command line, it
1342 is in category <CODE>default</CODE>.
1343 </OL>
1344 <P>
1345
1346 For more information on driver names, see <A HREF="pspp.html#SEC15">5.5.1 Driver categories</A>.
1347 </P>
1348 <P>
1349
1350 The class name must be one of those supported by PSPP. The
1351 classes supported depend on the options with which PSPP was
1352 compiled. See later sections in this chapter for descriptions of the
1353 available driver classes.
1354 </P>
1355 <P>
1356
1357 Options are dependent on the driver. See the driver descriptions for
1358 details.
1359 </P>
1360 <P>
1361
1362 <A NAME="Dimensions"></A>
1363 <HR SIZE="6">
1364 <A NAME="SEC18"></A>
1365 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
1366 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC17"> &lt; </A>]</TD>
1367 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC19"> &gt; </A>]</TD>
1368 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
1369 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC14"> Up </A>]</TD>
1370 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
1371 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
1372 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
1373 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
1374 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
1375 </TR></TABLE>
1376 <H3> 5.5.4 Dimensions </H3>
1377 <!--docid::SEC18::-->
1378 <P>
1379
1380 Quite often in configuration it is necessary to specify a length or a
1381 size. PSPP uses a common syntax for all such, calling them
1382 collectively by the name <EM>dimensions</EM>.
1383 </P>
1384 <P>
1385
1386 <UL>
1387 <LI>
1388 You can specify dimensions in decimal form (`<SAMP>12.5</SAMP>') or as
1389 fractions, either as mixed numbers (`<SAMP>12-1/2</SAMP>') or raw fractions
1390 (`<SAMP>25/2</SAMP>').
1391 <P>
1392
1393 </P>
1394 <LI>
1395 A number of different units are available. These are suffixed to the
1396 numeric part of the dimension. There must be no spaces between the
1397 number and the unit. The available units are identical to those offered
1398 by the popular typesetting system TeX:
1399 <P>
1400
1401 </P>
1402 <DL COMPACT>
1403 <DT><CODE>in</CODE>
1404 <DD>inch (1 <CODE>in</CODE> = 2.54 <CODE>cm</CODE>)
1405 <P>
1406
1407 </P>
1408 <DT><CODE>&quot;</CODE>
1409 <DD>inch (1 <CODE>in</CODE> = 2.54 <CODE>cm</CODE>)
1410 <P>
1411
1412 </P>
1413 <DT><CODE>pt</CODE>
1414 <DD>printer's point (1 <CODE>in</CODE> = 72.27 <CODE>pt</CODE>)
1415 <P>
1416
1417 </P>
1418 <DT><CODE>pc</CODE>
1419 <DD>pica (12 <CODE>pt</CODE> = 1 <CODE>pc</CODE>)
1420 <P>
1421
1422 </P>
1423 <DT><CODE>bp</CODE>
1424 <DD>PostScript point (1 <CODE>in</CODE> = 72 <CODE>bp</CODE>)
1425 <P>
1426
1427 </P>
1428 <DT><CODE>cm</CODE>
1429 <DD>centimeter
1430 <P>
1431
1432 </P>
1433 <DT><CODE>mm</CODE>
1434 <DD>millimeter (10 <CODE>mm</CODE> = 1 <CODE>cm</CODE>)
1435 <P>
1436
1437 </P>
1438 <DT><CODE>dd</CODE>
1439 <DD>didot point (1157 <CODE>dd</CODE> = 1238 <CODE>pt</CODE>)
1440 <P>
1441
1442 </P>
1443 <DT><CODE>cc</CODE>
1444 <DD>cicero (1 <CODE>cc</CODE> = 12 <CODE>dd</CODE>)
1445 <P>
1446
1447 </P>
1448 <DT><CODE>sp</CODE>
1449 <DD>scaled point (65536 <CODE>sp</CODE> = 1 <CODE>pt</CODE>)
1450 </DL>
1451 <P>
1452
1453 </P>
1454 <LI>
1455 If no explicit unit is given, a DWIM<A NAME="DOCF1" HREF="pspp.html#FOOT1">(1)</A>
1456 &quot;feature&quot; attempts to guess the best unit:
1457 <P>
1458
1459 <UL>
1460 <LI>
1461 Numbers less than 50 are assumed to be in inches.
1462 <P>
1463
1464 </P>
1465 <LI>
1466 Numbers 50 or greater are assumed to be in millimeters.
1467 </UL>
1468 </UL>
1469 <P>
1470
1471 <A NAME="papersize"></A>
1472 <HR SIZE="6">
1473 <A NAME="SEC19"></A>
1474 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
1475 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC18"> &lt; </A>]</TD>
1476 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC20"> &gt; </A>]</TD>
1477 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
1478 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC14"> Up </A>]</TD>
1479 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
1480 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
1481 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
1482 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
1483 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
1484 </TR></TABLE>
1485 <H3> 5.5.5 Paper sizes </H3>
1486 <!--docid::SEC19::-->
1487 <P>
1488
1489 Output drivers usually deal with some sort of hardcopy media. This
1490 media is called <EM>paper</EM> by the drivers, though in reality it could
1491 be a transparency or film or thinly veiled sarcasm. To make it easier
1492 for you to deal with paper, PSPP allows you to have (of course!) a
1493 configuration file that gives symbolic names, like &quot;letter&quot; or
1494 &quot;legal&quot; or &quot;a4&quot;, to paper sizes, rather than forcing you to use
1495 cryptic numbers like &quot;8-1/2 x 11&quot; or &quot;210 by 297&quot;. Surprisingly
1496 enough, this configuration file is named `<TT>papersize</TT>'.
1497 See section <A HREF="pspp.html#SEC9">5.3 Configuration files</A>.
1498 </P>
1499 <P>
1500
1501 When PSPP tries to connect a symbolic paper name to a paper size, it
1502 reads and parses each non-comment line in the file, in order. The first
1503 field on each line must be a symbolic paper name in double quotes.
1504 Paper names may not contain double quotes. Paper names are not
1505 case-sensitive: `<SAMP>legal</SAMP>' and `<SAMP>Legal</SAMP>' are equivalent.
1506 </P>
1507 <P>
1508
1509 If a match is found for the paper name, the rest of the line is parsed.
1510 If it is found to be a pair of dimensions (see section <A HREF="pspp.html#SEC18">5.5.4 Dimensions</A>) separated
1511 by either `<SAMP>x</SAMP>' or `<SAMP>by</SAMP>', then those are taken to be the paper
1512 size, in order of width followed by length. There <EM>must</EM> be at
1513 least one space on each side of `<SAMP>x</SAMP>' or `<SAMP>by</SAMP>'.
1514 </P>
1515 <P>
1516
1517 Otherwise the line must be of the form
1518 `<SAMP>&quot;<VAR>paper-1</VAR>&quot;=&quot;<VAR>paper-2</VAR>&quot;</SAMP>'. In this case the target of the
1519 search becomes paper name <VAR>paper-2</VAR> and the search through the file
1520 continues.
1521 </P>
1522 <P>
1523
1524 <A NAME="Distinguishing line types"></A>
1525 <HR SIZE="6">
1526 <A NAME="SEC20"></A>
1527 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
1528 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC19"> &lt; </A>]</TD>
1529 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC21"> &gt; </A>]</TD>
1530 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
1531 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC14"> Up </A>]</TD>
1532 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
1533 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
1534 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
1535 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
1536 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
1537 </TR></TABLE>
1538 <H3> 5.5.6 How lines are divided into types </H3>
1539 <!--docid::SEC20::-->
1540 <P>
1541
1542 The lines in `<TT>devices</TT>' are distinguished in the following manner:
1543 </P>
1544 <P>
1545
1546 <OL>
1547 <LI>
1548 Leading whitespace is removed.
1549 <P>
1550
1551 </P>
1552 <LI>
1553 If the resulting line begins with the exact string <CODE>define</CODE>,
1554 followed by one or more whitespace characters, the line is processed as
1555 a macro definition.
1556 <P>
1557
1558 </P>
1559 <LI>
1560 Otherwise, the line is scanned for the first instance of a colon
1561 (`<SAMP>:</SAMP>') or an equals sign (`<SAMP>=</SAMP>').
1562 <P>
1563
1564 </P>
1565 <LI>
1566 If a colon is encountered first, the line is processed as a driver
1567 definition.
1568 <P>
1569
1570 </P>
1571 <LI>
1572 Otherwise, if an equals sign is encountered, the line is processed as a
1573 macro definition.
1574 <P>
1575
1576 </P>
1577 <LI>
1578 Otherwise, the line is ill-formed.
1579 </OL>
1580 <P>
1581
1582 <A NAME="Tokenizing lines"></A>
1583 <HR SIZE="6">
1584 <A NAME="SEC21"></A>
1585 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
1586 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC20"> &lt; </A>]</TD>
1587 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC22"> &gt; </A>]</TD>
1588 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
1589 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC14"> Up </A>]</TD>
1590 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
1591 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
1592 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
1593 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
1594 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
1595 </TR></TABLE>
1596 <H3> 5.5.7 How lines are divided into tokens </H3>
1597 <!--docid::SEC21::-->
1598 <P>
1599
1600 Each driver definition line is run through a simple tokenizer. This
1601 tokenizer recognizes two basic types of tokens.
1602 </P>
1603 <P>
1604
1605 The first type is an equals sign (`<SAMP>=</SAMP>'). Equals signs are both
1606 delimiters between tokens and tokens in themselves.
1607 </P>
1608 <P>
1609
1610 The second type is an identifier or string token. Identifiers and
1611 strings are equivalent after tokenization, though they are written
1612 differently. An identifier is any string of characters other than
1613 whitespace or equals sign.
1614 </P>
1615 <P>
1616
1617 A string is introduced by a single- or double-quote character (`<SAMP>'</SAMP>'
1618 or `<SAMP>&quot;</SAMP>') and, in general, continues until the next occurrence of
1619 that same character. The following standard C escapes can also be
1620 embedded within strings:
1621 </P>
1622 <P>
1623
1624 </P>
1625 <DL COMPACT>
1626 <DT><CODE>\'</CODE>
1627 <DD>A single-quote (`<SAMP>'</SAMP>').
1628 <P>
1629
1630 </P>
1631 <DT><CODE>\&quot;</CODE>
1632 <DD>A double-quote (`<SAMP>&quot;</SAMP>').
1633 <P>
1634
1635 </P>
1636 <DT><CODE>\?</CODE>
1637 <DD>A question mark (`<SAMP>?</SAMP>'). Included for hysterical raisins.
1638 <P>
1639
1640 </P>
1641 <DT><CODE>\\</CODE>
1642 <DD>A backslash (`<SAMP>\</SAMP>').
1643 <P>
1644
1645 </P>
1646 <DT><CODE>\a</CODE>
1647 <DD>Audio bell (ASCII 7).
1648 <P>
1649
1650 </P>
1651 <DT><CODE>\b</CODE>
1652 <DD>Backspace (ASCII 8).
1653 <P>
1654
1655 </P>
1656 <DT><CODE>\f</CODE>
1657 <DD>Formfeed (ASCII 12).
1658 <P>
1659
1660 </P>
1661 <DT><CODE>\n</CODE>
1662 <DD>Newline (ASCII 10)
1663 <P>
1664
1665 </P>
1666 <DT><CODE>\r</CODE>
1667 <DD>Carriage return (ASCII 13).
1668 <P>
1669
1670 </P>
1671 <DT><CODE>\t</CODE>
1672 <DD>Tab (ASCII 9).
1673 <P>
1674
1675 </P>
1676 <DT><CODE>\v</CODE>
1677 <DD>Vertical tab (ASCII 11).
1678 <P>
1679
1680 </P>
1681 <DT><CODE>\<VAR>o</VAR><VAR>o</VAR><VAR>o</VAR></CODE>
1682 <DD>Each `<SAMP>o</SAMP>' must be an octal digit. The character is the one having
1683 the octal value specified. Any number of octal digits is read and
1684 interpreted; only the lower 8 bits are used.
1685 <P>
1686
1687 </P>
1688 <DT><CODE>\x<VAR>h</VAR><VAR>h</VAR></CODE>
1689 <DD>Each `<SAMP>h</SAMP>' must be a hex digit. The character is the one having the
1690 hexadecimal value specified. Any number of hex digits is read and
1691 interpreted; only the lower 8 bits are used.
1692 </DL>
1693 <P>
1694
1695 Tokens, outside of quoted strings, are delimited by whitespace or equals
1696 signs.
1697 </P>
1698 <P>
1699
1700 <A NAME="PostScript driver class"></A>
1701 <HR SIZE="6">
1702 <A NAME="SEC22"></A>
1703 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
1704 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC21"> &lt; </A>]</TD>
1705 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC23"> &gt; </A>]</TD>
1706 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
1707 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> Up </A>]</TD>
1708 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
1709 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
1710 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
1711 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
1712 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
1713 </TR></TABLE>
1714 <H2> 5.6 The PostScript driver class </H2>
1715 <!--docid::SEC22::-->
1716 <P>
1717
1718 The <CODE>postscript</CODE> driver class is used to produce output that is
1719 acceptable to PostScript printers and to PC-based PostScript
1720 interpreters such as Ghostscript. Continuing a long tradition,
1721 PSPP's PostScript driver is configurable to the point of
1722 absurdity.
1723 </P>
1724 <P>
1725
1726 There are actually two PostScript drivers. The first one,
1727 `<SAMP>postscript</SAMP>', produces ordinary DSC-compliant PostScript output.
1728 The second one `<SAMP>epsf</SAMP>', produces an Encapsulated PostScript file.
1729 The two drivers are otherwise identical in configuration and in
1730 operation.
1731 </P>
1732 <P>
1733
1734 The PostScript driver is described in further detail below.
1735 </P>
1736 <P>
1737
1738 <TABLE BORDER="0" CELLSPACING="0">
1739 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC23">5.6.1 PostScript output options</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Output file options.</TD></TR>
1740 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC24">5.6.2 PostScript page options</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Paper, margins, scaling &amp; rotation, more!</TD></TR>
1741 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC25">5.6.3 PostScript file options</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Configuration files.</TD></TR>
1742 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC26">5.6.4 PostScript font options</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Default fonts, font options.</TD></TR>
1743 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC27">5.6.5 PostScript line options</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Line widths, options.</TD></TR>
1744 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC28">5.6.6 The PostScript prologue</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Details on the PostScript prologue.</TD></TR>
1745 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC29">5.6.7 PostScript encodings</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Details on PostScript font encodings.</TD></TR>
1746 </TABLE>
1747 <P>
1748
1749 <A NAME="PS output options"></A>
1750 <HR SIZE="6">
1751 <A NAME="SEC23"></A>
1752 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
1753 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC22"> &lt; </A>]</TD>
1754 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC24"> &gt; </A>]</TD>
1755 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
1756 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC22"> Up </A>]</TD>
1757 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
1758 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
1759 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
1760 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
1761 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
1762 </TR></TABLE>
1763 <H3> 5.6.1 PostScript output options </H3>
1764 <!--docid::SEC23::-->
1765 <P>
1766
1767 These options deal with the form of the output and the output file
1768 itself:
1769 </P>
1770 <P>
1771
1772 </P>
1773 <DL COMPACT>
1774 <DT><CODE>output-file=<VAR>filename</VAR></CODE>
1775 <DD><P>
1776
1777 File to which output should be sent. This can be an ordinary filename
1778 (i.e., <CODE>&quot;pspp.ps&quot;</CODE>), a pipe filename (i.e., <CODE>&quot;|lpr&quot;</CODE>), or
1779 stdout (<CODE>&quot;-&quot;</CODE>). Default: <CODE>&quot;pspp.ps&quot;</CODE>.
1780 </P>
1781 <P>
1782
1783 </P>
1784 <DT><CODE>color=<VAR>boolean</VAR></CODE>
1785 <DD><P>
1786
1787 Most of the time black-and-white PostScript devices are smart enough to
1788 map colors to shades themselves. However, you can cause the PSPP
1789 output driver to do an ugly simulation of this in its own driver by
1790 turning <CODE>color</CODE> off. Default: <CODE>on</CODE>.
1791 </P>
1792 <P>
1793
1794 This is a boolean setting, as are many settings in the PostScript
1795 driver. Valid positive boolean values are `<SAMP>on</SAMP>', `<SAMP>true</SAMP>',
1796 `<SAMP>yes</SAMP>', and nonzero integers. Negative boolean values are
1797 `<SAMP>off</SAMP>', `<SAMP>false</SAMP>', `<SAMP>no</SAMP>', and zero.
1798 </P>
1799 <P>
1800
1801 </P>
1802 <DT><CODE>data=<VAR>data-type</VAR></CODE>
1803 <DD><P>
1804
1805 One of <CODE>clean7bit</CODE>, <CODE>clean8bit</CODE>, or <CODE>binary</CODE>. This
1806 controls what characters will be written to the output file. PostScript
1807 produced with <CODE>clean7bit</CODE> can be transmitted over 7-bit
1808 transmission channels that use ASCII control characters for line
1809 control. <CODE>clean8bit</CODE> is similar but allows characters above 127 to
1810 be written to the output file. <CODE>binary</CODE> allows any character in
1811 the output file. Default: <CODE>clean7bit</CODE>.
1812 </P>
1813 <P>
1814
1815 </P>
1816 <DT><CODE>line-ends=<VAR>line-end-type</VAR></CODE>
1817 <DD><P>
1818
1819 One of <CODE>cr</CODE>, <CODE>lf</CODE>, or <CODE>crlf</CODE>. This controls what is used
1820 for newline in the output file. Default: <CODE>cr</CODE>.
1821 </P>
1822 <P>
1823
1824 </P>
1825 <DT><CODE>optimize-line-size=<VAR>level</VAR></CODE>
1826 <DD><P>
1827
1828 Either <CODE>0</CODE> or <CODE>1</CODE>. If <VAR>level</VAR> is <CODE>1</CODE>, then short
1829 line segments will be collected and merged into longer ones. This
1830 reduces output file size but requires more time and memory. A
1831 <VAR>level</VAR> of <CODE>0</CODE> has the advantage of being better for
1832 interactive environments. <CODE>1</CODE> is the default unless the
1833 <CODE>screen</CODE> flag is set; in that case, the default is <CODE>0</CODE>.
1834 </P>
1835 <P>
1836
1837 </P>
1838 <DT><CODE>optimize-text-size=<VAR>level</VAR></CODE>
1839 <DD><P>
1840
1841 One of <CODE>0</CODE>, <CODE>1</CODE>, or <CODE>2</CODE>, each higher level representing
1842 correspondingly more aggressive space savings for text in the output
1843 file and requiring correspondingly more time and memory. Unfortunately
1844 the levels presently are all the same. <CODE>1</CODE> is the default unless
1845 the <CODE>screen</CODE> flag is set; in that case, the default is <CODE>0</CODE>.
1846 </DL>
1847 <P>
1848
1849 <A NAME="PS page options"></A>
1850 <HR SIZE="6">
1851 <A NAME="SEC24"></A>
1852 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
1853 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC23"> &lt; </A>]</TD>
1854 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC25"> &gt; </A>]</TD>
1855 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
1856 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC22"> Up </A>]</TD>
1857 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
1858 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
1859 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
1860 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
1861 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
1862 </TR></TABLE>
1863 <H3> 5.6.2 PostScript page options </H3>
1864 <!--docid::SEC24::-->
1865 <P>
1866
1867 These options affect page setup:
1868 </P>
1869 <P>
1870
1871 </P>
1872 <DL COMPACT>
1873 <DT><CODE>headers=<VAR>boolean</VAR></CODE>
1874 <DD><P>
1875
1876 Controls whether the standard headers showing the time and date and
1877 title and subtitle are printed at the top of each page. Default:
1878 <CODE>on</CODE>.
1879 </P>
1880 <P>
1881
1882 </P>
1883 <DT><CODE>paper-size=<VAR>paper-size</VAR></CODE>
1884 <DD><P>
1885
1886 Paper size, either as a symbolic name (i.e., <CODE>letter</CODE> or <CODE>a4</CODE>)
1887 or specific measurements (i.e., <CODE>8-1/2x11</CODE> or <CODE>&quot;210 x 297&quot;</CODE>.
1888 See section <A HREF="pspp.html#SEC19">Paper sizes</A>. Default: <CODE>letter</CODE>.
1889 </P>
1890 <P>
1891
1892 </P>
1893 <DT><CODE>orientation=<VAR>orientation</VAR></CODE>
1894 <DD><P>
1895
1896 Either <CODE>portrait</CODE> or <CODE>landscape</CODE>. Default: <CODE>portrait</CODE>.
1897 </P>
1898 <P>
1899
1900 </P>
1901 <DT><CODE>left-margin=<VAR>dimension</VAR></CODE>
1902 <DD><DT><CODE>right-margin=<VAR>dimension</VAR></CODE>
1903 <DD><DT><CODE>top-margin=<VAR>dimension</VAR></CODE>
1904 <DD><DT><CODE>bottom-margin=<VAR>dimension</VAR></CODE>
1905 <DD><P>
1906
1907 Sets the margins around the page. The headers, if enabled, are not
1908 included in the margins; they are in addition to the margins. For a
1909 description of dimensions, see <A HREF="pspp.html#SEC18">5.5.4 Dimensions</A>. Default: <CODE>0.5in</CODE>.
1910 </P>
1911 <P>
1912
1913 </DL>
1914 <P>
1915
1916 <A NAME="PS file options"></A>
1917 <HR SIZE="6">
1918 <A NAME="SEC25"></A>
1919 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
1920 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC24"> &lt; </A>]</TD>
1921 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC26"> &gt; </A>]</TD>
1922 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
1923 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC22"> Up </A>]</TD>
1924 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
1925 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
1926 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
1927 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
1928 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
1929 </TR></TABLE>
1930 <H3> 5.6.3 PostScript file options </H3>
1931 <!--docid::SEC25::-->
1932 <P>
1933
1934 Oh, my. You don't really want to know about the way that the PostScript
1935 driver deals with files, do you? Well I suppose you're entitled, but I
1936 warn you right now: it's not pretty. Here goes<small>....</small>
1937 </P>
1938 <P>
1939
1940 First let's look at the options that are available:
1941 </P>
1942 <P>
1943
1944 </P>
1945 <DL COMPACT>
1946
1947 <DT><CODE>font-dir=<VAR>font-directory</VAR></CODE>
1948 <DD><P>
1949
1950 Sets the font directory. Default: <CODE>devps</CODE>.
1951 </P>
1952 <P>
1953
1954 </P>
1955 <DT><CODE>prologue-file=<VAR>prologue-file-name</VAR></CODE>
1956 <DD><P>
1957
1958 Sets the name of the PostScript prologue file. You can write your own
1959 prologue, though I have no idea why you'd want to: see <A HREF="pspp.html#SEC28">5.6.6 The PostScript prologue</A>.
1960 Default: <CODE>ps-prologue</CODE>.
1961 </P>
1962 <P>
1963
1964 </P>
1965 <DT><CODE>device-file=<VAR>device-file-name</VAR></CODE>
1966 <DD><P>
1967
1968 Sets the name of the Groff-format device description file. The
1969 PostScript driver reads this in order to know about the scaling of fonts
1970 and so on. The format of such files is described in groff_font(5),
1971 included with Groff. Default: <CODE>DESC</CODE>.
1972 </P>
1973 <P>
1974
1975 </P>
1976 <DT><CODE>encoding-file=<VAR>encoding-file-name</VAR></CODE>
1977 <DD><P>
1978
1979 Sets the name of the encoding file. This file contains a list of all
1980 font encodings that will be needed so that the driver can put all of
1981 them at the top of the prologue. See section <A HREF="pspp.html#SEC29">5.6.7 PostScript encodings</A>. Default:
1982 <CODE>ps-encodings</CODE>.
1983 </P>
1984 <P>
1985
1986 If the specified encoding file cannot be found, this error will be
1987 silently ignored, since most people do not need any encodings besides
1988 the ones that can be found using <CODE>auto-encodings</CODE>, described below.
1989 </P>
1990 <P>
1991
1992 </P>
1993 <DT><CODE>auto-encode=<VAR>boolean</VAR></CODE>
1994 <DD><P>
1995
1996 When enabled, the font encodings needed by the default proportional- and
1997 fixed-pitch fonts will automatically be dumped to the PostScript
1998 output. Otherwise, it is assumed that the user has an encoding file
1999 and knows how to use it (see section <A HREF="pspp.html#SEC29">5.6.7 PostScript encodings</A>). There is probably no good
2000 reason to turn off this convenient feature. Default: <CODE>on</CODE>.
2001 </P>
2002 <P>
2003
2004 </DL>
2005 <P>
2006
2007 Next I suppose it's time to describe the search algorithm. When the
2008 PostScript driver needs a file, whether that file be a font, a
2009 PostScript prologue, or what you will, it searches in this manner:
2010 </P>
2011 <P>
2012
2013 <OL>
2014
2015 <LI>
2016 Constructs a path by taking the first of the following that is defined:
2017 <P>
2018
2019 <OL>
2020
2021 <LI>
2022 Environment variable <CODE>STAT_GROFF_FONT_PATH</CODE>. See section <A HREF="pspp.html#SEC10">5.4 Environment variables</A>.
2023 <P>
2024
2025 </P>
2026 <LI>
2027 Environment variable <CODE>GROFF_FONT_PATH</CODE>.
2028 <P>
2029
2030 </P>
2031 <LI>
2032 The compiled-in fallback default.
2033 </OL>
2034 <P>
2035
2036 </P>
2037 <LI>
2038 Constructs a base name from concatenating, in order, the font directory,
2039 a path separator (`<SAMP>/</SAMP>' or `<SAMP>\</SAMP>'), and the file to be found. A
2040 typical base name would be something like <CODE>devps/ps-encodings</CODE>.
2041 <P>
2042
2043 </P>
2044 <LI>
2045 Searches for the base name in the path constructed above. If the file
2046 is found, the algorithm terminates.
2047 <P>
2048
2049 </P>
2050 <LI>
2051 Searches for the base name in the standard configuration path. See
2052 <A HREF="pspp.html#SEC7">5.1 Locating configuration files</A>, for more details. If the file is found, the
2053 algorithm terminates.
2054 <P>
2055
2056 </P>
2057 <LI>
2058 At this point we remove the font directory and path separator from the
2059 base name. Now the base name is simply the file to be found, i.e.,
2060 <CODE>ps-encodings</CODE>.
2061 <P>
2062
2063 </P>
2064 <LI>
2065 Searches for the base name in the path constructed in the first step.
2066 If the file is found, the algorithm terminates.
2067 <P>
2068
2069 </P>
2070 <LI>
2071 Searches for the base name in the standard configuration path. If the
2072 file is found, the algorithm terminates.
2073 <P>
2074
2075 </P>
2076 <LI>
2077 The algorithm terminates unsuccessfully.
2078 </OL>
2079 <P>
2080
2081 So, as you see, there are several ways to configure the PostScript
2082 drivers. Careful selection of techniques can make the configuration
2083 very flexible indeed.
2084 </P>
2085 <P>
2086
2087 <A NAME="PS font options"></A>
2088 <HR SIZE="6">
2089 <A NAME="SEC26"></A>
2090 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
2091 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC25"> &lt; </A>]</TD>
2092 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC27"> &gt; </A>]</TD>
2093 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
2094 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC22"> Up </A>]</TD>
2095 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
2096 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
2097 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
2098 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
2099 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
2100 </TR></TABLE>
2101 <H3> 5.6.4 PostScript font options </H3>
2102 <!--docid::SEC26::-->
2103 <P>
2104
2105 The list of available font options is short and sweet:
2106 </P>
2107 <P>
2108
2109 </P>
2110 <DL COMPACT>
2111 <DT><CODE>prop-font=<VAR>font-name</VAR></CODE>
2112 <DD><P>
2113
2114 Sets the default proportional font. The name should be that of a
2115 PostScript font. Default: <CODE>&quot;Helvetica&quot;</CODE>.
2116 </P>
2117 <P>
2118
2119 </P>
2120 <DT><CODE>fixed-font=<VAR>font-name</VAR></CODE>
2121 <DD><P>
2122
2123 Sets the default fixed-pitch font. The name should be that of a
2124 PostScript font. Default: <CODE>&quot;Courier&quot;</CODE>.
2125 </P>
2126 <P>
2127
2128 </P>
2129 <DT><CODE>font-size=<VAR>font-size</VAR></CODE>
2130 <DD><P>
2131
2132 Sets the size of the default fonts, in thousandths of a point. Default:
2133 <CODE>10000</CODE>.
2134 </P>
2135 <P>
2136
2137 </DL>
2138 <P>
2139
2140 <A NAME="PS line options"></A>
2141 <HR SIZE="6">
2142 <A NAME="SEC27"></A>
2143 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
2144 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC26"> &lt; </A>]</TD>
2145 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC28"> &gt; </A>]</TD>
2146 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
2147 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC22"> Up </A>]</TD>
2148 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
2149 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
2150 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
2151 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
2152 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
2153 </TR></TABLE>
2154 <H3> 5.6.5 PostScript line options </H3>
2155 <!--docid::SEC27::-->
2156 <P>
2157
2158 Most tables contain lines, or rules, between cells. Some features of
2159 the way that lines are drawn in PostScript tables are user-definable:
2160 </P>
2161 <P>
2162
2163 </P>
2164 <DL COMPACT>
2165
2166 <DT><CODE>line-style=<VAR>style</VAR></CODE>
2167 <DD><P>
2168
2169 Sets the style used for lines used to divide tables into sections.
2170 <VAR>style</VAR> must be either <CODE>thick</CODE>, in which case thick lines are
2171 used, or <VAR>double</VAR>, in which case double lines are used. Default:
2172 <CODE>thick</CODE>.
2173 </P>
2174 <P>
2175
2176 </P>
2177 <DT><CODE>line-gutter=<VAR>dimension</VAR></CODE>
2178 <DD><P>
2179
2180 Sets the line gutter, which is the amount of whitespace on either side
2181 of lines that border text or graphics objects. See section <A HREF="pspp.html#SEC18">5.5.4 Dimensions</A>.
2182 Default: <CODE>0.5pt</CODE>.
2183 </P>
2184 <P>
2185
2186 </P>
2187 <DT><CODE>line-spacing=<VAR>dimension</VAR></CODE>
2188 <DD><P>
2189
2190 Sets the line spacing, which is the amount of whitespace that separates
2191 lines that are side by side, as in a double line. Default:
2192 <CODE>0.5pt</CODE>.
2193 </P>
2194 <P>
2195
2196 </P>
2197 <DT><CODE>line-width=<VAR>dimension</VAR></CODE>
2198 <DD><P>
2199
2200 Sets the width of a typical line used in tables. Default: <CODE>0.5pt</CODE>.
2201 </P>
2202 <P>
2203
2204 </P>
2205 <DT><CODE>line-width-thick=<VAR>dimension</VAR></CODE>
2206 <DD><P>
2207
2208 Sets the width of a thick line used in tables. Not used if
2209 <CODE>line-style</CODE> is set to <CODE>thick</CODE>. Default: <CODE>1.5pt</CODE>.
2210 </P>
2211 <P>
2212
2213 </DL>
2214 <P>
2215
2216 <A NAME="Prologue"></A>
2217 <HR SIZE="6">
2218 <A NAME="SEC28"></A>
2219 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
2220 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC27"> &lt; </A>]</TD>
2221 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC29"> &gt; </A>]</TD>
2222 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
2223 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC22"> Up </A>]</TD>
2224 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
2225 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
2226 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
2227 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
2228 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
2229 </TR></TABLE>
2230 <H3> 5.6.6 The PostScript prologue </H3>
2231 <!--docid::SEC28::-->
2232 <P>
2233
2234 Most PostScript files that are generated mechanically by programs
2235 consist of two parts: a prologue and a body. The prologue is generally
2236 a collection of boilerplate. Only the body differs greatly between
2237 two outputs from the same program.
2238
2239 This is also the strategy used in the PSPP PostScript driver. In
2240 general, the prologue supplied with PSPP will be more than sufficient.
2241 In this case, you will not need to read the rest of this section.
2242 However, hackers might want to know more. Read on, if you fall into
2243 this category.
2244 </P>
2245 <P>
2246
2247 The prologue is dumped into the output stream essentially unmodified.
2248 However, two actions are performed on its lines. First, certain lines
2249 may be omitted as specified in the prologue file itself. Second,
2250 variables are substituted.
2251 </P>
2252 <P>
2253
2254 The following lines are omitted:
2255 </P>
2256 <P>
2257
2258 <OL>
2259 <LI>
2260 All lines that contain three bangs in a row (<CODE>!!!</CODE>).
2261 <P>
2262
2263 </P>
2264 <LI>
2265 Lines that contain <CODE>!eps</CODE>, if the PostScript driver is producing
2266 ordinary PostScript output. Otherwise an EPS file is being produced,
2267 and the line is included in the output, although everything following
2268 <CODE>!eps</CODE> is deleted.
2269 <P>
2270
2271 </P>
2272 <LI>
2273 Lines that contain <CODE>!ps</CODE>, if the PostScript driver is producing EPS
2274 output. Otherwise, ordinary PostScript is being produced, and the line
2275 is included in the output, although everything following <CODE>!ps</CODE> is
2276 deleted.
2277 </OL>
2278 <P>
2279
2280 The following are the variables that are substituted. Only the
2281 variables listed are substituted; environment variables are not.
2282 See section <A HREF="pspp.html#SEC12">5.4.2 Environment substitutions</A>.
2283 </P>
2284 <P>
2285
2286 </P>
2287 <DL COMPACT>
2288 <DT><CODE>bounding-box</CODE>
2289 <DD><P>
2290
2291 The page bounding box, in points, as four space-separated numbers. For
2292 U.S. letter size paper, this is `<SAMP>0 0 612 792</SAMP>'.
2293 </P>
2294 <P>
2295
2296 </P>
2297 <DT><CODE>creator</CODE>
2298 <DD><P>
2299
2300 PSPP version as a string: `<SAMP>GNU PSPP 0.1b</SAMP>', for example.
2301 </P>
2302 <P>
2303
2304 </P>
2305 <DT><CODE>date</CODE>
2306 <DD><P>
2307
2308 Date the file was created. Example: `<SAMP>Tue May 21 13:46:22 1991</SAMP>'.
2309 </P>
2310 <P>
2311
2312 </P>
2313 <DT><CODE>data</CODE>
2314 <DD><P>
2315
2316 Value of the <CODE>data</CODE> PostScript driver option, as one of the strings
2317 `<SAMP>Clean7Bit</SAMP>', `<SAMP>Clean8Bit</SAMP>', or `<SAMP>Binary</SAMP>'.
2318 </P>
2319 <P>
2320
2321 </P>
2322 <DT><CODE>orientation</CODE>
2323 <DD><P>
2324
2325 Page orientation, as one of the strings <CODE>Portrait</CODE> or
2326 <CODE>Landscape</CODE>.
2327 </P>
2328 <P>
2329
2330 </P>
2331 <DT><CODE>user</CODE>
2332 <DD><P>
2333
2334 Under multiuser OSes, the user's login name, taken either from the
2335 environment variable <CODE>LOGNAME</CODE> or, if that fails, the result of the
2336 C library function <CODE>getlogin()</CODE>. Defaults to `<SAMP>nobody</SAMP>'.
2337 </P>
2338 <P>
2339
2340 </P>
2341 <DT><CODE>host</CODE>
2342 <DD><P>
2343
2344 System hostname as reported by <CODE>gethostname()</CODE>. Defaults to
2345 `<SAMP>nowhere</SAMP>'.
2346 </P>
2347 <P>
2348
2349 </P>
2350 <DT><CODE>prop-font</CODE>
2351 <DD><P>
2352
2353 Name of the default proportional font, prefixed by the word
2354 `<SAMP>font</SAMP>' and a space. Example: `<SAMP>font Times-Roman</SAMP>'.
2355 </P>
2356 <P>
2357
2358 </P>
2359 <DT><CODE>fixed-font</CODE>
2360 <DD><P>
2361
2362 Name of the default fixed-pitch font, prefixed by the word `<SAMP>font</SAMP>'
2363 and a space.
2364 </P>
2365 <P>
2366
2367 </P>
2368 <DT><CODE>scale-factor</CODE>
2369 <DD><P>
2370
2371 The page scaling factor as a floating-point number. Example:
2372 <CODE>1.0</CODE>. Note that this is also passed as an argument to the BP
2373 macro.
2374 </P>
2375 <P>
2376
2377 </P>
2378 <DT><CODE>paper-length</CODE>
2379 <DD><DT><CODE>paper-width</CODE>
2380 <DD><P>
2381
2382 The paper length and paper width, respectively, in thousandths of a
2383 point. Note that these are also passed as arguments to the BP macro.
2384 </P>
2385 <P>
2386
2387 </P>
2388 <DT><CODE>left-margin</CODE>
2389 <DD><DT><CODE>top-margin</CODE>
2390 <DD><P>
2391
2392 The left margin and top margin, respectively, in thousandths of a
2393 point. Note that these are also passed as arguments to the BP macro.
2394 </P>
2395 <P>
2396
2397 </P>
2398 <DT><CODE>title</CODE>
2399 <DD><P>
2400
2401 Document title as a string. This is not the title specified in the
2402 PSPP syntax file. A typical title is the word `<SAMP>PSPP</SAMP>' followed
2403 by the syntax file name in parentheses. Example: `<SAMP>PSPP
2404 (&lt;stdin&gt;)</SAMP>'.
2405 </P>
2406 <P>
2407
2408 </P>
2409 <DT><CODE>source-file</CODE>
2410 <DD><P>
2411
2412 PSPP syntax file name. Example: `<SAMP>mary96/first.stat</SAMP>'.
2413 </P>
2414 <P>
2415
2416 </DL>
2417 <P>
2418
2419 Any other questions about the PostScript prologue can best be answered
2420 by examining the default prologue or the PSPP source.
2421 </P>
2422 <P>
2423
2424 <A NAME="Encodings"></A>
2425 <HR SIZE="6">
2426 <A NAME="SEC29"></A>
2427 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
2428 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC28"> &lt; </A>]</TD>
2429 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC30"> &gt; </A>]</TD>
2430 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
2431 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC22"> Up </A>]</TD>
2432 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
2433 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
2434 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
2435 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
2436 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
2437 </TR></TABLE>
2438 <H3> 5.6.7 PostScript encodings </H3>
2439 <!--docid::SEC29::-->
2440 <P>
2441
2442 PostScript fonts often contain many more than 256 characters, in order
2443 to accommodate foreign language characters and special symbols.
2444 PostScript uses <EM>encodings</EM> to map these onto single-byte symbol
2445 sets. Each font can have many different encodings applied to it.
2446 </P>
2447 <P>
2448
2449 PSPP's PostScript driver needs to know which encoding to apply to each
2450 font. It can determine this from the information encapsulated in the
2451 Groff font description that it reads. However, there is an additional
2452 problem--for efficiency, the PostScript driver needs to have a complete
2453 list of all encodings that will be used in the entire session <EM>when
2454 it opens the output file</EM>. For this reason, it can't use the
2455 information built into the fonts because it doesn't know which fonts
2456 will be used.
2457 </P>
2458 <P>
2459
2460 As a stopgap solution, there are two mechanisms for specifying which
2461 encodings will be used. The first mechanism is automatic and it is the
2462 only one that most PSPP users will ever need. The second mechanism is
2463 manual, but it is more flexible. Either mechanism or both may be used
2464 at one time.
2465 </P>
2466 <P>
2467
2468 The first mechanism is activated by the `<SAMP>auto-encode</SAMP>' driver option
2469 (see section <A HREF="pspp.html#SEC25">5.6.3 PostScript file options</A>). When enabled, `<SAMP>auto-encode</SAMP>' causes the
2470 PostScript driver to include the encodings used by the default
2471 proportional and fixed-pitch fonts (see section <A HREF="pspp.html#SEC26">5.6.4 PostScript font options</A>). Many
2472 PSPP output files will only need these encodings.
2473 </P>
2474 <P>
2475
2476 The second mechanism is the file specified by the `<SAMP>encoding-file</SAMP>'
2477 option (see section <A HREF="pspp.html#SEC25">5.6.3 PostScript file options</A>). If it exists, this file must consist
2478 of lines in PSPP configuration-file format (see section <A HREF="pspp.html#SEC9">5.3 Configuration files</A>). Each line that is not a comment should name a PostScript
2479 encoding to include in the output.
2480 </P>
2481 <P>
2482
2483 It is not an error if an encoding is included more than once, by either
2484 mechanism. It will appear only once in the output. It is also not an
2485 error if an encoding is included in the output but never used. It
2486 <EM>is</EM> an error if an encoding is used but not included by one of
2487 these mechanisms. In this case, the built-in PostScript encoding
2488 `<SAMP>ISOLatin1Encoding</SAMP>' is substituted.
2489 </P>
2490 <P>
2491
2492 <A NAME="ASCII driver class"></A>
2493 <HR SIZE="6">
2494 <A NAME="SEC30"></A>
2495 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
2496 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC29"> &lt; </A>]</TD>
2497 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC31"> &gt; </A>]</TD>
2498 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
2499 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> Up </A>]</TD>
2500 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
2501 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
2502 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
2503 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
2504 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
2505 </TR></TABLE>
2506 <H2> 5.7 The ASCII driver class </H2>
2507 <!--docid::SEC30::-->
2508 <P>
2509
2510 The ASCII driver class produces output that can be displayed on a
2511 terminal or output to printers. All of its options are highly
2512 configurable. The ASCII driver has class name `<SAMP>ascii</SAMP>'.
2513 </P>
2514 <P>
2515
2516 The ASCII driver is described in further detail below.
2517 </P>
2518 <P>
2519
2520 <TABLE BORDER="0" CELLSPACING="0">
2521 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC31">5.7.1 ASCII output options</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Output file options.</TD></TR>
2522 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC32">5.7.2 ASCII page options</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Page size, margins, more.</TD></TR>
2523 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC33">5.7.3 ASCII font options</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Box character, bold &amp; italics.</TD></TR>
2524 </TABLE>
2525 <P>
2526
2527 <A NAME="ASCII output options"></A>
2528 <HR SIZE="6">
2529 <A NAME="SEC31"></A>
2530 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
2531 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC30"> &lt; </A>]</TD>
2532 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC32"> &gt; </A>]</TD>
2533 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
2534 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC30"> Up </A>]</TD>
2535 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
2536 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
2537 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
2538 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
2539 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
2540 </TR></TABLE>
2541 <H3> 5.7.1 ASCII output options </H3>
2542 <!--docid::SEC31::-->
2543 <P>
2544
2545 </P>
2546 <DL COMPACT>
2547 <DT><CODE>output-file=<VAR>filename</VAR></CODE>
2548 <DD><P>
2549
2550 File to which output should be sent. This can be an ordinary filename
2551 (i.e., <CODE>&quot;pspp.ps&quot;</CODE>), a pipe filename (i.e., <CODE>&quot;|lpr&quot;</CODE>), or
2552 stdout (<CODE>&quot;-&quot;</CODE>). Default: <CODE>&quot;pspp.list&quot;</CODE>.
2553 </P>
2554 <P>
2555
2556 </P>
2557 <DT><CODE>char-set=<VAR>char-set-type</VAR></CODE>
2558 <DD><P>
2559
2560 One of `<SAMP>ascii</SAMP>' or `<SAMP>latin1</SAMP>'. This has no effect on output at
2561 the present time. Default: <CODE>ascii</CODE>.
2562 </P>
2563 <P>
2564
2565 </P>
2566 <DT><CODE>form-feed-string=<VAR>form-feed-value</VAR></CODE>
2567 <DD><P>
2568
2569 The string written to the output to cause a formfeed. See also
2570 <CODE>paginate</CODE>, described below, for a related setting. Default:
2571 <CODE>&quot;\f&quot;</CODE>.
2572 </P>
2573 <P>
2574
2575 </P>
2576 <DT><CODE>newline-string=<VAR>newline-value</VAR></CODE>
2577 <DD><P>
2578
2579 The string written to the output to cause a newline (carriage return
2580 plus linefeed). The default, which can be specified explicitly with
2581 <CODE>newline-string=default</CODE>, is to use the system-dependent newline
2582 sequence by opening the output file in text mode. This is usually the
2583 right choice.
2584 </P>
2585 <P>
2586
2587 However, <CODE>newline-string</CODE> can be set to any string. When this is
2588 done, the output file is opened in binary mode.
2589 </P>
2590 <P>
2591
2592 </P>
2593 <DT><CODE>paginate=<VAR>boolean</VAR></CODE>
2594 <DD><P>
2595
2596 If set, a formfeed (as set in <CODE>form-feed-string</CODE>, described above)
2597 will be written to the device after every page. Default: <CODE>on</CODE>.
2598 </P>
2599 <P>
2600
2601 </P>
2602 <DT><CODE>tab-width=<VAR>tab-width-value</VAR></CODE>
2603 <DD><P>
2604
2605 The distance between tab stops for this device. If set to 0, tabs will
2606 not be used in the output. Default: <CODE>8</CODE>.
2607 </P>
2608 <P>
2609
2610 </P>
2611 <DT><CODE>init=<VAR>initialization-string</VAR>.</CODE>
2612 <DD><P>
2613
2614 String written to the device before anything else, at the beginning of
2615 the output. Default: <CODE>&quot;&quot;</CODE> (the empty string).
2616 </P>
2617 <P>
2618
2619 </P>
2620 <DT><CODE>done=<VAR>finalization-string</VAR>.</CODE>
2621 <DD><P>
2622
2623 String written to the device after everything else, at the end of the
2624 output. Default: <CODE>&quot;&quot;</CODE> (the empty string).
2625 </DL>
2626 <P>
2627
2628 <A NAME="ASCII page options"></A>
2629 <HR SIZE="6">
2630 <A NAME="SEC32"></A>
2631 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
2632 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC31"> &lt; </A>]</TD>
2633 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC33"> &gt; </A>]</TD>
2634 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
2635 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC30"> Up </A>]</TD>
2636 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
2637 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
2638 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
2639 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
2640 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
2641 </TR></TABLE>
2642 <H3> 5.7.2 ASCII page options </H3>
2643 <!--docid::SEC32::-->
2644 <P>
2645
2646 These options affect page setup:
2647 </P>
2648 <P>
2649
2650 </P>
2651 <DL COMPACT>
2652 <DT><CODE>headers=<VAR>boolean</VAR></CODE>
2653 <DD><P>
2654
2655 If enabled, two lines of header information giving title and subtitle,
2656 page number, date and time, and PSPP version are printed at the top of
2657 every page. These two lines are in addition to any top margin
2658 requested. Default: <CODE>on</CODE>.
2659 </P>
2660 <P>
2661
2662 </P>
2663 <DT><CODE>length=<VAR>line-count</VAR></CODE>
2664 <DD><P>
2665
2666 Physical length of a page, in lines. Headers and margins are subtracted
2667 from this value. Default: <CODE>66</CODE>.
2668 </P>
2669 <P>
2670
2671 </P>
2672 <DT><CODE>width=<VAR>character-count</VAR></CODE>
2673 <DD><P>
2674
2675 Physical width of a page, in characters. Margins are subtracted from
2676 this value. Default: <CODE>130</CODE>.
2677 </P>
2678 <P>
2679
2680 </P>
2681 <DT><CODE>lpi=<VAR>lines-per-inch</VAR></CODE>
2682 <DD><P>
2683
2684 Number of lines per vertical inch. Not currently used. Default: <CODE>6</CODE>.
2685 </P>
2686 <P>
2687
2688 </P>
2689 <DT><CODE>cpi=<VAR>characters-per-inch</VAR></CODE>
2690 <DD><P>
2691
2692 Number of characters per horizontal inch. Not currently used. Default:
2693 <CODE>10</CODE>.
2694 </P>
2695 <P>
2696
2697 </P>
2698 <DT><CODE>left-margin=<VAR>left-margin-width</VAR></CODE>
2699 <DD><P>
2700
2701 Width of the left margin, in characters. PSPP subtracts this value
2702 from the page width. Default: <CODE>0</CODE>.
2703 </P>
2704 <P>
2705
2706 </P>
2707 <DT><CODE>right-margin=<VAR>right-margin-width</VAR></CODE>
2708 <DD><P>
2709
2710 Width of the right margin, in characters. PSPP subtracts this value
2711 from the page width. Default: <CODE>0</CODE>.
2712 </P>
2713 <P>
2714
2715 </P>
2716 <DT><CODE>top-margin=<VAR>top-margin-lines</VAR></CODE>
2717 <DD><P>
2718
2719 Length of the top margin, in lines. PSPP subtracts this value from
2720 the page length. Default: <CODE>2</CODE>.
2721 </P>
2722 <P>
2723
2724 </P>
2725 <DT><CODE>bottom-margin=<VAR>bottom-margin-lines</VAR></CODE>
2726 <DD><P>
2727
2728 Length of the bottom margin, in lines. PSPP subtracts this value from
2729 the page length. Default: <CODE>2</CODE>.
2730 </P>
2731 <P>
2732
2733 </DL>
2734 <P>
2735
2736 <A NAME="ASCII font options"></A>
2737 <HR SIZE="6">
2738 <A NAME="SEC33"></A>
2739 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
2740 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC32"> &lt; </A>]</TD>
2741 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC34"> &gt; </A>]</TD>
2742 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
2743 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC30"> Up </A>]</TD>
2744 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
2745 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
2746 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
2747 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
2748 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
2749 </TR></TABLE>
2750 <H3> 5.7.3 ASCII font options </H3>
2751 <!--docid::SEC33::-->
2752 <P>
2753
2754 These are the ASCII font options:
2755 </P>
2756 <P>
2757
2758 </P>
2759 <DL COMPACT>
2760 <DT><CODE>box[<VAR>line-type</VAR>]=<VAR>box-chars</VAR></CODE>
2761 <DD><P>
2762
2763 The characters used for lines in tables produced by the ASCII driver can
2764 be changed using this option. <VAR>line-type</VAR> is used to indicate which
2765 type of line to change; <VAR>box-chars</VAR> is the character or string of
2766 characters to use for this type of line.
2767 </P>
2768 <P>
2769
2770 <VAR>line-type</VAR> must be a 4-digit number in base 4. The digits are in
2771 the order `right', `bottom', `left', `top'. The four possibilities for
2772 each digit are:
2773 </P>
2774 <P>
2775
2776 </P>
2777 <DL COMPACT>
2778 <DT>0
2779 <DD>No line.
2780 <P>
2781
2782 </P>
2783 <DT>1
2784 <DD>Single line.
2785 <P>
2786
2787 </P>
2788 <DT>2
2789 <DD>Double line.
2790 <P>
2791
2792 </P>
2793 <DT>3
2794 <DD>Special device-defined line, if one is available; otherwise, a double
2795 line.
2796 </DL>
2797 <P>
2798
2799 Examples:
2800 </P>
2801 <P>
2802
2803 </P>
2804 <DL COMPACT>
2805 <DT><CODE>box[0101]=&quot;|&quot;</CODE>
2806 <DD><P>
2807
2808 Sets `<SAMP>|</SAMP>' as the character to use for a single-width line with
2809 bottom and top components.
2810 </P>
2811 <P>
2812
2813 </P>
2814 <DT><CODE>box[2222]=&quot;#&quot;</CODE>
2815 <DD><P>
2816
2817 Sets `<SAMP>#</SAMP>' as the character to use for the intersection of four
2818 double-width lines, one each from the top, bottom, left and right.
2819 </P>
2820 <P>
2821
2822 </P>
2823 <DT><CODE>box[1100]=&quot;\xda&quot;</CODE>
2824 <DD><P>
2825
2826 Sets `<SAMP>&quot;\xda&quot;</SAMP>', which under MS-DOG is a box character suitable for
2827 the top-left corner of a box, as the character for the intersection of
2828 two single-width lines, one each from the right and bottom.
2829 </P>
2830 <P>
2831
2832 </DL>
2833 <P>
2834
2835 Defaults:
2836 </P>
2837 <P>
2838
2839 <UL>
2840 <LI>
2841 <CODE>box[0000]=&quot; &quot;</CODE>
2842 <P>
2843
2844 </P>
2845 <LI>
2846 <CODE>box[1000]=&quot;-&quot;</CODE>
2847 <BR><CODE>box[0010]=&quot;-&quot;</CODE>
2848 <BR><CODE>box[1010]=&quot;-&quot;</CODE>
2849 <P>
2850
2851 </P>
2852 <LI>
2853 <CODE>box[0100]=&quot;|&quot;</CODE>
2854 <BR><CODE>box[0001]=&quot;|&quot;</CODE>
2855 <BR><CODE>box[0101]=&quot;|&quot;</CODE>
2856 <P>
2857
2858 </P>
2859 <LI>
2860 <CODE>box[2000]=&quot;=&quot;</CODE>
2861 <BR><CODE>box[0020]=&quot;=&quot;</CODE>
2862 <BR><CODE>box[2020]=&quot;=&quot;</CODE>
2863 <P>
2864
2865 </P>
2866 <LI>
2867 <CODE>box[0200]=&quot;#&quot;</CODE>
2868 <BR><CODE>box[0002]=&quot;#&quot;</CODE>
2869 <BR><CODE>box[0202]=&quot;#&quot;</CODE>
2870 <P>
2871
2872 </P>
2873 <LI>
2874 <CODE>box[3000]=&quot;=&quot;</CODE>
2875 <BR><CODE>box[0030]=&quot;=&quot;</CODE>
2876 <BR><CODE>box[3030]=&quot;=&quot;</CODE>
2877 <P>
2878
2879 </P>
2880 <LI>
2881 <CODE>box[0300]=&quot;#&quot;</CODE>
2882 <BR><CODE>box[0003]=&quot;#&quot;</CODE>
2883 <BR><CODE>box[0303]=&quot;#&quot;</CODE>
2884 <P>
2885
2886 </P>
2887 <LI>
2888 For all others, `<SAMP>+</SAMP>' is used unless there are double lines or
2889 special lines, in which case `<SAMP>#</SAMP>' is used.
2890 </UL>
2891 <P>
2892
2893 </P>
2894 <DT><CODE>italic-on=<VAR>italic-on-string</VAR></CODE>
2895 <DD><P>
2896
2897 Character sequence written to turn on italics or underline printing. If
2898 this is set to <CODE>overstrike</CODE>, then the driver will simulate
2899 underlining by overstriking with underscore characters (`<SAMP>_</SAMP>') in the
2900 manner described by <CODE>overstrike-style</CODE> and
2901 <CODE>carriage-return-style</CODE>. Default: <CODE>overstrike</CODE>.
2902 </P>
2903 <P>
2904
2905 </P>
2906 <DT><CODE>italic-off=<VAR>italic-off-string</VAR></CODE>
2907 <DD><P>
2908
2909 Character sequence to turn off italics or underline printing. Default:
2910 <CODE>&quot;&quot;</CODE> (the empty string).
2911 </P>
2912 <P>
2913
2914 </P>
2915 <DT><CODE>bold-on=<VAR>bold-on-string</VAR></CODE>
2916 <DD><P>
2917
2918 Character sequence written to turn on bold or emphasized printing. If
2919 set to <CODE>overstrike</CODE>, then the driver will simulated bold printing
2920 by overstriking characters in the manner described by
2921 <CODE>overstrike-style</CODE> and <CODE>carriage-return-style</CODE>. Default:
2922 <CODE>overstrike</CODE>.
2923 </P>
2924 <P>
2925
2926 </P>
2927 <DT><CODE>bold-off=<VAR>bold-off-string</VAR></CODE>
2928 <DD><P>
2929
2930 Character sequence to turn off bold or emphasized printing. Default:
2931 <CODE>&quot;&quot;</CODE> (the empty string).
2932 </P>
2933 <P>
2934
2935 </P>
2936 <DT><CODE>bold-italic-on=<VAR>bold-italic-on-string</VAR></CODE>
2937 <DD><P>
2938
2939 Character sequence written to turn on bold-italic printing. If set to
2940 <CODE>overstrike</CODE>, then the driver will simulate bold-italics by
2941 overstriking twice, once with the character, a second time with an
2942 underscore (`<SAMP>_</SAMP>') character, in the manner described by
2943 <CODE>overstrike-style</CODE> and <CODE>carriage-return-style</CODE>. Default:
2944 <CODE>overstrike</CODE>.
2945 </P>
2946 <P>
2947
2948 </P>
2949 <DT><CODE>bold-italic-off=<VAR>bold-italic-off-string</VAR></CODE>
2950 <DD><P>
2951
2952 Character sequence to turn off bold-italic printing. Default: <CODE>&quot;&quot;</CODE>
2953 (the empty string).
2954 </P>
2955 <P>
2956
2957 </P>
2958 <DT><CODE>overstrike-style=<VAR>overstrike-option</VAR></CODE>
2959 <DD><P>
2960
2961 Either <CODE>single</CODE> or <CODE>line</CODE>:
2962 </P>
2963 <P>
2964
2965 <UL>
2966 <LI>
2967 If <CODE>single</CODE> is selected, then, to overstrike a line of text, the
2968 output driver will output a character, backspace, overstrike, output a
2969 character, backspace, overstrike, and so on along a line.
2970 <P>
2971
2972 </P>
2973 <LI>
2974 If <CODE>line</CODE> is selected then the output driver will output an entire
2975 line, then backspace or emit a carriage return (as indicated by
2976 <CODE>carriage-return-style</CODE>), then overstrike the entire line at once.
2977 </UL>
2978 <P>
2979
2980 <CODE>single</CODE> is recommended for use with ttys and programs that
2981 understand overstriking in text files, such as the pager <CODE>less</CODE>.
2982 <CODE>single</CODE> will also work with printer devices but results in rapid
2983 back-and-forth motions of the printhead that can cause the printer to
2984 physically overheat!
2985 </P>
2986 <P>
2987
2988 <CODE>line</CODE> is recommended for use with printer devices. Most programs
2989 that understand overstriking in text files will not properly deal with
2990 <CODE>line</CODE> mode.
2991 </P>
2992 <P>
2993
2994 Default: <CODE>single</CODE>.
2995 </P>
2996 <P>
2997
2998 </P>
2999 <DT><CODE>carriage-return-style=<VAR>carriage-return-type</VAR></CODE>
3000 <DD><P>
3001
3002 Either <CODE>bs</CODE> or <CODE>cr</CODE>. This option applies only when one or
3003 more of the font commands is set to <CODE>overstrike</CODE> and, at the same
3004 time, <CODE>overstrike-style</CODE> is set to <CODE>line</CODE>.
3005 </P>
3006 <P>
3007
3008 <UL>
3009 <LI>
3010 If <CODE>bs</CODE> is selected then the driver will return to the beginning of
3011 a line by emitting a sequence of backspace characters (ASCII 8).
3012 <P>
3013
3014 </P>
3015 <LI>
3016 If <CODE>cr</CODE> is selected then the driver will return to the beginning of
3017 a line by emitting a single carriage-return character (ASCII 13).
3018 </UL>
3019 <P>
3020
3021 Although <CODE>cr</CODE> is preferred as being more compact, <CODE>bs</CODE> is more
3022 general since some devices do not interpret carriage returns in the
3023 desired manner. Default: <CODE>bs</CODE>.
3024 </DL>
3025 <P>
3026
3027 <A NAME="HTML driver class"></A>
3028 <HR SIZE="6">
3029 <A NAME="SEC34"></A>
3030 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
3031 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC33"> &lt; </A>]</TD>
3032 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC35"> &gt; </A>]</TD>
3033 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
3034 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> Up </A>]</TD>
3035 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
3036 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
3037 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
3038 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
3039 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
3040 </TR></TABLE>
3041 <H2> 5.8 The HTML driver class </H2>
3042 <!--docid::SEC34::-->
3043 <P>
3044
3045 The <CODE>html</CODE> driver class is used to produce output for viewing in
3046 tables-capable web browsers such as Emacs' w3-mode. Its configuration
3047 is very simple. Currently, the output has a very plain format. In the
3048 future, further work may be done on improving the output appearance.
3049 </P>
3050 <P>
3051
3052 There are few options for use with the <CODE>html</CODE> driver class:
3053 </P>
3054 <P>
3055
3056 </P>
3057 <DL COMPACT>
3058 <DT><CODE>output-file=<VAR>filename</VAR></CODE>
3059 <DD><P>
3060
3061 File to which output should be sent. This can be an ordinary filename
3062 (i.e., <CODE>&quot;pspp.ps&quot;</CODE>), a pipe filename (i.e., <CODE>&quot;|lpr&quot;</CODE>), or
3063 stdout (<CODE>&quot;-&quot;</CODE>). Default: <CODE>&quot;pspp.html&quot;</CODE>.
3064 </P>
3065 <P>
3066
3067 </P>
3068 <DT><CODE>prologue-file=<VAR>prologue-file-name</VAR></CODE>
3069 <DD><P>
3070
3071 Sets the name of the PostScript prologue file. You can write your own
3072 prologue if you want to customize colors or other settings: see
3073 <A HREF="pspp.html#SEC35">5.8.1 The HTML prologue</A>. Default: <CODE>html-prologue</CODE>.
3074 </DL>
3075 <P>
3076
3077 <TABLE BORDER="0" CELLSPACING="0">
3078 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC35">5.8.1 The HTML prologue</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Format of the HTML prologue file.</TD></TR>
3079 </TABLE>
3080 <P>
3081
3082 <A NAME="HTML Prologue"></A>
3083 <HR SIZE="6">
3084 <A NAME="SEC35"></A>
3085 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
3086 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC34"> &lt; </A>]</TD>
3087 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC36"> &gt; </A>]</TD>
3088 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
3089 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC34"> Up </A>]</TD>
3090 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
3091 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
3092 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
3093 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
3094 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
3095 </TR></TABLE>
3096 <H3> 5.8.1 The HTML prologue </H3>
3097 <!--docid::SEC35::-->
3098 <P>
3099
3100 HTML files that are generated by PSPP consist of two parts: a prologue
3101 and a body. The prologue is a collection of boilerplate. Only the body
3102 differs greatly between two outputs. You can tune the colors and other
3103 attributes of the output by editing the prologue.
3104
3105 The prologue is dumped into the output stream essentially unmodified.
3106 However, two actions are performed on its lines. First, certain lines
3107 may be omitted as specified in the prologue file itself. Second,
3108 variables are substituted.
3109 </P>
3110 <P>
3111
3112 The following lines are omitted:
3113 </P>
3114 <P>
3115
3116 <OL>
3117 <LI>
3118 All lines that contain three bangs in a row (<CODE>!!!</CODE>).
3119 <P>
3120
3121 </P>
3122 <LI>
3123 Lines that contain <CODE>!title</CODE>, if no title is set for the output. If
3124 a title is set, then the characters <CODE>!title</CODE> are removed before the
3125 line is output.
3126 <P>
3127
3128 </P>
3129 <LI>
3130 Lines that contain <CODE>!subtitle</CODE>, if no subtitle is set for the
3131 output. If a subtitle is set, then the characters <CODE>!subtitle</CODE> are
3132 removed before the line is output.
3133 </OL>
3134 <P>
3135
3136 The following are the variables that are substituted. Only the
3137 variables listed are substituted; environment variables are not.
3138 See section <A HREF="pspp.html#SEC12">5.4.2 Environment substitutions</A>.
3139 </P>
3140 <P>
3141
3142 </P>
3143 <DL COMPACT>
3144 <DT><CODE>generator</CODE>
3145 <DD><P>
3146
3147 PSPP version as a string: `<SAMP>GNU PSPP 0.1b</SAMP>', for example.
3148 </P>
3149 <P>
3150
3151 </P>
3152 <DT><CODE>date</CODE>
3153 <DD><P>
3154
3155 Date the file was created. Example: `<SAMP>Tue May 21 13:46:22 1991</SAMP>'.
3156 </P>
3157 <P>
3158
3159 </P>
3160 <DT><CODE>user</CODE>
3161 <DD><P>
3162
3163 Under multiuser OSes, the user's login name, taken either from the
3164 environment variable <CODE>LOGNAME</CODE> or, if that fails, the result of the
3165 C library function <CODE>getlogin()</CODE>. Defaults to `<SAMP>nobody</SAMP>'.
3166 </P>
3167 <P>
3168
3169 </P>
3170 <DT><CODE>host</CODE>
3171 <DD><P>
3172
3173 System hostname as reported by <CODE>gethostname()</CODE>. Defaults to
3174 `<SAMP>nowhere</SAMP>'.
3175 </P>
3176 <P>
3177
3178 </P>
3179 <DT><CODE>title</CODE>
3180 <DD><P>
3181
3182 Document title as a string. This is the title specified in the PSPP
3183 syntax file.
3184 </P>
3185 <P>
3186
3187 </P>
3188 <DT><CODE>subtitle</CODE>
3189 <DD><P>
3190
3191 Document subtitle as a string.
3192 </P>
3193 <P>
3194
3195 </P>
3196 <DT><CODE>source-file</CODE>
3197 <DD><P>
3198
3199 PSPP syntax file name. Example: `<SAMP>mary96/first.stat</SAMP>'.
3200 </DL>
3201 <P>
3202
3203 <A NAME="Miscellaneous configuring"></A>
3204 <HR SIZE="6">
3205 <A NAME="SEC36"></A>
3206 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
3207 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC35"> &lt; </A>]</TD>
3208 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC37"> &gt; </A>]</TD>
3209 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
3210 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> Up </A>]</TD>
3211 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
3212 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
3213 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
3214 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
3215 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
3216 </TR></TABLE>
3217 <H2> 5.9 Miscellaneous configuration </H2>
3218 <!--docid::SEC36::-->
3219 <P>
3220
3221 The following environment variables can be used to further configure
3222 PSPP:
3223 </P>
3224 <P>
3225
3226 </P>
3227 <DL COMPACT>
3228 <DT><CODE>HOME</CODE>
3229 <DD><P>
3230
3231 Used to determine the user's home directory. No default value.
3232 </P>
3233 <P>
3234
3235 </P>
3236 <DT><CODE>STAT_INCLUDE_PATH</CODE>
3237 <DD><P>
3238
3239 Path used to find include files in PSPP syntax files. Defaults vary
3240 across operating systems:
3241 </P>
3242 <P>
3243
3244 </P>
3245 <DL COMPACT>
3246 <DT>UNIX
3247 <DD><P>
3248
3249 <UL>
3250 <LI>
3251 `<TT>.</TT>'
3252 <P>
3253
3254 </P>
3255 <LI>
3256 `<TT>~/.pspp/include</TT>'
3257 <P>
3258
3259 </P>
3260 <LI>
3261 `<TT>/usr/local/lib/pspp/include</TT>'
3262 <P>
3263
3264 </P>
3265 <LI>
3266 `<TT>/usr/lib/pspp/include</TT>'
3267 <P>
3268
3269 </P>
3270 <LI>
3271 `<TT>/usr/local/share/pspp/include</TT>'
3272 <P>
3273
3274 </P>
3275 <LI>
3276 `<TT>/usr/share/pspp/include</TT>'
3277 </UL>
3278 <P>
3279
3280 </P>
3281 <DT>MS-DOS
3282 <DD><P>
3283
3284 <UL>
3285 <LI>
3286 `<TT>.</TT>'
3287 <P>
3288
3289 </P>
3290 <LI>
3291 `<TT>C:\PSPP\INCLUDE</TT>'
3292 <P>
3293
3294 </P>
3295 <LI>
3296 `<TT>$PATH</TT>'
3297 </UL>
3298 <P>
3299
3300 </P>
3301 <DT>Other OSes
3302 <DD>No default path.
3303 </DL>
3304 <P>
3305
3306 </P>
3307 <DT><CODE>STAT_PAGER</CODE>
3308 <DD><DT><CODE>PAGER</CODE>
3309 <DD><P>
3310
3311 When PSPP invokes an external pager, it uses the first of these that
3312 is defined. There is a default pager only if the person who compiled
3313 PSPP defined one.
3314 </P>
3315 <P>
3316
3317 </P>
3318 <DT><CODE>TERM</CODE>
3319 <DD><P>
3320
3321 The terminal type <CODE>termcap</CODE> or <CODE>ncurses</CODE> will use, if such
3322 support was compiled into PSPP.
3323 </P>
3324 <P>
3325
3326 </P>
3327 <DT><CODE>STAT_OUTPUT_INIT_FILE</CODE>
3328 <DD><P>
3329
3330 The basename used to search for the driver definition file.
3331 See section <A HREF="pspp.html#SEC14">5.5 Output devices</A>. See section <A HREF="pspp.html#SEC7">5.1 Locating configuration files</A>. Default: <CODE>devices</CODE>.
3332 </P>
3333 <P>
3334
3335 </P>
3336 <DT><CODE>STAT_OUTPUT_PAPERSIZE_FILE</CODE>
3337 <DD><P>
3338
3339 The basename used to search for the papersize file. See section <A HREF="pspp.html#SEC19">5.5.5 Paper sizes</A>.
3340 See section <A HREF="pspp.html#SEC7">5.1 Locating configuration files</A>. Default: <CODE>papersize</CODE>.
3341 </P>
3342 <P>
3343
3344 </P>
3345 <DT><CODE>STAT_OUTPUT_INIT_PATH</CODE>
3346 <DD><P>
3347
3348 The path used to search for the driver definition file and the papersize
3349 file. See section <A HREF="pspp.html#SEC7">5.1 Locating configuration files</A>. Default: the standard configuration path.
3350 </P>
3351 <P>
3352
3353 </P>
3354 <DT><CODE>TMPDIR</CODE>
3355 <DD><P>
3356
3357 The <CODE>sort</CODE> procedure stores its temporary files in this directory.
3358 Default: (UNIX) `<TT>/tmp</TT>', (MS-DOS) `<TT>\</TT>', (other OSes) empty string.
3359 </P>
3360 <P>
3361
3362 </P>
3363 <DT><CODE>TEMP</CODE>
3364 <DD><DT><CODE>TMP</CODE>
3365 <DD><P>
3366
3367 Under MS-DOS only, these variables are consulted after TMPDIR, in this
3368 order.
3369 </DL>
3370 <P>
3371
3372 <A NAME="Improving output quality"></A>
3373 <HR SIZE="6">
3374 <A NAME="SEC37"></A>
3375 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
3376 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC36"> &lt; </A>]</TD>
3377 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt; </A>]</TD>
3378 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
3379 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> Up </A>]</TD>
3380 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &gt;&gt; </A>]</TD>
3381 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
3382 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
3383 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
3384 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
3385 </TR></TABLE>
3386 <H2> 5.10 Improving output quality </H2>
3387 <!--docid::SEC37::-->
3388 <P>
3389
3390 When its drivers are set up properly, PSPP can produce output that
3391 looks very good indeed. The PostScript driver, suitably configured, can
3392 produce presentation-quality output. Here are a few guidelines for
3393 producing better-looking output, regardless of output driver. Your
3394 mileage may vary, of course, and everyone has different esthetic
3395 preferences.
3396 </P>
3397 <P>
3398
3399 <UL>
3400 <LI>
3401 Width is important in PSPP output. Greater output width leads to more
3402 readable output, to a point. Try the following to increase the output
3403 width:
3404 <P>
3405
3406 <UL>
3407 <LI>
3408 If you're using the ASCII driver with a dot-matrix printer, figure out
3409 what you need to do to put the printer into compressed mode. Put that
3410 string into the <CODE>init-string</CODE> setting. Try to get 132 columns; 160
3411 might be better, but you might find that print that tiny is difficult to
3412 read.
3413 <P>
3414
3415 </P>
3416 <LI>
3417 With the PostScript driver, try these ideas:
3418 <P>
3419
3420 <UL>
3421 <LI>
3422 Landscape mode.
3423 <P>
3424
3425 </P>
3426 <LI>
3427 Legal-size (8.5&quot; x 14&quot;) paper in landscape mode.
3428 <P>
3429
3430 </P>
3431 <LI>
3432 Reducing font sizes. If you're using 12-point fonts, try 10 point; if
3433 you're using 10-point fonts, try 8 point. Some fonts are more readable
3434 than others at small sizes.
3435 </UL>
3436 </UL>
3437 <P>
3438
3439 Try to strike a balance between character size and page width.
3440 </P>
3441 <P>
3442
3443 </P>
3444 <LI>
3445 Use high-quality fonts. Many public domain fonts are poor in quality.
3446 Recently, URW made some high-quality fonts available under the GPL.
3447 These are probably suitable.
3448 <P>
3449
3450 </P>
3451 <LI>
3452 Be sure you're using the proper font metrics. The font metrics provided
3453 with PSPP may not correspond to the fonts actually being printed.
3454 This can cause bizarre-looking output.
3455 <P>
3456
3457 </P>
3458 <LI>
3459 Make sure that you're using good ink/ribbon/toner. Darker print is
3460 easier to read.
3461 <P>
3462
3463 </P>
3464 <LI>
3465 Use plain fonts with serifs, such as Times-Roman or Palatino. Avoid
3466 choosing italic or bold fonts as document base fonts.
3467 </UL>
3468 <P>
3469
3470 <A NAME="Invocation"></A>
3471 <HR SIZE="6">
3472 <A NAME="SEC38"></A>
3473 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
3474 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC37"> &lt; </A>]</TD>
3475 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC39"> &gt; </A>]</TD>
3476 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC6"> &lt;&lt; </A>]</TD>
3477 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
3478 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &gt;&gt; </A>]</TD>
3479 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
3480 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
3481 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
3482 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
3483 </TR></TABLE>
3484 <H1> 6. Invoking PSPP </H1>
3485 <!--docid::SEC38::-->
3486 <P>
3487
3488 <A NAME="IDX44"></A>
3489 <A NAME="IDX45"></A>
3490 <TABLE><tr><td>&nbsp;</td><td class=example><pre>pspp [ -B <VAR>dir</VAR> | --config-dir=<VAR>dir</VAR> ] [ -o <VAR>device</VAR> | --device=<VAR>device</VAR> ]
3491 [ -d <VAR>var</VAR>[=<VAR>value</VAR>] | --define=<VAR>var</VAR>[=<VAR>value</VAR>] ] [-u <VAR>var</VAR> | --undef=<VAR>var</VAR> ]
3492 [ -f <VAR>file</VAR> | --out-file=<VAR>file</VAR> ] [ -p | --pipe ] [ -I- | --no-include ]
3493 [ -I <VAR>dir</VAR> | --include=<VAR>dir</VAR> ] [ -i | --interactive ]
3494 [ -n | --edit | --dry-run | --just-print | --recon ]
3495 [ -r | --no-statrc ] [ -h | --help ] [ -l | --list ]
3496 [ -c <VAR>command</VAR> | --command <VAR>command</VAR> ] [ -s | --safer ]
3497 [ --testing-mode ] [ -V | --version ] [ -v | --verbose ]
3498 [ <VAR>key</VAR>=<VAR>value</VAR> ] <VAR>file</VAR><small>....</small>
3499 </pre></td></tr></table><P>
3500
3501 <TABLE BORDER="0" CELLSPACING="0">
3502 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC39">6.1 Non-option Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Specifying syntax files and output devices.</TD></TR>
3503 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC40">6.2 Configuration Options</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Change the configuration for the current run.</TD></TR>
3504 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC41">6.3 Input and output options</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Controlling input and output files.</TD></TR>
3505 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC42">6.4 Language control options</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Language variants.</TD></TR>
3506 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC43">6.5 Informational options</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Helpful information about PSPP.</TD></TR>
3507 </TABLE>
3508 <P>
3509
3510 <A NAME="Non-option Arguments"></A>
3511 <HR SIZE="6">
3512 <A NAME="SEC39"></A>
3513 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
3514 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &lt; </A>]</TD>
3515 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC40"> &gt; </A>]</TD>
3516 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &lt;&lt; </A>]</TD>
3517 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> Up </A>]</TD>
3518 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &gt;&gt; </A>]</TD>
3519 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
3520 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
3521 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
3522 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
3523 </TR></TABLE>
3524 <H2> 6.1 Non-option Arguments </H2>
3525 <!--docid::SEC39::-->
3526 <P>
3527
3528 Syntax files and output device substitutions can be specified on
3529 PSPP's command line:
3530 </P>
3531 <P>
3532
3533 </P>
3534 <DL COMPACT>
3535 <DT><CODE><VAR>file</VAR></CODE>
3536 <DD><P>
3537
3538 A file by itself on the command line will be executed as a syntax file.
3539 PSPP terminates after the syntax file runs, unless the <CODE>-i</CODE> or
3540 <CODE>--interactive</CODE> option is given (see section <A HREF="pspp.html#SEC42">6.4 Language control options</A>).
3541 </P>
3542 <P>
3543
3544 </P>
3545 <DT><CODE><VAR>file1</VAR> <VAR>file2</VAR></CODE>
3546 <DD><P>
3547
3548 When two or more filenames are given on the command line, the first
3549 syntax file is executed, then PSPP's dictionary is cleared, then the second
3550 syntax file is executed.
3551 </P>
3552 <P>
3553
3554 </P>
3555 <DT><CODE><VAR>file1</VAR> + <VAR>file2</VAR></CODE>
3556 <DD><P>
3557
3558 If syntax files' names are delimited by a plus sign (`<SAMP>+</SAMP>'), then the
3559 dictionary is not cleared between their executions, as if they were
3560 concatenated together into a single file.
3561 </P>
3562 <P>
3563
3564 </P>
3565 <DT><CODE><VAR>key</VAR>=<VAR>value</VAR></CODE>
3566 <DD><P>
3567
3568 Defines an output device macro <VAR>key</VAR> to expand to <VAR>value</VAR>,
3569 overriding any macro having the same <VAR>key</VAR> defined in the device
3570 configuration file. See section <A HREF="pspp.html#SEC16">5.5.2 Macro definitions</A>.
3571 </P>
3572 <P>
3573
3574 </DL>
3575 <P>
3576
3577 There is one other way to specify a syntax file, if your operating
3578 system supports it. If you have a syntax file `<TT>foobar.stat</TT>', put
3579 the notation
3580 </P>
3581 <P>
3582
3583 <TABLE><tr><td>&nbsp;</td><td class=example><pre>#! /usr/local/bin/pspp
3584 </pre></td></tr></table><P>
3585
3586 at the top, and mark the file as executable with <CODE>chmod +x
3587 foobar.stat</CODE>. (If PSPP is not installed in `<TT>/usr/local/bin</TT>',
3588 then insert its actual installation directory into the syntax file
3589 instead.) Now you should be able to invoke the syntax file just by
3590 typing its name. You can include any options on the command line as
3591 usual. PSPP entirely ignores any lines beginning with `<SAMP>#!</SAMP>'.
3592 </P>
3593 <P>
3594
3595 <A NAME="Configuration Options"></A>
3596 <HR SIZE="6">
3597 <A NAME="SEC40"></A>
3598 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
3599 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC39"> &lt; </A>]</TD>
3600 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC41"> &gt; </A>]</TD>
3601 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &lt;&lt; </A>]</TD>
3602 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> Up </A>]</TD>
3603 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &gt;&gt; </A>]</TD>
3604 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
3605 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
3606 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
3607 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
3608 </TR></TABLE>
3609 <H2> 6.2 Configuration Options </H2>
3610 <!--docid::SEC40::-->
3611 <P>
3612
3613 Configuration options are used to change PSPP's configuration for the
3614 current run. The configuration options are:
3615 </P>
3616 <P>
3617
3618 </P>
3619 <DL COMPACT>
3620 <DT><CODE>-B <VAR>dir</VAR></CODE>
3621 <DD><DT><CODE>--config-dir=<VAR>dir</VAR></CODE>
3622 <DD><P>
3623
3624 Sets the configuration directory to <VAR>dir</VAR>. See section <A HREF="pspp.html#SEC7">5.1 Locating configuration files</A>.
3625 </P>
3626 <P>
3627
3628 </P>
3629 <DT><CODE>-o <VAR>device</VAR></CODE>
3630 <DD><DT><CODE>--device=<VAR>device</VAR></CODE>
3631 <DD><P>
3632
3633 Selects the output device with name <VAR>device</VAR>. If this option is
3634 given more than once, then all devices mentioned are selected. This
3635 option disables all devices besides those mentioned on the command line.
3636 </P>
3637 <P>
3638
3639 </P>
3640 <DT><CODE>-d <VAR>var</VAR>[=<VAR>value</VAR>]</CODE>
3641 <DD><DT><CODE>--define=<VAR>var</VAR>[=<VAR>value</VAR>]</CODE>
3642 <DD><P>
3643
3644 Defines an `environment variable' named <VAR>var</VAR> having the optional
3645 value <VAR>value</VAR> specified. See section <A HREF="pspp.html#SEC11">5.4.1 Values of environment variables</A>.
3646 </P>
3647 <P>
3648
3649 </P>
3650 <DT><CODE>-u <VAR>var</VAR></CODE>
3651 <DD><DT><CODE>--undef=<VAR>var</VAR></CODE>
3652 <DD><P>
3653
3654 Undefines the `environment variable' named <VAR>var</VAR>. See section <A HREF="pspp.html#SEC11">5.4.1 Values of environment variables</A>.
3655 </DL>
3656 <P>
3657
3658 <A NAME="Input and output options"></A>
3659 <HR SIZE="6">
3660 <A NAME="SEC41"></A>
3661 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
3662 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC40"> &lt; </A>]</TD>
3663 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC42"> &gt; </A>]</TD>
3664 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &lt;&lt; </A>]</TD>
3665 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> Up </A>]</TD>
3666 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &gt;&gt; </A>]</TD>
3667 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
3668 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
3669 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
3670 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
3671 </TR></TABLE>
3672 <H2> 6.3 Input and output options </H2>
3673 <!--docid::SEC41::-->
3674 <P>
3675
3676 Input and output options affect how PSPP reads input and writes
3677 output. These are the input and output options:
3678 </P>
3679 <P>
3680
3681 </P>
3682 <DL COMPACT>
3683 <DT><CODE>-f <VAR>file</VAR></CODE>
3684 <DD><DT><CODE>--out-file=<VAR>file</VAR></CODE>
3685 <DD><P>
3686
3687 This overrides the output file name for devices designated as listing
3688 devices. If a file named <VAR>file</VAR> already exists, it is overwritten.
3689 </P>
3690 <P>
3691
3692 </P>
3693 <DT><CODE>-p</CODE>
3694 <DD><DT><CODE>--pipe</CODE>
3695 <DD><P>
3696
3697 Allows PSPP to be used as a filter by causing the syntax file to be
3698 read from stdin and output to be written to stdout. Conflicts with the
3699 <CODE>-f <VAR>file</VAR></CODE> and <CODE>--file=<VAR>file</VAR></CODE> options.
3700 </P>
3701 <P>
3702
3703 </P>
3704 <DT><CODE>-I-</CODE>
3705 <DD><DT><CODE>--no-include</CODE>
3706 <DD><P>
3707
3708 Clears all directories from the include path. This includes all
3709 directories put in the include path by default. See section <A HREF="pspp.html#SEC36">5.9 Miscellaneous configuration</A>.
3710 </P>
3711 <P>
3712
3713 </P>
3714 <DT><CODE>-I <VAR>dir</VAR></CODE>
3715 <DD><DT><CODE>--include=<VAR>dir</VAR></CODE>
3716 <DD><P>
3717
3718 Appends directory <VAR>dir</VAR> to the path that is searched for include
3719 files in PSPP syntax files.
3720 </P>
3721 <P>
3722
3723 </P>
3724 <DT><CODE>-c <VAR>command</VAR></CODE>
3725 <DD><DT><CODE>--command=<VAR>command</VAR></CODE>
3726 <DD><P>
3727
3728 Execute literal command <VAR>command</VAR>. The command is executed before
3729 startup syntax files, if any.
3730 </P>
3731 <P>
3732
3733 </P>
3734 <DT><CODE>--testing-mode</CODE>
3735 <DD><P>
3736
3737 Invoke heuristics to assist with testing PSPP. For use by <CODE>make
3738 check</CODE> and similar scripts.
3739 </DL>
3740 <P>
3741
3742 <A NAME="Language control options"></A>
3743 <HR SIZE="6">
3744 <A NAME="SEC42"></A>
3745 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
3746 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC41"> &lt; </A>]</TD>
3747 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC43"> &gt; </A>]</TD>
3748 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &lt;&lt; </A>]</TD>
3749 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> Up </A>]</TD>
3750 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &gt;&gt; </A>]</TD>
3751 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
3752 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
3753 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
3754 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
3755 </TR></TABLE>
3756 <H2> 6.4 Language control options </H2>
3757 <!--docid::SEC42::-->
3758 <P>
3759
3760 Language control options control how PSPP syntax files are parsed and
3761 interpreted. The available language control options are:
3762 </P>
3763 <P>
3764
3765 </P>
3766 <DL COMPACT>
3767 <DT><CODE>-i</CODE>
3768 <DD><DT><CODE>--interactive</CODE>
3769 <DD><P>
3770
3771 When a syntax file is specified on the command line, PSPP normally
3772 terminates after processing it. Giving this option will cause PSPP to
3773 bring up a command prompt after processing the syntax file.
3774 </P>
3775 <P>
3776
3777 In addition, this forces syntax files to be interpreted in interactive
3778 mode, rather than the default batch mode. See section <A HREF="pspp.html#SEC21">5.5.7 How lines are divided into tokens</A>, for
3779 information on the differences between batch mode and interactive mode
3780 command interpretation.
3781 </P>
3782 <P>
3783
3784 </P>
3785 <DT><CODE>-n</CODE>
3786 <DD><DT><CODE>--edit</CODE>
3787 <DD><DT><CODE>--dry-run</CODE>
3788 <DD><DT><CODE>--just-print</CODE>
3789 <DD><DT><CODE>--recon</CODE>
3790 <DD><P>
3791
3792 Only the syntax of any syntax file specified or of commands entered at
3793 the command line is checked. Transformations are not performed and
3794 procedures are not executed. Not yet implemented.
3795 </P>
3796 <P>
3797
3798 </P>
3799 <DT><CODE>-r</CODE>
3800 <DD><DT><CODE>--no-statrc</CODE>
3801 <DD><P>
3802
3803 Prevents the execution of the PSPP startup syntax file. Not yet
3804 implemented, as startup syntax files aren't, either.
3805 </P>
3806 <P>
3807
3808 </P>
3809 <DT><CODE>-s</CODE>
3810 <DD><DT><CODE>--safer</CODE>
3811 <DD><P>
3812
3813 Disables certain unsafe operations. This includes the <CODE>ERASE</CODE> and
3814 <CODE>HOST</CODE> commands, as well as use of pipes as input and output files.
3815 </DL>
3816 <P>
3817
3818 <A NAME="Informational options"></A>
3819 <HR SIZE="6">
3820 <A NAME="SEC43"></A>
3821 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
3822 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC42"> &lt; </A>]</TD>
3823 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &gt; </A>]</TD>
3824 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &lt;&lt; </A>]</TD>
3825 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> Up </A>]</TD>
3826 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &gt;&gt; </A>]</TD>
3827 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
3828 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
3829 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
3830 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
3831 </TR></TABLE>
3832 <H2> 6.5 Informational options </H2>
3833 <!--docid::SEC43::-->
3834 <P>
3835
3836 Informational options cause information about PSPP to be written to
3837 the terminal. Here are the available options:
3838 </P>
3839 <P>
3840
3841 </P>
3842 <DL COMPACT>
3843 <DT><CODE>-h</CODE>
3844 <DD><DT><CODE>--help</CODE>
3845 <DD><P>
3846
3847 Prints a message describing PSPP command-line syntax and the available
3848 device driver classes, then terminates.
3849 </P>
3850 <P>
3851
3852 </P>
3853 <DT><CODE>-l</CODE>
3854 <DD><DT><CODE>--list</CODE>
3855 <DD><P>
3856
3857 Lists the available device driver classes, then terminates.
3858 </P>
3859 <P>
3860
3861 </P>
3862 <DT><CODE>-V</CODE>
3863 <DD><DT><CODE>--version</CODE>
3864 <DD><P>
3865
3866 Prints a brief message listing PSPP's version, warranties you don't
3867 have, copying conditions and copyright, and e-mail address for bug
3868 reports, then terminates.
3869 </P>
3870 <P>
3871
3872 </P>
3873 <DT><CODE>-v</CODE>
3874 <DD><DT><CODE>--verbose</CODE>
3875 <DD><P>
3876
3877 Increments PSPP's verbosity level. Higher verbosity levels cause
3878 PSPP to display greater amounts of information about what it is
3879 doing. Often useful for debugging PSPP's configuration.
3880 </P>
3881 <P>
3882
3883 This option can be given multiple times to set the verbosity level to
3884 that value. The default verbosity level is 0, in which no informational
3885 messages will be displayed.
3886 </P>
3887 <P>
3888
3889 Higher verbosity levels cause messages to be displayed when the
3890 corresponding events take place.
3891 </P>
3892 <P>
3893
3894 </P>
3895 <DL COMPACT>
3896 <DT>1
3897 <DD><P>
3898
3899 Driver and subsystem initializations.
3900 </P>
3901 <P>
3902
3903 </P>
3904 <DT>2
3905 <DD><P>
3906
3907 Completion of driver initializations. Beginning of driver closings.
3908 </P>
3909 <P>
3910
3911 </P>
3912 <DT>3
3913 <DD><P>
3914
3915 Completion of driver closings.
3916 </P>
3917 <P>
3918
3919 </P>
3920 <DT>4
3921 <DD><P>
3922
3923 Files searched for; success of searches.
3924 </P>
3925 <P>
3926
3927 </P>
3928 <DT>5
3929 <DD><P>
3930
3931 Individual directories included in file searches.
3932 </DL>
3933 <P>
3934
3935 Each verbosity level also includes messages from lower verbosity levels.
3936 </P>
3937 <P>
3938
3939 </DL>
3940 <P>
3941
3942 <A NAME="Language"></A>
3943 <HR SIZE="6">
3944 <A NAME="SEC44"></A>
3945 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
3946 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC43"> &lt; </A>]</TD>
3947 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC45"> &gt; </A>]</TD>
3948 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC38"> &lt;&lt; </A>]</TD>
3949 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
3950 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &gt;&gt; </A>]</TD>
3951 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
3952 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
3953 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
3954 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
3955 </TR></TABLE>
3956 <H1> 7. The PSPP language </H1>
3957 <!--docid::SEC44::-->
3958 <P>
3959
3960 <BLOCKQUOTE>
3961 <STRONG>Please note:</STRONG> PSPP is not even close to completion.
3962 Only a few actual statistical procedures are implemented. PSPP
3963 is a work in progress.
3964 </BLOCKQUOTE>
3965 <P>
3966
3967 This chapter discusses elements common to many PSPP commands.
3968 Later chapters will describe individual commands in detail.
3969 </P>
3970 <P>
3971
3972 <TABLE BORDER="0" CELLSPACING="0">
3973 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Characters combine to form tokens.</TD></TR>
3974 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC46">7.2 Forming commands of tokens</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Tokens combine to form commands.</TD></TR>
3975 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC47">7.3 Types of Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands come in several flavors.</TD></TR>
3976 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC48">7.4 Order of Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands combine to form syntax files.</TD></TR>
3977 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC49">7.5 Handling missing observations</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
3978 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC50">7.6 Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The unit of data storage.</TD></TR>
3979 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC56">7.7 Files Used by PSPP</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Files used by PSPP.</TD></TR>
3980 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How command syntax is described.</TD></TR>
3981 </TABLE>
3982 <P>
3983
3984 <A NAME="Tokens"></A>
3985 <HR SIZE="6">
3986 <A NAME="SEC45"></A>
3987 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
3988 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &lt; </A>]</TD>
3989 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC46"> &gt; </A>]</TD>
3990 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &lt;&lt; </A>]</TD>
3991 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> Up </A>]</TD>
3992 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &gt;&gt; </A>]</TD>
3993 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
3994 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
3995 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
3996 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
3997 </TR></TABLE>
3998 <H2> 7.1 Tokens </H2>
3999 <!--docid::SEC45::-->
4000 <P>
4001
4002 PSPP divides most syntax file lines into series of short chunks
4003 called <EM>tokens</EM>, <EM>lexical elements</EM>, or <EM>lexemes</EM>. These
4004 tokens are then grouped to form commands, each of which tells
4005 PSPP to take some action--read in data, write out data, perform
4006 a statistical procedure, etc. The process of dividing input into tokens
4007 is <EM>tokenization</EM>, or <EM>lexical analysis</EM>. Each type of token is
4008 described below.
4009 </P>
4010 <P>
4011
4012 <A NAME="IDX46"></A>
4013 <A NAME="IDX47"></A>
4014 Tokens must be separated from each other by <EM>delimiters</EM>.
4015 Delimiters include whitespace (spaces, tabs, carriage returns, line
4016 feeds, vertical tabs), punctuation (commas, forward slashes, etc.), and
4017 operators (plus, minus, times, divide, etc.) Note that while whitespace
4018 only separates tokens, other delimiters are tokens in themselves.
4019 </P>
4020 <P>
4021
4022 </P>
4023 <DL COMPACT>
4024 <A NAME="IDX48"></A>
4025 <DT><STRONG>Identifiers</STRONG>
4026 <DD>Identifiers are names that specify variable names, commands, or command
4027 details.
4028 <P>
4029
4030 <UL>
4031 <LI>
4032 The first character in an identifier must be a letter, `<SAMP>#</SAMP>', or
4033 `<SAMP>@</SAMP>'. Some system identifiers begin with `<SAMP>$</SAMP>', but
4034 user-defined variables' names may not begin with `<SAMP>$</SAMP>'.
4035 <P>
4036
4037 </P>
4038 <LI>
4039 The remaining characters in the identifier must be letters, digits, or
4040 one of the following special characters:
4041 <P>
4042
4043 <TABLE><tr><td>&nbsp;</td><td class=example><pre>. _ $ # @
4044 </pre></td></tr></table><P>
4045
4046 </P>
4047 <LI>
4048 <A NAME="IDX49"></A>
4049 <A NAME="IDX50"></A>
4050 Variable names may be any length, but only the first 8 characters are
4051 significant.
4052 <P>
4053
4054 </P>
4055 <LI>
4056 <A NAME="IDX51"></A>
4057 Identifiers are not case-sensitive: <CODE>foobar</CODE>, <CODE>Foobar</CODE>,
4058 <CODE>FooBar</CODE>, <CODE>FOOBAR</CODE>, and <CODE>FoObaR</CODE> are different
4059 representations of the same identifier.
4060 <P>
4061
4062 </P>
4063 <LI>
4064 <A NAME="IDX52"></A>
4065 Identifiers other than variable names may be abbreviated to their first
4066 3 characters if this abbreviation is unambiguous. These identifiers are
4067 often called <EM>keywords</EM>. (Unique abbreviations of more than 3
4068 characters are also accepted: `<SAMP>FRE</SAMP>', `<SAMP>FREQ</SAMP>', and
4069 `<SAMP>FREQUENCIES</SAMP>' are equivalent when the last is a keyword.)
4070 <P>
4071
4072 </P>
4073 <LI>
4074 Whether an identifier is a keyword depends on the context.
4075 <P>
4076
4077 </P>
4078 <LI>
4079 <A NAME="IDX53"></A>
4080 <A NAME="IDX54"></A>
4081 Some keywords are reserved. These keywords may not be used in any
4082 context besides those explicitly described in this manual. The reserved
4083 keywords are:
4084 <P>
4085
4086 <TABLE><tr><td>&nbsp;</td><td class=example><pre>ALL AND BY EQ GE GT LE LT NE NOT OR TO WITH
4087 </pre></td></tr></table><P>
4088
4089 </P>
4090 <LI>
4091 Since keywords are identifiers, all the rules for identifiers apply.
4092 Specifically, they must be delimited as are other identifiers:
4093 <CODE>WITH</CODE> is a reserved keyword, but <CODE>WITHOUT</CODE> is a valid
4094 variable name.
4095 </UL>
4096 <P>
4097
4098 <A NAME="IDX55"></A>
4099 <A NAME="IDX56"></A>
4100 <A NAME="IDX57"></A>
4101 <STRONG>Caution:</STRONG> It is legal to end a variable name with a period, but
4102 <EM>don't do it!</EM> The variable name will be misinterpreted when it is
4103 the final token on a line: <CODE>FOO.</CODE> will be divided into two separate
4104 tokens, `<SAMP>FOO</SAMP>' and `<SAMP>.</SAMP>', the <EM>terminal dot</EM>.
4105 See section <A HREF="pspp.html#SEC46">Forming commands of tokens</A>.
4106 </P>
4107 <P>
4108
4109 </P>
4110 <DT><STRONG>Numbers</STRONG>
4111 <DD><A NAME="IDX58"></A>
4112 <A NAME="IDX59"></A>
4113 <A NAME="IDX60"></A>
4114 Numbers may be specified as integers or reals. Integers are internally
4115 converted into reals. Scientific notation is not supported. Here are
4116 some examples of valid numbers:
4117 <P>
4118
4119 <TABLE><tr><td>&nbsp;</td><td class=example><pre>1234 3.14159265359 .707106781185 8945.
4120 </pre></td></tr></table><P>
4121
4122 <STRONG>Caution:</STRONG> The last example will be interpreted as two tokens,
4123 `<SAMP>8945</SAMP>' and `<SAMP>.</SAMP>', if it is the last token on a line.
4124 </P>
4125 <P>
4126
4127 </P>
4128 <DT><STRONG>Strings</STRONG>
4129 <DD><A NAME="IDX61"></A>
4130 <A NAME="IDX62"></A>
4131 <A NAME="IDX63"></A>
4132 <A NAME="IDX64"></A>
4133 Strings are literal sequences of characters enclosed in pairs of single
4134 quotes (`<SAMP>'</SAMP>') or double quotes (`<SAMP>&quot;</SAMP>').
4135 <P>
4136
4137 <UL>
4138 <LI>
4139 Whitespace and case of letters <EM>are</EM> significant inside strings.
4140 <LI>
4141 Whitespace characters inside a string are not delimiters.
4142 <LI>
4143 To include single-quote characters in a string, enclose the string in
4144 double quotes.
4145 <LI>
4146 To include double-quote characters in a string, enclose the string in
4147 single quotes.
4148 <LI>
4149 It is not possible to put both single- and double-quote characters
4150 inside one string.
4151 </UL>
4152 <P>
4153
4154 </P>
4155 <DT><STRONG>Hexstrings</STRONG>
4156 <DD><A NAME="IDX65"></A>
4157 Hexstrings are string variants that use hex digits to specify
4158 characters.
4159 <P>
4160
4161 <UL>
4162 <LI>
4163 A hexstring may be used anywhere that an ordinary string is allowed.
4164 <P>
4165
4166 </P>
4167 <LI>
4168 <A NAME="IDX66"></A>
4169 <A NAME="IDX67"></A>
4170 A hexstring begins with `<SAMP>X'</SAMP>' or `<SAMP>x'</SAMP>', and ends with `<SAMP>'</SAMP>'.
4171 <P>
4172
4173 <A NAME="IDX68"></A>
4174 </P>
4175 <LI>
4176 No whitespace is allowed between the initial `<SAMP>X</SAMP>' and `<SAMP>'</SAMP>'.
4177 <P>
4178
4179 </P>
4180 <LI>
4181 Double quotes `<SAMP>&quot;</SAMP>' may be used in place of single quotes `<SAMP>'</SAMP>' if
4182 done in both places.
4183 <P>
4184
4185 </P>
4186 <LI>
4187 Each pair of hex digits is internally changed into a single character
4188 with the given value.
4189 <P>
4190
4191 </P>
4192 <LI>
4193 If there is an odd number of hex digits, the missing last digit is
4194 assumed to be `<SAMP>0</SAMP>'.
4195 <P>
4196
4197 </P>
4198 <LI>
4199 <A NAME="IDX69"></A>
4200 <STRONG>Please note:</STRONG> Use of hexstrings is nonportable because the same
4201 numeric values are associated with different glyphs by different
4202 operating systems. Therefore, their use should be confined to syntax
4203 files that will not be widely distributed.
4204 <P>
4205
4206 </P>
4207 <LI>
4208 <A NAME="IDX70"></A>
4209 <A NAME="IDX71"></A>
4210 <A NAME="IDX72"></A>
4211 <STRONG>Please note also:</STRONG> The character with value 00 is reserved for
4212 internal use by PSPP. Its use in strings causes an error and
4213 replacement with a blank space (in ASCII, hex 20, decimal 32).
4214 </UL>
4215 <P>
4216
4217 </P>
4218 <DT><STRONG>Punctuation</STRONG>
4219 <DD><A NAME="IDX73"></A>
4220 Punctuation separates tokens; punctuators are delimiters. These are the
4221 punctuation characters:
4222 <P>
4223
4224 <TABLE><tr><td>&nbsp;</td><td class=example><pre>, / = ( )
4225 </pre></td></tr></table><P>
4226
4227 </P>
4228 <DT><STRONG>Operators</STRONG>
4229 <DD><A NAME="IDX74"></A>
4230 Operators describe mathematical operations. Some operators are delimiters:
4231 <P>
4232
4233 <TABLE><tr><td>&nbsp;</td><td class=example><pre>( ) + - * / **
4234 </pre></td></tr></table><P>
4235
4236 Many of the above operators are also punctuators. Punctuators are
4237 distinguished from operators by context.
4238 </P>
4239 <P>
4240
4241 The other operators are all reserved keywords. None of these are
4242 delimiters:
4243 </P>
4244 <P>
4245
4246 <TABLE><tr><td>&nbsp;</td><td class=example><pre>AND EQ GE GT LE LT NE OR
4247 </pre></td></tr></table><P>
4248
4249 </P>
4250 <DT><STRONG>Terminal Dot</STRONG>
4251 <DD><A NAME="IDX75"></A>
4252 <A NAME="IDX76"></A>
4253 <A NAME="IDX77"></A>
4254 <A NAME="IDX78"></A>
4255 A period (`<SAMP>.</SAMP>') at the end of a line (except for whitespace) is one
4256 type of a <EM>terminal dot</EM>, although not every terminal dot is a
4257 period at the end of a line. See section <A HREF="pspp.html#SEC46">Forming commands of tokens</A>. A period is a terminal dot <EM>only</EM>
4258 when it is at the end of a line; otherwise it is part of a
4259 floating-point number. (A period outside a number in the middle of a
4260 line is an error.)
4261 <P>
4262
4263 <BLOCKQUOTE>
4264 <A NAME="IDX79"></A>
4265 <A NAME="IDX80"></A>
4266 <STRONG>Please note:</STRONG> The character used for the <EM>terminal dot</EM> can
4267 be changed with the SET command. This is strongly discouraged, and
4268 throughout all the remainder of this manual it will be assumed that the
4269 default setting is in effect.
4270 </BLOCKQUOTE>
4271 <P>
4272
4273 </DL>
4274 <P>
4275
4276 <A NAME="Commands"></A>
4277 <HR SIZE="6">
4278 <A NAME="SEC46"></A>
4279 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
4280 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC45"> &lt; </A>]</TD>
4281 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC47"> &gt; </A>]</TD>
4282 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &lt;&lt; </A>]</TD>
4283 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> Up </A>]</TD>
4284 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &gt;&gt; </A>]</TD>
4285 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
4286 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
4287 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
4288 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
4289 </TR></TABLE>
4290 <H2> 7.2 Forming commands of tokens </H2>
4291 <!--docid::SEC46::-->
4292 <P>
4293
4294 <A NAME="IDX81"></A>
4295 <A NAME="IDX82"></A>
4296 <A NAME="IDX83"></A>
4297 </P>
4298 <P>
4299
4300 Most PSPP commands share a common structure, diagrammed below:
4301 </P>
4302 <P>
4303
4304 <TABLE><tr><td>&nbsp;</td><td class=example><pre><VAR>cmd</VAR><small>...</small> [<VAR>sbc</VAR>[=][<VAR>spec</VAR> [[,]<VAR>spec</VAR>]<small>...</small>]] [[/[=][<VAR>spec</VAR> [[,]<VAR>spec</VAR>]<small>...</small>]]<small>...</small>].
4305 </pre></td></tr></table><P>
4306
4307 <A NAME="IDX84"></A>
4308 In the above, rather daunting, expression, pairs of square brackets
4309 (`<SAMP>[ ]</SAMP>') indicate optional elements, and names such as <VAR>cmd</VAR>
4310 indicate parts of the syntax that vary from command to command.
4311 Ellipses (`<SAMP>...</SAMP>') indicate that the preceding part may be repeated
4312 an arbitrary number of times. Let's pick apart what it says above:
4313 </P>
4314 <P>
4315
4316 <UL>
4317 <A NAME="IDX85"></A>
4318 <LI>
4319 A command begins with a command name of one or more keywords, such as
4320 <CODE>FREQUENCIES</CODE>, <CODE>DATA LIST</CODE>, or <CODE>N OF CASES</CODE>. <VAR>cmd</VAR>
4321 may be abbreviated to its first word if that is unambiguous; each word
4322 in <VAR>cmd</VAR> may be abbreviated to a unique prefix of three or more
4323 characters as described above.
4324 <P>
4325
4326 <A NAME="IDX86"></A>
4327 </P>
4328 <LI>
4329 The command name may be followed by one or more <EM>subcommands</EM>:
4330 <P>
4331
4332 <UL>
4333 <LI>
4334 Each subcommand begins with a unique keyword, indicated by <VAR>sbc</VAR>
4335 above. This is analogous to the command name.
4336 <P>
4337
4338 </P>
4339 <LI>
4340 The subcommand name is optionally followed by an equals sign (`<SAMP>=</SAMP>').
4341 <P>
4342
4343 </P>
4344 <LI>
4345 Some subcommands accept a series of one or more specifications
4346 (<VAR>spec</VAR>), optionally separated by commas.
4347 <P>
4348
4349 </P>
4350 <LI>
4351 Each subcommand must be separated from the next (if any) by a forward
4352 slash (`<SAMP>/</SAMP>').
4353 </UL>
4354 <P>
4355
4356 <A NAME="IDX87"></A>
4357 <A NAME="IDX88"></A>
4358 </P>
4359 <LI>
4360 Each command must be terminated with a <EM>terminal dot</EM>.
4361 The terminal dot may be given one of three ways:
4362 <P>
4363
4364 <UL>
4365 <LI>
4366 (most commonly) A period character at the very end of a line, as
4367 described above.
4368 <P>
4369
4370 </P>
4371 <LI>
4372 (only if NULLINE is on: See section <A HREF="pspp.html#SEC166">Setting user preferences</A>, for more
4373 details.) A completely blank line.
4374 <P>
4375
4376 </P>
4377 <LI>
4378 (in batch mode only) Any line that is not indented from the left side of
4379 the page causes a terminal dot to be inserted before that line.
4380 Therefore, each command begins with a line that is flush left, followed
4381 by zero or more lines that are indented one or more characters from the
4382 left margin.
4383 <P>
4384
4385 In batch mode, PSPP will ignore a plus sign, minus sign, or period
4386 (`<SAMP>+</SAMP>', `<SAMP>-</SAMP>', or `<SAMP>.</SAMP>') as the first character in a
4387 line. Any of these characters as the first character on a line will
4388 begin a new command. This allows for visual indentation of a command
4389 without that command being considered part of the previous command.
4390 </P>
4391 <P>
4392
4393 PSPP is in batch mode when it is reading input from a file, rather
4394 than from an interactive user. Note that the other forms of the
4395 terminal dot may also be used in batch mode.
4396 </P>
4397 <P>
4398
4399 Sometimes, one encounters syntax files that are intended to be
4400 interpreted in interactive mode rather than batch mode (for instance,
4401 this can happen if a session log file is used directly as a syntax
4402 file). When this occurs, use the `<SAMP>-i</SAMP>' command line option to force
4403 interpretation in interactive mode (see section <A HREF="pspp.html#SEC42">6.4 Language control options</A>).
4404 </UL>
4405 </UL>
4406 <P>
4407
4408 PSPP ignores empty commands when they are generated by the above
4409 rules. Note that, as a consequence of these rules, each command must
4410 begin on a new line.
4411 </P>
4412 <P>
4413
4414 <A NAME="Types of Commands"></A>
4415 <HR SIZE="6">
4416 <A NAME="SEC47"></A>
4417 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
4418 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC46"> &lt; </A>]</TD>
4419 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC48"> &gt; </A>]</TD>
4420 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &lt;&lt; </A>]</TD>
4421 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> Up </A>]</TD>
4422 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &gt;&gt; </A>]</TD>
4423 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
4424 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
4425 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
4426 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
4427 </TR></TABLE>
4428 <H2> 7.3 Types of Commands </H2>
4429 <!--docid::SEC47::-->
4430 <P>
4431
4432 Commands in PSPP are divided roughly into six categories:
4433 </P>
4434 <P>
4435
4436 </P>
4437 <DL COMPACT>
4438 <DT><STRONG>Utility commands</STRONG>
4439 <DD>Set or display various global options that affect PSPP operations.
4440 May appear anywhere in a syntax file. See section <A HREF="pspp.html#SEC156">Utility commands</A>.
4441 <P>
4442
4443 </P>
4444 <DT><STRONG>File definition commands</STRONG>
4445 <DD>Give instructions for reading data from text files or from special
4446 binary &quot;system files&quot;. Most of these commands discard any previous
4447 data or variables in order to replace it with the new data and
4448 variables. At least one must appear before the first command in any of
4449 the categories below. See section <A HREF="pspp.html#SEC83">9. Data Input and Output</A>.
4450 <P>
4451
4452 </P>
4453 <DT><STRONG>Input program commands</STRONG>
4454 <DD>Though rarely used, these provide powerful tools for reading data files
4455 in arbitrary textual or binary formats. See section <A HREF="pspp.html#SEC94">9.7 INPUT PROGRAM</A>.
4456 <P>
4457
4458 </P>
4459 <DT><STRONG>Transformations</STRONG>
4460 <DD>Perform operations on data and write data to output files. Transformations
4461 are not carried out until a procedure is executed.
4462 <P>
4463
4464 </P>
4465 <DT><STRONG>Restricted transformations</STRONG>
4466 <DD>Same as transformations for most purposes. See section <A HREF="pspp.html#SEC48">7.4 Order of Commands</A>, for a
4467 detailed description of the differences.
4468 <P>
4469
4470 </P>
4471 <DT><STRONG>Procedures</STRONG>
4472 <DD>Analyze data, writing results of analyses to the listing file. Cause
4473 transformations specified earlier in the file to be performed. In a
4474 more general sense, a <EM>procedure</EM> is any command that causes the
4475 active file (the data) to be read.
4476 </DL>
4477 <P>
4478
4479 <A NAME="Order of Commands"></A>
4480 <HR SIZE="6">
4481 <A NAME="SEC48"></A>
4482 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
4483 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC47"> &lt; </A>]</TD>
4484 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC49"> &gt; </A>]</TD>
4485 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &lt;&lt; </A>]</TD>
4486 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> Up </A>]</TD>
4487 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &gt;&gt; </A>]</TD>
4488 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
4489 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
4490 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
4491 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
4492 </TR></TABLE>
4493 <H2> 7.4 Order of Commands </H2>
4494 <!--docid::SEC48::-->
4495 <P>
4496
4497 PSPP does not place many restrictions on ordering of commands.
4498 The main restriction is that variables must be defined with one of the
4499 file-definition commands before they are otherwise referred to.
4500 </P>
4501 <P>
4502
4503 Of course, there are specific rules, for those who are interested.
4504 PSPP possesses five internal states, called initial, INPUT
4505 PROGRAM, FILE TYPE, transformation, and procedure states. (Please note
4506 the distinction between the INPUT PROGRAM and FILE TYPE <EM>commands</EM>
4507 and the INPUT PROGRAM and FILE TYPE <EM>states</EM>.)
4508 </P>
4509 <P>
4510
4511 PSPP starts up in the initial state. Each successful completion
4512 of a command may cause a state transition. Each type of command has its
4513 own rules for state transitions:
4514 </P>
4515 <P>
4516
4517 </P>
4518 <DL COMPACT>
4519 <DT><STRONG>Utility commands</STRONG>
4520 <DD><UL>
4521 <LI>
4522 Legal in all states, except Pennsylvania.
4523 <LI>
4524 Do not cause state transitions. Exception: when the N OF CASES command
4525 is executed in the procedure state, it causes a transition to the
4526 transformation state.
4527 </UL>
4528 <P>
4529
4530 </P>
4531 <DT><STRONG>DATA LIST</STRONG>
4532 <DD><UL>
4533 <LI>
4534 Legal in all states.
4535 <LI>
4536 When executed in the initial or procedure state, causes a transition to
4537 the transformation state.
4538 <LI>
4539 Clears the active file if executed in the procedure or transformation
4540 state.
4541 </UL>
4542 <P>
4543
4544 </P>
4545 <DT><STRONG>INPUT PROGRAM</STRONG>
4546 <DD><UL>
4547 <LI>
4548 Invalid in INPUT PROGRAM and FILE TYPE states.
4549 <LI>
4550 Causes a transition to the INPUT PROGRAM state.
4551 <LI>
4552 Clears the active file.
4553 </UL>
4554 <P>
4555
4556 </P>
4557 <DT><STRONG>FILE TYPE</STRONG>
4558 <DD><UL>
4559 <LI>
4560 Invalid in INPUT PROGRAM and FILE TYPE states.
4561 <LI>
4562 Causes a transition to the FILE TYPE state.
4563 <LI>
4564 Clears the active file.
4565 </UL>
4566 <P>
4567
4568 </P>
4569 <DT><STRONG>Other file definition commands</STRONG>
4570 <DD><UL>
4571 <LI>
4572 Invalid in INPUT PROGRAM and FILE TYPE states.
4573 <LI>
4574 Cause a transition to the transformation state.
4575 <LI>
4576 Clear the active file, except for ADD FILES, MATCH FILES, and UPDATE.
4577 </UL>
4578 <P>
4579
4580 </P>
4581 <DT><STRONG>Transformations</STRONG>
4582 <DD><UL>
4583 <LI>
4584 Invalid in initial and FILE TYPE states.
4585 <LI>
4586 Cause a transition to the transformation state.
4587 </UL>
4588 <P>
4589
4590 </P>
4591 <DT><STRONG>Restricted transformations</STRONG>
4592 <DD><UL>
4593 <LI>
4594 Invalid in initial, INPUT PROGRAM, and FILE TYPE states.
4595 <LI>
4596 Cause a transition to the transformation state.
4597 </UL>
4598 <P>
4599
4600 </P>
4601 <DT><STRONG>Procedures</STRONG>
4602 <DD><UL>
4603 <LI>
4604 Invalid in initial, INPUT PROGRAM, and FILE TYPE states.
4605 <LI>
4606 Cause a transition to the procedure state.
4607 </UL>
4608 </DL>
4609 <P>
4610
4611 <A NAME="Missing Observations"></A>
4612 <HR SIZE="6">
4613 <A NAME="SEC49"></A>
4614 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
4615 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC48"> &lt; </A>]</TD>
4616 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC50"> &gt; </A>]</TD>
4617 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &lt;&lt; </A>]</TD>
4618 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> Up </A>]</TD>
4619 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &gt;&gt; </A>]</TD>
4620 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
4621 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
4622 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
4623 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
4624 </TR></TABLE>
4625 <H2> 7.5 Handling missing observations </H2>
4626 <!--docid::SEC49::-->
4627 <P>
4628
4629 PSPP includes special support for unknown numeric data values.
4630 Missing observations are assigned a special value, called the
4631 <EM>system-missing value</EM>. This &quot;value&quot; actually indicates the
4632 absence of value; it means that the actual value is unknown. Procedures
4633 automatically exclude from analyses those observations or cases that
4634 have missing values. Whether single observations or entire cases are
4635 excluded depends on the procedure.
4636 </P>
4637 <P>
4638
4639 The system-missing value exists only for numeric variables. String
4640 variables always have a defined value, even if it is only a string of
4641 spaces.
4642 </P>
4643 <P>
4644
4645 Variables, whether numeric or string, can have designated
4646 <EM>user-missing values</EM>. Every user-missing value is an actual value
4647 for that variable. However, most of the time user-missing values are
4648 treated in the same way as the system-missing value. String variables
4649 that are wider than a certain width, usually 8 characters (depending on
4650 computer architecture), cannot have user-missing values.
4651 </P>
4652 <P>
4653
4654 For more information on missing values, see the following sections:
4655 <A HREF="pspp.html#SEC50">7.6 Variables</A>, <A HREF="pspp.html#SEC119">11.6 MISSING VALUES</A>, <A HREF="pspp.html#SEC58">8. Mathematical Expressions</A>. See also the
4656 documentation on individual procedures for information on how they
4657 handle missing values.
4658 </P>
4659 <P>
4660
4661 <A NAME="Variables"></A>
4662 <HR SIZE="6">
4663 <A NAME="SEC50"></A>
4664 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
4665 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC49"> &lt; </A>]</TD>
4666 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC51"> &gt; </A>]</TD>
4667 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &lt;&lt; </A>]</TD>
4668 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> Up </A>]</TD>
4669 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &gt;&gt; </A>]</TD>
4670 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
4671 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
4672 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
4673 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
4674 </TR></TABLE>
4675 <H2> 7.6 Variables </H2>
4676 <!--docid::SEC50::-->
4677 <P>
4678
4679 Variables are the basic unit of data storage in PSPP. All the
4680 variables in a file taken together, apart from any associated data, are
4681 said to form a <EM>dictionary</EM>. Each case contain a value for each
4682 variable. Some details of variables are described in the sections
4683 below.
4684 </P>
4685 <P>
4686
4687 <TABLE BORDER="0" CELLSPACING="0">
4688 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC51">7.6.1 Attributes of Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Attributes of variables.</TD></TR>
4689 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC52">7.6.2 Variables Automatically Defined by PSPP</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables automatically defined by PSPP.</TD></TR>
4690 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC53">7.6.3 Lists of variable names</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
4691 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC54">7.6.4 Input and Output Formats</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Input and output formats.</TD></TR>
4692 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC55">7.6.5 Scratch Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables deleted by procedures.</TD></TR>
4693 </TABLE>
4694 <P>
4695
4696 <A NAME="Attributes"></A>
4697 <HR SIZE="6">
4698 <A NAME="SEC51"></A>
4699 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
4700 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC50"> &lt; </A>]</TD>
4701 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC52"> &gt; </A>]</TD>
4702 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &lt;&lt; </A>]</TD>
4703 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC50"> Up </A>]</TD>
4704 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &gt;&gt; </A>]</TD>
4705 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
4706 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
4707 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
4708 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
4709 </TR></TABLE>
4710 <H3> 7.6.1 Attributes of Variables </H3>
4711 <!--docid::SEC51::-->
4712 Each variable has a number of attributes, including:
4713 <P>
4714
4715 </P>
4716 <DL COMPACT>
4717 <DT><STRONG>Name</STRONG>
4718 <DD>This is an identifier. Each variable must have a different name.
4719 See section <A HREF="pspp.html#SEC45">7.1 Tokens</A>.
4720 <P>
4721
4722 <A NAME="IDX89"></A>
4723 <A NAME="IDX90"></A>
4724 </P>
4725 <DT><STRONG>Type</STRONG>
4726 <DD>Numeric or string.
4727 <P>
4728
4729 <A NAME="IDX91"></A>
4730 <A NAME="IDX92"></A>
4731 </P>
4732 <DT><STRONG>Width</STRONG>
4733 <DD>(string variables only) String variables with a width of 8 characters or
4734 fewer are called <EM>short string variables</EM>. Short string variables
4735 can be used in many procedures where <EM>long string variables</EM> (those
4736 with widths greater than 8) are not allowed.
4737 <P>
4738
4739 <BLOCKQUOTE>
4740 <STRONG>Please note:</STRONG> Certain systems may consider strings longer than 8
4741 characters to be short strings. Eight characters represents a minimum
4742 figure for the maximum length of a short string.
4743 </BLOCKQUOTE>
4744 <P>
4745
4746 </P>
4747 <DT><STRONG>Position</STRONG>
4748 <DD>Variables in the dictionary are arranged in a specific order. The
4749 DISPLAY command can be used to show this order: see <A HREF="pspp.html#SEC115">11.2 DISPLAY</A>.
4750 <P>
4751
4752 </P>
4753 <DT><STRONG>Orientation</STRONG>
4754 <DD>Dexter or sinister. See section <A HREF="pspp.html#SEC118">11.5 LEAVE</A>.
4755 <P>
4756
4757 <A NAME="IDX93"></A>
4758 <A NAME="IDX94"></A>
4759 </P>
4760 <DT><STRONG>Missing values</STRONG>
4761 <DD>Optionally, up to three values, or a range of values, or a specific
4762 value plus a range, can be specified as <EM>user-missing values</EM>.
4763 There is also a <EM>system-missing value</EM> that is assigned to an
4764 observation when there is no other obvious value for that observation.
4765 Observations with missing values are automatically excluded from
4766 analyses. User-missing values are actual data values, while the
4767 system-missing value is not a value at all. See section <A HREF="pspp.html#SEC49">7.5 Handling missing observations</A>.
4768 <P>
4769
4770 <A NAME="IDX95"></A>
4771 <A NAME="IDX96"></A>
4772 </P>
4773 <DT><STRONG>Variable label</STRONG>
4774 <DD>A string that describes the variable. See section <A HREF="pspp.html#SEC126">11.13 VARIABLE LABELS</A>.
4775 <P>
4776
4777 <A NAME="IDX97"></A>
4778 <A NAME="IDX98"></A>
4779 </P>
4780 <DT><STRONG>Value label</STRONG>
4781 <DD>Optionally, these associate each possible value of the variable with a
4782 string. See section <A HREF="pspp.html#SEC124">11.11 VALUE LABELS</A>.
4783 <P>
4784
4785 <A NAME="IDX99"></A>
4786 </P>
4787 <DT><STRONG>Print format</STRONG>
4788 <DD>Display width, format, and (for numeric variables) number of decimal
4789 places. This attribute does not affect how data are stored, just how
4790 they are displayed. Example: a width of 8, with 2 decimal places.
4791 See section <A HREF="pspp.html#SEC122">11.9 PRINT FORMATS</A>.
4792 <P>
4793
4794 <A NAME="IDX100"></A>
4795 </P>
4796 <DT><STRONG>Write format</STRONG>
4797 <DD>Similar to print format, but used by certain commands that are
4798 designed to write to binary files. See section <A HREF="pspp.html#SEC128">11.15 WRITE FORMATS</A>.
4799 </DL>
4800 <P>
4801
4802 <A NAME="System Variables"></A>
4803 <HR SIZE="6">
4804 <A NAME="SEC52"></A>
4805 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
4806 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC51"> &lt; </A>]</TD>
4807 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC53"> &gt; </A>]</TD>
4808 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &lt;&lt; </A>]</TD>
4809 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC50"> Up </A>]</TD>
4810 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &gt;&gt; </A>]</TD>
4811 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
4812 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
4813 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
4814 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
4815 </TR></TABLE>
4816 <H3> 7.6.2 Variables Automatically Defined by PSPP </H3>
4817 <!--docid::SEC52::-->
4818 <P>
4819
4820 There are seven system variables. These are not like ordinary
4821 variables, as they are not stored in each case. They can only be used
4822 in expressions. These system variables, whose values and output formats
4823 cannot be modified, are described below.
4824 </P>
4825 <P>
4826
4827 </P>
4828 <DL COMPACT>
4829 <A NAME="IDX101"></A>
4830 <DT><CODE>$CASENUM</CODE>
4831 <DD>Case number of the case at the moment. This changes as cases are
4832 shuffled around.
4833 <P>
4834
4835 <A NAME="IDX102"></A>
4836 </P>
4837 <DT><CODE>$DATE</CODE>
4838 <DD>Date the PSPP process was started, in format A9, following the
4839 pattern <CODE>DD MMM YY</CODE>.
4840 <P>
4841
4842 <A NAME="IDX103"></A>
4843 </P>
4844 <DT><CODE>$JDATE</CODE>
4845 <DD>Number of days between 15 Oct 1582 and the time the PSPP process
4846 was started.
4847 <P>
4848
4849 <A NAME="IDX104"></A>
4850 </P>
4851 <DT><CODE>$LENGTH</CODE>
4852 <DD>Page length, in lines, in format F11.
4853 <P>
4854
4855 <A NAME="IDX105"></A>
4856 </P>
4857 <DT><CODE>$SYSMIS</CODE>
4858 <DD>System missing value, in format F1.
4859 <P>
4860
4861 <A NAME="IDX106"></A>
4862 </P>
4863 <DT><CODE>$TIME</CODE>
4864 <DD>Number of seconds between midnight 14 Oct 1582 and the time the active file
4865 was read, in format F20.
4866 <P>
4867
4868 <A NAME="IDX107"></A>
4869 </P>
4870 <DT><CODE>$WIDTH</CODE>
4871 <DD>Page width, in characters, in format F3.
4872 </DL>
4873 <P>
4874
4875 <A NAME="Sets of Variables"></A>
4876 <HR SIZE="6">
4877 <A NAME="SEC53"></A>
4878 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
4879 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC52"> &lt; </A>]</TD>
4880 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC54"> &gt; </A>]</TD>
4881 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &lt;&lt; </A>]</TD>
4882 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC50"> Up </A>]</TD>
4883 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &gt;&gt; </A>]</TD>
4884 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
4885 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
4886 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
4887 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
4888 </TR></TABLE>
4889 <H3> 7.6.3 Lists of variable names </H3>
4890 <!--docid::SEC53::-->
4891 <P>
4892
4893 There are several ways to specify a set of variables:
4894 </P>
4895 <P>
4896
4897 <OL>
4898 <LI>
4899 (Most commonly.) List the variable names one after another, optionally
4900 separating them by commas.
4901 <P>
4902
4903 <A NAME="IDX108"></A>
4904 </P>
4905 <LI>
4906 (This method cannot be used on commands that define the dictionary, such
4907 as <CODE>DATA LIST</CODE>.) The syntax is the names of two existed variables,
4908 separated by the reserved keyword <CODE>TO</CODE>. The meaning is to include
4909 every variable in the dictionary between and including the variables
4910 specified. For instance, if the dictionary contains six variables with
4911 the names <CODE>ID</CODE>, <CODE>X1</CODE>, <CODE>X2</CODE>, <CODE>GOAL</CODE>, <CODE>MET</CODE>, and
4912 <CODE>NEXTGOAL</CODE>, in that order, then <CODE>X2 TO MET</CODE> would include
4913 variables <CODE>X2</CODE>, <CODE>GOAL</CODE>, and <CODE>MET</CODE>.
4914 <P>
4915
4916 </P>
4917 <LI>
4918 (This method can be used only on commands that define the dictionary,
4919 such as <CODE>DATA LIST</CODE>.) It is used to define sequences of variables
4920 that end in consecutive integers. The syntax is two identifiers that
4921 end in numbers. This method is best illustrated with examples:
4922 <P>
4923
4924 <UL>
4925 <LI>
4926 The syntax <CODE>X1 TO X5</CODE> defines 5 variables:
4927 <P>
4928
4929 <UL>
4930 <LI>
4931 X1
4932 <LI>
4933 X2
4934 <LI>
4935 X3
4936 <LI>
4937 X4
4938 <LI>
4939 X5
4940 </UL>
4941 <P>
4942
4943 </P>
4944 <LI>
4945 The syntax <CODE>ITEM0008 TO ITEM0013</CODE> defines 6 variables:
4946 <P>
4947
4948 <UL>
4949 <LI>
4950 ITEM0008
4951 <LI>
4952 ITEM0009
4953 <LI>
4954 ITEM0010
4955 <LI>
4956 ITEM0011
4957 <LI>
4958 ITEM0012
4959 <LI>
4960 ITEM0013
4961 </UL>
4962 <P>
4963
4964 </P>
4965 <LI>
4966 Each of the syntaxes <CODE>QUES001 TO QUES9</CODE> and <CODE>QUES6 TO QUES3</CODE>
4967 are invalid, although for different reasons, which should be evident.
4968 </UL>
4969 <P>
4970
4971 Note that after a set of variables has been defined on <CODE>DATA LIST</CODE>
4972 or another command with this method, the same set can be referenced on
4973 later commands using the same syntax.
4974 </P>
4975 <P>
4976
4977 </P>
4978 <LI>
4979 The above methods can be combined, either one after another or delimited
4980 by commas. For instance, the combined syntax <CODE>A Q5 TO Q8 X TO Z</CODE>
4981 is legal as long as each part <CODE>A</CODE>, <CODE>Q5 TO Q8</CODE>, <CODE>X TO Z</CODE>
4982 is individually legal.
4983 </OL>
4984 <P>
4985
4986 <A NAME="Input/Output Formats"></A>
4987 <HR SIZE="6">
4988 <A NAME="SEC54"></A>
4989 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
4990 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC53"> &lt; </A>]</TD>
4991 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC55"> &gt; </A>]</TD>
4992 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &lt;&lt; </A>]</TD>
4993 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC50"> Up </A>]</TD>
4994 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &gt;&gt; </A>]</TD>
4995 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
4996 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
4997 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
4998 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
4999 </TR></TABLE>
5000 <H3> 7.6.4 Input and Output Formats </H3>
5001 <!--docid::SEC54::-->
5002 <P>
5003
5004 Data that PSPP inputs and outputs must have one of a number of formats.
5005 These formats are described, in general, by a format specification of
5006 the form <CODE>NAMEw.d</CODE>, where <VAR>name</VAR> is the
5007 format name and <VAR>w</VAR> is a field width. <VAR>d</VAR> is the optional
5008 desired number of decimal places, if appropriate. If <VAR>d</VAR> is not
5009 included then it is assumed to be 0. Some formats do not allow <VAR>d</VAR>
5010 to be specified.
5011 </P>
5012 <P>
5013
5014 When an input format is specified on DATA LIST or another command, then
5015 it is converted to an output format for the purposes of PRINT and other
5016 data output commands. For most purposes, input and output formats are
5017 the same; the salient differences are described below.
5018 </P>
5019 <P>
5020
5021 Below are listed the input and output formats supported by PSPP. If an
5022 input format is mapped to a different output format by default, then
5023 that mapping is indicated with =>. Each format has the listed
5024 bounds on input width (iw) and output width (ow).
5025 </P>
5026 <P>
5027
5028 The standard numeric input and output formats are given in the following
5029 table:
5030 </P>
5031 <P>
5032
5033 </P>
5034 <DL COMPACT>
5035 <DT>Fw.d: 1 &lt;= iw,ow &lt;= 40
5036 <DD>Standard decimal format with <VAR>d</VAR> decimal places. If the number is
5037 too large to fit within the field width, it is expressed in scientific
5038 notation (<CODE>1.2+34</CODE>) if w &gt;= 6, with always at least two digits in
5039 the exponent. When used as an input format, scientific notation is
5040 allowed but an E or an F must be used to introduce the exponent.
5041 <P>
5042
5043 The default output format is the same as the input format, except if
5044 <VAR>d</VAR> &gt; 1. In that case the output <VAR>w</VAR> is always made to be at
5045 least 2 + <VAR>d</VAR>.
5046 </P>
5047 <P>
5048
5049 </P>
5050 <DT>Ew.d: 1 &lt;= iw &lt;= 40; 6 &lt;= ow &lt;= 40
5051 <DD>For input this is equivalent to F format except that no E or F is
5052 require to introduce the exponent. For output, produces scientific
5053 notation in the form <CODE>1.2+34</CODE>. There are always at least two
5054 digits given in the exponent.
5055 <P>
5056
5057 The default output <VAR>w</VAR> is the largest of the input <VAR>w</VAR>, the
5058 input <VAR>d</VAR> + 7, and 10. The default output <VAR>d</VAR> is the input
5059 <VAR>d</VAR>, but at least 3.
5060 </P>
5061 <P>
5062
5063 </P>
5064 <DT>COMMAw.d: 1 &lt;= iw,ow &lt;= 40
5065 <DD>Equivalent to F format, except that groups of three digits are
5066 comma-separated on output. If the number is too large to express in the
5067 field width, then first commas are eliminated, then if there is still
5068 not enough space the number is expressed in scientific notation given
5069 that w &gt;= 6. Commas are allowed and ignored when this is used as an
5070 input format.
5071 <P>
5072
5073 </P>
5074 <DT>DOTw.d: 1 &lt;= iw,ow &lt;= 40
5075 <DD>Equivalent to COMMA format except that the roles of comma and decimal
5076 point are interchanged. However: If SET /DECIMAL=DOT is in effect, then
5077 COMMA uses `<SAMP>,</SAMP>' for a decimal point and DOT uses `<SAMP>.</SAMP>' for a
5078 decimal point.
5079 <P>
5080
5081 </P>
5082 <DT>DOLLARw.d: 1 &lt;= iw &lt;= 40; 2 &lt;= ow &lt;= 40
5083 <DD>Equivalent to COMMA format, except that the number is prefixed by a
5084 dollar sign (`<SAMP>$</SAMP>') if there is room. On input the value is allowed
5085 to be prefixed by a dollar sign, which is ignored.
5086 <P>
5087
5088 The default output <VAR>w</VAR> is the input <VAR>w</VAR>, but at least 2.
5089 </P>
5090 <P>
5091
5092 </P>
5093 <DT>PCTw.d: 2 &lt;= iw,ow &lt;= 40
5094 <DD>Equivalent to F format, except that the number is suffixed by a percent
5095 sign (`<SAMP>%</SAMP>') if there is room. On input the value is allowed to be
5096 suffixed by a percent sign, which is ignored.
5097 <P>
5098
5099 The default output <VAR>w</VAR> is the input <VAR>w</VAR>, but at least 2.
5100 </P>
5101 <P>
5102
5103 </P>
5104 <DT>Nw.d: 1 &lt;= iw,ow &lt;= 40
5105 <DD>Only digits are allowed within the field width. The decimal point is
5106 assumed to be <VAR>d</VAR> digits from the right margin.
5107 <P>
5108
5109 The default output format is F with the same <VAR>w</VAR> and <VAR>d</VAR>, except
5110 if <VAR>d</VAR> &gt; 1. In that case the output <VAR>w</VAR> is always made to be at
5111 least 2 + <VAR>d</VAR>.
5112 </P>
5113 <P>
5114
5115 </P>
5116 <DT>Zw.d => F: 1 &lt;= iw,ow &lt;= 40
5117 <DD>Zoned decimal input. If you need to use this then you know how.
5118 <P>
5119
5120 </P>
5121 <DT>IBw.d => F: 1 &lt;= iw,ow &lt;= 8
5122 <DD>Integer binary format. The field is interpreted as a fixed-point
5123 positive or negative binary number in two's-complement notation. The
5124 location of the decimal point is implied. Endianness is the same as the
5125 host machine.
5126 <P>
5127
5128 The default output format is F8.2 if <VAR>d</VAR> is 0. Otherwise it is F,
5129 with output <VAR>w</VAR> as 9 + input <VAR>d</VAR> and output <VAR>d</VAR> as input
5130 <VAR>d</VAR>.
5131 </P>
5132 <P>
5133
5134 </P>
5135 <DT>PIB => F: 1 &lt;= iw,ow &lt;= 8
5136 <DD>Positive integer binary format. The field is interpreted as a
5137 fixed-point positive binary number. The location of the decimal point
5138 is implied. Endianness is teh same as the host machine.
5139 <P>
5140
5141 The default output format follows the rules for IB format.
5142 </P>
5143 <P>
5144
5145 </P>
5146 <DT>Pw.d => F: 1 &lt;= iw,ow &lt;= 16
5147 <DD>Binary coded decimal format. Each byte from left to right, except the
5148 rightmost, represents two digits. The upper nibble of each byte is more
5149 significant. The upper nibble of the final byte is the least
5150 significant digit. The lower nibble of the final byte is the sign; a
5151 value of D represents a negative sign and all other values are
5152 considered positive. The decimal point is implied.
5153 <P>
5154
5155 The default output format follows the rules for IB format.
5156 </P>
5157 <P>
5158
5159 </P>
5160 <DT>PKw.d => F: 1 &lt;= iw,ow &lt;= 16
5161 <DD>Positive binary code decimal format. Same as P but the last byte is the
5162 same as the others.
5163 <P>
5164
5165 The default output format follows the rules for IB format.
5166 </P>
5167 <P>
5168
5169 </P>
5170 <DT>RBw => F: 2 &lt;= iw,ow &lt;= 8
5171 <DD><P>
5172
5173 Binary C architecture-dependent &quot;double&quot; format. For a standard
5174 IEEE754 implementation <VAR>w</VAR> should be 8.
5175 </P>
5176 <P>
5177
5178 The default output format follows the rules for IB format.
5179 </P>
5180 <P>
5181
5182 </P>
5183 <DT>PIBHEXw.d => F: 2 &lt;= iw,ow &lt;= 16
5184 <DD>PIB format encoded as textual hex digit pairs. <VAR>w</VAR> must be even.
5185 <P>
5186
5187 The input width is mapped to a default output width as follows:
5188 2=>4, 4=>6, 6=>9, 8=>11, 10=>14,
5189 12=>16, 14=>18, 16=>21. No allowances are made for
5190 decimal places.
5191 </P>
5192 <P>
5193
5194 </P>
5195 <DT>RBHEXw => F: 4 &lt;= iw,ow &lt;= 16
5196 <DD><P>
5197
5198 RB format encoded as textual hex digits pairs. <VAR>w</VAR> must be even.
5199 </P>
5200 <P>
5201
5202 The default output format is F8.2.
5203 </P>
5204 <P>
5205
5206 </P>
5207 <DT>CCAw.d: 1 &lt;= ow &lt;= 40
5208 <DD><DT>CCBw.d: 1 &lt;= ow &lt;= 40
5209 <DD><DT>CCCw.d: 1 &lt;= ow &lt;= 40
5210 <DD><DT>CCDw.d: 1 &lt;= ow &lt;= 40
5211 <DD><DT>CCEw.d: 1 &lt;= ow &lt;= 40
5212 <DD><P>
5213
5214 User-defined custom currency formats. May not be used as an input
5215 format. See section <A HREF="pspp.html#SEC166">16.10 SET</A>, for more details.
5216 </DL>
5217 <P>
5218
5219 The date and time numeric input and output formats accept a number of
5220 possible formats. Before describing the formats themselves, some
5221 definitions of the elements that make up their formats will be helpful:
5222 </P>
5223 <P>
5224
5225 </P>
5226 <DL COMPACT>
5227 <DT><EM>leader</EM>
5228 <DD>All formats accept an optional whitespace leader.
5229 <P>
5230
5231 </P>
5232 <DT><EM>day</EM>
5233 <DD>An integer between 1 and 31 representing the day of month.
5234 <P>
5235
5236 </P>
5237 <DT><EM>day-count</EM>
5238 <DD>An integer representing a number of days.
5239 <P>
5240
5241 </P>
5242 <DT><EM>date-delimiter</EM>
5243 <DD>One or more characters of whitespace or the following characters:
5244 <CODE>- / . ,</CODE>
5245 <P>
5246
5247 </P>
5248 <DT><EM>month</EM>
5249 <DD>A month name in one of the following forms:
5250 <UL>
5251 <LI>
5252 An integer between 1 and 12.
5253 <LI>
5254 Roman numerals representing an integer between 1 and 12.
5255 <LI>
5256 At least the first three characters of an English month name (January,
5257 February, <small>...</small>).
5258 </UL>
5259 <P>
5260
5261 </P>
5262 <DT><EM>year</EM>
5263 <DD>An integer year number between 1582 and 19999, or between 1 and 199.
5264 Years between 1 and 199 will have 1900 added.
5265 <P>
5266
5267 </P>
5268 <DT><EM>julian</EM>
5269 <DD>A single number with a year number in the first 2, 3, or 4 digits (as
5270 above) and the day number within the year in the last 3 digits.
5271 <P>
5272
5273 </P>
5274 <DT><EM>quarter</EM>
5275 <DD>An integer between 1 and 4 representing a quarter.
5276 <P>
5277
5278 </P>
5279 <DT><EM>q-delimiter</EM>
5280 <DD>The letter `<SAMP>Q</SAMP>' or `<SAMP>q</SAMP>'.
5281 <P>
5282
5283 </P>
5284 <DT><EM>week</EM>
5285 <DD>An integer between 1 and 53 representing a week within a year.
5286 <P>
5287
5288 </P>
5289 <DT><EM>wk-delimiter</EM>
5290 <DD>The letters `<SAMP>wk</SAMP>' in any case.
5291 <P>
5292
5293 </P>
5294 <DT><EM>time-delimiter</EM>
5295 <DD>At least one characters of whitespace or `<SAMP>:</SAMP>' or `<SAMP>.</SAMP>'.
5296 <P>
5297
5298 </P>
5299 <DT><EM>hour</EM>
5300 <DD>An integer greater than 0 representing an hour.
5301 <P>
5302
5303 </P>
5304 <DT><EM>minute</EM>
5305 <DD>An integer between 0 and 59 representing a minute within an hour.
5306 <P>
5307
5308 </P>
5309 <DT><EM>opt-second</EM>
5310 <DD>Optionally, a time-delimiter followed by a real number representing a
5311 number of seconds.
5312 <P>
5313
5314 </P>
5315 <DT><EM>hour24</EM>
5316 <DD>An integer between 0 and 23 representing an hour within a day.
5317 <P>
5318
5319 </P>
5320 <DT><EM>weekday</EM>
5321 <DD>At least the first two characters of an English day word.
5322 <P>
5323
5324 </P>
5325 <DT><EM>spaces</EM>
5326 <DD>Any amount or no amount of whitespace.
5327 <P>
5328
5329 </P>
5330 <DT><EM>sign</EM>
5331 <DD>An optional positive or negative sign.
5332 <P>
5333
5334 </P>
5335 <DT><EM>trailer</EM>
5336 <DD>All formats accept an optional whitespace trailer.
5337 </DL>
5338 <P>
5339
5340 The date input formats are strung together from the above pieces. On
5341 output, the date formats are always printed in a single canonical
5342 manner, based on field width. The date input and output formats are
5343 described below:
5344 </P>
5345 <P>
5346
5347 </P>
5348 <DL COMPACT>
5349 <DT>DATEw: 9 &lt;= iw,ow &lt;= 40
5350 <DD>Date format. Input format: leader + day + date-delimiter +
5351 month + date-delimiter + year + trailer. Output format: DD-MMM-YY for
5352 <VAR>w</VAR> &lt; 11, DD-MMM-YYYY otherwise.
5353 <P>
5354
5355 </P>
5356 <DT>EDATEw: 8 &lt;= iw,ow &lt;= 40
5357 <DD>European date format. Input format same as DATE. Output format:
5358 DD.MM.YY for <VAR>w</VAR> &lt; 10, DD.MM.YYYY otherwise.
5359 <P>
5360
5361 </P>
5362 <DT>SDATEw: 8 &lt;= iw,ow &lt;= 40
5363 <DD>Standard date format. Input format: leader + year + date-delimiter +
5364 month + date-delimiter + day + trailer. Output format: YY/MM/DD for
5365 <VAR>w</VAR> &lt; 10, YYYY/MM/DD otherwise.
5366 <P>
5367
5368 </P>
5369 <DT>ADATEw: 8 &lt;= iw,ow &lt;= 40
5370 <DD>American date format. Input format: leader + month + date-delimiter +
5371 day + date-delimiter + year + trailer. Output format: MM/DD/YY for
5372 <VAR>w</VAR> &lt; 10, MM/DD/YYYY otherwise.
5373 <P>
5374
5375 </P>
5376 <DT>JDATEw: 5 &lt;= iw,ow &lt;= 40
5377 <DD>Julian date format. Input format: leader + julian + trailer. Output
5378 format: YYDDD for <VAR>w</VAR> &lt; 7, YYYYDDD otherwise.
5379 <P>
5380
5381 </P>
5382 <DT>QYRw: 4 &lt;= iw &lt;= 40, 6 &lt;= ow &lt;= 40
5383 <DD>Quarter/year format. Input format: leader + quarter + q-delimiter +
5384 year + trailer. Output format: `<SAMP>Q Q YY</SAMP>', where the first
5385 `<SAMP>Q</SAMP>' is one of the digits 1, 2, 3, 4, if <VAR>w</VAR> &lt; 8, <CODE>Q Q
5386 YYYY</CODE> otherwise.
5387 <P>
5388
5389 </P>
5390 <DT>MOYRw: 6 &lt;= iw,ow &lt;= 40
5391 <DD>Month/year format. Input format: leader + month + date-delimiter + year
5392 + trailer. Output format: `<SAMP>MMM YY</SAMP>' for <VAR>w</VAR> &lt; 8, `<SAMP>MMM
5393 YYYY</SAMP>' otherwise.
5394 <P>
5395
5396 </P>
5397 <DT>WKYRw: 6 &lt;= iw &lt;= 40, 8 &lt;= ow &lt;= 40
5398 <DD>Week/year format. Input format: leader + week + wk-delimiter + year +
5399 trailer. Output format: `<SAMP>WW WK YY</SAMP>' for <VAR>w</VAR> &lt; 10, `<SAMP>WW WK
5400 YYYY</SAMP>' otherwise.
5401 <P>
5402
5403 </P>
5404 <DT>DATETIMEw.d: 17 &lt;= iw,ow &lt;= 40
5405 <DD>Date and time format. Input format: leader + day + date-delimiter +
5406 month + date-delimiter + yaer + time-delimiter + hour24 + time-delimiter
5407 + minute + opt-second. Output format: `<SAMP>DD-MMM-YYYY HH:MM</SAMP>'. If
5408 <VAR>w</VAR> &gt; 19 then seconds `<SAMP>:SS</SAMP>' is added. If <VAR>w</VAR> &gt; 22 and
5409 <VAR>d</VAR> &gt; 0 then fractional seconds `<SAMP>.SS</SAMP>' are added.
5410 <P>
5411
5412 </P>
5413 <DT>TIMEw.d: 5 &lt;= iw,ow &lt;= 40
5414 <DD>Time format. Input format: leader + sign + spaces + hour +
5415 time-delimiter + minute + opt-second. Output format: `<SAMP>HH:MM</SAMP>'.
5416 Seconds and fractional seconds are available with <VAR>w</VAR> of at least 8
5417 and 10, respectively.
5418 <P>
5419
5420 </P>
5421 <DT>DTIMEw.d: 1 &lt;= iw &lt;= 40, 8 &lt;= ow &lt;= 40
5422 <DD>Time format with day count. Input format: leader + sign + spaces +
5423 day-count + time-delimiter + hour + time-delimiter + minute +
5424 opt-second. Output format: `<SAMP>DD HH:MM</SAMP>'. Seconds and fractional
5425 seconds are available with <VAR>w</VAR> of at least 8 and 10, respectively.
5426 <P>
5427
5428 </P>
5429 <DT>WKDAYw: 2 &lt;= iw,ow &lt;= 40
5430 <DD>A weekday as a number between 1 and 7, where 1 is Sunday. Input format:
5431 leader + weekday + trailer. Output format: as many characters, in all
5432 capital letters, of the English name of the weekday as will fit in the
5433 field width.
5434 <P>
5435
5436 </P>
5437 <DT>MONTHw: 3 &lt;= iw,ow &lt;= 40
5438 <DD>A month as a number between 1 and 12, where 1 is January. Input format:
5439 leader + month + trailer. Output format: as many character, in all
5440 capital letters, of the English name of the month as will fit in the
5441 field width.
5442 </DL>
5443 <P>
5444
5445 There are only two formats that may be used with string variables:
5446 </P>
5447 <P>
5448
5449 </P>
5450 <DL COMPACT>
5451 <DT>Aw: 1 &lt;= iw &lt;= 255, 1 &lt;= ow &lt;= 254
5452 <DD>The entire field is treated as a string value.
5453 <P>
5454
5455 </P>
5456 <DT>AHEXw => A: 2 &lt;= iw &lt;= 254; 2 &lt;= ow &lt;= 510
5457 <DD>The field is composed of characters in a string encoded as textual hex
5458 digit pairs.
5459 <P>
5460
5461 The default output <VAR>w</VAR> is half the input <VAR>w</VAR>.
5462 </DL>
5463 <P>
5464
5465 <A NAME="Scratch Variables"></A>
5466 <HR SIZE="6">
5467 <A NAME="SEC55"></A>
5468 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
5469 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC54"> &lt; </A>]</TD>
5470 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC56"> &gt; </A>]</TD>
5471 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &lt;&lt; </A>]</TD>
5472 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC50"> Up </A>]</TD>
5473 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &gt;&gt; </A>]</TD>
5474 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
5475 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
5476 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
5477 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
5478 </TR></TABLE>
5479 <H3> 7.6.5 Scratch Variables </H3>
5480 <!--docid::SEC55::-->
5481 <P>
5482
5483 Most of the time, variables don't retain their values between cases.
5484 Instead, either they're being read from a data file or the active file,
5485 in which case they assume the value read, or, if created with COMPUTE or
5486 another transformation, they're initialized to the system-missing value
5487 or to blanks, depending on type.
5488 </P>
5489 <P>
5490
5491 However, sometimes it's useful to have a variable that keeps its value
5492 between cases. You can do this with LEAVE (see section <A HREF="pspp.html#SEC118">11.5 LEAVE</A>), or you can
5493 use a <EM>scratch variable</EM>. Scratch variables are variables whose
5494 names begin with an octothorpe (`<SAMP>#</SAMP>').
5495 </P>
5496 <P>
5497
5498 Scratch variables have the same properties as variables left with LEAVE:
5499 they retain their values between cases, and for the first case they are
5500 initialized to 0 or blanks. They have the additional property that they
5501 are deleted before the execution of any procedure. For this reason,
5502 scratch variables can't be used for analysis. To obtain the same
5503 effect, use COMPUTE (see section <A HREF="pspp.html#SEC132">12.3 COMPUTE</A>) to copy the scratch variable's
5504 value into an ordinary variable, then analysis that variable.
5505 </P>
5506 <P>
5507
5508 <A NAME="Files"></A>
5509 <HR SIZE="6">
5510 <A NAME="SEC56"></A>
5511 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
5512 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC55"> &lt; </A>]</TD>
5513 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC57"> &gt; </A>]</TD>
5514 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &lt;&lt; </A>]</TD>
5515 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> Up </A>]</TD>
5516 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &gt;&gt; </A>]</TD>
5517 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
5518 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
5519 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
5520 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
5521 </TR></TABLE>
5522 <H2> 7.7 Files Used by PSPP </H2>
5523 <!--docid::SEC56::-->
5524 <P>
5525
5526 PSPP makes use of many files each time it runs. Some of these it
5527 reads, some it writes, some it creates. Here is a table listing the
5528 most important of these files:
5529 </P>
5530 <P>
5531
5532 </P>
5533 <DL COMPACT>
5534 <A NAME="IDX109"></A>
5535 <A NAME="IDX110"></A>
5536 <A NAME="IDX111"></A>
5537 <A NAME="IDX112"></A>
5538 <DT><STRONG>command file</STRONG>
5539 <DD><DT><STRONG>syntax file</STRONG>
5540 <DD>These names (synonyms) refer to the file that contains instructions to
5541 PSPP that tell it what to do. The syntax file's name is specified on
5542 the PSPP command line. Syntax files can also be pulled in with the
5543 <CODE>INCLUDE</CODE> command.
5544 <P>
5545
5546 <A NAME="IDX113"></A>
5547 <A NAME="IDX114"></A>
5548 </P>
5549 <DT><STRONG>data file</STRONG>
5550 <DD>Data files contain raw data in ASCII format suitable for being read in
5551 by the <CODE>DATA LIST</CODE> command. Data can be embedded in the syntax
5552 file with <CODE>BEGIN DATA</CODE> and <CODE>END DATA</CODE> commands: this makes the
5553 syntax file a data file too.
5554 <P>
5555
5556 <A NAME="IDX115"></A>
5557 <A NAME="IDX116"></A>
5558 </P>
5559 <DT><STRONG>listing file</STRONG>
5560 <DD>One or more output files are created by PSPP each time it is
5561 run. The output files receive the tables and charts produced by
5562 statistical procedures. The output files may be in any number of formats,
5563 depending on how PSPP is configured.
5564 <P>
5565
5566 <A NAME="IDX117"></A>
5567 <A NAME="IDX118"></A>
5568 </P>
5569 <DT><STRONG>active file</STRONG>
5570 <DD>The active file is the &quot;file&quot; on which all PSPP procedures
5571 are performed. The active file contains variable definitions and
5572 cases. The active file is not necessarily a disk file: it is stored
5573 in memory if there is room.
5574 </DL>
5575 <P>
5576
5577 <A NAME="BNF"></A>
5578 <HR SIZE="6">
5579 <A NAME="SEC57"></A>
5580 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
5581 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC56"> &lt; </A>]</TD>
5582 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &gt; </A>]</TD>
5583 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &lt;&lt; </A>]</TD>
5584 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> Up </A>]</TD>
5585 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &gt;&gt; </A>]</TD>
5586 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
5587 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
5588 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
5589 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
5590 </TR></TABLE>
5591 <H2> 7.8 Backus-Naur Form </H2>
5592 <!--docid::SEC57::-->
5593 <P>
5594
5595 The syntax of some parts of the PSPP language is presented in this
5596 manual using the formalism known as <EM>Backus-Naur Form</EM>, or BNF. The
5597 following table describes BNF:
5598 </P>
5599 <P>
5600
5601 <UL>
5602 <A NAME="IDX119"></A>
5603 <A NAME="IDX120"></A>
5604 <LI>
5605 Words in all-uppercase are PSPP keyword tokens. In BNF, these are
5606 often called <EM>terminals</EM>. There are some special terminals, which
5607 are actually written in lowercase for clarity:
5608 <P>
5609
5610 </P>
5611 <DL COMPACT>
5612 <A NAME="IDX121"></A>
5613 <DT><CODE>number</CODE>
5614 <DD>A real number.
5615 <P>
5616
5617 <A NAME="IDX122"></A>
5618 </P>
5619 <DT><CODE>integer</CODE>
5620 <DD>An integer number.
5621 <P>
5622
5623 <A NAME="IDX123"></A>
5624 </P>
5625 <DT><CODE>string</CODE>
5626 <DD>A string.
5627 <P>
5628
5629 <A NAME="IDX124"></A>
5630 </P>
5631 <DT><CODE>var-name</CODE>
5632 <DD>A single variable name.
5633 <P>
5634
5635 <A NAME="IDX125"></A>
5636 <A NAME="IDX126"></A>
5637 </P>
5638 <DT><CODE>=</CODE>, <CODE>/</CODE>, <CODE>+</CODE>, <CODE>-</CODE>, etc.
5639 <DD>Operators and punctuators.
5640 <P>
5641
5642 <A NAME="IDX127"></A>
5643 <A NAME="IDX128"></A>
5644 <A NAME="IDX129"></A>
5645 </P>
5646 <DT><CODE>.</CODE>
5647 <DD>The terminal dot. This is not necessarily an actual dot in the syntax
5648 file: See section <A HREF="pspp.html#SEC46">7.2 Forming commands of tokens</A>, for more details.
5649 </DL>
5650 <P>
5651
5652 </P>
5653 <LI>
5654 <A NAME="IDX130"></A>
5655 <A NAME="IDX131"></A>
5656 Other words in all lowercase refer to BNF definitions, called
5657 <EM>productions</EM>. These productions are also known as
5658 <EM>nonterminals</EM>. Some nonterminals are very common, so they are
5659 defined here in English for clarity:
5660 <P>
5661
5662 </P>
5663 <DL COMPACT>
5664 <A NAME="IDX132"></A>
5665 <DT><CODE>var-list</CODE>
5666 <DD>A list of one or more variable names or the keyword <CODE>ALL</CODE>.
5667 <P>
5668
5669 <A NAME="IDX133"></A>
5670 </P>
5671 <DT><CODE>expression</CODE>
5672 <DD>An expression. See section <A HREF="pspp.html#SEC58">8. Mathematical Expressions</A>, for details.
5673 </DL>
5674 <P>
5675
5676 </P>
5677 <LI>
5678 <A NAME="IDX134"></A>
5679 <A NAME="IDX135"></A>
5680 <A NAME="IDX136"></A>
5681 `<SAMP>::=</SAMP>' means &quot;is defined as&quot;. The left side of `<SAMP>::=</SAMP>' gives
5682 the name of the nonterminal being defined. The right side of `<SAMP>::=</SAMP>'
5683 gives the definition of that nonterminal. If the right side is empty,
5684 then one possible expansion of that nonterminal is nothing. A BNF
5685 definition is called a <EM>production</EM>.
5686 <P>
5687
5688 </P>
5689 <LI>
5690 <A NAME="IDX137"></A>
5691 So, the key difference between a terminal and a nonterminal is that a
5692 terminal cannot be broken into smaller parts--in fact, every terminal
5693 is a single token (see section <A HREF="pspp.html#SEC45">7.1 Tokens</A>). On the other hand, nonterminals are
5694 composed of a (possibly empty) sequence of terminals and nonterminals.
5695 Thus, terminals indicate the deepest level of syntax description. (In
5696 parsing theory, terminals are the leaves of the parse tree; nonterminals
5697 form the branches.)
5698 <P>
5699
5700 </P>
5701 <LI>
5702 <A NAME="IDX138"></A>
5703 <A NAME="IDX139"></A>
5704 The first nonterminal defined in a set of productions is called the
5705 <EM>start symbol</EM>. The start symbol defines the entire syntax for
5706 that command.
5707 </UL>
5708 <P>
5709
5710 <A NAME="Expressions"></A>
5711 <HR SIZE="6">
5712 <A NAME="SEC58"></A>
5713 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
5714 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC57"> &lt; </A>]</TD>
5715 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC59"> &gt; </A>]</TD>
5716 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC44"> &lt;&lt; </A>]</TD>
5717 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
5718 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
5719 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
5720 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
5721 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
5722 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
5723 </TR></TABLE>
5724 <H1> 8. Mathematical Expressions </H1>
5725 <!--docid::SEC58::-->
5726 <P>
5727
5728 Some PSPP commands use expressions, which share a common syntax
5729 among all PSPP commands. Expressions are made up of
5730 <EM>operands</EM>, which can be numbers, strings, or variable names,
5731 separated by <EM>operators</EM>. There are five types of operators:
5732 grouping, arithmetic, logical, relational, and functions.
5733 </P>
5734 <P>
5735
5736 Every operator takes one or more <EM>arguments</EM> as input and produces
5737 or <EM>returns</EM> exactly one result as output. Both strings and numeric
5738 values can be used as arguments and are produced as results, but each
5739 operator accepts only specific combinations of numeric and string values
5740 as arguments. With few exceptions, operator arguments may be
5741 full-fledged expressions in themselves.
5742 </P>
5743 <P>
5744
5745 <TABLE BORDER="0" CELLSPACING="0">
5746 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC59">8.1 Boolean values</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
5747 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC60">8.2 Missing Values in Expressions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Using missing values in expressions.</TD></TR>
5748 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC61">8.3 Grouping Operators</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">( )</TD></TR>
5749 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC62">8.4 Arithmetic Operators</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">+ - * / **</TD></TR>
5750 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">AND NOT OR</TD></TR>
5751 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">EQ GE GT LE LT NE</TD></TR>
5752 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC65">8.7 Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">More-sophisticated operators.</TD></TR>
5753 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC82">8.8 Operator Precedence</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Operator precedence.</TD></TR>
5754 </TABLE>
5755 <P>
5756
5757 <A NAME="Booleans"></A>
5758 <HR SIZE="6">
5759 <A NAME="SEC59"></A>
5760 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
5761 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt; </A>]</TD>
5762 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC60"> &gt; </A>]</TD>
5763 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
5764 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> Up </A>]</TD>
5765 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
5766 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
5767 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
5768 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
5769 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
5770 </TR></TABLE>
5771 <H2> 8.1 Boolean values </H2>
5772 <!--docid::SEC59::-->
5773 <P>
5774
5775 There is a third type for arguments and results, the <EM>Boolean</EM> type,
5776 which is used to represent true/false conditions. Booleans have only
5777 three possible values: 0 (false), 1 (true), and system-missing.
5778 System-missing is neither true or false.
5779 </P>
5780 <P>
5781
5782 <UL>
5783 <LI>
5784 A numeric expression that has value 0, 1, or system-missing may be used
5785 in place of a Boolean. Thus, the expression <CODE>0 AND 1</CODE> is valid
5786 (although it is always true).
5787 <P>
5788
5789 </P>
5790 <LI>
5791 A numeric expression with any other value will cause an error if it is
5792 used as a Boolean. So, <CODE>2 OR 3</CODE> is invalid.
5793 <P>
5794
5795 </P>
5796 <LI>
5797 A Boolean expression may not be used in place of a numeric expression.
5798 Thus, <CODE>(1&gt;2) + (3&lt;4)</CODE> is invalid.
5799 <P>
5800
5801 </P>
5802 <LI>
5803 Strings and Booleans are not compatible, and neither may be used in
5804 place of the other.
5805 </UL>
5806 <P>
5807
5808 <A NAME="Missing Values in Expressions"></A>
5809 <HR SIZE="6">
5810 <A NAME="SEC60"></A>
5811 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
5812 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC59"> &lt; </A>]</TD>
5813 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC61"> &gt; </A>]</TD>
5814 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
5815 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> Up </A>]</TD>
5816 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
5817 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
5818 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
5819 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
5820 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
5821 </TR></TABLE>
5822 <H2> 8.2 Missing Values in Expressions </H2>
5823 <!--docid::SEC60::-->
5824 <P>
5825
5826 String missing values are not treated specially in expressions. Most
5827 numeric operators return system-missing when given system-missing
5828 arguments. Exceptions are listed under particular operator
5829 descriptions.
5830 </P>
5831 <P>
5832
5833 User-missing values for numeric variables are always transformed into
5834 the system-missing value, except inside the arguments to the
5835 <CODE>VALUE</CODE>, <CODE>SYSMIS</CODE>, and <CODE>MISSING</CODE> functions.
5836 </P>
5837 <P>
5838
5839 The missing-value functions can be used to precisely control how missing
5840 values are treated in expressions. See section <A HREF="pspp.html#SEC69">8.7.4 Missing-Value Functions</A>, for
5841 more details.
5842 </P>
5843 <P>
5844
5845 <A NAME="Grouping Operators"></A>
5846 <HR SIZE="6">
5847 <A NAME="SEC61"></A>
5848 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
5849 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC60"> &lt; </A>]</TD>
5850 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC62"> &gt; </A>]</TD>
5851 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
5852 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> Up </A>]</TD>
5853 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
5854 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
5855 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
5856 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
5857 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
5858 </TR></TABLE>
5859 <H2> 8.3 Grouping Operators </H2>
5860 <!--docid::SEC61::-->
5861 <P>
5862
5863 Parentheses (`<SAMP>()</SAMP>') are the grouping operators. Surround an
5864 expression with parentheses to force early evaluation.
5865 </P>
5866 <P>
5867
5868 Parentheses also surround the arguments to functions, but in that
5869 situation they act as punctuators, not as operators.
5870 </P>
5871 <P>
5872
5873 <A NAME="Arithmetic Operators"></A>
5874 <HR SIZE="6">
5875 <A NAME="SEC62"></A>
5876 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
5877 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC61"> &lt; </A>]</TD>
5878 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC63"> &gt; </A>]</TD>
5879 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
5880 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> Up </A>]</TD>
5881 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
5882 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
5883 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
5884 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
5885 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
5886 </TR></TABLE>
5887 <H2> 8.4 Arithmetic Operators </H2>
5888 <!--docid::SEC62::-->
5889 <P>
5890
5891 The arithmetic operators take numeric arguments and produce numeric
5892 results.
5893 </P>
5894 <P>
5895
5896 </P>
5897 <DL COMPACT>
5898 <A NAME="IDX140"></A>
5899 <A NAME="IDX141"></A>
5900 <DT><CODE><VAR>a</VAR> + <VAR>b</VAR></CODE>
5901 <DD>Adds <VAR>a</VAR> and <VAR>b</VAR>, returning the sum.
5902 <P>
5903
5904 <A NAME="IDX142"></A>
5905 <A NAME="IDX143"></A>
5906 </P>
5907 <DT><CODE><VAR>a</VAR> - <VAR>b</VAR></CODE>
5908 <DD>Subtracts <VAR>b</VAR> from <VAR>a</VAR>, returning the difference.
5909 <P>
5910
5911 <A NAME="IDX144"></A>
5912 <A NAME="IDX145"></A>
5913 </P>
5914 <DT><CODE><VAR>a</VAR> * <VAR>b</VAR></CODE>
5915 <DD>Multiplies <VAR>a</VAR> and <VAR>b</VAR>, returning the product.
5916 <P>
5917
5918 <A NAME="IDX146"></A>
5919 <A NAME="IDX147"></A>
5920 </P>
5921 <DT><CODE><VAR>a</VAR> / <VAR>b</VAR></CODE>
5922 <DD>Divides <VAR>a</VAR> by <VAR>b</VAR>, returning the quotient. If <VAR>b</VAR> is
5923 zero, the result is system-missing.
5924 <P>
5925
5926 <A NAME="IDX148"></A>
5927 <A NAME="IDX149"></A>
5928 </P>
5929 <DT><CODE><VAR>a</VAR> ** <VAR>b</VAR></CODE>
5930 <DD>Returns the result of raising <VAR>a</VAR> to the power <VAR>b</VAR>. If
5931 <VAR>a</VAR> is negative and <VAR>b</VAR> is not an integer, the result is
5932 system-missing. The result of <CODE>0**0</CODE> is system-missing as well.
5933 <P>
5934
5935 <A NAME="IDX150"></A>
5936 <A NAME="IDX151"></A>
5937 </P>
5938 <DT><CODE>- <VAR>a</VAR></CODE>
5939 <DD>Reverses the sign of <VAR>a</VAR>.
5940 </DL>
5941 <P>
5942
5943 <A NAME="Logical Operators"></A>
5944 <HR SIZE="6">
5945 <A NAME="SEC63"></A>
5946 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
5947 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC62"> &lt; </A>]</TD>
5948 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC64"> &gt; </A>]</TD>
5949 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
5950 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> Up </A>]</TD>
5951 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
5952 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
5953 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
5954 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
5955 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
5956 </TR></TABLE>
5957 <H2> 8.5 Logical Operators </H2>
5958 <!--docid::SEC63::-->
5959 <P>
5960
5961 <A NAME="IDX152"></A>
5962 <A NAME="IDX153"></A>
5963 <A NAME="IDX154"></A>
5964 <A NAME="IDX155"></A>
5965 <A NAME="IDX156"></A>
5966 The logical operators take logical arguments and produce logical
5967 results, meaning &quot;true or false&quot;. PSPP logical operators are
5968 not true Boolean operators because they may also result in a
5969 system-missing value.
5970 </P>
5971 <P>
5972
5973 </P>
5974 <DL COMPACT>
5975 <A NAME="IDX157"></A>
5976 <A NAME="IDX158"></A>
5977 <A NAME="IDX159"></A>
5978 <A NAME="IDX160"></A>
5979 <DT><CODE><VAR>a</VAR> AND <VAR>b</VAR></CODE>
5980 <DD><DT><CODE><VAR>a</VAR> &amp; <VAR>b</VAR></CODE>
5981 <DD>True if both <VAR>a</VAR> and <VAR>b</VAR> are true. However, if one argument is
5982 false and the other is missing, the result is false, not missing. If
5983 both arguments are missing, the result is missing.
5984 <P>
5985
5986 <A NAME="IDX161"></A>
5987 <A NAME="IDX162"></A>
5988 <A NAME="IDX163"></A>
5989 <A NAME="IDX164"></A>
5990 </P>
5991 <DT><CODE><VAR>a</VAR> OR <VAR>b</VAR></CODE>
5992 <DD><DT><CODE><VAR>a</VAR> | <VAR>b</VAR></CODE>
5993 <DD>True if at least one of <VAR>a</VAR> and <VAR>b</VAR> is true. If one argument is
5994 true and the other is missing, the result is true, not missing. If both
5995 arguments are missing, the result is missing.
5996 <P>
5997
5998 <A NAME="IDX165"></A>
5999 <A NAME="IDX166"></A>
6000 <A NAME="IDX167"></A>
6001 <A NAME="IDX168"></A>
6002 </P>
6003 <DT><CODE>NOT <VAR>a</VAR></CODE>
6004 <DD><DT><CODE>~ <VAR>a</VAR></CODE>
6005 <DD>True if <VAR>a</VAR> is false.
6006 </DL>
6007 <P>
6008
6009 <A NAME="Relational Operators"></A>
6010 <HR SIZE="6">
6011 <A NAME="SEC64"></A>
6012 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
6013 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC63"> &lt; </A>]</TD>
6014 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC65"> &gt; </A>]</TD>
6015 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
6016 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> Up </A>]</TD>
6017 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
6018 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
6019 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
6020 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
6021 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
6022 </TR></TABLE>
6023 <H2> 8.6 Relational Operators </H2>
6024 <!--docid::SEC64::-->
6025 <P>
6026
6027 The relational operators take numeric or string arguments and produce Boolean
6028 results.
6029 </P>
6030 <P>
6031
6032 Note that, with numeric arguments, PSPP does not make exact
6033 relational tests. Instead, two numbers are considered to be equal even
6034 if they differ by a small amount. This amount, <EM>epsilon</EM>, is
6035 dependent on the PSPP configuration and determined at compile
6036 time. (The default value is 0.000000001, or
6037 <CODE>10**(-9)</CODE>.)
6038 Use of epsilon allows for round-off errors. Use of epsilon is also
6039 idiotic, but the author is not a numeric analyst.
6040 </P>
6041 <P>
6042
6043 Strings cannot be compared to numbers. When strings of different
6044 lengths are compared, the shorter string is right-padded with spaces
6045 to match the length of the longer string.
6046 </P>
6047 <P>
6048
6049 The results of string comparisons, other than tests for equality or
6050 inequality, are dependent on the character set in use. String
6051 comparisons are case-sensitive.
6052 </P>
6053 <P>
6054
6055 </P>
6056 <DL COMPACT>
6057 <A NAME="IDX169"></A>
6058 <A NAME="IDX170"></A>
6059 <A NAME="IDX171"></A>
6060 <A NAME="IDX172"></A>
6061 <DT><CODE><VAR>a</VAR> EQ <VAR>b</VAR></CODE>
6062 <DD><DT><CODE><VAR>a</VAR> = <VAR>b</VAR></CODE>
6063 <DD>True if <VAR>a</VAR> is equal to <VAR>b</VAR>.
6064 <P>
6065
6066 <A NAME="IDX173"></A>
6067 <A NAME="IDX174"></A>
6068 <A NAME="IDX175"></A>
6069 </P>
6070 <DT><CODE><VAR>a</VAR> LE <VAR>b</VAR></CODE>
6071 <DD><DT><CODE><VAR>a</VAR> &lt;= <VAR>b</VAR></CODE>
6072 <DD>True if <VAR>a</VAR> is less than or equal to <VAR>b</VAR>.
6073 <P>
6074
6075 <A NAME="IDX176"></A>
6076 <A NAME="IDX177"></A>
6077 <A NAME="IDX178"></A>
6078 </P>
6079 <DT><CODE><VAR>a</VAR> LT <VAR>b</VAR></CODE>
6080 <DD><DT><CODE><VAR>a</VAR> &lt; <VAR>b</VAR></CODE>
6081 <DD>True if <VAR>a</VAR> is less than <VAR>b</VAR>.
6082 <P>
6083
6084 <A NAME="IDX179"></A>
6085 <A NAME="IDX180"></A>
6086 <A NAME="IDX181"></A>
6087 </P>
6088 <DT><CODE><VAR>a</VAR> GE <VAR>b</VAR></CODE>
6089 <DD><DT><CODE><VAR>a</VAR> &gt;= <VAR>b</VAR></CODE>
6090 <DD>True if <VAR>a</VAR> is greater than or equal to <VAR>b</VAR>.
6091 <P>
6092
6093 <A NAME="IDX182"></A>
6094 <A NAME="IDX183"></A>
6095 <A NAME="IDX184"></A>
6096 </P>
6097 <DT><CODE><VAR>a</VAR> GT <VAR>b</VAR></CODE>
6098 <DD><DT><CODE><VAR>a</VAR> &gt; <VAR>b</VAR></CODE>
6099 <DD>True if <VAR>a</VAR> is greater than <VAR>b</VAR>.
6100 <P>
6101
6102 <A NAME="IDX185"></A>
6103 <A NAME="IDX186"></A>
6104 <A NAME="IDX187"></A>
6105 <A NAME="IDX188"></A>
6106 <A NAME="IDX189"></A>
6107 </P>
6108 <DT><CODE><VAR>a</VAR> NE <VAR>b</VAR></CODE>
6109 <DD><DT><CODE><VAR>a</VAR> ~= <VAR>b</VAR></CODE>
6110 <DD><DT><CODE><VAR>a</VAR> &lt;&gt; <VAR>b</VAR></CODE>
6111 <DD>True is <VAR>a</VAR> is not equal to <VAR>b</VAR>.
6112 </DL>
6113 <P>
6114
6115 <A NAME="Functions"></A>
6116 <HR SIZE="6">
6117 <A NAME="SEC65"></A>
6118 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
6119 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC64"> &lt; </A>]</TD>
6120 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC66"> &gt; </A>]</TD>
6121 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
6122 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> Up </A>]</TD>
6123 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
6124 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
6125 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
6126 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
6127 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
6128 </TR></TABLE>
6129 <H2> 8.7 Functions </H2>
6130 <!--docid::SEC65::-->
6131 <P>
6132
6133 <A NAME="IDX190"></A>
6134 <A NAME="IDX191"></A>
6135 <A NAME="IDX192"></A>
6136 <A NAME="IDX193"></A>
6137 <A NAME="IDX194"></A>
6138 <A NAME="IDX195"></A>
6139 PSPP functions provide mathematical abilities above and beyond
6140 those possible using simple operators. Functions have a common
6141 syntax: each is composed of a function name followed by a left
6142 parenthesis, one or more arguments, and a right parenthesis. Function
6143 names are <STRONG>not</STRONG> reserved; their names are specially treated
6144 only when followed by a left parenthesis: <CODE>EXP(10)</CODE> refers to the
6145 constant value <CODE>e</CODE> raised to the 10th power, but <CODE>EXP</CODE> by
6146 itself refers to the value of variable EXP.
6147 </P>
6148 <P>
6149
6150 The sections below describe each function in detail.
6151 </P>
6152 <P>
6153
6154 <TABLE BORDER="0" CELLSPACING="0">
6155 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC66">8.7.1 Advanced Mathematical Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">EXP LG10 LN SQRT</TD></TR>
6156 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC67">8.7.2 Miscellaneous Mathematical Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">ABS MOD MOD10 RND TRUNC</TD></TR>
6157 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">ACOS ARCOS ARSIN ARTAN ASIN ATAN COS SIN TAN</TD></TR>
6158 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC69">8.7.4 Missing-Value Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">MISSING NMISS NVALID SYSMIS VALUE</TD></TR>
6159 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC70">8.7.5 Pseudo-Random Number Generation Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">NORMAL UNIFORM</TD></TR>
6160 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC71">8.7.6 Set-Membership Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">ANY RANGE</TD></TR>
6161 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">CFVAR MAX MEAN MIN SD SUM VARIANCE</TD></TR>
6162 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">CONCAT INDEX LENGTH LOWER LPAD LTRIM NUMBER
6163 RINDEX RPAD RTRIM STRING SUBSTR UPCASE</TD></TR>
6164 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC74">8.7.9 Time &amp; Date Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">CTIME.xxx DATE.xxx TIME.xxx XDATE.xxx</TD></TR>
6165 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC80">8.7.10 Miscellaneous Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">LAG YRMODA</TD></TR>
6166 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC81">8.7.11 Functions Not Implemented</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">CDF.xxx CDFNORM IDF.xxx NCDF.xxx PROBIT RV.xxx</TD></TR>
6167 </TABLE>
6168 <P>
6169
6170 <A NAME="Advanced Mathematics"></A>
6171 <HR SIZE="6">
6172 <A NAME="SEC66"></A>
6173 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
6174 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC65"> &lt; </A>]</TD>
6175 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC67"> &gt; </A>]</TD>
6176 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
6177 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC65"> Up </A>]</TD>
6178 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
6179 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
6180 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
6181 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
6182 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
6183 </TR></TABLE>
6184 <H3> 8.7.1 Advanced Mathematical Functions </H3>
6185 <!--docid::SEC66::-->
6186 <P>
6187
6188 Advanced mathematical functions take numeric arguments and produce
6189 numeric results.
6190 </P>
6191 <P>
6192
6193 <A NAME="IDX196"></A>
6194 </P>
6195 <DL>
6196 <DT><U>Function:</U> <B>EXP</B> <I>(<VAR>exponent</VAR>)</I>
6197 <DD>Returns <I>e</I> (approximately 2.71828) raised to power <VAR>exponent</VAR>.
6198 </DL>
6199 <P>
6200
6201 <A NAME="IDX197"></A>
6202 <A NAME="IDX198"></A>
6203 </P>
6204 <DL>
6205 <DT><U>Function:</U> <B>LG10</B> <I>(<VAR>number</VAR>)</I>
6206 <DD>Takes the base-10 logarithm of <VAR>number</VAR>. If <VAR>number</VAR> is
6207 not positive, the result is system-missing.
6208 </DL>
6209 <P>
6210
6211 <A NAME="IDX199"></A>
6212 </P>
6213 <DL>
6214 <DT><U>Function:</U> <B>LN</B> <I>(<VAR>number</VAR>)</I>
6215 <DD>Takes the base-`<SAMP>e</SAMP>' logarithm of <VAR>number</VAR>. If <VAR>number</VAR> is
6216 not positive, the result is system-missing.
6217 </DL>
6218 <P>
6219
6220 <A NAME="IDX200"></A>
6221 <A NAME="IDX201"></A>
6222 </P>
6223 <DL>
6224 <DT><U>Function:</U> <B>SQRT</B> <I>(<VAR>number</VAR>)</I>
6225 <DD>Takes the square root of <VAR>number</VAR>. If <VAR>number</VAR> is negative,
6226 the result is system-missing.
6227 </DL>
6228 <P>
6229
6230 <A NAME="Miscellaneous Mathematics"></A>
6231 <HR SIZE="6">
6232 <A NAME="SEC67"></A>
6233 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
6234 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC66"> &lt; </A>]</TD>
6235 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC68"> &gt; </A>]</TD>
6236 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
6237 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC65"> Up </A>]</TD>
6238 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
6239 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
6240 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
6241 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
6242 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
6243 </TR></TABLE>
6244 <H3> 8.7.2 Miscellaneous Mathematical Functions </H3>
6245 <!--docid::SEC67::-->
6246 <P>
6247
6248 Miscellaneous mathematical functions take numeric arguments and produce
6249 numeric results.
6250 </P>
6251 <P>
6252
6253 <A NAME="IDX202"></A>
6254 <A NAME="IDX203"></A>
6255 </P>
6256 <DL>
6257 <DT><U>Function:</U> <B>ABS</B> <I>(<VAR>number</VAR>)</I>
6258 <DD>Results in the absolute value of <VAR>number</VAR>.
6259 </DL>
6260 <P>
6261
6262 <A NAME="IDX204"></A>
6263 <A NAME="IDX205"></A>
6264 </P>
6265 <DL>
6266 <DT><U>Function:</U> <B>MOD</B> <I>(<VAR>numerator</VAR>, <VAR>denominator</VAR>)</I>
6267 <DD>Returns the remainder (modulus) of <VAR>numerator</VAR> divided by
6268 <VAR>denominator</VAR>. If <VAR>denominator</VAR> is 0, the result is
6269 system-missing. However, if <VAR>numerator</VAR> is 0 and
6270 <VAR>denominator</VAR> is system-missing, the result is 0.
6271 </DL>
6272 <P>
6273
6274 <A NAME="IDX206"></A>
6275 <A NAME="IDX207"></A>
6276 </P>
6277 <DL>
6278 <DT><U>Function:</U> <B>MOD10</B> <I>(<VAR>number</VAR>)</I>
6279 <DD>Returns the remainder when <VAR>number</VAR> is divided by 10. If
6280 <VAR>number</VAR> is negative, MOD10(<VAR>number</VAR>) is negative or zero.
6281 </DL>
6282 <P>
6283
6284 <A NAME="IDX208"></A>
6285 <A NAME="IDX209"></A>
6286 </P>
6287 <DL>
6288 <DT><U>Function:</U> <B>RND</B> <I>(<VAR>number</VAR>)</I>
6289 <DD>Takes the absolute value of <VAR>number</VAR> and rounds it to an integer.
6290 Then, if <VAR>number</VAR> was negative originally, negates the result.
6291 </DL>
6292 <P>
6293
6294 <A NAME="IDX210"></A>
6295 <A NAME="IDX211"></A>
6296 </P>
6297 <DL>
6298 <DT><U>Function:</U> <B>TRUNC</B> <I>(<VAR>number</VAR>)</I>
6299 <DD>Discards the fractional part of <VAR>number</VAR>; that is, rounds
6300 <VAR>number</VAR> towards zero.
6301 </DL>
6302 <P>
6303
6304 <A NAME="Trigonometry"></A>
6305 <HR SIZE="6">
6306 <A NAME="SEC68"></A>
6307 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
6308 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC67"> &lt; </A>]</TD>
6309 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC69"> &gt; </A>]</TD>
6310 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
6311 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC65"> Up </A>]</TD>
6312 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
6313 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
6314 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
6315 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
6316 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
6317 </TR></TABLE>
6318 <H3> 8.7.3 Trigonometric Functions </H3>
6319 <!--docid::SEC68::-->
6320 <P>
6321
6322 Trigonometric functions take numeric arguments and produce numeric
6323 results.
6324 </P>
6325 <P>
6326
6327 <A NAME="IDX212"></A>
6328 <A NAME="IDX213"></A>
6329 <A NAME="IDX214"></A>
6330 </P>
6331 <DL>
6332 <DT><U>Function:</U> <B>ACOS</B> <I>(<VAR>number</VAR>)</I>
6333 <DD><A NAME="IDX215"></A>
6334 <DT><U>Function:</U> <B>ARCOS</B> <I>(<VAR>number</VAR>)</I>
6335 <DD>Takes the arccosine, in radians, of <VAR>number</VAR>. Results in
6336 system-missing if <VAR>number</VAR> is not between -1 and 1. Portability:
6337 none.
6338 </DL>
6339 <P>
6340
6341 <A NAME="IDX216"></A>
6342 <A NAME="IDX217"></A>
6343 <A NAME="IDX218"></A>
6344 </P>
6345 <DL>
6346 <DT><U>Function:</U> <B>ARSIN</B> <I>(<VAR>number</VAR>)</I>
6347 <DD>Takes the arcsine, in radians, of <VAR>number</VAR>. Results in
6348 system-missing if <VAR>number</VAR> is not between -1 and 1 inclusive.
6349 </DL>
6350 <P>
6351
6352 <A NAME="IDX219"></A>
6353 <A NAME="IDX220"></A>
6354 <A NAME="IDX221"></A>
6355 </P>
6356 <DL>
6357 <DT><U>Function:</U> <B>ARTAN</B> <I>(<VAR>number</VAR>)</I>
6358 <DD>Takes the arctangent, in radians, of <VAR>number</VAR>.
6359 </DL>
6360 <P>
6361
6362 <A NAME="IDX222"></A>
6363 <A NAME="IDX223"></A>
6364 <A NAME="IDX224"></A>
6365 </P>
6366 <DL>
6367 <DT><U>Function:</U> <B>ASIN</B> <I>(<VAR>number</VAR>)</I>
6368 <DD>Takes the arcsine, in radians, of <VAR>number</VAR>. Results in
6369 system-missing if <VAR>number</VAR> is not between -1 and 1 inclusive.
6370 Portability: none.
6371 </DL>
6372 <P>
6373
6374 <A NAME="IDX225"></A>
6375 <A NAME="IDX226"></A>
6376 <A NAME="IDX227"></A>
6377 </P>
6378 <DL>
6379 <DT><U>Function:</U> <B>ATAN</B> <I>(<VAR>number</VAR>)</I>
6380 <DD>Takes the arctangent, in radians, of <VAR>number</VAR>.
6381 </DL>
6382 <P>
6383
6384 <BLOCKQUOTE>
6385 <STRONG>Please note:</STRONG> Use of the AR* group of inverse trigonometric
6386 functions is recommended over the A* group because they are more
6387 portable.
6388 </BLOCKQUOTE>
6389 <P>
6390
6391 <A NAME="IDX228"></A>
6392 <A NAME="IDX229"></A>
6393 </P>
6394 <DL>
6395 <DT><U>Function:</U> <B>COS</B> <I>(<VAR>radians</VAR>)</I>
6396 <DD>Takes the cosine of <VAR>radians</VAR>.
6397 </DL>
6398 <P>
6399
6400 <A NAME="IDX230"></A>
6401 <A NAME="IDX231"></A>
6402 </P>
6403 <DL>
6404 <DT><U>Function:</U> <B>SIN</B> <I>(<VAR>angle</VAR>)</I>
6405 <DD>Takes the sine of <VAR>radians</VAR>.
6406 </DL>
6407 <P>
6408
6409 <A NAME="IDX232"></A>
6410 <A NAME="IDX233"></A>
6411 </P>
6412 <DL>
6413 <DT><U>Function:</U> <B>TAN</B> <I>(<VAR>angle</VAR>)</I>
6414 <DD>Takes the tangent of <VAR>radians</VAR>. Results in system-missing at values
6415 of <VAR>angle</VAR> that are too close to odd multiples of pi/2.
6416 Portability: none.
6417 </DL>
6418 <P>
6419
6420 <A NAME="Missing Value Functions"></A>
6421 <HR SIZE="6">
6422 <A NAME="SEC69"></A>
6423 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
6424 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC68"> &lt; </A>]</TD>
6425 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC70"> &gt; </A>]</TD>
6426 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
6427 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC65"> Up </A>]</TD>
6428 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
6429 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
6430 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
6431 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
6432 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
6433 </TR></TABLE>
6434 <H3> 8.7.4 Missing-Value Functions </H3>
6435 <!--docid::SEC69::-->
6436 <P>
6437
6438 Missing-value functions take various types as arguments, returning
6439 various types of results.
6440 </P>
6441 <P>
6442
6443 <A NAME="IDX234"></A>
6444 </P>
6445 <DL>
6446 <DT><U>Function:</U> <B>MISSING</B> <I>(<VAR>variable or expression</VAR>)</I>
6447 <DD><VAR>num</VAR> may be a single variable name or an expression. If it is a
6448 variable name, results in 1 if the variable has a user-missing or
6449 system-missing value for the current case, 0 otherwise. If it is an
6450 expression, results in 1 if the expression has the system-missing value,
6451 0 otherwise.
6452 <P>
6453
6454 <BLOCKQUOTE>
6455 <STRONG>Please note:</STRONG> If the argument is a string expression other than
6456 a variable name, MISSING is guaranteed to return 0, because strings do
6457 not have a system-missing value. Also, when using a numeric expression
6458 argument, remember that user-missing values are converted to the
6459 system-missing value in most contexts. Thus, the expressions
6460 <CODE>MISSING(VAR1 <VAR>op</VAR> VAR2)</CODE> and <CODE>MISSING(VAR1) OR
6461 MISSING(VAR2)</CODE> are often equivalent, depending on the specific operator
6462 <VAR>op</VAR> used.
6463 </BLOCKQUOTE>
6464 </DL>
6465 <P>
6466
6467 <A NAME="IDX235"></A>
6468 </P>
6469 <DL>
6470 <DT><U>Function:</U> <B>NMISS</B> <I>(<VAR>expr</VAR> [, <VAR>expr</VAR>]<small>...</small>)</I>
6471 <DD>Each argument must be a numeric expression. Returns the number of
6472 user- or system-missing values in the list. As a special extension,
6473 the syntax <CODE><VAR>var1</VAR> TO <VAR>var2</VAR></CODE> may be used to refer to a
6474 range of variables; see <A HREF="pspp.html#SEC53">7.6.3 Lists of variable names</A>, for more details.
6475 </DL>
6476 <P>
6477
6478 <A NAME="IDX236"></A>
6479 </P>
6480 <DL>
6481 <DT><U>Function:</U> <B>NVALID</B> <I>(<VAR>expr</VAR> [, <VAR>expr</VAR>]<small>...</small>)</I>
6482 <DD>Each argument must be a numeric expression. Returns the number of
6483 values in the list that are not user- or system-missing. As a special extension,
6484 the syntax <CODE><VAR>var1</VAR> TO <VAR>var2</VAR></CODE> may be used to refer to a
6485 range of variables; see <A HREF="pspp.html#SEC53">7.6.3 Lists of variable names</A>, for more details.
6486 </DL>
6487 <P>
6488
6489 <A NAME="IDX237"></A>
6490 </P>
6491 <DL>
6492 <DT><U>Function:</U> <B>SYSMIS</B> <I>(<VAR>variable or expression</VAR>)</I>
6493 <DD>When given the name of a numeric variable, returns 1 if the value of
6494 that variable is system-missing. Otherwise, if the value is not
6495 missing or if it is user-missing, returns 0. If given the name of a
6496 string variable, always returns 1. If given an expression other than
6497 a single variable name, results in 1 if the value is system- or
6498 user-missing, 0 otherwise.
6499 </DL>
6500 <P>
6501
6502 <A NAME="IDX238"></A>
6503 </P>
6504 <DL>
6505 <DT><U>Function:</U> <B>VALUE</B> <I>(<VAR>variable</VAR>)</I>
6506 <DD>Prevents the user-missing values of <VAR>variable</VAR> from being
6507 transformed into system-missing values: If <VAR>variable</VAR> is not
6508 system- or user-missing, results in the value of <VAR>variable</VAR>. If
6509 <VAR>variable</VAR> is user-missing, results in the value of <VAR>variable</VAR>
6510 anyway. If <VAR>variable</VAR> is system-missing, results in system-missing.
6511 </DL>
6512 <P>
6513
6514 <A NAME="Pseudo-Random Numbers"></A>
6515 <HR SIZE="6">
6516 <A NAME="SEC70"></A>
6517 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
6518 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC69"> &lt; </A>]</TD>
6519 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC71"> &gt; </A>]</TD>
6520 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
6521 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC65"> Up </A>]</TD>
6522 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
6523 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
6524 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
6525 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
6526 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
6527 </TR></TABLE>
6528 <H3> 8.7.5 Pseudo-Random Number Generation Functions </H3>
6529 <!--docid::SEC70::-->
6530 <P>
6531
6532 Pseudo-random number generation functions take numeric arguments and
6533 produce numeric results.
6534 </P>
6535 <P>
6536
6537 <A NAME="IDX239"></A>
6538 The system's C library random generator is used as a basis for
6539 generating random numbers, since random number generation is a
6540 system-dependent task. However, Knuth's Algorithm B is used to
6541 shuffle the resultant values, which is enough to make even a stream of
6542 consecutive integers random enough for most applications.
6543 </P>
6544 <P>
6545
6546 (If you're worried about the quality of the random number generator,
6547 well, you're using a statistical processing package--analyze it!)
6548 </P>
6549 <P>
6550
6551 <A NAME="IDX240"></A>
6552 <A NAME="IDX241"></A>
6553 </P>
6554 <DL>
6555 <DT><U>Function:</U> <B>NORMAL</B> <I>(<VAR>number</VAR>)</I>
6556 <DD>Results in a random number. Results from <CODE>NORMAL</CODE> are normally
6557 distributed with a mean of 0 and a standard deviation of <VAR>number</VAR>.
6558 </DL>
6559 <P>
6560
6561 <A NAME="IDX242"></A>
6562 <A NAME="IDX243"></A>
6563 </P>
6564 <DL>
6565 <DT><U>Function:</U> <B>UNIFORM</B> <I>(<VAR>number</VAR>)</I>
6566 <DD>Results in a random number between 0 and <VAR>number</VAR>. Results from
6567 <CODE>UNIFORM</CODE> are evenly distributed across its entire range. There
6568 may be a maximum on the largest random number ever generated--this is
6569 often 2**31-1 (2,147,483,647), but it may be orders of magnitude
6570 higher or lower.
6571 </DL>
6572 <P>
6573
6574 <A NAME="Set Membership"></A>
6575 <HR SIZE="6">
6576 <A NAME="SEC71"></A>
6577 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
6578 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC70"> &lt; </A>]</TD>
6579 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC72"> &gt; </A>]</TD>
6580 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
6581 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC65"> Up </A>]</TD>
6582 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
6583 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
6584 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
6585 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
6586 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
6587 </TR></TABLE>
6588 <H3> 8.7.6 Set-Membership Functions </H3>
6589 <!--docid::SEC71::-->
6590 <P>
6591
6592 Set membership functions determine whether a value is a member of a set.
6593 They take a set of numeric arguments or a set of string arguments, and
6594 produce Boolean results.
6595 </P>
6596 <P>
6597
6598 String comparisons are performed according to the rules given in
6599 <A HREF="pspp.html#SEC64">8.6 Relational Operators</A>.
6600 </P>
6601 <P>
6602
6603 <A NAME="IDX244"></A>
6604 </P>
6605 <DL>
6606 <DT><U>Function:</U> <B>ANY</B> <I>(<VAR>value</VAR>, <VAR>set</VAR> [, <VAR>set</VAR>]<small>...</small>)</I>
6607 <DD>Results in true if <VAR>value</VAR> is equal to any of the <VAR>set</VAR>
6608 values. Otherwise, results in false. If <VAR>value</VAR> is
6609 system-missing, returns system-missing. System-missing values in
6610 <VAR>set</VAR> do not cause ANY to return system-missing.
6611 </DL>
6612 <P>
6613
6614 <A NAME="IDX245"></A>
6615 </P>
6616 <DL>
6617 <DT><U>Function:</U> <B>RANGE</B> <I>(<VAR>value</VAR>, <VAR>low</VAR>, <VAR>high</VAR> [, <VAR>low</VAR>, <VAR>high</VAR>]<small>...</small>)</I>
6618 <DD>Results in true if <VAR>value</VAR> is in any of the intervals bounded by
6619 <VAR>low</VAR> and <VAR>high</VAR> inclusive. Otherwise, results in false.
6620 Each <VAR>low</VAR> must be less than or equal to its corresponding
6621 <VAR>high</VAR> value. <VAR>low</VAR> and <VAR>high</VAR> must be given in pairs.
6622 If <VAR>value</VAR> is system-missing, returns system-missing.
6623 System-missing values in <VAR>set</VAR> do not cause RANGE to return
6624 system-missing.
6625 </DL>
6626 <P>
6627
6628 <A NAME="Statistical Functions"></A>
6629 <HR SIZE="6">
6630 <A NAME="SEC72"></A>
6631 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
6632 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC71"> &lt; </A>]</TD>
6633 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC73"> &gt; </A>]</TD>
6634 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
6635 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC65"> Up </A>]</TD>
6636 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
6637 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
6638 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
6639 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
6640 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
6641 </TR></TABLE>
6642 <H3> 8.7.7 Statistical Functions </H3>
6643 <!--docid::SEC72::-->
6644 <P>
6645
6646 Statistical functions compute descriptive statistics on a list of
6647 values. Some statistics can be computed on numeric or string values;
6648 other can only be computed on numeric values. They result in the same
6649 type as their arguments.
6650 </P>
6651 <P>
6652
6653 <A NAME="IDX246"></A>
6654 <A NAME="IDX247"></A>
6655 With statistical functions it is possible to specify a minimum number of
6656 non-missing arguments for the function to be evaluated. To do so,
6657 append a dot and the number to the function name. For instance, to
6658 specify a minimum of three valid arguments to the MEAN function, use the
6659 name <CODE>MEAN.3</CODE>.
6660 </P>
6661 <P>
6662
6663 <A NAME="IDX248"></A>
6664 <A NAME="IDX249"></A>
6665 <A NAME="IDX250"></A>
6666 </P>
6667 <DL>
6668 <DT><U>Function:</U> <B>CFVAR</B> <I>(<VAR>number</VAR>, <VAR>number</VAR>[, <small>...</small>])</I>
6669 <DD>Results in the coefficient of variation of the values of <VAR>number</VAR>.
6670 This function requires at least two valid arguments to give a
6671 non-missing result. (The coefficient of variation is the standard
6672 deviation divided by the mean.)
6673 </DL>
6674 <P>
6675
6676 <A NAME="IDX251"></A>
6677 <A NAME="IDX252"></A>
6678 </P>
6679 <DL>
6680 <DT><U>Function:</U> <B>MAX</B> <I>(<VAR>value</VAR>, <VAR>value</VAR>[, <small>...</small>])</I>
6681 <DD>Results in the value of the greatest <VAR>value</VAR>. The <VAR>value</VAR>s may
6682 be numeric or string. Although at least two arguments must be given,
6683 only one need be valid for MAX to give a non-missing result.
6684 </DL>
6685 <P>
6686
6687 <A NAME="IDX253"></A>
6688 <A NAME="IDX254"></A>
6689 </P>
6690 <DL>
6691 <DT><U>Function:</U> <B>MEAN</B> <I>(<VAR>number</VAR>, <VAR>number</VAR>[, <small>...</small>])</I>
6692 <DD>Results in the mean of the values of <VAR>number</VAR>. Although at least
6693 two arguments must be given, only one need be valid for MEAN to give a
6694 non-missing result.
6695 </DL>
6696 <P>
6697
6698 <A NAME="IDX255"></A>
6699 <A NAME="IDX256"></A>
6700 </P>
6701 <DL>
6702 <DT><U>Function:</U> <B>MIN</B> <I>(<VAR>number</VAR>, <VAR>number</VAR>[, <small>...</small>])</I>
6703 <DD>Results in the value of the least <VAR>value</VAR>. The <VAR>value</VAR>s may
6704 be numeric or string. Although at least two arguments must be given,
6705 only one need be valid for MAX to give a non-missing result.
6706 </DL>
6707 <P>
6708
6709 <A NAME="IDX257"></A>
6710 <A NAME="IDX258"></A>
6711 <A NAME="IDX259"></A>
6712 </P>
6713 <DL>
6714 <DT><U>Function:</U> <B>SD</B> <I>(<VAR>number</VAR>, <VAR>number</VAR>[, <small>...</small>])</I>
6715 <DD>Results in the standard deviation of the values of <VAR>number</VAR>.
6716 This function requires at least two valid arguments to give a
6717 non-missing result.
6718 </DL>
6719 <P>
6720
6721 <A NAME="IDX260"></A>
6722 <A NAME="IDX261"></A>
6723 </P>
6724 <DL>
6725 <DT><U>Function:</U> <B>SUM</B> <I>(<VAR>number</VAR>, <VAR>number</VAR>[, <small>...</small>])</I>
6726 <DD>Results in the sum of the values of <VAR>number</VAR>. Although at least two
6727 arguments must be given, only one need by valid for SUM to give a
6728 non-missing result.
6729 </DL>
6730 <P>
6731
6732 <A NAME="IDX262"></A>
6733 <A NAME="IDX263"></A>
6734 </P>
6735 <DL>
6736 <DT><U>Function:</U> <B>VAR</B> <I>(<VAR>number</VAR>, <VAR>number</VAR>[, <small>...</small>])</I>
6737 <DD>Results in the variance of the values of <VAR>number</VAR>. This function
6738 requires at least two valid arguments to give a non-missing result.
6739 </DL>
6740 <P>
6741
6742 <A NAME="IDX264"></A>
6743 </P>
6744 <DL>
6745 <DT><U>Function:</U> <B>VARIANCE</B> <I>(<VAR>number</VAR>, <VAR>number</VAR>[, <small>...</small>])</I>
6746 <DD>Results in the variance of the values of <VAR>number</VAR>. This function
6747 requires at least two valid arguments to give a non-missing result.
6748 (Use VAR in preference to VARIANCE for reasons of portability.)
6749 </DL>
6750 <P>
6751
6752 <A NAME="String Functions"></A>
6753 <HR SIZE="6">
6754 <A NAME="SEC73"></A>
6755 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
6756 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC72"> &lt; </A>]</TD>
6757 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC74"> &gt; </A>]</TD>
6758 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
6759 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC65"> Up </A>]</TD>
6760 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
6761 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
6762 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
6763 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
6764 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
6765 </TR></TABLE>
6766 <H3> 8.7.8 String Functions </H3>
6767 <!--docid::SEC73::-->
6768 <P>
6769
6770 String functions take various arguments and return various results.
6771 </P>
6772 <P>
6773
6774 <A NAME="IDX265"></A>
6775 <A NAME="IDX266"></A>
6776 <A NAME="IDX267"></A>
6777 </P>
6778 <DL>
6779 <DT><U>Function:</U> <B>CONCAT</B> <I>(<VAR>string</VAR>, <VAR>string</VAR>[, <small>...</small>])</I>
6780 <DD>Returns a string consisting of each <VAR>string</VAR> in sequence.
6781 <CODE>CONCAT(&quot;abc&quot;, &quot;def&quot;, &quot;ghi&quot;)</CODE> has a value of <CODE>&quot;abcdefghi&quot;</CODE>.
6782 The resultant string is truncated to a maximum of 255 characters.
6783 </DL>
6784 <P>
6785
6786 <A NAME="IDX268"></A>
6787 <A NAME="IDX269"></A>
6788 </P>
6789 <DL>
6790 <DT><U>Function:</U> <B>INDEX</B> <I>(<VAR>haystack</VAR>, <VAR>needle</VAR>)</I>
6791 <DD>Returns a positive integer indicating the position of the first
6792 occurrence <VAR>needle</VAR> in <VAR>haystack</VAR>. Returns 0 if <VAR>haystack</VAR>
6793 does not contain <VAR>needle</VAR>. Returns system-missing if <VAR>needle</VAR>
6794 is an empty string.
6795 </DL>
6796 <P>
6797
6798 <A NAME="IDX270"></A>
6799 </P>
6800 <DL>
6801 <DT><U>Function:</U> <B>INDEX</B> <I>(<VAR>haystack</VAR>, <VAR>needle</VAR>, <VAR>divisor</VAR>)</I>
6802 <DD>Divides <VAR>needle</VAR> into parts, each with length <VAR>divisor</VAR>.
6803 Searches <VAR>haystack</VAR> for the first occurrence of each part, and
6804 returns the smallest value. Returns 0 if <VAR>haystack</VAR> does not
6805 contain any part in <VAR>needle</VAR>. It is an error if <VAR>divisor</VAR>
6806 cannot be evenly divided into the length of <VAR>needle</VAR>. Returns
6807 system-missing if <VAR>needle</VAR> is an empty string.
6808 </DL>
6809 <P>
6810
6811 <A NAME="IDX271"></A>
6812 <A NAME="IDX272"></A>
6813 </P>
6814 <DL>
6815 <DT><U>Function:</U> <B>LENGTH</B> <I>(<VAR>string</VAR>)</I>
6816 <DD>Returns the number of characters in <VAR>string</VAR>.
6817 </DL>
6818 <P>
6819
6820 <A NAME="IDX273"></A>
6821 <A NAME="IDX274"></A>
6822 </P>
6823 <DL>
6824 <DT><U>Function:</U> <B>LOWER</B> <I>(<VAR>string</VAR>)</I>
6825 <DD>Returns a string identical to <VAR>string</VAR> except that all uppercase
6826 letters are changed to lowercase letters. The definitions of
6827 &quot;uppercase&quot; and &quot;lowercase&quot; are system-dependent.
6828 </DL>
6829 <P>
6830
6831 <A NAME="IDX275"></A>
6832 <A NAME="IDX276"></A>
6833 </P>
6834 <DL>
6835 <DT><U>Function:</U> <B>LPAD</B> <I>(<VAR>string</VAR>, <VAR>length</VAR>)</I>
6836 <DD>If <VAR>string</VAR> is at least <VAR>length</VAR> characters in length, returns
6837 <VAR>string</VAR> unchanged. Otherwise, returns <VAR>string</VAR> padded with
6838 spaces on the left side to length <VAR>length</VAR>. Returns an empty string
6839 if <VAR>length</VAR> is system-missing, negative, or greater than 255.
6840 </DL>
6841 <P>
6842
6843 <A NAME="IDX277"></A>
6844 </P>
6845 <DL>
6846 <DT><U>Function:</U> <B>LPAD</B> <I>(<VAR>string</VAR>, <VAR>length</VAR>, <VAR>padding</VAR>)</I>
6847 <DD>If <VAR>string</VAR> is at least <VAR>length</VAR> characters in length, returns
6848 <VAR>string</VAR> unchanged. Otherwise, returns <VAR>string</VAR> padded with
6849 <VAR>padding</VAR> on the left side to length <VAR>length</VAR>. Returns an empty
6850 string if <VAR>length</VAR> is system-missing, negative, or greater than 255, or
6851 if <VAR>padding</VAR> does not contain exactly one character.
6852 </DL>
6853 <P>
6854
6855 <A NAME="IDX278"></A>
6856 <A NAME="IDX279"></A>
6857 <A NAME="IDX280"></A>
6858 </P>
6859 <DL>
6860 <DT><U>Function:</U> <B>LTRIM</B> <I>(<VAR>string</VAR>)</I>
6861 <DD>Returns <VAR>string</VAR>, after removing leading spaces. Other whitespace,
6862 such as tabs, carriage returns, line feeds, and vertical tabs, is not
6863 removed.
6864 </DL>
6865 <P>
6866
6867 <A NAME="IDX281"></A>
6868 </P>
6869 <DL>
6870 <DT><U>Function:</U> <B>LTRIM</B> <I>(<VAR>string</VAR>, <VAR>padding</VAR>)</I>
6871 <DD>Returns <VAR>string</VAR>, after removing leading <VAR>padding</VAR> characters.
6872 If <VAR>padding</VAR> does not contain exactly one character, returns an
6873 empty string.
6874 </DL>
6875 <P>
6876
6877 <A NAME="IDX282"></A>
6878 <A NAME="IDX283"></A>
6879 <A NAME="IDX284"></A>
6880 </P>
6881 <DL>
6882 <DT><U>Function:</U> <B>NUMBER</B> <I>(<VAR>string</VAR>)</I>
6883 <DD>Returns the number produced when <VAR>string</VAR> is interpreted according
6884 to format F<VAR>x</VAR>.0, where <VAR>x</VAR> is the number of characters in
6885 <VAR>string</VAR>. If <VAR>string</VAR> does not form a proper number,
6886 system-missing is returned without an error message. Portability: none.
6887 </DL>
6888 <P>
6889
6890 <A NAME="IDX285"></A>
6891 </P>
6892 <DL>
6893 <DT><U>Function:</U> <B>NUMBER</B> <I>(<VAR>string</VAR>, <VAR>format</VAR>)</I>
6894 <DD>Returns the number produced when <VAR>string</VAR> is interpreted according
6895 to format specifier <VAR>format</VAR>. Only the number of characters in
6896 <VAR>string</VAR> specified by <VAR>format</VAR> are examined. For example,
6897 <CODE>NUMBER(&quot;123&quot;, F3.0)</CODE> and <CODE>NUMBER(&quot;1234&quot;, F3.0)</CODE> both have
6898 value 123. If <VAR>string</VAR> does not form a proper number,
6899 system-missing is returned without an error message.
6900 </DL>
6901 <P>
6902
6903 <A NAME="IDX286"></A>
6904 <A NAME="IDX287"></A>
6905 </P>
6906 <DL>
6907 <DT><U>Function:</U> <B>RINDEX</B> <I>(<VAR>string</VAR>, <VAR>format</VAR>)</I>
6908 <DD>Returns a positive integer indicating the position of the last
6909 occurrence of <VAR>needle</VAR> in <VAR>haystack</VAR>. Returns 0 if
6910 <VAR>haystack</VAR> does not contain <VAR>needle</VAR>. Returns system-missing if
6911 <VAR>needle</VAR> is an empty string.
6912 </DL>
6913 <P>
6914
6915 <A NAME="IDX288"></A>
6916 </P>
6917 <DL>
6918 <DT><U>Function:</U> <B>RINDEX</B> <I>(<VAR>haystack</VAR>, <VAR>needle</VAR>, <VAR>divisor</VAR>)</I>
6919 <DD>Divides <VAR>needle</VAR> into parts, each with length <VAR>divisor</VAR>.
6920 Searches <VAR>haystack</VAR> for the last occurrence of each part, and
6921 returns the largest value. Returns 0 if <VAR>haystack</VAR> does not contain
6922 any part in <VAR>needle</VAR>. It is an error if <VAR>divisor</VAR> cannot be
6923 evenly divided into the length of <VAR>needle</VAR>. Returns system-missing
6924 if <VAR>needle</VAR> is an empty string.
6925 </DL>
6926 <P>
6927
6928 <A NAME="IDX289"></A>
6929 <A NAME="IDX290"></A>
6930 <A NAME="IDX291"></A>
6931 </P>
6932 <DL>
6933 <DT><U>Function:</U> <B>RPAD</B> <I>(<VAR>string</VAR>, <VAR>length</VAR>)</I>
6934 <DD>If <VAR>string</VAR> is at least <VAR>length</VAR> characters in length, returns
6935 <VAR>string</VAR> unchanged. Otherwise, returns <VAR>string</VAR> padded with
6936 spaces on the right to length <VAR>length</VAR>. Returns an empty string if
6937 <VAR>length</VAR> is system-missing, negative, or greater than 255.
6938 </DL>
6939 <P>
6940
6941 <A NAME="IDX292"></A>
6942 </P>
6943 <DL>
6944 <DT><U>Function:</U> <B>RPAD</B> <I>(<VAR>string</VAR>, <VAR>length</VAR>, <VAR>padding</VAR>)</I>
6945 <DD>If <VAR>string</VAR> is at least <VAR>length</VAR> characters in length, returns
6946 <VAR>string</VAR> unchanged. Otherwise, returns <VAR>string</VAR> padded with
6947 <VAR>padding</VAR> on the right to length <VAR>length</VAR>. Returns an empty
6948 string if <VAR>length</VAR> is system-missing, negative, or greater than 255,
6949 or if <VAR>padding</VAR> does not contain exactly one character.
6950 </DL>
6951 <P>
6952
6953 <A NAME="IDX293"></A>
6954 <A NAME="IDX294"></A>
6955 <A NAME="IDX295"></A>
6956 </P>
6957 <DL>
6958 <DT><U>Function:</U> <B>RTRIM</B> <I>(<VAR>string</VAR>)</I>
6959 <DD>Returns <VAR>string</VAR>, after removing trailing spaces. Other types of
6960 whitespace are not removed.
6961 </DL>
6962 <P>
6963
6964 <A NAME="IDX296"></A>
6965 </P>
6966 <DL>
6967 <DT><U>Function:</U> <B>RTRIM</B> <I>(<VAR>string</VAR>, <VAR>padding</VAR>)</I>
6968 <DD>Returns <VAR>string</VAR>, after removing trailing <VAR>padding</VAR> characters.
6969 If <VAR>padding</VAR> does not contain exactly one character, returns an
6970 empty string.
6971 </DL>
6972 <P>
6973
6974 <A NAME="IDX297"></A>
6975 <A NAME="IDX298"></A>
6976 <A NAME="IDX299"></A>
6977 </P>
6978 <DL>
6979 <DT><U>Function:</U> <B>STRING</B> <I>(<VAR>number</VAR>, <VAR>format</VAR>)</I>
6980 <DD>Returns a string corresponding to <VAR>number</VAR> in the format given by
6981 format specifier <VAR>format</VAR>. For example, <CODE>STRING(123.56, F5.1)</CODE>
6982 has the value <CODE>&quot;123.6&quot;</CODE>.
6983 </DL>
6984 <P>
6985
6986 <A NAME="IDX300"></A>
6987 <A NAME="IDX301"></A>
6988 <A NAME="IDX302"></A>
6989 </P>
6990 <DL>
6991 <DT><U>Function:</U> <B>SUBSTR</B> <I>(<VAR>string</VAR>, <VAR>start</VAR>)</I>
6992 <DD>Returns a string consisting of the value of <VAR>string</VAR> from position
6993 <VAR>start</VAR> onward. Returns an empty string if <VAR>start</VAR> is system-missing
6994 or has a value less than 1 or greater than the number of characters in
6995 <VAR>string</VAR>.
6996 </DL>
6997 <P>
6998
6999 <A NAME="IDX303"></A>
7000 </P>
7001 <DL>
7002 <DT><U>Function:</U> <B>SUBSTR</B> <I>(<VAR>string</VAR>, <VAR>start</VAR>, <VAR>count</VAR>)</I>
7003 <DD>Returns a string consisting of the first <VAR>count</VAR> characters from
7004 <VAR>string</VAR> beginning at position <VAR>start</VAR>. Returns an empty string
7005 if <VAR>start</VAR> or <VAR>count</VAR> is system-missing, if <VAR>start</VAR> is less
7006 than 1 or greater than the number of characters in <VAR>string</VAR>, or if
7007 <VAR>count</VAR> is less than 1. Returns a string shorter than <VAR>count</VAR>
7008 characters if <VAR>start</VAR> + <VAR>count</VAR> - 1 is greater than the number
7009 of characters in <VAR>string</VAR>. Examples: <CODE>SUBSTR(&quot;abcdefg&quot;, 3, 2)</CODE>
7010 has value <CODE>&quot;cd&quot;</CODE>; <CODE>SUBSTR(&quot;Ben Pfaff&quot;, 5, 10)</CODE> has the value
7011 <CODE>&quot;Pfaff&quot;</CODE>.
7012 </DL>
7013 <P>
7014
7015 <A NAME="IDX304"></A>
7016 <A NAME="IDX305"></A>
7017 <A NAME="IDX306"></A>
7018 </P>
7019 <DL>
7020 <DT><U>Function:</U> <B>UPCASE</B> <I>(<VAR>string</VAR>)</I>
7021 <DD>Returns <VAR>string</VAR>, changing lowercase letters to uppercase letters.
7022 </DL>
7023 <P>
7024
7025 <A NAME="Time &amp;amp; Date"></A>
7026 <HR SIZE="6">
7027 <A NAME="SEC74"></A>
7028 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
7029 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC73"> &lt; </A>]</TD>
7030 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC75"> &gt; </A>]</TD>
7031 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
7032 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC65"> Up </A>]</TD>
7033 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
7034 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
7035 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
7036 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
7037 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
7038 </TR></TABLE>
7039 <H3> 8.7.9 Time &amp; Date Functions </H3>
7040 <!--docid::SEC74::-->
7041 <P>
7042
7043 <A NAME="IDX307"></A>
7044 The legal range of dates for use in PSPP is 15 Oct 1582
7045 through 31 Dec 19999.
7046 </P>
7047 <P>
7048
7049 <A NAME="IDX308"></A>
7050 <A NAME="IDX309"></A>
7051 <BLOCKQUOTE>
7052 <STRONG>Please note:</STRONG> Most time &amp; date extraction functions will accept
7053 invalid arguments:
7054 <P>
7055
7056 <UL>
7057 <LI>
7058 Negative numbers in PSPP time format.
7059 <LI>
7060 Numbers less than 86,400 in PSPP date format.
7061 </UL>
7062 <P>
7063
7064 However, sensible results are not guaranteed for these invalid values.
7065 The given equivalents for these functions are definitely not guaranteed
7066 for invalid values.
7067 </BLOCKQUOTE>
7068 <P>
7069
7070 <BLOCKQUOTE>
7071 <STRONG>Please note also:</STRONG> The time &amp; date construction
7072 functions <STRONG>do</STRONG> produce reasonable and useful results for
7073 out-of-range values; these are not considered invalid.
7074 </BLOCKQUOTE>
7075 <P>
7076
7077 <TABLE BORDER="0" CELLSPACING="0">
7078 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC75">8.7.9.1 How times &amp; dates are defined and represented</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
7079 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC76">8.7.9.2 Functions that Produce Times</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">TIME.{DAYS HMS}</TD></TR>
7080 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">CTIME.{DAYS HOURS MINUTES SECONDS}</TD></TR>
7081 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">DATE.{DMY MDY MOYR QYR WKYR YRDAY}</TD></TR>
7082 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">XDATE.{DATE HOUR JDAY MDAY MINUTE MONTH
7083 QUARTER SECOND TDAY TIME WEEK
7084 WKDAY YEAR}</TD></TR>
7085 </TABLE>
7086 <P>
7087
7088 <A NAME="Time &amp;amp; Date Concepts"></A>
7089 <HR SIZE="6">
7090 <A NAME="SEC75"></A>
7091 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
7092 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC74"> &lt; </A>]</TD>
7093 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC76"> &gt; </A>]</TD>
7094 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
7095 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC74"> Up </A>]</TD>
7096 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
7097 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
7098 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
7099 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
7100 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
7101 </TR></TABLE>
7102 <H4> 8.7.9.1 How times &amp; dates are defined and represented </H4>
7103 <!--docid::SEC75::-->
7104 <P>
7105
7106 <A NAME="IDX310"></A>
7107 <A NAME="IDX311"></A>
7108 Times and dates are handled by PSPP as single numbers. A
7109 <EM>time</EM> is an interval. PSPP measures times in seconds.
7110 Thus, the following intervals correspond with the numeric values given:
7111
7112 <TABLE><tr><td>&nbsp;</td><td class=example><pre> 10 minutes 600
7113 1 hour 3,600
7114 1 day, 3 hours, 10 seconds 97,210
7115 40 days 3,456,000
7116 10010 d, 14 min, 24 s 864,864,864
7117 </pre></td></tr></table><P>
7118
7119 <A NAME="IDX312"></A>
7120 <A NAME="IDX313"></A>
7121 A <EM>date</EM>, on the other hand, is a particular instant in the past or
7122 the future. PSPP represents a date as a number of seconds after the
7123 midnight that separated 8 Oct 1582 and 9 Oct 1582. (Please note that 15
7124 Oct 1582 immediately followed 9 Oct 1582.) Thus, the midnights before
7125 the dates given below correspond with the numeric PSPP dates given:
7126 </P>
7127 <P>
7128
7129 <TABLE><tr><td>&nbsp;</td><td class=example><pre> 15 Oct 1582 86,400
7130 4 Jul 1776 6,113,318,400
7131 1 Jan 1900 10,010,390,400
7132 1 Oct 1978 12,495,427,200
7133 24 Aug 1995 13,028,601,600
7134 </pre></td></tr></table><P>
7135
7136 <A NAME="IDX314"></A>
7137 <A NAME="IDX315"></A>
7138 <A NAME="IDX316"></A>
7139 Please note:
7140 </P>
7141 <P>
7142
7143 <UL>
7144 <LI>
7145 A time may be added to, or subtracted from, a date, resulting in a date.
7146 <P>
7147
7148 </P>
7149 <LI>
7150 The difference of two dates may be taken, resulting in a time.
7151 <P>
7152
7153 </P>
7154 <LI>
7155 Two times may be added to, or subtracted from, each other, resulting in
7156 a time.
7157 </UL>
7158 <P>
7159
7160 (Adding two dates does not produce a useful result.)
7161 </P>
7162 <P>
7163
7164 Since times and dates are merely numbers, the ordinary addition and
7165 subtraction operators are employed for these purposes.
7166 </P>
7167 <P>
7168
7169 <BLOCKQUOTE>
7170 <STRONG>Please note:</STRONG> Many dates and times have extremely large
7171 values--just look at the values above. Thus, it is not a good idea to
7172 take powers of these values; also, the accuracy of some procedures may
7173 be affected. If necessary, convert times or dates in seconds to some
7174 other unit, like days or years, before performing analysis.
7175 </BLOCKQUOTE>
7176 <P>
7177
7178 <A NAME="Time Construction"></A>
7179 <HR SIZE="6">
7180 <A NAME="SEC76"></A>
7181 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
7182 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC75"> &lt; </A>]</TD>
7183 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC77"> &gt; </A>]</TD>
7184 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
7185 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC74"> Up </A>]</TD>
7186 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
7187 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
7188 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
7189 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
7190 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
7191 </TR></TABLE>
7192 <H4> 8.7.9.2 Functions that Produce Times </H4>
7193 <!--docid::SEC76::-->
7194 <P>
7195
7196 These functions take numeric arguments and produce numeric results in
7197 PSPP time format.
7198 </P>
7199 <P>
7200
7201 <A NAME="IDX317"></A>
7202 <A NAME="IDX318"></A>
7203 <A NAME="IDX319"></A>
7204 </P>
7205 <DL>
7206 <DT><U>Function:</U> <B>TIME.DAYS</B> <I>(<VAR>ndays</VAR>)</I>
7207 <DD>Results in a time value corresponding to <VAR>ndays</VAR> days.
7208 (<CODE>TIME.DAYS(<VAR>x</VAR>)</CODE> is equivalent to <CODE><VAR>x</VAR> * 60 * 60 *
7209 24</CODE>.)
7210 </DL>
7211 <P>
7212
7213 <A NAME="IDX320"></A>
7214 <A NAME="IDX321"></A>
7215 <A NAME="IDX322"></A>
7216 </P>
7217 <DL>
7218 <DT><U>Function:</U> <B>TIME.HMS</B> <I>(<VAR>nhours</VAR>, <VAR>nmins</VAR>, <VAR>nsecs</VAR>)</I>
7219 <DD>Results in a time value corresponding to <VAR>nhours</VAR> hours, <VAR>nmins</VAR>
7220 minutes, and <VAR>nsecs</VAR> seconds. (<CODE>TIME.HMS(<VAR>h</VAR>, <VAR>m</VAR>,
7221 <VAR>s</VAR>)</CODE> is equivalent to <CODE><VAR>h</VAR>*60*60 + <VAR>m</VAR>*60 +
7222 <VAR>s</VAR></CODE>.)
7223 </DL>
7224 <P>
7225
7226 <A NAME="Time Extraction"></A>
7227 <HR SIZE="6">
7228 <A NAME="SEC77"></A>
7229 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
7230 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC76"> &lt; </A>]</TD>
7231 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC78"> &gt; </A>]</TD>
7232 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
7233 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC74"> Up </A>]</TD>
7234 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
7235 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
7236 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
7237 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
7238 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
7239 </TR></TABLE>
7240 <H4> 8.7.9.3 Functions that Examine Times </H4>
7241 <!--docid::SEC77::-->
7242 <P>
7243
7244 These functions take numeric arguments in PSPP time format and
7245 give numeric results.
7246 </P>
7247 <P>
7248
7249 <A NAME="IDX323"></A>
7250 <A NAME="IDX324"></A>
7251 <A NAME="IDX325"></A>
7252 </P>
7253 <DL>
7254 <DT><U>Function:</U> <B>CTIME.DAYS</B> <I>(<VAR>time</VAR>)</I>
7255 <DD>Results in the number of days and fractional days in <VAR>time</VAR>.
7256 (<CODE>CTIME.DAYS(<VAR>x</VAR>)</CODE> is equivalent to <CODE><VAR>x</VAR>/60/60/24</CODE>.)
7257 </DL>
7258 <P>
7259
7260 <A NAME="IDX326"></A>
7261 <A NAME="IDX327"></A>
7262 <A NAME="IDX328"></A>
7263 </P>
7264 <DL>
7265 <DT><U>Function:</U> <B>CTIME.HOURS</B> <I>(<VAR>time</VAR>)</I>
7266 <DD>Results in the number of hours and fractional hours in <VAR>time</VAR>.
7267 (<CODE>CTIME.HOURS(<VAR>x</VAR>)</CODE> is equivalent to <CODE><VAR>x</VAR>/60/60</CODE>.)
7268 </DL>
7269 <P>
7270
7271 <A NAME="IDX329"></A>
7272 <A NAME="IDX330"></A>
7273 <A NAME="IDX331"></A>
7274 </P>
7275 <DL>
7276 <DT><U>Function:</U> <B>CTIME.MINUTES</B> <I>(<VAR>time</VAR>)</I>
7277 <DD>Results in the number of minutes and fractional minutes in <VAR>time</VAR>.
7278 (<CODE>CTIME.MINUTES(<VAR>x</VAR>)</CODE> is equivalent to <CODE><VAR>x</VAR>/60</CODE>.)
7279 </DL>
7280 <P>
7281
7282 <A NAME="IDX332"></A>
7283 <A NAME="IDX333"></A>
7284 <A NAME="IDX334"></A>
7285 </P>
7286 <DL>
7287 <DT><U>Function:</U> <B>CTIME.SECONDS</B> <I>(<VAR>time</VAR>)</I>
7288 <DD>Results in the number of seconds and fractional seconds in <VAR>time</VAR>.
7289 (<CODE>CTIME.SECONDS</CODE> does nothing; <CODE>CTIME.SECONDS(<VAR>x</VAR>)</CODE> is
7290 equivalent to <CODE><VAR>x</VAR></CODE>.)
7291 </DL>
7292 <P>
7293
7294 <A NAME="Date Construction"></A>
7295 <HR SIZE="6">
7296 <A NAME="SEC78"></A>
7297 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
7298 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC77"> &lt; </A>]</TD>
7299 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC79"> &gt; </A>]</TD>
7300 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
7301 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC74"> Up </A>]</TD>
7302 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
7303 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
7304 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
7305 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
7306 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
7307 </TR></TABLE>
7308 <H4> 8.7.9.4 Functions that Produce Dates </H4>
7309 <!--docid::SEC78::-->
7310 <P>
7311
7312 <A NAME="IDX335"></A>
7313 These functions take numeric arguments and give numeric results in the
7314 PSPP date format. Arguments taken by these functions are:
7315 </P>
7316 <P>
7317
7318 </P>
7319 <DL COMPACT>
7320 <DT><VAR>day</VAR>
7321 <DD>Refers to a day of the month between 1 and 31.
7322 <P>
7323
7324 </P>
7325 <DT><VAR>month</VAR>
7326 <DD>Refers to a month of the year between 1 and 12.
7327 <P>
7328
7329 </P>
7330 <DT><VAR>quarter</VAR>
7331 <DD>Refers to a quarter of the year between 1 and 4. The quarters of the
7332 year begin on the first days of months 1, 4, 7, and 10.
7333 <P>
7334
7335 </P>
7336 <DT><VAR>week</VAR>
7337 <DD>Refers to a week of the year between 1 and 53.
7338 <P>
7339
7340 </P>
7341 <DT><VAR>yday</VAR>
7342 <DD>Refers to a day of the year between 1 and 366.
7343 <P>
7344
7345 </P>
7346 <DT><VAR>year</VAR>
7347 <DD>Refers to a year between 1582 and 19999.
7348 </DL>
7349 <P>
7350
7351 <A NAME="IDX336"></A>
7352 If these functions' arguments are out-of-range, they are correctly
7353 normalized before conversion to date format. Non-integers are rounded
7354 toward zero.
7355 </P>
7356 <P>
7357
7358 <A NAME="IDX337"></A>
7359 <A NAME="IDX338"></A>
7360 <A NAME="IDX339"></A>
7361 </P>
7362 <DL>
7363 <DT><U>Function:</U> <B>DATE.DMY</B> <I>(<VAR>day</VAR>, <VAR>month</VAR>, <VAR>year</VAR>)</I>
7364 <DD><A NAME="IDX340"></A>
7365 <DT><U>Function:</U> <B>DATE.MDY</B> <I>(<VAR>month</VAR>, <VAR>day</VAR>, <VAR>year</VAR>)</I>
7366 <DD>Results in a date value corresponding to the midnight before day
7367 <VAR>day</VAR> of month <VAR>month</VAR> of year <VAR>year</VAR>.
7368 </DL>
7369 <P>
7370
7371 <A NAME="IDX341"></A>
7372 <A NAME="IDX342"></A>
7373 <A NAME="IDX343"></A>
7374 </P>
7375 <DL>
7376 <DT><U>Function:</U> <B>DATE.MOYR</B> <I>(<VAR>month</VAR>, <VAR>year</VAR>)</I>
7377 <DD>Results in a date value corresponding to the midnight before the first
7378 day of month <VAR>month</VAR> of year <VAR>year</VAR>.
7379 </DL>
7380 <P>
7381
7382 <A NAME="IDX344"></A>
7383 <A NAME="IDX345"></A>
7384 <A NAME="IDX346"></A>
7385 </P>
7386 <DL>
7387 <DT><U>Function:</U> <B>DATE.QYR</B> <I>(<VAR>quarter</VAR>, <VAR>year</VAR>)</I>
7388 <DD>Results in a date value corresponding to the midnight before the first
7389 day of quarter <VAR>quarter</VAR> of year <VAR>year</VAR>.
7390 </DL>
7391 <P>
7392
7393 <A NAME="IDX347"></A>
7394 <A NAME="IDX348"></A>
7395 <A NAME="IDX349"></A>
7396 </P>
7397 <DL>
7398 <DT><U>Function:</U> <B>DATE.WKYR</B> <I>(<VAR>week</VAR>, <VAR>year</VAR>)</I>
7399 <DD>Results in a date value corresponding to the midnight before the first
7400 day of week <VAR>week</VAR> of year <VAR>year</VAR>.
7401 </DL>
7402 <P>
7403
7404 <A NAME="IDX350"></A>
7405 <A NAME="IDX351"></A>
7406 <A NAME="IDX352"></A>
7407 </P>
7408 <DL>
7409 <DT><U>Function:</U> <B>DATE.YRDAY</B> <I>(<VAR>year</VAR>, <VAR>yday</VAR>)</I>
7410 <DD>Results in a date value corresponding to the midnight before day
7411 <VAR>yday</VAR> of year <VAR>year</VAR>.
7412 </DL>
7413 <P>
7414
7415 <A NAME="Date Extraction"></A>
7416 <HR SIZE="6">
7417 <A NAME="SEC79"></A>
7418 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
7419 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC78"> &lt; </A>]</TD>
7420 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC80"> &gt; </A>]</TD>
7421 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
7422 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC74"> Up </A>]</TD>
7423 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
7424 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
7425 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
7426 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
7427 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
7428 </TR></TABLE>
7429 <H4> 8.7.9.5 Functions that Examine Dates </H4>
7430 <!--docid::SEC79::-->
7431 <P>
7432
7433 <A NAME="IDX353"></A>
7434 These functions take numeric arguments in PSPP date or time
7435 format and give numeric results. These names are used for arguments:
7436 </P>
7437 <P>
7438
7439 </P>
7440 <DL COMPACT>
7441 <DT><VAR>date</VAR>
7442 <DD>A numeric value in PSPP date format.
7443 <P>
7444
7445 </P>
7446 <DT><VAR>time</VAR>
7447 <DD>A numeric value in PSPP time format.
7448 <P>
7449
7450 </P>
7451 <DT><VAR>time-or-date</VAR>
7452 <DD>A numeric value in PSPP time or date format.
7453 </DL>
7454 <P>
7455
7456 <A NAME="IDX354"></A>
7457 <A NAME="IDX355"></A>
7458 <A NAME="IDX356"></A>
7459 <A NAME="IDX357"></A>
7460 </P>
7461 <DL>
7462 <DT><U>Function:</U> <B>XDATE.DATE</B> <I>(<VAR>time-or-date</VAR>)</I>
7463 <DD>For a time, results in the time corresponding to the number of whole
7464 days <VAR>date-or-time</VAR> includes. For a date, results in the date
7465 corresponding to the latest midnight at or before <VAR>date-or-time</VAR>;
7466 that is, gives the date that <VAR>date-or-time</VAR> is in.
7467 (XDATE.DATE(<VAR>x</VAR>) is equivalent to TRUNC(<VAR>x</VAR>/86400)*86400.)
7468 Applying this function to a time is a Portability: none feature.
7469 </DL>
7470 <P>
7471
7472 <A NAME="IDX358"></A>
7473 <A NAME="IDX359"></A>
7474 <A NAME="IDX360"></A>
7475 <A NAME="IDX361"></A>
7476 </P>
7477 <DL>
7478 <DT><U>Function:</U> <B>XDATE.HOUR</B> <I>(<VAR>time-or-date</VAR>)</I>
7479 <DD>For a time, results in the number of whole hours beyond the number of
7480 whole days represented by <VAR>date-or-time</VAR>. For a date, results in
7481 the hour (as an integer between 0 and 23) corresponding to
7482 <VAR>date-or-time</VAR>. (XDATE.HOUR(<VAR>x</VAR>) is equivalent to
7483 MOD(TRUNC(<VAR>x</VAR>/3600),24)) Applying this function to a time is a
7484 Portability: none feature.
7485 </DL>
7486 <P>
7487
7488 <A NAME="IDX362"></A>
7489 <A NAME="IDX363"></A>
7490 <A NAME="IDX364"></A>
7491 </P>
7492 <DL>
7493 <DT><U>Function:</U> <B>XDATE.JDAY(<VAR>date</VAR>)</B>
7494 <DD>Results in the day of the year (as an integer between 1 and 366)
7495 corresponding to <VAR>date</VAR>.
7496 </DL>
7497 <P>
7498
7499 <A NAME="IDX365"></A>
7500 <A NAME="IDX366"></A>
7501 <A NAME="IDX367"></A>
7502 </P>
7503 <DL>
7504 <DT><U>Function:</U> <B>XDATE.MDAY(<VAR>date</VAR>)</B>
7505 <DD>Results in the day of the month (as an integer between 1 and 31)
7506 corresponding to <VAR>date</VAR>.
7507 </DL>
7508 <P>
7509
7510 <A NAME="IDX368"></A>
7511 <A NAME="IDX369"></A>
7512 <A NAME="IDX370"></A>
7513 <A NAME="IDX371"></A>
7514 </P>
7515 <DL>
7516 <DT><U>Function:</U> <B>XDATE.MINUTE(<VAR>time-or-date</VAR>)</B>
7517 <DD>Results in the number of minutes (as an integer between 0 and 59) after
7518 the last hour in <VAR>time-or-date</VAR>. (XDATE.MINUTE(<VAR>x</VAR>) is
7519 equivalent to MOD(TRUNC(<VAR>x</VAR>/60),60)) Applying this function to a
7520 time is a Portability: none feature.
7521 </DL>
7522 <P>
7523
7524 <A NAME="IDX372"></A>
7525 <A NAME="IDX373"></A>
7526 <A NAME="IDX374"></A>
7527 </P>
7528 <DL>
7529 <DT><U>Function:</U> <B>XDATE.MONTH(<VAR>date</VAR>)</B>
7530 <DD>Results in the month of the year (as an integer between 1 and 12)
7531 corresponding to <VAR>date</VAR>.
7532 </DL>
7533 <P>
7534
7535 <A NAME="IDX375"></A>
7536 <A NAME="IDX376"></A>
7537 <A NAME="IDX377"></A>
7538 </P>
7539 <DL>
7540 <DT><U>Function:</U> <B>XDATE.QUARTER(<VAR>date</VAR>)</B>
7541 <DD>Results in the quarter of the year (as an integer between 1 and 4)
7542 corresponding to <VAR>date</VAR>.
7543 </DL>
7544 <P>
7545
7546 <A NAME="IDX378"></A>
7547 <A NAME="IDX379"></A>
7548 <A NAME="IDX380"></A>
7549 <A NAME="IDX381"></A>
7550 </P>
7551 <DL>
7552 <DT><U>Function:</U> <B>XDATE.SECOND(<VAR>time-or-date</VAR>)</B>
7553 <DD>Results in the number of whole seconds after the last whole minute (as
7554 an integer between 0 and 59) in <VAR>time-or-date</VAR>.
7555 (XDATE.SECOND(<VAR>x</VAR>) is equivalent to MOD(<VAR>x</VAR>, 60).) Applying
7556 this function to a time is a Portability: none feature.
7557 </DL>
7558 <P>
7559
7560 <A NAME="IDX382"></A>
7561 <A NAME="IDX383"></A>
7562 <A NAME="IDX384"></A>
7563 </P>
7564 <DL>
7565 <DT><U>Function:</U> <B>XDATE.TDAY(<VAR>time</VAR>)</B>
7566 <DD>Results in the number of whole days (as an integer) in <VAR>time</VAR>.
7567 (XDATE.TDAY(<VAR>x</VAR>) is equivalent to TRUNC(<VAR>x</VAR>/86400).)
7568 </DL>
7569 <P>
7570
7571 <A NAME="IDX385"></A>
7572 <A NAME="IDX386"></A>
7573 <A NAME="IDX387"></A>
7574 </P>
7575 <DL>
7576 <DT><U>Function:</U> <B>XDATE.TIME(<VAR>date</VAR>)</B>
7577 <DD>Results in the time of day at the instant corresponding to <VAR>date</VAR>,
7578 in PSPP time format. This is the number of seconds since
7579 midnight on the day corresponding to <VAR>date</VAR>. (XDATE.TIME(<VAR>x</VAR>) is
7580 equivalent to TRUNC(<VAR>x</VAR>/86400)*86400.)
7581 </DL>
7582 <P>
7583
7584 <A NAME="IDX388"></A>
7585 <A NAME="IDX389"></A>
7586 <A NAME="IDX390"></A>
7587 </P>
7588 <DL>
7589 <DT><U>Function:</U> <B>XDATE.WEEK(<VAR>date</VAR>)</B>
7590 <DD>Results in the week of the year (as an integer between 1 and 53)
7591 corresponding to <VAR>date</VAR>.
7592 </DL>
7593 <P>
7594
7595 <A NAME="IDX391"></A>
7596 <A NAME="IDX392"></A>
7597 <A NAME="IDX393"></A>
7598 <A NAME="IDX394"></A>
7599 <A NAME="IDX395"></A>
7600 </P>
7601 <DL>
7602 <DT><U>Function:</U> <B>XDATE.WKDAY(<VAR>date</VAR>)</B>
7603 <DD>Results in the day of week (as an integer between 1 and 7) corresponding
7604 to <VAR>date</VAR>. The days of the week are:
7605 <P>
7606
7607 </P>
7608 <DL COMPACT>
7609 <DT>1
7610 <DD>Sunday
7611 <DT>2
7612 <DD>Monday
7613 <DT>3
7614 <DD>Tuesday
7615 <DT>4
7616 <DD>Wednesday
7617 <DT>5
7618 <DD>Thursday
7619 <DT>6
7620 <DD>Friday
7621 <DT>7
7622 <DD>Saturday
7623 </DL>
7624 </DL>
7625 <P>
7626
7627 <A NAME="IDX396"></A>
7628 <A NAME="IDX397"></A>
7629 <A NAME="IDX398"></A>
7630 </P>
7631 <DL>
7632 <DT><U>Function:</U> <B>XDATE.YEAR</B> <I>(<VAR>date</VAR>)</I>
7633 <DD>Returns the year (as an integer between 1582 and 19999) corresponding to
7634 <VAR>date</VAR>.
7635 </DL>
7636 <P>
7637
7638 <A NAME="Miscellaneous Functions"></A>
7639 <HR SIZE="6">
7640 <A NAME="SEC80"></A>
7641 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
7642 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC79"> &lt; </A>]</TD>
7643 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC81"> &gt; </A>]</TD>
7644 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
7645 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC65"> Up </A>]</TD>
7646 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
7647 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
7648 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
7649 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
7650 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
7651 </TR></TABLE>
7652 <H3> 8.7.10 Miscellaneous Functions </H3>
7653 <!--docid::SEC80::-->
7654 <P>
7655
7656 Miscellaneous functions take various arguments and produce various
7657 results.
7658 </P>
7659 <P>
7660
7661 <A NAME="IDX399"></A>
7662 <A NAME="IDX400"></A>
7663 <A NAME="IDX401"></A>
7664 </P>
7665 <DL>
7666 <DT><U>Function:</U> <B>LAG</B> <I>(<VAR>variable</VAR>)</I>
7667 <DD><VAR>variable</VAR> must be a numeric or string variable name. <CODE>LAG</CODE>
7668 results in the value of that variable for the case before the current
7669 one. In case-selection procedures, <CODE>LAG</CODE> results in the value of
7670 the variable for the last case selected. Results in system-missing (for
7671 numeric variables) or blanks (for string variables) for the first case
7672 or before any cases are selected.
7673 </DL>
7674 <P>
7675
7676 <A NAME="IDX402"></A>
7677 </P>
7678 <DL>
7679 <DT><U>Function:</U> <B>LAG</B> <I>(<VAR>variable</VAR>, <VAR>ncases</VAR>)</I>
7680 <DD><VAR>variable</VAR> must be a numeric or string variable name. <VAR>ncases</VAR>
7681 must be a small positive constant integer, although there is no explicit
7682 limit. (Use of a large value for <VAR>ncases</VAR> will increase memory
7683 consumption, since PSPP must keep <VAR>ncases</VAR> cases in memory.)
7684 <CODE>LAG (<VAR>variable</VAR>, <VAR>ncases</VAR></CODE> results in the value of
7685 <VAR>variable</VAR> that is <VAR>ncases</VAR> before the case currently being
7686 processed. See <CODE>LAG (<VAR>variable</VAR>)</CODE> above for more details.
7687 </DL>
7688 <P>
7689
7690 <A NAME="IDX403"></A>
7691 <A NAME="IDX404"></A>
7692 <A NAME="IDX405"></A>
7693 </P>
7694 <DL>
7695 <DT><U>Function:</U> <B>YRMODA</B> <I>(<VAR>year</VAR>, <VAR>month</VAR>, <VAR>day</VAR>)</I>
7696 <DD><VAR>year</VAR> is a year between 0 and 199 or 1582 and 19999. <VAR>month</VAR> is
7697 a month between 1 and 12. <VAR>day</VAR> is a day between 1 and 31. If
7698 <VAR>month</VAR> or <VAR>day</VAR> is out-of-range, it changes the next higher
7699 unit. For instance, a <VAR>day</VAR> of 0 refers to the last day of the
7700 previous month, and a <VAR>month</VAR> of 13 refers to the first month of the
7701 next year. <VAR>year</VAR> must be in range. If <VAR>year</VAR> is between 0 and
7702 199, 1900 is added. <VAR>year</VAR>, <VAR>month</VAR>, and <VAR>day</VAR> must all be
7703 integers.
7704 <P>
7705
7706 <CODE>YRMODA</CODE> results in the number of days between 15 Oct 1582 and
7707 the date specified, plus one. The date passed to <CODE>YRMODA</CODE> must be
7708 on or after 15 Oct 1582. 15 Oct 1582 has a value of 1.
7709 </P>
7710 </DL>
7711 <P>
7712
7713 <A NAME="Functions Not Implemented"></A>
7714 <HR SIZE="6">
7715 <A NAME="SEC81"></A>
7716 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
7717 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC80"> &lt; </A>]</TD>
7718 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC82"> &gt; </A>]</TD>
7719 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
7720 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC65"> Up </A>]</TD>
7721 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
7722 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
7723 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
7724 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
7725 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
7726 </TR></TABLE>
7727 <H3> 8.7.11 Functions Not Implemented </H3>
7728 <!--docid::SEC81::-->
7729 <P>
7730
7731 These functions are not yet implemented and thus not yet documented,
7732 since it's a hassle.
7733 </P>
7734 <P>
7735
7736 <A NAME="IDX406"></A>
7737 <A NAME="IDX407"></A>
7738 <A NAME="IDX408"></A>
7739 <A NAME="IDX409"></A>
7740 <A NAME="IDX410"></A>
7741 <A NAME="IDX411"></A>
7742 </P>
7743 <P>
7744
7745 <UL>
7746 <LI>
7747 <CODE>CDF.xxx</CODE>
7748 <LI>
7749 <CODE>CDFNORM</CODE>
7750 <LI>
7751 <CODE>IDF.xxx</CODE>
7752 <LI>
7753 <CODE>NCDF.xxx</CODE>
7754 <LI>
7755 <CODE>PROBIT</CODE>
7756 <LI>
7757 <CODE>RV.xxx</CODE>
7758 </UL>
7759 <P>
7760
7761 <A NAME="Order of Operations"></A>
7762 <HR SIZE="6">
7763 <A NAME="SEC82"></A>
7764 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
7765 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC81"> &lt; </A>]</TD>
7766 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt; </A>]</TD>
7767 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
7768 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> Up </A>]</TD>
7769 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &gt;&gt; </A>]</TD>
7770 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
7771 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
7772 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
7773 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
7774 </TR></TABLE>
7775 <H2> 8.8 Operator Precedence </H2>
7776 <!--docid::SEC82::-->
7777 <P>
7778
7779 The following table describes operator precedence. Smaller-numbered
7780 levels in the table have higher precedence. Within a level, operations
7781 are performed from left to right, except for level 2 (exponentiation),
7782 where operations are performed from right to left. If an operator
7783 appears in the table in two places (<CODE>-</CODE>), the first occurrence is
7784 unary, the second is binary.
7785 </P>
7786 <P>
7787
7788 <OL>
7789 <LI>
7790 <CODE>( )</CODE>
7791 <LI>
7792 <CODE>**</CODE>
7793 <LI>
7794 <CODE>-</CODE>
7795 <LI>
7796 <CODE>* /</CODE>
7797 <LI>
7798 <CODE>+ -</CODE>
7799 <LI>
7800 <CODE>EQ GE GT LE LT NE</CODE>
7801 <LI>
7802 <CODE>AND NOT OR</CODE>
7803 </OL>
7804 <P>
7805
7806 <A NAME="Data Input and Output"></A>
7807 <HR SIZE="6">
7808 <A NAME="SEC83"></A>
7809 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
7810 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC82"> &lt; </A>]</TD>
7811 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC84"> &gt; </A>]</TD>
7812 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC58"> &lt;&lt; </A>]</TD>
7813 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
7814 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
7815 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
7816 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
7817 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
7818 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
7819 </TR></TABLE>
7820 <H1> 9. Data Input and Output </H1>
7821 <!--docid::SEC83::-->
7822 <P>
7823
7824 Data is the focus of the PSPP language. This chapter examines
7825 the PSPP commands for defining variables and reading and writing data.
7826 </P>
7827 <P>
7828
7829 <BLOCKQUOTE>
7830 <STRONG>Please note:</STRONG> Data is not actually read until a procedure is
7831 executed. These commands tell PSPP how to read data, but they
7832 do not <EM>cause</EM> PSPP to read data.
7833 </BLOCKQUOTE>
7834 <P>
7835
7836 <TABLE BORDER="0" CELLSPACING="0">
7837 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC84">9.1 BEGIN DATA</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Embed data within a syntax file.</TD></TR>
7838 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC85">9.2 CLEAR TRANSFORMATIONS</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Clear pending transformations.</TD></TR>
7839 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC86">9.3 DATA LIST</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Fundamental data reading command.</TD></TR>
7840 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC91">9.4 END CASE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Output the current case.</TD></TR>
7841 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC92">9.5 END FILE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Terminate the current input program.</TD></TR>
7842 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC93">9.6 FILE HANDLE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Support for fixed-length records.</TD></TR>
7843 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC94">9.7 INPUT PROGRAM</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Support for complex input programs.</TD></TR>
7844 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC95">9.8 LIST</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">List cases in the active file.</TD></TR>
7845 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC96">9.9 MATRIX DATA</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Read matrices in text format.</TD></TR>
7846 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC97">9.10 NEW FILE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Clear the active file and dictionary.</TD></TR>
7847 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC98">9.11 PRINT</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Display values in print formats.</TD></TR>
7848 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC99">9.12 PRINT EJECT</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Eject the current page then print.</TD></TR>
7849 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC100">9.13 PRINT SPACE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Print blank lines.</TD></TR>
7850 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC101">9.14 REREAD</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Take another look at the previous input line.</TD></TR>
7851 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC102">9.15 REPEATING DATA</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Multiple cases on a single line.</TD></TR>
7852 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC103">9.16 WRITE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Display values in write formats.</TD></TR>
7853 </TABLE>
7854 <P>
7855
7856 <A NAME="BEGIN DATA"></A>
7857 <HR SIZE="6">
7858 <A NAME="SEC84"></A>
7859 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
7860 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt; </A>]</TD>
7861 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC85"> &gt; </A>]</TD>
7862 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
7863 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> Up </A>]</TD>
7864 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
7865 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
7866 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
7867 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
7868 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
7869 </TR></TABLE>
7870 <H2> 9.1 BEGIN DATA </H2>
7871 <!--docid::SEC84::-->
7872 <P>
7873
7874 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">BEGIN DATA.
7875 <small>...</small>
7876 END DATA.
7877 </pre></td></tr></table><P>
7878
7879 BEGIN DATA and END DATA can be used to embed raw ASCII data in a PSPP
7880 syntax file. DATA LIST or another input procedure must be used before
7881 BEGIN DATA (see section <A HREF="pspp.html#SEC86">9.3 DATA LIST</A>). BEGIN DATA and END DATA must be used
7882 together. The END DATA command must appear by itself on a single line,
7883 with no leading whitespace and exactly one space between the words
7884 <CODE>END</CODE> and <CODE>DATA</CODE>, followed immediately by the terminal dot,
7885 like this:
7886 </P>
7887 <P>
7888
7889 <TABLE><tr><td>&nbsp;</td><td class=example><pre>END DATA.
7890 </pre></td></tr></table><P>
7891
7892 <A NAME="CLEAR TRANSFORMATIONS"></A>
7893 <HR SIZE="6">
7894 <A NAME="SEC85"></A>
7895 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
7896 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC84"> &lt; </A>]</TD>
7897 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC86"> &gt; </A>]</TD>
7898 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
7899 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> Up </A>]</TD>
7900 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
7901 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
7902 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
7903 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
7904 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
7905 </TR></TABLE>
7906 <H2> 9.2 CLEAR TRANSFORMATIONS </H2>
7907 <!--docid::SEC85::-->
7908 <P>
7909
7910 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">CLEAR TRANSFORMATIONS.
7911 </pre></td></tr></table><P>
7912
7913 The CLEAR TRANSFORMATIONS command clears out all pending
7914 transformations. It does not cancel the current input program. It is
7915 valid only when PSPP is interactive, not in syntax files.
7916 </P>
7917 <P>
7918
7919 <A NAME="DATA LIST"></A>
7920 <HR SIZE="6">
7921 <A NAME="SEC86"></A>
7922 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
7923 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC85"> &lt; </A>]</TD>
7924 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC87"> &gt; </A>]</TD>
7925 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
7926 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> Up </A>]</TD>
7927 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
7928 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
7929 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
7930 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
7931 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
7932 </TR></TABLE>
7933 <H2> 9.3 DATA LIST </H2>
7934 <!--docid::SEC86::-->
7935 <P>
7936
7937 Used to read text or binary data, DATA LIST is the most
7938 fundamental data-reading command. Even the more sophisticated input
7939 methods use DATA LIST commands as a building block.
7940 Understanding DATA LIST is important to understanding how to use
7941 PSPP to read your data files.
7942 </P>
7943 <P>
7944
7945 There are two major variants of DATA LIST, which are fixed
7946 format and free format. In addition, free format has a minor variant,
7947 list format, which is discussed in terms of its differences from vanilla
7948 free format.
7949 </P>
7950 <P>
7951
7952 Each form of DATA LIST is described in detail below.
7953 </P>
7954 <P>
7955
7956 <TABLE BORDER="0" CELLSPACING="0">
7957 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC87">9.3.1 DATA LIST FIXED</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Fixed columnar locations for data.</TD></TR>
7958 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC89">9.3.2 DATA LIST FREE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Any spacing you like.</TD></TR>
7959 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC90">9.3.3 DATA LIST LIST</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Each case must be on a single line.</TD></TR>
7960 </TABLE>
7961 <P>
7962
7963 <A NAME="DATA LIST FIXED"></A>
7964 <HR SIZE="6">
7965 <A NAME="SEC87"></A>
7966 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
7967 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC86"> &lt; </A>]</TD>
7968 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC88"> &gt; </A>]</TD>
7969 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
7970 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC86"> Up </A>]</TD>
7971 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
7972 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
7973 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
7974 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
7975 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
7976 </TR></TABLE>
7977 <H3> 9.3.1 DATA LIST FIXED </H3>
7978 <!--docid::SEC87::-->
7979 <P>
7980
7981 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">DATA LIST [FIXED]
7982 {TABLE,NOTABLE}
7983 FILE='filename'
7984 RECORDS=record_count
7985 END=end_var
7986 /[line_no] var_spec<small>...</small>
7987
7988 where each var_spec takes one of the forms
7989 var_list start-end [type_spec]
7990 var_list (fortran_spec)
7991 </pre></td></tr></table><P>
7992
7993 DATA LIST FIXED is used to read data files that have values at fixed
7994 positions on each line of single-line or multiline records. The
7995 keyword FIXED is optional.
7996 </P>
7997 <P>
7998
7999 The FILE subcommand must be used if input is to be taken from an
8000 external file. It may be used to specify a filename as a string or a
8001 file handle (see section <A HREF="pspp.html#SEC93">9.6 FILE HANDLE</A>). If the FILE subcommand is not used,
8002 then input is assumed to be specified within the command file using
8003 BEGIN DATA<small>...</small>END DATA (see section <A HREF="pspp.html#SEC84">9.1 BEGIN DATA</A>).
8004 </P>
8005 <P>
8006
8007 The optional RECORDS subcommand, which takes a single integer as an
8008 argument, is used to specify the number of lines per record. If RECORDS
8009 is not specified, then the number of lines per record is calculated from
8010 the list of variable specifications later in the DATA LIST command.
8011 </P>
8012 <P>
8013
8014 The END subcommand is only useful in conjunction with the INPUT PROGRAM
8015 input procedure, and for that reason it is not discussed here
8016 (see section <A HREF="pspp.html#SEC94">9.7 INPUT PROGRAM</A>).
8017 </P>
8018 <P>
8019
8020 DATA LIST can optionally output a table describing how the data file
8021 will be read. The TABLE subcommand enables this output, and NOTABLE
8022 disables it. The default is to output the table.
8023 </P>
8024 <P>
8025
8026 The list of variables to be read from the data list must come last in
8027 the DATA LIST command. Each line in the data record is introduced by a
8028 slash (`<SAMP>/</SAMP>'). Optionally, a line number may follow the slash.
8029 Following, any number of variable specifications may be present.
8030 </P>
8031 <P>
8032
8033 Each variable specification consists of a list of variable names
8034 followed by a description of their location on the input line. Sets of
8035 variables may specified using DATA LIST's TO convention (see section <A HREF="pspp.html#SEC53">7.6.3 Lists of variable names</A>). There are two ways to specify the location of the variable
8036 on the line: SPSS style and FORTRAN style.
8037 </P>
8038 <P>
8039
8040 With SPSS style, the starting column and ending column for the field
8041 are specified after the variable name, separated by a dash (`<SAMP>-</SAMP>').
8042 For instance, the third through fifth columns on a line would be
8043 specified `<SAMP>3-5</SAMP>'. By default, variables are considered to be in
8044 `<SAMP>F</SAMP>' format (see section <A HREF="pspp.html#SEC54">7.6.4 Input and Output Formats</A>). (This default can be
8045 changed; see <A HREF="pspp.html#SEC166">16.10 SET</A> for more information.)
8046 </P>
8047 <P>
8048
8049 When using SPSS style, to use a variable format other than the default,
8050 specify the format type in parentheses after the column numbers. For
8051 instance, for alphanumeric `<SAMP>A</SAMP>' format, use `<SAMP>(A)</SAMP>'.
8052 </P>
8053 <P>
8054
8055 In addition, implied decimal places can be specified in parentheses
8056 after the column numbers. As an example, suppose that a data file has a
8057 field in which the characters `<SAMP>1234</SAMP>' should be interpreted as
8058 having the value 12.34. Then this field has two implied decimal places,
8059 and the corresponding specification would be `<SAMP>(2)</SAMP>'. If a field
8060 that has implied decimal places contains a decimal point, then the
8061 implied decimal places are not applied.
8062 </P>
8063 <P>
8064
8065 Changing the variable format and adding implied decimal places can be
8066 done together; for instance, `<SAMP>(N,5)</SAMP>'.
8067 </P>
8068 <P>
8069
8070 When using SPSS style, the input and output width of each variable is
8071 computed from the field width. The field width must be evenly divisible
8072 into the number of variables specified.
8073 </P>
8074 <P>
8075
8076 FORTRAN style is an altogether different approach to specifying field
8077 locations. With this approach, a list of variable input format
8078 specifications, separated by commas, are placed after the variable names
8079 inside parentheses. Each format specifier advances as many characters
8080 into the input line as it uses.
8081 </P>
8082 <P>
8083
8084 In addition to the standard format specifiers (see section <A HREF="pspp.html#SEC54">7.6.4 Input and Output Formats</A>), FORTRAN style defines some extensions:
8085 </P>
8086 <P>
8087
8088 </P>
8089 <DL COMPACT>
8090 <DT><CODE>X</CODE>
8091 <DD>Advance the current column on this line by one character position.
8092 <P>
8093
8094 </P>
8095 <DT><CODE>T</CODE><VAR>x</VAR>
8096 <DD>Set the current column on this line to column <VAR>x</VAR>, with column
8097 numbers considered to begin with 1 at the left margin.
8098 <P>
8099
8100 </P>
8101 <DT><CODE>NEWREC</CODE><VAR>x</VAR>
8102 <DD>Skip forward <VAR>x</VAR> lines in the current record, resetting the active
8103 column to the left margin.
8104 <P>
8105
8106 </P>
8107 <DT>Repeat count
8108 <DD>Any format specifier may be preceded by a number. This causes the
8109 action of that format specifier to be repeated the specified number of
8110 times.
8111 <P>
8112
8113 </P>
8114 <DT>(<VAR>spec1</VAR>, <small>...</small>, <VAR>specN</VAR>)
8115 <DD>Group the given specifiers together. This is most useful when preceded
8116 by a repeat count. Groups may be nested arbitrarily.
8117 </DL>
8118 <P>
8119
8120 FORTRAN and SPSS styles may be freely intermixed. SPSS style leaves the
8121 active column immediately after the ending column specified. Record
8122 motion using <CODE>NEWREC</CODE> in FORTRAN style also applies to later
8123 FORTRAN and SPSS specifiers.
8124
8125 <TABLE BORDER="0" CELLSPACING="0">
8126 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC88">Examples</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Examples of DATA LIST FIXED.</TD></TR>
8127 </TABLE>
8128 <P>
8129
8130 <A NAME="DATA LIST FIXED Examples"></A>
8131 <HR SIZE="6">
8132 <A NAME="SEC88"></A>
8133 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
8134 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC87"> &lt; </A>]</TD>
8135 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC89"> &gt; </A>]</TD>
8136 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC87"> &lt;&lt; </A>]</TD>
8137 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC87"> Up </A>]</TD>
8138 <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
8139 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
8140 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
8141 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
8142 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
8143 </TR></TABLE>
8144 <H4> Examples </H4>
8145 <!--docid::SEC88::-->
8146 <P>
8147
8148 <OL>
8149 <LI>
8150 <TABLE><tr><td>&nbsp;</td><td class=example><pre>DATA LIST TABLE /NAME 1-10 (A) INFO1 TO INFO3 12-17 (1).
8151
8152 BEGIN DATA.
8153 John Smith 102311
8154 Bob Arnold 122015
8155 Bill Yates 918 6
8156 END DATA.
8157 </pre></td></tr></table><P>
8158
8159 Defines the following variables:
8160 </P>
8161 <P>
8162
8163 <UL>
8164 <LI>
8165 <CODE>NAME</CODE>, a 10-character-wide long string variable, in columns 1
8166 through 10.
8167 <P>
8168
8169 </P>
8170 <LI>
8171 <CODE>INFO1</CODE>, a numeric variable, in columns 12 through 13.
8172 <P>
8173
8174 </P>
8175 <LI>
8176 <CODE>INFO2</CODE>, a numeric variable, in columns 14 through 15.
8177 <P>
8178
8179 </P>
8180 <LI>
8181 <CODE>INFO3</CODE>, a numeric variable, in columns 16 through 17.
8182 </UL>
8183 <P>
8184
8185 The <CODE>BEGIN DATA</CODE>/<CODE>END DATA</CODE> commands cause three cases to be
8186 defined:
8187 </P>
8188 <P>
8189
8190 <TABLE><tr><td>&nbsp;</td><td class=example><pre>Case NAME INFO1 INFO2 INFO3
8191 1 John Smith 10 23 11
8192 2 Bob Arnold 12 20 15
8193 3 Bill Yates 9 18 6
8194 </pre></td></tr></table><P>
8195
8196 The <CODE>TABLE</CODE> keyword causes PSPP to print out a table
8197 describing the four variables defined.
8198 </P>
8199 <P>
8200
8201 </P>
8202 <LI>
8203 <TABLE><tr><td>&nbsp;</td><td class=example><pre>DAT LIS FIL=&quot;survey.dat&quot;
8204 /ID 1-5 NAME 7-36 (A) SURNAME 38-67 (A) MINITIAL 69 (A)
8205 /Q01 TO Q50 7-56
8206 /.
8207 </pre></td></tr></table><P>
8208
8209 Defines the following variables:
8210 </P>
8211 <P>
8212
8213 <UL>
8214 <LI>
8215 <CODE>ID</CODE>, a numeric variable, in columns 1-5 of the first record.
8216 <P>
8217
8218 </P>
8219 <LI>
8220 <CODE>NAME</CODE>, a 30-character long string variable, in columns 7-36 of the
8221 first record.
8222 <P>
8223
8224 </P>
8225 <LI>
8226 <CODE>SURNAME</CODE>, a 30-character long string variable, in columns 38-67 of
8227 the first record.
8228 <P>
8229
8230 </P>
8231 <LI>
8232 <CODE>MINITIAL</CODE>, a 1-character short string variable, in column 69 of
8233 the first record.
8234 <P>
8235
8236 </P>
8237 <LI>
8238 Fifty variables <CODE>Q01</CODE>, <CODE>Q02</CODE>, <CODE>Q03</CODE>, <small>...</small>, <CODE>Q49</CODE>,
8239 <CODE>Q50</CODE>, all numeric, <CODE>Q01</CODE> in column 7, <CODE>Q02</CODE> in column 8,
8240 <small>...</small>, <CODE>Q49</CODE> in column 55, <CODE>Q50</CODE> in column 56, all in the second
8241 record.
8242 </UL>
8243 <P>
8244
8245 Cases are separated by a blank record.
8246 </P>
8247 <P>
8248
8249 Data is read from file `<TT>survey.dat</TT>' in the current directory.
8250 </P>
8251 <P>
8252
8253 This example shows keywords abbreviated to their first 3 letters.
8254 </P>
8255 <P>
8256
8257 </OL>
8258 <P>
8259
8260 <A NAME="DATA LIST FREE"></A>
8261 <HR SIZE="6">
8262 <A NAME="SEC89"></A>
8263 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
8264 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC88"> &lt; </A>]</TD>
8265 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC90"> &gt; </A>]</TD>
8266 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
8267 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC86"> Up </A>]</TD>
8268 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
8269 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
8270 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
8271 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
8272 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
8273 </TR></TABLE>
8274 <H3> 9.3.2 DATA LIST FREE </H3>
8275 <!--docid::SEC89::-->
8276 <P>
8277
8278 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">DATA LIST FREE
8279 [{NOTABLE,TABLE}]
8280 FILE='filename'
8281 END=end_var
8282 /var_spec<small>...</small>
8283
8284 where each var_spec takes one of the forms
8285 var_list [(type_spec)]
8286 var_list *
8287 </pre></td></tr></table><P>
8288
8289 In free format, the input data is structured as a series of comma- or
8290 whitespace-delimited fields (end of line is one form of whitespace; it
8291 is not treated specially). Field contents may be surrounded by matched
8292 pairs of apostrophes (`<SAMP>'</SAMP>') or quotes (`<SAMP>&quot;</SAMP>'), or they may be
8293 unenclosed. For any type of field leading white space (up to the
8294 apostrophe or quote, if any) is not included in the field.
8295 </P>
8296 <P>
8297
8298 Multiple consecutive delimiters are equivalent to a single delimiter.
8299 To specify an empty field, write an empty set of single or double
8300 quotes; for instance, `<SAMP>&quot;&quot;</SAMP>'.
8301 </P>
8302 <P>
8303
8304 The NOTABLE and TABLE subcommands are as in DATA LIST FIXED above.
8305 NOTABLE is the default.
8306 </P>
8307 <P>
8308
8309 The FILE and END subcommands are as in DATA LIST FIXED above.
8310 </P>
8311 <P>
8312
8313 The variables to be parsed are given as a single list of variable names.
8314 This list must be introduced by a single slash (`<SAMP>/</SAMP>'). The set of
8315 variable names may contain format specifications in parentheses
8316 (see section <A HREF="pspp.html#SEC54">7.6.4 Input and Output Formats</A>). Format specifications apply to all
8317 variables back to the previous parenthesized format specification.
8318 </P>
8319 <P>
8320
8321 In addition, an asterisk may be used to indicate that all variables
8322 preceding it are to have input/output format `<SAMP>F8.0</SAMP>'.
8323 </P>
8324 <P>
8325
8326 Specified field widths are ignored on input, although all normal limits
8327 on field width apply, but they are honored on output.
8328 </P>
8329 <P>
8330
8331 <A NAME="DATA LIST LIST"></A>
8332 <HR SIZE="6">
8333 <A NAME="SEC90"></A>
8334 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
8335 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC89"> &lt; </A>]</TD>
8336 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC91"> &gt; </A>]</TD>
8337 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
8338 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC86"> Up </A>]</TD>
8339 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
8340 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
8341 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
8342 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
8343 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
8344 </TR></TABLE>
8345 <H3> 9.3.3 DATA LIST LIST </H3>
8346 <!--docid::SEC90::-->
8347 <P>
8348
8349 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">DATA LIST LIST
8350 [{NOTABLE,TABLE}]
8351 FILE='filename'
8352 END=end_var
8353 /var_spec<small>...</small>
8354
8355 where each var_spec takes one of the forms
8356 var_list [(type_spec)]
8357 var_list *
8358 </pre></td></tr></table><P>
8359
8360 Syntactically and semantically, DATA LIST LIST is equivalent to DATA
8361 LIST FREE, with one exception: each input line is expected to correspond
8362 to exactly one input record. If more or fewer fields are found on an
8363 input line than expected, an appropriate diagnostic is issued.
8364 </P>
8365 <P>
8366
8367 <A NAME="END CASE"></A>
8368 <HR SIZE="6">
8369 <A NAME="SEC91"></A>
8370 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
8371 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC90"> &lt; </A>]</TD>
8372 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC92"> &gt; </A>]</TD>
8373 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
8374 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> Up </A>]</TD>
8375 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
8376 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
8377 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
8378 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
8379 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
8380 </TR></TABLE>
8381 <H2> 9.4 END CASE </H2>
8382 <!--docid::SEC91::-->
8383 <P>
8384
8385 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">END CASE.
8386 </pre></td></tr></table><P>
8387
8388 END CASE is used within INPUT PROGRAM to output the current case.
8389 See section <A HREF="pspp.html#SEC94">9.7 INPUT PROGRAM</A>.
8390 </P>
8391 <P>
8392
8393 <A NAME="END FILE"></A>
8394 <HR SIZE="6">
8395 <A NAME="SEC92"></A>
8396 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
8397 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC91"> &lt; </A>]</TD>
8398 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC93"> &gt; </A>]</TD>
8399 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
8400 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> Up </A>]</TD>
8401 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
8402 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
8403 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
8404 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
8405 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
8406 </TR></TABLE>
8407 <H2> 9.5 END FILE </H2>
8408 <!--docid::SEC92::-->
8409 <P>
8410
8411 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">END FILE.
8412 </pre></td></tr></table><P>
8413
8414 END FILE is used within INPUT PROGRAM to terminate the current input
8415 program. See section <A HREF="pspp.html#SEC94">9.7 INPUT PROGRAM</A>.
8416 </P>
8417 <P>
8418
8419 <A NAME="FILE HANDLE"></A>
8420 <HR SIZE="6">
8421 <A NAME="SEC93"></A>
8422 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
8423 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC92"> &lt; </A>]</TD>
8424 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC94"> &gt; </A>]</TD>
8425 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
8426 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> Up </A>]</TD>
8427 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
8428 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
8429 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
8430 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
8431 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
8432 </TR></TABLE>
8433 <H2> 9.6 FILE HANDLE </H2>
8434 <!--docid::SEC93::-->
8435 <P>
8436
8437 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">FILE HANDLE handle_name
8438 /NAME='filename'
8439 /RECFORM={VARIABLE,FIXED,SPANNED}
8440 /LRECL=rec_len
8441 /MODE={CHARACTER,IMAGE,BINARY,MULTIPUNCH,360}
8442 </pre></td></tr></table><P>
8443
8444 Use the FILE HANDLE command to define the attributes of a file that does
8445 not use conventional variable-length records terminated by newline
8446 characters.
8447 </P>
8448 <P>
8449
8450 Specify the file handle name as an identifier. Any given identifier may
8451 only appear once in a PSPP run. File handles may not be reassigned to a
8452 different file. The file handle name must immediately follow the FILE
8453 HANDLE command name.
8454 </P>
8455 <P>
8456
8457 The NAME subcommand specifies the name of the file associated with the
8458 handle. It is the only required subcommand.
8459 </P>
8460 <P>
8461
8462 The RECFORM subcommand specifies how the file is laid out. VARIABLE
8463 specifies variable-length lines terminated with newlines, and it is the
8464 default. FIXED specifies fixed-length records. SPANNED is not
8465 supported.
8466 </P>
8467 <P>
8468
8469 LRECL specifies the length of fixed-length records. It is required if
8470 <CODE>/RECFORM FIXED</CODE> is specified.
8471 </P>
8472 <P>
8473
8474 MODE specifies a file mode. CHARACTER, the default, causes the data
8475 file to be opened in ANSI C text mode. BINARY causes the data file to
8476 be opened in ANSI C binary mode. The other possibilities are not
8477 supported.
8478 </P>
8479 <P>
8480
8481 <A NAME="INPUT PROGRAM"></A>
8482 <HR SIZE="6">
8483 <A NAME="SEC94"></A>
8484 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
8485 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC93"> &lt; </A>]</TD>
8486 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC95"> &gt; </A>]</TD>
8487 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
8488 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> Up </A>]</TD>
8489 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
8490 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
8491 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
8492 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
8493 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
8494 </TR></TABLE>
8495 <H2> 9.7 INPUT PROGRAM </H2>
8496 <!--docid::SEC94::-->
8497 <P>
8498
8499 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">INPUT PROGRAM.
8500 <small>...</small> input commands <small>...</small>
8501 END INPUT PROGRAM.
8502 </pre></td></tr></table><P>
8503
8504 The INPUT PROGRAM<small>...</small>END INPUT PROGRAM construct is used to specify a
8505 complex input program. By placing data input commands within INPUT
8506 PROGRAM, PSPP programs can take advantage of more complex file
8507 structures than available by using DATA LIST by itself.
8508 </P>
8509 <P>
8510
8511 The first sort of extended input program is to simply put multiple DATA
8512 LIST commands within the INPUT PROGRAM. This will cause all of the data
8513 files to be read in parallel. Input will stop when end of file is
8514 reached on any of the data files.
8515 </P>
8516 <P>
8517
8518 Transformations, such as conditional and looping constructs, can also be
8519 included within an INPUT PROGRAM. These can be used to combine input
8520 from several data files in more complex ways. However, input will still
8521 stop when end of file is reached on any of the data files.
8522 </P>
8523 <P>
8524
8525 To prevent INPUT PROGRAM from terminating at the first end of file, use
8526 the END subcommand on DATA LIST. This subcommand takes a variable name,
8527 which should be a numeric scratch variable (see section <A HREF="pspp.html#SEC55">7.6.5 Scratch Variables</A>).
8528 (It need not be a scratch variable but otherwise the results can be
8529 surprising.) The value of this variable is set to 0 when reading the
8530 data file, or 1 when end of file is encountered.
8531 </P>
8532 <P>
8533
8534 Some additional commands are useful in conjunction with INPUT PROGRAM.
8535 END CASE is the first one. Normally each loop through the INPUT PROGRAM
8536 structure produces one case. But with END CASE you can control exactly
8537 when cases are output. When END CASE is used, looping from the end of
8538 INPUT PROGRAM to the beginning does not cause a case to be output.
8539 </P>
8540 <P>
8541
8542 END FILE is the other command. When the END subcommand is used on DATA
8543 LIST, there is no way for the INPUT PROGRAM construct to stop looping,
8544 so an infinite loop results. The END FILE command, when executed,
8545 stops the flow of input data and passes out of the INPUT PROGRAM
8546 structure.
8547 </P>
8548 <P>
8549
8550 All this is very confusing. A few examples should help to clarify.
8551 </P>
8552 <P>
8553
8554 <TABLE><tr><td>&nbsp;</td><td class=example><pre>INPUT PROGRAM.
8555 DATA LIST NOTABLE FILE='a.data'/X 1-10.
8556 DATA LIST NOTABLE FILE='b.data'/Y 1-10.
8557 END INPUT PROGRAM.
8558 LIST.
8559 </pre></td></tr></table><P>
8560
8561 The example above reads variable X from file `<TT>a.data</TT>' and variable
8562 Y from file `<TT>b.data</TT>'. If one file is shorter than the other then
8563 the extra data in the longer file is ignored.
8564 </P>
8565 <P>
8566
8567 <TABLE><tr><td>&nbsp;</td><td class=example><pre>INPUT PROGRAM.
8568 NUMERIC #A #B.
8569
8570 DO IF NOT #A.
8571 DATA LIST NOTABLE END=#A FILE='a.data'/X 1-10.
8572 END IF.
8573 DO IF NOT #B.
8574 DATA LIST NOTABLE END=#B FILE='b.data'/Y 1-10.
8575 END IF.
8576 DO IF #A AND #B.
8577 END FILE.
8578 END IF.
8579 END CASE.
8580 END INPUT PROGRAM.
8581 LIST.
8582 </pre></td></tr></table><P>
8583
8584 This example reads variable X from `<TT>a.data</TT>' and variable Y from
8585 `<TT>b.data</TT>'. If one file is shorter than the other then the missing
8586 field is set to the system-missing value alongside the present value for
8587 the remaining length of the longer file.
8588 </P>
8589 <P>
8590
8591 <TABLE><tr><td>&nbsp;</td><td class=example><pre>INPUT PROGRAM.
8592 NUMERIC #A #B.
8593
8594 DO IF #A.
8595 DATA LIST NOTABLE END=#B FILE='b.data'/X 1-10.
8596 DO IF #B.
8597 END FILE.
8598 ELSE.
8599 END CASE.
8600 END IF.
8601 ELSE.
8602 DATA LIST NOTABLE END=#A FILE='a.data'/X 1-10.
8603 DO IF NOT #A.
8604 END CASE.
8605 END IF.
8606 END IF.
8607 END INPUT PROGRAM.
8608 LIST.
8609 </pre></td></tr></table><P>
8610
8611 The above example reads data from file `<TT>a.data</TT>', then from
8612 `<TT>b.data</TT>', and concatenates them into a single active file.
8613 </P>
8614 <P>
8615
8616 <TABLE><tr><td>&nbsp;</td><td class=example><pre>INPUT PROGRAM.
8617 NUMERIC #EOF.
8618
8619 LOOP IF NOT #EOF.
8620 DATA LIST NOTABLE END=#EOF FILE='a.data'/X 1-10.
8621 DO IF NOT #EOF.
8622 END CASE.
8623 END IF.
8624 END LOOP.
8625
8626 COMPUTE #EOF = 0.
8627 LOOP IF NOT #EOF.
8628 DATA LIST NOTABLE END=#EOF FILE='b.data'/X 1-10.
8629 DO IF NOT #EOF.
8630 END CASE.
8631 END IF.
8632 END LOOP.
8633
8634 END FILE.
8635 END INPUT PROGRAM.
8636 LIST.
8637 </pre></td></tr></table><P>
8638
8639 The above example does the same thing as the previous example, in a
8640 different way.
8641 </P>
8642 <P>
8643
8644 <TABLE><tr><td>&nbsp;</td><td class=example><pre>INPUT PROGRAM.
8645 LOOP #I=1 TO 50.
8646 COMPUTE X=UNIFORM(10).
8647 END CASE.
8648 END LOOP.
8649 END FILE.
8650 END INPUT PROGRAM.
8651 LIST/FORMAT=NUMBERED.
8652 </pre></td></tr></table><P>
8653
8654 The above example causes an active file to be created consisting of 50
8655 random variates between 0 and 10.
8656 </P>
8657 <P>
8658
8659 <A NAME="LIST"></A>
8660 <HR SIZE="6">
8661 <A NAME="SEC95"></A>
8662 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
8663 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC94"> &lt; </A>]</TD>
8664 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC96"> &gt; </A>]</TD>
8665 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
8666 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> Up </A>]</TD>
8667 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
8668 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
8669 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
8670 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
8671 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
8672 </TR></TABLE>
8673 <H2> 9.8 LIST </H2>
8674 <!--docid::SEC95::-->
8675 <P>
8676
8677 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">LIST
8678 /VARIABLES=var_list
8679 /CASES=FROM start_index TO end_index BY incr_index
8680 /FORMAT={UNNUMBERED,NUMBERED} {WRAP,SINGLE}
8681 {NOWEIGHT,WEIGHT}
8682 </pre></td></tr></table><P>
8683
8684 The LIST procedure prints the values of specified variables to the
8685 listing file.
8686 </P>
8687 <P>
8688
8689 The VARIABLES subcommand specifies the variables whose values are to be
8690 printed. Keyword VARIABLES is optional. If VARIABLES subcommand is not
8691 specified then all variables in the active file are printed.
8692 </P>
8693 <P>
8694
8695 The CASES subcommand can be used to specify a subset of cases to be
8696 printed. Specify FROM and the case number of the first case to print,
8697 TO and the case number of the last case to print, and BY and the number
8698 of cases to advance between printing cases, or any subset of those
8699 settings. If CASES is not specified then all cases are printed.
8700 </P>
8701 <P>
8702
8703 The FORMAT subcommand can be used to change the output format. NUMBERED
8704 will print case numbers along with each case; UNNUMBERED, the default,
8705 causes the case numbers to be omitted. The WRAP and SINGLE settings are
8706 currently not used. WEIGHT will cause case weights to be printed along
8707 with variable values; NOWEIGHT, the default, causes case weights to be
8708 omitted from the output.
8709 </P>
8710 <P>
8711
8712 Case numbers start from 1. They are counted after all transformations
8713 have been considered.
8714 </P>
8715 <P>
8716
8717 LIST will attempt to fit all the values on a single line. If necessary,
8718 variable names will be display vertically in order to fit. If values
8719 cannot fit on a single line, then a multi-line format will be used.
8720 </P>
8721 <P>
8722
8723 LIST is a procedure. It causes the data to be read.
8724 </P>
8725 <P>
8726
8727 <A NAME="MATRIX DATA"></A>
8728 <HR SIZE="6">
8729 <A NAME="SEC96"></A>
8730 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
8731 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC95"> &lt; </A>]</TD>
8732 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC97"> &gt; </A>]</TD>
8733 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
8734 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> Up </A>]</TD>
8735 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
8736 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
8737 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
8738 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
8739 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
8740 </TR></TABLE>
8741 <H2> 9.9 MATRIX DATA </H2>
8742 <!--docid::SEC96::-->
8743 <P>
8744
8745 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">MATRIX DATA
8746 /VARIABLES=var_list
8747 /FILE='filename'
8748 /FORMAT={LIST,FREE} {LOWER,UPPER,FULL} {DIAGONAL,NODIAGONAL}
8749 /SPLIT={new_var,var_list}
8750 /FACTORS=var_list
8751 /CELLS=n_cells
8752 /N=n
8753 /CONTENTS={N_VECTOR,N_SCALAR,N_MATRIX,MEAN,STDDEV,COUNT,MSE,
8754 DFE,MAT,COV,CORR,PROX}
8755 </pre></td></tr></table><P>
8756
8757 The MATRIX DATA command reads square matrices in one of several textual
8758 formats. MATRIX DATA clears the dictionary and replaces it and reads a
8759 data file.
8760 </P>
8761 <P>
8762
8763 Use VARIABLES to specify the variables that form the rows and columns of
8764 the matrices. You may not specify a variable named VARNAME_. You
8765 should specify VARIABLES first.
8766 </P>
8767 <P>
8768
8769 Specify the file to read on FILE, either as a file name string or a file
8770 handle (see section <A HREF="pspp.html#SEC93">9.6 FILE HANDLE</A>). If FILE is not specified then matrix data
8771 must immediately follow MATRIX DATA with a BEGIN DATA<small>...</small>END DATA
8772 construct (see section <A HREF="pspp.html#SEC84">9.1 BEGIN DATA</A>).
8773 </P>
8774 <P>
8775
8776 The FORMAT subcommand specifies how the matrices are formatted. LIST,
8777 the default, indicates that there is one line per row of matrix data;
8778 FREE allows single matrix rows to be broken across multiple lines. This
8779 is analogous to the difference between DATA LIST FREE and DATA LIST LIST
8780 (see section <A HREF="pspp.html#SEC86">9.3 DATA LIST</A>). LOWER, the default, indicates that the lower
8781 triangle of the matrix is given; UPPER indicates the upper triangle; and
8782 FULL indicates that the entire matrix is given. DIAGONAL, the default,
8783 indicates that the diagonal is part of the data; NODIAGONAL indicates
8784 that it is omitted. DIAGONAL/NODIAGONAL have no effect when FULL is
8785 specified.
8786 </P>
8787 <P>
8788
8789 The SPLIT subcommand is used to specify SPLIT FILE variables for the
8790 input matrices (see section <A HREF="pspp.html#SEC144">13.6 SPLIT FILE</A>). Specify either a single variable
8791 not specified on VARIABLES, or one or more variables that are specified
8792 on VARIABLES. In the former case, the SPLIT values are not present in
8793 the data and ROWTYPE_ may not be specified on VARIABLES. In the latter
8794 case, the SPLIT values are present in the data.
8795 </P>
8796 <P>
8797
8798 Specify a list of factor variables on FACTORS. Factor variables must
8799 also be listed on VARIABLES. Factor variables are used when there are
8800 some variables where, for each possible combination of their values,
8801 statistics on the matrix variables are included in the data.
8802 </P>
8803 <P>
8804
8805 If FACTORS is specified and ROWTYPE_ is not specified on VARIABLES, the
8806 CELLS subcommand is required. Specify the number of factor variable
8807 combinations that are given. For instance, if factor variable A has 2
8808 values and factor variable B has 3 values, specify 6.
8809 </P>
8810 <P>
8811
8812 The N subcommand specifies a population number of observations. When N
8813 is specified, one N record is output for each SPLIT FILE.
8814 </P>
8815 <P>
8816
8817 Use CONTENTS to specify what sort of information the matrices include.
8818 Each possible option is described in more detail below. When ROWTYPE_
8819 is specified on VARIABLES, CONTENTS is optional; otherwise, if CONTENTS
8820 is not specified then /CONTENTS=CORR is assumed.
8821 </P>
8822 <P>
8823
8824 </P>
8825 <DL COMPACT>
8826 <DT>N
8827 <DD><DT>N_VECTOR
8828 <DD>Number of observations as a vector, one value for each variable.
8829 <DT>N_SCALAR
8830 <DD>Number of observations as a single value.
8831 <DT>N_MATRIX
8832 <DD>Matrix of counts.
8833 <DT>MEAN
8834 <DD>Vector of means.
8835 <DT>STDDEV
8836 <DD>Vector of standard deviations.
8837 <DT>COUNT
8838 <DD>Vector of counts.
8839 <DT>MSE
8840 <DD>Vector of mean squared errors.
8841 <DT>DFE
8842 <DD>Vector of degrees of freedom.
8843 <DT>MAT
8844 <DD>Generic matrix.
8845 <DT>COV
8846 <DD>Covariance matrix.
8847 <DT>CORR
8848 <DD>Correlation matrix.
8849 <DT>PROX
8850 <DD>Proximities matrix.
8851 </DL>
8852 <P>
8853
8854 The exact semantics of the matrices read by MATRIX DATA are complex.
8855 Right now MATRIX DATA isn't too useful due to a lack of procedures
8856 accepting or producing related data, so these semantics aren't
8857 documented. Later, they'll be described here in detail.
8858 </P>
8859 <P>
8860
8861 <A NAME="NEW FILE"></A>
8862 <HR SIZE="6">
8863 <A NAME="SEC97"></A>
8864 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
8865 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC96"> &lt; </A>]</TD>
8866 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC98"> &gt; </A>]</TD>
8867 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
8868 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> Up </A>]</TD>
8869 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
8870 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
8871 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
8872 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
8873 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
8874 </TR></TABLE>
8875 <H2> 9.10 NEW FILE </H2>
8876 <!--docid::SEC97::-->
8877 <P>
8878
8879 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">NEW FILE.
8880 </pre></td></tr></table><P>
8881
8882 The NEW FILE command clears the current active file.
8883 </P>
8884 <P>
8885
8886 <A NAME="PRINT"></A>
8887 <HR SIZE="6">
8888 <A NAME="SEC98"></A>
8889 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
8890 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC97"> &lt; </A>]</TD>
8891 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC99"> &gt; </A>]</TD>
8892 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
8893 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> Up </A>]</TD>
8894 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
8895 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
8896 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
8897 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
8898 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
8899 </TR></TABLE>
8900 <H2> 9.11 PRINT </H2>
8901 <!--docid::SEC98::-->
8902 <P>
8903
8904 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">PRINT
8905 OUTFILE='filename'
8906 RECORDS=n_lines
8907 {NOTABLE,TABLE}
8908 /[line_no] arg<small>...</small>
8909
8910 arg takes one of the following forms:
8911 'string' [start-end]
8912 var_list start-end [type_spec]
8913 var_list (fortran_spec)
8914 var_list *
8915 </pre></td></tr></table><P>
8916
8917 The PRINT transformation writes variable data to an output file. PRINT
8918 is executed when a procedure causes the data to be read. In order to
8919 execute the PRINT transformation without invoking a procedure, use the
8920 EXECUTE command (see section <A HREF="pspp.html#SEC162">16.6 EXECUTE</A>).
8921 </P>
8922 <P>
8923
8924 All PRINT subcommands are optional.
8925 </P>
8926 <P>
8927
8928 The OUTFILE subcommand specifies the file to receive the output. The
8929 file may be a file name as a string or a file handle (see section <A HREF="pspp.html#SEC93">9.6 FILE HANDLE</A>). If OUTFILE is not present then output will be sent to PSPP's
8930 output listing file.
8931 </P>
8932 <P>
8933
8934 The RECORDS subcommand specifies the number of lines to be output. The
8935 number of lines may optionally be surrounded by parentheses.
8936 </P>
8937 <P>
8938
8939 TABLE will cause the PRINT command to output a table to the listing file
8940 that describes what it will print to the output file. NOTABLE, the
8941 default, suppresses this output table.
8942 </P>
8943 <P>
8944
8945 Introduce the strings and variables to be printed with a slash
8946 (`<SAMP>/</SAMP>'). Optionally, the slash may be followed by a number
8947 indicating which output line will be specified. In the absence of this
8948 line number, the next line number will be specified. Multiple lines may
8949 be specified using multiple slashes with the intended output for a line
8950 following its respective slash.
8951 </P>
8952 <P>
8953
8954 Literal strings may be printed. Specify the string itself. Optionally
8955 the string may be followed by a column number or range of column
8956 numbers, specifying the location on the line for the string to be
8957 printed. Otherwise, the string will be printed at the current position
8958 on the line.
8959 </P>
8960 <P>
8961
8962 Variables to be printed can be specified in the same ways as available
8963 for DATA LIST FIXED (see section <A HREF="pspp.html#SEC87">9.3.1 DATA LIST FIXED</A>). In addition, a variable
8964 list may be followed by an asterisk (`<SAMP>*</SAMP>'), which indicates that the
8965 variables should be printed in their dictionary print formats, separated
8966 by spaces. A variable list followed by a slash or the end of command
8967 will be interpreted the same way.
8968 </P>
8969 <P>
8970
8971 If a FORTRAN type specification is used to move backwards on the current
8972 line, then text is written at that point on the line, the line will be
8973 truncated to that length, although additional text being added will
8974 again extend the line to that length.
8975 </P>
8976 <P>
8977
8978 <A NAME="PRINT EJECT"></A>
8979 <HR SIZE="6">
8980 <A NAME="SEC99"></A>
8981 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
8982 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC98"> &lt; </A>]</TD>
8983 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC100"> &gt; </A>]</TD>
8984 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
8985 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> Up </A>]</TD>
8986 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
8987 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
8988 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
8989 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
8990 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
8991 </TR></TABLE>
8992 <H2> 9.12 PRINT EJECT </H2>
8993 <!--docid::SEC99::-->
8994 <P>
8995
8996 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">PRINT EJECT
8997 OUTFILE='filename'
8998 RECORDS=n_lines
8999 {NOTABLE,TABLE}
9000 /[line_no] arg<small>...</small>
9001
9002 arg takes one of the following forms:
9003 'string' [start-end]
9004 var_list start-end [type_spec]
9005 var_list (fortran_spec)
9006 var_list *
9007 </pre></td></tr></table><P>
9008
9009 PRINT EJECT is used to write data to an output file. Before the data is
9010 written, the current page in the listing file is ejected.
9011 </P>
9012 <P>
9013
9014 See section <A HREF="pspp.html#SEC98">9.11 PRINT</A>, for more information on syntax and usage.
9015 </P>
9016 <P>
9017
9018 <A NAME="PRINT SPACE"></A>
9019 <HR SIZE="6">
9020 <A NAME="SEC100"></A>
9021 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9022 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC99"> &lt; </A>]</TD>
9023 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC101"> &gt; </A>]</TD>
9024 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
9025 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> Up </A>]</TD>
9026 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
9027 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9028 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9029 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9030 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9031 </TR></TABLE>
9032 <H2> 9.13 PRINT SPACE </H2>
9033 <!--docid::SEC100::-->
9034 <P>
9035
9036 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">PRINT SPACE OUTFILE='filename' n_lines.
9037 </pre></td></tr></table><P>
9038
9039 The PRINT SPACE prints one or more blank lines to an output file.
9040 </P>
9041 <P>
9042
9043 The OUTFILE subcommand is optional. It may be used to direct output to
9044 a file specified by file name as a string or file handle (see section <A HREF="pspp.html#SEC93">9.6 FILE HANDLE</A>). If OUTFILE is not specified then output will be directed to
9045 the listing file.
9046 </P>
9047 <P>
9048
9049 n_lines is also optional. If present, it is an expression
9050 (see section <A HREF="pspp.html#SEC58">8. Mathematical Expressions</A>) specifying the number of blank lines to be
9051 printed. The expression must evaluate to a nonnegative value.
9052 </P>
9053 <P>
9054
9055 <A NAME="REREAD"></A>
9056 <HR SIZE="6">
9057 <A NAME="SEC101"></A>
9058 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9059 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC100"> &lt; </A>]</TD>
9060 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC102"> &gt; </A>]</TD>
9061 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
9062 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> Up </A>]</TD>
9063 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
9064 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9065 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9066 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9067 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9068 </TR></TABLE>
9069 <H2> 9.14 REREAD </H2>
9070 <!--docid::SEC101::-->
9071 <P>
9072
9073 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">REREAD FILE=handle COLUMN=column.
9074 </pre></td></tr></table><P>
9075
9076 The REREAD transformation allows the previous input line in a data file
9077 already processed by DATA LIST or another input command to be re-read
9078 for further processing.
9079 </P>
9080 <P>
9081
9082 The FILE subcommand, which is optional, is used to specify the file to
9083 have its line re-read. The file must be specified in the form of a file
9084 handle (see section <A HREF="pspp.html#SEC93">9.6 FILE HANDLE</A>). If FILE is not specified then the last
9085 file specified on DATA LIST will be assumed (last file specified
9086 lexically, not in terms of flow-of-control).
9087 </P>
9088 <P>
9089
9090 By default, the line re-read is re-read in its entirety. With the
9091 COLUMN subcommand, a prefix of the line can be exempted from
9092 re-reading. Specify an expression (see section <A HREF="pspp.html#SEC58">8. Mathematical Expressions</A>) evaluating to
9093 the first column that should be included in the re-read line. Columns
9094 are numbered from 1 at the left margin.
9095 </P>
9096 <P>
9097
9098 Multiple REREAD commands will not back up in the data file. Instead,
9099 they will re-read the same line multiple times.
9100 </P>
9101 <P>
9102
9103 <A NAME="REPEATING DATA"></A>
9104 <HR SIZE="6">
9105 <A NAME="SEC102"></A>
9106 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9107 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC101"> &lt; </A>]</TD>
9108 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC103"> &gt; </A>]</TD>
9109 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
9110 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> Up </A>]</TD>
9111 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
9112 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9113 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9114 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9115 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9116 </TR></TABLE>
9117 <H2> 9.15 REPEATING DATA </H2>
9118 <!--docid::SEC102::-->
9119 <P>
9120
9121 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">REPEATING DATA
9122 /STARTS=start-end
9123 /OCCURS=n_occurs
9124 /FILE='filename'
9125 /LENGTH=length
9126 /CONTINUED[=cont_start-cont_end]
9127 /ID=id_start-id_end=id_var
9128 /{TABLE,NOTABLE}
9129 /DATA=var_spec<small>...</small>
9130
9131 where each var_spec takes one of the forms
9132 var_list start-end [type_spec]
9133 var_list (fortran_spec)
9134 </pre></td></tr></table><P>
9135
9136 The REPEATING DATA command is used to parse groups of data repeating in
9137 a uniform format, possibly with several groups on a single line. Each
9138 group of data corresponds with one case. REPEATING DATA may only be
9139 used within an INPUT PROGRAM structure. When used with DATA LIST, it
9140 can be used to parse groups of cases that share a subset of variables
9141 but differ in their other data.
9142 </P>
9143 <P>
9144
9145 The STARTS subcommand is required. Specify a range of columns, using
9146 literal numbers or numeric variable names. This range specifies the
9147 columns on the first line that are used to contain groups of data. The
9148 ending column is optional. If it is not specified, then the record
9149 width of the input file is used. For the inline file (see section <A HREF="pspp.html#SEC84">9.1 BEGIN DATA</A>) this is 80 columns; for a file with fixed record widths it is the
9150 record width; for other files it is 1024 characters by default.
9151 </P>
9152 <P>
9153
9154 The OCCURS subcommand is required. It must be a number or the name of a
9155 numeric variable. Its value is the number of groups present in the
9156 current record.
9157 </P>
9158 <P>
9159
9160 The DATA subcommand is required. It must be the last subcommand
9161 specified. It is used to specify the data present within each repeating
9162 group. Column numbers are specified relative to the beginning of a
9163 group at column 1. Data is specified in the same way as with DATA LIST
9164 FIXED (see section <A HREF="pspp.html#SEC87">9.3.1 DATA LIST FIXED</A>).
9165 </P>
9166 <P>
9167
9168 All other subcommands are optional.
9169 </P>
9170 <P>
9171
9172 FILE specifies the file to read, either a file name as a string or a
9173 file handle (see section <A HREF="pspp.html#SEC93">9.6 FILE HANDLE</A>). If FILE is not present then the
9174 default is the last file handle used on DATA LIST (lexically, not in
9175 terms of flow of control).
9176 </P>
9177 <P>
9178
9179 By default REPEATING DATA will output a table describing how it will
9180 parse the input data. Specifying NOTABLE will disable this behavior;
9181 specifying TABLE will explicitly enable it.
9182 </P>
9183 <P>
9184
9185 The LENGTH subcommand specifies the length in characters of each group.
9186 If it is not present then length is inferred from the DATA subcommand.
9187 LENGTH can be a number or a variable name.
9188 </P>
9189 <P>
9190
9191 Normally all the data groups are expected to be present on a single
9192 line. Use the CONTINUED command to indicate that data can be continued
9193 onto additional lines. If data on continuation lines starts at the left
9194 margin and continues through the entire field width, no column
9195 specifications are necessary on CONTINUED. Otherwise, specify the
9196 possible range of columns in the same way as on STARTS.
9197 </P>
9198 <P>
9199
9200 When data groups are continued from line to line, it's easily possible
9201 for cases to get out of sync if hand editing is not done carefully. The
9202 ID subcommand allows a case identifier to be present on each line of
9203 repeating data groups. REPEATING DATA will check for the same
9204 identifier on each line and report mismatches. Specify the range of
9205 columns that the identifier will occupy, followed by an equals sign
9206 (`<SAMP>=</SAMP>') and the identifier variable name. The variable must already
9207 have been declared with NUMERIC or another command.
9208 </P>
9209 <P>
9210
9211 <A NAME="WRITE"></A>
9212 <HR SIZE="6">
9213 <A NAME="SEC103"></A>
9214 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9215 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC102"> &lt; </A>]</TD>
9216 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt; </A>]</TD>
9217 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
9218 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> Up </A>]</TD>
9219 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &gt;&gt; </A>]</TD>
9220 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9221 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9222 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9223 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9224 </TR></TABLE>
9225 <H2> 9.16 WRITE </H2>
9226 <!--docid::SEC103::-->
9227 <P>
9228
9229 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">WRITE
9230 OUTFILE='filename'
9231 RECORDS=n_lines
9232 {NOTABLE,TABLE}
9233 /[line_no] arg<small>...</small>
9234
9235 arg takes one of the following forms:
9236 'string' [start-end]
9237 var_list start-end [type_spec]
9238 var_list (fortran_spec)
9239 var_list *
9240 </pre></td></tr></table><P>
9241
9242 WRITE is used to write text or binary data to an output file.
9243 </P>
9244 <P>
9245
9246 See section <A HREF="pspp.html#SEC98">9.11 PRINT</A>, for more information on syntax and usage. The main
9247 difference between PRINT and WRITE is that whereas by default PRINT uses
9248 variables' print formats, WRITE uses write formats.
9249 </P>
9250 <P>
9251
9252 The sole additional difference is that if WRITE is used to send output
9253 to a binary file, carriage control characters will not be output.
9254 See section <A HREF="pspp.html#SEC93">9.6 FILE HANDLE</A>, for information on how to declare a file as binary.
9255 </P>
9256 <P>
9257
9258 <A NAME="System and Portable Files"></A>
9259 <HR SIZE="6">
9260 <A NAME="SEC104"></A>
9261 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9262 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC103"> &lt; </A>]</TD>
9263 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC105"> &gt; </A>]</TD>
9264 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC83"> &lt;&lt; </A>]</TD>
9265 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
9266 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &gt;&gt; </A>]</TD>
9267 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9268 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9269 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9270 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9271 </TR></TABLE>
9272 <H1> 10. System Files and Portable Files </H1>
9273 <!--docid::SEC104::-->
9274 <P>
9275
9276 The commands in this chapter read, write, and examine system files and
9277 portable files.
9278 </P>
9279 <P>
9280
9281 <TABLE BORDER="0" CELLSPACING="0">
9282 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC105">10.1 APPLY DICTIONARY</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Apply system file dictionary to active file.</TD></TR>
9283 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC106">10.2 EXPORT</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Write to a portable file.</TD></TR>
9284 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC107">10.3 GET</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Read from a system file.</TD></TR>
9285 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC108">10.4 IMPORT</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Read from a portable file.</TD></TR>
9286 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC109">10.5 MATCH FILES</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Merge system files.</TD></TR>
9287 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC110">10.6 SAVE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Write to a system file.</TD></TR>
9288 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC111">10.7 SYSFILE INFO</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Display system file dictionary.</TD></TR>
9289 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC112">10.8 XSAVE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Write to a system file, as a transform.</TD></TR>
9290 </TABLE>
9291 <P>
9292
9293 <A NAME="APPLY DICTIONARY"></A>
9294 <HR SIZE="6">
9295 <A NAME="SEC105"></A>
9296 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9297 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &lt; </A>]</TD>
9298 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC106"> &gt; </A>]</TD>
9299 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &lt;&lt; </A>]</TD>
9300 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> Up </A>]</TD>
9301 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &gt;&gt; </A>]</TD>
9302 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9303 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9304 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9305 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9306 </TR></TABLE>
9307 <H2> 10.1 APPLY DICTIONARY </H2>
9308 <!--docid::SEC105::-->
9309 <P>
9310
9311 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">APPLY DICTIONARY FROM='filename'.
9312 </pre></td></tr></table><P>
9313
9314 The APPLY DICTIONARY command applies the variable labels, value labels,
9315 and missing values from variables in a system file to corresponding
9316 variables in the active file. In some cases it also updates the
9317 weighting variable.
9318 </P>
9319 <P>
9320
9321 Specify a system file with a file name string or as a file handle
9322 (see section <A HREF="pspp.html#SEC93">9.6 FILE HANDLE</A>). The dictionary in the system file will be read,
9323 but it will not replace the active file dictionary. The system file's
9324 data will not be read.
9325 </P>
9326 <P>
9327
9328 Only variables with names that exist in both the active file and the
9329 system file are considered. Variables with the same name but different
9330 types (numeric, string) will cause an error message. Otherwise, the
9331 system file variables' attributes will replace those in their matching
9332 active file variables, as described below.
9333 </P>
9334 <P>
9335
9336 If a system file variable has a variable label, then it will replace the
9337 active file variable's variable label. If the system file variable does
9338 not have a variable label, then the active file variable's variable
9339 label, if any, will be retained.
9340 </P>
9341 <P>
9342
9343 If the active file variable is numeric or short string, then value
9344 labels and missing values, if any, will be copied to the active file
9345 variable. If the system file variable does not have value labels or
9346 missing values, then those in the active file variable, if any, will not
9347 be disturbed.
9348 </P>
9349 <P>
9350
9351 Finally, weighting of the active file is updated (see section <A HREF="pspp.html#SEC146">13.8 WEIGHT</A>). If
9352 the active file has a weighting variable, and the system file does not,
9353 or if the weighting variable in the system file does not exist in the
9354 active file, then the active file weighting variable, if any, is
9355 retained. Otherwise, the weighting variable in the system file becomes
9356 the active file weighting variable.
9357 </P>
9358 <P>
9359
9360 APPLY DICTIONARY takes effect immediately. It does not read the active
9361 file. The system file is not modified.
9362 </P>
9363 <P>
9364
9365 <A NAME="EXPORT"></A>
9366 <HR SIZE="6">
9367 <A NAME="SEC106"></A>
9368 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9369 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC105"> &lt; </A>]</TD>
9370 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC107"> &gt; </A>]</TD>
9371 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &lt;&lt; </A>]</TD>
9372 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> Up </A>]</TD>
9373 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &gt;&gt; </A>]</TD>
9374 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9375 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9376 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9377 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9378 </TR></TABLE>
9379 <H2> 10.2 EXPORT </H2>
9380 <!--docid::SEC106::-->
9381 <P>
9382
9383 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">EXPORT
9384 /OUTFILE='filename'
9385 /DROP=var_list
9386 /KEEP=var_list
9387 /RENAME=(src_names=target_names)<small>...</small>
9388 </pre></td></tr></table><P>
9389
9390 The EXPORT procedure writes the active file dictionary and data to a
9391 specified portable file.
9392 </P>
9393 <P>
9394
9395 The OUTFILE subcommand, which is the only required subcommand, specifies
9396 the portable file to be written as a file name string or a file handle
9397 (see section <A HREF="pspp.html#SEC93">9.6 FILE HANDLE</A>).
9398 </P>
9399 <P>
9400
9401 DROP, KEEP, and RENAME follow the same format as the SAVE procedure
9402 (see section <A HREF="pspp.html#SEC110">10.6 SAVE</A>).
9403 </P>
9404 <P>
9405
9406 EXPORT is a procedure. It causes the active file to be read.
9407 </P>
9408 <P>
9409
9410 <A NAME="GET"></A>
9411 <HR SIZE="6">
9412 <A NAME="SEC107"></A>
9413 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9414 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC106"> &lt; </A>]</TD>
9415 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC108"> &gt; </A>]</TD>
9416 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &lt;&lt; </A>]</TD>
9417 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> Up </A>]</TD>
9418 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &gt;&gt; </A>]</TD>
9419 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9420 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9421 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9422 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9423 </TR></TABLE>
9424 <H2> 10.3 GET </H2>
9425 <!--docid::SEC107::-->
9426 <P>
9427
9428 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">GET
9429 /FILE='filename'
9430 /DROP=var_list
9431 /KEEP=var_list
9432 /RENAME=(src_names=target_names)<small>...</small>
9433 </pre></td></tr></table><P>
9434
9435 The GET transformation clears the current dictionary and active file and
9436 replaces them with the dictionary and data from a specified system file.
9437 </P>
9438 <P>
9439
9440 The FILE subcommand is the only required subcommand. Specify the system
9441 file to be read as a string file name or a file handle (see section <A HREF="pspp.html#SEC93">9.6 FILE HANDLE</A>).
9442 </P>
9443 <P>
9444
9445 By default, all the variables in a system file are read. The DROP
9446 subcommand can be used to specify a list of variables that are not to be
9447 read. By contrast, the KEEP subcommand can be used to specify variable
9448 that are to be read, with all other variables not read.
9449 </P>
9450 <P>
9451
9452 Normally variables in a system file retain the names that they were
9453 saved under. Use the RENAME subcommand to change these names. Specify,
9454 within parentheses, a list of variable names followed by an equals sign
9455 (`<SAMP>=</SAMP>') and the names that they should be renamed to. Multiple
9456 parenthesized groups of variable names can be included on a single
9457 RENAME subcommand. Variables' names may be swapped using a RENAME
9458 subcommand of the form `<SAMP>/RENAME=(A B=B A)</SAMP>'.
9459 </P>
9460 <P>
9461
9462 Alternate syntax for the RENAME subcommand allows the parentheses to be
9463 eliminated. When this is done, only a single variable may be renamed at
9464 once. For instance, `<SAMP>/RENAME=A=B</SAMP>'. This alternate syntax is
9465 deprecated.
9466 </P>
9467 <P>
9468
9469 DROP, KEEP, and RENAME are performed in left-to-right order. They each
9470 may be present any number of times.
9471 </P>
9472 <P>
9473
9474 Please note that DROP, KEEP, and RENAME do not cause the system file on
9475 disk to be modified. Only the active file read from the system file is
9476 changed.
9477 </P>
9478 <P>
9479
9480 GET does not cause the data to be read, only the dictionary. The data
9481 is read later, when a procedure is executed.
9482 </P>
9483 <P>
9484
9485 <A NAME="IMPORT"></A>
9486 <HR SIZE="6">
9487 <A NAME="SEC108"></A>
9488 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9489 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC107"> &lt; </A>]</TD>
9490 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC109"> &gt; </A>]</TD>
9491 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &lt;&lt; </A>]</TD>
9492 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> Up </A>]</TD>
9493 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &gt;&gt; </A>]</TD>
9494 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9495 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9496 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9497 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9498 </TR></TABLE>
9499 <H2> 10.4 IMPORT </H2>
9500 <!--docid::SEC108::-->
9501 <P>
9502
9503 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">IMPORT
9504 /FILE='filename'
9505 /TYPE={COMM,TAPE}
9506 /DROP=var_list
9507 /KEEP=var_list
9508 /RENAME=(src_names=target_names)<small>...</small>
9509 </pre></td></tr></table><P>
9510
9511 The IMPORT transformation clears the active file dictionary and data and
9512 replaces them with a dictionary and data from a portable file on disk.
9513 </P>
9514 <P>
9515
9516 The FILE subcommand, which is the only required subcommand, specifies
9517 the portable file to be read as a file name string or a file handle
9518 (see section <A HREF="pspp.html#SEC93">9.6 FILE HANDLE</A>).
9519 </P>
9520 <P>
9521
9522 The TYPE subcommand is currently not used.
9523 </P>
9524 <P>
9525
9526 DROP, KEEP, and RENAME follow the syntax used by GET (see section <A HREF="pspp.html#SEC107">10.3 GET</A>).
9527 </P>
9528 <P>
9529
9530 IMPORT does not cause the data to be read, only the dictionary. The
9531 data is read later, when a procedure is executed.
9532 </P>
9533 <P>
9534
9535 <A NAME="MATCH FILES"></A>
9536 <HR SIZE="6">
9537 <A NAME="SEC109"></A>
9538 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9539 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC108"> &lt; </A>]</TD>
9540 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC110"> &gt; </A>]</TD>
9541 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &lt;&lt; </A>]</TD>
9542 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> Up </A>]</TD>
9543 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &gt;&gt; </A>]</TD>
9544 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9545 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9546 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9547 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9548 </TR></TABLE>
9549 <H2> 10.5 MATCH FILES </H2>
9550 <!--docid::SEC109::-->
9551 <P>
9552
9553 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">MATCH FILES
9554 /BY var_list
9555 /{FILE,TABLE}={*,'filename'}
9556 /DROP=var_list
9557 /KEEP=var_list
9558 /RENAME=(src_names=target_names)<small>...</small>
9559 /IN=var_name
9560 /FIRST=var_name
9561 /LAST=var_name
9562 /MAP
9563 </pre></td></tr></table><P>
9564
9565 The MATCH FILES command merges one or more system files, optionally
9566 including the active file. Records with the same values for BY
9567 variables are combined into a single record. Records with different
9568 values are output in order. Thus, multiple sorted system files are
9569 combined into a single sorted system file based on the value of the BY
9570 variables.
9571 </P>
9572 <P>
9573
9574 The BY subcommand specifies a list of variables that are used to match
9575 records from each of the system files. Variables specified must exist
9576 in all the files specified on FILE and TABLE. BY should usually be
9577 specified. If TABLE is used then BY is required.
9578 </P>
9579 <P>
9580
9581 Specify FILE with a system file as a file name string or file handle
9582 (see section <A HREF="pspp.html#SEC93">9.6 FILE HANDLE</A>). An asterisk (`<SAMP>*</SAMP>') may also be specified to
9583 indicate the current active file. The files specified on FILE are
9584 merged together based on the BY variables, or combined case-by-case if
9585 BY is not specified. Normally at least two FILE subcommands should be
9586 specified.
9587 </P>
9588 <P>
9589
9590 Specify TABLE with a system file in order to use it as a <EM>table
9591 lookup file</EM>. Records in table lookup files are not used up after
9592 they've been used once. This means that data in table lookup files can
9593 correspond to any number of records in FILE files. Table lookup files
9594 correspond to lookup tables in traditional relational database systems.
9595 It is incorrect to have records with duplicate BY values in table lookup
9596 files.
9597 </P>
9598 <P>
9599
9600 Any number of FILE and TABLE subcommands may be specified. Each
9601 instance of FILE or TABLE can be followed by DROP, KEEP, and/or RENAME
9602 subcommands. These take the same form as the corresponding subcommands
9603 of GET (see section <A HREF="pspp.html#SEC107">10.3 GET</A>), and perform the same functions.
9604 </P>
9605 <P>
9606
9607 Variables belonging to files that are not present for the current case
9608 are set to the system-missing value for numeric variables or spaces for
9609 string variables.
9610 </P>
9611 <P>
9612
9613 IN, FIRST, LAST, and MAP are currently not used.
9614 </P>
9615 <P>
9616
9617 <A NAME="SAVE"></A>
9618 <HR SIZE="6">
9619 <A NAME="SEC110"></A>
9620 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9621 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC109"> &lt; </A>]</TD>
9622 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC111"> &gt; </A>]</TD>
9623 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &lt;&lt; </A>]</TD>
9624 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> Up </A>]</TD>
9625 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &gt;&gt; </A>]</TD>
9626 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9627 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9628 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9629 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9630 </TR></TABLE>
9631 <H2> 10.6 SAVE </H2>
9632 <!--docid::SEC110::-->
9633 <P>
9634
9635 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">SAVE
9636 /OUTFILE='filename'
9637 /{COMPRESSED,UNCOMPRESSED}
9638 /DROP=var_list
9639 /KEEP=var_list
9640 /RENAME=(src_names=target_names)<small>...</small>
9641 </pre></td></tr></table><P>
9642
9643 The SAVE procedure causes the dictionary and data in the active file to
9644 be written to a system file.
9645 </P>
9646 <P>
9647
9648 The FILE subcommand is the only required subcommand. Specify the system
9649 file to be written as a string file name or a file handle (see section <A HREF="pspp.html#SEC93">9.6 FILE HANDLE</A>).
9650 </P>
9651 <P>
9652
9653 The COMPRESS and UNCOMPRESS subcommand determine whether the saved
9654 system file is compressed. By default, system files are compressed.
9655 This default can be changed with the SET command (see section <A HREF="pspp.html#SEC166">16.10 SET</A>).
9656 </P>
9657 <P>
9658
9659 By default, all the variables in the active file dictionary are written
9660 to the system file. The DROP subcommand can be used to specify a list
9661 of variables not to be written. In contrast, KEEP specifies variables
9662 to be written, with all variables not specified not written.
9663 </P>
9664 <P>
9665
9666 Normally variables are saved to a system file under the same names they
9667 have in the active file. Use the RENAME command to change these names.
9668 Specify, within parentheses, a list of variable names followed by an
9669 equals sign (`<SAMP>=</SAMP>') and the names that they should be renamed to.
9670 Multiple parenthesized groups of variable names can be included on a
9671 single RENAME subcommand. Variables' names may be swapped using a
9672 RENAME subcommand of the form `<SAMP>/RENAME=(A B=B A)</SAMP>'.
9673 </P>
9674 <P>
9675
9676 Alternate syntax for the RENAME subcommand allows the parentheses to be
9677 eliminated. When this is done, only a single variable may be renamed at
9678 once. For instance, `<SAMP>/RENAME=A=B</SAMP>'. This alternate syntax is
9679 deprecated.
9680 </P>
9681 <P>
9682
9683 DROP, KEEP, and RENAME are performed in left-to-right order. They each
9684 may be present any number of times.
9685 </P>
9686 <P>
9687
9688 Please note that DROP, KEEP, and RENAME do not cause the active file to
9689 be modified. Only the system file written to disk is changed.
9690 </P>
9691 <P>
9692
9693 SAVE causes the data to be read. It is a procedure.
9694 </P>
9695 <P>
9696
9697 <A NAME="SYSFILE INFO"></A>
9698 <HR SIZE="6">
9699 <A NAME="SEC111"></A>
9700 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9701 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC110"> &lt; </A>]</TD>
9702 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC112"> &gt; </A>]</TD>
9703 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &lt;&lt; </A>]</TD>
9704 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> Up </A>]</TD>
9705 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &gt;&gt; </A>]</TD>
9706 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9707 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9708 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9709 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9710 </TR></TABLE>
9711 <H2> 10.7 SYSFILE INFO </H2>
9712 <!--docid::SEC111::-->
9713 <P>
9714
9715 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">SYSFILE INFO FILE='filename'.
9716 </pre></td></tr></table><P>
9717
9718 The SYSFILE INFO command reads the dictionary in a system file and
9719 displays the information in its dictionary.
9720 </P>
9721 <P>
9722
9723 Specify a file name or file handle. SYSFILE INFO will read that file as
9724 a system file and display information on its dictionary.
9725 </P>
9726 <P>
9727
9728 The file does not replace the current active file.
9729 </P>
9730 <P>
9731
9732 <A NAME="XSAVE"></A>
9733 <HR SIZE="6">
9734 <A NAME="SEC112"></A>
9735 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9736 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC111"> &lt; </A>]</TD>
9737 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &gt; </A>]</TD>
9738 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &lt;&lt; </A>]</TD>
9739 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> Up </A>]</TD>
9740 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &gt;&gt; </A>]</TD>
9741 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9742 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9743 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9744 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9745 </TR></TABLE>
9746 <H2> 10.8 XSAVE </H2>
9747 <!--docid::SEC112::-->
9748 <P>
9749
9750 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">XSAVE
9751 /FILE='filename'
9752 /{COMPRESSED,UNCOMPRESSED}
9753 /DROP=var_list
9754 /KEEP=var_list
9755 /RENAME=(src_names=target_names)<small>...</small>
9756 </pre></td></tr></table><P>
9757
9758 The XSAVE transformation writes the active file dictionary and data to a
9759 system file stored on disk.
9760 </P>
9761 <P>
9762
9763 XSAVE is a transformation, not a procedure. It is executed when the
9764 data is read by a procedure or procedure-like command. In all other
9765 respects, XSAVE is identical to SAVE. See section <A HREF="pspp.html#SEC110">10.6 SAVE</A>, for more information
9766 on syntax and usage.
9767 </P>
9768 <P>
9769
9770 <A NAME="Variable Attributes"></A>
9771 <HR SIZE="6">
9772 <A NAME="SEC113"></A>
9773 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9774 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC112"> &lt; </A>]</TD>
9775 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC114"> &gt; </A>]</TD>
9776 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC104"> &lt;&lt; </A>]</TD>
9777 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
9778 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &gt;&gt; </A>]</TD>
9779 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9780 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9781 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9782 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9783 </TR></TABLE>
9784 <H1> 11. Manipulating variables </H1>
9785 <!--docid::SEC113::-->
9786 <P>
9787
9788 The variables in the active file dictionary are important. There are
9789 several utility functions for examining and adjusting them.
9790 </P>
9791 <P>
9792
9793 <TABLE BORDER="0" CELLSPACING="0">
9794 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC114">11.1 ADD VALUE LABELS</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Add value labels to variables.</TD></TR>
9795 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC115">11.2 DISPLAY</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Display variable names &amp; descriptions.</TD></TR>
9796 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC116">11.3 DISPLAY VECTORS</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Display a list of vectors.</TD></TR>
9797 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC117">11.4 FORMATS</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Set print and write formats.</TD></TR>
9798 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC118">11.5 LEAVE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Don't clear variables between cases.</TD></TR>
9799 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC119">11.6 MISSING VALUES</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Set missing values for variables.</TD></TR>
9800 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC120">11.7 MODIFY VARS</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Rename, reorder, and drop variables.</TD></TR>
9801 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC121">11.8 NUMERIC</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Create new numeric variables.</TD></TR>
9802 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC122">11.9 PRINT FORMATS</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Set variable print formats.</TD></TR>
9803 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC123">11.10 RENAME VARIABLES</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Rename variables.</TD></TR>
9804 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC124">11.11 VALUE LABELS</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Set value labels for variables.</TD></TR>
9805 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC125">11.12 STRING</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Create new string variables.</TD></TR>
9806 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC126">11.13 VARIABLE LABELS</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Set variable labels for variables.</TD></TR>
9807 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC127">11.14 VECTOR</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Declare an array of variables.</TD></TR>
9808 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC128">11.15 WRITE FORMATS</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Set variable write formats.</TD></TR>
9809 </TABLE>
9810 <P>
9811
9812 <A NAME="ADD VALUE LABELS"></A>
9813 <HR SIZE="6">
9814 <A NAME="SEC114"></A>
9815 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9816 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &lt; </A>]</TD>
9817 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC115"> &gt; </A>]</TD>
9818 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &lt;&lt; </A>]</TD>
9819 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> Up </A>]</TD>
9820 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &gt;&gt; </A>]</TD>
9821 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9822 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9823 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9824 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9825 </TR></TABLE>
9826 <H2> 11.1 ADD VALUE LABELS </H2>
9827 <!--docid::SEC114::-->
9828 <P>
9829
9830 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">ADD VALUE LABELS
9831 /var_list value 'label' [value 'label']<small>...</small>
9832 </pre></td></tr></table><P>
9833
9834 ADD VALUE LABELS has the same syntax and purpose as VALUE LABELS (see
9835 above), but it does not clear away value labels from the variables
9836 before adding the ones specified.
9837 </P>
9838 <P>
9839
9840 <A NAME="DISPLAY"></A>
9841 <HR SIZE="6">
9842 <A NAME="SEC115"></A>
9843 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9844 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC114"> &lt; </A>]</TD>
9845 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC116"> &gt; </A>]</TD>
9846 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &lt;&lt; </A>]</TD>
9847 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> Up </A>]</TD>
9848 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &gt;&gt; </A>]</TD>
9849 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9850 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9851 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9852 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9853 </TR></TABLE>
9854 <H2> 11.2 DISPLAY </H2>
9855 <!--docid::SEC115::-->
9856 <P>
9857
9858 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">DISPLAY {NAMES,INDEX,LABELS,VARIABLES,DICTIONARY,SCRATCH}
9859 [SORTED] [var_list]
9860 </pre></td></tr></table><P>
9861
9862 DISPLAY displays requested information on variables. Variables can
9863 optionally be sorted alphabetically. The entire dictionary or just
9864 specified variables can be described.
9865 </P>
9866 <P>
9867
9868 One of the following keywords can be present:
9869 </P>
9870 <P>
9871
9872 </P>
9873 <DL COMPACT>
9874 <DT>NAMES
9875 <DD>The variables' names are displayed.
9876 <P>
9877
9878 </P>
9879 <DT>INDEX
9880 <DD>The variables' names are displayed along with a value describing their
9881 position within the active file dictionary.
9882 <P>
9883
9884 </P>
9885 <DT>LABELS
9886 <DD>Variable names, positions, and variable labels are displayed.
9887 <P>
9888
9889 </P>
9890 <DT>VARIABLES
9891 <DD>Variable names, positions, print and write formats, and missing values
9892 are displayed.
9893 <P>
9894
9895 </P>
9896 <DT>DICTIONARY
9897 <DD>Variable names, positions, print and write formats, missing values,
9898 variable labels, and value labels are displayed.
9899 <P>
9900
9901 </P>
9902 <DT>SCRATCH
9903 <DD>Varible names are displayed, for scratch variables only (see section <A HREF="pspp.html#SEC55">7.6.5 Scratch Variables</A>).
9904 </DL>
9905 <P>
9906
9907 If SORTED is specified, then the variables are displayed in ascending
9908 order based on their names; otherwise, they are displayed in the order
9909 that they occur in the active file dictionary.
9910 </P>
9911 <P>
9912
9913 <A NAME="DISPLAY VECTORS"></A>
9914 <HR SIZE="6">
9915 <A NAME="SEC116"></A>
9916 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9917 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC115"> &lt; </A>]</TD>
9918 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC117"> &gt; </A>]</TD>
9919 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &lt;&lt; </A>]</TD>
9920 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> Up </A>]</TD>
9921 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &gt;&gt; </A>]</TD>
9922 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9923 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9924 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9925 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9926 </TR></TABLE>
9927 <H2> 11.3 DISPLAY VECTORS </H2>
9928 <!--docid::SEC116::-->
9929 <P>
9930
9931 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">DISPLAY VECTORS.
9932 </pre></td></tr></table><P>
9933
9934 The DISPLAY VECTORS command causes a list of the currently declared
9935 vectors to be displayed.
9936 </P>
9937 <P>
9938
9939 <A NAME="FORMATS"></A>
9940 <HR SIZE="6">
9941 <A NAME="SEC117"></A>
9942 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9943 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC116"> &lt; </A>]</TD>
9944 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC118"> &gt; </A>]</TD>
9945 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &lt;&lt; </A>]</TD>
9946 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> Up </A>]</TD>
9947 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &gt;&gt; </A>]</TD>
9948 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9949 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9950 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9951 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9952 </TR></TABLE>
9953 <H2> 11.4 FORMATS </H2>
9954 <!--docid::SEC117::-->
9955 <P>
9956
9957 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">FORMATS var_list (fmt_spec).
9958 </pre></td></tr></table><P>
9959
9960 The FORMATS command set the print and write formats for the specified
9961 variables to the specified format specification. See section <A HREF="pspp.html#SEC54">7.6.4 Input and Output Formats</A>.
9962 </P>
9963 <P>
9964
9965 Specify a list of variables followed by a format specification in
9966 parentheses. The print and write formats of the specified variables
9967 will be changed.
9968 </P>
9969 <P>
9970
9971 Additional lists of variables and formats may be included if they are
9972 delimited by a slash (`<SAMP>/</SAMP>').
9973 </P>
9974 <P>
9975
9976 The FORMATS command takes effect immediately. It is not affected by
9977 conditional and looping structures such as DO IF or LOOP.
9978 </P>
9979 <P>
9980
9981 <A NAME="LEAVE"></A>
9982 <HR SIZE="6">
9983 <A NAME="SEC118"></A>
9984 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
9985 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC117"> &lt; </A>]</TD>
9986 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC119"> &gt; </A>]</TD>
9987 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &lt;&lt; </A>]</TD>
9988 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> Up </A>]</TD>
9989 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &gt;&gt; </A>]</TD>
9990 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
9991 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
9992 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
9993 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
9994 </TR></TABLE>
9995 <H2> 11.5 LEAVE </H2>
9996 <!--docid::SEC118::-->
9997 <P>
9998
9999 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">LEAVE var_list.
10000 </pre></td></tr></table><P>
10001
10002 The LEAVE command prevents the specified variables from being
10003 reinitialized whenever a new case is processed.
10004 </P>
10005 <P>
10006
10007 Normally, when a data file is processed, every variable in the active
10008 file is initialized to the system-missing value or spaces at the
10009 beginning of processing for each case. When a variable has been
10010 specified on LEAVE, this is not the case. Instead, that variable is
10011 initialized to 0 (not system-missing) or spaces for the first case.
10012 After that, it retains its value between cases.
10013 </P>
10014 <P>
10015
10016 This becomes useful for counters. For instance, in the example below
10017 the variable SUM maintains a running total of the values in the ITEM
10018 variable.
10019 </P>
10020 <P>
10021
10022 <TABLE><tr><td>&nbsp;</td><td class=example><pre>DATA LIST /ITEM 1-3.
10023 COMPUTE SUM=SUM+ITEM.
10024 PRINT /ITEM SUM.
10025 LEAVE SUM
10026 BEGIN DATA.
10027 123
10028 404
10029 555
10030 999
10031 END DATA.
10032 </pre></td></tr></table><P>
10033
10034 Partial output from this example:
10035 </P>
10036 <P>
10037
10038 <TABLE><tr><td>&nbsp;</td><td class=example><pre>123 123.00
10039 404 527.00
10040 555 1082.00
10041 999 2081.00
10042 </pre></td></tr></table><P>
10043
10044 It is best to use the LEAVE command immediately before invoking a
10045 procedure command, because it is reset by certain transformations--for
10046 instance, COMPUTE and IF. LEAVE is also reset by all procedure
10047 invocations.
10048 </P>
10049 <P>
10050
10051 <A NAME="MISSING VALUES"></A>
10052 <HR SIZE="6">
10053 <A NAME="SEC119"></A>
10054 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
10055 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC118"> &lt; </A>]</TD>
10056 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC120"> &gt; </A>]</TD>
10057 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &lt;&lt; </A>]</TD>
10058 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> Up </A>]</TD>
10059 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &gt;&gt; </A>]</TD>
10060 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
10061 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
10062 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
10063 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
10064 </TR></TABLE>
10065 <H2> 11.6 MISSING VALUES </H2>
10066 <!--docid::SEC119::-->
10067 <P>
10068
10069 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">MISSING VALUES var_list (missing_values).
10070
10071 missing_values takes one of the following forms:
10072 num1
10073 num1, num2
10074 num1, num2, num3
10075 num1 THRU num2
10076 num1 THRU num2, num3
10077 string1
10078 string1, string2
10079 string1, string2, string3
10080 As part of a range, LO or LOWEST may take the place of num1;
10081 HI or HIGHEST may take the place of num2.
10082 </pre></td></tr></table><P>
10083
10084 The MISSING VALUES command sets user-missing values for numeric and
10085 short string variables. Long string variables may not have missing
10086 values.
10087 </P>
10088 <P>
10089
10090 Specify a list of variables, followed by a list of their user-missing
10091 values in parentheses. Up to three discrete values may be given, or,
10092 for numeric variables only, a range of values optionally accompanied by
10093 a single discrete value. Ranges may be open-ended on one end, indicated
10094 through the use of the keyword LO or LOWEST or HI or HIGHEST.
10095 </P>
10096 <P>
10097
10098 The MISSING VALUES command takes effect immediately. It is not affected
10099 by conditional and looping constructs such as DO IF or LOOP.
10100 </P>
10101 <P>
10102
10103 <A NAME="MODIFY VARS"></A>
10104 <HR SIZE="6">
10105 <A NAME="SEC120"></A>
10106 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
10107 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC119"> &lt; </A>]</TD>
10108 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC121"> &gt; </A>]</TD>
10109 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &lt;&lt; </A>]</TD>
10110 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> Up </A>]</TD>
10111 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &gt;&gt; </A>]</TD>
10112 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
10113 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
10114 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
10115 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
10116 </TR></TABLE>
10117 <H2> 11.7 MODIFY VARS </H2>
10118 <!--docid::SEC120::-->
10119 <P>
10120
10121 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">MODIFY VARS
10122 /REORDER={FORWARD,BACKWARD} {POSITIONAL,ALPHA} (var_list)<small>...</small>
10123 /RENAME=(old_names=new_names)<small>...</small>
10124 /{DROP,KEEP}=var_list
10125 /MAP
10126 </pre></td></tr></table><P>
10127
10128 The MODIFY VARS commands allows variables in the active file to be
10129 reordered, renamed, or deleted from the active file.
10130 </P>
10131 <P>
10132
10133 At least one subcommand must be specified, and no subcommand may be
10134 specified more than once. DROP and KEEP may not both be specified.
10135 </P>
10136 <P>
10137
10138 The REORDER subcommand changes the order of variables in the active
10139 file. Specify one or more lists of variable names in parentheses. By
10140 default, each list of variables is rearranged into the specified order.
10141 To put the variables into the reverse of the specified order, put
10142 keyword BACKWARD before the parentheses. To put them into alphabetical
10143 order in the dictionary, specify keyword ALPHA before the parentheses.
10144 BACKWARD and ALPHA may also be combined.
10145 </P>
10146 <P>
10147
10148 To rename variables in the active file, specify RENAME, an equals sign
10149 (`<SAMP>=</SAMP>'), and lists of the old variable names and new variable names
10150 separated by another equals sign within parentheses. There must be the
10151 same number of old and new variable names. Each old variable is renamed to
10152 the corresponding new variable name. Multiple parenthesized groups of
10153 variables may be specified.
10154 </P>
10155 <P>
10156
10157 The DROP subcommand deletes a specified list of variables from the
10158 active file.
10159 </P>
10160 <P>
10161
10162 The KEEP subcommand keeps the specified list of variables in the active
10163 file. Any unlisted variables are delete from the active file.
10164 </P>
10165 <P>
10166
10167 MAP is currently ignored.
10168 </P>
10169 <P>
10170
10171 MODIFY VARS takes effect immediately. It does not cause the data to be
10172 read.
10173 </P>
10174 <P>
10175
10176 <A NAME="NUMERIC"></A>
10177 <HR SIZE="6">
10178 <A NAME="SEC121"></A>
10179 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
10180 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC120"> &lt; </A>]</TD>
10181 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC122"> &gt; </A>]</TD>
10182 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &lt;&lt; </A>]</TD>
10183 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> Up </A>]</TD>
10184 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &gt;&gt; </A>]</TD>
10185 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
10186 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
10187 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
10188 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
10189 </TR></TABLE>
10190 <H2> 11.8 NUMERIC </H2>
10191 <!--docid::SEC121::-->
10192 <P>
10193
10194 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">NUMERIC /var_list [(fmt_spec)].
10195 </pre></td></tr></table><P>
10196
10197 The NUMERIC command explicitly declares new numeric variables,
10198 optionally setting their output formats.
10199 </P>
10200 <P>
10201
10202 Specify a slash (`<SAMP>/</SAMP>'), followed by the names of the new numeric
10203 variables. If you wish to set their output formats, follow their names
10204 by an output format specification in parentheses (see section <A HREF="pspp.html#SEC54">7.6.4 Input and Output Formats</A>). If no output format specification is given then the
10205 variables will default to F8.2.
10206 </P>
10207 <P>
10208
10209 Variables created with NUMERIC will be initialized to the system-missing
10210 value.
10211 </P>
10212 <P>
10213
10214 <A NAME="PRINT FORMATS"></A>
10215 <HR SIZE="6">
10216 <A NAME="SEC122"></A>
10217 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
10218 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC121"> &lt; </A>]</TD>
10219 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC123"> &gt; </A>]</TD>
10220 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &lt;&lt; </A>]</TD>
10221 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> Up </A>]</TD>
10222 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &gt;&gt; </A>]</TD>
10223 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
10224 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
10225 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
10226 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
10227 </TR></TABLE>
10228 <H2> 11.9 PRINT FORMATS </H2>
10229 <!--docid::SEC122::-->
10230 <P>
10231
10232 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">PRINT FORMATS var_list (fmt_spec).
10233 </pre></td></tr></table><P>
10234
10235 The PRINT FORMATS command sets the print formats for the specified
10236 variables to the specified format specification.
10237 </P>
10238 <P>
10239
10240 Syntax is identical to that of FORMATS (see section <A HREF="pspp.html#SEC117">11.4 FORMATS</A>), but the PRINT
10241 FORMATS command sets only print formats, not write formats.
10242 </P>
10243 <P>
10244
10245 <A NAME="RENAME VARIABLES"></A>
10246 <HR SIZE="6">
10247 <A NAME="SEC123"></A>
10248 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
10249 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC122"> &lt; </A>]</TD>
10250 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC124"> &gt; </A>]</TD>
10251 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &lt;&lt; </A>]</TD>
10252 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> Up </A>]</TD>
10253 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &gt;&gt; </A>]</TD>
10254 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
10255 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
10256 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
10257 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
10258 </TR></TABLE>
10259 <H2> 11.10 RENAME VARIABLES </H2>
10260 <!--docid::SEC123::-->
10261 <P>
10262
10263 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">RENAME VARIABLES (old_names=new_names)<small>...</small> .
10264 </pre></td></tr></table><P>
10265
10266 The RENAME VARIABLES command allows the names of variables in the active
10267 file to be changed.
10268 </P>
10269 <P>
10270
10271 To rename variables, specify lists of the old variable names and new
10272 variable names, separated by an equals sign (`<SAMP>=</SAMP>'), within
10273 parentheses. There must be the same number of old and new variable
10274 names. Each old variable is renamed to the corresponding new variable
10275 name. Multiple parenthesized groups of variables may be specified.
10276 </P>
10277 <P>
10278
10279 RENAME VARIABLES takes effect immediately. It does not cause the data
10280 to be read.
10281 </P>
10282 <P>
10283
10284 <A NAME="VALUE LABELS"></A>
10285 <HR SIZE="6">
10286 <A NAME="SEC124"></A>
10287 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
10288 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC123"> &lt; </A>]</TD>
10289 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC125"> &gt; </A>]</TD>
10290 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &lt;&lt; </A>]</TD>
10291 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> Up </A>]</TD>
10292 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &gt;&gt; </A>]</TD>
10293 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
10294 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
10295 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
10296 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
10297 </TR></TABLE>
10298 <H2> 11.11 VALUE LABELS </H2>
10299 <!--docid::SEC124::-->
10300 <P>
10301
10302 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">VALUE LABELS
10303 /var_list value 'label' [value 'label']<small>...</small>
10304 </pre></td></tr></table><P>
10305
10306 The VALUE LABELS command allows values of numeric and short string
10307 variables to be associated with labels. In this way, a short value can
10308 stand for a long value.
10309 </P>
10310 <P>
10311
10312 In order to set up value labels for a set of variables, specify the
10313 variable names after a slash (`<SAMP>/</SAMP>'), followed by a list of values
10314 and their associated labels, separated by spaces.
10315 </P>
10316 <P>
10317
10318 Before the VALUE LABELS command is executed, any existing value labels
10319 are cleared from the variables specified.
10320 </P>
10321 <P>
10322
10323 <A NAME="STRING"></A>
10324 <HR SIZE="6">
10325 <A NAME="SEC125"></A>
10326 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
10327 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC124"> &lt; </A>]</TD>
10328 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC126"> &gt; </A>]</TD>
10329 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &lt;&lt; </A>]</TD>
10330 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> Up </A>]</TD>
10331 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &gt;&gt; </A>]</TD>
10332 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
10333 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
10334 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
10335 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
10336 </TR></TABLE>
10337 <H2> 11.12 STRING </H2>
10338 <!--docid::SEC125::-->
10339 <P>
10340
10341 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">STRING /var_list (fmt_spec).
10342 </pre></td></tr></table><P>
10343
10344 The STRING command creates new string variables for use in
10345 transformations.
10346 </P>
10347 <P>
10348
10349 Specify a slash (`<SAMP>/</SAMP>'), followed by the names of the string
10350 variables to create and the desired output format specification in
10351 parentheses (see section <A HREF="pspp.html#SEC54">7.6.4 Input and Output Formats</A>). Variable widths are
10352 implicitly derived from the specified output formats.
10353 </P>
10354 <P>
10355
10356 Created variables are initialized to spaces.
10357 </P>
10358 <P>
10359
10360 <A NAME="VARIABLE LABELS"></A>
10361 <HR SIZE="6">
10362 <A NAME="SEC126"></A>
10363 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
10364 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC125"> &lt; </A>]</TD>
10365 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC127"> &gt; </A>]</TD>
10366 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &lt;&lt; </A>]</TD>
10367 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> Up </A>]</TD>
10368 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &gt;&gt; </A>]</TD>
10369 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
10370 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
10371 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
10372 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
10373 </TR></TABLE>
10374 <H2> 11.13 VARIABLE LABELS </H2>
10375 <!--docid::SEC126::-->
10376 <P>
10377
10378 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">VARIABLE LABELS
10379 /var_list 'var_label'.
10380 </pre></td></tr></table><P>
10381
10382 The VARIABLE LABELS command is used to associate an explanatory name
10383 with a group of variables. This name (a variable label) is displayed by
10384 statistical procedures.
10385 </P>
10386 <P>
10387
10388 To assign a variable label to a group of variables, specify a slash
10389 (`<SAMP>/</SAMP>'), followed by the list of variable names and the variable
10390 label as a string.
10391 </P>
10392 <P>
10393
10394 <A NAME="VECTOR"></A>
10395 <HR SIZE="6">
10396 <A NAME="SEC127"></A>
10397 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
10398 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC126"> &lt; </A>]</TD>
10399 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC128"> &gt; </A>]</TD>
10400 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &lt;&lt; </A>]</TD>
10401 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> Up </A>]</TD>
10402 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &gt;&gt; </A>]</TD>
10403 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
10404 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
10405 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
10406 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
10407 </TR></TABLE>
10408 <H2> 11.14 VECTOR </H2>
10409 <!--docid::SEC127::-->
10410 <P>
10411
10412 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Two possible syntaxes:
10413 VECTOR vec_name=var_list.
10414 VECTOR vec_name_list(count).
10415 </pre></td></tr></table><P>
10416
10417 The VECTOR command allows a group of variables to be accessed as if they
10418 were consecutive members of an array with a vector(index) notation.
10419 </P>
10420 <P>
10421
10422 To make a vector out of a set of existing variables, specify a name for
10423 the vector followed by an equals sign (`<SAMP>=</SAMP>') and the variables that
10424 belong in the vector.
10425 </P>
10426 <P>
10427
10428 To make a vector and create variables at the same time, specify one or
10429 more vector names followed by a count in parentheses. This will cause
10430 variables named <CODE><VAR>vec</VAR>1</CODE> through <CODE><VAR>vec</VAR><VAR>count</VAR></CODE> to
10431 be created as numeric variables. Variable names including numeric
10432 suffixes may not exceed 8 characters in length, and none of the
10433 variables may exist prior to the VECTOR command.
10434 </P>
10435 <P>
10436
10437 All the variables in a vector must be the same type.
10438 </P>
10439 <P>
10440
10441 Vectors created with VECTOR disappear after any procedure or
10442 procedure-like command is executed. The variables contained in the
10443 vectors remain, unless they are scratch variables (see section <A HREF="pspp.html#SEC55">7.6.5 Scratch Variables</A>).
10444 </P>
10445 <P>
10446
10447 Variables within a vector may be references in expressions using
10448 vector(index) syntax.
10449 </P>
10450 <P>
10451
10452 <A NAME="WRITE FORMATS"></A>
10453 <HR SIZE="6">
10454 <A NAME="SEC128"></A>
10455 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
10456 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC127"> &lt; </A>]</TD>
10457 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &gt; </A>]</TD>
10458 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &lt;&lt; </A>]</TD>
10459 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> Up </A>]</TD>
10460 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &gt;&gt; </A>]</TD>
10461 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
10462 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
10463 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
10464 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
10465 </TR></TABLE>
10466 <H2> 11.15 WRITE FORMATS </H2>
10467 <!--docid::SEC128::-->
10468 <P>
10469
10470 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">WRITE FORMATS var_list (fmt_spec).
10471 </pre></td></tr></table><P>
10472
10473 The WRITE FORMATS command sets the write formats for the specified
10474 variables to the specified format specification.
10475 </P>
10476 <P>
10477
10478 Syntax is identical to that of FORMATS (see section <A HREF="pspp.html#SEC117">11.4 FORMATS</A>), but the WRITE
10479 FORMATS command sets only write formats, not print formats.
10480 </P>
10481 <P>
10482
10483 <A NAME="Data Manipulation"></A>
10484 <HR SIZE="6">
10485 <A NAME="SEC129"></A>
10486 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
10487 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC128"> &lt; </A>]</TD>
10488 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC130"> &gt; </A>]</TD>
10489 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC113"> &lt;&lt; </A>]</TD>
10490 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
10491 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &gt;&gt; </A>]</TD>
10492 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
10493 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
10494 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
10495 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
10496 </TR></TABLE>
10497 <H1> 12. Data transformations </H1>
10498 <!--docid::SEC129::-->
10499 <P>
10500
10501 The PSPP procedures examined in this chapter manipulate data and
10502 prepare the active file for later analyses. They do not produce output,
10503 as a rule.
10504 </P>
10505 <P>
10506
10507 <TABLE BORDER="0" CELLSPACING="0">
10508 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC130">12.1 AGGREGATE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Summarize multiple cases into a single case.</TD></TR>
10509 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC131">12.2 AUTORECODE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Automatic recoding of variables.</TD></TR>
10510 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC132">12.3 COMPUTE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Assigning a variable a calculated value.</TD></TR>
10511 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC133">12.4 COUNT</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Counting variables with particular values.</TD></TR>
10512 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC134">12.5 FLIP</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Exchange variables with cases.</TD></TR>
10513 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC135">12.6 IF</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Conditionally assigning a calculated value.</TD></TR>
10514 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC136">12.7 RECODE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Mapping values from one set to another.</TD></TR>
10515 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC137">12.8 SORT CASES</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Sort the active file.</TD></TR>
10516 </TABLE>
10517 <P>
10518
10519 <A NAME="AGGREGATE"></A>
10520 <HR SIZE="6">
10521 <A NAME="SEC130"></A>
10522 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
10523 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &lt; </A>]</TD>
10524 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC131"> &gt; </A>]</TD>
10525 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &lt;&lt; </A>]</TD>
10526 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> Up </A>]</TD>
10527 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &gt;&gt; </A>]</TD>
10528 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
10529 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
10530 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
10531 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
10532 </TR></TABLE>
10533 <H2> 12.1 AGGREGATE </H2>
10534 <!--docid::SEC130::-->
10535 <P>
10536
10537 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">AGGREGATE
10538 /BREAK=var_list
10539 /PRESORTED
10540 /OUTFILE={*,'filename'}
10541 /DOCUMENT
10542 /MISSING=COLUMNWISE
10543 /dest_vars=agr_func(src_vars, args<small>...</small>)<small>...</small>
10544 </pre></td></tr></table><P>
10545
10546 The AGGREGATE command summarizes groups of cases into single cases.
10547 Cases are divided into groups that have the same values for one or more
10548 variables called <EM>break variables</EM>. Several functions are available
10549 for summarizing case contents.
10550 </P>
10551 <P>
10552
10553 BREAK is the only required subcommand (in addition, at least one
10554 aggregation variable must be specified). Specify a list of variable
10555 names. The values of these variables are used to divide the active file
10556 into groups to be summarized.
10557 </P>
10558 <P>
10559
10560 By default, the active file is sorted based on the break variables
10561 before aggregation takes place. If the active file is already sorted,
10562 specify PRESORTED to save time.
10563 </P>
10564 <P>
10565
10566 The OUTFILE subcommand specifies a system file by file name string or
10567 file handle (see section <A HREF="pspp.html#SEC93">9.6 FILE HANDLE</A>). The aggregated cases are sent to
10568 this file. If OUTFILE is not specified, or if `<SAMP>*</SAMP>' is specified,
10569 then the aggregated cases replace the active file.
10570 </P>
10571 <P>
10572
10573 Normally the aggregate file does not receive the documents from the
10574 active file, even if the aggregate file replaces the active file.
10575 Specify DOCUMENT to have the documents from the active file copied to
10576 the aggregate file.
10577 </P>
10578 <P>
10579
10580 At least one aggregation variable must be specified. Specify a list of
10581 aggregation variables, an equals sign (`<SAMP>=</SAMP>'), an aggregation
10582 function name (see the list below), and a list of source variables in
10583 parentheses. In addition, some aggregation functions expect additional
10584 arguments in the parentheses following the source variable names.
10585 </P>
10586 <P>
10587
10588 There must be exactly as many source variables as aggregation variables.
10589 Each aggregation variable receives the results of applying the specified
10590 aggregation function to the corresponding source variable. Most
10591 aggregation functions may be applied to numeric and short and long
10592 string variables. Others are restricted to numeric values; these are
10593 marked as such in this list below.
10594 </P>
10595 <P>
10596
10597 Any number of sets of aggregation variables may be specified.
10598 </P>
10599 <P>
10600
10601 The available aggregation functions are as follows:
10602 </P>
10603 <P>
10604
10605 </P>
10606 <DL COMPACT>
10607 <DT>SUM(var_name)
10608 <DD>Sum. Limited to numeric values.
10609 <DT>MEAN(var_name)
10610 <DD>Arithmetic mean. Limited to numeric values.
10611 <DT>SD(var_name)
10612 <DD>Standard deviation of the mean. Limited to numeric values.
10613 <DT>MAX(var_name)
10614 <DD>Maximum value.
10615 <DT>MIN(var_name)
10616 <DD>Minimum value.
10617 <DT>FGT(var_name, value)
10618 <DD><DT>PGT(var_name, value)
10619 <DD>Fraction between 0 and 1, or percentage between 0 and 100, respectively,
10620 of values greater than the specified constant.
10621 <DT>FLT(var_name, value)
10622 <DD><DT>PLT(var_name, value)
10623 <DD>Fraction or percentage, respectively, of values less than the specified
10624 constant.
10625 <DT>FIN(var_name, low, high)
10626 <DD><DT>PIN(var_name, low, high)
10627 <DD>Fraction or percentage, respectively, of values within the specified
10628 inclusive range of constants.
10629 <DT>FOUT(var_name, low, high)
10630 <DD><DT>POUT(var_name, low, high)
10631 <DD>Fraction or percentage, respectively, of values strictly outside the
10632 specified range of constants.
10633 <DT>N(var_name)
10634 <DD>Number of non-missing values.
10635 <DT>N
10636 <DD>Number of cases aggregated to form this group. Don't supply a source
10637 variable for this aggregation function.
10638 <DT>NU(var_name)
10639 <DD>Number of non-missing values. Each case is considered to have a weight
10640 of 1, regardless of the current weighting variable (see section <A HREF="pspp.html#SEC146">13.8 WEIGHT</A>).
10641 <DT>NU
10642 <DD>Number of cases aggregated to form this group. Each case is considered
10643 to have a weight of 1, regardless of the current weighting variable.
10644 <DT>NMISS(var_name)
10645 <DD>Number of missing values.
10646 <DT>NUMISS(var_name)
10647 <DD>Number of missing values. Each case is considered to have a weight of
10648 1, regardless of the current weighting variable.
10649 <DT>FIRST(var_name)
10650 <DD>First value in this group.
10651 <DT>LAST(var_name)
10652 <DD>Last value in this group.
10653 </DL>
10654 <P>
10655
10656 When string values are compared by aggregation functions, they are done
10657 in terms of internal character codes. On most modern computers, this is
10658 a form of ASCII.
10659 </P>
10660 <P>
10661
10662 In addition, there is a parallel set of aggregation functions having the
10663 same names as those above, but with a dot after the last character (for
10664 instance, `<SAMP>SUM.</SAMP>'). These functions are the same as the above,
10665 except that they cause user-missing values, which are normally excluded
10666 from calculations, to be included.
10667 </P>
10668 <P>
10669
10670 Normally, only a single case (2 for SD and SD.) need be non-missing in
10671 each group in order for the aggregate variable to be non-missing. If
10672 /MISSING=COLUMNWISE is specified, the behavior reverses: that is, a
10673 single missing value is enough to make the aggregate variable become a
10674 missing value.
10675 </P>
10676 <P>
10677
10678 AGGREGATE ignores the current SPLIT FILE settings and causes them to be
10679 canceled (see section <A HREF="pspp.html#SEC144">13.6 SPLIT FILE</A>).
10680 </P>
10681 <P>
10682
10683 <A NAME="AUTORECODE"></A>
10684 <HR SIZE="6">
10685 <A NAME="SEC131"></A>
10686 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
10687 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC130"> &lt; </A>]</TD>
10688 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC132"> &gt; </A>]</TD>
10689 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &lt;&lt; </A>]</TD>
10690 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> Up </A>]</TD>
10691 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &gt;&gt; </A>]</TD>
10692 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
10693 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
10694 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
10695 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
10696 </TR></TABLE>
10697 <H2> 12.2 AUTORECODE </H2>
10698 <!--docid::SEC131::-->
10699 <P>
10700
10701 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">AUTORECODE VARIABLES=src_vars INTO dest_vars
10702 /DESCENDING
10703 /PRINT
10704 </pre></td></tr></table><P>
10705
10706 The AUTORECODE procedure considers the <VAR>n</VAR> values that a variable
10707 takes on and maps them onto values 1<small>...</small><VAR>n</VAR> on a new numeric
10708 variable.
10709 </P>
10710 <P>
10711
10712 Subcommand VARIABLES is the only required subcommand and must come
10713 first. Specify VARIABLES, an equals sign (`<SAMP>=</SAMP>'), a list of source
10714 variables, INTO, and a list of target variables. There must the same
10715 number of source and target variables. The target variables must not
10716 already exist.
10717 </P>
10718 <P>
10719
10720 By default, increasing values of a source variable (for a string, this
10721 is based on character code comparisons) are recoded to increasing values
10722 of its target variable. To cause increasing values of a source variable
10723 to be recoded to decreasing values of its target variable (<VAR>n</VAR> down
10724 to 1), specify DESCENDING.
10725 </P>
10726 <P>
10727
10728 PRINT is currently ignored.
10729 </P>
10730 <P>
10731
10732 AUTORECODE is a procedure. It causes the data to be read.
10733 </P>
10734 <P>
10735
10736 <A NAME="COMPUTE"></A>
10737 <HR SIZE="6">
10738 <A NAME="SEC132"></A>
10739 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
10740 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC131"> &lt; </A>]</TD>
10741 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC133"> &gt; </A>]</TD>
10742 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &lt;&lt; </A>]</TD>
10743 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> Up </A>]</TD>
10744 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &gt;&gt; </A>]</TD>
10745 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
10746 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
10747 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
10748 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
10749 </TR></TABLE>
10750 <H2> 12.3 COMPUTE </H2>
10751 <!--docid::SEC132::-->
10752 <P>
10753
10754 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">COMPUTE var_name = expression.
10755 </pre></td></tr></table><P>
10756
10757 <CODE>COMPUTE</CODE> creates a variable with the name specified (if
10758 necessary), then evaluates the given expression for every case and
10759 assigns the result to the variable. See section <A HREF="pspp.html#SEC58">8. Mathematical Expressions</A>.
10760 </P>
10761 <P>
10762
10763 Numeric variables created or computed by <CODE>COMPUTE</CODE> are assigned an
10764 output width of 8 character with two decimal places (<CODE>F8.2</CODE>).
10765 String variables created or computed by <CODE>COMPUTE</CODE> have the same
10766 width as the existing variable or constant.
10767 </P>
10768 <P>
10769
10770 COMPUTE is a transformation. It does not cause the active file to be
10771 read.
10772 </P>
10773 <P>
10774
10775 <A NAME="COUNT"></A>
10776 <HR SIZE="6">
10777 <A NAME="SEC133"></A>
10778 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
10779 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC132"> &lt; </A>]</TD>
10780 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC134"> &gt; </A>]</TD>
10781 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &lt;&lt; </A>]</TD>
10782 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> Up </A>]</TD>
10783 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &gt;&gt; </A>]</TD>
10784 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
10785 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
10786 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
10787 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
10788 </TR></TABLE>
10789 <H2> 12.4 COUNT </H2>
10790 <!--docid::SEC133::-->
10791 <P>
10792
10793 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">COUNT var_name = var<small>...</small> (value<small>...</small>).
10794
10795 Each value takes one of the following forms:
10796 number
10797 string
10798 num1 THRU num2
10799 MISSING
10800 SYSMIS
10801 In addition, num1 and num2 can be LO or LOWEST, or HI or HIGHEST,
10802 respectively.
10803 </pre></td></tr></table><P>
10804
10805 <CODE>COUNT</CODE> creates or replaces a numeric <EM>target</EM> variable that
10806 counts the occurrence of a <EM>criterion</EM> value or set of values over
10807 one or more <EM>test</EM> variables for each case.
10808 </P>
10809 <P>
10810
10811 The target variable values are always nonnegative integers. They are
10812 never missing. The target variable is assigned an F8.2 output format.
10813 See section <A HREF="pspp.html#SEC54">7.6.4 Input and Output Formats</A>. Any variables, including long and short
10814 string variables, may be test variables.
10815 </P>
10816 <P>
10817
10818 User-missing values of test variables are treated just like any other
10819 values. They are <STRONG>not</STRONG> treated as system-missing values.
10820 User-missing values that are criterion values or inside ranges of
10821 criterion values are counted as any other values. However (for numeric
10822 variables), keyword <CODE>MISSING</CODE> may be used to refer to all system-
10823 and user-missing values.
10824 </P>
10825 <P>
10826
10827 <CODE>COUNT</CODE> target variables are assigned values in the order
10828 specified. In the command <CODE>COUNT A=A B(1) /B=A B(2).</CODE>, the
10829 following actions occur:
10830 </P>
10831 <P>
10832
10833 <UL>
10834 <LI>
10835 The number of occurrences of 1 between <CODE>A</CODE> and <CODE>B</CODE> is counted.
10836 <P>
10837
10838 </P>
10839 <LI>
10840 <CODE>A</CODE> is assigned this value.
10841 <P>
10842
10843 </P>
10844 <LI>
10845 The number of occurrences of 1 between <CODE>B</CODE> and the <STRONG>new</STRONG>
10846 value of <CODE>A</CODE> is counted.
10847 <P>
10848
10849 </P>
10850 <LI>
10851 <CODE>B</CODE> is assigned this value.
10852 </UL>
10853 <P>
10854
10855 Despite this ordering, all <CODE>COUNT</CODE> criterion variables must exist
10856 before the procedure is executed--they may not be created as target
10857 variables earlier in the command! Break such a command into two
10858 separate commands.
10859 </P>
10860 <P>
10861
10862 The examples below may help to clarify.
10863 </P>
10864 <P>
10865
10866 <OL>
10867 <LI>
10868 Assuming <CODE>Q0</CODE>, <CODE>Q2</CODE>, <small>...</small>, <CODE>Q9</CODE> are numeric variables,
10869 the following commands:
10870 <P>
10871
10872 <OL>
10873 <LI>
10874 Count the number of times the value 1 occurs through these variables
10875 for each case and assigns the count to variable <CODE>QCOUNT</CODE>.
10876 <P>
10877
10878 </P>
10879 <LI>
10880 Print out the total number of times the value 1 occurs throughout
10881 <EM>all</EM> cases using <CODE>DESCRIPTIVES</CODE>. See section <A HREF="pspp.html#SEC153">15.1 DESCRIPTIVES</A>, for
10882 details.
10883 </OL>
10884 <P>
10885
10886 <TABLE><tr><td>&nbsp;</td><td class=example><pre>COUNT QCOUNT=Q0 TO Q9(1).
10887 DESCRIPTIVES QCOUNT /STATISTICS=SUM.
10888 </pre></td></tr></table><P>
10889
10890 </P>
10891 <LI>
10892 Given these same variables, the following commands:
10893 <P>
10894
10895 <OL>
10896 <LI>
10897 Count the number of valid values of these variables for each case and
10898 assigns the count to variable <CODE>QVALID</CODE>.
10899 <P>
10900
10901 </P>
10902 <LI>
10903 Multiplies each value of <CODE>QVALID</CODE> by 10 to obtain a percentage of
10904 valid values, using <CODE>COMPUTE</CODE>. See section <A HREF="pspp.html#SEC132">12.3 COMPUTE</A>, for details.
10905 <P>
10906
10907 </P>
10908 <LI>
10909 Print out the percentage of valid values across all cases, using
10910 <CODE>DESCRIPTIVES</CODE>. See section <A HREF="pspp.html#SEC153">15.1 DESCRIPTIVES</A>, for details.
10911 </OL>
10912 <P>
10913
10914 <TABLE><tr><td>&nbsp;</td><td class=example><pre>COUNT QVALID=Q0 TO Q9 (LO THRU HI).
10915 COMPUTE QVALID=QVALID*10.
10916 DESCRIPTIVES QVALID /STATISTICS=MEAN.
10917 </pre></td></tr></table></OL>
10918 <P>
10919
10920 <A NAME="FLIP"></A>
10921 <HR SIZE="6">
10922 <A NAME="SEC134"></A>
10923 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
10924 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC133"> &lt; </A>]</TD>
10925 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC135"> &gt; </A>]</TD>
10926 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &lt;&lt; </A>]</TD>
10927 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> Up </A>]</TD>
10928 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &gt;&gt; </A>]</TD>
10929 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
10930 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
10931 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
10932 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
10933 </TR></TABLE>
10934 <H2> 12.5 FLIP </H2>
10935 <!--docid::SEC134::-->
10936 <P>
10937
10938 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">FLIP /VARIABLES=var_list /NEWNAMES=var_name.
10939 </pre></td></tr></table><P>
10940
10941 The FLIP command transposes rows and columns in the active file. It
10942 causes cases to be swapped with variables, and vice versa.
10943 </P>
10944 <P>
10945
10946 There are no required subcommands. The VARIABLES subcommand specifies
10947 variables that will be transformed into cases. Variables not specified
10948 are discarded. By default, all variables are selected for
10949 transposition.
10950 </P>
10951 <P>
10952
10953 The variables specified by NEWNAMES, which must be a string variable, is
10954 used to give names to the variables created by FLIP. If NEWNAMES is not
10955 specified then the default is a variable named CASE_LBL, if it exists.
10956 If it does not then the variables created by FLIP are named VAR000
10957 through VAR999, then VAR1000, VAR1001, and so on.
10958 </P>
10959 <P>
10960
10961 When a NEWNAMES variable is available, the names must be canonicalized
10962 before becoming variable names. Invalid characters are replaced by
10963 letter `<SAMP>V</SAMP>' in the first position, or by `<SAMP>_</SAMP>' in subsequent
10964 positions. If the name thus generated is not unique, then numeric
10965 extensions are added, starting with 1, until a unique name is found or
10966 there are no remaining possibilities. If the latter occurs then the
10967 FLIP operation aborts.
10968 </P>
10969 <P>
10970
10971 The resultant dictionary contains a CASE_LBL variable, which stores the
10972 names of the variables in the dictionary before the transposition. If
10973 the active file is subsequently transposed using FLIP, this variable can
10974 be used to recreate the original variable names.
10975 </P>
10976 <P>
10977
10978 <A NAME="IF"></A>
10979 <HR SIZE="6">
10980 <A NAME="SEC135"></A>
10981 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
10982 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC134"> &lt; </A>]</TD>
10983 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC136"> &gt; </A>]</TD>
10984 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &lt;&lt; </A>]</TD>
10985 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> Up </A>]</TD>
10986 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &gt;&gt; </A>]</TD>
10987 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
10988 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
10989 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
10990 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
10991 </TR></TABLE>
10992 <H2> 12.6 IF </H2>
10993 <!--docid::SEC135::-->
10994 <P>
10995
10996 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Two possible syntaxes:
10997 IF test_expr target_var=target_expr.
10998 IF test_expr target_vec(target_index)=target_expr.
10999 </pre></td></tr></table><P>
11000
11001 The IF transformation conditionally assigns the value of a target
11002 expression to a target variable, based on the truth of a test
11003 expression.
11004 </P>
11005 <P>
11006
11007 Specify a boolean-valued expression (see section <A HREF="pspp.html#SEC58">8. Mathematical Expressions</A>) to be tested
11008 following the IF keyword. This expression is calculated for each case.
11009 If the value is true, then the value of target_expr is computed and
11010 assigned to target_var. If the value is false or missing, nothing is
11011 done. Numeric and short and long string variables may be used. The
11012 type of target_expr must match the type of target_var.
11013 </P>
11014 <P>
11015
11016 For numeric variables only, target_var need not exist before the IF
11017 transformation is executed. In this case, target_var is assigned the
11018 system-missing value if the IF condition is not true. String variables
11019 must be declared before they can be used as targets for IF.
11020 </P>
11021 <P>
11022
11023 In addition to ordinary variables, the target variable may be an element
11024 of a vector. In this case, the vector index must be specified in
11025 parentheses following the vector name.
11026 </P>
11027 <P>
11028
11029 <A NAME="RECODE"></A>
11030 <HR SIZE="6">
11031 <A NAME="SEC136"></A>
11032 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11033 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC135"> &lt; </A>]</TD>
11034 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC137"> &gt; </A>]</TD>
11035 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &lt;&lt; </A>]</TD>
11036 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> Up </A>]</TD>
11037 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &gt;&gt; </A>]</TD>
11038 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11039 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11040 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11041 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11042 </TR></TABLE>
11043 <H2> 12.7 RECODE </H2>
11044 <!--docid::SEC136::-->
11045 <P>
11046
11047 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">RECODE var_list (src_value<small>...</small>=dest_value)<small>...</small> [INTO var_list].
11048
11049 src_value may take the following forms:
11050 number
11051 string
11052 num1 THRU num2
11053 MISSING
11054 SYSMIS
11055 ELSE
11056 Open-ended ranges may be specified using LO or LOWEST for num1
11057 or HI or HIGHEST for num2.
11058
11059 dest_value may take the following forms:
11060 num
11061 string
11062 SYSMIS
11063 COPY
11064 </pre></td></tr></table><P>
11065
11066 The RECODE command is used to translate data from one range of values to
11067 another, using flexible user-specified mappings. Data may be remapped
11068 in-place or copied to new variables. Numeric, short string, and long
11069 string data can be recoded.
11070 </P>
11071 <P>
11072
11073 Specify the list of source variables, followed by one or more mapping
11074 specifications each enclosed in parentheses. If the data is to be
11075 copied to new variables, specify INTO, then the list of target
11076 variables. String target variables must already have been declared
11077 using STRING or another transformation, but numeric target variables can
11078 be created on the fly. There must be exactly as many target variables
11079 as source variables. Each source variable is remapped into its
11080 corresponding target variable.
11081 </P>
11082 <P>
11083
11084 When INTO is not used, the input and output variables must be of the
11085 same type. Otherwise, string values can be recoded into numeric values,
11086 and vice versa. When this is done and there is no mapping for a
11087 particular value, either a value consisting of all spaces or the
11088 system-missing value is assigned, depending on variable type.
11089 </P>
11090 <P>
11091
11092 Mappings are considered from left to right. The first src_value that
11093 matches the value of the source variable causes the target variable to
11094 receive the value indicated by the dest_value. Literal number, string,
11095 and range src_value's should be self-explanatory. MISSING as a
11096 src_value matches any user- or system-missing value. SYSMIS matches the
11097 system missing value only. ELSE is a catch-all that matches anything.
11098 It should be the last src_value specified.
11099 </P>
11100 <P>
11101
11102 Numeric and string dest_value's should also be self-explanatory. COPY
11103 causes the input values to be copied to the output. This is only value
11104 if the source and target variables are of the same type. SYSMIS
11105 indicates the system-missing value.
11106 </P>
11107 <P>
11108
11109 If the source variables are strings and the target variables are
11110 numeric, then there is one additional mapping available: (CONVERT),
11111 which must be the last specified mapping. CONVERT causes a number
11112 specified as a string to be converted to a numeric value. If the string
11113 cannot be parsed as a number, then the system-missing value is assigned.
11114 </P>
11115 <P>
11116
11117 Multiple recodings can be specified on the same RECODE command.
11118 Introduce additional recodings with a slash (`<SAMP>/</SAMP>') in order to
11119 separate them from the previous recodings.
11120 </P>
11121 <P>
11122
11123 <A NAME="SORT CASES"></A>
11124 <HR SIZE="6">
11125 <A NAME="SEC137"></A>
11126 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11127 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC136"> &lt; </A>]</TD>
11128 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &gt; </A>]</TD>
11129 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &lt;&lt; </A>]</TD>
11130 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> Up </A>]</TD>
11131 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &gt;&gt; </A>]</TD>
11132 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11133 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11134 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11135 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11136 </TR></TABLE>
11137 <H2> 12.8 SORT CASES </H2>
11138 <!--docid::SEC137::-->
11139 <P>
11140
11141 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">SORT CASES BY var_list.
11142 </pre></td></tr></table><P>
11143
11144 SORT CASES sorts the active file by the values of one or more
11145 variables.
11146 </P>
11147 <P>
11148
11149 Specify BY and a list of variables to sort by. By default, variables
11150 are sorted in ascending order. To override sort order, specify (D) or
11151 (DOWN) after a list of variables to get descending order, or (A) or (UP)
11152 for ascending order. These apply to the entire list of variables
11153 preceding them.
11154 </P>
11155 <P>
11156
11157 SORT CASES is a procedure. It causes the data to be read.
11158 </P>
11159 <P>
11160
11161 SORT CASES will attempt to sort the entire active file in main memory.
11162 If main memory is exhausted then it will use a merge sort algorithm that
11163 involves writing and reading numerous temporary files. Environment
11164 variables determine the temporary files' location. The first of
11165 SPSSTMPDIR, SPSSXTMPDIR, or TMPDIR that is set determines the location.
11166 Otherwise, if the compiler environment defined P_tmpdir, that is used.
11167 Otherwise, under Unix-like OSes /tmp is used; under MS-DOS, the first of
11168 TEMP, TMP, or root on the current drive is used; under other OSes, the
11169 current directory.
11170 </P>
11171 <P>
11172
11173 <A NAME="Data Selection"></A>
11174 <HR SIZE="6">
11175 <A NAME="SEC138"></A>
11176 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11177 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC137"> &lt; </A>]</TD>
11178 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC139"> &gt; </A>]</TD>
11179 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC129"> &lt;&lt; </A>]</TD>
11180 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
11181 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> &gt;&gt; </A>]</TD>
11182 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11183 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11184 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11185 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11186 </TR></TABLE>
11187 <H1> 13. Selecting data for analysis </H1>
11188 <!--docid::SEC138::-->
11189 <P>
11190
11191 This chapter documents PSPP commands that temporarily or permanently
11192 select data records from the active file for analysis.
11193 </P>
11194 <P>
11195
11196 <TABLE BORDER="0" CELLSPACING="0">
11197 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC139">13.1 FILTER</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Exclude cases based on a variable.</TD></TR>
11198 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC140">13.2 N OF CASES</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Limit the size of the active file.</TD></TR>
11199 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC141">13.3 PROCESS IF</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Temporarily excluding cases.</TD></TR>
11200 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC142">13.4 SAMPLE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Select a specified proportion of cases.</TD></TR>
11201 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC143">13.5 SELECT IF</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Permanently delete selected cases.</TD></TR>
11202 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC144">13.6 SPLIT FILE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Do multiple analyses with one command.</TD></TR>
11203 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC145">13.7 TEMPORARY</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Make transformations' effects temporary.</TD></TR>
11204 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC146">13.8 WEIGHT</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Weight cases by a variable.</TD></TR>
11205 </TABLE>
11206 <P>
11207
11208 <A NAME="FILTER"></A>
11209 <HR SIZE="6">
11210 <A NAME="SEC139"></A>
11211 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11212 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &lt; </A>]</TD>
11213 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC140"> &gt; </A>]</TD>
11214 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &lt;&lt; </A>]</TD>
11215 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> Up </A>]</TD>
11216 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> &gt;&gt; </A>]</TD>
11217 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11218 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11219 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11220 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11221 </TR></TABLE>
11222 <H2> 13.1 FILTER </H2>
11223 <!--docid::SEC139::-->
11224 <P>
11225
11226 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">FILTER BY var_name.
11227 FILTER OFF.
11228 </pre></td></tr></table><P>
11229
11230 The FILTER command allows a boolean-valued variable to be used to select
11231 cases from the data stream for processing.
11232 </P>
11233 <P>
11234
11235 In order to set up filtering, specify BY and a variable name. Keyword
11236 BY is optional but recommended. Cases which have a zero or system- or
11237 user-missing value are excluded from analysis, but not deleted from the
11238 data stream. Cases with other values are analyzed.
11239 </P>
11240 <P>
11241
11242 Use FILTER OFF to turn off case filtering.
11243 </P>
11244 <P>
11245
11246 Filtering takes place immediately before cases pass to a procedure for
11247 analysis. Only one filter variable may be active at once. Normally,
11248 case filtering continues until it is explicitly turned off with FILTER
11249 OFF. However, if FILTER is placed after TEMPORARY, then filtering stops
11250 after execution of the next procedure or procedure-like command.
11251 </P>
11252 <P>
11253
11254 <A NAME="N OF CASES"></A>
11255 <HR SIZE="6">
11256 <A NAME="SEC140"></A>
11257 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11258 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC139"> &lt; </A>]</TD>
11259 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC141"> &gt; </A>]</TD>
11260 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &lt;&lt; </A>]</TD>
11261 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> Up </A>]</TD>
11262 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> &gt;&gt; </A>]</TD>
11263 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11264 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11265 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11266 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11267 </TR></TABLE>
11268 <H2> 13.2 N OF CASES </H2>
11269 <!--docid::SEC140::-->
11270 <P>
11271
11272 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">N [OF CASES] num_of_cases [ESTIMATED].
11273 </pre></td></tr></table><P>
11274
11275 Sometimes you may want to disregard cases of your input. The <CODE>N</CODE>
11276 command can be used to do this. <CODE>N 100</CODE> tells PSPP to
11277 disregard all cases after the first 100.
11278 </P>
11279 <P>
11280
11281 If the value specified for <CODE>N</CODE> is greater than the number of cases
11282 read in, the value is ignored.
11283 </P>
11284 <P>
11285
11286 <CODE>N</CODE> does not discard cases or cause them not to be read in. It
11287 just causes cases beyond the last one specified to be ignored by data
11288 analysis commands.
11289 </P>
11290 <P>
11291
11292 A later <CODE>N</CODE> command can increase or decrease the number of cases
11293 selected. (To select all the cases without knowing how many there are,
11294 specify a very high number: 100000 or whatever you think is large enough.)
11295 </P>
11296 <P>
11297
11298 Transformation procedures performed after <CODE>N</CODE> is executed
11299 <EM>do</EM> cause cases to be discarded.
11300 </P>
11301 <P>
11302
11303 The <CODE>SAMPLE</CODE>, <CODE>PROCESS IF</CODE>, and <CODE>SELECT IF</CODE> commands have
11304 precedence over <CODE>N</CODE>---the same results are obtained by both of the
11305 following fragments, given the same random number seeds:
11306 </P>
11307 <P>
11308
11309 <TABLE><tr><td>&nbsp;</td><td class=example><pre><I><small>...</small>set up, read in data<small>...</small></I>
11310 N 100.
11311 SAMPLE .5.
11312 <I><small>...</small>analyze data<small>...</small></I>
11313
11314 <I><small>...</small>set up, read in data<small>...</small></I>
11315 SAMPLE .5.
11316 N 100.
11317 <I><small>...</small>analyze data<small>...</small></I>
11318 </pre></td></tr></table><P>
11319
11320 Both fragments above first randomly sample approximately half of the
11321 cases, then select the first 100 of those sampled.
11322 </P>
11323 <P>
11324
11325 <CODE>N</CODE> with the <CODE>ESTIMATED</CODE> keyword can be used to give an
11326 estimated number of cases before DATA LIST or another command to
11327 read in data. (<CODE>ESTIMATED</CODE> never limits the number of cases
11328 processed by procedures.)
11329 </P>
11330 <P>
11331
11332 <A NAME="PROCESS IF"></A>
11333 <HR SIZE="6">
11334 <A NAME="SEC141"></A>
11335 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11336 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC140"> &lt; </A>]</TD>
11337 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC142"> &gt; </A>]</TD>
11338 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &lt;&lt; </A>]</TD>
11339 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> Up </A>]</TD>
11340 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> &gt;&gt; </A>]</TD>
11341 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11342 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11343 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11344 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11345 </TR></TABLE>
11346 <H2> 13.3 PROCESS IF </H2>
11347 <!--docid::SEC141::-->
11348 <P>
11349
11350 <TABLE><tr><td>&nbsp;</td><td class=example><pre>PROCESS IF expression.
11351 </pre></td></tr></table><P>
11352
11353 The PROCESS IF command is used to temporarily eliminate cases from the
11354 data stream. Its effects are active only through the execution of the
11355 next procedure or procedure-like command.
11356 </P>
11357 <P>
11358
11359 Specify a boolean expression (see section <A HREF="pspp.html#SEC58">8. Mathematical Expressions</A>). If the value of the
11360 expression is true for a particular case, the case will be analyzed. If
11361 the expression has a false or missing value, then the case will be
11362 deleted from the data stream for this procedure only.
11363 </P>
11364 <P>
11365
11366 Regardless of its placement relative to other commands, PROCESS IF
11367 always takes effect immediately before data passes to the procedure.
11368 Only one PROCESS IF command may be in effect at any given time.
11369 </P>
11370 <P>
11371
11372 The effects of PROCESS IF are similar not identical to the effects of
11373 executing TEMPORARY then SELECT IF (see section <A HREF="pspp.html#SEC143">13.5 SELECT IF</A>).
11374 </P>
11375 <P>
11376
11377 Use of PROCESS IF is deprecated. It is included for compatibility with
11378 old command files. New syntax files should use SELECT IF or FILTER
11379 instead.
11380 </P>
11381 <P>
11382
11383 <A NAME="SAMPLE"></A>
11384 <HR SIZE="6">
11385 <A NAME="SEC142"></A>
11386 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11387 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC141"> &lt; </A>]</TD>
11388 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC143"> &gt; </A>]</TD>
11389 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &lt;&lt; </A>]</TD>
11390 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> Up </A>]</TD>
11391 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> &gt;&gt; </A>]</TD>
11392 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11393 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11394 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11395 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11396 </TR></TABLE>
11397 <H2> 13.4 SAMPLE </H2>
11398 <!--docid::SEC142::-->
11399 <P>
11400
11401 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">SAMPLE num1 [FROM num2].
11402 </pre></td></tr></table><P>
11403
11404 <CODE>SAMPLE</CODE> is used to randomly sample a proportion of the cases in
11405 the active file. <CODE>SAMPLE</CODE> is temporary, affecting only the next
11406 procedure, unless that is a data transformation, such as <CODE>SELECT IF</CODE>
11407 or <CODE>RECODE</CODE>.
11408 </P>
11409 <P>
11410
11411 The proportion to sample can be expressed as a single number between 0
11412 and 1. If <CODE>k</CODE> is the number specified, and <CODE>N</CODE> is the number
11413 of currently-selected cases in the active file, then after
11414 <CODE>SAMPLE <VAR>k</VAR>.</CODE>, there will be <CODE>k*N</CODE>, plus or minus one, cases
11415 selected.
11416 </P>
11417 <P>
11418
11419 The proportion to sample can also be specified in the style <CODE>SAMPLE
11420 <VAR>m</VAR> FROM <VAR>N</VAR></CODE>. With this style, cases are selected as follows:
11421 </P>
11422 <P>
11423
11424 <OL>
11425 <LI>
11426 If <VAR>N</VAR> is equal to the number of currently-selected cases in the
11427 active file, exactly <VAR>m</VAR> cases will be selected.
11428 <P>
11429
11430 </P>
11431 <LI>
11432 If <VAR>N</VAR> is greater than the number of currently-selected cases in the
11433 active file, an equivalent proportion of cases will be selected.
11434 <P>
11435
11436 </P>
11437 <LI>
11438 If <VAR>N</VAR> is less than the number of currently-selected cases in the
11439 active, exactly <VAR>m</VAR> cases will be selected <EM>from the first
11440 <VAR>N</VAR> cases in the active file.</EM>
11441 </OL>
11442 <P>
11443
11444 <CODE>SAMPLE</CODE>, <CODE>SELECT IF</CODE>, and <CODE>PROCESS IF</CODE> are performed in
11445 the order specified by the syntax file.
11446 </P>
11447 <P>
11448
11449 <CODE>SAMPLE</CODE> is ignored before <CODE>SORT CASES</CODE>.
11450 </P>
11451 <P>
11452
11453 <CODE>SAMPLE</CODE> is always performed before <CODE>N OF CASES</CODE>, regardless
11454 of ordering in the syntax file. See section <A HREF="pspp.html#SEC140">13.2 N OF CASES</A>.
11455 </P>
11456 <P>
11457
11458 The same values for <CODE>SAMPLE</CODE> may result in different samples. To
11459 obtain the same sample, use the <CODE>SET</CODE> command to set the random
11460 number seed to the same value before each <CODE>SAMPLE</CODE>. By default,
11461 the random number seed is based on the system time.
11462 </P>
11463 <P>
11464
11465 <A NAME="SELECT IF"></A>
11466 <HR SIZE="6">
11467 <A NAME="SEC143"></A>
11468 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11469 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC142"> &lt; </A>]</TD>
11470 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC144"> &gt; </A>]</TD>
11471 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &lt;&lt; </A>]</TD>
11472 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> Up </A>]</TD>
11473 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> &gt;&gt; </A>]</TD>
11474 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11475 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11476 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11477 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11478 </TR></TABLE>
11479 <H2> 13.5 SELECT IF </H2>
11480 <!--docid::SEC143::-->
11481 <P>
11482
11483 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">SELECT IF expression.
11484 </pre></td></tr></table><P>
11485
11486 The SELECT IF command is used to select particular cases for analysis
11487 based on the value of a boolean expression. Cases not selected are
11488 permanently eliminated, unless TEMPORARY is in effect
11489 (see section <A HREF="pspp.html#SEC145">13.7 TEMPORARY</A>).
11490 </P>
11491 <P>
11492
11493 Specify a boolean expression (see section <A HREF="pspp.html#SEC58">8. Mathematical Expressions</A>). If the value of the
11494 expression is true for a particular case, the case will be analyzed. If
11495 the expression has a false or missing value, then the case will be
11496 deleted from the data stream.
11497 </P>
11498 <P>
11499
11500 Always place SELECT IF commands as early in the command file as
11501 possible. Cases that are deleted early can be processed more
11502 efficiently in time and space.
11503 </P>
11504 <P>
11505
11506 <A NAME="SPLIT FILE"></A>
11507 <HR SIZE="6">
11508 <A NAME="SEC144"></A>
11509 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11510 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC143"> &lt; </A>]</TD>
11511 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC145"> &gt; </A>]</TD>
11512 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &lt;&lt; </A>]</TD>
11513 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> Up </A>]</TD>
11514 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> &gt;&gt; </A>]</TD>
11515 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11516 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11517 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11518 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11519 </TR></TABLE>
11520 <H2> 13.6 SPLIT FILE </H2>
11521 <!--docid::SEC144::-->
11522 <P>
11523
11524 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Two possible syntaxes:
11525 SPLIT FILE BY var_list.
11526 SPLIT FILE OFF.
11527 </pre></td></tr></table><P>
11528
11529 The SPLIT FILE command allows multiple sets of data present in one data
11530 file to be analyzed separately using single statistical procedure
11531 commands.
11532 </P>
11533 <P>
11534
11535 Specify a list of variable names in order to analyze multiple sets of
11536 data separately. Groups of cases having the same values for these
11537 variables are analyzed by statistical procedure commands as one group.
11538 An independent analysis is carried out for each group of cases, and the
11539 variable values for the group are printed along with the analysis.
11540 </P>
11541 <P>
11542
11543 Specify OFF in order to disable SPLIT FILE and resume analysis of the
11544 entire active file as a single group of data.
11545 </P>
11546 <P>
11547
11548 <A NAME="TEMPORARY"></A>
11549 <HR SIZE="6">
11550 <A NAME="SEC145"></A>
11551 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11552 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC144"> &lt; </A>]</TD>
11553 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC146"> &gt; </A>]</TD>
11554 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &lt;&lt; </A>]</TD>
11555 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> Up </A>]</TD>
11556 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> &gt;&gt; </A>]</TD>
11557 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11558 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11559 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11560 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11561 </TR></TABLE>
11562 <H2> 13.7 TEMPORARY </H2>
11563 <!--docid::SEC145::-->
11564 <P>
11565
11566 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">TEMPORARY.
11567 </pre></td></tr></table><P>
11568
11569 The TEMPORARY command is used to make the effects of transformations
11570 following its execution temporary. These transformations will
11571 affect only the execution of the next procedure or procedure-like
11572 command. Their effects will not be saved to the active file.
11573 </P>
11574 <P>
11575
11576 The only specification is the command name.
11577 </P>
11578 <P>
11579
11580 TEMPORARY may not appear within a DO IF or LOOP construct. It may
11581 appear only once between procedures and procedure-like commands.
11582 </P>
11583 <P>
11584
11585 An example may help to clarify:
11586 </P>
11587 <P>
11588
11589 <TABLE><tr><td>&nbsp;</td><td class=example><pre>DATA LIST /X 1-2.
11590 BEGIN DATA.
11591 2
11592 4
11593 10
11594 15
11595 20
11596 24
11597 END DATA.
11598 COMPUTE X=X/2.
11599 TEMPORARY.
11600 COMPUTE X=X+3.
11601 DESCRIPTIVES X.
11602 DESCRIPTIVES X.
11603 </pre></td></tr></table><P>
11604
11605 The data read by the first DESCRIPTIVES command are 4, 5, 8,
11606 10.5, 13, 15. The data read by the first DESCRIPTIVES command are 1, 2,
11607 5, 7.5, 10, 12.
11608 </P>
11609 <P>
11610
11611 <A NAME="WEIGHT"></A>
11612 <HR SIZE="6">
11613 <A NAME="SEC146"></A>
11614 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11615 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC145"> &lt; </A>]</TD>
11616 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> &gt; </A>]</TD>
11617 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &lt;&lt; </A>]</TD>
11618 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> Up </A>]</TD>
11619 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> &gt;&gt; </A>]</TD>
11620 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11621 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11622 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11623 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11624 </TR></TABLE>
11625 <H2> 13.8 WEIGHT </H2>
11626 <!--docid::SEC146::-->
11627 <P>
11628
11629 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">WEIGHT BY var_name.
11630 WEIGHT OFF.
11631 </pre></td></tr></table><P>
11632
11633 WEIGHT can be used to assign cases varying weights in order to
11634 change the frequency distribution of the active file. Execution of
11635 WEIGHT is delayed until data have been read in.
11636 </P>
11637 <P>
11638
11639 If a variable name is specified, WEIGHT causes the values of that
11640 variable to be used as weighting factors for subsequent statistical
11641 procedures. Use of keyword BY is optional but recommended. Weighting
11642 variables must be numeric. Scratch variables may not be used for
11643 weighting (see section <A HREF="pspp.html#SEC55">7.6.5 Scratch Variables</A>).
11644 </P>
11645 <P>
11646
11647 When OFF is specified, subsequent statistical procedures will weight all
11648 cases equally.
11649 </P>
11650 <P>
11651
11652 Weighting values do not need to be integers. However, negative and
11653 system- and user-missing values for the weighting variable are
11654 interpreted as weighting factors of 0.
11655 </P>
11656 <P>
11657
11658 WEIGHT does not cause cases in the active file to be replicated in
11659 memory.
11660 </P>
11661 <P>
11662
11663 <A NAME="Conditionals and Looping"></A>
11664 <HR SIZE="6">
11665 <A NAME="SEC147"></A>
11666 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11667 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC146"> &lt; </A>]</TD>
11668 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC148"> &gt; </A>]</TD>
11669 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC138"> &lt;&lt; </A>]</TD>
11670 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
11671 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC152"> &gt;&gt; </A>]</TD>
11672 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11673 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11674 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11675 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11676 </TR></TABLE>
11677 <H1> 14. Conditional and Looping Constructs </H1>
11678 <!--docid::SEC147::-->
11679 <P>
11680
11681 This chapter documents PSPP commands used for conditional execution,
11682 looping, and flow of control.
11683 </P>
11684 <P>
11685
11686 <TABLE BORDER="0" CELLSPACING="0">
11687 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC148">14.1 BREAK</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Exit a loop.</TD></TR>
11688 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC149">14.2 DO IF</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Conditionally execute a block of code.</TD></TR>
11689 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC150">14.3 DO REPEAT</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Textually repeat a code block.</TD></TR>
11690 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC151">14.4 LOOP</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Repeat a block of code.</TD></TR>
11691 </TABLE>
11692 <P>
11693
11694 <A NAME="BREAK"></A>
11695 <HR SIZE="6">
11696 <A NAME="SEC148"></A>
11697 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11698 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> &lt; </A>]</TD>
11699 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC149"> &gt; </A>]</TD>
11700 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> &lt;&lt; </A>]</TD>
11701 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> Up </A>]</TD>
11702 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC152"> &gt;&gt; </A>]</TD>
11703 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11704 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11705 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11706 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11707 </TR></TABLE>
11708 <H2> 14.1 BREAK </H2>
11709 <!--docid::SEC148::-->
11710 <P>
11711
11712 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">BREAK.
11713 </pre></td></tr></table><P>
11714
11715 BREAK terminates execution of the innermost currently executing LOOP
11716 construct.
11717 </P>
11718 <P>
11719
11720 BREAK is allowed only inside a LOOP construct. See section <A HREF="pspp.html#SEC151">14.4 LOOP</A>, for more
11721 details.
11722 </P>
11723 <P>
11724
11725 <A NAME="DO IF"></A>
11726 <HR SIZE="6">
11727 <A NAME="SEC149"></A>
11728 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11729 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC148"> &lt; </A>]</TD>
11730 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC150"> &gt; </A>]</TD>
11731 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> &lt;&lt; </A>]</TD>
11732 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> Up </A>]</TD>
11733 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC152"> &gt;&gt; </A>]</TD>
11734 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11735 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11736 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11737 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11738 </TR></TABLE>
11739 <H2> 14.2 DO IF </H2>
11740 <!--docid::SEC149::-->
11741 <P>
11742
11743 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">DO IF condition.
11744 <small>...</small>
11745 [ELSE IF condition.
11746 <small>...</small>
11747 ]<small>...</small>
11748 [ELSE.
11749 <small>...</small>]
11750 END IF.
11751 </pre></td></tr></table><P>
11752
11753 The DO IF command allows one of several sets of transformations to be
11754 executed, depending on user-specified conditions.
11755 </P>
11756 <P>
11757
11758 Specify a boolean expression. If the condition is true, then the block
11759 of code following DO IF is executed. If the condition is missing, then
11760 none of the code blocks is executed. If the condition is false, then
11761 the boolean expressions on the first ELSE IF, if present, is tested in
11762 turn, with the same rules applied. If all expressions evaluate to
11763 false, then the ELSE code block is executed, if it is present.
11764 </P>
11765 <P>
11766
11767 <A NAME="DO REPEAT"></A>
11768 <HR SIZE="6">
11769 <A NAME="SEC150"></A>
11770 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11771 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC149"> &lt; </A>]</TD>
11772 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC151"> &gt; </A>]</TD>
11773 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> &lt;&lt; </A>]</TD>
11774 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> Up </A>]</TD>
11775 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC152"> &gt;&gt; </A>]</TD>
11776 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11777 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11778 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11779 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11780 </TR></TABLE>
11781 <H2> 14.3 DO REPEAT </H2>
11782 <!--docid::SEC150::-->
11783 <P>
11784
11785 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">DO REPEAT repvar_name=expansion<small>...</small>.
11786 <small>...</small>
11787 END REPEAT [PRINT].
11788
11789 expansion takes one of the following forms:
11790 var_list
11791 num_or_range<small>...</small>
11792 'string'<small>...</small>
11793
11794 num_or_range takes one of the following forms:
11795 number
11796 num1 TO num2
11797 </pre></td></tr></table><P>
11798
11799 The DO REPEAT command causes a block of code to be repeated a number of
11800 times with different variables, numbers, or strings textually
11801 substituted into the block with each repetition.
11802 </P>
11803 <P>
11804
11805 Specify a repeat variable name followed by an equals sign (`<SAMP>=</SAMP>') and
11806 the list of replacements. Replacements can be a list of variables
11807 (which may be existing variables or new variables or a combination
11808 thereof), of numbers, or of strings. When new variable names are
11809 specified, DO REPEAT creates them as numeric variables. When numbers
11810 are specified, runs of integers may be indicated with TO notation, for
11811 instance `<SAMP>1 TO 5</SAMP>' and `<SAMP>1 2 3 4 5</SAMP>' would be equivalent. There
11812 is no equivalent notation for string values.
11813 </P>
11814 <P>
11815
11816 Multiple repeat variables can be specified. When this is done, each
11817 variable must have the same number of replacements.
11818 </P>
11819 <P>
11820
11821 The code within DO REPEAT is repeated as many times as there are
11822 replacements for each variable. The first time, the first value for
11823 each repeat variable is substituted; the second time, the second value
11824 for each repeat variable is substituted; and so on.
11825 </P>
11826 <P>
11827
11828 Repeat variable substitutions work like macros. They take place
11829 anywhere in a line that the repeat variable name occurs as a token,
11830 including command and subcommand names. For this reason it is not a
11831 good idea to select words commonly used in command and subcommand names
11832 as repeat variable identifiers.
11833 </P>
11834 <P>
11835
11836 If PRINT is specified on END REPEAT, the commands after substitutions
11837 are made are printed to the listing file, prefixed by a plus sign
11838 (`<SAMP>+</SAMP>').
11839 </P>
11840 <P>
11841
11842 <A NAME="LOOP"></A>
11843 <HR SIZE="6">
11844 <A NAME="SEC151"></A>
11845 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11846 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC150"> &lt; </A>]</TD>
11847 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC152"> &gt; </A>]</TD>
11848 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> &lt;&lt; </A>]</TD>
11849 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> Up </A>]</TD>
11850 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC152"> &gt;&gt; </A>]</TD>
11851 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11852 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11853 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11854 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11855 </TR></TABLE>
11856 <H2> 14.4 LOOP </H2>
11857 <!--docid::SEC151::-->
11858 <P>
11859
11860 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">LOOP [index_var=start TO end [BY incr]] [IF condition].
11861 <small>...</small>
11862 END LOOP [IF condition].
11863 </pre></td></tr></table><P>
11864
11865 The LOOP command allows a group of commands to be iterated. A number of
11866 termination options are offered.
11867 </P>
11868 <P>
11869
11870 Specify index_var in order to make that variable count from one value to
11871 another by a particular increment. index_var must be a pre-existing
11872 numeric variable. start, end, and incr are numeric expressions
11873 (see section <A HREF="pspp.html#SEC58">8. Mathematical Expressions</A>.)
11874 </P>
11875 <P>
11876
11877 During the first iteration, index_var is set to the value of start.
11878 During each successive iteration, index_var is increased by the value of
11879 incr. If end &gt; start, then the loop terminates when index_var &gt; end;
11880 otherwise it terminates when index_var &lt; end. If incr is not specified
11881 then it defaults to +1 or -1 as appropriate.
11882 </P>
11883 <P>
11884
11885 If end &gt; start and incr &lt; 0, or if end &lt; start and incr &gt; 0, then the
11886 loop is never executed. index_var is nevertheless set to the value of
11887 start.
11888 </P>
11889 <P>
11890
11891 Modifying index_var within the loop is allowed, but it has no effect on
11892 the value of index_var in the next iteration.
11893 </P>
11894 <P>
11895
11896 Specify a boolean expression for the condition on the LOOP command to
11897 cause the loop to be executed only if the condition is true. If the
11898 condition is false or missing before the loop contents are executed the
11899 first time, the loop contents are not executed at all.
11900 </P>
11901 <P>
11902
11903 If index and condition clauses are both present on LOOP, the index
11904 clause is always evaluated first.
11905 </P>
11906 <P>
11907
11908 Specify a boolean expression for the condition on the END LOOP to cause
11909 the loop to terminate if the condition is not true after the enclosed
11910 code block is executed. The condition is evaluated at the end of the
11911 loop, not at the beginning.
11912 </P>
11913 <P>
11914
11915 If the index clause and both condition clauses are not present, then the
11916 loop is executed MXLOOPS (see section <A HREF="pspp.html#SEC166">16.10 SET</A>) times or until BREAK
11917 (see section <A HREF="pspp.html#SEC148">14.1 BREAK</A>) is executed.
11918 </P>
11919 <P>
11920
11921 The BREAK command provides another way to terminate execution of a LOOP
11922 construct.
11923 </P>
11924 <P>
11925
11926 <A NAME="Statistics"></A>
11927 <HR SIZE="6">
11928 <A NAME="SEC152"></A>
11929 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11930 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC151"> &lt; </A>]</TD>
11931 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC153"> &gt; </A>]</TD>
11932 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC147"> &lt;&lt; </A>]</TD>
11933 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
11934 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &gt;&gt; </A>]</TD>
11935 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11936 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11937 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11938 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11939 </TR></TABLE>
11940 <H1> 15. Statistics </H1>
11941 <!--docid::SEC152::-->
11942 <P>
11943
11944 This chapter documents the statistical procedures that PSPP supports so
11945 far.
11946 </P>
11947 <P>
11948
11949 <TABLE BORDER="0" CELLSPACING="0">
11950 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC153">15.1 DESCRIPTIVES</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Descriptive statistics.</TD></TR>
11951 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC154">15.2 FREQUENCIES</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Frequency tables.</TD></TR>
11952 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC155">15.3 CROSSTABS</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Crosstabulation tables.</TD></TR>
11953 </TABLE>
11954 <P>
11955
11956 <A NAME="DESCRIPTIVES"></A>
11957 <HR SIZE="6">
11958 <A NAME="SEC153"></A>
11959 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
11960 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC152"> &lt; </A>]</TD>
11961 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC154"> &gt; </A>]</TD>
11962 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC152"> &lt;&lt; </A>]</TD>
11963 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC152"> Up </A>]</TD>
11964 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &gt;&gt; </A>]</TD>
11965 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
11966 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
11967 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
11968 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
11969 </TR></TABLE>
11970 <H2> 15.1 DESCRIPTIVES </H2>
11971 <!--docid::SEC153::-->
11972 <P>
11973
11974 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">DESCRIPTIVES
11975 /VARIABLES=var_list
11976 /MISSING={VARIABLE,LISTWISE} {INCLUDE,NOINCLUDE}
11977 /FORMAT={LABELS,NOLABELS} {NOINDEX,INDEX} {LINE,SERIAL}
11978 /SAVE
11979 /STATISTICS={ALL,MEAN,SEMEAN,STDDEV,VARIANCE,KURTOSIS,
11980 SKEWNESS,RANGE,MINIMUM,MAXIMUM,SUM,DEFAULT,
11981 SESKEWNESS,SEKURTOSIS}
11982 /SORT={NONE,MEAN,SEMEAN,STDDEV,VARIANCE,KURTOSIS,SKEWNESS,
11983 RANGE,MINIMUM,MAXIMUM,SUM,SESKEWNESS,SEKURTOSIS,NAME}
11984 {A,D}
11985 </pre></td></tr></table><P>
11986
11987 The DESCRIPTIVES procedure reads the active file and outputs descriptive
11988 statistics requested by the user. In addition, it can optionally
11989 compute Z-scores.
11990 </P>
11991 <P>
11992
11993 The VARIABLES subcommand, which is required, specifies the list of
11994 variables to be analyzed. Keyword VARIABLES is optional.
11995 </P>
11996 <P>
11997
11998 All other subcommands are optional:
11999 </P>
12000 <P>
12001
12002 The MISSING subcommand determines the handling of missing variables. If
12003 INCLUDE is set, then user-missing values are included in the
12004 calculations. If NOINCLUDE is set, which is the default, user-missing
12005 values are excluded. If VARIABLE is set, then missing values are
12006 excluded on a variable by variable basis; if LISTWISE is set, then
12007 the entire case is excluded whenever any value in that case has a
12008 system-missing or, if INCLUDE is set, user-missing value.
12009 </P>
12010 <P>
12011
12012 The FORMAT subcommand affects the output format. Currently the
12013 LABELS/NOLABELS and NOINDEX/INDEX settings is not used. When SERIAL is
12014 set, both valid and missing number of cases are listed in the output;
12015 when NOSERIAL is set, only valid cases are listed.
12016 </P>
12017 <P>
12018
12019 The SAVE subcommand causes DESCRIPTIVES to calculate Z scores for all
12020 the specified variables. The Z scores are saved to new variables.
12021 Variable names are generated by trying first the original variable name
12022 with Z prepended and truncated to a maximum of 8 characters, then the
12023 names ZSC000 through ZSC999, STDZ00 through STDZ09, ZZZZ00 through
12024 ZZZZ09, ZQZQ00 through ZQZQ09, in that sequence. In addition, Z score
12025 variable names can be specified explicitly on VARIABLES in the variable
12026 list by enclosing them in parentheses after each variable.
12027 </P>
12028 <P>
12029
12030 The STATISTICS subcommand specifies the statistics to be displayed:
12031 </P>
12032 <P>
12033
12034 </P>
12035 <DL COMPACT>
12036 <DT><CODE>ALL</CODE>
12037 <DD>All of the statistics below.
12038 <DT><CODE>MEAN</CODE>
12039 <DD>Arithmetic mean.
12040 <DT><CODE>SEMEAN</CODE>
12041 <DD>Standard error of the mean.
12042 <DT><CODE>STDDEV</CODE>
12043 <DD>Standard deviation.
12044 <DT><CODE>VARIANCE</CODE>
12045 <DD>Variance.
12046 <DT><CODE>KURTOSIS</CODE>
12047 <DD>Kurtosis and standard error of the kurtosis.
12048 <DT><CODE>SKEWNESS</CODE>
12049 <DD>Skewness and standard error of the skewness.
12050 <DT><CODE>RANGE</CODE>
12051 <DD>Range.
12052 <DT><CODE>MINIMUM</CODE>
12053 <DD>Minimum value.
12054 <DT><CODE>MAXIMUM</CODE>
12055 <DD>Maximum value.
12056 <DT><CODE>SUM</CODE>
12057 <DD>Sum.
12058 <DT><CODE>DEFAULT</CODE>
12059 <DD>Mean, standard deviation of the mean, minimum, maximum.
12060 <DT><CODE>SEKURTOSIS</CODE>
12061 <DD>Standard error of the kurtosis.
12062 <DT><CODE>SESKEWNESS</CODE>
12063 <DD>Standard error of the skewness.
12064 </DL>
12065 <P>
12066
12067 The SORT subcommand specifies how the statistics should be sorted. Most
12068 of the possible values should be self-explanatory. NAME causes the
12069 statistics to be sorted by name. By default, the statistics are listed
12070 in the order that they are specified on the VARIABLES subcommand. The A
12071 and D settings request an ascending or descending sort order,
12072 respectively.
12073 </P>
12074 <P>
12075
12076 <A NAME="FREQUENCIES"></A>
12077 <HR SIZE="6">
12078 <A NAME="SEC154"></A>
12079 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
12080 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC153"> &lt; </A>]</TD>
12081 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC155"> &gt; </A>]</TD>
12082 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC152"> &lt;&lt; </A>]</TD>
12083 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC152"> Up </A>]</TD>
12084 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &gt;&gt; </A>]</TD>
12085 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
12086 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
12087 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
12088 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
12089 </TR></TABLE>
12090 <H2> 15.2 FREQUENCIES </H2>
12091 <!--docid::SEC154::-->
12092 <P>
12093
12094 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">FREQUENCIES
12095 /VARIABLES=var_list
12096 /FORMAT={TABLE,NOTABLE,LIMIT(limit)}
12097 {STANDARD,CONDENSE,ONEPAGE[(onepage_limit)]}
12098 {LABELS,NOLABELS}
12099 {AVALUE,DVALUE,AFREQ,DFREQ}
12100 {SINGLE,DOUBLE}
12101 {OLDPAGE,NEWPAGE}
12102 /MISSING={EXCLUDE,INCLUDE}
12103 /STATISTICS={DEFAULT,MEAN,SEMEAN,MEDIAN,MODE,STDDEV,VARIANCE,
12104 KURTOSIS,SKEWNESS,RANGE,MINIMUM,MAXIMUM,SUM,
12105 SESKEWNESS,SEKURTOSIS,ALL,NONE}
12106 /NTILES=ntiles
12107 /PERCENTILES=percent<small>...</small>
12108
12109 (These options are not currently implemented.)
12110 /BARCHART=<small>...</small>
12111 /HISTOGRAM=<small>...</small>
12112 /HBAR=<small>...</small>
12113 /GROUPED=<small>...</small>
12114
12115 (Integer mode.)
12116 /VARIABLES=var_list (low,high)<small>...</small>
12117 </pre></td></tr></table><P>
12118
12119 FREQUENCIES causes the data to be read and frequency tables to be built
12120 and output for specified variables. FREQUENCIES can also calculate and
12121 display descriptive statistics (including median and mode) and
12122 percentiles.
12123 </P>
12124 <P>
12125
12126 In the future, FREQUENCIES will also support graphical output in the
12127 form of bar charts and histograms. In addition, it will be able to
12128 support percentiles for grouped data. (As a historical note, these
12129 options were supported in a version of PSPP written years ago, but the
12130 code has not survived.)
12131 </P>
12132 <P>
12133
12134 The VARIABLES subcommand is the only required subcommand. Specify the
12135 variables to be analyzed. In most cases, this is all that is required.
12136 This is known as <EM>general mode</EM>.
12137 </P>
12138 <P>
12139
12140 Occasionally, one may want to invoke a special mode called <EM>integer
12141 mode</EM>. Normally, in general mode, PSPP will automatically determine
12142 what values occur in the data. In integer mode, the user specifies the
12143 range of values that the data assumes. To invoke this mode, specify a
12144 range of data values in parentheses, separated by a comma. Data values
12145 inside the range are truncated to the nearest integer, then assigned to
12146 that value. If values occur outside this range, they are discarded.
12147 </P>
12148 <P>
12149
12150 The FORMAT subcommand controls the output format. It has several
12151 possible settings:
12152 </P>
12153 <P>
12154
12155 <UL>
12156 <LI>
12157 TABLE, the default, causes a frequency table to be output for every
12158 variable specified. NOTABLE prevents them from being output. LIMIT
12159 with a numeric argument causes them to be output except when there are
12160 more than the specified number of values in the table.
12161 <P>
12162
12163 </P>
12164 <LI>
12165 STANDARD frequency tables contain more complete information, but also to
12166 take up more space on the printed page. CONDENSE frequency tables are
12167 less informative but take up less space. ONEPAGE with a numeric
12168 argument will output standard frequency tables if there are the
12169 specified number of values or less, condensed tables otherwise. ONEPAGE
12170 without an argument defaults to a threshold of 50 values.
12171 <P>
12172
12173 </P>
12174 <LI>
12175 LABELS causes value labels to be displayed in STANDARD frequency
12176 tables. NOLABLES prevents this.
12177 <P>
12178
12179 </P>
12180 <LI>
12181 Normally frequency tables are sorted in ascending order by value. This
12182 is AVALUE. DVALUE tables are sorted in descending order by value.
12183 AFREQ and DFREQ tables are sorted in ascending and descending order,
12184 respectively, by frequency count.
12185 <P>
12186
12187 </P>
12188 <LI>
12189 SINGLE spaced frequency tables are closely spaced. DOUBLE spaced
12190 frequency tables have wider spacing.
12191 <P>
12192
12193 </P>
12194 <LI>
12195 OLDPAGE and NEWPAGE are not currently used.
12196 </UL>
12197 <P>
12198
12199 The MISSING subcommand controls the handling of user-missing values.
12200 When EXCLUDE, the default, is set, user-missing values are not included
12201 in frequency tables or statistics. When INCLUDE is set, user-missing
12202 are included. System-missing values are never included in statistics,
12203 but are listed in frequency tables.
12204 </P>
12205 <P>
12206
12207 The available STATISTICS are the same as available in DESCRIPTIVES
12208 (see section <A HREF="pspp.html#SEC153">15.1 DESCRIPTIVES</A>), with the addition of MEDIAN, the data's median
12209 value, and MODE, the mode. (If there are multiple modes, the smallest
12210 value is reported.) By default, the mean, standard deviation of the
12211 mean, minimum, and maximum are reported for each variable.
12212 </P>
12213 <P>
12214
12215 NTILES causes the specified quartiles to be reported. For instance,
12216 <CODE>/NTILES=4</CODE> would cause quartiles to be reported. In addition,
12217 particular percentiles can be requested with the PERCENTILES subcommand.
12218 </P>
12219 <P>
12220
12221 <A NAME="CROSSTABS"></A>
12222 <HR SIZE="6">
12223 <A NAME="SEC155"></A>
12224 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
12225 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC154"> &lt; </A>]</TD>
12226 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &gt; </A>]</TD>
12227 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC152"> &lt;&lt; </A>]</TD>
12228 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC152"> Up </A>]</TD>
12229 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &gt;&gt; </A>]</TD>
12230 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
12231 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
12232 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
12233 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
12234 </TR></TABLE>
12235 <H2> 15.3 CROSSTABS </H2>
12236 <!--docid::SEC155::-->
12237 <P>
12238
12239 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">CROSSTABS
12240 /TABLES=var_list BY var_list [BY var_list]<small>...</small>
12241 /MISSING={TABLE,INCLUDE,REPORT}
12242 /WRITE={NONE,CELLS,ALL}
12243 /FORMAT={TABLES,NOTABLES}
12244 {LABELS,NOLABELS,NOVALLABS}
12245 {PIVOT,NOPIVOT}
12246 {AVALUE,DVALUE}
12247 {NOINDEX,INDEX}
12248 {BOX,NOBOX}
12249 /CELLS={COUNT,ROW,COLUMN,TOTAL,EXPECTED,RESIDUAL,SRESIDUAL,
12250 ASRESIDUAL,ALL,NONE}
12251 /STATISTICS={CHISQ,PHI,CC,LAMBDA,UC,BTAU,CTAU,RISK,GAMMA,D,
12252 KAPPA,ETA,CORR,ALL,NONE}
12253
12254 (Integer mode.)
12255 /VARIABLES=var_list (low,high)<small>...</small>
12256 </pre></td></tr></table><P>
12257
12258 CROSSTABS reads the active file and builds and displays crosstabulation
12259 tables requested by the user. It can calculate several statistics for
12260 each cell in the crosstabulation tables. In addition, a number of
12261 statistics can be calculated for each table itself.
12262 </P>
12263 <P>
12264
12265 The TABLES subcommand is used to specify the tables to be reported. Any
12266 number of dimensions is permitted, and any number of variables per
12267 dimension is allowed. The TABLES subcommand may be repeated as many
12268 times as needed. This is the only required subcommand in <EM>general
12269 mode</EM>.
12270 </P>
12271 <P>
12272
12273 Occasionally, one may want to invoke a special mode called <EM>integer
12274 mode</EM>. Normally, in general mode, PSPP will automatically determine
12275 what values occur in the data. In integer mode, the user specifies the
12276 range of values that the data assumes. To invoke this mode, specify the
12277 VARIABLES subcommand, giving a range of data values in parentheses for
12278 each variable to be used on the TABLES subcommand. Data values inside
12279 the range are truncated to the nearest integer, then assigned to that
12280 value. If values occur outside this range, they are discarded. When it
12281 is present, the VARIABLES subcommand must precede the TABLES subcommand.
12282 </P>
12283 <P>
12284
12285 The MISSING subcommand determines the handling of user-missing values.
12286 When set to TABLE, the default, missing values are dropped on a table by
12287 table basis. When set to INCLUDE, user-missing values are included in
12288 tables and statistics. When set to REPORT, which is allowed only in
12289 integer mode, user-missing values are included in tables but marked with
12290 an `<SAMP>M</SAMP>' (for &quot;missing&quot;) and excluded from statistical
12291 calculations.
12292 </P>
12293 <P>
12294
12295 Currently the WRITE subcommand is not used.
12296 </P>
12297 <P>
12298
12299 The FORMAT subcommand controls the characteristics of the
12300 crosstabulation tables to be displayed. It has a number of possible
12301 settings:
12302 </P>
12303 <P>
12304
12305 <UL>
12306 <LI>
12307 TABLES, the default, causes crosstabulation tables to be output.
12308 NOTABLES suppresses them.
12309 <P>
12310
12311 </P>
12312 <LI>
12313 LABELS, the default, allows variable labels and value labels to appear
12314 in the output. NOLABELS suppresses them. NOVALLABS displays variable
12315 labels but suppresses value labels.
12316 <P>
12317
12318 </P>
12319 <LI>
12320 PIVOT, the default, causes each TABLES subcommand to be displayed in a
12321 pivot table format. NOPIVOT causes the old-style crosstabulation format
12322 to be used.
12323 <P>
12324
12325 </P>
12326 <LI>
12327 AVALUE, the default, causes values to be sorted in ascending order.
12328 DVALUE asserts a descending sort order.
12329 <P>
12330
12331 </P>
12332 <LI>
12333 INDEX/NOINDEX is currently ignored.
12334 <P>
12335
12336 </P>
12337 <LI>
12338 BOX/NOBOX is currently ignored.
12339 </UL>
12340 <P>
12341
12342 The CELLS subcommand controls the contents of each cell in the displayed
12343 crosstabulation table. The possible settings are:
12344 </P>
12345 <P>
12346
12347 </P>
12348 <DL COMPACT>
12349 <DT>COUNT
12350 <DD>Frequency count.
12351 <DT>ROW
12352 <DD>Row percent.
12353 <DT>COLUMN
12354 <DD>Column percent.
12355 <DT>TOTAL
12356 <DD>Table percent.
12357 <DT>EXPECTED
12358 <DD>Expected value.
12359 <DT>RESIDUAL
12360 <DD>Residual.
12361 <DT>SRESIDUAL
12362 <DD>Standardized residual.
12363 <DT>ASRESIDUAL
12364 <DD>Adjusted standardized residual.
12365 <DT>ALL
12366 <DD>All of the above.
12367 <DT>NONE
12368 <DD>Suppress cells entirely.
12369 </DL>
12370 <P>
12371
12372 `<SAMP>/CELLS</SAMP>' without any settings specified requests COUNT, ROW,
12373 COLUMN, and TOTAL. If CELLS is not specified at all then only COUNT
12374 will be selected.
12375 </P>
12376 <P>
12377
12378 The STATISTICS subcommand selects statistics for computation:
12379 </P>
12380 <P>
12381
12382 </P>
12383 <DL COMPACT>
12384 <DT>CHISQ
12385 <DD>Pearson chi-square, likelihood ratio, Fisher's exact test, continuity
12386 correction, linear-by-linear association.
12387 <DT>PHI
12388 <DD>Phi.
12389 <DT>CC
12390 <DD>Contingency coefficient.
12391 <DT>LAMBDA
12392 <DD>Lambda.
12393 <DT>UC
12394 <DD>Uncertainty coefficient.
12395 <DT>BTAU
12396 <DD>Tau-b.
12397 <DT>CTAU
12398 <DD>Tau-c.
12399 <DT>RISK
12400 <DD>Risk estimate.
12401 <DT>GAMMA
12402 <DD>Gamma.
12403 <DT>D
12404 <DD>Somers' D.
12405 <DT>KAPPA
12406 <DD>Cohen's Kappa.
12407 <DT>ETA
12408 <DD>Eta.
12409 <DT>CORR
12410 <DD>Spearman correlation, Pearson's r.
12411 <DT>ALL
12412 <DD>All of the above.
12413 <DT>NONE
12414 <DD>No statistics.
12415 </DL>
12416 <P>
12417
12418 Selected statistics are only calculated when appropriate for the
12419 statistic. Certain statistics require tables of a particular size, and
12420 some statistics are calculated only in integer mode.
12421 </P>
12422 <P>
12423
12424 `<SAMP>/STATISTICS</SAMP>' without any settings selects CHISQ. If the
12425 STATISTICS subcommand is not given, no statistics are calculated.
12426 </P>
12427 <P>
12428
12429 <STRONG>Please note:</STRONG> Currently the implementation of CROSSTABS has the
12430 followings bugs:
12431 </P>
12432 <P>
12433
12434 <UL>
12435 <LI>
12436 Pearson's R (but not Spearman!) is off a little.
12437 <LI>
12438 T values for Spearman's R and Pearson's R are wrong.
12439 <LI>
12440 How to calculate significance of symmetric and directional measures?
12441 <LI>
12442 Asymmetric ASEs and T values for lambda are wrong.
12443 <LI>
12444 ASE of Goodman and Kruskal's tau is not calculated.
12445 <LI>
12446 ASE of symmetric somers' d is wrong.
12447 <LI>
12448 Approx. T of uncertainty coefficient is wrong.
12449 </UL>
12450 <P>
12451
12452 Fix for any of these deficiencies would be welcomed.
12453 </P>
12454 <P>
12455
12456 <A NAME="Utilities"></A>
12457 <HR SIZE="6">
12458 <A NAME="SEC156"></A>
12459 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
12460 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC155"> &lt; </A>]</TD>
12461 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC157"> &gt; </A>]</TD>
12462 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC152"> &lt;&lt; </A>]</TD>
12463 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
12464 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC169"> &gt;&gt; </A>]</TD>
12465 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
12466 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
12467 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
12468 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
12469 </TR></TABLE>
12470 <H1> 16. Utilities </H1>
12471 <!--docid::SEC156::-->
12472 <P>
12473
12474 Commands that don't fit any other category are placed here.
12475 </P>
12476 <P>
12477
12478 Most of these commands are not affected by commands like IF and LOOP:
12479 they take effect only once, unconditionally, at the time that they are
12480 encountered in the input.
12481 </P>
12482 <P>
12483
12484 <TABLE BORDER="0" CELLSPACING="0">
12485 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC157">16.1 COMMENT</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Document your syntax file.</TD></TR>
12486 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC158">16.2 DOCUMENT</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Document the active file.</TD></TR>
12487 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC159">16.3 DISPLAY DOCUMENTS</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Display active file documents.</TD></TR>
12488 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC160">16.4 DISPLAY FILE LABEL</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Display the active file label.</TD></TR>
12489 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC161">16.5 DROP DOCUMENTS</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Remove documents from the active file.</TD></TR>
12490 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC162">16.6 EXECUTE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Execute pending transformations.</TD></TR>
12491 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC163">16.7 FILE LABEL</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Set the active file's label.</TD></TR>
12492 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC164">16.8 INCLUDE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Include a file within the current one.</TD></TR>
12493 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC165">16.9 QUIT</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Terminate the PSPP session.</TD></TR>
12494 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC166">16.10 SET</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Adjust PSPP runtime parameters.</TD></TR>
12495 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC167">16.11 SUBTITLE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Provide a document subtitle.</TD></TR>
12496 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC111">10.7 SYSFILE INFO</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Display the dictionary in a system file.</TD></TR>
12497 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC168">16.12 TITLE</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Provide a document title.</TD></TR>
12498 </TABLE>
12499 <P>
12500
12501 <A NAME="COMMENT"></A>
12502 <HR SIZE="6">
12503 <A NAME="SEC157"></A>
12504 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
12505 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &lt; </A>]</TD>
12506 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC158"> &gt; </A>]</TD>
12507 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &lt;&lt; </A>]</TD>
12508 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> Up </A>]</TD>
12509 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC169"> &gt;&gt; </A>]</TD>
12510 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
12511 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
12512 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
12513 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
12514 </TR></TABLE>
12515 <H2> 16.1 COMMENT </H2>
12516 <!--docid::SEC157::-->
12517 <P>
12518
12519 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Two possibles syntaxes:
12520 COMMENT comment text <small>...</small> .
12521 *comment text <small>...</small> .
12522 </pre></td></tr></table><P>
12523
12524 The COMMENT command is ignored. It is used to provide information to
12525 the author and other readers of the PSPP syntax file.
12526 </P>
12527 <P>
12528
12529 A COMMENT command can extend over any number of lines. Don't forget to
12530 terminate it with a dot or a blank line!
12531 </P>
12532 <P>
12533
12534 <A NAME="DOCUMENT"></A>
12535 <HR SIZE="6">
12536 <A NAME="SEC158"></A>
12537 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
12538 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC157"> &lt; </A>]</TD>
12539 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC159"> &gt; </A>]</TD>
12540 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &lt;&lt; </A>]</TD>
12541 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> Up </A>]</TD>
12542 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC169"> &gt;&gt; </A>]</TD>
12543 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
12544 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
12545 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
12546 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
12547 </TR></TABLE>
12548 <H2> 16.2 DOCUMENT </H2>
12549 <!--docid::SEC158::-->
12550 <P>
12551
12552 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">DOCUMENT documentary_text.
12553 </pre></td></tr></table><P>
12554
12555 The DOCUMENT command adds one or more lines of descriptive commentary to
12556 the active file. Documents added in this way are saved to system files.
12557 They can be viewed using SYSFILE INFO or DISPLAY DOCUMENTS. They can be
12558 removed from the active file with DROP DOCUMENTS.
12559 </P>
12560 <P>
12561
12562 Specify the documentary text following the DOCUMENT keyword. You can
12563 extend the documentary text over as many lines as necessary. Lines are
12564 truncated at 80 characters width. Don't forget to terminate the
12565 DOCUMENT command with a dot or a blank line.
12566 </P>
12567 <P>
12568
12569 <A NAME="DISPLAY DOCUMENTS"></A>
12570 <HR SIZE="6">
12571 <A NAME="SEC159"></A>
12572 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
12573 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC158"> &lt; </A>]</TD>
12574 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC160"> &gt; </A>]</TD>
12575 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &lt;&lt; </A>]</TD>
12576 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> Up </A>]</TD>
12577 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC169"> &gt;&gt; </A>]</TD>
12578 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
12579 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
12580 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
12581 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
12582 </TR></TABLE>
12583 <H2> 16.3 DISPLAY DOCUMENTS </H2>
12584 <!--docid::SEC159::-->
12585 <P>
12586
12587 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">DISPLAY DOCUMENTS.
12588 </pre></td></tr></table><P>
12589
12590 DISPLAY DOCUMENTS displays the documents in the active file. Each
12591 document is preceded by a line giving the time and date that it was
12592 added. See section <A HREF="pspp.html#SEC158">16.2 DOCUMENT</A>.
12593 </P>
12594 <P>
12595
12596 <A NAME="DISPLAY FILE LABEL"></A>
12597 <HR SIZE="6">
12598 <A NAME="SEC160"></A>
12599 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
12600 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC159"> &lt; </A>]</TD>
12601 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC161"> &gt; </A>]</TD>
12602 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &lt;&lt; </A>]</TD>
12603 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> Up </A>]</TD>
12604 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC169"> &gt;&gt; </A>]</TD>
12605 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
12606 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
12607 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
12608 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
12609 </TR></TABLE>
12610 <H2> 16.4 DISPLAY FILE LABEL </H2>
12611 <!--docid::SEC160::-->
12612 <P>
12613
12614 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">DISPLAY FILE LABEL.
12615 </pre></td></tr></table><P>
12616
12617 DISPLAY FILE LABEL displays the file label contained in the active file,
12618 if any. See section <A HREF="pspp.html#SEC163">16.7 FILE LABEL</A>.
12619 </P>
12620 <P>
12621
12622 <A NAME="DROP DOCUMENTS"></A>
12623 <HR SIZE="6">
12624 <A NAME="SEC161"></A>
12625 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
12626 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC160"> &lt; </A>]</TD>
12627 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC162"> &gt; </A>]</TD>
12628 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &lt;&lt; </A>]</TD>
12629 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> Up </A>]</TD>
12630 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC169"> &gt;&gt; </A>]</TD>
12631 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
12632 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
12633 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
12634 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
12635 </TR></TABLE>
12636 <H2> 16.5 DROP DOCUMENTS </H2>
12637 <!--docid::SEC161::-->
12638 <P>
12639
12640 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">DROP DOCUMENTS.
12641 </pre></td></tr></table><P>
12642
12643 The DROP DOCUMENTS command removes all documents from the active file.
12644 New documents can be added with the DOCUMENT utility (see section <A HREF="pspp.html#SEC158">16.2 DOCUMENT</A>).
12645 </P>
12646 <P>
12647
12648 DROP DOCUMENTS only changes the active file. It does not modify any
12649 system files stored on disk.
12650 </P>
12651 <P>
12652
12653 <A NAME="EXECUTE"></A>
12654 <HR SIZE="6">
12655 <A NAME="SEC162"></A>
12656 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
12657 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC161"> &lt; </A>]</TD>
12658 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC163"> &gt; </A>]</TD>
12659 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &lt;&lt; </A>]</TD>
12660 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> Up </A>]</TD>
12661 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC169"> &gt;&gt; </A>]</TD>
12662 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
12663 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
12664 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
12665 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
12666 </TR></TABLE>
12667 <H2> 16.6 EXECUTE </H2>
12668 <!--docid::SEC162::-->
12669 <P>
12670
12671 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">EXECUTE.
12672 </pre></td></tr></table><P>
12673
12674 The EXECUTE utility causes the active file to be read and all pending
12675 transformations to be executed.
12676 </P>
12677 <P>
12678
12679 <A NAME="FILE LABEL"></A>
12680 <HR SIZE="6">
12681 <A NAME="SEC163"></A>
12682 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
12683 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC162"> &lt; </A>]</TD>
12684 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC164"> &gt; </A>]</TD>
12685 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &lt;&lt; </A>]</TD>
12686 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> Up </A>]</TD>
12687 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC169"> &gt;&gt; </A>]</TD>
12688 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
12689 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
12690 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
12691 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
12692 </TR></TABLE>
12693 <H2> 16.7 FILE LABEL </H2>
12694 <!--docid::SEC163::-->
12695 <P>
12696
12697 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">FILE LABEL file_label.
12698 </pre></td></tr></table><P>
12699
12700 Use the FILE LABEL command to provide a title for the active file. This
12701 title will be saved into system files and portable files that are
12702 created during this PSPP run.
12703 </P>
12704 <P>
12705
12706 It is not necessary to include quotes around file_label. If they are
12707 included then they become part of the file label.
12708 </P>
12709 <P>
12710
12711 <A NAME="INCLUDE"></A>
12712 <HR SIZE="6">
12713 <A NAME="SEC164"></A>
12714 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
12715 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC163"> &lt; </A>]</TD>
12716 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC165"> &gt; </A>]</TD>
12717 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &lt;&lt; </A>]</TD>
12718 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> Up </A>]</TD>
12719 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC169"> &gt;&gt; </A>]</TD>
12720 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
12721 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
12722 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
12723 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
12724 </TR></TABLE>
12725 <H2> 16.8 INCLUDE </H2>
12726 <!--docid::SEC164::-->
12727 <P>
12728
12729 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Two possible syntaxes:
12730 INCLUDE 'filename'.
12731 @filename.
12732 </pre></td></tr></table><P>
12733
12734 The INCLUDE command causes the PSPP command processor to read an
12735 additional command file as if it were included bodily in the current
12736 command file.
12737 </P>
12738 <P>
12739
12740 INCLUDE files may be nested to any depth, up to the limit of available
12741 memory.
12742 </P>
12743 <P>
12744
12745 <A NAME="QUIT"></A>
12746 <HR SIZE="6">
12747 <A NAME="SEC165"></A>
12748 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
12749 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC164"> &lt; </A>]</TD>
12750 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC166"> &gt; </A>]</TD>
12751 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &lt;&lt; </A>]</TD>
12752 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> Up </A>]</TD>
12753 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC169"> &gt;&gt; </A>]</TD>
12754 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
12755 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
12756 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
12757 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
12758 </TR></TABLE>
12759 <H2> 16.9 QUIT </H2>
12760 <!--docid::SEC165::-->
12761 <P>
12762
12763 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Two possible syntaxes:
12764 QUIT.
12765 EXIT.
12766 </pre></td></tr></table><P>
12767
12768 The QUIT command terminates the current PSPP session and returns control
12769 to the operating system.
12770 </P>
12771 <P>
12772
12773 This command is not valid within a command file.
12774 </P>
12775 <P>
12776
12777 <A NAME="SET"></A>
12778 <HR SIZE="6">
12779 <A NAME="SEC166"></A>
12780 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
12781 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC165"> &lt; </A>]</TD>
12782 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC167"> &gt; </A>]</TD>
12783 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &lt;&lt; </A>]</TD>
12784 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> Up </A>]</TD>
12785 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC169"> &gt;&gt; </A>]</TD>
12786 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
12787 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
12788 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
12789 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
12790 </TR></TABLE>
12791 <H2> 16.10 SET </H2>
12792 <!--docid::SEC166::-->
12793 <P>
12794
12795 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">SET
12796
12797 (data input)
12798 /BLANKS={SYSMIS,'.',number}
12799 /DECIMAL={DOT,COMMA}
12800 /FORMAT=fmt_spec
12801
12802 (program input)
12803 /ENDCMD='.'
12804 /NULLINE={ON,OFF}
12805
12806 (interaction)
12807 /CPROMPT='cprompt_string'
12808 /DPROMPT='dprompt_string'
12809 /ERRORBREAK={OFF,ON}
12810 /MXERRS=max_errs
12811 /MXWARNS=max_warnings
12812 /PROMPT='prompt'
12813 /VIEWLENGTH={MINIMUM,MEDIAN,MAXIMUM,n_lines}
12814 /VIEWWIDTH=n_characters
12815
12816 (program execution)
12817 /MEXPAND={ON,OFF}
12818 /MITERATE=max_iterations
12819 /MNEST=max_nest
12820 /MPRINT={ON,OFF}
12821 /MXLOOPS=max_loops
12822 /SEED={RANDOM,seed_value}
12823 /UNDEFINED={WARN,NOWARN}
12824
12825 (data output)
12826 /CC{A,B,C,D,E}={'npre,pre,suf,nsuf','npre.pre.suf.nsuf'}
12827 /DECIMAL={DOT,COMMA}
12828 /FORMAT=fmt_spec
12829
12830 (output routing)
12831 /ECHO={ON,OFF}
12832 /ERRORS={ON,OFF,TERMINAL,LISTING,BOTH,NONE}
12833 /INCLUDE={ON,OFF}
12834 /MESSAGES={ON,OFF,TERMINAL,LISTING,BOTH,NONE}
12835 /PRINTBACK={ON,OFF}
12836 /RESULTS={ON,OFF,TERMINAL,LISTING,BOTH,NONE}
12837
12838 (output activation)
12839 /LISTING={ON,OFF}
12840 /PRINTER={ON,OFF}
12841 /SCREEN={ON,OFF}
12842
12843 (output driver options)
12844 /HEADERS={NO,YES,BLANK}
12845 /LENGTH={NONE,length_in_lines}
12846 /LISTING=filename
12847 /MORE={ON,OFF}
12848 /PAGER={OFF,&quot;pager_name&quot;}
12849 /WIDTH={NARROW,WIDTH,n_characters}
12850
12851 (logging)
12852 /JOURNAL={ON,OFF} [filename]
12853 /LOG={ON,OFF} [filename]
12854
12855 (system files)
12856 /COMPRESSION={ON,OFF}
12857 /SCOMPRESSION={ON,OFF}
12858
12859 (security)
12860 /SAFER=ON
12861
12862 (obsolete settings accepted for compatibility, but ignored)
12863 /AUTOMENU={ON,OFF}
12864 /BEEP={ON,OFF}
12865 /BLOCK='c'
12866 /BOXSTRING={'xxx','xxxxxxxxxxx'}
12867 /CASE={UPPER,UPLOW}
12868 /COLOR=<small>...</small>
12869 /CPI=cpi_value
12870 /DISK={ON,OFF}
12871 /EJECT={ON,OFF}
12872 /HELPWINDOWS={ON,OFF}
12873 /HIGHRES={ON,OFF}
12874 /HISTOGRAM='c'
12875 /LOWRES={AUTO,ON,OFF}
12876 /LPI=lpi_value
12877 /MENUS={STANDARD,EXTENDED}
12878 /MXMEMORY=max_memory
12879 /PTRANSLATE={ON,OFF}
12880 /RCOLORS=<small>...</small>
12881 /RUNREVIEW={AUTO,MANUAL}
12882 /SCRIPTTAB='c'
12883 /TB1={'xxx','xxxxxxxxxxx'}
12884 /TBFONTS='string'
12885 /WORKDEV=drive_letter
12886 /WORKSPACE=workspace_size
12887 /XSORT={YES,NO}
12888 </pre></td></tr></table><P>
12889
12890 The SET command allows the user to adjust several parameters relating to
12891 PSPP's execution. Since there are many subcommands to this command, its
12892 subcommands will be examined in groups.
12893 </P>
12894 <P>
12895
12896 As a general comment, ON and YES are considered synonymous, and
12897 so are OFF and NO, when used as subcommand values.
12898 </P>
12899 <P>
12900
12901 The data input subcommands affect the way that data is read from data
12902 files. The data input subcommands are
12903 </P>
12904 <P>
12905
12906 </P>
12907 <DL COMPACT>
12908 <DT>BLANKS
12909 <DD>This is the value assigned to an item data item that is empty or
12910 contains only whitespace. An argument of SYSMIS or '.' will cause the
12911 system-missing value to be assigned to null items. This is the
12912 default. Any real value may be assigned.
12913 <P>
12914
12915 </P>
12916 <DT>DECIMAL
12917 <DD>The default DOT setting causes the decimal point character to be
12918 `<SAMP>.</SAMP>'. A setting of COMMA causes the decimal point character to be
12919 `<SAMP>,</SAMP>'.
12920 <P>
12921
12922 </P>
12923 <DT>FORMAT
12924 <DD>Allows the default numeric input/output format to be specified. The
12925 default is F8.2. See section <A HREF="pspp.html#SEC54">7.6.4 Input and Output Formats</A>.
12926 </DL>
12927 <P>
12928
12929 Program input subcommands affect the way that programs are parsed when
12930 they are typed interactively or run from a script. They are
12931 </P>
12932 <P>
12933
12934 </P>
12935 <DL COMPACT>
12936 <DT>ENDCMD
12937 <DD>This is a single character indicating the end of a command. The default
12938 is `<SAMP>.</SAMP>'. Don't change this.
12939 <P>
12940
12941 </P>
12942 <DT>NULLINE
12943 <DD>Whether a blank line is interpreted as ending the current command. The
12944 default is ON.
12945 </DL>
12946 <P>
12947
12948 Interaction subcommands affect the way that PSPP interacts with an
12949 online user. The interaction subcommands are
12950 </P>
12951 <P>
12952
12953 </P>
12954 <DL COMPACT>
12955 <DT>CPROMPT
12956 <DD>The command continuation prompt. The default is `<SAMP> &gt; </SAMP>'.
12957 <P>
12958
12959 </P>
12960 <DT>DPROMPT
12961 <DD>Prompt used when expecting data input within BEGIN DATA (see section <A HREF="pspp.html#SEC84">9.1 BEGIN DATA</A>). The default is `<SAMP>data&gt; </SAMP>'.
12962 <P>
12963
12964 </P>
12965 <DT>ERRORBREAK
12966 <DD>Whether an error causes PSPP to stop processing the current command
12967 file after finishing the current command. The default is OFF.
12968 <P>
12969
12970 </P>
12971 <DT>MXERRS
12972 <DD>The maximum number of errors before PSPP halts processing of the current
12973 command file. The default is 50.
12974 <P>
12975
12976 </P>
12977 <DT>MXWARNS
12978 <DD>The maximum number of warnings + errors before PSPP halts processing the
12979 current command file. The default is 100.
12980 <P>
12981
12982 </P>
12983 <DT>PROMPT
12984 <DD>The command prompt. The default is `<SAMP>PSPP&gt; </SAMP>'.
12985 <P>
12986
12987 </P>
12988 <DT>VIEWLENGTH
12989 <DD>The length of the screen in lines. MINIMUM means 25 lines, MEDIAN and
12990 MAXIMUM mean 43 lines. Otherwise specify the number of lines. Normally
12991 PSPP should auto-detect your screen size so this shouldn't have to be
12992 used.
12993 <P>
12994
12995 </P>
12996 <DT>VIEWWIDTH
12997 <DD>The width of the screen in characters. Normally 80 or 132.
12998 </DL>
12999 <P>
13000
13001 Program execution subcommands control the way that PSPP commands
13002 execute. The program execution subcommands are
13003 </P>
13004 <P>
13005
13006 </P>
13007 <DL COMPACT>
13008 <DT>MEXPAND
13009 <DD><DT>MITERATE
13010 <DD><DT>MNEST
13011 <DD><DT>MPRINT
13012 <DD>Currently not used.
13013 <P>
13014
13015 </P>
13016 <DT>MXLOOPS
13017 <DD>The maximum number of iterations for an uncontrolled loop.
13018 <P>
13019
13020 </P>
13021 <DT>SEED
13022 <DD>The initial pseudo-random number seed. Set to a real number or to
13023 RANDOM, which will obtain an initial seed from the current time of day.
13024 <P>
13025
13026 </P>
13027 <DT>UNDEFINED
13028 <DD>Currently not used.
13029 </DL>
13030 <P>
13031
13032 Data output subcommands affect the format of output data. These
13033 subcommands are
13034 </P>
13035 <P>
13036
13037 </P>
13038 <DL COMPACT>
13039 <DT>CCA
13040 <DD><DT>CCB
13041 <DD><DT>CCC
13042 <DD><DT>CCD
13043 <DD><DT>CCE
13044 <DD>Set up custom currency formats. The argument is a string which must
13045 contain exactly three commas or exactly three periods. If commas, then
13046 the grouping character for the currency format is `<SAMP>,</SAMP>', and the
13047 decimal point character is `<SAMP>.</SAMP>'; if periods, then the situation is
13048 reversed.
13049 <P>
13050
13051 The commas or periods divide the string into four fields, which are, in
13052 order, the negative prefix, prefix, suffix, and negative suffix. When a
13053 value is formatted using the custom currency format, the prefix precedes
13054 the value formatted and the suffix follows it. In addition, if the
13055 value is negative, the negative prefix precedes the prefix and the
13056 negative suffix follows the suffix.
13057 </P>
13058 <P>
13059
13060 </P>
13061 <DT>DECIMAL
13062 <DD>The default DOT setting causes the decimal point character to be
13063 `<SAMP>.</SAMP>'. A setting of COMMA causes the decimal point character to be
13064 `<SAMP>,</SAMP>'.
13065 <P>
13066
13067 </P>
13068 <DT>FORMAT
13069 <DD>Allows the default numeric input/output format to be specified. The
13070 default is F8.2. See section <A HREF="pspp.html#SEC54">7.6.4 Input and Output Formats</A>.
13071 </DL>
13072 <P>
13073
13074 Output routing subcommands affect where the output of transformations
13075 and procedures is sent. These subcommands are
13076 </P>
13077 <P>
13078
13079 </P>
13080 <DL COMPACT>
13081 <DT>ECHO
13082 <DD><P>
13083
13084 If turned on, commands are written to the listing file as they are read
13085 from command files. The default is OFF.
13086 </P>
13087 <P>
13088
13089 </P>
13090 <DT>ERRORS
13091 <DD><DT>INCLUDE
13092 <DD><DT>MESSAGES
13093 <DD><DT>PRINTBACK
13094 <DD><DT>RESULTS
13095 <DD>Currently not used.
13096 </DL>
13097 <P>
13098
13099 Output activation subcommands affect whether output devices of
13100 particular types are enabled. These subcommands are
13101 </P>
13102 <P>
13103
13104 </P>
13105 <DL COMPACT>
13106 <DT>LISTING
13107 <DD>Enable or disable listing devices.
13108 <P>
13109
13110 </P>
13111 <DT>PRINTER
13112 <DD>Enable or disable printer devices.
13113 <P>
13114
13115 </P>
13116 <DT>SCREEN
13117 <DD>Enable or disable screen devices.
13118 </DL>
13119 <P>
13120
13121 Output driver option subcommands affect output drivers' settings. These
13122 subcommands are
13123 </P>
13124 <P>
13125
13126 </P>
13127 <DL COMPACT>
13128 <DT>HEADERS
13129 <DD><DT>LENGTH
13130 <DD><DT>LISTING
13131 <DD><DT>MORE
13132 <DD><DT>PAGER
13133 <DD><DT>WIDTH
13134 <DD>Currently not used.
13135 </DL>
13136 <P>
13137
13138 Logging subcommands affect logging of commands executed to external
13139 files. These subcommands are
13140 </P>
13141 <P>
13142
13143 </P>
13144 <DL COMPACT>
13145 <DT>JOURNAL
13146 <DD><DT>LOG
13147 <DD>Not currently used.
13148 </DL>
13149 <P>
13150
13151 System file subcommands affect the default format of system files
13152 produced by PSPP. These subcommands are
13153 </P>
13154 <P>
13155
13156 </P>
13157 <DL COMPACT>
13158 <DT>COMPRESSION
13159 <DD>Not currently used.
13160 <P>
13161
13162 </P>
13163 <DT>SCOMPRESSION
13164 <DD>Whether system files created by SAVE or XSAVE are compressed by default.
13165 The default is ON.
13166 </DL>
13167 <P>
13168
13169 Security subcommands affect the operations that commands are allowed to
13170 perform. The security subcommands are
13171 </P>
13172 <P>
13173
13174 </P>
13175 <DL COMPACT>
13176 <DT>SAFER
13177 <DD>When set, this setting cannot ever be reset, for obvious security
13178 reasons. Setting this option disables the following operations:
13179 <P>
13180
13181 <UL>
13182 <LI>
13183 The ERASE command.
13184 <LI>
13185 The HOST command.
13186 <LI>
13187 Pipe filenames (filenames beginning or ending with `<SAMP>|</SAMP>').
13188 <LI>
13189 </UL>
13190 <P>
13191
13192 Be aware that this setting does not guarantee safety (commands can still
13193 overwrite files, for instance) but it is an improvement.
13194 </DL>
13195 <P>
13196
13197 <A NAME="SUBTITLE"></A>
13198 <HR SIZE="6">
13199 <A NAME="SEC167"></A>
13200 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
13201 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC166"> &lt; </A>]</TD>
13202 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC168"> &gt; </A>]</TD>
13203 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &lt;&lt; </A>]</TD>
13204 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> Up </A>]</TD>
13205 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC169"> &gt;&gt; </A>]</TD>
13206 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
13207 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
13208 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
13209 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
13210 </TR></TABLE>
13211 <H2> 16.11 SUBTITLE </H2>
13212 <!--docid::SEC167::-->
13213 <P>
13214
13215 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Two possible syntaxes:
13216 SUBTITLE 'subtitle_string'.
13217 SUBTITLE subtitle_string.
13218 </pre></td></tr></table><P>
13219
13220 The SUBTITLE command is used to provide a subtitle to a particular PSPP
13221 run. This subtitle appears at the top of each output page below the
13222 title, if titles are enabled on the output device.
13223 </P>
13224 <P>
13225
13226 Specify a subtitle as a string in quotes. The alternate syntax that did
13227 not require quotes is now obsolete. If it is used then the subtitle is
13228 converted to all uppercase.
13229 </P>
13230 <P>
13231
13232 <A NAME="TITLE"></A>
13233 <HR SIZE="6">
13234 <A NAME="SEC168"></A>
13235 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
13236 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC167"> &lt; </A>]</TD>
13237 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC169"> &gt; </A>]</TD>
13238 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &lt;&lt; </A>]</TD>
13239 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> Up </A>]</TD>
13240 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC169"> &gt;&gt; </A>]</TD>
13241 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
13242 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
13243 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
13244 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
13245 </TR></TABLE>
13246 <H2> 16.12 TITLE </H2>
13247 <!--docid::SEC168::-->
13248 <P>
13249
13250 <TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Two possible syntaxes:
13251 TITLE 'title_string'.
13252 TITLE title_string.
13253 </pre></td></tr></table><P>
13254
13255 The TITLE command is used to provide a title to a particular PSPP run.
13256 This title appears at the top of each output page, if titles are enabled
13257 on the output device.
13258 </P>
13259 <P>
13260
13261 Specify a title as a string in quotes. The alternate syntax that did
13262 not require quotes is now obsolete. If it is used then the title is
13263 converted to all uppercase.
13264 </P>
13265 <P>
13266
13267 <A NAME="Not Implemented"></A>
13268 <HR SIZE="6">
13269 <A NAME="SEC169"></A>
13270 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
13271 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC168"> &lt; </A>]</TD>
13272 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> &gt; </A>]</TD>
13273 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC156"> &lt;&lt; </A>]</TD>
13274 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
13275 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> &gt;&gt; </A>]</TD>
13276 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
13277 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
13278 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
13279 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
13280 </TR></TABLE>
13281 <H1> 17. Not Implemented </H1>
13282 <!--docid::SEC169::-->
13283 <P>
13284
13285 This chapter lists parts of the PSPP language that are not yet
13286 implemented.
13287 </P>
13288 <P>
13289
13290 The following transformations and utilities are not yet implemented, but
13291 they will be supported in a later release.
13292 </P>
13293 <P>
13294
13295 <UL>
13296 <LI>
13297 ADD FILES
13298 <LI>
13299 DEFINE
13300 <LI>
13301 FILE TYPE
13302 <LI>
13303 GET SAS
13304 <LI>
13305 GET TRANSLATE
13306 <LI>
13307 MCONVERT
13308 <LI>
13309 PRESERVE
13310 <LI>
13311 PROCEDURE OUTPUT
13312 <LI>
13313 RESTORE
13314 <LI>
13315 SAVE TRANSLATE
13316 <LI>
13317 SHOW
13318 <LI>
13319 UPDATE
13320 </UL>
13321 <P>
13322
13323 The following transformations and utilities are not implemented. There
13324 are no plans to support them in future releases. Contributions to
13325 implement them will still be accepted.
13326 </P>
13327 <P>
13328
13329 <UL>
13330 <LI>
13331 EDIT
13332 <LI>
13333 GET DATABASE
13334 <LI>
13335 GET OSIRIS
13336 <LI>
13337 GET SCSS
13338 <LI>
13339 GSET
13340 <LI>
13341 HELP
13342 <LI>
13343 INFO
13344 <LI>
13345 INPUT MATRIX
13346 <LI>
13347 KEYED DATA LIST
13348 <LI>
13349 NUMBERED and UNNUMBERED
13350 <LI>
13351 OPTIONS
13352 <LI>
13353 REVIEW
13354 <LI>
13355 SAVE SCSS
13356 <LI>
13357 SPSS MANAGER
13358 <LI>
13359 STATISTICS
13360 </UL>
13361 <P>
13362
13363 <A NAME="Data File Format"></A>
13364 <HR SIZE="6">
13365 <A NAME="SEC170"></A>
13366 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
13367 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC169"> &lt; </A>]</TD>
13368 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC171"> &gt; </A>]</TD>
13369 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC169"> &lt;&lt; </A>]</TD>
13370 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
13371 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &gt;&gt; </A>]</TD>
13372 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
13373 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
13374 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
13375 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
13376 </TR></TABLE>
13377 <H1> 18. Data File Format </H1>
13378 <!--docid::SEC170::-->
13379 <P>
13380
13381 PSPP necessarily uses the same format for system files as do the
13382 products with which it is compatible. This chapter is a description of
13383 that format.
13384 </P>
13385 <P>
13386
13387 There are three data types used in system files: 32-bit integers, 64-bit
13388 floating points, and 1-byte characters. In this document these will
13389 simply be referred to as <CODE>int32</CODE>, <CODE>flt64</CODE>, and <CODE>char</CODE>,
13390 the names that are used in the PSPP source code. Every field of type
13391 <CODE>int32</CODE> or <CODE>flt64</CODE> is aligned on a 32-bit boundary.
13392 </P>
13393 <P>
13394
13395 The endianness of data in PSPP system files is not specified. System
13396 files output on a computer of a particular endianness will have the
13397 endianness of that computer. However, PSPP can read files of either
13398 endianness, regardless of its host computer's endianness. PSPP
13399 translates endianness for both integer and floating point numbers.
13400 </P>
13401 <P>
13402
13403 Floating point formats are also not specified. PSPP does not
13404 translate between floating point formats. This is unlikely to be a
13405 problem as all modern computer architectures use IEEE 754 format for
13406 floating point representation.
13407 </P>
13408 <P>
13409
13410 The PSPP system-missing value is represented by the largest possible
13411 negative number in the floating point format; in C, this is most likely
13412 <CODE>-DBL_MAX</CODE>. There are two other important values used in missing
13413 values: <CODE>HIGHEST</CODE> and <CODE>LOWEST</CODE>. These are represented by the
13414 largest possible positive number (probably <CODE>DBL_MAX</CODE>) and the
13415 second-largest negative number. The latter must be determined in a
13416 system-dependent manner; in IEEE 754 format it is represented by value
13417 <CODE>0xffeffffffffffffe</CODE>.
13418 </P>
13419 <P>
13420
13421 System files are divided into records. Each record begins with an
13422 <CODE>int32</CODE> giving a numeric record type. Individual record types are
13423 described below:
13424 </P>
13425 <P>
13426
13427 <TABLE BORDER="0" CELLSPACING="0">
13428 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC171">18.1 File Header Record</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
13429 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC172">18.2 Variable Record</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
13430 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC173">18.3 Value Label Record</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
13431 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC174">18.4 Value Label Variable Record</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
13432 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC175">18.5 Document Record</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
13433 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC176">18.6 Machine <CODE>int32</CODE> Info Record</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
13434 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC177">18.7 Machine <CODE>flt64</CODE> Info Record</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
13435 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC178">18.8 Miscellaneous Informational Records</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
13436 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC179">18.9 Dictionary Termination Record</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
13437 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC180">18.10 Data Record</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
13438 </TABLE>
13439 <P>
13440
13441 <A NAME="File Header Record"></A>
13442 <HR SIZE="6">
13443 <A NAME="SEC171"></A>
13444 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
13445 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> &lt; </A>]</TD>
13446 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC172"> &gt; </A>]</TD>
13447 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> &lt;&lt; </A>]</TD>
13448 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> Up </A>]</TD>
13449 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &gt;&gt; </A>]</TD>
13450 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
13451 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
13452 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
13453 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
13454 </TR></TABLE>
13455 <H2> 18.1 File Header Record </H2>
13456 <!--docid::SEC171::-->
13457 <P>
13458
13459 The file header is always the first record in the file.
13460 </P>
13461 <P>
13462
13463 <TABLE><tr><td>&nbsp;</td><td class=example><pre>struct sysfile_header
13464 {
13465 char rec_type[4];
13466 char prod_name[60];
13467 int32 layout_code;
13468 int32 case_size;
13469 int32 compressed;
13470 int32 weight_index;
13471 int32 ncases;
13472 flt64 bias;
13473 char creation_date[9];
13474 char creation_time[8];
13475 char file_label[64];
13476 char padding[3];
13477 };
13478 </pre></td></tr></table><P>
13479
13480 </P>
13481 <DL COMPACT>
13482 <DT><CODE>char rec_type[4];</CODE>
13483 <DD>Record type code. Always set to `<SAMP>$FL2</SAMP>'. This is the only record
13484 for which the record type is not of type <CODE>int32</CODE>.
13485 <P>
13486
13487 </P>
13488 <DT><CODE>char prod_name[60];</CODE>
13489 <DD>Product identification string. This always begins with the characters
13490 `<SAMP>@(#) SPSS DATA FILE</SAMP>'. PSPP uses the remaining characters to
13491 give its version and the operating system name; for example, `<SAMP>GNU
13492 pspp 0.1.4 - sparc-sun-solaris2.5.2</SAMP>'. The string is truncated if it
13493 would be longer than 60 characters; otherwise it is padded on the right
13494 with spaces.
13495 <P>
13496
13497 </P>
13498 <DT><CODE>int32 layout_code;</CODE>
13499 <DD>Always set to 2. PSPP reads this value in order to determine the
13500 file's endianness.
13501 <P>
13502
13503 </P>
13504 <DT><CODE>int32 case_size;</CODE>
13505 <DD>Number of data elements per case. This is the number of variables,
13506 except that long string variables add extra data elements (one for every
13507 8 characters after the first 8).
13508 <P>
13509
13510 </P>
13511 <DT><CODE>int32 compressed;</CODE>
13512 <DD>Set to 1 if the data in the file is compressed, 0 otherwise.
13513 <P>
13514
13515 </P>
13516 <DT><CODE>int32 weight_index;</CODE>
13517 <DD>If one of the variables in the data set is used as a weighting variable,
13518 set to the index of that variable. Otherwise, set to 0.
13519 <P>
13520
13521 </P>
13522 <DT><CODE>int32 ncases;</CODE>
13523 <DD>Set to the number of cases in the file if it is known, or -1 otherwise.
13524 <P>
13525
13526 In the general case it is not possible to determine the number of cases
13527 that will be output to a system file at the time that the header is
13528 written. The way that this is dealt with is by writing the entire
13529 system file, including the header, then seeking back to the beginning of
13530 the file and writing just the <CODE>ncases</CODE> field. For `files' in which
13531 this is not valid, the seek operation fails. In this case,
13532 <CODE>ncases</CODE> remains -1.
13533 </P>
13534 <P>
13535
13536 </P>
13537 <DT><CODE>flt64 bias;</CODE>
13538 <DD>Compression bias. Always set to 100. The significance of this value is
13539 that only numbers between <CODE>(1 - bias)</CODE> and <CODE>(251 - bias)</CODE> can
13540 be compressed.
13541 <P>
13542
13543 </P>
13544 <DT><CODE>char creation_date[9];</CODE>
13545 <DD>Set to the date of creation of the system file, in `<SAMP>dd mmm yy</SAMP>'
13546 format, with the month as standard English abbreviations, using an
13547 initial capital letter and following with lowercase. If the date is not
13548 available then this field is arbitrarily set to `<SAMP>01 Jan 70</SAMP>'.
13549 <P>
13550
13551 </P>
13552 <DT><CODE>char creation_time[8];</CODE>
13553 <DD>Set to the time of creation of the system file, in `<SAMP>hh:mm:ss</SAMP>'
13554 format and using 24-hour time. If the time is not available then this
13555 field is arbitrarily set to `<SAMP>00:00:00</SAMP>'.
13556 <P>
13557
13558 </P>
13559 <DT><CODE>char file_label[64];</CODE>
13560 <DD>Set the the file label declared by the user, if any. Padded on the
13561 right with spaces.
13562 <P>
13563
13564 </P>
13565 <DT><CODE>char padding[3];</CODE>
13566 <DD>Ignored padding bytes to make the structure a multiple of 32 bits in
13567 length. Set to zeros.
13568 </DL>
13569 <P>
13570
13571 <A NAME="Variable Record"></A>
13572 <HR SIZE="6">
13573 <A NAME="SEC172"></A>
13574 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
13575 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC171"> &lt; </A>]</TD>
13576 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC173"> &gt; </A>]</TD>
13577 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> &lt;&lt; </A>]</TD>
13578 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> Up </A>]</TD>
13579 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &gt;&gt; </A>]</TD>
13580 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
13581 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
13582 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
13583 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
13584 </TR></TABLE>
13585 <H2> 18.2 Variable Record </H2>
13586 <!--docid::SEC172::-->
13587 <P>
13588
13589 Immediately following the header must come the variable records. There
13590 must be one variable record for every variable and every 8 characters in
13591 a long string beyond the first 8; i.e., there must be exactly as many
13592 variable records as the value specified for <CODE>case_size</CODE> in the file
13593 header record.
13594 </P>
13595 <P>
13596
13597 <TABLE><tr><td>&nbsp;</td><td class=example><pre>struct sysfile_variable
13598 {
13599 int32 rec_type;
13600 int32 type;
13601 int32 has_var_label;
13602 int32 n_missing_values;
13603 int32 print;
13604 int32 write;
13605 char name[8];
13606
13607 /* The following two fields are present
13608 only if has_var_label is 1. */
13609 int32 label_len;
13610 char label[/* variable length */];
13611
13612 /* The following field is present only
13613 if n_missing_values is not 0. */
13614 flt64 missing_values[/* variable length*/];
13615 };
13616 </pre></td></tr></table><P>
13617
13618 </P>
13619 <DL COMPACT>
13620 <DT><CODE>int32 rec_type;</CODE>
13621 <DD>Record type code. Always set to 2.
13622 <P>
13623
13624 </P>
13625 <DT><CODE>int32 type;</CODE>
13626 <DD>Variable type code. Set to 0 for a numeric variable. For a short
13627 string variable or the first part of a long string variable, this is set
13628 to the width of the string. For the second and subsequent parts of a
13629 long string variable, set to -1, and the remaining fields in the
13630 structure are ignored.
13631 <P>
13632
13633 </P>
13634 <DT><CODE>int32 has_var_label;</CODE>
13635 <DD>If this variable has a variable label, set to 1; otherwise, set to 0.
13636 <P>
13637
13638 </P>
13639 <DT><CODE>int32 n_missing_values;</CODE>
13640 <DD>If the variable has no missing values, set to 0. If the variable has
13641 one, two, or three discrete missing values, set to 1, 2, or 3,
13642 respectively. If the variable has a range for missing variables, set to
13643 -2; if the variable has a range for missing variables plus a single
13644 discrete value, set to -3.
13645 <P>
13646
13647 </P>
13648 <DT><CODE>int32 print;</CODE>
13649 <DD>Print format for this variable. See below.
13650 <P>
13651
13652 </P>
13653 <DT><CODE>int32 write;</CODE>
13654 <DD>Write format for this variable. See below.
13655 <P>
13656
13657 </P>
13658 <DT><CODE>char name[8];</CODE>
13659 <DD>Variable name. The variable name must begin with a capital letter or
13660 the at-sign (`<SAMP>@</SAMP>'). Subsequent characters may also be octothorpes
13661 (`<SAMP>#</SAMP>'), dollar signs (`<SAMP>$</SAMP>'), underscores (`<SAMP>_</SAMP>'), or full
13662 stops (`<SAMP>.</SAMP>'). The variable name is padded on the right with spaces.
13663 <P>
13664
13665 </P>
13666 <DT><CODE>int32 label_len;</CODE>
13667 <DD>This field is present only if <CODE>has_var_label</CODE> is set to 1. It is
13668 set to the length, in characters, of the variable label, which must be a
13669 number between 0 and 120.
13670 <P>
13671
13672 </P>
13673 <DT><CODE>char label[/* variable length */];</CODE>
13674 <DD>This field is present only if <CODE>has_var_label</CODE> is set to 1. It has
13675 length <CODE>label_len</CODE>, rounded up to the nearest multiple of 32 bits.
13676 The first <CODE>label_len</CODE> characters are the variable's variable label.
13677 <P>
13678
13679 </P>
13680 <DT><CODE>flt64 missing_values[/* variable length */];</CODE>
13681 <DD>This field is present only if <CODE>n_missing_values</CODE> is not 0. It has
13682 the same number of elements as the absolute value of
13683 <CODE>n_missing_values</CODE>. For discrete missing values, each element
13684 represents one missing value. When a range is present, the first
13685 element denotes the minimum value in the range, and the second element
13686 denotes the maximum value in the range. When a range plus a value are
13687 present, the third element denotes the additional discrete missing
13688 value. HIGHEST and LOWEST are indicated as described in the chapter
13689 introduction.
13690 </DL>
13691 <P>
13692
13693 The <CODE>print</CODE> and <CODE>write</CODE> members of sysfile_variable are output
13694 formats coded into <CODE>int32</CODE> types. The LSB (least-significant byte)
13695 of the <CODE>int32</CODE> represents the number of decimal places, and the
13696 next two bytes in order of increasing significance represent field width
13697 and format type, respectively. The MSB (most-significant byte) is not
13698 used and should be set to zero.
13699 </P>
13700 <P>
13701
13702 Format types are defined as follows:
13703 </P>
13704 <DL COMPACT>
13705 <DT>0
13706 <DD>Not used.
13707 <DT>1
13708 <DD><CODE>A</CODE>
13709 <DT>2
13710 <DD><CODE>AHEX</CODE>
13711 <DT>3
13712 <DD><CODE>COMMA</CODE>
13713 <DT>4
13714 <DD><CODE>DOLLAR</CODE>
13715 <DT>5
13716 <DD><CODE>F</CODE>
13717 <DT>6
13718 <DD><CODE>IB</CODE>
13719 <DT>7
13720 <DD><CODE>PIBHEX</CODE>
13721 <DT>8
13722 <DD><CODE>P</CODE>
13723 <DT>9
13724 <DD><CODE>PIB</CODE>
13725 <DT>10
13726 <DD><CODE>PK</CODE>
13727 <DT>11
13728 <DD><CODE>RB</CODE>
13729 <DT>12
13730 <DD><CODE>RBHEX</CODE>
13731 <DT>13
13732 <DD>Not used.
13733 <DT>14
13734 <DD>Not used.
13735 <DT>15
13736 <DD><CODE>Z</CODE>
13737 <DT>16
13738 <DD><CODE>N</CODE>
13739 <DT>17
13740 <DD><CODE>E</CODE>
13741 <DT>18
13742 <DD>Not used.
13743 <DT>19
13744 <DD>Not used.
13745 <DT>20
13746 <DD><CODE>DATE</CODE>
13747 <DT>21
13748 <DD><CODE>TIME</CODE>
13749 <DT>22
13750 <DD><CODE>DATETIME</CODE>
13751 <DT>23
13752 <DD><CODE>ADATE</CODE>
13753 <DT>24
13754 <DD><CODE>JDATE</CODE>
13755 <DT>25
13756 <DD><CODE>DTIME</CODE>
13757 <DT>26
13758 <DD><CODE>WKDAY</CODE>
13759 <DT>27
13760 <DD><CODE>MONTH</CODE>
13761 <DT>28
13762 <DD><CODE>MOYR</CODE>
13763 <DT>29
13764 <DD><CODE>QYR</CODE>
13765 <DT>30
13766 <DD><CODE>WKYR</CODE>
13767 <DT>31
13768 <DD><CODE>PCT</CODE>
13769 <DT>32
13770 <DD><CODE>DOT</CODE>
13771 <DT>33
13772 <DD><CODE>CCA</CODE>
13773 <DT>34
13774 <DD><CODE>CCB</CODE>
13775 <DT>35
13776 <DD><CODE>CCC</CODE>
13777 <DT>36
13778 <DD><CODE>CCD</CODE>
13779 <DT>37
13780 <DD><CODE>CCE</CODE>
13781 <DT>38
13782 <DD><CODE>EDATE</CODE>
13783 <DT>39
13784 <DD><CODE>SDATE</CODE>
13785 </DL>
13786 <P>
13787
13788 <A NAME="Value Label Record"></A>
13789 <HR SIZE="6">
13790 <A NAME="SEC173"></A>
13791 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
13792 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC172"> &lt; </A>]</TD>
13793 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC174"> &gt; </A>]</TD>
13794 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> &lt;&lt; </A>]</TD>
13795 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> Up </A>]</TD>
13796 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &gt;&gt; </A>]</TD>
13797 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
13798 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
13799 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
13800 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
13801 </TR></TABLE>
13802 <H2> 18.3 Value Label Record </H2>
13803 <!--docid::SEC173::-->
13804 <P>
13805
13806 Value label records must follow the variable records and must precede
13807 the header termination record. Other than this, they may appear
13808 anywhere in the system file. Every value label record must be
13809 immediately followed by a label variable record, described below.
13810 </P>
13811 <P>
13812
13813 Value label records begin with <CODE>rec_type</CODE>, an <CODE>int32</CODE> value
13814 set to the record type of 3. This is followed by <CODE>count</CODE>, an
13815 <CODE>int32</CODE> value set to the number of value labels present in this
13816 record.
13817 </P>
13818 <P>
13819
13820 These two fields are followed by a series of <CODE>count</CODE> tuples. Each
13821 tuple is divided into two fields, the value and the label. The first of
13822 these, the value, is composed of a 64-bit value, which is either a
13823 <CODE>flt64</CODE> value or up to 8 characters (padded on the right to 8
13824 bytes) denoting a short string value. Whether the value is a
13825 <CODE>flt64</CODE> or a character string is not defined inside the value label
13826 record.
13827 </P>
13828 <P>
13829
13830 The second field in the tuple, the label, has variable length. The
13831 first <CODE>char</CODE> is a count of the number of characters in the value
13832 label. The remainder of the field is the label itself. The field is
13833 padded on the right to a multiple of 64 bits in length.
13834 </P>
13835 <P>
13836
13837 <A NAME="Value Label Variable Record"></A>
13838 <HR SIZE="6">
13839 <A NAME="SEC174"></A>
13840 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
13841 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC173"> &lt; </A>]</TD>
13842 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC175"> &gt; </A>]</TD>
13843 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> &lt;&lt; </A>]</TD>
13844 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> Up </A>]</TD>
13845 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &gt;&gt; </A>]</TD>
13846 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
13847 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
13848 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
13849 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
13850 </TR></TABLE>
13851 <H2> 18.4 Value Label Variable Record </H2>
13852 <!--docid::SEC174::-->
13853 <P>
13854
13855 Every value label variable record must be immediately preceded by a
13856 value label record, described above.
13857 </P>
13858 <P>
13859
13860 <TABLE><tr><td>&nbsp;</td><td class=example><pre>struct sysfile_value_label_variable
13861 {
13862 int32 rec_type;
13863 int32 count;
13864 int32 vars[/* variable length */];
13865 };
13866 </pre></td></tr></table><P>
13867
13868 </P>
13869 <DL COMPACT>
13870 <DT><CODE>int32 rec_type;</CODE>
13871 <DD>Record type. Always set to 4.
13872 <P>
13873
13874 </P>
13875 <DT><CODE>int32 count;</CODE>
13876 <DD>Number of variables that the associated value labels from the value
13877 label record are to be applied.
13878 <P>
13879
13880 </P>
13881 <DT><CODE>int32 vars[/* variable length];</CODE>
13882 <DD>A list of variables to which to apply the value labels. There are
13883 <CODE>count</CODE> elements.
13884 </DL>
13885 <P>
13886
13887 <A NAME="Document Record"></A>
13888 <HR SIZE="6">
13889 <A NAME="SEC175"></A>
13890 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
13891 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC174"> &lt; </A>]</TD>
13892 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC176"> &gt; </A>]</TD>
13893 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> &lt;&lt; </A>]</TD>
13894 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> Up </A>]</TD>
13895 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &gt;&gt; </A>]</TD>
13896 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
13897 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
13898 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
13899 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
13900 </TR></TABLE>
13901 <H2> 18.5 Document Record </H2>
13902 <!--docid::SEC175::-->
13903 <P>
13904
13905 There must be no more than one document record per system file.
13906 Document records must follow the variable records and precede the
13907 dictionary termination record.
13908 </P>
13909 <P>
13910
13911 <TABLE><tr><td>&nbsp;</td><td class=example><pre>struct sysfile_document
13912 {
13913 int32 rec_type;
13914 int32 n_lines;
13915 char lines[/* variable length */][80];
13916 };
13917 </pre></td></tr></table><P>
13918
13919 </P>
13920 <DL COMPACT>
13921 <DT><CODE>int32 rec_type;</CODE>
13922 <DD>Record type. Always set to 6.
13923 <P>
13924
13925 </P>
13926 <DT><CODE>int32 n_lines;</CODE>
13927 <DD>Number of lines of documents present.
13928 <P>
13929
13930 </P>
13931 <DT><CODE>char lines[/* variable length */][80];</CODE>
13932 <DD>Document lines. The number of elements is defined by <CODE>n_lines</CODE>.
13933 Lines shorter than 80 characters are padded on the right with spaces.
13934 </DL>
13935 <P>
13936
13937 <A NAME="Machine int32 Info Record"></A>
13938 <HR SIZE="6">
13939 <A NAME="SEC176"></A>
13940 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
13941 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC175"> &lt; </A>]</TD>
13942 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC177"> &gt; </A>]</TD>
13943 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> &lt;&lt; </A>]</TD>
13944 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> Up </A>]</TD>
13945 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &gt;&gt; </A>]</TD>
13946 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
13947 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
13948 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
13949 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
13950 </TR></TABLE>
13951 <H2> 18.6 Machine <CODE>int32</CODE> Info Record </H2>
13952 <!--docid::SEC176::-->
13953 <P>
13954
13955 There must be no more than one machine <CODE>int32</CODE> info record per
13956 system file. Machine <CODE>int32</CODE> info records must follow the variable
13957 records and precede the dictionary termination record.
13958 </P>
13959 <P>
13960
13961 <TABLE><tr><td>&nbsp;</td><td class=example><pre>struct sysfile_machine_int32_info
13962 {
13963 /* Header. */
13964 int32 rec_type;
13965 int32 subtype;
13966 int32 size;
13967 int32 count;
13968
13969 /* Data. */
13970 int32 version_major;
13971 int32 version_minor;
13972 int32 version_revision;
13973 int32 machine_code;
13974 int32 floating_point_rep;
13975 int32 compression_code;
13976 int32 endianness;
13977 int32 character_code;
13978 };
13979 </pre></td></tr></table><P>
13980
13981 </P>
13982 <DL COMPACT>
13983 <DT><CODE>int32 rec_type;</CODE>
13984 <DD>Record type. Always set to 7.
13985 <P>
13986
13987 </P>
13988 <DT><CODE>int32 subtype;</CODE>
13989 <DD>Record subtype. Always set to 3.
13990 <P>
13991
13992 </P>
13993 <DT><CODE>int32 size;</CODE>
13994 <DD>Size of each piece of data in the data part, in bytes. Always set to 4.
13995 <P>
13996
13997 </P>
13998 <DT><CODE>int32 count;</CODE>
13999 <DD>Number of pieces of data in the data part. Always set to 8.
14000 <P>
14001
14002 </P>
14003 <DT><CODE>int32 version_major;</CODE>
14004 <DD>PSPP major version number. In version <VAR>x</VAR>.<VAR>y</VAR>.<VAR>z</VAR>, this
14005 is <VAR>x</VAR>.
14006 <P>
14007
14008 </P>
14009 <DT><CODE>int32 version_minor;</CODE>
14010 <DD>PSPP minor version number. In version <VAR>x</VAR>.<VAR>y</VAR>.<VAR>z</VAR>, this
14011 is <VAR>y</VAR>.
14012 <P>
14013
14014 </P>
14015 <DT><CODE>int32 version_revision;</CODE>
14016 <DD>PSPP version revision number. In version <VAR>x</VAR>.<VAR>y</VAR>.<VAR>z</VAR>,
14017 this is <VAR>z</VAR>.
14018 <P>
14019
14020 </P>
14021 <DT><CODE>int32 machine_code;</CODE>
14022 <DD>Machine code. PSPP always set this field to value to -1, but other
14023 values may appear.
14024 <P>
14025
14026 </P>
14027 <DT><CODE>int32 floating_point_rep;</CODE>
14028 <DD>Floating point representation code. For IEEE 754 systems this is 1.
14029 IBM 370 sets this to 2, and DEC VAX E to 3.
14030 <P>
14031
14032 </P>
14033 <DT><CODE>int32 compression_code;</CODE>
14034 <DD>Compression code. Always set to 1.
14035 <P>
14036
14037 </P>
14038 <DT><CODE>int32 endianness;</CODE>
14039 <DD>Machine endianness. 1 indicates big-endian, 2 indicates little-endian.
14040 <P>
14041
14042 </P>
14043 <DT><CODE>int32 character_code;</CODE>
14044 <DD>Character code. 1 indicates EBCDIC, 2 indicates 7-bit ASCII, 3
14045 indicates 8-bit ASCII, 4 indicates DEC Kanji.
14046 </DL>
14047 <P>
14048
14049 <A NAME="Machine flt64 Info Record"></A>
14050 <HR SIZE="6">
14051 <A NAME="SEC177"></A>
14052 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
14053 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC176"> &lt; </A>]</TD>
14054 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC178"> &gt; </A>]</TD>
14055 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> &lt;&lt; </A>]</TD>
14056 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> Up </A>]</TD>
14057 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &gt;&gt; </A>]</TD>
14058 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
14059 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
14060 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
14061 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
14062 </TR></TABLE>
14063 <H2> 18.7 Machine <CODE>flt64</CODE> Info Record </H2>
14064 <!--docid::SEC177::-->
14065 <P>
14066
14067 There must be no more than one machine <CODE>flt64</CODE> info record per
14068 system file. Machine <CODE>flt64</CODE> info records must follow the variable
14069 records and precede the dictionary termination record.
14070 </P>
14071 <P>
14072
14073 <TABLE><tr><td>&nbsp;</td><td class=example><pre>struct sysfile_machine_flt64_info
14074 {
14075 /* Header. */
14076 int32 rec_type;
14077 int32 subtype;
14078 int32 size;
14079 int32 count;
14080
14081 /* Data. */
14082 flt64 sysmis;
14083 flt64 highest;
14084 flt64 lowest;
14085 };
14086 </pre></td></tr></table><P>
14087
14088 </P>
14089 <DL COMPACT>
14090 <DT><CODE>int32 rec_type;</CODE>
14091 <DD>Record type. Always set to 3.
14092 <P>
14093
14094 </P>
14095 <DT><CODE>int32 subtype;</CODE>
14096 <DD>Record subtype. Always set to 4.
14097 <P>
14098
14099 </P>
14100 <DT><CODE>int32 size;</CODE>
14101 <DD>Size of each piece of data in the data part, in bytes. Always set to 4.
14102 <P>
14103
14104 </P>
14105 <DT><CODE>int32 count;</CODE>
14106 <DD>Number of pieces of data in the data part. Always set to 3.
14107 <P>
14108
14109 </P>
14110 <DT><CODE>flt64 sysmis;</CODE>
14111 <DD>The system missing value.
14112 <P>
14113
14114 </P>
14115 <DT><CODE>flt64 highest;</CODE>
14116 <DD>The value used for HIGHEST in missing values.
14117 <P>
14118
14119 </P>
14120 <DT><CODE>flt64 lowest;</CODE>
14121 <DD>The value used for LOWEST in missing values.
14122 </DL>
14123 <P>
14124
14125 <A NAME="Miscellaneous Informational Records"></A>
14126 <HR SIZE="6">
14127 <A NAME="SEC178"></A>
14128 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
14129 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC177"> &lt; </A>]</TD>
14130 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC179"> &gt; </A>]</TD>
14131 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> &lt;&lt; </A>]</TD>
14132 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> Up </A>]</TD>
14133 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &gt;&gt; </A>]</TD>
14134 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
14135 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
14136 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
14137 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
14138 </TR></TABLE>
14139 <H2> 18.8 Miscellaneous Informational Records </H2>
14140 <!--docid::SEC178::-->
14141 <P>
14142
14143 Miscellaneous informational records must follow the variable records and
14144 precede the dictionary termination record.
14145 </P>
14146 <P>
14147
14148 Miscellaneous informational records are ignored by PSPP when reading
14149 system files. They are not written by PSPP when writing system files.
14150 </P>
14151 <P>
14152
14153 <TABLE><tr><td>&nbsp;</td><td class=example><pre>struct sysfile_misc_info
14154 {
14155 /* Header. */
14156 int32 rec_type;
14157 int32 subtype;
14158 int32 size;
14159 int32 count;
14160
14161 /* Data. */
14162 char data[/* variable length */];
14163 };
14164 </pre></td></tr></table><P>
14165
14166 </P>
14167 <DL COMPACT>
14168 <DT><CODE>int32 rec_type;</CODE>
14169 <DD>Record type. Always set to 3.
14170 <P>
14171
14172 </P>
14173 <DT><CODE>int32 subtype;</CODE>
14174 <DD>Record subtype. May take any value.
14175 <P>
14176
14177 </P>
14178 <DT><CODE>int32 size;</CODE>
14179 <DD>Size of each piece of data in the data part. Should have the value 4 or
14180 8, for <CODE>int32</CODE> and <CODE>flt64</CODE>, respectively.
14181 <P>
14182
14183 </P>
14184 <DT><CODE>int32 count;</CODE>
14185 <DD>Number of pieces of data in the data part.
14186 <P>
14187
14188 </P>
14189 <DT><CODE>char data[/* variable length */];</CODE>
14190 <DD>Arbitrary data. There must be <CODE>size</CODE> times <CODE>count</CODE> bytes of
14191 data.
14192 </DL>
14193 <P>
14194
14195 <A NAME="Dictionary Termination Record"></A>
14196 <HR SIZE="6">
14197 <A NAME="SEC179"></A>
14198 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
14199 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC178"> &lt; </A>]</TD>
14200 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC180"> &gt; </A>]</TD>
14201 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> &lt;&lt; </A>]</TD>
14202 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> Up </A>]</TD>
14203 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &gt;&gt; </A>]</TD>
14204 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
14205 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
14206 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
14207 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
14208 </TR></TABLE>
14209 <H2> 18.9 Dictionary Termination Record </H2>
14210 <!--docid::SEC179::-->
14211 <P>
14212
14213 The dictionary termination record must follow all other records, except
14214 for the actual cases, which it must precede. There must be exactly one
14215 dictionary termination record in every system file.
14216 </P>
14217 <P>
14218
14219 <TABLE><tr><td>&nbsp;</td><td class=example><pre>struct sysfile_dict_term
14220 {
14221 int32 rec_type;
14222 int32 filler;
14223 };
14224 </pre></td></tr></table><P>
14225
14226 </P>
14227 <DL COMPACT>
14228 <DT><CODE>int32 rec_type;</CODE>
14229 <DD>Record type. Always set to 999.
14230 <P>
14231
14232 </P>
14233 <DT><CODE>int32 filler;</CODE>
14234 <DD>Ignored padding. Should be set to 0.
14235 </DL>
14236 <P>
14237
14238 <A NAME="Data Record"></A>
14239 <HR SIZE="6">
14240 <A NAME="SEC180"></A>
14241 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
14242 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC179"> &lt; </A>]</TD>
14243 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &gt; </A>]</TD>
14244 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> &lt;&lt; </A>]</TD>
14245 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> Up </A>]</TD>
14246 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &gt;&gt; </A>]</TD>
14247 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
14248 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
14249 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
14250 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
14251 </TR></TABLE>
14252 <H2> 18.10 Data Record </H2>
14253 <!--docid::SEC180::-->
14254 <P>
14255
14256 Data records must follow all other records in the data file. There must
14257 be at least one data record in every system file.
14258 </P>
14259 <P>
14260
14261 The format of data records varies depending on whether the data is
14262 compressed. Regardless, the data is arranged in a series of 8-byte
14263 elements.
14264 </P>
14265 <P>
14266
14267 When data is not compressed, Every case is composed of <CODE>case_size</CODE>
14268 of these 8-byte elements, where <CODE>case_size</CODE> comes from the file
14269 header record (see section <A HREF="pspp.html#SEC171">18.1 File Header Record</A>). Each element corresponds to
14270 the variable declared in the respective variable record (see section <A HREF="pspp.html#SEC172">18.2 Variable Record</A>). Numeric values are given in <CODE>flt64</CODE> format; string
14271 values are literal characters string, padded on the right when
14272 necessary.
14273 </P>
14274 <P>
14275
14276 Compressed data is arranged in the following manner: the first 8-byte
14277 element in the data section is divided into a series of 1-byte command
14278 codes. These codes have meanings as described below:
14279 </P>
14280 <P>
14281
14282 </P>
14283 <DL COMPACT>
14284 <DT>0
14285 <DD>Ignored. If the program writing the system file accumulates compressed
14286 data in blocks of fixed length, 0 bytes can be used to pad out extra
14287 bytes remaining at the end of a fixed-size block.
14288 <P>
14289
14290 </P>
14291 <DT>1 through 251
14292 <DD>These values indicate that the corresponding numeric variable has the
14293 value <CODE>(<VAR>code</VAR> - <VAR>bias</VAR>)</CODE> for the case being read, where
14294 <VAR>code</VAR> is the value of the compression code and <VAR>bias</VAR> is the
14295 variable <CODE>compression_bias</CODE> from the file header. For example,
14296 code 105 with bias 100.0 (the normal value) indicates a numeric variable
14297 of value 5.
14298 <P>
14299
14300 </P>
14301 <DT>252
14302 <DD>End of file. This code may or may not appear at the end of the data
14303 stream. PSPP always outputs this code but its use is not required.
14304 <P>
14305
14306 </P>
14307 <DT>253
14308 <DD>This value indicates that the numeric or string value is not
14309 compressible. The value is stored in the 8-byte element following the
14310 current block of command bytes. If this value appears twice in a block
14311 of command bytes, then it indicates the second element following the
14312 command bytes, and so on.
14313 <P>
14314
14315 </P>
14316 <DT>254
14317 <DD>Used to indicate a string value that is all spaces.
14318 <P>
14319
14320 </P>
14321 <DT>255
14322 <DD>Used to indicate the system-missing value.
14323 </DL>
14324 <P>
14325
14326 When the end of the first 8-byte element of command bytes is reached,
14327 any blocks of non-compressible values are skipped, and the next element
14328 of command bytes is read and interpreted, until the end of the file is
14329 reached.
14330 </P>
14331 <P>
14332
14333 <A NAME="Portable File Format"></A>
14334 <HR SIZE="6">
14335 <A NAME="SEC181"></A>
14336 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
14337 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC180"> &lt; </A>]</TD>
14338 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC182"> &gt; </A>]</TD>
14339 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC170"> &lt;&lt; </A>]</TD>
14340 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
14341 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> &gt;&gt; </A>]</TD>
14342 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
14343 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
14344 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
14345 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
14346 </TR></TABLE>
14347 <H1> 19. Portable File Format </H1>
14348 <!--docid::SEC181::-->
14349 <P>
14350
14351 These days, most computers use the same internal data formats for
14352 integer and floating-point data, if one ignores little differences like
14353 big- versus little-endian byte ordering. However, occasionally it is
14354 necessary to exchange data between systems with incompatible data
14355 formats. This is what portable files are designed to do.
14356 </P>
14357 <P>
14358
14359 <STRONG>Please note:</STRONG> Although all of the following information is
14360 correct, as far as the author has been able to ascertain, it is gleaned
14361 from examination of ASCII-formatted portable files only, so some of it
14362 may be incorrect in the general case.
14363 </P>
14364 <P>
14365
14366 <TABLE BORDER="0" CELLSPACING="0">
14367 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC182">19.1 Portable File Characters</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
14368 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC183">19.2 Portable File Structure</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
14369 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC184">19.3 Portable File Header</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
14370 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC185">19.4 Version and Date Info Record</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
14371 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC186">19.5 Identification Records</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
14372 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC187">19.6 Variable Count Record</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
14373 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC188">19.7 Variable Records</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
14374 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC189">19.8 Value Label Records</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
14375 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC190">19.9 Portable File Data</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
14376 </TABLE>
14377 <P>
14378
14379 <A NAME="Portable File Characters"></A>
14380 <HR SIZE="6">
14381 <A NAME="SEC182"></A>
14382 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
14383 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &lt; </A>]</TD>
14384 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC183"> &gt; </A>]</TD>
14385 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &lt;&lt; </A>]</TD>
14386 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> Up </A>]</TD>
14387 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> &gt;&gt; </A>]</TD>
14388 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
14389 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
14390 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
14391 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
14392 </TR></TABLE>
14393 <H2> 19.1 Portable File Characters </H2>
14394 <!--docid::SEC182::-->
14395 <P>
14396
14397 Portable files are arranged as a series of lines of exactly 80
14398 characters each. Each line is terminated by a carriage-return,
14399 line-feed sequence (henceforth, &quot;newline&quot;). Newlines are not
14400 delimiters: they are only used to avoid line-length limitations existing
14401 on some operating systems.
14402 </P>
14403 <P>
14404
14405 The file must be terminated with a `<SAMP>Z</SAMP>' character. In addition, if
14406 the final line in the file does not have exactly 80 characters, then it
14407 is padded on the right with `<SAMP>Z</SAMP>' characters. (The file contents may
14408 be in any character set; the file contains a description of its own
14409 character set, as explained in the next section. Therefore, the
14410 `<SAMP>Z</SAMP>' character is not necessarily an ASCII `<SAMP>Z</SAMP>'.)
14411 </P>
14412 <P>
14413
14414 For the rest of the description of the portable file format, newlines
14415 and the trailing `<SAMP>Z</SAMP>'s will be ignored, as if they did not exist,
14416 because they are not an important part of understanding the file
14417 contents.
14418 </P>
14419 <P>
14420
14421 <A NAME="Portable File Structure"></A>
14422 <HR SIZE="6">
14423 <A NAME="SEC183"></A>
14424 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
14425 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC182"> &lt; </A>]</TD>
14426 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC184"> &gt; </A>]</TD>
14427 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &lt;&lt; </A>]</TD>
14428 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> Up </A>]</TD>
14429 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> &gt;&gt; </A>]</TD>
14430 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
14431 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
14432 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
14433 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
14434 </TR></TABLE>
14435 <H2> 19.2 Portable File Structure </H2>
14436 <!--docid::SEC183::-->
14437 <P>
14438
14439 Every portable file consists of the following records, in sequence:
14440 </P>
14441 <P>
14442
14443 <UL>
14444
14445 <LI>
14446 File header.
14447 <P>
14448
14449 </P>
14450 <LI>
14451 Version and date info.
14452 <P>
14453
14454 </P>
14455 <LI>
14456 Product identification.
14457 <P>
14458
14459 </P>
14460 <LI>
14461 Subproduct identification (optional).
14462 <P>
14463
14464 </P>
14465 <LI>
14466 Variable count.
14467 <P>
14468
14469 </P>
14470 <LI>
14471 Variables. Each variable record may optionally be followed by a
14472 missing value record and a variable label record.
14473 <P>
14474
14475 </P>
14476 <LI>
14477 Value labels (optional).
14478 <P>
14479
14480 </P>
14481 <LI>
14482 Data.
14483 </UL>
14484 <P>
14485
14486 Most records are identified by a single-character tag code. The file
14487 header and version info record do not have a tag.
14488 </P>
14489 <P>
14490
14491 Other than these single-character codes, there are three types of fields
14492 in a portable file: floating-point, integer, and string. Floating-point
14493 fields have the following format:
14494 </P>
14495 <P>
14496
14497 <UL>
14498
14499 <LI>
14500 Zero or more leading spaces.
14501 <P>
14502
14503 </P>
14504 <LI>
14505 Optional asterisk (`<SAMP>*</SAMP>'), which indicates a missing value. The
14506 asterisk must be followed by a single character, generally a period
14507 (`<SAMP>.</SAMP>'), but it appears that other characters may also be possible.
14508 This completes the specification of a missing value.
14509 <P>
14510
14511 </P>
14512 <LI>
14513 Optional minus sign (`<SAMP>-</SAMP>') to indicate a negative number.
14514 <P>
14515
14516 </P>
14517 <LI>
14518 A whole number, consisting of one or more base-30 digits: `<SAMP>0</SAMP>'
14519 through `<SAMP>9</SAMP>' plus capital letters `<SAMP>A</SAMP>' through `<SAMP>T</SAMP>'.
14520 <P>
14521
14522 </P>
14523 <LI>
14524 A fraction, consisting of a radix point (`<SAMP>.</SAMP>') followed by one or
14525 more base-30 digits (optional).
14526 <P>
14527
14528 </P>
14529 <LI>
14530 An exponent, consisting of a plus or minus sign (`<SAMP>+</SAMP>' or `<SAMP>-</SAMP>')
14531 followed by one or more base-30 digits (optional).
14532 <P>
14533
14534 </P>
14535 <LI>
14536 A forward slash (`<SAMP>/</SAMP>').
14537 </UL>
14538 <P>
14539
14540 Integer fields take form identical to floating-point fields, but they
14541 may not contain a fraction.
14542 </P>
14543 <P>
14544
14545 String fields take the form of a integer field having value <VAR>n</VAR>,
14546 followed by exactly <VAR>n</VAR> characters, which are the string content.
14547 </P>
14548 <P>
14549
14550 <A NAME="Portable File Header"></A>
14551 <HR SIZE="6">
14552 <A NAME="SEC184"></A>
14553 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
14554 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC183"> &lt; </A>]</TD>
14555 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC185"> &gt; </A>]</TD>
14556 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &lt;&lt; </A>]</TD>
14557 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> Up </A>]</TD>
14558 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> &gt;&gt; </A>]</TD>
14559 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
14560 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
14561 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
14562 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
14563 </TR></TABLE>
14564 <H2> 19.3 Portable File Header </H2>
14565 <!--docid::SEC184::-->
14566 <P>
14567
14568 Every portable file begins with a 464-byte header, consisting of a
14569 200-byte collection of vanity splash strings, followed by a 256-byte
14570 character set translation table, followed by an 8-byte tag string.
14571 </P>
14572 <P>
14573
14574 The 200-byte segment is divided into five 40-byte sections, each of
14575 which represents the string <CODE>ASCII SPSS PORT FILE</CODE> in a different
14576 character set encoding. (If the file is encoded in EBCDIC then the
14577 string is actually <CODE>EBCDIC SPSS PORT FILE</CODE>, and so on.) These
14578 strings are padded on the right with spaces in their own character set.
14579 </P>
14580 <P>
14581
14582 It appears that these strings exist only to inform those who might view
14583 the file on a screen, and that they are not parsed by SPSS products.
14584 Thus, they can be safely ignored. For those interested, the strings are
14585 supposed to be in the following character sets, in the specified order:
14586 EBCDIC, 7-bit ASCII, CDC 6-bit ASCII, 6-bit ASCII, Honeywell 6-bit
14587 ASCII.
14588 </P>
14589 <P>
14590
14591 The 256-byte segment describes a mapping from the character set used in
14592 the portable file to an arbitrary character set having characters at the
14593 following positions:
14594 </P>
14595 <P>
14596
14597 </P>
14598 <DL COMPACT>
14599 <DT>0--60
14600 <DD><P>
14601
14602 Control characters. Not important enough to describe in full here.
14603 </P>
14604 <P>
14605
14606 </P>
14607 <DT>61--63
14608 <DD><P>
14609
14610 Reserved.
14611 </P>
14612 <P>
14613
14614 </P>
14615 <DT>64--73
14616 <DD><P>
14617
14618 Digits `<SAMP>0</SAMP>' through `<SAMP>9</SAMP>'.
14619 </P>
14620 <P>
14621
14622 </P>
14623 <DT>74--99
14624 <DD><P>
14625
14626 Capital letters `<SAMP>A</SAMP>' through `<SAMP>Z</SAMP>'.
14627 </P>
14628 <P>
14629
14630 </P>
14631 <DT>100--125
14632 <DD><P>
14633
14634 Lowercase letters `<SAMP>a</SAMP>' through `<SAMP>z</SAMP>'.
14635 </P>
14636 <P>
14637
14638 </P>
14639 <DT>126
14640 <DD><P>
14641
14642 Space.
14643 </P>
14644 <P>
14645
14646 </P>
14647 <DT>127--130
14648 <DD><P>
14649
14650 Symbols <CODE>.&lt;(+</CODE>
14651 </P>
14652 <P>
14653
14654 </P>
14655 <DT>131
14656 <DD><P>
14657
14658 Solid vertical pipe.
14659 </P>
14660 <P>
14661
14662 </P>
14663 <DT>132--142
14664 <DD><P>
14665
14666 Symbols <CODE>&amp;[]!$*);^-/</CODE>
14667 </P>
14668 <P>
14669
14670 </P>
14671 <DT>143
14672 <DD><P>
14673
14674 Broken vertical pipe.
14675 </P>
14676 <P>
14677
14678 </P>
14679 <DT>144--150
14680 <DD><P>
14681
14682 Symbols <CODE>,%_&gt;</CODE>?<CODE>`:</CODE>
14683 </P>
14684 <P>
14685
14686 </P>
14687 <DT>151
14688 <DD><P>
14689
14690 British pound symbol.
14691 </P>
14692 <P>
14693
14694 </P>
14695 <DT>152--155
14696 <DD><P>
14697
14698 Symbols <CODE>@'=&quot;</CODE>.
14699 </P>
14700 <P>
14701
14702 </P>
14703 <DT>156
14704 <DD><P>
14705
14706 Less than or equal symbol.
14707 </P>
14708 <P>
14709
14710 </P>
14711 <DT>157
14712 <DD><P>
14713
14714 Empty box.
14715 </P>
14716 <P>
14717
14718 </P>
14719 <DT>158
14720 <DD><P>
14721
14722 Plus or minus.
14723 </P>
14724 <P>
14725
14726 </P>
14727 <DT>159
14728 <DD><P>
14729
14730 Filled box.
14731 </P>
14732 <P>
14733
14734 </P>
14735 <DT>160
14736 <DD><P>
14737
14738 Degree symbol.
14739 </P>
14740 <P>
14741
14742 </P>
14743 <DT>161
14744 <DD><P>
14745
14746 Dagger.
14747 </P>
14748 <P>
14749
14750 </P>
14751 <DT>162
14752 <DD><P>
14753
14754 Symbol `<SAMP>~</SAMP>'.
14755 </P>
14756 <P>
14757
14758 </P>
14759 <DT>163
14760 <DD><P>
14761
14762 En dash.
14763 </P>
14764 <P>
14765
14766 </P>
14767 <DT>164
14768 <DD><P>
14769
14770 Lower left corner box draw.
14771 </P>
14772 <P>
14773
14774 </P>
14775 <DT>165
14776 <DD><P>
14777
14778 Upper left corner box draw.
14779 </P>
14780 <P>
14781
14782 </P>
14783 <DT>166
14784 <DD><P>
14785
14786 Greater than or equal symbol.
14787 </P>
14788 <P>
14789
14790 </P>
14791 <DT>167--176
14792 <DD><P>
14793
14794 Superscript `<SAMP>0</SAMP>' through `<SAMP>9</SAMP>'.
14795 </P>
14796 <P>
14797
14798 </P>
14799 <DT>177
14800 <DD><P>
14801
14802 Lower right corner box draw.
14803 </P>
14804 <P>
14805
14806 </P>
14807 <DT>178
14808 <DD><P>
14809
14810 Upper right corner box draw.
14811 </P>
14812 <P>
14813
14814 </P>
14815 <DT>179
14816 <DD><P>
14817
14818 Not equal symbol.
14819 </P>
14820 <P>
14821
14822 </P>
14823 <DT>180
14824 <DD><P>
14825
14826 Em dash.
14827 </P>
14828 <P>
14829
14830 </P>
14831 <DT>181
14832 <DD><P>
14833
14834 Superscript `<SAMP>(</SAMP>'.
14835 </P>
14836 <P>
14837
14838 </P>
14839 <DT>182
14840 <DD><P>
14841
14842 Superscript `<SAMP>)</SAMP>'.
14843 </P>
14844 <P>
14845
14846 </P>
14847 <DT>183
14848 <DD><P>
14849
14850 Horizontal dagger (?).
14851 </P>
14852 <P>
14853
14854 </P>
14855 <DT>184--186
14856 <DD><P>
14857
14858 Symbols `<SAMP>{}\</SAMP>'.
14859 </P>
14860 <DT>187
14861 <DD><P>
14862
14863 Cents symbol.
14864 </P>
14865 <P>
14866
14867 </P>
14868 <DT>188
14869 <DD><P>
14870
14871 Centered dot, or bullet.
14872 </P>
14873 <P>
14874
14875 </P>
14876 <DT>189--255
14877 <DD><P>
14878
14879 Reserved.
14880 </DL>
14881 <P>
14882
14883 Symbols that are not defined in a particular character set are set to
14884 the same value as symbol 64; i.e., to `<SAMP>0</SAMP>'.
14885 </P>
14886 <P>
14887
14888 The 8-byte tag string consists of the exact characters <CODE>SPSSPORT</CODE>
14889 in the portable file's character set, which can be used to verify that
14890 the file is indeed a portable file.
14891 </P>
14892 <P>
14893
14894 <A NAME="Version and Date Info Record"></A>
14895 <HR SIZE="6">
14896 <A NAME="SEC185"></A>
14897 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
14898 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC184"> &lt; </A>]</TD>
14899 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC186"> &gt; </A>]</TD>
14900 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &lt;&lt; </A>]</TD>
14901 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> Up </A>]</TD>
14902 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> &gt;&gt; </A>]</TD>
14903 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
14904 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
14905 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
14906 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
14907 </TR></TABLE>
14908 <H2> 19.4 Version and Date Info Record </H2>
14909 <!--docid::SEC185::-->
14910 <P>
14911
14912 This record does not have a tag code. It has the following structure:
14913 </P>
14914 <P>
14915
14916 <UL>
14917 <LI>
14918 A single character identifying the file format version. The letter A
14919 represents version 0, and so on.
14920 <P>
14921
14922 </P>
14923 <LI>
14924 An 8-character string field giving the file creation date in the format
14925 YYYYMMDD.
14926 <P>
14927
14928 </P>
14929 <LI>
14930 A 6-character string field giving the file creation time in the format
14931 HHMMSS.
14932 </UL>
14933 <P>
14934
14935 <A NAME="Identification Records"></A>
14936 <HR SIZE="6">
14937 <A NAME="SEC186"></A>
14938 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
14939 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC185"> &lt; </A>]</TD>
14940 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC187"> &gt; </A>]</TD>
14941 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &lt;&lt; </A>]</TD>
14942 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> Up </A>]</TD>
14943 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> &gt;&gt; </A>]</TD>
14944 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
14945 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
14946 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
14947 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
14948 </TR></TABLE>
14949 <H2> 19.5 Identification Records </H2>
14950 <!--docid::SEC186::-->
14951 <P>
14952
14953 The product identification record has tag code `<SAMP>1</SAMP>'. It consists of
14954 a single string field giving the name of the product that wrote the
14955 portable file.
14956 </P>
14957 <P>
14958
14959 The subproduct identification record has tag code `<SAMP>3</SAMP>'. It
14960 consists of a single string field giving additional information on the
14961 product that wrote the portable file.
14962 </P>
14963 <P>
14964
14965 <A NAME="Variable Count Record"></A>
14966 <HR SIZE="6">
14967 <A NAME="SEC187"></A>
14968 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
14969 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC186"> &lt; </A>]</TD>
14970 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC188"> &gt; </A>]</TD>
14971 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &lt;&lt; </A>]</TD>
14972 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> Up </A>]</TD>
14973 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> &gt;&gt; </A>]</TD>
14974 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
14975 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
14976 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
14977 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
14978 </TR></TABLE>
14979 <H2> 19.6 Variable Count Record </H2>
14980 <!--docid::SEC187::-->
14981 <P>
14982
14983 The variable count record has tag code `<SAMP>4</SAMP>'. It consists of two
14984 integer fields. The first contains the number of variables in the file
14985 dictionary. The purpose of the second is unknown; it contains the value
14986 161 in all portable files examined so far.
14987 </P>
14988 <P>
14989
14990 <A NAME="Variable Records"></A>
14991 <HR SIZE="6">
14992 <A NAME="SEC188"></A>
14993 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
14994 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC187"> &lt; </A>]</TD>
14995 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC189"> &gt; </A>]</TD>
14996 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &lt;&lt; </A>]</TD>
14997 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> Up </A>]</TD>
14998 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> &gt;&gt; </A>]</TD>
14999 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
15000 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
15001 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
15002 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
15003 </TR></TABLE>
15004 <H2> 19.7 Variable Records </H2>
15005 <!--docid::SEC188::-->
15006 <P>
15007
15008 Each variable record represents a single variable. Variable records
15009 have tag code `<SAMP>7</SAMP>'. They have the following structure:
15010 </P>
15011 <P>
15012
15013 <UL>
15014
15015 <LI>
15016 Width (integer). This is 0 for a numeric variable, and a number between 1
15017 and 255 for a string variable.
15018 <P>
15019
15020 </P>
15021 <LI>
15022 Name (string). 1--8 characters long. Must be in all capitals.
15023 <P>
15024
15025 </P>
15026 <LI>
15027 Print format. This is a set of three integer fields:
15028 <P>
15029
15030 <UL>
15031
15032 <LI>
15033 Format type (see section <A HREF="pspp.html#SEC172">18.2 Variable Record</A>).
15034 <P>
15035
15036 </P>
15037 <LI>
15038 Format width. 1--40.
15039 <P>
15040
15041 </P>
15042 <LI>
15043 Number of decimal places. 1--40.
15044 </UL>
15045 <P>
15046
15047 </P>
15048 <LI>
15049 Write format. Same structure as the print format described above.
15050 </UL>
15051 <P>
15052
15053 Each variable record can optionally be followed by a missing value
15054 record, which has tag code `<SAMP>8</SAMP>'. A missing value record has one
15055 field, the missing value itself (a floating-point or string, as
15056 appropriate). Up to three of these missing value records can be used.
15057 </P>
15058 <P>
15059
15060 There is also a record for missing value ranges, which has tag code
15061 `<SAMP>B</SAMP>'. It is followed by two fields representing the range, which
15062 are floating-point or string as appropriate. If a missing value range
15063 is present, it may be followed by a single missing value record.
15064 </P>
15065 <P>
15066
15067 Tag codes `<SAMP>9</SAMP>' and `<SAMP>A</SAMP>' represent <CODE>LO THRU <VAR>x</VAR></CODE> and
15068 <CODE><VAR>x</VAR> THRU HI</CODE> ranges, respectively. Each is followed by a
15069 single field representing <VAR>x</VAR>. If one of the ranges is present, it
15070 may be followed by a single missing value record.
15071 </P>
15072 <P>
15073
15074 In addition, each variable record can optionally be followed by a
15075 variable label record, which has tag code `<SAMP>C</SAMP>'. A variable label
15076 record has one field, the variable label itself (string).
15077 </P>
15078 <P>
15079
15080 <A NAME="Value Label Records"></A>
15081 <HR SIZE="6">
15082 <A NAME="SEC189"></A>
15083 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
15084 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC188"> &lt; </A>]</TD>
15085 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC190"> &gt; </A>]</TD>
15086 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &lt;&lt; </A>]</TD>
15087 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> Up </A>]</TD>
15088 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> &gt;&gt; </A>]</TD>
15089 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
15090 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
15091 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
15092 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
15093 </TR></TABLE>
15094 <H2> 19.8 Value Label Records </H2>
15095 <!--docid::SEC189::-->
15096 <P>
15097
15098 Value label records have tag code `<SAMP>D</SAMP>'. They have the following
15099 format:
15100 </P>
15101 <P>
15102
15103 <UL>
15104 <LI>
15105 Variable count (integer).
15106 <P>
15107
15108 </P>
15109 <LI>
15110 List of variables (strings). The variable count specifies the number in
15111 the list. Variables are specified by their names. All variables must
15112 be of the same type (numeric or string).
15113 <P>
15114
15115 </P>
15116 <LI>
15117 Label count (integer).
15118 <P>
15119
15120 </P>
15121 <LI>
15122 List of (value, label) tuples. The label count specifies the number of
15123 tuples. Each tuple consists of a value, which is numeric or string as
15124 appropriate to the variables, followed by a label (string).
15125 </UL>
15126 <P>
15127
15128 <A NAME="Portable File Data"></A>
15129 <HR SIZE="6">
15130 <A NAME="SEC190"></A>
15131 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
15132 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC189"> &lt; </A>]</TD>
15133 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> &gt; </A>]</TD>
15134 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &lt;&lt; </A>]</TD>
15135 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> Up </A>]</TD>
15136 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> &gt;&gt; </A>]</TD>
15137 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
15138 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
15139 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
15140 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
15141 </TR></TABLE>
15142 <H2> 19.9 Portable File Data </H2>
15143 <!--docid::SEC190::-->
15144 <P>
15145
15146 The data record has tag code `<SAMP>F</SAMP>'. There is only one tag for all
15147 the data; thus, all the data must follow the dictionary. The data is
15148 terminated by the end-of-file marker `<SAMP>Z</SAMP>', which is not valid as the
15149 beginning of a data element.
15150 </P>
15151 <P>
15152
15153 Data elements are output in the same order as the variable records
15154 describing them. String variables are output as string fields, and
15155 numeric variables are output as floating-point fields.
15156 </P>
15157 <P>
15158
15159 <A NAME="q2c Input Format"></A>
15160 <HR SIZE="6">
15161 <A NAME="SEC191"></A>
15162 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
15163 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC190"> &lt; </A>]</TD>
15164 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC192"> &gt; </A>]</TD>
15165 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC181"> &lt;&lt; </A>]</TD>
15166 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
15167 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC195"> &gt;&gt; </A>]</TD>
15168 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
15169 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
15170 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
15171 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
15172 </TR></TABLE>
15173 <H1> 20. <CODE>q2c</CODE> Input Format </H1>
15174 <!--docid::SEC191::-->
15175 <P>
15176
15177 PSPP statistical procedures have a bizarre and somewhat irregular
15178 syntax. Despite this, a parser generator has been written that
15179 adequately addresses many of the possibilities and tries to provide
15180 hooks for the exceptional cases. This parser generator is named
15181 <CODE>q2c</CODE>.
15182 </P>
15183 <P>
15184
15185 <TABLE BORDER="0" CELLSPACING="0">
15186 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC192">20.1 Invoking q2c</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">q2c command-line syntax.</TD></TR>
15187 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC193">20.2 <CODE>q2c</CODE> Input Structure</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">High-level layout of the input file.</TD></TR>
15188 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC194">20.3 Grammar Rules</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Syntax of the grammar rules.</TD></TR>
15189 </TABLE>
15190 <P>
15191
15192 <A NAME="Invoking q2c"></A>
15193 <HR SIZE="6">
15194 <A NAME="SEC192"></A>
15195 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
15196 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> &lt; </A>]</TD>
15197 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC193"> &gt; </A>]</TD>
15198 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> &lt;&lt; </A>]</TD>
15199 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> Up </A>]</TD>
15200 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC195"> &gt;&gt; </A>]</TD>
15201 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
15202 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
15203 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
15204 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
15205 </TR></TABLE>
15206 <H2> 20.1 Invoking q2c </H2>
15207 <!--docid::SEC192::-->
15208 <P>
15209
15210 <TABLE><tr><td>&nbsp;</td><td class=example><pre>q2c <VAR>input.q</VAR> <VAR>output.c</VAR>
15211 </pre></td></tr></table><P>
15212
15213 <CODE>q2c</CODE> translates a `<SAMP>.q</SAMP>' file into a `<SAMP>.c</SAMP>' file. It takes
15214 exactly two command-line arguments, which are the input file name and
15215 output file name, respectively. <CODE>q2c</CODE> does not accept any
15216 command-line options.
15217 </P>
15218 <P>
15219
15220 <A NAME="q2c Input Structure"></A>
15221 <HR SIZE="6">
15222 <A NAME="SEC193"></A>
15223 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
15224 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC192"> &lt; </A>]</TD>
15225 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC194"> &gt; </A>]</TD>
15226 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> &lt;&lt; </A>]</TD>
15227 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> Up </A>]</TD>
15228 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC195"> &gt;&gt; </A>]</TD>
15229 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
15230 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
15231 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
15232 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
15233 </TR></TABLE>
15234 <H2> 20.2 <CODE>q2c</CODE> Input Structure </H2>
15235 <!--docid::SEC193::-->
15236 <P>
15237
15238 <CODE>q2c</CODE> input files are divided into two sections: the grammar rules
15239 and the supporting code. The <EM>grammar rules</EM>, which make up the
15240 first part of the input, are used to define the syntax of the
15241 statistical procedure to be parsed. The <EM>supporting code</EM>,
15242 following the grammar rules, are copied largely unchanged to the output
15243 file, except for certain escapes.
15244 </P>
15245 <P>
15246
15247 The most important lines in the grammar rules are used for defining
15248 procedure syntax. These lines can be prefixed with a dollar sign
15249 (`<SAMP>$</SAMP>'), which prevents Emacs' CC-mode from munging them. Besides
15250 this, a bang (`<SAMP>!</SAMP>') at the beginning of a line causes the line,
15251 minus the bang, to be written verbatim to the output file (useful for
15252 comments). As a third special case, any line that begins with the exact
15253 characters <CODE>/* *INDENT</CODE> is ignored and not written to the output.
15254 This allows <CODE>.q</CODE> files to be processed through <CODE>indent</CODE>
15255 without being munged.
15256 </P>
15257 <P>
15258
15259 The syntax of the grammar rules themselves is given in the following
15260 sections.
15261 </P>
15262 <P>
15263
15264 The supporting code is passed into the output file largely unchanged.
15265 However, the following escapes are supported. Each escape must appear
15266 on a line by itself.
15267 </P>
15268 <P>
15269
15270 </P>
15271 <DL COMPACT>
15272 <DT><CODE>/* (header) */</CODE>
15273 <DD><P>
15274
15275 Expands to a series of C <CODE>#include</CODE> directives which include the
15276 headers that are required for the parser generated by <CODE>q2c</CODE>.
15277 </P>
15278 <P>
15279
15280 </P>
15281 <DT><CODE>/* (decls <VAR>scope</VAR>) */</CODE>
15282 <DD><P>
15283
15284 Expands to C variable and data type declarations for the variables and
15285 <CODE>enum</CODE>s input and output by the <CODE>q2c</CODE> parser. <VAR>scope</VAR>
15286 must be either <CODE>local</CODE> or <CODE>global</CODE>. <CODE>local</CODE> causes the
15287 declarations to be output as function locals. <CODE>global</CODE> causes them
15288 to be declared as <CODE>static</CODE> module variables; thus, <CODE>global</CODE> is
15289 a bit of a misnomer.
15290 </P>
15291 <P>
15292
15293 </P>
15294 <DT><CODE>/* (parser) */</CODE>
15295 <DD><P>
15296
15297 Expands to the entire parser. Must be enclosed within a C function.
15298 </P>
15299 <P>
15300
15301 </P>
15302 <DT><CODE>/* (free) */</CODE>
15303 <DD><P>
15304
15305 Expands to a set of calls to the <CODE>free</CODE> function for variables
15306 declared by the parser. Only needs to be invoked if subcommands of type
15307 <CODE>string</CODE> are used in the grammar rules.
15308 </DL>
15309 <P>
15310
15311 <A NAME="Grammar Rules"></A>
15312 <HR SIZE="6">
15313 <A NAME="SEC194"></A>
15314 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
15315 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC193"> &lt; </A>]</TD>
15316 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC195"> &gt; </A>]</TD>
15317 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> &lt;&lt; </A>]</TD>
15318 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> Up </A>]</TD>
15319 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC195"> &gt;&gt; </A>]</TD>
15320 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
15321 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
15322 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
15323 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
15324 </TR></TABLE>
15325 <H2> 20.3 Grammar Rules </H2>
15326 <!--docid::SEC194::-->
15327 <P>
15328
15329 The grammar rules describe the format of the syntax that the parser
15330 generated by <CODE>q2c</CODE> will understand. The way that the grammar rules
15331 are included in <CODE>q2c</CODE> input file are described above.
15332 </P>
15333 <P>
15334
15335 The grammar rules are divided into tokens of the following types:
15336 </P>
15337 <P>
15338
15339 </P>
15340 <DL COMPACT>
15341 <DT>Identifier (<CODE>ID</CODE>)
15342 <DD><P>
15343
15344 An identifier token is a sequence of letters, digits, and underscores
15345 (`<SAMP>_</SAMP>'). Identifiers are <EM>not</EM> case-sensitive.
15346 </P>
15347 <P>
15348
15349 </P>
15350 <DT>String (<CODE>STRING</CODE>)
15351 <DD><P>
15352
15353 String tokens are initiated by a double-quote character (`<SAMP>&quot;</SAMP>') and
15354 consist of all the characters between that double quote and the next
15355 double quote, which must be on the same line as the first. Within a
15356 string, a backslash can be used as a &quot;literal escape&quot;. The only
15357 reasons to use a literal escape are to include a double quote or a
15358 backslash within a string.
15359 </P>
15360 <P>
15361
15362 </P>
15363 <DT>Special character
15364 <DD><P>
15365
15366 Other characters, other than whitespace, constitute tokens in
15367 themselves.
15368 </P>
15369 <P>
15370
15371 </DL>
15372 <P>
15373
15374 The syntax of the grammar rules is as follows:
15375 </P>
15376 <P>
15377
15378 <TABLE><tr><td>&nbsp;</td><td class=example><pre>grammar-rules ::= ID : subcommands .
15379 subcommands ::= subcommand
15380 ::= subcommands ; subcommand
15381 </pre></td></tr></table><P>
15382
15383 The syntax begins with an ID or STRING token that gives the name of the
15384 procedure to be parsed. The rest of the syntax consists of subcommands
15385 separated by semicolons (`<SAMP>;</SAMP>') and terminated with a full stop
15386 (`<SAMP>.</SAMP>').
15387 </P>
15388 <P>
15389
15390 <TABLE><tr><td>&nbsp;</td><td class=example><pre>subcommand ::= sbc-options ID sbc-defn
15391 sbc-options ::=
15392 ::= sbc-option
15393 ::= sbc-options sbc-options
15394 sbc-option ::= *
15395 ::= +
15396 sbc-defn ::= opt-prefix = specifiers
15397 ::= [ ID ] = array-sbc
15398 ::= opt-prefix = sbc-special-form
15399 opt-prefix ::=
15400 ::= ( ID )
15401 </pre></td></tr></table><P>
15402
15403 Each subcommand can be prefixed with one or more option characters. An
15404 asterisk (`<SAMP>*</SAMP>') is used to indicate the default subcommand; the
15405 keyword used for the default subcommand can be omitted in the PSPP
15406 syntax file. A plus sign (`<SAMP>+</SAMP>') is used to indicate that a
15407 subcommand can appear more than once; if it is not present then that
15408 subcommand can appear no more than once.
15409 </P>
15410 <P>
15411
15412 The subcommand name appears after the option characters.
15413 </P>
15414 <P>
15415
15416 There are three forms of subcommands. The first and most common form
15417 simply gives an equals sign (`<SAMP>=</SAMP>') and a list of specifiers, which
15418 can each be set to a single setting. The second form declares an array,
15419 which is a set of flags that can be individually turned on by the user.
15420 There are also several special forms that do not take a list of
15421 specifiers.
15422 </P>
15423 <P>
15424
15425 Arrays require an additional <CODE>ID</CODE> argument. This is used as a
15426 prefix, prepended to the variable names constructed from the
15427 specifiers. The other forms also allow an optional prefix to be
15428 specified.
15429 </P>
15430 <P>
15431
15432 <TABLE><tr><td>&nbsp;</td><td class=example><pre>array-sbc ::= alternatives
15433 ::= array-sbc , alternatives
15434 alternatives ::= ID
15435 ::= alternatives | ID
15436 </pre></td></tr></table><P>
15437
15438 An array subcommand is a set of Boolean values that can independently be
15439 turned on by the user, listed separated by commas (`<SAMP>,</SAMP>'). If an value has more
15440 than one name then these names are separated by pipes (`<SAMP>|</SAMP>').
15441 </P>
15442 <P>
15443
15444 <TABLE><tr><td>&nbsp;</td><td class=example><pre>specifiers ::= specifier
15445 ::= specifiers , specifier
15446 specifier ::= opt-id : settings
15447 opt-id ::=
15448 ::= ID
15449 </pre></td></tr></table><P>
15450
15451 Ordinary subcommands (other than arrays and special forms) require a
15452 list of specifiers. Each specifier has an optional name and a list of
15453 settings. If the name is given then a correspondingly named variable
15454 will be used to store the user's choice of setting. If no name is given
15455 then there is no way to tell which setting the user picked; in this case
15456 the settings should probably have values attached.
15457 </P>
15458 <P>
15459
15460 <TABLE><tr><td>&nbsp;</td><td class=example><pre>settings ::= setting
15461 ::= settings / setting
15462 setting ::= setting-options ID setting-value
15463 setting-options ::=
15464 ::= *
15465 ::= !
15466 ::= * !
15467 </pre></td></tr></table><P>
15468
15469 Individual settings are separated by forward slashes (`<SAMP>/</SAMP>'). Each
15470 setting can be as little as an <CODE>ID</CODE> token, but options and values
15471 can optionally be included. The `<SAMP>*</SAMP>' option means that, for this
15472 setting, the <CODE>ID</CODE> can be omitted. The `<SAMP>!</SAMP>' option means that
15473 this option is the default for its specifier.
15474 </P>
15475 <P>
15476
15477 <TABLE><tr><td>&nbsp;</td><td class=example><pre>setting-value ::=
15478 ::= ( setting-value-2 )
15479 ::= setting-value-2
15480 setting-value-2 ::= setting-value-options setting-value-type : ID
15481 setting-value-restriction
15482 setting-value-options ::=
15483 ::= *
15484 setting-value-type ::= N
15485 ::= D
15486 setting-value-restriction ::=
15487 ::= , STRING
15488 </pre></td></tr></table><P>
15489
15490 Settings may have values. If the value must be enclosed in parentheses,
15491 then enclose the value declaration in parentheses. Declare the setting
15492 type as `<SAMP>n</SAMP>' or `<SAMP>d</SAMP>' for integer or floating point type,
15493 respectively. The given <CODE>ID</CODE> is used to construct a variable name.
15494 If option `<SAMP>*</SAMP>' is given, then the value is optional; otherwise it
15495 must be specified whenever the corresponding setting is specified. A
15496 &quot;restriction&quot; can also be specified which is a string giving a C
15497 expression limiting the valid range of the value. The special escape
15498 <CODE>%s</CODE> should be used within the restriction to refer to the
15499 setting's value variable.
15500 </P>
15501 <P>
15502
15503 <TABLE><tr><td>&nbsp;</td><td class=example><pre>sbc-special-form ::= VAR
15504 ::= VARLIST varlist-options
15505 ::= INTEGER opt-list
15506 ::= DOUBLE opt-list
15507 ::= PINT
15508 ::= STRING (the literal word STRING) string-options
15509 ::= CUSTOM
15510 varlist-options ::=
15511 ::= ( STRING )
15512 opt-list ::=
15513 ::= LIST
15514 string-options ::=
15515 ::= ( STRING STRING )
15516 </pre></td></tr></table><P>
15517
15518 The special forms are of the following types:
15519 </P>
15520 <P>
15521
15522 </P>
15523 <DL COMPACT>
15524 <DT><CODE>VAR</CODE>
15525 <DD><P>
15526
15527 A single variable name.
15528 </P>
15529 <P>
15530
15531 </P>
15532 <DT><CODE>VARLIST</CODE>
15533 <DD><P>
15534
15535 A list of variables. If given, the string can be used to provide
15536 <CODE>PV_<VAR>*</VAR></CODE> options to the call to <CODE>parse_variables</CODE>.
15537 </P>
15538 <P>
15539
15540 </P>
15541 <DT><CODE>INTEGER</CODE>
15542 <DD><P>
15543
15544 A single integer value.
15545 </P>
15546 <P>
15547
15548 </P>
15549 <DT><CODE>INTEGER LIST</CODE>
15550 <DD><P>
15551
15552 A list of integers separated by spaces or commas.
15553 </P>
15554 <P>
15555
15556 </P>
15557 <DT><CODE>DOUBLE</CODE>
15558 <DD><P>
15559
15560 A single floating-point value.
15561 </P>
15562 <P>
15563
15564 </P>
15565 <DT><CODE>DOUBLE LIST</CODE>
15566 <DD><P>
15567
15568 A list of floating-point values.
15569 </P>
15570 <P>
15571
15572 </P>
15573 <DT><CODE>PINT</CODE>
15574 <DD><P>
15575
15576 A single positive integer value.
15577 </P>
15578 <P>
15579
15580 </P>
15581 <DT><CODE>STRING</CODE>
15582 <DD><P>
15583
15584 A string value. If the options are given then the first string is an
15585 expression giving a restriction on the value of the string; the second
15586 string is an error message to display when the restriction is violated.
15587 </P>
15588 <P>
15589
15590 </P>
15591 <DT><CODE>CUSTOM</CODE>
15592 <DD><P>
15593
15594 A custom function is used to parse this subcommand. The function must
15595 have prototype <CODE>int custom_<VAR>name</VAR> (void)</CODE>. It should return 0
15596 on failure (when it has already issued an appropriate diagnostic), 1 on
15597 success, or 2 if it fails and the calling function should issue a syntax
15598 error on behalf of the custom handler.
15599 </P>
15600 <P>
15601
15602 </DL>
15603 <P>
15604
15605 <A NAME="Bugs"></A>
15606 <HR SIZE="6">
15607 <A NAME="SEC195"></A>
15608 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
15609 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC194"> &lt; </A>]</TD>
15610 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC196"> &gt; </A>]</TD>
15611 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC191"> &lt;&lt; </A>]</TD>
15612 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
15613 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198"> &gt;&gt; </A>]</TD>
15614 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
15615 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
15616 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
15617 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
15618 </TR></TABLE>
15619 <H1> 21. Bugs </H1>
15620 <!--docid::SEC195::-->
15621 <P>
15622
15623 <BLOCKQUOTE>
15624 As of fvwm 0.99 there were exactly 39.342 unidentified bugs. Identified
15625 bugs have mostly been fixed, though. Since then 9.34 bugs have been
15626 fixed. Assuming that there are at least 10 unidentified bugs for every
15627 identified one, that leaves us with 39.342 - 9.34 + 10 * 9.34 = 123.422
15628 unidentified bugs. If we follow this to its logical conclusion we
15629 will have an infinite number of unidentified bugs before the number of
15630 bugs can start to diminish, at which point the program will be
15631 bug-free. Since this is a computer program infinity = 3.4028e+38 if you
15632 don't insist on double-precision. At the current rate of bug discovery
15633 we should expect to achieve this point in 3.37e+27 years. I guess I
15634 better plan on passing this thing on to my children<small>....</small>
15635 <P>
15636
15637 ---Robert Nation, <CITE>fvwm manpage</CITE>.
15638 </BLOCKQUOTE>
15639 <P>
15640
15641 <TABLE BORDER="0" CELLSPACING="0">
15642 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC196">21.1 Known bugs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Pointers to other files.</TD></TR>
15643 <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="pspp.html#SEC197">21.2 Contacting the Author</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Where to send the bug reports.</TD></TR>
15644 </TABLE>
15645 <P>
15646
15647 <A NAME="Known bugs"></A>
15648 <HR SIZE="6">
15649 <A NAME="SEC196"></A>
15650 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
15651 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC195"> &lt; </A>]</TD>
15652 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC197"> &gt; </A>]</TD>
15653 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC195"> &lt;&lt; </A>]</TD>
15654 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC195"> Up </A>]</TD>
15655 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198"> &gt;&gt; </A>]</TD>
15656 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
15657 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
15658 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
15659 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
15660 </TR></TABLE>
15661 <H2> 21.1 Known bugs </H2>
15662 <!--docid::SEC196::-->
15663 <P>
15664
15665 This is the list of known bugs in PSPP. In addition, See section <A HREF="pspp.html#SEC169">17. Not Implemented</A>, and See section <A HREF="pspp.html#SEC81">8.7.11 Functions Not Implemented</A>, for lists of bugs
15666 due to features not implemented. For known bugs in individual language
15667 features, see the documentation for that feature.
15668 </P>
15669 <P>
15670
15671 <UL>
15672 <LI>
15673 Nothing has yet been tested exhaustively. Be cautious using PSPP to
15674 make important decisions.
15675 <P>
15676
15677 </P>
15678 <LI>
15679 <CODE>make check</CODE> fails on some systems that don't like the syntax. I'm
15680 not sure why. If someone could make an attempt to track this down, it
15681 would be appreciated.
15682 <P>
15683
15684 </P>
15685 <LI>
15686 PostScript driver bugs:
15687 <P>
15688
15689 <UL>
15690 <LI>
15691 Does not support driver arguments `max-fonts-simult' or
15692 `optimize-text-size'.
15693 <P>
15694
15695 </P>
15696 <LI>
15697 Minor problems with font-encodings.
15698 <P>
15699
15700 </P>
15701 <LI>
15702 Fails to align fonts along their baselines.
15703 <P>
15704
15705 </P>
15706 <LI>
15707 Does not support certain bizarre line intersections--should
15708 never crop up in practice.
15709 <P>
15710
15711 </P>
15712 <LI>
15713 Does not gracefully substitute for existing fonts whose
15714 encodings are missing.
15715 <P>
15716
15717 </P>
15718 <LI>
15719 Does not perform italic correction or left italic correction
15720 on font changes.
15721 <P>
15722
15723 </P>
15724 <LI>
15725 Encapsulated PostScript is unimplemented.
15726 </UL>
15727 <P>
15728
15729 </P>
15730 <LI>
15731 ASCII driver bugs:
15732 <P>
15733
15734 <UL>
15735 Does not support `infinite length' or `infinite width' paper.
15736 </UL>
15737 </UL>
15738 <P>
15739
15740 See below for information on reporting bugs not listed here.
15741 </P>
15742 <P>
15743
15744 <A NAME="Contacting the Author"></A>
15745 <HR SIZE="6">
15746 <A NAME="SEC197"></A>
15747 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
15748 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC196"> &lt; </A>]</TD>
15749 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198"> &gt; </A>]</TD>
15750 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC195"> &lt;&lt; </A>]</TD>
15751 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC195"> Up </A>]</TD>
15752 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198"> &gt;&gt; </A>]</TD>
15753 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
15754 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
15755 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
15756 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
15757 </TR></TABLE>
15758 <H2> 21.2 Contacting the Author </H2>
15759 <!--docid::SEC197::-->
15760 <P>
15761
15762 The author can be contacted at e-mail address
15763 &lt;blp@gnu.org&gt;.
15764 </P>
15765 <P>
15766
15767 PSPP bug reports should be sent to
15768 &lt;bug-gnu-pspp@gnu.org&gt;.
15769 </P>
15770 <P>
15771
15772 <A NAME="Function Index"></A>
15773 <HR SIZE="6">
15774 <A NAME="SEC198"></A>
15775 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
15776 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC197"> &lt; </A>]</TD>
15777 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC199"> &gt; </A>]</TD>
15778 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC195"> &lt;&lt; </A>]</TD>
15779 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
15780 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC199"> &gt;&gt; </A>]</TD>
15781 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
15782 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
15783 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
15784 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
15785 </TR></TABLE>
15786 <H1> 22. Function Index </H1>
15787 <!--docid::SEC198::-->
15788 <table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="pspp.html#fn_A" style="text-decoration:none"><b>A</b></A>
15789 &nbsp;
15790 <A HREF="pspp.html#fn_C" style="text-decoration:none"><b>C</b></A>
15791 &nbsp;
15792 <A HREF="pspp.html#fn_D" style="text-decoration:none"><b>D</b></A>
15793 &nbsp;
15794 <A HREF="pspp.html#fn_E" style="text-decoration:none"><b>E</b></A>
15795 &nbsp;
15796 <A HREF="pspp.html#fn_I" style="text-decoration:none"><b>I</b></A>
15797 &nbsp;
15798 <A HREF="pspp.html#fn_L" style="text-decoration:none"><b>L</b></A>
15799 &nbsp;
15800 <A HREF="pspp.html#fn_M" style="text-decoration:none"><b>M</b></A>
15801 &nbsp;
15802 <A HREF="pspp.html#fn_N" style="text-decoration:none"><b>N</b></A>
15803 &nbsp;
15804 <A HREF="pspp.html#fn_P" style="text-decoration:none"><b>P</b></A>
15805 &nbsp;
15806 <A HREF="pspp.html#fn_R" style="text-decoration:none"><b>R</b></A>
15807 &nbsp;
15808 <A HREF="pspp.html#fn_S" style="text-decoration:none"><b>S</b></A>
15809 &nbsp;
15810 <A HREF="pspp.html#fn_T" style="text-decoration:none"><b>T</b></A>
15811 &nbsp;
15812 <A HREF="pspp.html#fn_U" style="text-decoration:none"><b>U</b></A>
15813 &nbsp;
15814 <A HREF="pspp.html#fn_V" style="text-decoration:none"><b>V</b></A>
15815 &nbsp;
15816 <A HREF="pspp.html#fn_X" style="text-decoration:none"><b>X</b></A>
15817 &nbsp;
15818 <A HREF="pspp.html#fn_Y" style="text-decoration:none"><b>Y</b></A>
15819 &nbsp;
15820 </td></tr></table><P></P>
15821 <TABLE border=0>
15822 <TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
15823 <TR><TD COLSPAN=3> <HR></TD></TR>
15824 <TR><TH><A NAME="fn_A"></A>A</TH><TD></TD><TD></TD></TR>
15825 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX203"><CODE>ABS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC67">8.7.2 Miscellaneous Mathematical Functions</A></TD></TR>
15826 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX214"><CODE>ACOS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
15827 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX244"><CODE>ANY</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC71">8.7.6 Set-Membership Functions</A></TD></TR>
15828 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX215"><CODE>ARCOS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
15829 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX218"><CODE>ARSIN</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
15830 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX221"><CODE>ARTAN</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
15831 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX224"><CODE>ASIN</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
15832 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX227"><CODE>ATAN</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
15833 <TR><TD COLSPAN=3> <HR></TD></TR>
15834 <TR><TH><A NAME="fn_C"></A>C</TH><TD></TD><TD></TD></TR>
15835 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX406"><CODE>CDF.xxx</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC81">8.7.11 Functions Not Implemented</A></TD></TR>
15836 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX407"><CODE>CDFNORM</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC81">8.7.11 Functions Not Implemented</A></TD></TR>
15837 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX250"><CODE>CFVAR</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
15838 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX267"><CODE>CONCAT</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15839 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX229"><CODE>COS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
15840 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX325"><CODE>CTIME.DAYS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A></TD></TR>
15841 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX328"><CODE>CTIME.HOURS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A></TD></TR>
15842 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX331"><CODE>CTIME.MINUTES</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A></TD></TR>
15843 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX334"><CODE>CTIME.SECONDS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A></TD></TR>
15844 <TR><TD COLSPAN=3> <HR></TD></TR>
15845 <TR><TH><A NAME="fn_D"></A>D</TH><TD></TD><TD></TD></TR>
15846 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX339"><CODE>DATE.DMY</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
15847 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX340"><CODE>DATE.MDY</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
15848 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX343"><CODE>DATE.MOYR</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
15849 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX346"><CODE>DATE.QYR</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
15850 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX349"><CODE>DATE.WKYR</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
15851 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX352"><CODE>DATE.YRDAY</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
15852 <TR><TD COLSPAN=3> <HR></TD></TR>
15853 <TR><TH><A NAME="fn_E"></A>E</TH><TD></TD><TD></TD></TR>
15854 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX196"><CODE>EXP</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC66">8.7.1 Advanced Mathematical Functions</A></TD></TR>
15855 <TR><TD COLSPAN=3> <HR></TD></TR>
15856 <TR><TH><A NAME="fn_I"></A>I</TH><TD></TD><TD></TD></TR>
15857 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX408"><CODE>IDF.xxx</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC81">8.7.11 Functions Not Implemented</A></TD></TR>
15858 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX269"><CODE>INDEX</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15859 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX270"><CODE>INDEX</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15860 <TR><TD COLSPAN=3> <HR></TD></TR>
15861 <TR><TH><A NAME="fn_L"></A>L</TH><TD></TD><TD></TD></TR>
15862 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX401"><CODE>LAG</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC80">8.7.10 Miscellaneous Functions</A></TD></TR>
15863 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX402"><CODE>LAG</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC80">8.7.10 Miscellaneous Functions</A></TD></TR>
15864 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX272"><CODE>LENGTH</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15865 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX198"><CODE>LG10</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC66">8.7.1 Advanced Mathematical Functions</A></TD></TR>
15866 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX199"><CODE>LN</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC66">8.7.1 Advanced Mathematical Functions</A></TD></TR>
15867 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX274"><CODE>LOWER</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15868 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX276"><CODE>LPAD</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15869 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX277"><CODE>LPAD</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15870 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX280"><CODE>LTRIM</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15871 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX281"><CODE>LTRIM</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15872 <TR><TD COLSPAN=3> <HR></TD></TR>
15873 <TR><TH><A NAME="fn_M"></A>M</TH><TD></TD><TD></TD></TR>
15874 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX252"><CODE>MAX</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
15875 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX254"><CODE>MEAN</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
15876 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX256"><CODE>MIN</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
15877 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX234"><CODE>MISSING</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC69">8.7.4 Missing-Value Functions</A></TD></TR>
15878 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX205"><CODE>MOD</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC67">8.7.2 Miscellaneous Mathematical Functions</A></TD></TR>
15879 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX207"><CODE>MOD10</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC67">8.7.2 Miscellaneous Mathematical Functions</A></TD></TR>
15880 <TR><TD COLSPAN=3> <HR></TD></TR>
15881 <TR><TH><A NAME="fn_N"></A>N</TH><TD></TD><TD></TD></TR>
15882 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX409"><CODE>NCDF.xxx</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC81">8.7.11 Functions Not Implemented</A></TD></TR>
15883 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX235"><CODE>NMISS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC69">8.7.4 Missing-Value Functions</A></TD></TR>
15884 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX241"><CODE>NORMAL</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC70">8.7.5 Pseudo-Random Number Generation Functions</A></TD></TR>
15885 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX284"><CODE>NUMBER</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15886 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX285"><CODE>NUMBER</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15887 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX236"><CODE>NVALID</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC69">8.7.4 Missing-Value Functions</A></TD></TR>
15888 <TR><TD COLSPAN=3> <HR></TD></TR>
15889 <TR><TH><A NAME="fn_P"></A>P</TH><TD></TD><TD></TD></TR>
15890 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX410"><CODE>PROBIT</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC81">8.7.11 Functions Not Implemented</A></TD></TR>
15891 <TR><TD COLSPAN=3> <HR></TD></TR>
15892 <TR><TH><A NAME="fn_R"></A>R</TH><TD></TD><TD></TD></TR>
15893 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX245"><CODE>RANGE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC71">8.7.6 Set-Membership Functions</A></TD></TR>
15894 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX287"><CODE>RINDEX</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15895 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX288"><CODE>RINDEX</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15896 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX209"><CODE>RND</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC67">8.7.2 Miscellaneous Mathematical Functions</A></TD></TR>
15897 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX291"><CODE>RPAD</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15898 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX292"><CODE>RPAD</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15899 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX295"><CODE>RTRIM</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15900 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX296"><CODE>RTRIM</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15901 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX411"><CODE>RV.xxx</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC81">8.7.11 Functions Not Implemented</A></TD></TR>
15902 <TR><TD COLSPAN=3> <HR></TD></TR>
15903 <TR><TH><A NAME="fn_S"></A>S</TH><TD></TD><TD></TD></TR>
15904 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX259"><CODE>SD</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
15905 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX231"><CODE>SIN</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
15906 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX201"><CODE>SQRT</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC66">8.7.1 Advanced Mathematical Functions</A></TD></TR>
15907 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX299"><CODE>STRING</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15908 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX302"><CODE>SUBSTR</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15909 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX303"><CODE>SUBSTR</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15910 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX261"><CODE>SUM</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
15911 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX237"><CODE>SYSMIS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC69">8.7.4 Missing-Value Functions</A></TD></TR>
15912 <TR><TD COLSPAN=3> <HR></TD></TR>
15913 <TR><TH><A NAME="fn_T"></A>T</TH><TD></TD><TD></TD></TR>
15914 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX233"><CODE>TAN</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
15915 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX319"><CODE>TIME.DAYS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC76">8.7.9.2 Functions that Produce Times</A></TD></TR>
15916 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX322"><CODE>TIME.HMS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC76">8.7.9.2 Functions that Produce Times</A></TD></TR>
15917 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX211"><CODE>TRUNC</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC67">8.7.2 Miscellaneous Mathematical Functions</A></TD></TR>
15918 <TR><TD COLSPAN=3> <HR></TD></TR>
15919 <TR><TH><A NAME="fn_U"></A>U</TH><TD></TD><TD></TD></TR>
15920 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX243"><CODE>UNIFORM</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC70">8.7.5 Pseudo-Random Number Generation Functions</A></TD></TR>
15921 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX306"><CODE>UPCASE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
15922 <TR><TD COLSPAN=3> <HR></TD></TR>
15923 <TR><TH><A NAME="fn_V"></A>V</TH><TD></TD><TD></TD></TR>
15924 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX238"><CODE>VALUE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC69">8.7.4 Missing-Value Functions</A></TD></TR>
15925 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX263"><CODE>VAR</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
15926 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX264"><CODE>VARIANCE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
15927 <TR><TD COLSPAN=3> <HR></TD></TR>
15928 <TR><TH><A NAME="fn_X"></A>X</TH><TD></TD><TD></TD></TR>
15929 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX357"><CODE>XDATE.DATE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
15930 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX361"><CODE>XDATE.HOUR</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
15931 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX364"><CODE>XDATE.JDAY(<VAR>date</VAR>)</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
15932 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX367"><CODE>XDATE.MDAY(<VAR>date</VAR>)</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
15933 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX371"><CODE>XDATE.MINUTE(<VAR>time-or-date</VAR>)</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
15934 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX374"><CODE>XDATE.MONTH(<VAR>date</VAR>)</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
15935 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX377"><CODE>XDATE.QUARTER(<VAR>date</VAR>)</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
15936 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX381"><CODE>XDATE.SECOND(<VAR>time-or-date</VAR>)</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
15937 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX384"><CODE>XDATE.TDAY(<VAR>time</VAR>)</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
15938 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX387"><CODE>XDATE.TIME(<VAR>date</VAR>)</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
15939 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX390"><CODE>XDATE.WEEK(<VAR>date</VAR>)</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
15940 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX395"><CODE>XDATE.WKDAY(<VAR>date</VAR>)</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
15941 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX398"><CODE>XDATE.YEAR</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
15942 <TR><TD COLSPAN=3> <HR></TD></TR>
15943 <TR><TH><A NAME="fn_Y"></A>Y</TH><TD></TD><TD></TD></TR>
15944 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX405"><CODE>YRMODA</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC80">8.7.10 Miscellaneous Functions</A></TD></TR>
15945 <TR><TD COLSPAN=3> <HR></TD></TR>
15946 </TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="pspp.html#fn_A" style="text-decoration:none"><b>A</b></A>
15947 &nbsp;
15948 <A HREF="pspp.html#fn_C" style="text-decoration:none"><b>C</b></A>
15949 &nbsp;
15950 <A HREF="pspp.html#fn_D" style="text-decoration:none"><b>D</b></A>
15951 &nbsp;
15952 <A HREF="pspp.html#fn_E" style="text-decoration:none"><b>E</b></A>
15953 &nbsp;
15954 <A HREF="pspp.html#fn_I" style="text-decoration:none"><b>I</b></A>
15955 &nbsp;
15956 <A HREF="pspp.html#fn_L" style="text-decoration:none"><b>L</b></A>
15957 &nbsp;
15958 <A HREF="pspp.html#fn_M" style="text-decoration:none"><b>M</b></A>
15959 &nbsp;
15960 <A HREF="pspp.html#fn_N" style="text-decoration:none"><b>N</b></A>
15961 &nbsp;
15962 <A HREF="pspp.html#fn_P" style="text-decoration:none"><b>P</b></A>
15963 &nbsp;
15964 <A HREF="pspp.html#fn_R" style="text-decoration:none"><b>R</b></A>
15965 &nbsp;
15966 <A HREF="pspp.html#fn_S" style="text-decoration:none"><b>S</b></A>
15967 &nbsp;
15968 <A HREF="pspp.html#fn_T" style="text-decoration:none"><b>T</b></A>
15969 &nbsp;
15970 <A HREF="pspp.html#fn_U" style="text-decoration:none"><b>U</b></A>
15971 &nbsp;
15972 <A HREF="pspp.html#fn_V" style="text-decoration:none"><b>V</b></A>
15973 &nbsp;
15974 <A HREF="pspp.html#fn_X" style="text-decoration:none"><b>X</b></A>
15975 &nbsp;
15976 <A HREF="pspp.html#fn_Y" style="text-decoration:none"><b>Y</b></A>
15977 &nbsp;
15978 </td></tr></table><P>
15979
15980 <A NAME="Concept Index"></A>
15981 <HR SIZE="6">
15982 <A NAME="SEC199"></A>
15983 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
15984 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198"> &lt; </A>]</TD>
15985 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC200"> &gt; </A>]</TD>
15986 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198"> &lt;&lt; </A>]</TD>
15987 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
15988 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC200"> &gt;&gt; </A>]</TD>
15989 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
15990 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
15991 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
15992 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
15993 </TR></TABLE>
15994 <H1> 23. Concept Index </H1>
15995 <!--docid::SEC199::-->
15996 <table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="pspp.html#cp_&quot;" style="text-decoration:none"><b>"</b></A>
15997 &nbsp;
15998 <A HREF="pspp.html#cp_$" style="text-decoration:none"><b>$</b></A>
15999 &nbsp;
16000 <A HREF="pspp.html#cp_&amp;" style="text-decoration:none"><b>&</b></A>
16001 &nbsp;
16002 <A HREF="pspp.html#cp_'" style="text-decoration:none"><b>'</b></A>
16003 &nbsp;
16004 <A HREF="pspp.html#cp_(" style="text-decoration:none"><b>(</b></A>
16005 &nbsp;
16006 <A HREF="pspp.html#cp_)" style="text-decoration:none"><b>)</b></A>
16007 &nbsp;
16008 <A HREF="pspp.html#cp_*" style="text-decoration:none"><b>*</b></A>
16009 &nbsp;
16010 <A HREF="pspp.html#cp_+" style="text-decoration:none"><b>+</b></A>
16011 &nbsp;
16012 <A HREF="pspp.html#cp_-" style="text-decoration:none"><b>-</b></A>
16013 &nbsp;
16014 <A HREF="pspp.html#cp_." style="text-decoration:none"><b>.</b></A>
16015 &nbsp;
16016 <A HREF="pspp.html#cp_/" style="text-decoration:none"><b>/</b></A>
16017 &nbsp;
16018 <A HREF="pspp.html#cp_0" style="text-decoration:none"><b>0</b></A>
16019 &nbsp;
16020 <A HREF="pspp.html#cp_:" style="text-decoration:none"><b>:</b></A>
16021 &nbsp;
16022 <A HREF="pspp.html#cp_&lt;" style="text-decoration:none"><b><</b></A>
16023 &nbsp;
16024 <A HREF="pspp.html#cp_=" style="text-decoration:none"><b>=</b></A>
16025 &nbsp;
16026 <A HREF="pspp.html#cp_&gt;" style="text-decoration:none"><b>></b></A>
16027 &nbsp;
16028 <A HREF="pspp.html#cp_[" style="text-decoration:none"><b>[</b></A>
16029 &nbsp;
16030 <A HREF="pspp.html#cp_|" style="text-decoration:none"><b>|</b></A>
16031 &nbsp;
16032 <A HREF="pspp.html#cp_~" style="text-decoration:none"><b>~</b></A>
16033 &nbsp;
16034 <BR>
16035 <A HREF="pspp.html#cp_A" style="text-decoration:none"><b>A</b></A>
16036 &nbsp;
16037 <A HREF="pspp.html#cp_B" style="text-decoration:none"><b>B</b></A>
16038 &nbsp;
16039 <A HREF="pspp.html#cp_C" style="text-decoration:none"><b>C</b></A>
16040 &nbsp;
16041 <A HREF="pspp.html#cp_D" style="text-decoration:none"><b>D</b></A>
16042 &nbsp;
16043 <A HREF="pspp.html#cp_E" style="text-decoration:none"><b>E</b></A>
16044 &nbsp;
16045 <A HREF="pspp.html#cp_F" style="text-decoration:none"><b>F</b></A>
16046 &nbsp;
16047 <A HREF="pspp.html#cp_G" style="text-decoration:none"><b>G</b></A>
16048 &nbsp;
16049 <A HREF="pspp.html#cp_H" style="text-decoration:none"><b>H</b></A>
16050 &nbsp;
16051 <A HREF="pspp.html#cp_I" style="text-decoration:none"><b>I</b></A>
16052 &nbsp;
16053 <A HREF="pspp.html#cp_J" style="text-decoration:none"><b>J</b></A>
16054 &nbsp;
16055 <A HREF="pspp.html#cp_K" style="text-decoration:none"><b>K</b></A>
16056 &nbsp;
16057 <A HREF="pspp.html#cp_L" style="text-decoration:none"><b>L</b></A>
16058 &nbsp;
16059 <A HREF="pspp.html#cp_M" style="text-decoration:none"><b>M</b></A>
16060 &nbsp;
16061 <A HREF="pspp.html#cp_N" style="text-decoration:none"><b>N</b></A>
16062 &nbsp;
16063 <A HREF="pspp.html#cp_O" style="text-decoration:none"><b>O</b></A>
16064 &nbsp;
16065 <A HREF="pspp.html#cp_P" style="text-decoration:none"><b>P</b></A>
16066 &nbsp;
16067 <A HREF="pspp.html#cp_Q" style="text-decoration:none"><b>Q</b></A>
16068 &nbsp;
16069 <A HREF="pspp.html#cp_R" style="text-decoration:none"><b>R</b></A>
16070 &nbsp;
16071 <A HREF="pspp.html#cp_S" style="text-decoration:none"><b>S</b></A>
16072 &nbsp;
16073 <A HREF="pspp.html#cp_T" style="text-decoration:none"><b>T</b></A>
16074 &nbsp;
16075 <A HREF="pspp.html#cp_U" style="text-decoration:none"><b>U</b></A>
16076 &nbsp;
16077 <A HREF="pspp.html#cp_V" style="text-decoration:none"><b>V</b></A>
16078 &nbsp;
16079 <A HREF="pspp.html#cp_W" style="text-decoration:none"><b>W</b></A>
16080 &nbsp;
16081 <A HREF="pspp.html#cp_X" style="text-decoration:none"><b>X</b></A>
16082 &nbsp;
16083 <A HREF="pspp.html#cp_Y" style="text-decoration:none"><b>Y</b></A>
16084 &nbsp;
16085 </td></tr></table><P></P>
16086 <TABLE border=0>
16087 <TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
16088 <TR><TD COLSPAN=3> <HR></TD></TR>
16089 <TR><TH><A NAME="cp_&quot;"></A>&quot;</TH><TD></TD><TD></TD></TR>
16090 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX63">`<SAMP>&quot;</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16091 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX135">&quot;is defined as&quot;</A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16092 <TR><TD COLSPAN=3> <HR></TD></TR>
16093 <TR><TH><A NAME="cp_$"></A>$</TH><TD></TD><TD></TD></TR>
16094 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX101"><CODE>$CASENUM</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC52">7.6.2 Variables Automatically Defined by PSPP</A></TD></TR>
16095 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX102"><CODE>$DATE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC52">7.6.2 Variables Automatically Defined by PSPP</A></TD></TR>
16096 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX103"><CODE>$JDATE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC52">7.6.2 Variables Automatically Defined by PSPP</A></TD></TR>
16097 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX104"><CODE>$LENGTH</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC52">7.6.2 Variables Automatically Defined by PSPP</A></TD></TR>
16098 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX105"><CODE>$SYSMIS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC52">7.6.2 Variables Automatically Defined by PSPP</A></TD></TR>
16099 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX106"><CODE>$TIME</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC52">7.6.2 Variables Automatically Defined by PSPP</A></TD></TR>
16100 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX107"><CODE>$WIDTH</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC52">7.6.2 Variables Automatically Defined by PSPP</A></TD></TR>
16101 <TR><TD COLSPAN=3> <HR></TD></TR>
16102 <TR><TH><A NAME="cp_&amp;"></A>&amp;</TH><TD></TD><TD></TD></TR>
16103 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX158">`<SAMP>&amp;</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16104 <TR><TD COLSPAN=3> <HR></TD></TR>
16105 <TR><TH><A NAME="cp_'"></A>'</TH><TD></TD><TD></TD></TR>
16106 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX62">`<SAMP>'</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16107 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX67">`<SAMP>'</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16108 <TR><TD COLSPAN=3> <HR></TD></TR>
16109 <TR><TH><A NAME="cp_("></A>(</TH><TD></TD><TD></TD></TR>
16110 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX193"><CODE>(</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC65">8.7 Functions</A></TD></TR>
16111 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC61">`<SAMP>( )</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC61">8.3 Grouping Operators</A></TD></TR>
16112 <TR><TD COLSPAN=3> <HR></TD></TR>
16113 <TR><TH><A NAME="cp_)"></A>)</TH><TD></TD><TD></TD></TR>
16114 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX194"><CODE>)</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC65">8.7 Functions</A></TD></TR>
16115 <TR><TD COLSPAN=3> <HR></TD></TR>
16116 <TR><TH><A NAME="cp_*"></A>*</TH><TD></TD><TD></TD></TR>
16117 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX144">`<SAMP>*</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC62">8.4 Arithmetic Operators</A></TD></TR>
16118 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX148">`<SAMP>**</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC62">8.4 Arithmetic Operators</A></TD></TR>
16119 <TR><TD COLSPAN=3> <HR></TD></TR>
16120 <TR><TH><A NAME="cp_+"></A>+</TH><TD></TD><TD></TD></TR>
16121 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX140">`<SAMP>+</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC62">8.4 Arithmetic Operators</A></TD></TR>
16122 <TR><TD COLSPAN=3> <HR></TD></TR>
16123 <TR><TH><A NAME="cp_-"></A>-</TH><TD></TD><TD></TD></TR>
16124 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX142">`<SAMP>-</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC62">8.4 Arithmetic Operators</A></TD></TR>
16125 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX150">`<SAMP>-</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC62">8.4 Arithmetic Operators</A></TD></TR>
16126 <TR><TD COLSPAN=3> <HR></TD></TR>
16127 <TR><TH><A NAME="cp_."></A>.</TH><TD></TD><TD></TD></TR>
16128 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX55">`<SAMP>.</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16129 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX78">`<SAMP>.</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16130 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX127"><CODE>.</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16131 <TR><TD COLSPAN=3> <HR></TD></TR>
16132 <TR><TH><A NAME="cp_/"></A>/</TH><TD></TD><TD></TD></TR>
16133 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX146">`<SAMP>/</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC62">8.4 Arithmetic Operators</A></TD></TR>
16134 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX23">`<TT>/pub/algorithms/c/julcal10</TT>'</A></TD><TD valign=top><A HREF="pspp.html#SEC3">3. Credits</A></TD></TR>
16135 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX41">`<TT>/usr/local/bin/</TT>'</A></TD><TD valign=top><A HREF="pspp.html#SEC5">4.1 UNIX installation</A></TD></TR>
16136 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX42">`<TT>/usr/local/info/</TT>'</A></TD><TD valign=top><A HREF="pspp.html#SEC5">4.1 UNIX installation</A></TD></TR>
16137 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX40">`<TT>/usr/local/share/pspp/</TT>'</A></TD><TD valign=top><A HREF="pspp.html#SEC5">4.1 UNIX installation</A></TD></TR>
16138 <TR><TD COLSPAN=3> <HR></TD></TR>
16139 <TR><TH><A NAME="cp_0"></A>0</TH><TD></TD><TD></TD></TR>
16140 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX71">0</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16141 <TR><TD COLSPAN=3> <HR></TD></TR>
16142 <TR><TH><A NAME="cp_:"></A>:</TH><TD></TD><TD></TD></TR>
16143 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX134"><CODE>::=</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16144 <TR><TD COLSPAN=3> <HR></TD></TR>
16145 <TR><TH><A NAME="cp_&lt;"></A>&lt;</TH><TD></TD><TD></TD></TR>
16146 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX178"><CODE>&lt;</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16147 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX175"><CODE>&lt;=</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16148 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX189"><CODE>&lt;&gt;</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16149 <TR><TD COLSPAN=3> <HR></TD></TR>
16150 <TR><TH><A NAME="cp_="></A>=</TH><TD></TD><TD></TD></TR>
16151 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX172">`<SAMP>=</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16152 <TR><TD COLSPAN=3> <HR></TD></TR>
16153 <TR><TH><A NAME="cp_&gt;"></A>&gt;</TH><TD></TD><TD></TD></TR>
16154 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX184">`<SAMP>&gt;</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16155 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX181"><CODE>&gt;=</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16156 <TR><TD COLSPAN=3> <HR></TD></TR>
16157 <TR><TH><A NAME="cp_["></A>[</TH><TD></TD><TD></TD></TR>
16158 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX84">`<SAMP>[ ]</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC46">7.2 Forming commands of tokens</A></TD></TR>
16159 <TR><TD COLSPAN=3> <HR></TD></TR>
16160 <TR><TH><A NAME="cp_|"></A>|</TH><TD></TD><TD></TD></TR>
16161 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX162">`<SAMP>|</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16162 <TR><TD COLSPAN=3> <HR></TD></TR>
16163 <TR><TH><A NAME="cp_~"></A>~</TH><TD></TD><TD></TD></TR>
16164 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX166">`<SAMP>~</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16165 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX188"><CODE>~=</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16166 <TR><TD COLSPAN=3> <HR></TD></TR>
16167 <TR><TH><A NAME="cp_A"></A>A</TH><TD></TD><TD></TD></TR>
16168 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX202">absolute value</A></TD><TD valign=top><A HREF="pspp.html#SEC67">8.7.2 Miscellaneous Mathematical Functions</A></TD></TR>
16169 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX117">active file</A></TD><TD valign=top><A HREF="pspp.html#SEC56">7.7 Files Used by PSPP</A></TD></TR>
16170 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX141">addition</A></TD><TD valign=top><A HREF="pspp.html#SEC62">8.4 Arithmetic Operators</A></TD></TR>
16171 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX157"><CODE>AND</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16172 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX212">arccosine</A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
16173 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX216">arcsine</A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
16174 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX222">arcsine</A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
16175 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX219">arctangent</A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
16176 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX225">arctangent</A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
16177 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX308">arguments, invalid</A></TD><TD valign=top><A HREF="pspp.html#SEC74">8.7.9 Time &amp; Date Functions</A></TD></TR>
16178 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX336">arguments, invalid</A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
16179 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX246">arguments, minimum valid</A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
16180 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX335">arguments, of date construction functions</A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
16181 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX353">arguments, of date extraction functions</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16182 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC62">arithmetic operators</A></TD><TD valign=top><A HREF="pspp.html#SEC62">8.4 Arithmetic Operators</A></TD></TR>
16183 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC51">attributes of variables</A></TD><TD valign=top><A HREF="pspp.html#SEC51">7.6.1 Attributes of Variables</A></TD></TR>
16184 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC3">authors</A></TD><TD valign=top><A HREF="pspp.html#SEC3">3. Credits</A></TD></TR>
16185 <TR><TD COLSPAN=3> <HR></TD></TR>
16186 <TR><TH><A NAME="cp_B"></A>B</TH><TD></TD><TD></TD></TR>
16187 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC57">Backus-Naur Form</A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16188 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC57">BNF</A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16189 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC59">Boolean</A></TD><TD valign=top><A HREF="pspp.html#SEC59">8.1 Boolean values</A></TD></TR>
16190 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX154">Boolean</A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16191 <TR><TD COLSPAN=3> <HR></TD></TR>
16192 <TR><TH><A NAME="cp_C"></A>C</TH><TD></TD><TD></TD></TR>
16193 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX304">case conversion</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16194 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX51">case-sensitivity</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16195 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX64">case-sensitivity</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16196 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX16"><CITE>Cat's Cradle</CITE></A></TD><TD valign=top><A HREF="pspp.html#SEC3">3. Credits</A></TD></TR>
16197 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX70">characters, reserved</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16198 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX248">coefficient of variation</A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
16199 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX111">command file</A></TD><TD valign=top><A HREF="pspp.html#SEC56">7.7 Files Used by PSPP</A></TD></TR>
16200 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX44">command line, options</A></TD><TD valign=top><A HREF="pspp.html#SEC38">6. Invoking PSPP</A></TD></TR>
16201 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC57">command syntax, description of</A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16202 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX85">commands, names</A></TD><TD valign=top><A HREF="pspp.html#SEC46">7.2 Forming commands of tokens</A></TD></TR>
16203 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC48">commands, ordering</A></TD><TD valign=top><A HREF="pspp.html#SEC48">7.4 Order of Commands</A></TD></TR>
16204 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX83">commands, structure</A></TD><TD valign=top><A HREF="pspp.html#SEC46">7.2 Forming commands of tokens</A></TD></TR>
16205 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX29">compiler, gcc</A></TD><TD valign=top><A HREF="pspp.html#SEC4">4. Installing PSPP</A></TD></TR>
16206 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX28">compiler, recommended</A></TD><TD valign=top><A HREF="pspp.html#SEC4">4. Installing PSPP</A></TD></TR>
16207 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX36">compiling</A></TD><TD valign=top><A HREF="pspp.html#SEC5">4.1 UNIX installation</A></TD></TR>
16208 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX265">concatenation</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16209 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC147">conditionals</A></TD><TD valign=top><A HREF="pspp.html#SEC147">14. Conditional and Looping Constructs</A></TD></TR>
16210 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX33">`<TT>config.h</TT>'</A></TD><TD valign=top><A HREF="pspp.html#SEC5">4.1 UNIX installation</A></TD></TR>
16211 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC6">configuration</A></TD><TD valign=top><A HREF="pspp.html#SEC6">5. Configuring PSPP</A></TD></TR>
16212 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX30">configure, GNU</A></TD><TD valign=top><A HREF="pspp.html#SEC5">4.1 UNIX installation</A></TD></TR>
16213 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC78">constructing dates</A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
16214 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC76">constructing times</A></TD><TD valign=top><A HREF="pspp.html#SEC76">8.7.9.2 Functions that Produce Times</A></TD></TR>
16215 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC147">control flow</A></TD><TD valign=top><A HREF="pspp.html#SEC147">14. Conditional and Looping Constructs</A></TD></TR>
16216 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC53">convention, TO</A></TD><TD valign=top><A HREF="pspp.html#SEC53">7.6.3 Lists of variable names</A></TD></TR>
16217 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX228">cosine</A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
16218 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX20">Covington, Michael A.</A></TD><TD valign=top><A HREF="pspp.html#SEC3">3. Credits</A></TD></TR>
16219 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC3">credits</A></TD><TD valign=top><A HREF="pspp.html#SEC3">3. Credits</A></TD></TR>
16220 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX399">cross-case function</A></TD><TD valign=top><A HREF="pspp.html#SEC80">8.7.10 Miscellaneous Functions</A></TD></TR>
16221 <TR><TD COLSPAN=3> <HR></TD></TR>
16222 <TR><TH><A NAME="cp_D"></A>D</TH><TD></TD><TD></TD></TR>
16223 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC83">data</A></TD><TD valign=top><A HREF="pspp.html#SEC83">9. Data Input and Output</A></TD></TR>
16224 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX114">data file</A></TD><TD valign=top><A HREF="pspp.html#SEC56">7.7 Files Used by PSPP</A></TD></TR>
16225 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC84">Data, embedding in syntax files</A></TD><TD valign=top><A HREF="pspp.html#SEC84">9.1 BEGIN DATA</A></TD></TR>
16226 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC86">data, embedding in syntax files</A></TD><TD valign=top><A HREF="pspp.html#SEC86">9.3 DATA LIST</A></TD></TR>
16227 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC87">data, fixed-format, reading</A></TD><TD valign=top><A HREF="pspp.html#SEC87">9.3.1 DATA LIST FIXED</A></TD></TR>
16228 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC86">data, reading from a file</A></TD><TD valign=top><A HREF="pspp.html#SEC86">9.3 DATA LIST</A></TD></TR>
16229 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC79">date examination</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16230 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX403">date, Julian</A></TD><TD valign=top><A HREF="pspp.html#SEC80">8.7.10 Miscellaneous Functions</A></TD></TR>
16231 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC74">dates</A></TD><TD valign=top><A HREF="pspp.html#SEC74">8.7.9 Time &amp; Date Functions</A></TD></TR>
16232 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX312">dates, concepts</A></TD><TD valign=top><A HREF="pspp.html#SEC75">8.7.9.1 How times &amp; dates are defined and represented</A></TD></TR>
16233 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC78">dates, constructing</A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
16234 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX366">dates, day of the month</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16235 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX393">dates, day of the week</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16236 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX363">dates, day of the year</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16237 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX338">dates, day-month-year</A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
16238 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX355">dates, in days</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16239 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX359">dates, in hours</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16240 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX369">dates, in minutes</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16241 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX373">dates, in months</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16242 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX376">dates, in quarters</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16243 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX379">dates, in seconds</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16244 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX394">dates, in weekdays</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16245 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX389">dates, in weeks</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16246 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX397">dates, in years</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16247 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX307">dates, legal range of</A></TD><TD valign=top><A HREF="pspp.html#SEC74">8.7.9 Time &amp; Date Functions</A></TD></TR>
16248 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX316">dates, mathematical properties of</A></TD><TD valign=top><A HREF="pspp.html#SEC75">8.7.9.1 How times &amp; dates are defined and represented</A></TD></TR>
16249 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX342">dates, month-year</A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
16250 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX345">dates, quarter-year</A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
16251 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX386">dates, time of day</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16252 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX348">dates, week-year</A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
16253 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX351">dates, year-day</A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
16254 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX365">day of the month</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16255 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX391">day of the week</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16256 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX362">day of the year</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16257 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX337">day-month-year</A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
16258 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX317">days</A></TD><TD valign=top><A HREF="pspp.html#SEC76">8.7.9.2 Functions that Produce Times</A></TD></TR>
16259 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX323">days</A></TD><TD valign=top><A HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A></TD></TR>
16260 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX354">days</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16261 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX382">days</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16262 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX46">delimiters</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16263 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC57">description of command syntax</A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16264 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX258">deviation, standard</A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
16265 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX13">distribution</A></TD><TD valign=top><A HREF="pspp.html#SEC2">2. Your rights and obligations</A></TD></TR>
16266 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX147">division</A></TD><TD valign=top><A HREF="pspp.html#SEC62">8.4 Arithmetic Operators</A></TD></TR>
16267 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX43">documentation, installing</A></TD><TD valign=top><A HREF="pspp.html#SEC5">4.1 UNIX installation</A></TD></TR>
16268 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX76">dot, terminal</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16269 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX87">dot, terminal</A></TD><TD valign=top><A HREF="pspp.html#SEC46">7.2 Forming commands of tokens</A></TD></TR>
16270 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX129">dot, terminal</A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16271 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX80">dot, terminal, changing</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16272 <TR><TD COLSPAN=3> <HR></TD></TR>
16273 <TR><TH><A NAME="cp_E"></A>E</TH><TD></TD><TD></TD></TR>
16274 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC84">Embedding data in syntax files</A></TD><TD valign=top><A HREF="pspp.html#SEC84">9.1 BEGIN DATA</A></TD></TR>
16275 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC86">embedding data in syntax files</A></TD><TD valign=top><A HREF="pspp.html#SEC86">9.3 DATA LIST</A></TD></TR>
16276 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC87">embedding fixed-format data</A></TD><TD valign=top><A HREF="pspp.html#SEC87">9.3.1 DATA LIST FIXED</A></TD></TR>
16277 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX171"><CODE>EQ</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16278 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX169">equality, testing</A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16279 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC77">examination, of times</A></TD><TD valign=top><A HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A></TD></TR>
16280 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX149">exponentiation</A></TD><TD valign=top><A HREF="pspp.html#SEC62">8.4 Arithmetic Operators</A></TD></TR>
16281 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX133"><CODE>expression</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16282 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC58">expressions, mathematical</A></TD><TD valign=top><A HREF="pspp.html#SEC58">8. Mathematical Expressions</A></TD></TR>
16283 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC79">extraction, of dates</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16284 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC77">extraction, of time</A></TD><TD valign=top><A HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A></TD></TR>
16285 <TR><TD COLSPAN=3> <HR></TD></TR>
16286 <TR><TH><A NAME="cp_F"></A>F</TH><TD></TD><TD></TD></TR>
16287 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX153">false</A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16288 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC81">features, not implemented</A></TD><TD valign=top><A HREF="pspp.html#SEC81">8.7.11 Functions Not Implemented</A></TD></TR>
16289 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX118">file, active</A></TD><TD valign=top><A HREF="pspp.html#SEC56">7.7 Files Used by PSPP</A></TD></TR>
16290 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX109">file, command</A></TD><TD valign=top><A HREF="pspp.html#SEC56">7.7 Files Used by PSPP</A></TD></TR>
16291 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX113">file, data</A></TD><TD valign=top><A HREF="pspp.html#SEC56">7.7 Files Used by PSPP</A></TD></TR>
16292 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX115">file, output</A></TD><TD valign=top><A HREF="pspp.html#SEC56">7.7 Files Used by PSPP</A></TD></TR>
16293 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX110">file, syntax file</A></TD><TD valign=top><A HREF="pspp.html#SEC56">7.7 Files Used by PSPP</A></TD></TR>
16294 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX3">files, PSPP</A></TD><TD valign=top><A HREF="pspp.html#SEC1">1. Introduction</A></TD></TR>
16295 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC87">fixed-format data, reading</A></TD><TD valign=top><A HREF="pspp.html#SEC87">9.3.1 DATA LIST FIXED</A></TD></TR>
16296 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC147">flow of control</A></TD><TD valign=top><A HREF="pspp.html#SEC147">14. Conditional and Looping Constructs</A></TD></TR>
16297 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX8">Free Software Foundation</A></TD><TD valign=top><A HREF="pspp.html#SEC1">1. Introduction</A></TD></TR>
16298 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX9">Free Software Foundation</A></TD><TD valign=top><A HREF="pspp.html#SEC2">2. Your rights and obligations</A></TD></TR>
16299 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX22">`<TT>ftp.cdrom.com</TT>'</A></TD><TD valign=top><A HREF="pspp.html#SEC3">3. Credits</A></TD></TR>
16300 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX400">function, cross-case</A></TD><TD valign=top><A HREF="pspp.html#SEC80">8.7.10 Miscellaneous Functions</A></TD></TR>
16301 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC65">functions</A></TD><TD valign=top><A HREF="pspp.html#SEC65">8.7 Functions</A></TD></TR>
16302 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC80">functions, miscellaneous</A></TD><TD valign=top><A HREF="pspp.html#SEC80">8.7.10 Miscellaneous Functions</A></TD></TR>
16303 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC69">functions, missing-value</A></TD><TD valign=top><A HREF="pspp.html#SEC69">8.7.4 Missing-Value Functions</A></TD></TR>
16304 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC81">functions, not implemented</A></TD><TD valign=top><A HREF="pspp.html#SEC81">8.7.11 Functions Not Implemented</A></TD></TR>
16305 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC72">functions, statistical</A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
16306 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC73">functions, string</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16307 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC74">functions, time &amp; date</A></TD><TD valign=top><A HREF="pspp.html#SEC74">8.7.9 Time &amp; Date Functions</A></TD></TR>
16308 <TR><TD COLSPAN=3> <HR></TD></TR>
16309 <TR><TH><A NAME="cp_G"></A>G</TH><TD></TD><TD></TD></TR>
16310 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX27">gcc</A></TD><TD valign=top><A HREF="pspp.html#SEC4">4. Installing PSPP</A></TD></TR>
16311 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX180"><CODE>GE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16312 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX11">General Public License</A></TD><TD valign=top><A HREF="pspp.html#SEC2">2. Your rights and obligations</A></TD></TR>
16313 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX7">Ghostscript</A></TD><TD valign=top><A HREF="pspp.html#SEC1">1. Introduction</A></TD></TR>
16314 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX26">GNU C compiler</A></TD><TD valign=top><A HREF="pspp.html#SEC4">4. Installing PSPP</A></TD></TR>
16315 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX31">GNU configure</A></TD><TD valign=top><A HREF="pspp.html#SEC5">4.1 UNIX installation</A></TD></TR>
16316 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX10">GNU General Public License</A></TD><TD valign=top><A HREF="pspp.html#SEC2">2. Your rights and obligations</A></TD></TR>
16317 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX12">GPL</A></TD><TD valign=top><A HREF="pspp.html#SEC2">2. Your rights and obligations</A></TD></TR>
16318 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX6">graphics</A></TD><TD valign=top><A HREF="pspp.html#SEC1">1. Introduction</A></TD></TR>
16319 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX182">greater than</A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16320 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX179">greater than or equal to</A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16321 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC61">grouping operators</A></TD><TD valign=top><A HREF="pspp.html#SEC61">8.3 Grouping Operators</A></TD></TR>
16322 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX183"><CODE>GT</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16323 <TR><TD COLSPAN=3> <HR></TD></TR>
16324 <TR><TH><A NAME="cp_H"></A>H</TH><TD></TD><TD></TD></TR>
16325 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX65">hexstrings</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16326 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX326">hours</A></TD><TD valign=top><A HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A></TD></TR>
16327 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX358">hours</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16328 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX320">hours-minutes-seconds</A></TD><TD valign=top><A HREF="pspp.html#SEC76">8.7.9.2 Functions that Produce Times</A></TD></TR>
16329 <TR><TD COLSPAN=3> <HR></TD></TR>
16330 <TR><TH><A NAME="cp_I"></A>I</TH><TD></TD><TD></TD></TR>
16331 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX48">identifiers</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16332 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX185">inequality, testing</A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16333 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC83">input</A></TD><TD valign=top><A HREF="pspp.html#SEC83">9. Data Input and Output</A></TD></TR>
16334 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC4">installation</A></TD><TD valign=top><A HREF="pspp.html#SEC4">4. Installing PSPP</A></TD></TR>
16335 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX38">installation</A></TD><TD valign=top><A HREF="pspp.html#SEC5">4.1 UNIX installation</A></TD></TR>
16336 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC5">installation, under UNIX</A></TD><TD valign=top><A HREF="pspp.html#SEC5">4.1 UNIX installation</A></TD></TR>
16337 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX122"><CODE>integer</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16338 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX59">integers</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16339 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX159">intersection, logical</A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16340 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC1">introduction</A></TD><TD valign=top><A HREF="pspp.html#SEC1">1. Introduction</A></TD></TR>
16341 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX309">invalid arguments</A></TD><TD valign=top><A HREF="pspp.html#SEC74">8.7.9 Time &amp; Date Functions</A></TD></TR>
16342 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX213">inverse cosine</A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
16343 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX217">inverse sine</A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
16344 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX223">inverse sine</A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
16345 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX220">inverse tangent</A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
16346 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX226">inverse tangent</A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
16347 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX167">inversion, logical</A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16348 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC38">invocation</A></TD><TD valign=top><A HREF="pspp.html#SEC38">6. Invoking PSPP</A></TD></TR>
16349 <TR><TD COLSPAN=3> <HR></TD></TR>
16350 <TR><TH><A NAME="cp_J"></A>J</TH><TD></TD><TD></TD></TR>
16351 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX24">`<TT>julcal.c</TT>'</A></TD><TD valign=top><A HREF="pspp.html#SEC3">3. Credits</A></TD></TR>
16352 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX25">`<TT>julcal.h</TT>'</A></TD><TD valign=top><A HREF="pspp.html#SEC3">3. Credits</A></TD></TR>
16353 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX404">Julian date</A></TD><TD valign=top><A HREF="pspp.html#SEC80">8.7.10 Miscellaneous Functions</A></TD></TR>
16354 <TR><TD COLSPAN=3> <HR></TD></TR>
16355 <TR><TH><A NAME="cp_K"></A>K</TH><TD></TD><TD></TD></TR>
16356 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX52">keywords</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16357 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX119">keywords</A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16358 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX53">keywords, reserved</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16359 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX239">Knuth</A></TD><TD valign=top><A HREF="pspp.html#SEC70">8.7.5 Pseudo-Random Number Generation Functions</A></TD></TR>
16360 <TR><TD COLSPAN=3> <HR></TD></TR>
16361 <TR><TH><A NAME="cp_L"></A>L</TH><TD></TD><TD></TD></TR>
16362 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX98">labels, value</A></TD><TD valign=top><A HREF="pspp.html#SEC51">7.6.1 Attributes of Variables</A></TD></TR>
16363 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX96">labels, variable</A></TD><TD valign=top><A HREF="pspp.html#SEC51">7.6.1 Attributes of Variables</A></TD></TR>
16364 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX82">language, command structure</A></TD><TD valign=top><A HREF="pspp.html#SEC46">7.2 Forming commands of tokens</A></TD></TR>
16365 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC45">language, lexical analysis</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16366 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX2">language, PSPP</A></TD><TD valign=top><A HREF="pspp.html#SEC1">1. Introduction</A></TD></TR>
16367 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC44">language, PSPP</A></TD><TD valign=top><A HREF="pspp.html#SEC44">7. The PSPP language</A></TD></TR>
16368 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC45">language, tokens</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16369 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX174"><CODE>LE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16370 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX176">less than</A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16371 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX173">less than or equal to</A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16372 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC45">lexemes</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16373 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC45">lexical analysis</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16374 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC2">license</A></TD><TD valign=top><A HREF="pspp.html#SEC2">2. Your rights and obligations</A></TD></TR>
16375 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX197">logarithms</A></TD><TD valign=top><A HREF="pspp.html#SEC66">8.7.1 Advanced Mathematical Functions</A></TD></TR>
16376 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX160">logical intersection</A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16377 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX168">logical inversion</A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16378 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC63">logical operators</A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16379 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX164">logical union</A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16380 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC147">loops</A></TD><TD valign=top><A HREF="pspp.html#SEC147">14. Conditional and Looping Constructs</A></TD></TR>
16381 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX177"><CODE>LT</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16382 <TR><TD COLSPAN=3> <HR></TD></TR>
16383 <TR><TH><A NAME="cp_M"></A>M</TH><TD></TD><TD></TD></TR>
16384 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX32">`<TT>Makefile</TT>'</A></TD><TD valign=top><A HREF="pspp.html#SEC5">4.1 UNIX installation</A></TD></TR>
16385 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX35">makefile</A></TD><TD valign=top><A HREF="pspp.html#SEC5">4.1 UNIX installation</A></TD></TR>
16386 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC58">mathematical expressions</A></TD><TD valign=top><A HREF="pspp.html#SEC58">8. Mathematical Expressions</A></TD></TR>
16387 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX190">mathematics</A></TD><TD valign=top><A HREF="pspp.html#SEC65">8.7 Functions</A></TD></TR>
16388 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC66">mathematics, advanced</A></TD><TD valign=top><A HREF="pspp.html#SEC66">8.7.1 Advanced Mathematical Functions</A></TD></TR>
16389 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX315">mathematics, applied to times &amp; dates</A></TD><TD valign=top><A HREF="pspp.html#SEC75">8.7.9.1 How times &amp; dates are defined and represented</A></TD></TR>
16390 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC67">mathematics, miscellaneous</A></TD><TD valign=top><A HREF="pspp.html#SEC67">8.7.2 Miscellaneous Mathematical Functions</A></TD></TR>
16391 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX251">maximum</A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
16392 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX253">mean</A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
16393 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC71">membership, of set</A></TD><TD valign=top><A HREF="pspp.html#SEC71">8.7.6 Set-Membership Functions</A></TD></TR>
16394 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX255">minimum</A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
16395 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX247">minimum valid number of arguments</A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
16396 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX15">Minton, Claire</A></TD><TD valign=top><A HREF="pspp.html#SEC3">3. Credits</A></TD></TR>
16397 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX329">minutes</A></TD><TD valign=top><A HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A></TD></TR>
16398 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX368">minutes</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16399 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC49">missing values</A></TD><TD valign=top><A HREF="pspp.html#SEC49">7.5 Handling missing observations</A></TD></TR>
16400 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX93">missing values</A></TD><TD valign=top><A HREF="pspp.html#SEC51">7.6.1 Attributes of Variables</A></TD></TR>
16401 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC69">missing values</A></TD><TD valign=top><A HREF="pspp.html#SEC69">8.7.4 Missing-Value Functions</A></TD></TR>
16402 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX204">modulus</A></TD><TD valign=top><A HREF="pspp.html#SEC67">8.7.2 Miscellaneous Mathematical Functions</A></TD></TR>
16403 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX206">modulus, by 10</A></TD><TD valign=top><A HREF="pspp.html#SEC67">8.7.2 Miscellaneous Mathematical Functions</A></TD></TR>
16404 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX341">month-year</A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
16405 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX372">months</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16406 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX145">multiplication</A></TD><TD valign=top><A HREF="pspp.html#SEC62">8.4 Arithmetic Operators</A></TD></TR>
16407 <TR><TD COLSPAN=3> <HR></TD></TR>
16408 <TR><TH><A NAME="cp_N"></A>N</TH><TD></TD><TD></TD></TR>
16409 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX195">names, of functions</A></TD><TD valign=top><A HREF="pspp.html#SEC65">8.7 Functions</A></TD></TR>
16410 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX50">names, variable</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16411 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX187"><CODE>NE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16412 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX151">negation</A></TD><TD valign=top><A HREF="pspp.html#SEC62">8.4 Arithmetic Operators</A></TD></TR>
16413 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX131">nonterminals</A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16414 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX165"><CODE>NOT</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16415 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC81">not implemented</A></TD><TD valign=top><A HREF="pspp.html#SEC81">8.7.11 Functions Not Implemented</A></TD></TR>
16416 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX121"><CODE>number</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16417 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX58">numbers</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16418 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX282">numbers, converting from strings</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16419 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX298">numbers, converting to strings</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16420 <TR><TD COLSPAN=3> <HR></TD></TR>
16421 <TR><TH><A NAME="cp_O"></A>O</TH><TD></TD><TD></TD></TR>
16422 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC2">obligations, your</A></TD><TD valign=top><A HREF="pspp.html#SEC2">2. Your rights and obligations</A></TD></TR>
16423 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC82">operations, order of</A></TD><TD valign=top><A HREF="pspp.html#SEC82">8.8 Operator Precedence</A></TD></TR>
16424 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC82">operator precedence</A></TD><TD valign=top><A HREF="pspp.html#SEC82">8.8 Operator Precedence</A></TD></TR>
16425 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX74">operators</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16426 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX125">operators</A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16427 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX191">operators</A></TD><TD valign=top><A HREF="pspp.html#SEC65">8.7 Functions</A></TD></TR>
16428 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC62">operators, arithmetic</A></TD><TD valign=top><A HREF="pspp.html#SEC62">8.4 Arithmetic Operators</A></TD></TR>
16429 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC61">operators, grouping</A></TD><TD valign=top><A HREF="pspp.html#SEC61">8.3 Grouping Operators</A></TD></TR>
16430 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC63">operators, logical</A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16431 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX45">options, command-line</A></TD><TD valign=top><A HREF="pspp.html#SEC38">6. Invoking PSPP</A></TD></TR>
16432 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX161"><CODE>OR</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16433 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC48">order of commands</A></TD><TD valign=top><A HREF="pspp.html#SEC48">7.4 Order of Commands</A></TD></TR>
16434 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC82">order of operations</A></TD><TD valign=top><A HREF="pspp.html#SEC82">8.8 Operator Precedence</A></TD></TR>
16435 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC83">output</A></TD><TD valign=top><A HREF="pspp.html#SEC83">9. Data Input and Output</A></TD></TR>
16436 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX116">output file</A></TD><TD valign=top><A HREF="pspp.html#SEC56">7.7 Files Used by PSPP</A></TD></TR>
16437 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX4">output, PSPP</A></TD><TD valign=top><A HREF="pspp.html#SEC1">1. Introduction</A></TD></TR>
16438 <TR><TD COLSPAN=3> <HR></TD></TR>
16439 <TR><TH><A NAME="cp_P"></A>P</TH><TD></TD><TD></TD></TR>
16440 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX289">padding strings</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16441 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC61">parentheses</A></TD><TD valign=top><A HREF="pspp.html#SEC61">8.3 Grouping Operators</A></TD></TR>
16442 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX192">parentheses</A></TD><TD valign=top><A HREF="pspp.html#SEC65">8.7 Functions</A></TD></TR>
16443 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX56">period</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16444 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX77">period</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16445 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX19">Pfaff, Ben</A></TD><TD valign=top><A HREF="pspp.html#SEC3">3. Credits</A></TD></TR>
16446 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX69">portability</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16447 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX5">PostScript</A></TD><TD valign=top><A HREF="pspp.html#SEC1">1. Introduction</A></TD></TR>
16448 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC82">precedence, operator</A></TD><TD valign=top><A HREF="pspp.html#SEC82">8.8 Operator Precedence</A></TD></TR>
16449 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX34">`<TT>pref.h</TT>'</A></TD><TD valign=top><A HREF="pspp.html#SEC5">4.1 UNIX installation</A></TD></TR>
16450 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX99">print format</A></TD><TD valign=top><A HREF="pspp.html#SEC51">7.6.1 Attributes of Variables</A></TD></TR>
16451 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX130">productions</A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16452 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX136">productions</A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16453 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC70">pseudo-random numbers (see random numbers)</A></TD><TD valign=top><A HREF="pspp.html#SEC70">8.7.5 Pseudo-Random Number Generation Functions</A></TD></TR>
16454 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX1">PSPP language</A></TD><TD valign=top><A HREF="pspp.html#SEC1">1. Introduction</A></TD></TR>
16455 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX81">PSPP, command structure</A></TD><TD valign=top><A HREF="pspp.html#SEC46">7.2 Forming commands of tokens</A></TD></TR>
16456 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC6">PSPP, configuring</A></TD><TD valign=top><A HREF="pspp.html#SEC6">5. Configuring PSPP</A></TD></TR>
16457 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC4">PSPP, installing</A></TD><TD valign=top><A HREF="pspp.html#SEC4">4. Installing PSPP</A></TD></TR>
16458 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX39">PSPP, installing</A></TD><TD valign=top><A HREF="pspp.html#SEC5">4.1 UNIX installation</A></TD></TR>
16459 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC38">PSPP, invoking</A></TD><TD valign=top><A HREF="pspp.html#SEC38">6. Invoking PSPP</A></TD></TR>
16460 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC44">PSPP, language</A></TD><TD valign=top><A HREF="pspp.html#SEC44">7. The PSPP language</A></TD></TR>
16461 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX73">punctuation</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16462 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX126">punctuators</A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16463 <TR><TD COLSPAN=3> <HR></TD></TR>
16464 <TR><TH><A NAME="cp_Q"></A>Q</TH><TD></TD><TD></TD></TR>
16465 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX344">quarter-year</A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
16466 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX375">quarters</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16467 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX18">quotations</A></TD><TD valign=top><A HREF="pspp.html#SEC3">3. Credits</A></TD></TR>
16468 <TR><TD COLSPAN=3> <HR></TD></TR>
16469 <TR><TH><A NAME="cp_R"></A>R</TH><TD></TD><TD></TD></TR>
16470 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC70">random numbers</A></TD><TD valign=top><A HREF="pspp.html#SEC70">8.7.5 Pseudo-Random Number Generation Functions</A></TD></TR>
16471 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX240">random numbers, normally-distributed</A></TD><TD valign=top><A HREF="pspp.html#SEC70">8.7.5 Pseudo-Random Number Generation Functions</A></TD></TR>
16472 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX242">random numbers, uniformly-distributed</A></TD><TD valign=top><A HREF="pspp.html#SEC70">8.7.5 Pseudo-Random Number Generation Functions</A></TD></TR>
16473 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC86">reading data from a file</A></TD><TD valign=top><A HREF="pspp.html#SEC86">9.3 DATA LIST</A></TD></TR>
16474 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC87">reading fixed-format data</A></TD><TD valign=top><A HREF="pspp.html#SEC87">9.3.1 DATA LIST FIXED</A></TD></TR>
16475 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX60">reals</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16476 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX14">redistribution</A></TD><TD valign=top><A HREF="pspp.html#SEC2">2. Your rights and obligations</A></TD></TR>
16477 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX54">reserved keywords</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16478 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC2">rights, your</A></TD><TD valign=top><A HREF="pspp.html#SEC2">2. Your rights and obligations</A></TD></TR>
16479 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX208">rounding</A></TD><TD valign=top><A HREF="pspp.html#SEC67">8.7.2 Miscellaneous Mathematical Functions</A></TD></TR>
16480 <TR><TD COLSPAN=3> <HR></TD></TR>
16481 <TR><TH><A NAME="cp_S"></A>S</TH><TD></TD><TD></TD></TR>
16482 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX268">searching strings</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16483 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX332">seconds</A></TD><TD valign=top><A HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A></TD></TR>
16484 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX378">seconds</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16485 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX37">self-tests, running</A></TD><TD valign=top><A HREF="pspp.html#SEC5">4.1 UNIX installation</A></TD></TR>
16486 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC71">set membership</A></TD><TD valign=top><A HREF="pspp.html#SEC71">8.7.6 Set-Membership Functions</A></TD></TR>
16487 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX230">sine</A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
16488 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX200">square roots</A></TD><TD valign=top><A HREF="pspp.html#SEC66">8.7.1 Advanced Mathematical Functions</A></TD></TR>
16489 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX257">standard deviation</A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
16490 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX138">start symbol</A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16491 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC72">statistics</A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
16492 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX123"><CODE>string</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16493 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC73">string functions</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16494 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX61">strings</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16495 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX273">strings, case of</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16496 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX305">strings, case of</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16497 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX266">strings, concatenation of</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16498 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX297">strings, converting from numbers</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16499 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX283">strings, converting to numbers</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16500 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX271">strings, finding length of</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16501 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX275">strings, padding</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16502 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX290">strings, padding</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16503 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX286">strings, searching backwards</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16504 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX301">strings, taking substrings of</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16505 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX278">strings, trimming</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16506 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX293">strings, trimming</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16507 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX86">subcommands</A></TD><TD valign=top><A HREF="pspp.html#SEC46">7.2 Forming commands of tokens</A></TD></TR>
16508 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX300">substrings</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16509 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX143">subtraction</A></TD><TD valign=top><A HREF="pspp.html#SEC62">8.4 Arithmetic Operators</A></TD></TR>
16510 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX260">sum</A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
16511 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX139">symbol, start</A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16512 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX112">syntax file</A></TD><TD valign=top><A HREF="pspp.html#SEC56">7.7 Files Used by PSPP</A></TD></TR>
16513 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC52">system variables</A></TD><TD valign=top><A HREF="pspp.html#SEC52">7.6.2 Variables Automatically Defined by PSPP</A></TD></TR>
16514 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX156">system-missing</A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16515 <TR><TD COLSPAN=3> <HR></TD></TR>
16516 <TR><TH><A NAME="cp_T"></A>T</TH><TD></TD><TD></TD></TR>
16517 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX232">tangent</A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
16518 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX75">terminal dot</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16519 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX88">terminal dot</A></TD><TD valign=top><A HREF="pspp.html#SEC46">7.2 Forming commands of tokens</A></TD></TR>
16520 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX128">terminal dot</A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16521 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX79">terminal dot, changing</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16522 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX120">terminals</A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16523 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX137">terminals and nonterminals, differences</A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16524 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX170">testing for equality</A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16525 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX186">testing for inequality</A></TD><TD valign=top><A HREF="pspp.html#SEC64">8.6 Relational Operators</A></TD></TR>
16526 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX385">time</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16527 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC77">time examination</A></TD><TD valign=top><A HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A></TD></TR>
16528 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX310">time, concepts</A></TD><TD valign=top><A HREF="pspp.html#SEC75">8.7.9.1 How times &amp; dates are defined and represented</A></TD></TR>
16529 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX318">time, in days</A></TD><TD valign=top><A HREF="pspp.html#SEC76">8.7.9.2 Functions that Produce Times</A></TD></TR>
16530 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX324">time, in days</A></TD><TD valign=top><A HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A></TD></TR>
16531 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX356">time, in days</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16532 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX327">time, in hours</A></TD><TD valign=top><A HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A></TD></TR>
16533 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX360">time, in hours</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16534 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX321">time, in hours-minutes-seconds</A></TD><TD valign=top><A HREF="pspp.html#SEC76">8.7.9.2 Functions that Produce Times</A></TD></TR>
16535 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX330">time, in minutes</A></TD><TD valign=top><A HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A></TD></TR>
16536 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX370">time, in minutes</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16537 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX333">time, in seconds</A></TD><TD valign=top><A HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A></TD></TR>
16538 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX380">time, in seconds</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16539 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX313">time, instants of</A></TD><TD valign=top><A HREF="pspp.html#SEC75">8.7.9.1 How times &amp; dates are defined and represented</A></TD></TR>
16540 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX311">time, intervals</A></TD><TD valign=top><A HREF="pspp.html#SEC75">8.7.9.1 How times &amp; dates are defined and represented</A></TD></TR>
16541 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC77">time, lengths of</A></TD><TD valign=top><A HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A></TD></TR>
16542 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX314">time, mathematical properties of</A></TD><TD valign=top><A HREF="pspp.html#SEC75">8.7.9.1 How times &amp; dates are defined and represented</A></TD></TR>
16543 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC74">times</A></TD><TD valign=top><A HREF="pspp.html#SEC74">8.7.9 Time &amp; Date Functions</A></TD></TR>
16544 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC76">times, constructing</A></TD><TD valign=top><A HREF="pspp.html#SEC76">8.7.9.2 Functions that Produce Times</A></TD></TR>
16545 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX383">times, in days</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16546 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX108"><CODE>TO</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC53">7.6.3 Lists of variable names</A></TD></TR>
16547 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC53">TO convention</A></TD><TD valign=top><A HREF="pspp.html#SEC53">7.6.3 Lists of variable names</A></TD></TR>
16548 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC45">tokens</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16549 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC68">trigonometry</A></TD><TD valign=top><A HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A></TD></TR>
16550 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX152">true</A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16551 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX210">truncation</A></TD><TD valign=top><A HREF="pspp.html#SEC67">8.7.2 Miscellaneous Mathematical Functions</A></TD></TR>
16552 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX90">type of variables</A></TD><TD valign=top><A HREF="pspp.html#SEC51">7.6.1 Attributes of Variables</A></TD></TR>
16553 <TR><TD COLSPAN=3> <HR></TD></TR>
16554 <TR><TH><A NAME="cp_U"></A>U</TH><TD></TD><TD></TD></TR>
16555 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX163">union, logical</A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16556 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC5">UNIX, installing PSPP under</A></TD><TD valign=top><A HREF="pspp.html#SEC5">4.1 UNIX installation</A></TD></TR>
16557 <TR><TD COLSPAN=3> <HR></TD></TR>
16558 <TR><TH><A NAME="cp_V"></A>V</TH><TD></TD><TD></TD></TR>
16559 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX97">value labels</A></TD><TD valign=top><A HREF="pspp.html#SEC51">7.6.1 Attributes of Variables</A></TD></TR>
16560 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC59">values, Boolean</A></TD><TD valign=top><A HREF="pspp.html#SEC59">8.1 Boolean values</A></TD></TR>
16561 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC49">values, missing</A></TD><TD valign=top><A HREF="pspp.html#SEC49">7.5 Handling missing observations</A></TD></TR>
16562 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX94">values, missing</A></TD><TD valign=top><A HREF="pspp.html#SEC51">7.6.1 Attributes of Variables</A></TD></TR>
16563 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC69">values, missing</A></TD><TD valign=top><A HREF="pspp.html#SEC69">8.7.4 Missing-Value Functions</A></TD></TR>
16564 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX155">values, system-missing</A></TD><TD valign=top><A HREF="pspp.html#SEC63">8.5 Logical Operators</A></TD></TR>
16565 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX21">Van Zandt, James</A></TD><TD valign=top><A HREF="pspp.html#SEC3">3. Credits</A></TD></TR>
16566 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX132"><CODE>var-list</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16567 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX124"><CODE>var-name</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A></TD></TR>
16568 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX95">variable labels</A></TD><TD valign=top><A HREF="pspp.html#SEC51">7.6.1 Attributes of Variables</A></TD></TR>
16569 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX49">variable names</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16570 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX57">variable names, ending with period</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16571 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC50">variables</A></TD><TD valign=top><A HREF="pspp.html#SEC50">7.6 Variables</A></TD></TR>
16572 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC51">variables, attributes of</A></TD><TD valign=top><A HREF="pspp.html#SEC51">7.6.1 Attributes of Variables</A></TD></TR>
16573 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC52">variables, system</A></TD><TD valign=top><A HREF="pspp.html#SEC52">7.6.2 Variables Automatically Defined by PSPP</A></TD></TR>
16574 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX89">variables, type</A></TD><TD valign=top><A HREF="pspp.html#SEC51">7.6.1 Attributes of Variables</A></TD></TR>
16575 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX91">variables, width</A></TD><TD valign=top><A HREF="pspp.html#SEC51">7.6.1 Attributes of Variables</A></TD></TR>
16576 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX262">variance</A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
16577 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX249">variation, coefficient of</A></TD><TD valign=top><A HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A></TD></TR>
16578 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX17">Vonnegut, Kurt, Jr.</A></TD><TD valign=top><A HREF="pspp.html#SEC3">3. Credits</A></TD></TR>
16579 <TR><TD COLSPAN=3> <HR></TD></TR>
16580 <TR><TH><A NAME="cp_W"></A>W</TH><TD></TD><TD></TD></TR>
16581 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX388">week</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16582 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX347">week-year</A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
16583 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX392">weekday</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16584 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX47">whitespace</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16585 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX68">whitespace</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16586 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX72">whitespace</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16587 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX279">whitespace, trimming</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16588 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX294">whitespace, trimming</A></TD><TD valign=top><A HREF="pspp.html#SEC73">8.7.8 String Functions</A></TD></TR>
16589 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX92">width of variables</A></TD><TD valign=top><A HREF="pspp.html#SEC51">7.6.1 Attributes of Variables</A></TD></TR>
16590 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX100">write format</A></TD><TD valign=top><A HREF="pspp.html#SEC51">7.6.1 Attributes of Variables</A></TD></TR>
16591 <TR><TD COLSPAN=3> <HR></TD></TR>
16592 <TR><TH><A NAME="cp_X"></A>X</TH><TD></TD><TD></TD></TR>
16593 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX66">`<SAMP>X'</SAMP>'</A></TD><TD valign=top><A HREF="pspp.html#SEC45">7.1 Tokens</A></TD></TR>
16594 <TR><TD COLSPAN=3> <HR></TD></TR>
16595 <TR><TH><A NAME="cp_Y"></A>Y</TH><TD></TD><TD></TD></TR>
16596 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX350">year-day</A></TD><TD valign=top><A HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A></TD></TR>
16597 <TR><TD></TD><TD valign=top><A HREF="pspp.html#IDX396">years</A></TD><TD valign=top><A HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A></TD></TR>
16598 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC2">your rights and obligations</A></TD><TD valign=top><A HREF="pspp.html#SEC2">2. Your rights and obligations</A></TD></TR>
16599 <TR><TD COLSPAN=3> <HR></TD></TR>
16600 </TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="pspp.html#cp_&quot;" style="text-decoration:none"><b>"</b></A>
16601 &nbsp;
16602 <A HREF="pspp.html#cp_$" style="text-decoration:none"><b>$</b></A>
16603 &nbsp;
16604 <A HREF="pspp.html#cp_&amp;" style="text-decoration:none"><b>&</b></A>
16605 &nbsp;
16606 <A HREF="pspp.html#cp_'" style="text-decoration:none"><b>'</b></A>
16607 &nbsp;
16608 <A HREF="pspp.html#cp_(" style="text-decoration:none"><b>(</b></A>
16609 &nbsp;
16610 <A HREF="pspp.html#cp_)" style="text-decoration:none"><b>)</b></A>
16611 &nbsp;
16612 <A HREF="pspp.html#cp_*" style="text-decoration:none"><b>*</b></A>
16613 &nbsp;
16614 <A HREF="pspp.html#cp_+" style="text-decoration:none"><b>+</b></A>
16615 &nbsp;
16616 <A HREF="pspp.html#cp_-" style="text-decoration:none"><b>-</b></A>
16617 &nbsp;
16618 <A HREF="pspp.html#cp_." style="text-decoration:none"><b>.</b></A>
16619 &nbsp;
16620 <A HREF="pspp.html#cp_/" style="text-decoration:none"><b>/</b></A>
16621 &nbsp;
16622 <A HREF="pspp.html#cp_0" style="text-decoration:none"><b>0</b></A>
16623 &nbsp;
16624 <A HREF="pspp.html#cp_:" style="text-decoration:none"><b>:</b></A>
16625 &nbsp;
16626 <A HREF="pspp.html#cp_&lt;" style="text-decoration:none"><b><</b></A>
16627 &nbsp;
16628 <A HREF="pspp.html#cp_=" style="text-decoration:none"><b>=</b></A>
16629 &nbsp;
16630 <A HREF="pspp.html#cp_&gt;" style="text-decoration:none"><b>></b></A>
16631 &nbsp;
16632 <A HREF="pspp.html#cp_[" style="text-decoration:none"><b>[</b></A>
16633 &nbsp;
16634 <A HREF="pspp.html#cp_|" style="text-decoration:none"><b>|</b></A>
16635 &nbsp;
16636 <A HREF="pspp.html#cp_~" style="text-decoration:none"><b>~</b></A>
16637 &nbsp;
16638 <BR>
16639 <A HREF="pspp.html#cp_A" style="text-decoration:none"><b>A</b></A>
16640 &nbsp;
16641 <A HREF="pspp.html#cp_B" style="text-decoration:none"><b>B</b></A>
16642 &nbsp;
16643 <A HREF="pspp.html#cp_C" style="text-decoration:none"><b>C</b></A>
16644 &nbsp;
16645 <A HREF="pspp.html#cp_D" style="text-decoration:none"><b>D</b></A>
16646 &nbsp;
16647 <A HREF="pspp.html#cp_E" style="text-decoration:none"><b>E</b></A>
16648 &nbsp;
16649 <A HREF="pspp.html#cp_F" style="text-decoration:none"><b>F</b></A>
16650 &nbsp;
16651 <A HREF="pspp.html#cp_G" style="text-decoration:none"><b>G</b></A>
16652 &nbsp;
16653 <A HREF="pspp.html#cp_H" style="text-decoration:none"><b>H</b></A>
16654 &nbsp;
16655 <A HREF="pspp.html#cp_I" style="text-decoration:none"><b>I</b></A>
16656 &nbsp;
16657 <A HREF="pspp.html#cp_J" style="text-decoration:none"><b>J</b></A>
16658 &nbsp;
16659 <A HREF="pspp.html#cp_K" style="text-decoration:none"><b>K</b></A>
16660 &nbsp;
16661 <A HREF="pspp.html#cp_L" style="text-decoration:none"><b>L</b></A>
16662 &nbsp;
16663 <A HREF="pspp.html#cp_M" style="text-decoration:none"><b>M</b></A>
16664 &nbsp;
16665 <A HREF="pspp.html#cp_N" style="text-decoration:none"><b>N</b></A>
16666 &nbsp;
16667 <A HREF="pspp.html#cp_O" style="text-decoration:none"><b>O</b></A>
16668 &nbsp;
16669 <A HREF="pspp.html#cp_P" style="text-decoration:none"><b>P</b></A>
16670 &nbsp;
16671 <A HREF="pspp.html#cp_Q" style="text-decoration:none"><b>Q</b></A>
16672 &nbsp;
16673 <A HREF="pspp.html#cp_R" style="text-decoration:none"><b>R</b></A>
16674 &nbsp;
16675 <A HREF="pspp.html#cp_S" style="text-decoration:none"><b>S</b></A>
16676 &nbsp;
16677 <A HREF="pspp.html#cp_T" style="text-decoration:none"><b>T</b></A>
16678 &nbsp;
16679 <A HREF="pspp.html#cp_U" style="text-decoration:none"><b>U</b></A>
16680 &nbsp;
16681 <A HREF="pspp.html#cp_V" style="text-decoration:none"><b>V</b></A>
16682 &nbsp;
16683 <A HREF="pspp.html#cp_W" style="text-decoration:none"><b>W</b></A>
16684 &nbsp;
16685 <A HREF="pspp.html#cp_X" style="text-decoration:none"><b>X</b></A>
16686 &nbsp;
16687 <A HREF="pspp.html#cp_Y" style="text-decoration:none"><b>Y</b></A>
16688 &nbsp;
16689 </td></tr></table><P>
16690
16691 <A NAME="Command Index"></A>
16692 <HR SIZE="6">
16693 <A NAME="SEC200"></A>
16694 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
16695 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC199"> &lt; </A>]</TD>
16696 <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
16697 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC199"> &lt;&lt; </A>]</TD>
16698 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> Up </A>]</TD>
16699 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top"> &gt;&gt; </A>]</TD>
16700 <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
16701 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
16702 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
16703 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
16704 </TR></TABLE>
16705 <H1> 24. Command Index </H1>
16706 <!--docid::SEC200::-->
16707 <table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="pspp.html#vr_*" style="text-decoration:none"><b>*</b></A>
16708 &nbsp;
16709 <A HREF="pspp.html#vr_@" style="text-decoration:none"><b>@</b></A>
16710 &nbsp;
16711 <BR>
16712 <A HREF="pspp.html#vr_A" style="text-decoration:none"><b>A</b></A>
16713 &nbsp;
16714 <A HREF="pspp.html#vr_B" style="text-decoration:none"><b>B</b></A>
16715 &nbsp;
16716 <A HREF="pspp.html#vr_C" style="text-decoration:none"><b>C</b></A>
16717 &nbsp;
16718 <A HREF="pspp.html#vr_D" style="text-decoration:none"><b>D</b></A>
16719 &nbsp;
16720 <A HREF="pspp.html#vr_E" style="text-decoration:none"><b>E</b></A>
16721 &nbsp;
16722 <A HREF="pspp.html#vr_F" style="text-decoration:none"><b>F</b></A>
16723 &nbsp;
16724 <A HREF="pspp.html#vr_G" style="text-decoration:none"><b>G</b></A>
16725 &nbsp;
16726 <A HREF="pspp.html#vr_I" style="text-decoration:none"><b>I</b></A>
16727 &nbsp;
16728 <A HREF="pspp.html#vr_L" style="text-decoration:none"><b>L</b></A>
16729 &nbsp;
16730 <A HREF="pspp.html#vr_M" style="text-decoration:none"><b>M</b></A>
16731 &nbsp;
16732 <A HREF="pspp.html#vr_N" style="text-decoration:none"><b>N</b></A>
16733 &nbsp;
16734 <A HREF="pspp.html#vr_P" style="text-decoration:none"><b>P</b></A>
16735 &nbsp;
16736 <A HREF="pspp.html#vr_Q" style="text-decoration:none"><b>Q</b></A>
16737 &nbsp;
16738 <A HREF="pspp.html#vr_R" style="text-decoration:none"><b>R</b></A>
16739 &nbsp;
16740 <A HREF="pspp.html#vr_S" style="text-decoration:none"><b>S</b></A>
16741 &nbsp;
16742 <A HREF="pspp.html#vr_T" style="text-decoration:none"><b>T</b></A>
16743 &nbsp;
16744 <A HREF="pspp.html#vr_V" style="text-decoration:none"><b>V</b></A>
16745 &nbsp;
16746 <A HREF="pspp.html#vr_W" style="text-decoration:none"><b>W</b></A>
16747 &nbsp;
16748 <A HREF="pspp.html#vr_X" style="text-decoration:none"><b>X</b></A>
16749 &nbsp;
16750 </td></tr></table><P></P>
16751 <TABLE border=0>
16752 <TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
16753 <TR><TD COLSPAN=3> <HR></TD></TR>
16754 <TR><TH><A NAME="vr_*"></A>*</TH><TD></TD><TD></TD></TR>
16755 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC157"><CODE>*</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC157">16.1 COMMENT</A></TD></TR>
16756 <TR><TD COLSPAN=3> <HR></TD></TR>
16757 <TR><TH><A NAME="vr_@"></A>@</TH><TD></TD><TD></TD></TR>
16758 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC164"><CODE>@</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC164">16.8 INCLUDE</A></TD></TR>
16759 <TR><TD COLSPAN=3> <HR></TD></TR>
16760 <TR><TH><A NAME="vr_A"></A>A</TH><TD></TD><TD></TD></TR>
16761 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC114"><CODE>ADD VALUE LABELS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC114">11.1 ADD VALUE LABELS</A></TD></TR>
16762 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC130"><CODE>AGGREGATE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC130">12.1 AGGREGATE</A></TD></TR>
16763 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC105"><CODE>APPLY DICTIONARY</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC105">10.1 APPLY DICTIONARY</A></TD></TR>
16764 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC131"><CODE>AUTORECODE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC131">12.2 AUTORECODE</A></TD></TR>
16765 <TR><TD COLSPAN=3> <HR></TD></TR>
16766 <TR><TH><A NAME="vr_B"></A>B</TH><TD></TD><TD></TD></TR>
16767 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC84"><CODE>BEGIN DATA</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC84">9.1 BEGIN DATA</A></TD></TR>
16768 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC148"><CODE>BREAK</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC148">14.1 BREAK</A></TD></TR>
16769 <TR><TD COLSPAN=3> <HR></TD></TR>
16770 <TR><TH><A NAME="vr_C"></A>C</TH><TD></TD><TD></TD></TR>
16771 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC85"><CODE>CLEAR TRANSFORMATIONS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC85">9.2 CLEAR TRANSFORMATIONS</A></TD></TR>
16772 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC157"><CODE>COMMENT</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC157">16.1 COMMENT</A></TD></TR>
16773 <TR><TD COLSPAN=3> <HR></TD></TR>
16774 <TR><TH><A NAME="vr_D"></A>D</TH><TD></TD><TD></TD></TR>
16775 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC86"><CODE>DATA LIST</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC86">9.3 DATA LIST</A></TD></TR>
16776 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC87"><CODE>DATA LIST FIXED</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC87">9.3.1 DATA LIST FIXED</A></TD></TR>
16777 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC89"><CODE>DATA LIST FREE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC89">9.3.2 DATA LIST FREE</A></TD></TR>
16778 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC90"><CODE>DATA LIST LIST</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC90">9.3.3 DATA LIST LIST</A></TD></TR>
16779 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC115"><CODE>DISPLAY</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC115">11.2 DISPLAY</A></TD></TR>
16780 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC159"><CODE>DISPLAY DOCUMENTS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC159">16.3 DISPLAY DOCUMENTS</A></TD></TR>
16781 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC160"><CODE>DISPLAY FILE LABEL</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC160">16.4 DISPLAY FILE LABEL</A></TD></TR>
16782 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC116"><CODE>DISPLAY VECTORS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC116">11.3 DISPLAY VECTORS</A></TD></TR>
16783 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC149"><CODE>DO IF</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC149">14.2 DO IF</A></TD></TR>
16784 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC150"><CODE>DO REPEAT</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC150">14.3 DO REPEAT</A></TD></TR>
16785 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC158"><CODE>DOCUMENT</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC158">16.2 DOCUMENT</A></TD></TR>
16786 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC161"><CODE>DROP DOCUMENTS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC161">16.5 DROP DOCUMENTS</A></TD></TR>
16787 <TR><TD COLSPAN=3> <HR></TD></TR>
16788 <TR><TH><A NAME="vr_E"></A>E</TH><TD></TD><TD></TD></TR>
16789 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC91"><CODE>END CASE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC91">9.4 END CASE</A></TD></TR>
16790 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC84"><CODE>END DATA</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC84">9.1 BEGIN DATA</A></TD></TR>
16791 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC92"><CODE>END FILE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC92">9.5 END FILE</A></TD></TR>
16792 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC162"><CODE>EXECUTE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC162">16.6 EXECUTE</A></TD></TR>
16793 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC106"><CODE>EXPORT</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC106">10.2 EXPORT</A></TD></TR>
16794 <TR><TD COLSPAN=3> <HR></TD></TR>
16795 <TR><TH><A NAME="vr_F"></A>F</TH><TD></TD><TD></TD></TR>
16796 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC93"><CODE>FILE HANDLE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC93">9.6 FILE HANDLE</A></TD></TR>
16797 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC163"><CODE>FILE LABEL</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC163">16.7 FILE LABEL</A></TD></TR>
16798 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC139"><CODE>FILTER</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC139">13.1 FILTER</A></TD></TR>
16799 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC134"><CODE>FLIP</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC134">12.5 FLIP</A></TD></TR>
16800 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC117"><CODE>FORMATS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC117">11.4 FORMATS</A></TD></TR>
16801 <TR><TD COLSPAN=3> <HR></TD></TR>
16802 <TR><TH><A NAME="vr_G"></A>G</TH><TD></TD><TD></TD></TR>
16803 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC107"><CODE>GET</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC107">10.3 GET</A></TD></TR>
16804 <TR><TD COLSPAN=3> <HR></TD></TR>
16805 <TR><TH><A NAME="vr_I"></A>I</TH><TD></TD><TD></TD></TR>
16806 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC108"><CODE>IMPORT</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC108">10.4 IMPORT</A></TD></TR>
16807 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC164"><CODE>INCLUDE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC164">16.8 INCLUDE</A></TD></TR>
16808 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC94"><CODE>INPUT PROGRAM</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC94">9.7 INPUT PROGRAM</A></TD></TR>
16809 <TR><TD COLSPAN=3> <HR></TD></TR>
16810 <TR><TH><A NAME="vr_L"></A>L</TH><TD></TD><TD></TD></TR>
16811 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC118"><CODE>LEAVE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC118">11.5 LEAVE</A></TD></TR>
16812 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC95"><CODE>LIST</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC95">9.8 LIST</A></TD></TR>
16813 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC151"><CODE>LOOP</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC151">14.4 LOOP</A></TD></TR>
16814 <TR><TD COLSPAN=3> <HR></TD></TR>
16815 <TR><TH><A NAME="vr_M"></A>M</TH><TD></TD><TD></TD></TR>
16816 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC109"><CODE>MATCH FILES</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC109">10.5 MATCH FILES</A></TD></TR>
16817 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC96"><CODE>MATRIX DATA</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC96">9.9 MATRIX DATA</A></TD></TR>
16818 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC119"><CODE>MISSING VALUES</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC119">11.6 MISSING VALUES</A></TD></TR>
16819 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC120"><CODE>MODIFY VARS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC120">11.7 MODIFY VARS</A></TD></TR>
16820 <TR><TD COLSPAN=3> <HR></TD></TR>
16821 <TR><TH><A NAME="vr_N"></A>N</TH><TD></TD><TD></TD></TR>
16822 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC140"><CODE>N OF CASES</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC140">13.2 N OF CASES</A></TD></TR>
16823 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC97"><CODE>NEW FILE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC97">9.10 NEW FILE</A></TD></TR>
16824 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC121"><CODE>NUMERIC</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC121">11.8 NUMERIC</A></TD></TR>
16825 <TR><TD COLSPAN=3> <HR></TD></TR>
16826 <TR><TH><A NAME="vr_P"></A>P</TH><TD></TD><TD></TD></TR>
16827 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC98"><CODE>PRINT</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC98">9.11 PRINT</A></TD></TR>
16828 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC99"><CODE>PRINT EJECT</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC99">9.12 PRINT EJECT</A></TD></TR>
16829 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC122"><CODE>PRINT FORMATS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC122">11.9 PRINT FORMATS</A></TD></TR>
16830 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC100"><CODE>PRINT SPACE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC100">9.13 PRINT SPACE</A></TD></TR>
16831 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC141"><CODE>PROCESS IF</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC141">13.3 PROCESS IF</A></TD></TR>
16832 <TR><TD COLSPAN=3> <HR></TD></TR>
16833 <TR><TH><A NAME="vr_Q"></A>Q</TH><TD></TD><TD></TD></TR>
16834 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC165"><CODE>QUIT</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC165">16.9 QUIT</A></TD></TR>
16835 <TR><TD COLSPAN=3> <HR></TD></TR>
16836 <TR><TH><A NAME="vr_R"></A>R</TH><TD></TD><TD></TD></TR>
16837 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC123"><CODE>RENAME VARIABLES</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC123">11.10 RENAME VARIABLES</A></TD></TR>
16838 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC102"><CODE>REPEATING DATA</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC102">9.15 REPEATING DATA</A></TD></TR>
16839 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC101"><CODE>REREAD</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC101">9.14 REREAD</A></TD></TR>
16840 <TR><TD COLSPAN=3> <HR></TD></TR>
16841 <TR><TH><A NAME="vr_S"></A>S</TH><TD></TD><TD></TD></TR>
16842 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC142"><CODE>SAMPLE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC142">13.4 SAMPLE</A></TD></TR>
16843 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC110"><CODE>SAVE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC110">10.6 SAVE</A></TD></TR>
16844 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC143"><CODE>SELECT IF</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC143">13.5 SELECT IF</A></TD></TR>
16845 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC166"><CODE>SET</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC166">16.10 SET</A></TD></TR>
16846 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC137"><CODE>SORT CASES</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC137">12.8 SORT CASES</A></TD></TR>
16847 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC144"><CODE>SPLIT FILE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC144">13.6 SPLIT FILE</A></TD></TR>
16848 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC125"><CODE>STRING</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC125">11.12 STRING</A></TD></TR>
16849 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC167"><CODE>SUBTITLE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC167">16.11 SUBTITLE</A></TD></TR>
16850 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC111"><CODE>SYSFILE INFO</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC111">10.7 SYSFILE INFO</A></TD></TR>
16851 <TR><TD COLSPAN=3> <HR></TD></TR>
16852 <TR><TH><A NAME="vr_T"></A>T</TH><TD></TD><TD></TD></TR>
16853 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC145"><CODE>TEMPORARY</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC145">13.7 TEMPORARY</A></TD></TR>
16854 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC168"><CODE>TITLE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC168">16.12 TITLE</A></TD></TR>
16855 <TR><TD COLSPAN=3> <HR></TD></TR>
16856 <TR><TH><A NAME="vr_V"></A>V</TH><TD></TD><TD></TD></TR>
16857 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC124"><CODE>VALUE LABELS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC124">11.11 VALUE LABELS</A></TD></TR>
16858 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC126"><CODE>VARIABLE LABELS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC126">11.13 VARIABLE LABELS</A></TD></TR>
16859 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC127"><CODE>VECTOR</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC127">11.14 VECTOR</A></TD></TR>
16860 <TR><TD COLSPAN=3> <HR></TD></TR>
16861 <TR><TH><A NAME="vr_W"></A>W</TH><TD></TD><TD></TD></TR>
16862 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC146"><CODE>WEIGHT</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC146">13.8 WEIGHT</A></TD></TR>
16863 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC103"><CODE>WRITE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC103">9.16 WRITE</A></TD></TR>
16864 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC128"><CODE>WRITE FORMATS</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC128">11.15 WRITE FORMATS</A></TD></TR>
16865 <TR><TD COLSPAN=3> <HR></TD></TR>
16866 <TR><TH><A NAME="vr_X"></A>X</TH><TD></TD><TD></TD></TR>
16867 <TR><TD></TD><TD valign=top><A HREF="pspp.html#SEC112"><CODE>XSAVE</CODE></A></TD><TD valign=top><A HREF="pspp.html#SEC112">10.8 XSAVE</A></TD></TR>
16868 <TR><TD COLSPAN=3> <HR></TD></TR>
16869 </TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="pspp.html#vr_*" style="text-decoration:none"><b>*</b></A>
16870 &nbsp;
16871 <A HREF="pspp.html#vr_@" style="text-decoration:none"><b>@</b></A>
16872 &nbsp;
16873 <BR>
16874 <A HREF="pspp.html#vr_A" style="text-decoration:none"><b>A</b></A>
16875 &nbsp;
16876 <A HREF="pspp.html#vr_B" style="text-decoration:none"><b>B</b></A>
16877 &nbsp;
16878 <A HREF="pspp.html#vr_C" style="text-decoration:none"><b>C</b></A>
16879 &nbsp;
16880 <A HREF="pspp.html#vr_D" style="text-decoration:none"><b>D</b></A>
16881 &nbsp;
16882 <A HREF="pspp.html#vr_E" style="text-decoration:none"><b>E</b></A>
16883 &nbsp;
16884 <A HREF="pspp.html#vr_F" style="text-decoration:none"><b>F</b></A>
16885 &nbsp;
16886 <A HREF="pspp.html#vr_G" style="text-decoration:none"><b>G</b></A>
16887 &nbsp;
16888 <A HREF="pspp.html#vr_I" style="text-decoration:none"><b>I</b></A>
16889 &nbsp;
16890 <A HREF="pspp.html#vr_L" style="text-decoration:none"><b>L</b></A>
16891 &nbsp;
16892 <A HREF="pspp.html#vr_M" style="text-decoration:none"><b>M</b></A>
16893 &nbsp;
16894 <A HREF="pspp.html#vr_N" style="text-decoration:none"><b>N</b></A>
16895 &nbsp;
16896 <A HREF="pspp.html#vr_P" style="text-decoration:none"><b>P</b></A>
16897 &nbsp;
16898 <A HREF="pspp.html#vr_Q" style="text-decoration:none"><b>Q</b></A>
16899 &nbsp;
16900 <A HREF="pspp.html#vr_R" style="text-decoration:none"><b>R</b></A>
16901 &nbsp;
16902 <A HREF="pspp.html#vr_S" style="text-decoration:none"><b>S</b></A>
16903 &nbsp;
16904 <A HREF="pspp.html#vr_T" style="text-decoration:none"><b>T</b></A>
16905 &nbsp;
16906 <A HREF="pspp.html#vr_V" style="text-decoration:none"><b>V</b></A>
16907 &nbsp;
16908 <A HREF="pspp.html#vr_W" style="text-decoration:none"><b>W</b></A>
16909 &nbsp;
16910 <A HREF="pspp.html#vr_X" style="text-decoration:none"><b>X</b></A>
16911 &nbsp;
16912 </td></tr></table><P>
16913
16914 <HR SIZE="6">
16915 <A NAME="pspp.html"></A>
16916 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
16917 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
16918 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
16919 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
16920 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
16921 </TR></TABLE>
16922 <H1>Footnotes</H1>
16923 <H3><A NAME="FOOT1" HREF="pspp.html#DOCF1">(1)</A></H3>
16924 <P>Do What I Mean
16925 <HR SIZE=1>
16926 <A NAME="SEC_Contents"></A>
16927 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
16928 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
16929 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
16930 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
16931 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
16932 </TR></TABLE>
16933 <H1>Table of Contents</H1>
16934 <BLOCKQUOTE>
16935 <A NAME="TOC1" HREF="pspp.html#SEC1">1. Introduction</A>
16936 <BR>
16937 <A NAME="TOC2" HREF="pspp.html#SEC2">2. Your rights and obligations</A>
16938 <BR>
16939 <A NAME="TOC3" HREF="pspp.html#SEC3">3. Credits</A>
16940 <BR>
16941 <A NAME="TOC4" HREF="pspp.html#SEC4">4. Installing PSPP</A>
16942 <BR>
16943 <BLOCKQUOTE>
16944 <A NAME="TOC5" HREF="pspp.html#SEC5">4.1 UNIX installation</A>
16945 <BR>
16946 </BLOCKQUOTE>
16947 <A NAME="TOC6" HREF="pspp.html#SEC6">5. Configuring PSPP</A>
16948 <BR>
16949 <BLOCKQUOTE>
16950 <A NAME="TOC7" HREF="pspp.html#SEC7">5.1 Locating configuration files</A>
16951 <BR>
16952 <A NAME="TOC8" HREF="pspp.html#SEC8">5.2 Configuration techniques</A>
16953 <BR>
16954 <A NAME="TOC9" HREF="pspp.html#SEC9">5.3 Configuration files</A>
16955 <BR>
16956 <A NAME="TOC10" HREF="pspp.html#SEC10">5.4 Environment variables</A>
16957 <BR>
16958 <BLOCKQUOTE>
16959 <A NAME="TOC11" HREF="pspp.html#SEC11">5.4.1 Values of environment variables</A>
16960 <BR>
16961 <A NAME="TOC12" HREF="pspp.html#SEC12">5.4.2 Environment substitutions</A>
16962 <BR>
16963 <A NAME="TOC13" HREF="pspp.html#SEC13">5.4.3 Predefined environment variables</A>
16964 <BR>
16965 </BLOCKQUOTE>
16966 <A NAME="TOC14" HREF="pspp.html#SEC14">5.5 Output devices</A>
16967 <BR>
16968 <BLOCKQUOTE>
16969 <A NAME="TOC15" HREF="pspp.html#SEC15">5.5.1 Driver categories</A>
16970 <BR>
16971 <A NAME="TOC16" HREF="pspp.html#SEC16">5.5.2 Macro definitions</A>
16972 <BR>
16973 <A NAME="TOC17" HREF="pspp.html#SEC17">5.5.3 Driver definitions</A>
16974 <BR>
16975 <A NAME="TOC18" HREF="pspp.html#SEC18">5.5.4 Dimensions</A>
16976 <BR>
16977 <A NAME="TOC19" HREF="pspp.html#SEC19">5.5.5 Paper sizes</A>
16978 <BR>
16979 <A NAME="TOC20" HREF="pspp.html#SEC20">5.5.6 How lines are divided into types</A>
16980 <BR>
16981 <A NAME="TOC21" HREF="pspp.html#SEC21">5.5.7 How lines are divided into tokens</A>
16982 <BR>
16983 </BLOCKQUOTE>
16984 <A NAME="TOC22" HREF="pspp.html#SEC22">5.6 The PostScript driver class</A>
16985 <BR>
16986 <BLOCKQUOTE>
16987 <A NAME="TOC23" HREF="pspp.html#SEC23">5.6.1 PostScript output options</A>
16988 <BR>
16989 <A NAME="TOC24" HREF="pspp.html#SEC24">5.6.2 PostScript page options</A>
16990 <BR>
16991 <A NAME="TOC25" HREF="pspp.html#SEC25">5.6.3 PostScript file options</A>
16992 <BR>
16993 <A NAME="TOC26" HREF="pspp.html#SEC26">5.6.4 PostScript font options</A>
16994 <BR>
16995 <A NAME="TOC27" HREF="pspp.html#SEC27">5.6.5 PostScript line options</A>
16996 <BR>
16997 <A NAME="TOC28" HREF="pspp.html#SEC28">5.6.6 The PostScript prologue</A>
16998 <BR>
16999 <A NAME="TOC29" HREF="pspp.html#SEC29">5.6.7 PostScript encodings</A>
17000 <BR>
17001 </BLOCKQUOTE>
17002 <A NAME="TOC30" HREF="pspp.html#SEC30">5.7 The ASCII driver class</A>
17003 <BR>
17004 <BLOCKQUOTE>
17005 <A NAME="TOC31" HREF="pspp.html#SEC31">5.7.1 ASCII output options</A>
17006 <BR>
17007 <A NAME="TOC32" HREF="pspp.html#SEC32">5.7.2 ASCII page options</A>
17008 <BR>
17009 <A NAME="TOC33" HREF="pspp.html#SEC33">5.7.3 ASCII font options</A>
17010 <BR>
17011 </BLOCKQUOTE>
17012 <A NAME="TOC34" HREF="pspp.html#SEC34">5.8 The HTML driver class</A>
17013 <BR>
17014 <BLOCKQUOTE>
17015 <A NAME="TOC35" HREF="pspp.html#SEC35">5.8.1 The HTML prologue</A>
17016 <BR>
17017 </BLOCKQUOTE>
17018 <A NAME="TOC36" HREF="pspp.html#SEC36">5.9 Miscellaneous configuration</A>
17019 <BR>
17020 <A NAME="TOC37" HREF="pspp.html#SEC37">5.10 Improving output quality</A>
17021 <BR>
17022 </BLOCKQUOTE>
17023 <A NAME="TOC38" HREF="pspp.html#SEC38">6. Invoking PSPP</A>
17024 <BR>
17025 <BLOCKQUOTE>
17026 <A NAME="TOC39" HREF="pspp.html#SEC39">6.1 Non-option Arguments</A>
17027 <BR>
17028 <A NAME="TOC40" HREF="pspp.html#SEC40">6.2 Configuration Options</A>
17029 <BR>
17030 <A NAME="TOC41" HREF="pspp.html#SEC41">6.3 Input and output options</A>
17031 <BR>
17032 <A NAME="TOC42" HREF="pspp.html#SEC42">6.4 Language control options</A>
17033 <BR>
17034 <A NAME="TOC43" HREF="pspp.html#SEC43">6.5 Informational options</A>
17035 <BR>
17036 </BLOCKQUOTE>
17037 <A NAME="TOC44" HREF="pspp.html#SEC44">7. The PSPP language</A>
17038 <BR>
17039 <BLOCKQUOTE>
17040 <A NAME="TOC45" HREF="pspp.html#SEC45">7.1 Tokens</A>
17041 <BR>
17042 <A NAME="TOC46" HREF="pspp.html#SEC46">7.2 Forming commands of tokens</A>
17043 <BR>
17044 <A NAME="TOC47" HREF="pspp.html#SEC47">7.3 Types of Commands</A>
17045 <BR>
17046 <A NAME="TOC48" HREF="pspp.html#SEC48">7.4 Order of Commands</A>
17047 <BR>
17048 <A NAME="TOC49" HREF="pspp.html#SEC49">7.5 Handling missing observations</A>
17049 <BR>
17050 <A NAME="TOC50" HREF="pspp.html#SEC50">7.6 Variables</A>
17051 <BR>
17052 <BLOCKQUOTE>
17053 <A NAME="TOC51" HREF="pspp.html#SEC51">7.6.1 Attributes of Variables</A>
17054 <BR>
17055 <A NAME="TOC52" HREF="pspp.html#SEC52">7.6.2 Variables Automatically Defined by PSPP</A>
17056 <BR>
17057 <A NAME="TOC53" HREF="pspp.html#SEC53">7.6.3 Lists of variable names</A>
17058 <BR>
17059 <A NAME="TOC54" HREF="pspp.html#SEC54">7.6.4 Input and Output Formats</A>
17060 <BR>
17061 <A NAME="TOC55" HREF="pspp.html#SEC55">7.6.5 Scratch Variables</A>
17062 <BR>
17063 </BLOCKQUOTE>
17064 <A NAME="TOC56" HREF="pspp.html#SEC56">7.7 Files Used by PSPP</A>
17065 <BR>
17066 <A NAME="TOC57" HREF="pspp.html#SEC57">7.8 Backus-Naur Form</A>
17067 <BR>
17068 </BLOCKQUOTE>
17069 <A NAME="TOC58" HREF="pspp.html#SEC58">8. Mathematical Expressions</A>
17070 <BR>
17071 <BLOCKQUOTE>
17072 <A NAME="TOC59" HREF="pspp.html#SEC59">8.1 Boolean values</A>
17073 <BR>
17074 <A NAME="TOC60" HREF="pspp.html#SEC60">8.2 Missing Values in Expressions</A>
17075 <BR>
17076 <A NAME="TOC61" HREF="pspp.html#SEC61">8.3 Grouping Operators</A>
17077 <BR>
17078 <A NAME="TOC62" HREF="pspp.html#SEC62">8.4 Arithmetic Operators</A>
17079 <BR>
17080 <A NAME="TOC63" HREF="pspp.html#SEC63">8.5 Logical Operators</A>
17081 <BR>
17082 <A NAME="TOC64" HREF="pspp.html#SEC64">8.6 Relational Operators</A>
17083 <BR>
17084 <A NAME="TOC65" HREF="pspp.html#SEC65">8.7 Functions</A>
17085 <BR>
17086 <BLOCKQUOTE>
17087 <A NAME="TOC66" HREF="pspp.html#SEC66">8.7.1 Advanced Mathematical Functions</A>
17088 <BR>
17089 <A NAME="TOC67" HREF="pspp.html#SEC67">8.7.2 Miscellaneous Mathematical Functions</A>
17090 <BR>
17091 <A NAME="TOC68" HREF="pspp.html#SEC68">8.7.3 Trigonometric Functions</A>
17092 <BR>
17093 <A NAME="TOC69" HREF="pspp.html#SEC69">8.7.4 Missing-Value Functions</A>
17094 <BR>
17095 <A NAME="TOC70" HREF="pspp.html#SEC70">8.7.5 Pseudo-Random Number Generation Functions</A>
17096 <BR>
17097 <A NAME="TOC71" HREF="pspp.html#SEC71">8.7.6 Set-Membership Functions</A>
17098 <BR>
17099 <A NAME="TOC72" HREF="pspp.html#SEC72">8.7.7 Statistical Functions</A>
17100 <BR>
17101 <A NAME="TOC73" HREF="pspp.html#SEC73">8.7.8 String Functions</A>
17102 <BR>
17103 <A NAME="TOC74" HREF="pspp.html#SEC74">8.7.9 Time &amp; Date Functions</A>
17104 <BR>
17105 <BLOCKQUOTE>
17106 <A NAME="TOC75" HREF="pspp.html#SEC75">8.7.9.1 How times &amp; dates are defined and represented</A>
17107 <BR>
17108 <A NAME="TOC76" HREF="pspp.html#SEC76">8.7.9.2 Functions that Produce Times</A>
17109 <BR>
17110 <A NAME="TOC77" HREF="pspp.html#SEC77">8.7.9.3 Functions that Examine Times</A>
17111 <BR>
17112 <A NAME="TOC78" HREF="pspp.html#SEC78">8.7.9.4 Functions that Produce Dates</A>
17113 <BR>
17114 <A NAME="TOC79" HREF="pspp.html#SEC79">8.7.9.5 Functions that Examine Dates</A>
17115 <BR>
17116 </BLOCKQUOTE>
17117 <A NAME="TOC80" HREF="pspp.html#SEC80">8.7.10 Miscellaneous Functions</A>
17118 <BR>
17119 <A NAME="TOC81" HREF="pspp.html#SEC81">8.7.11 Functions Not Implemented</A>
17120 <BR>
17121 </BLOCKQUOTE>
17122 <A NAME="TOC82" HREF="pspp.html#SEC82">8.8 Operator Precedence</A>
17123 <BR>
17124 </BLOCKQUOTE>
17125 <A NAME="TOC83" HREF="pspp.html#SEC83">9. Data Input and Output</A>
17126 <BR>
17127 <BLOCKQUOTE>
17128 <A NAME="TOC84" HREF="pspp.html#SEC84">9.1 BEGIN DATA</A>
17129 <BR>
17130 <A NAME="TOC85" HREF="pspp.html#SEC85">9.2 CLEAR TRANSFORMATIONS</A>
17131 <BR>
17132 <A NAME="TOC86" HREF="pspp.html#SEC86">9.3 DATA LIST</A>
17133 <BR>
17134 <BLOCKQUOTE>
17135 <A NAME="TOC87" HREF="pspp.html#SEC87">9.3.1 DATA LIST FIXED</A>
17136 <BR>
17137 <BLOCKQUOTE>
17138 <A NAME="TOC88" HREF="pspp.html#SEC88">Examples</A>
17139 <BR>
17140 </BLOCKQUOTE>
17141 <A NAME="TOC89" HREF="pspp.html#SEC89">9.3.2 DATA LIST FREE</A>
17142 <BR>
17143 <A NAME="TOC90" HREF="pspp.html#SEC90">9.3.3 DATA LIST LIST</A>
17144 <BR>
17145 </BLOCKQUOTE>
17146 <A NAME="TOC91" HREF="pspp.html#SEC91">9.4 END CASE</A>
17147 <BR>
17148 <A NAME="TOC92" HREF="pspp.html#SEC92">9.5 END FILE</A>
17149 <BR>
17150 <A NAME="TOC93" HREF="pspp.html#SEC93">9.6 FILE HANDLE</A>
17151 <BR>
17152 <A NAME="TOC94" HREF="pspp.html#SEC94">9.7 INPUT PROGRAM</A>
17153 <BR>
17154 <A NAME="TOC95" HREF="pspp.html#SEC95">9.8 LIST</A>
17155 <BR>
17156 <A NAME="TOC96" HREF="pspp.html#SEC96">9.9 MATRIX DATA</A>
17157 <BR>
17158 <A NAME="TOC97" HREF="pspp.html#SEC97">9.10 NEW FILE</A>
17159 <BR>
17160 <A NAME="TOC98" HREF="pspp.html#SEC98">9.11 PRINT</A>
17161 <BR>
17162 <A NAME="TOC99" HREF="pspp.html#SEC99">9.12 PRINT EJECT</A>
17163 <BR>
17164 <A NAME="TOC100" HREF="pspp.html#SEC100">9.13 PRINT SPACE</A>
17165 <BR>
17166 <A NAME="TOC101" HREF="pspp.html#SEC101">9.14 REREAD</A>
17167 <BR>
17168 <A NAME="TOC102" HREF="pspp.html#SEC102">9.15 REPEATING DATA</A>
17169 <BR>
17170 <A NAME="TOC103" HREF="pspp.html#SEC103">9.16 WRITE</A>
17171 <BR>
17172 </BLOCKQUOTE>
17173 <A NAME="TOC104" HREF="pspp.html#SEC104">10. System Files and Portable Files</A>
17174 <BR>
17175 <BLOCKQUOTE>
17176 <A NAME="TOC105" HREF="pspp.html#SEC105">10.1 APPLY DICTIONARY</A>
17177 <BR>
17178 <A NAME="TOC106" HREF="pspp.html#SEC106">10.2 EXPORT</A>
17179 <BR>
17180 <A NAME="TOC107" HREF="pspp.html#SEC107">10.3 GET</A>
17181 <BR>
17182 <A NAME="TOC108" HREF="pspp.html#SEC108">10.4 IMPORT</A>
17183 <BR>
17184 <A NAME="TOC109" HREF="pspp.html#SEC109">10.5 MATCH FILES</A>
17185 <BR>
17186 <A NAME="TOC110" HREF="pspp.html#SEC110">10.6 SAVE</A>
17187 <BR>
17188 <A NAME="TOC111" HREF="pspp.html#SEC111">10.7 SYSFILE INFO</A>
17189 <BR>
17190 <A NAME="TOC112" HREF="pspp.html#SEC112">10.8 XSAVE</A>
17191 <BR>
17192 </BLOCKQUOTE>
17193 <A NAME="TOC113" HREF="pspp.html#SEC113">11. Manipulating variables</A>
17194 <BR>
17195 <BLOCKQUOTE>
17196 <A NAME="TOC114" HREF="pspp.html#SEC114">11.1 ADD VALUE LABELS</A>
17197 <BR>
17198 <A NAME="TOC115" HREF="pspp.html#SEC115">11.2 DISPLAY</A>
17199 <BR>
17200 <A NAME="TOC116" HREF="pspp.html#SEC116">11.3 DISPLAY VECTORS</A>
17201 <BR>
17202 <A NAME="TOC117" HREF="pspp.html#SEC117">11.4 FORMATS</A>
17203 <BR>
17204 <A NAME="TOC118" HREF="pspp.html#SEC118">11.5 LEAVE</A>
17205 <BR>
17206 <A NAME="TOC119" HREF="pspp.html#SEC119">11.6 MISSING VALUES</A>
17207 <BR>
17208 <A NAME="TOC120" HREF="pspp.html#SEC120">11.7 MODIFY VARS</A>
17209 <BR>
17210 <A NAME="TOC121" HREF="pspp.html#SEC121">11.8 NUMERIC</A>
17211 <BR>
17212 <A NAME="TOC122" HREF="pspp.html#SEC122">11.9 PRINT FORMATS</A>
17213 <BR>
17214 <A NAME="TOC123" HREF="pspp.html#SEC123">11.10 RENAME VARIABLES</A>
17215 <BR>
17216 <A NAME="TOC124" HREF="pspp.html#SEC124">11.11 VALUE LABELS</A>
17217 <BR>
17218 <A NAME="TOC125" HREF="pspp.html#SEC125">11.12 STRING</A>
17219 <BR>
17220 <A NAME="TOC126" HREF="pspp.html#SEC126">11.13 VARIABLE LABELS</A>
17221 <BR>
17222 <A NAME="TOC127" HREF="pspp.html#SEC127">11.14 VECTOR</A>
17223 <BR>
17224 <A NAME="TOC128" HREF="pspp.html#SEC128">11.15 WRITE FORMATS</A>
17225 <BR>
17226 </BLOCKQUOTE>
17227 <A NAME="TOC129" HREF="pspp.html#SEC129">12. Data transformations</A>
17228 <BR>
17229 <BLOCKQUOTE>
17230 <A NAME="TOC130" HREF="pspp.html#SEC130">12.1 AGGREGATE</A>
17231 <BR>
17232 <A NAME="TOC131" HREF="pspp.html#SEC131">12.2 AUTORECODE</A>
17233 <BR>
17234 <A NAME="TOC132" HREF="pspp.html#SEC132">12.3 COMPUTE</A>
17235 <BR>
17236 <A NAME="TOC133" HREF="pspp.html#SEC133">12.4 COUNT</A>
17237 <BR>
17238 <A NAME="TOC134" HREF="pspp.html#SEC134">12.5 FLIP</A>
17239 <BR>
17240 <A NAME="TOC135" HREF="pspp.html#SEC135">12.6 IF</A>
17241 <BR>
17242 <A NAME="TOC136" HREF="pspp.html#SEC136">12.7 RECODE</A>
17243 <BR>
17244 <A NAME="TOC137" HREF="pspp.html#SEC137">12.8 SORT CASES</A>
17245 <BR>
17246 </BLOCKQUOTE>
17247 <A NAME="TOC138" HREF="pspp.html#SEC138">13. Selecting data for analysis</A>
17248 <BR>
17249 <BLOCKQUOTE>
17250 <A NAME="TOC139" HREF="pspp.html#SEC139">13.1 FILTER</A>
17251 <BR>
17252 <A NAME="TOC140" HREF="pspp.html#SEC140">13.2 N OF CASES</A>
17253 <BR>
17254 <A NAME="TOC141" HREF="pspp.html#SEC141">13.3 PROCESS IF</A>
17255 <BR>
17256 <A NAME="TOC142" HREF="pspp.html#SEC142">13.4 SAMPLE</A>
17257 <BR>
17258 <A NAME="TOC143" HREF="pspp.html#SEC143">13.5 SELECT IF</A>
17259 <BR>
17260 <A NAME="TOC144" HREF="pspp.html#SEC144">13.6 SPLIT FILE</A>
17261 <BR>
17262 <A NAME="TOC145" HREF="pspp.html#SEC145">13.7 TEMPORARY</A>
17263 <BR>
17264 <A NAME="TOC146" HREF="pspp.html#SEC146">13.8 WEIGHT</A>
17265 <BR>
17266 </BLOCKQUOTE>
17267 <A NAME="TOC147" HREF="pspp.html#SEC147">14. Conditional and Looping Constructs</A>
17268 <BR>
17269 <BLOCKQUOTE>
17270 <A NAME="TOC148" HREF="pspp.html#SEC148">14.1 BREAK</A>
17271 <BR>
17272 <A NAME="TOC149" HREF="pspp.html#SEC149">14.2 DO IF</A>
17273 <BR>
17274 <A NAME="TOC150" HREF="pspp.html#SEC150">14.3 DO REPEAT</A>
17275 <BR>
17276 <A NAME="TOC151" HREF="pspp.html#SEC151">14.4 LOOP</A>
17277 <BR>
17278 </BLOCKQUOTE>
17279 <A NAME="TOC152" HREF="pspp.html#SEC152">15. Statistics</A>
17280 <BR>
17281 <BLOCKQUOTE>
17282 <A NAME="TOC153" HREF="pspp.html#SEC153">15.1 DESCRIPTIVES</A>
17283 <BR>
17284 <A NAME="TOC154" HREF="pspp.html#SEC154">15.2 FREQUENCIES</A>
17285 <BR>
17286 <A NAME="TOC155" HREF="pspp.html#SEC155">15.3 CROSSTABS</A>
17287 <BR>
17288 </BLOCKQUOTE>
17289 <A NAME="TOC156" HREF="pspp.html#SEC156">16. Utilities</A>
17290 <BR>
17291 <BLOCKQUOTE>
17292 <A NAME="TOC157" HREF="pspp.html#SEC157">16.1 COMMENT</A>
17293 <BR>
17294 <A NAME="TOC158" HREF="pspp.html#SEC158">16.2 DOCUMENT</A>
17295 <BR>
17296 <A NAME="TOC159" HREF="pspp.html#SEC159">16.3 DISPLAY DOCUMENTS</A>
17297 <BR>
17298 <A NAME="TOC160" HREF="pspp.html#SEC160">16.4 DISPLAY FILE LABEL</A>
17299 <BR>
17300 <A NAME="TOC161" HREF="pspp.html#SEC161">16.5 DROP DOCUMENTS</A>
17301 <BR>
17302 <A NAME="TOC162" HREF="pspp.html#SEC162">16.6 EXECUTE</A>
17303 <BR>
17304 <A NAME="TOC163" HREF="pspp.html#SEC163">16.7 FILE LABEL</A>
17305 <BR>
17306 <A NAME="TOC164" HREF="pspp.html#SEC164">16.8 INCLUDE</A>
17307 <BR>
17308 <A NAME="TOC165" HREF="pspp.html#SEC165">16.9 QUIT</A>
17309 <BR>
17310 <A NAME="TOC166" HREF="pspp.html#SEC166">16.10 SET</A>
17311 <BR>
17312 <A NAME="TOC167" HREF="pspp.html#SEC167">16.11 SUBTITLE</A>
17313 <BR>
17314 <A NAME="TOC168" HREF="pspp.html#SEC168">16.12 TITLE</A>
17315 <BR>
17316 </BLOCKQUOTE>
17317 <A NAME="TOC169" HREF="pspp.html#SEC169">17. Not Implemented</A>
17318 <BR>
17319 <A NAME="TOC170" HREF="pspp.html#SEC170">18. Data File Format</A>
17320 <BR>
17321 <BLOCKQUOTE>
17322 <A NAME="TOC171" HREF="pspp.html#SEC171">18.1 File Header Record</A>
17323 <BR>
17324 <A NAME="TOC172" HREF="pspp.html#SEC172">18.2 Variable Record</A>
17325 <BR>
17326 <A NAME="TOC173" HREF="pspp.html#SEC173">18.3 Value Label Record</A>
17327 <BR>
17328 <A NAME="TOC174" HREF="pspp.html#SEC174">18.4 Value Label Variable Record</A>
17329 <BR>
17330 <A NAME="TOC175" HREF="pspp.html#SEC175">18.5 Document Record</A>
17331 <BR>
17332 <A NAME="TOC176" HREF="pspp.html#SEC176">18.6 Machine <CODE>int32</CODE> Info Record</A>
17333 <BR>
17334 <A NAME="TOC177" HREF="pspp.html#SEC177">18.7 Machine <CODE>flt64</CODE> Info Record</A>
17335 <BR>
17336 <A NAME="TOC178" HREF="pspp.html#SEC178">18.8 Miscellaneous Informational Records</A>
17337 <BR>
17338 <A NAME="TOC179" HREF="pspp.html#SEC179">18.9 Dictionary Termination Record</A>
17339 <BR>
17340 <A NAME="TOC180" HREF="pspp.html#SEC180">18.10 Data Record</A>
17341 <BR>
17342 </BLOCKQUOTE>
17343 <A NAME="TOC181" HREF="pspp.html#SEC181">19. Portable File Format</A>
17344 <BR>
17345 <BLOCKQUOTE>
17346 <A NAME="TOC182" HREF="pspp.html#SEC182">19.1 Portable File Characters</A>
17347 <BR>
17348 <A NAME="TOC183" HREF="pspp.html#SEC183">19.2 Portable File Structure</A>
17349 <BR>
17350 <A NAME="TOC184" HREF="pspp.html#SEC184">19.3 Portable File Header</A>
17351 <BR>
17352 <A NAME="TOC185" HREF="pspp.html#SEC185">19.4 Version and Date Info Record</A>
17353 <BR>
17354 <A NAME="TOC186" HREF="pspp.html#SEC186">19.5 Identification Records</A>
17355 <BR>
17356 <A NAME="TOC187" HREF="pspp.html#SEC187">19.6 Variable Count Record</A>
17357 <BR>
17358 <A NAME="TOC188" HREF="pspp.html#SEC188">19.7 Variable Records</A>
17359 <BR>
17360 <A NAME="TOC189" HREF="pspp.html#SEC189">19.8 Value Label Records</A>
17361 <BR>
17362 <A NAME="TOC190" HREF="pspp.html#SEC190">19.9 Portable File Data</A>
17363 <BR>
17364 </BLOCKQUOTE>
17365 <A NAME="TOC191" HREF="pspp.html#SEC191">20. <CODE>q2c</CODE> Input Format</A>
17366 <BR>
17367 <BLOCKQUOTE>
17368 <A NAME="TOC192" HREF="pspp.html#SEC192">20.1 Invoking q2c</A>
17369 <BR>
17370 <A NAME="TOC193" HREF="pspp.html#SEC193">20.2 <CODE>q2c</CODE> Input Structure</A>
17371 <BR>
17372 <A NAME="TOC194" HREF="pspp.html#SEC194">20.3 Grammar Rules</A>
17373 <BR>
17374 </BLOCKQUOTE>
17375 <A NAME="TOC195" HREF="pspp.html#SEC195">21. Bugs</A>
17376 <BR>
17377 <BLOCKQUOTE>
17378 <A NAME="TOC196" HREF="pspp.html#SEC196">21.1 Known bugs</A>
17379 <BR>
17380 <A NAME="TOC197" HREF="pspp.html#SEC197">21.2 Contacting the Author</A>
17381 <BR>
17382 </BLOCKQUOTE>
17383 <A NAME="TOC198" HREF="pspp.html#SEC198">22. Function Index</A>
17384 <BR>
17385 <A NAME="TOC199" HREF="pspp.html#SEC199">23. Concept Index</A>
17386 <BR>
17387 <A NAME="TOC200" HREF="pspp.html#SEC200">24. Command Index</A>
17388 <BR>
17389 </BLOCKQUOTE>
17390 <HR SIZE=1>
17391 <A NAME="SEC_OVERVIEW"></A>
17392 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
17393 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
17394 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
17395 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
17396 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
17397 </TR></TABLE>
17398 <H1>Short Table of Contents</H1>
17399 <BLOCKQUOTE>
17400 <A NAME="TOC1" HREF="pspp.html#SEC1">1. Introduction</A>
17401 <BR>
17402 <A NAME="TOC2" HREF="pspp.html#SEC2">2. Your rights and obligations</A>
17403 <BR>
17404 <A NAME="TOC3" HREF="pspp.html#SEC3">3. Credits</A>
17405 <BR>
17406 <A NAME="TOC4" HREF="pspp.html#SEC4">4. Installing PSPP</A>
17407 <BR>
17408 <A NAME="TOC6" HREF="pspp.html#SEC6">5. Configuring PSPP</A>
17409 <BR>
17410 <A NAME="TOC38" HREF="pspp.html#SEC38">6. Invoking PSPP</A>
17411 <BR>
17412 <A NAME="TOC44" HREF="pspp.html#SEC44">7. The PSPP language</A>
17413 <BR>
17414 <A NAME="TOC58" HREF="pspp.html#SEC58">8. Mathematical Expressions</A>
17415 <BR>
17416 <A NAME="TOC83" HREF="pspp.html#SEC83">9. Data Input and Output</A>
17417 <BR>
17418 <A NAME="TOC104" HREF="pspp.html#SEC104">10. System Files and Portable Files</A>
17419 <BR>
17420 <A NAME="TOC113" HREF="pspp.html#SEC113">11. Manipulating variables</A>
17421 <BR>
17422 <A NAME="TOC129" HREF="pspp.html#SEC129">12. Data transformations</A>
17423 <BR>
17424 <A NAME="TOC138" HREF="pspp.html#SEC138">13. Selecting data for analysis</A>
17425 <BR>
17426 <A NAME="TOC147" HREF="pspp.html#SEC147">14. Conditional and Looping Constructs</A>
17427 <BR>
17428 <A NAME="TOC152" HREF="pspp.html#SEC152">15. Statistics</A>
17429 <BR>
17430 <A NAME="TOC156" HREF="pspp.html#SEC156">16. Utilities</A>
17431 <BR>
17432 <A NAME="TOC169" HREF="pspp.html#SEC169">17. Not Implemented</A>
17433 <BR>
17434 <A NAME="TOC170" HREF="pspp.html#SEC170">18. Data File Format</A>
17435 <BR>
17436 <A NAME="TOC181" HREF="pspp.html#SEC181">19. Portable File Format</A>
17437 <BR>
17438 <A NAME="TOC191" HREF="pspp.html#SEC191">20. <CODE>q2c</CODE> Input Format</A>
17439 <BR>
17440 <A NAME="TOC195" HREF="pspp.html#SEC195">21. Bugs</A>
17441 <BR>
17442 <A NAME="TOC198" HREF="pspp.html#SEC198">22. Function Index</A>
17443 <BR>
17444 <A NAME="TOC199" HREF="pspp.html#SEC199">23. Concept Index</A>
17445 <BR>
17446 <A NAME="TOC200" HREF="pspp.html#SEC200">24. Command Index</A>
17447 <BR>
17448
17449 </BLOCKQUOTE>
17450 <HR SIZE=1>
17451 <A NAME="SEC_About"></A>
17452 <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
17453 <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Top">Top</A>]</TD>
17454 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_Contents">Contents</A>]</TD>
17455 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC198">Index</A>]</TD>
17456 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="pspp.html#SEC_About"> ? </A>]</TD>
17457 </TR></TABLE>
17458 <H1>About this document</H1>
17459 This document was generated
17460 by
17461 using <A HREF="http://texi2html.cvshome.org"><I>texi2html</I></A>
17462 <P></P>
17463 The buttons in the navigation panels have the following meaning:
17464 <P></P>
17465 <table border = "1">
17466 <TR>
17467 <TH> Button </TH>
17468 <TH> Name </TH>
17469 <TH> Go to </TH>
17470 <TH> From 1.2.3 go to</TH>
17471 </TR>
17472 <TR>
17473 <TD ALIGN="CENTER">
17474 [ &lt; ] </TD>
17475 <TD ALIGN="CENTER">
17476 Back
17477 </TD>
17478 <TD>
17479 previous section in reading order
17480 </TD>
17481 <TD>
17482 1.2.2
17483 </TD>
17484 </TR>
17485 <TR>
17486 <TD ALIGN="CENTER">
17487 [ &gt; ] </TD>
17488 <TD ALIGN="CENTER">
17489 Forward
17490 </TD>
17491 <TD>
17492 next section in reading order
17493 </TD>
17494 <TD>
17495 1.2.4
17496 </TD>
17497 </TR>
17498 <TR>
17499 <TD ALIGN="CENTER">
17500 [ &lt;&lt; ] </TD>
17501 <TD ALIGN="CENTER">
17502 FastBack
17503 </TD>
17504 <TD>
17505 beginning of this chapter or previous chapter
17506 </TD>
17507 <TD>
17508 1
17509 </TD>
17510 </TR>
17511 <TR>
17512 <TD ALIGN="CENTER">
17513 [ Up ] </TD>
17514 <TD ALIGN="CENTER">
17515 Up
17516 </TD>
17517 <TD>
17518 up section
17519 </TD>
17520 <TD>
17521 1.2
17522 </TD>
17523 </TR>
17524 <TR>
17525 <TD ALIGN="CENTER">
17526 [ &gt;&gt; ] </TD>
17527 <TD ALIGN="CENTER">
17528 FastForward
17529 </TD>
17530 <TD>
17531 next chapter
17532 </TD>
17533 <TD>
17534 2
17535 </TD>
17536 </TR>
17537 <TR>
17538 <TD ALIGN="CENTER">
17539 [Top] </TD>
17540 <TD ALIGN="CENTER">
17541 Top
17542 </TD>
17543 <TD>
17544 cover (top) of document
17545 </TD>
17546 <TD>
17547 &nbsp;
17548 </TD>
17549 </TR>
17550 <TR>
17551 <TD ALIGN="CENTER">
17552 [Contents] </TD>
17553 <TD ALIGN="CENTER">
17554 Contents
17555 </TD>
17556 <TD>
17557 table of contents
17558 </TD>
17559 <TD>
17560 &nbsp;
17561 </TD>
17562 </TR>
17563 <TR>
17564 <TD ALIGN="CENTER">
17565 [Index] </TD>
17566 <TD ALIGN="CENTER">
17567 Index
17568 </TD>
17569 <TD>
17570 concept index
17571 </TD>
17572 <TD>
17573 &nbsp;
17574 </TD>
17575 </TR>
17576 <TR>
17577 <TD ALIGN="CENTER">
17578 [ ? ] </TD>
17579 <TD ALIGN="CENTER">
17580 About
17581 </TD>
17582 <TD>
17583 this page
17584 </TD>
17585 <TD>
17586 &nbsp;
17587 </TD>
17588 </TR>
17589 </TABLE>
17590 <P>
17591 where the <STRONG> Example </STRONG> assumes that the current position
17592 is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
17593 the following structure:</P>
17594 <UL>
17595 <LI> 1. Section One
17596 <UL>
17597 <LI>1.1 Subsection One-One
17598 <UL>
17599 <LI>...</LI>
17600 </UL>
17601 <LI>1.2 Subsection One-Two
17602 <UL>
17603 <LI>1.2.1 Subsubsection One-Two-One</LI>
17604 <LI>1.2.2 Subsubsection One-Two-Two</LI>
17605 <LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp;
17606 <STRONG>&lt;== Current Position </STRONG></LI>
17607 <LI>1.2.4 Subsubsection One-Two-Four</LI>
17608 </UL>
17609 </LI>
17610 <LI>1.3 Subsection One-Three
17611 <UL>
17612 <LI>...</LI>
17613 </UL>
17614 </LI>
17615 <LI>1.4 Subsection One-Four</LI>
17616 </UL>
17617 </LI>
17618 </UL>
17619
17620 <HR SIZE=1>
17621 <BR>
17622 <FONT SIZE="-1">
17623 This document was generated
17624 by <I>Jim Van Zandt</I> on <I>August, 25 2003</I>
17625 using <A HREF="http://texi2html.cvshome.org"><I>texi2html</I></A>
17626 </FONT>
17627
17628 </BODY>
17629 </HTML>
0 This is pspp.info, produced by makeinfo version 4.0 from pspp.texi.
0 This is pspp.info, produced by makeinfo version 4.3 from pspp.texi.
11
22 START-INFO-DIR-ENTRY
33 * PSPP: (pspp). Statistical analysis package.
0 This is pspp.info, produced by makeinfo version 4.0 from pspp.texi.
0 This is pspp.info, produced by makeinfo version 4.3 from pspp.texi.
11
22 START-INFO-DIR-ENTRY
33 * PSPP: (pspp). Statistical analysis package.
0 This is pspp.info, produced by makeinfo version 4.0 from pspp.texi.
0 This is pspp.info, produced by makeinfo version 4.3 from pspp.texi.
11
22 START-INFO-DIR-ENTRY
33 * PSPP: (pspp). Statistical analysis package.
0 This is pspp.info, produced by makeinfo version 4.0 from pspp.texi.
0 This is pspp.info, produced by makeinfo version 4.3 from pspp.texi.
11
22 START-INFO-DIR-ENTRY
33 * PSPP: (pspp). Statistical analysis package.
0 This is pspp.info, produced by makeinfo version 4.0 from pspp.texi.
0 This is pspp.info, produced by makeinfo version 4.3 from pspp.texi.
11
22 START-INFO-DIR-ENTRY
33 * PSPP: (pspp). Statistical analysis package.
0 This is pspp.info, produced by makeinfo version 4.0 from pspp.texi.
0 This is pspp.info, produced by makeinfo version 4.3 from pspp.texi.
11
22 START-INFO-DIR-ENTRY
33 * PSPP: (pspp). Statistical analysis package.
0 This is pspp.info, produced by makeinfo version 4.0 from pspp.texi.
0 This is pspp.info, produced by makeinfo version 4.3 from pspp.texi.
11
22 START-INFO-DIR-ENTRY
33 * PSPP: (pspp). Statistical analysis package.
0 This is pspp.info, produced by makeinfo version 4.0 from pspp.texi.
0 This is pspp.info, produced by makeinfo version 4.3 from pspp.texi.
11
22 START-INFO-DIR-ENTRY
33 * PSPP: (pspp). Statistical analysis package.
0 This is pspp.info, produced by makeinfo version 4.0 from pspp.texi.
0 This is pspp.info, produced by makeinfo version 4.3 from pspp.texi.
11
22 START-INFO-DIR-ENTRY
33 * PSPP: (pspp). Statistical analysis package.
111111
112112 #if (defined (__a29k__) || defined (_AM29K)) && W_TYPE_SIZE == 32
113113 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
114 __asm__ ("add %1,%4,%5
114 __asm__ ("add %1,%4,%5\n\
115115 addc %0,%2,%3" \
116116 : "=r" ((USItype)(sh)), \
117117 "=&r" ((USItype)(sl)) \
120120 "%r" ((USItype)(al)), \
121121 "rI" ((USItype)(bl)))
122122 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
123 __asm__ ("sub %1,%4,%5
123 __asm__ ("sub %1,%4,%5\n\
124124 subc %0,%2,%3" \
125125 : "=r" ((USItype)(sh)), \
126126 "=&r" ((USItype)(sl)) \
178178
179179 #if defined (__arm__) && W_TYPE_SIZE == 32
180180 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
181 __asm__ ("adds %1, %4, %5
181 __asm__ ("adds %1, %4, %5\n\
182182 adc %0, %2, %3" \
183183 : "=r" ((USItype)(sh)), \
184184 "=&r" ((USItype)(sl)) \
187187 "%r" ((USItype)(al)), \
188188 "rI" ((USItype)(bl)))
189189 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
190 __asm__ ("subs %1, %4, %5
190 __asm__ ("subs %1, %4, %5\n\
191191 sbc %0, %2, %3" \
192192 : "=r" ((USItype)(sh)), \
193193 "=&r" ((USItype)(sl)) \
196196 "r" ((USItype)(al)), \
197197 "rI" ((USItype)(bl)))
198198 #define umul_ppmm(xh, xl, a, b) \
199 __asm__ ("%@ Inlined umul_ppmm
200 mov %|r0, %2, lsr #16
201 mov %|r2, %3, lsr #16
202 bic %|r1, %2, %|r0, lsl #16
203 bic %|r2, %3, %|r2, lsl #16
204 mul %1, %|r1, %|r2
205 mul %|r2, %|r0, %|r2
206 mul %|r1, %0, %|r1
207 mul %0, %|r0, %0
208 adds %|r1, %|r2, %|r1
209 addcs %0, %0, #65536
210 adds %1, %1, %|r1, lsl #16
199 __asm__ ("%@ Inlined umul_ppmm\n\
200 mov %|r0, %2, lsr #16\n\
201 mov %|r2, %3, lsr #16\n\
202 bic %|r1, %2, %|r0, lsl #16\n\
203 bic %|r2, %3, %|r2, lsl #16\n\
204 mul %1, %|r1, %|r2\n\
205 mul %|r2, %|r0, %|r2\n\
206 mul %|r1, %0, %|r1\n\
207 mul %0, %|r0, %0\n\
208 adds %|r1, %|r2, %|r1\n\
209 addcs %0, %0, #65536\n\
210 adds %1, %1, %|r1, lsl #16\n\
211211 adc %0, %0, %|r1, lsr #16" \
212212 : "=&r" ((USItype)(xh)), \
213213 "=r" ((USItype)(xl)) \
248248
249249 #if defined (__gmicro__) && W_TYPE_SIZE == 32
250250 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
251 __asm__ ("add.w %5,%1
251 __asm__ ("add.w %5,%1\n\
252252 addx %3,%0" \
253253 : "=g" ((USItype)(sh)), \
254254 "=&g" ((USItype)(sl)) \
257257 "%1" ((USItype)(al)), \
258258 "g" ((USItype)(bl)))
259259 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
260 __asm__ ("sub.w %5,%1
260 __asm__ ("sub.w %5,%1\n\
261261 subx %3,%0" \
262262 : "=g" ((USItype)(sh)), \
263263 "=&g" ((USItype)(sl)) \
287287
288288 #if defined (__hppa) && W_TYPE_SIZE == 32
289289 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
290 __asm__ ("add %4,%5,%1
290 __asm__ ("add %4,%5,%1\n\
291291 addc %2,%3,%0" \
292292 : "=r" ((USItype)(sh)), \
293293 "=&r" ((USItype)(sl)) \
296296 "%rM" ((USItype)(al)), \
297297 "rM" ((USItype)(bl)))
298298 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
299 __asm__ ("sub %4,%5,%1
299 __asm__ ("sub %4,%5,%1\n\
300300 subb %2,%3,%0" \
301301 : "=r" ((USItype)(sh)), \
302302 "=&r" ((USItype)(sl)) \
335335 do { \
336336 USItype __tmp; \
337337 __asm__ ( \
338 "ldi 1,%0
339 extru,= %1,15,16,%%r0 ; Bits 31..16 zero?
340 extru,tr %1,15,16,%1 ; No. Shift down, skip add.
341 ldo 16(%0),%0 ; Yes. Perform add.
342 extru,= %1,23,8,%%r0 ; Bits 15..8 zero?
343 extru,tr %1,23,8,%1 ; No. Shift down, skip add.
344 ldo 8(%0),%0 ; Yes. Perform add.
345 extru,= %1,27,4,%%r0 ; Bits 7..4 zero?
346 extru,tr %1,27,4,%1 ; No. Shift down, skip add.
347 ldo 4(%0),%0 ; Yes. Perform add.
348 extru,= %1,29,2,%%r0 ; Bits 3..2 zero?
349 extru,tr %1,29,2,%1 ; No. Shift down, skip add.
350 ldo 2(%0),%0 ; Yes. Perform add.
351 extru %1,30,1,%1 ; Extract bit 1.
352 sub %0,%1,%0 ; Subtract it.
338 "ldi 1,%0\n\
339 extru,= %1,15,16,%%r0 ; Bits 31..16 zero?\n\
340 extru,tr %1,15,16,%1 ; No. Shift down, skip add.\n\
341 ldo 16(%0),%0 ; Yes. Perform add.\n\
342 extru,= %1,23,8,%%r0 ; Bits 15..8 zero?\n\
343 extru,tr %1,23,8,%1 ; No. Shift down, skip add.\n\
344 ldo 8(%0),%0 ; Yes. Perform add.\n\
345 extru,= %1,27,4,%%r0 ; Bits 7..4 zero?\n\
346 extru,tr %1,27,4,%1 ; No. Shift down, skip add.\n\
347 ldo 4(%0),%0 ; Yes. Perform add.\n\
348 extru,= %1,29,2,%%r0 ; Bits 3..2 zero?\n\
349 extru,tr %1,29,2,%1 ; No. Shift down, skip add.\n\
350 ldo 2(%0),%0 ; Yes. Perform add.\n\
351 extru %1,30,1,%1 ; Extract bit 1.\n\
352 sub %0,%1,%0 ; Subtract it.\n\
353353 " : "=r" (count), "=r" (__tmp) : "1" (x)); \
354354 } while (0)
355355 #endif /* hppa */
397397
398398 #if (defined (__i386__) || defined (__i486__)) && W_TYPE_SIZE == 32
399399 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
400 __asm__ ("addl %5,%1
400 __asm__ ("addl %5,%1\n\
401401 adcl %3,%0" \
402402 : "=r" ((USItype)(sh)), \
403403 "=&r" ((USItype)(sl)) \
406406 "%1" ((USItype)(al)), \
407407 "g" ((USItype)(bl)))
408408 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
409 __asm__ ("subl %5,%1
409 __asm__ ("subl %5,%1\n\
410410 sbbl %3,%0" \
411411 : "=r" ((USItype)(sh)), \
412412 "=&r" ((USItype)(sl)) \
519519
520520 #if (defined (__mc68000__) || defined (__mc68020__) || defined (__NeXT__) || defined(mc68020)) && W_TYPE_SIZE == 32
521521 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
522 __asm__ ("add%.l %5,%1
522 __asm__ ("add%.l %5,%1\n\
523523 addx%.l %3,%0" \
524524 : "=d" ((USItype)(sh)), \
525525 "=&d" ((USItype)(sl)) \
528528 "%1" ((USItype)(al)), \
529529 "g" ((USItype)(bl)))
530530 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
531 __asm__ ("sub%.l %5,%1
531 __asm__ ("sub%.l %5,%1\n\
532532 subx%.l %3,%0" \
533533 : "=d" ((USItype)(sh)), \
534534 "=&d" ((USItype)(sl)) \
567567 #else /* not mc68020 */
568568 #define umul_ppmm(xh, xl, a, b) \
569569 do { USItype __umul_tmp1, __umul_tmp2; \
570 __asm__ ("| Inlined umul_ppmm
571 move%.l %5,%3
572 move%.l %2,%0
573 move%.w %3,%1
574 swap %3
575 swap %0
576 mulu %2,%1
577 mulu %3,%0
578 mulu %2,%3
579 swap %2
580 mulu %5,%2
581 add%.l %3,%2
582 jcc 1f
583 add%.l %#0x10000,%0
584 1: move%.l %2,%3
585 clr%.w %2
586 swap %2
587 swap %3
588 clr%.w %3
589 add%.l %3,%1
590 addx%.l %2,%0
570 __asm__ ("| Inlined umul_ppmm\n\
571 move%.l %5,%3\n\
572 move%.l %2,%0\n\
573 move%.w %3,%1\n\
574 swap %3\n\
575 swap %0\n\
576 mulu %2,%1\n\
577 mulu %3,%0\n\
578 mulu %2,%3\n\
579 swap %2\n\
580 mulu %5,%2\n\
581 add%.l %3,%2\n\
582 jcc 1f\n\
583 add%.l %#0x10000,%0\n\
584 1: move%.l %2,%3\n\
585 clr%.w %2\n\
586 swap %2\n\
587 swap %3\n\
588 clr%.w %3\n\
589 add%.l %3,%1\n\
590 addx%.l %2,%0\n\
591591 | End inlined umul_ppmm" \
592592 : "=&d" ((USItype)(xh)), "=&d" ((USItype)(xl)), \
593593 "=d" (__umul_tmp1), "=&d" (__umul_tmp2) \
600600
601601 #if defined (__m88000__) && W_TYPE_SIZE == 32
602602 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
603 __asm__ ("addu.co %1,%r4,%r5
603 __asm__ ("addu.co %1,%r4,%r5\n\
604604 addu.ci %0,%r2,%r3" \
605605 : "=r" ((USItype)(sh)), \
606606 "=&r" ((USItype)(sl)) \
609609 "%rJ" ((USItype)(al)), \
610610 "rJ" ((USItype)(bl)))
611611 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
612 __asm__ ("subu.co %1,%r4,%r5
612 __asm__ ("subu.co %1,%r4,%r5\n\
613613 subu.ci %0,%r2,%r3" \
614614 : "=r" ((USItype)(sh)), \
615615 "=&r" ((USItype)(sl)) \
668668 "d" ((USItype)(v)))
669669 #else
670670 #define umul_ppmm(w1, w0, u, v) \
671 __asm__ ("multu %2,%3
672 mflo %0
671 __asm__ ("multu %2,%3\n\
672 mflo %0\n\
673673 mfhi %1" \
674674 : "=d" ((USItype)(w0)), \
675675 "=d" ((USItype)(w1)) \
690690 "d" ((UDItype)(v)))
691691 #else
692692 #define umul_ppmm(w1, w0, u, v) \
693 __asm__ ("dmultu %2,%3
694 mflo %0
693 __asm__ ("dmultu %2,%3\n\
694 mflo %0\n\
695695 mfhi %1" \
696696 : "=d" ((UDItype)(w0)), \
697697 "=d" ((UDItype)(w1)) \
860860
861861 #if defined (__pyr__) && W_TYPE_SIZE == 32
862862 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
863 __asm__ ("addw %5,%1
863 __asm__ ("addw %5,%1\n\
864864 addwc %3,%0" \
865865 : "=r" ((USItype)(sh)), \
866866 "=&r" ((USItype)(sl)) \
869869 "%1" ((USItype)(al)), \
870870 "g" ((USItype)(bl)))
871871 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
872 __asm__ ("subw %5,%1
872 __asm__ ("subw %5,%1\n\
873873 subwb %3,%0" \
874874 : "=r" ((USItype)(sh)), \
875875 "=&r" ((USItype)(sl)) \
882882 ({union {UDItype __ll; \
883883 struct {USItype __h, __l;} __i; \
884884 } __xx; \
885 __asm__ ("movw %1,%R0
885 __asm__ ("movw %1,%R0\n\
886886 uemul %2,%0" \
887887 : "=&r" (__xx.__ll) \
888888 : "g" ((USItype) (u)), \
892892
893893 #if defined (__ibm032__) /* RT/ROMP */ && W_TYPE_SIZE == 32
894894 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
895 __asm__ ("a %1,%5
895 __asm__ ("a %1,%5\n\
896896 ae %0,%3" \
897897 : "=r" ((USItype)(sh)), \
898898 "=&r" ((USItype)(sl)) \
901901 "%1" ((USItype)(al)), \
902902 "r" ((USItype)(bl)))
903903 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
904 __asm__ ("s %1,%5
904 __asm__ ("s %1,%5\n\
905905 se %0,%3" \
906906 : "=r" ((USItype)(sh)), \
907907 "=&r" ((USItype)(sl)) \
913913 do { \
914914 USItype __m0 = (m0), __m1 = (m1); \
915915 __asm__ ( \
916 "s r2,r2
917 mts r10,%2
918 m r2,%3
919 m r2,%3
920 m r2,%3
921 m r2,%3
922 m r2,%3
923 m r2,%3
924 m r2,%3
925 m r2,%3
926 m r2,%3
927 m r2,%3
928 m r2,%3
929 m r2,%3
930 m r2,%3
931 m r2,%3
932 m r2,%3
933 m r2,%3
934 cas %0,r2,r0
916 "s r2,r2\n\
917 mts r10,%2\n\
918 m r2,%3\n\
919 m r2,%3\n\
920 m r2,%3\n\
921 m r2,%3\n\
922 m r2,%3\n\
923 m r2,%3\n\
924 m r2,%3\n\
925 m r2,%3\n\
926 m r2,%3\n\
927 m r2,%3\n\
928 m r2,%3\n\
929 m r2,%3\n\
930 m r2,%3\n\
931 m r2,%3\n\
932 m r2,%3\n\
933 m r2,%3\n\
934 cas %0,r2,r0\n\
935935 mfs r10,%1" \
936936 : "=r" ((USItype)(ph)), \
937937 "=r" ((USItype)(pl)) \
962962 #if defined (__sh2__) && W_TYPE_SIZE == 32
963963 #define umul_ppmm(w1, w0, u, v) \
964964 __asm__ ( \
965 "dmulu.l %2,%3
966 sts macl,%1
965 "dmulu.l %2,%3\n\
966 sts macl,%1\n\
967967 sts mach,%0" \
968968 : "=r" ((USItype)(w1)), \
969969 "=r" ((USItype)(w0)) \
975975
976976 #if defined (__sparc__) && W_TYPE_SIZE == 32
977977 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
978 __asm__ ("addcc %r4,%5,%1
978 __asm__ ("addcc %r4,%5,%1\n\
979979 addx %r2,%3,%0" \
980980 : "=r" ((USItype)(sh)), \
981981 "=&r" ((USItype)(sl)) \
985985 "rI" ((USItype)(bl)) \
986986 __CLOBBER_CC)
987987 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
988 __asm__ ("subcc %r4,%5,%1
988 __asm__ ("subcc %r4,%5,%1\n\
989989 subx %r2,%3,%0" \
990990 : "=r" ((USItype)(sh)), \
991991 "=&r" ((USItype)(sl)) \
10321032 "r" ((USItype)(v)))
10331033 #define UMUL_TIME 5
10341034 #define udiv_qrnnd(q, r, n1, n0, d) \
1035 __asm__ ("! Inlined udiv_qrnnd
1036 wr %%g0,%2,%%y ! Not a delayed write for sparclite
1037 tst %%g0
1038 divscc %3,%4,%%g1
1039 divscc %%g1,%4,%%g1
1040 divscc %%g1,%4,%%g1
1041 divscc %%g1,%4,%%g1
1042 divscc %%g1,%4,%%g1
1043 divscc %%g1,%4,%%g1
1044 divscc %%g1,%4,%%g1
1045 divscc %%g1,%4,%%g1
1046 divscc %%g1,%4,%%g1
1047 divscc %%g1,%4,%%g1
1048 divscc %%g1,%4,%%g1
1049 divscc %%g1,%4,%%g1
1050 divscc %%g1,%4,%%g1
1051 divscc %%g1,%4,%%g1
1052 divscc %%g1,%4,%%g1
1053 divscc %%g1,%4,%%g1
1054 divscc %%g1,%4,%%g1
1055 divscc %%g1,%4,%%g1
1056 divscc %%g1,%4,%%g1
1057 divscc %%g1,%4,%%g1
1058 divscc %%g1,%4,%%g1
1059 divscc %%g1,%4,%%g1
1060 divscc %%g1,%4,%%g1
1061 divscc %%g1,%4,%%g1
1062 divscc %%g1,%4,%%g1
1063 divscc %%g1,%4,%%g1
1064 divscc %%g1,%4,%%g1
1065 divscc %%g1,%4,%%g1
1066 divscc %%g1,%4,%%g1
1067 divscc %%g1,%4,%%g1
1068 divscc %%g1,%4,%%g1
1069 divscc %%g1,%4,%0
1070 rd %%y,%1
1071 bl,a 1f
1072 add %1,%4,%1
1035 __asm__ ("! Inlined udiv_qrnnd\n\
1036 wr %%g0,%2,%%y ! Not a delayed write for sparclite\n\
1037 tst %%g0\n\
1038 divscc %3,%4,%%g1\n\
1039 divscc %%g1,%4,%%g1\n\
1040 divscc %%g1,%4,%%g1\n\
1041 divscc %%g1,%4,%%g1\n\
1042 divscc %%g1,%4,%%g1\n\
1043 divscc %%g1,%4,%%g1\n\
1044 divscc %%g1,%4,%%g1\n\
1045 divscc %%g1,%4,%%g1\n\
1046 divscc %%g1,%4,%%g1\n\
1047 divscc %%g1,%4,%%g1\n\
1048 divscc %%g1,%4,%%g1\n\
1049 divscc %%g1,%4,%%g1\n\
1050 divscc %%g1,%4,%%g1\n\
1051 divscc %%g1,%4,%%g1\n\
1052 divscc %%g1,%4,%%g1\n\
1053 divscc %%g1,%4,%%g1\n\
1054 divscc %%g1,%4,%%g1\n\
1055 divscc %%g1,%4,%%g1\n\
1056 divscc %%g1,%4,%%g1\n\
1057 divscc %%g1,%4,%%g1\n\
1058 divscc %%g1,%4,%%g1\n\
1059 divscc %%g1,%4,%%g1\n\
1060 divscc %%g1,%4,%%g1\n\
1061 divscc %%g1,%4,%%g1\n\
1062 divscc %%g1,%4,%%g1\n\
1063 divscc %%g1,%4,%%g1\n\
1064 divscc %%g1,%4,%%g1\n\
1065 divscc %%g1,%4,%%g1\n\
1066 divscc %%g1,%4,%%g1\n\
1067 divscc %%g1,%4,%%g1\n\
1068 divscc %%g1,%4,%%g1\n\
1069 divscc %%g1,%4,%0\n\
1070 rd %%y,%1\n\
1071 bl,a 1f\n\
1072 add %1,%4,%1\n\
10731073 1: ! End of inline udiv_qrnnd" \
10741074 : "=r" ((USItype)(q)), \
10751075 "=r" ((USItype)(r)) \
10901090 /* Default to sparc v7 versions of umul_ppmm and udiv_qrnnd. */
10911091 #ifndef umul_ppmm
10921092 #define umul_ppmm(w1, w0, u, v) \
1093 __asm__ ("! Inlined umul_ppmm
1094 wr %%g0,%2,%%y ! SPARC has 0-3 delay insn after a wr
1095 sra %3,31,%%g2 ! Don't move this insn
1096 and %2,%%g2,%%g2 ! Don't move this insn
1097 andcc %%g0,0,%%g1 ! Don't move this insn
1098 mulscc %%g1,%3,%%g1
1099 mulscc %%g1,%3,%%g1
1100 mulscc %%g1,%3,%%g1
1101 mulscc %%g1,%3,%%g1
1102 mulscc %%g1,%3,%%g1
1103 mulscc %%g1,%3,%%g1
1104 mulscc %%g1,%3,%%g1
1105 mulscc %%g1,%3,%%g1
1106 mulscc %%g1,%3,%%g1
1107 mulscc %%g1,%3,%%g1
1108 mulscc %%g1,%3,%%g1
1109 mulscc %%g1,%3,%%g1
1110 mulscc %%g1,%3,%%g1
1111 mulscc %%g1,%3,%%g1
1112 mulscc %%g1,%3,%%g1
1113 mulscc %%g1,%3,%%g1
1114 mulscc %%g1,%3,%%g1
1115 mulscc %%g1,%3,%%g1
1116 mulscc %%g1,%3,%%g1
1117 mulscc %%g1,%3,%%g1
1118 mulscc %%g1,%3,%%g1
1119 mulscc %%g1,%3,%%g1
1120 mulscc %%g1,%3,%%g1
1121 mulscc %%g1,%3,%%g1
1122 mulscc %%g1,%3,%%g1
1123 mulscc %%g1,%3,%%g1
1124 mulscc %%g1,%3,%%g1
1125 mulscc %%g1,%3,%%g1
1126 mulscc %%g1,%3,%%g1
1127 mulscc %%g1,%3,%%g1
1128 mulscc %%g1,%3,%%g1
1129 mulscc %%g1,%3,%%g1
1130 mulscc %%g1,0,%%g1
1131 add %%g1,%%g2,%0
1093 __asm__ ("! Inlined umul_ppmm\n\
1094 wr %%g0,%2,%%y ! SPARC has 0-3 delay insn after a wr\n\
1095 sra %3,31,%%g2 ! Don't move this insn\n\
1096 and %2,%%g2,%%g2 ! Don't move this insn\n\
1097 andcc %%g0,0,%%g1 ! Don't move this insn\n\
1098 mulscc %%g1,%3,%%g1\n\
1099 mulscc %%g1,%3,%%g1\n\
1100 mulscc %%g1,%3,%%g1\n\
1101 mulscc %%g1,%3,%%g1\n\
1102 mulscc %%g1,%3,%%g1\n\
1103 mulscc %%g1,%3,%%g1\n\
1104 mulscc %%g1,%3,%%g1\n\
1105 mulscc %%g1,%3,%%g1\n\
1106 mulscc %%g1,%3,%%g1\n\
1107 mulscc %%g1,%3,%%g1\n\
1108 mulscc %%g1,%3,%%g1\n\
1109 mulscc %%g1,%3,%%g1\n\
1110 mulscc %%g1,%3,%%g1\n\
1111 mulscc %%g1,%3,%%g1\n\
1112 mulscc %%g1,%3,%%g1\n\
1113 mulscc %%g1,%3,%%g1\n\
1114 mulscc %%g1,%3,%%g1\n\
1115 mulscc %%g1,%3,%%g1\n\
1116 mulscc %%g1,%3,%%g1\n\
1117 mulscc %%g1,%3,%%g1\n\
1118 mulscc %%g1,%3,%%g1\n\
1119 mulscc %%g1,%3,%%g1\n\
1120 mulscc %%g1,%3,%%g1\n\
1121 mulscc %%g1,%3,%%g1\n\
1122 mulscc %%g1,%3,%%g1\n\
1123 mulscc %%g1,%3,%%g1\n\
1124 mulscc %%g1,%3,%%g1\n\
1125 mulscc %%g1,%3,%%g1\n\
1126 mulscc %%g1,%3,%%g1\n\
1127 mulscc %%g1,%3,%%g1\n\
1128 mulscc %%g1,%3,%%g1\n\
1129 mulscc %%g1,%3,%%g1\n\
1130 mulscc %%g1,0,%%g1\n\
1131 add %%g1,%%g2,%0\n\
11321132 rd %%y,%1" \
11331133 : "=r" ((USItype)(w1)), \
11341134 "=r" ((USItype)(w0)) \
11521152
11531153 #if defined (__vax__) && W_TYPE_SIZE == 32
11541154 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
1155 __asm__ ("addl2 %5,%1
1155 __asm__ ("addl2 %5,%1\n\
11561156 adwc %3,%0" \
11571157 : "=g" ((USItype)(sh)), \
11581158 "=&g" ((USItype)(sl)) \
11611161 "%1" ((USItype)(al)), \
11621162 "g" ((USItype)(bl)))
11631163 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
1164 __asm__ ("subl2 %5,%1
1164 __asm__ ("subl2 %5,%1\n\
11651165 sbwc %3,%0" \
11661166 : "=g" ((USItype)(sh)), \
11671167 "=&g" ((USItype)(sl)) \
55 msgid ""
66 msgstr ""
77 "Project-Id-Version: PACKAGE VERSION\n"
8 "POT-Creation-Date: 2001-07-03 21:46-0400\n"
8 "POT-Creation-Date: 2003-06-14 16:48-0400\n"
99 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1010 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1111 "Language-Team: LANGUAGE <LL@li.org>\n"
1212 "MIME-Version: 1.0\n"
1313 "Content-Type: text/plain; charset=CHARSET\n"
14 "Content-Transfer-Encoding: 8-bit\n"
14 "Content-Transfer-Encoding: 8bit\n"
1515
1616 #: lib/misc/getopt.c:514
1717 #, c-format
660660 "RECORDS subcommand."
661661 msgstr ""
662662
663 #: src/autorecode.c:125 src/command.c:722 src/compute.c:361
663 #: src/autorecode.c:125 src/command.c:721 src/compute.c:361
664664 #: src/data-list.c:390 src/data-list.c:840 src/data-list.c:1646
665665 #: src/do-if.c:267 src/file-handle.q:90 src/get.c:436 src/lexer.c:384
666666 #: src/loop.c:250 src/matrix-data.c:527 src/print.c:359 src/print.c:1100
24432443 msgid "Vector"
24442444 msgstr ""
24452445
2446 #: src/command.c:169
2446 #: src/command.c:168
24472447 #, c-format
24482448 msgid "%s not allowed inside FILE TYPE/END FILE TYPE."
24492449 msgstr ""
24502450
2451 #: src/command.c:173
2451 #: src/command.c:172
24522452 #, c-format
24532453 msgid "%s not allowed inside FILE TYPE GROUPED/END FILE TYPE."
24542454 msgstr ""
24552455
2456 #: src/command.c:176
2456 #: src/command.c:175
24572457 msgid "RECORD TYPE must be the first command inside a FILE TYPE structure."
24582458 msgstr ""
24592459
2460 #: src/command.c:221
2460 #: src/command.c:220
24612461 msgid "This line does not begin with a valid command name."
24622462 msgstr ""
24632463
2464 #: src/command.c:231
2464 #: src/command.c:230
24652465 #, c-format
24662466 msgid "%s is not yet implemented."
24672467 msgstr ""
24682468
2469 #: src/command.c:249
2469 #: src/command.c:248
24702470 #, c-format
24712471 msgid ""
24722472 "%s is not allowed (1) before a command to specify the input program, such as "
24742474 "PROGRAM and END INPUT PROGRAM."
24752475 msgstr ""
24762476
2477 #: src/command.c:253
2477 #: src/command.c:252
24782478 #, c-format
24792479 msgid "%s is not allowed within an input program."
24802480 msgstr ""
24812481
2482 #: src/command.c:254 src/command.c:255
2482 #: src/command.c:253 src/command.c:254
24832483 #, c-format
24842484 msgid "%s is only allowed within an input program."
24852485 msgstr ""
24862486
2487 #: src/command.c:264
2487 #: src/command.c:263
24882488 #, c-format
24892489 msgid "%s command beginning\n"
24902490 msgstr ""
24912491
2492 #: src/command.c:300
2492 #: src/command.c:299
24932493 #, c-format
24942494 msgid ""
24952495 "%s command completed\n"
24962496 "\n"
24972497 msgstr ""
24982498
2499 #: src/command.c:315
2499 #: src/command.c:314
25002500 msgid "The identifier(s) specified do not form a valid command name:"
25012501 msgstr ""
25022502
2503 #: src/command.c:318
2503 #: src/command.c:317
25042504 msgid "The identifier(s) specified do not form a complete command name:"
25052505 msgstr ""
25062506
2507 #: src/command.c:442
2507 #: src/command.c:441
25082508 msgid ""
25092509 "This command is not accepted in a syntax file. Instead, use FINISH to "
25102510 "terminate a syntax file."
25112511 msgstr ""
25122512
2513 #: src/command.c:460
2513 #: src/command.c:459
25142514 msgid ""
25152515 "This command is not executed in interactive mode. Instead, PSPP drops down "
25162516 "to the command prompt. Use EXIT if you really want to quit."
25172517 msgstr ""
25182518
2519 #: src/command.c:551
2519 #: src/command.c:550
25202520 msgid "The sentinel may not be the empty string."
25212521 msgstr ""
25222522
2523 #: src/command.c:609 src/command.c:740
2523 #: src/command.c:608 src/command.c:739
25242524 msgid "This command not allowed when the SAFER option is set."
25252525 msgstr ""
25262526
2527 #: src/command.c:622
2527 #: src/command.c:621
25282528 #, c-format
25292529 msgid "Error removing `%s': %s."
25302530 msgstr ""
25312531
2532 #: src/command.c:672
2532 #: src/command.c:671
25332533 #, c-format
25342534 msgid "Couldn't fork: %s."
25352535 msgstr ""
25362536
2537 #: src/command.c:713
2537 #: src/command.c:712
25382538 #, c-format
25392539 msgid "Error executing command: %s."
25402540 msgstr ""
25412541
2542 #: src/command.c:763
2542 #: src/command.c:762
25432543 msgid "No operating system support for this command."
25442544 msgstr ""
25452545
2546 #: src/command.c:792
2546 #: src/command.c:791
25472547 msgid "This command is not valid in a syntax file."
25482548 msgstr ""
25492549
+0
-15
src/aside less more
0 #include <config.h>
1 const char bare_version[] = "0.3.0";
2 const char version[] = GNU_PACKAGE " 0.3.0";
3 const char stat_version[] = GNU_PACKAGE " 0.3.0 (Sun Jan 9 20:06:07 EST 2000).";
4 const char host_system[] = "i686-unknown-linux";
5 const char build_system[] = "i686-unknown-linux";
6 const char default_config_path[] = "~/.pspp:";
7 const char include_path[] = "./:~/.pspp/include:/usr/share/pspp";
8 const char groff_font_path[] = "~/.pspp/font:" \
9 "/usr/share/pspp/font:" \
10 "/usr/local/lib/groff/font:" \
11 "/usr/lib/groff/font:" \
12 "/usr/local/share/groff/font:" \
13 "/usr/share/groff/font";
14 const char locale_dir[] = "/usr/share/locale";
5757 #endif
5858
5959 #if HAVE_SYS_WAIT_H
60 #include <sys/wait.h>
61
6062 #undef unused
61
62 #include <sys/wait.h>
63
6463 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)
6564 #define unused __attribute__ ((__unused__))
6665 #else
+0
-15
src/version.c less more
0 #include <config.h>
1 const char bare_version[] = "0.3.0";
2 const char version[] = GNU_PACKAGE " 0.3.0";
3 const char stat_version[] = GNU_PACKAGE " 0.3.0 (Sat Mar 31 17:58:22 EST 2001).";
4 const char host_system[] = "i686-unknown-linux";
5 const char build_system[] = "i686-unknown-linux";
6 const char default_config_path[] = "~/.pspp:/etc/pspp";
7 const char include_path[] = "./:~/.pspp/include:/usr/share/pspp";
8 const char groff_font_path[] = "~/.pspp/font:" \
9 "/usr/share/pspp/font:" \
10 "/usr/local/lib/groff/font:" \
11 "/usr/lib/groff/font:" \
12 "/usr/local/share/groff/font:" \
13 "/usr/share/groff/font";
14 const char locale_dir[] = "/usr/share/locale";