PSPP NEWS -- history of user-visible changes.
-Time-stamp: <2010-08-04 22:26:05 blp>
+Time-stamp: <2010-10-16 13:05:30 blp>
Copyright (C) 1996-9, 2000, 2008, 2009, 2010 Free Software Foundation, Inc.
See the end for copying conditions.
Please send PSPP bug reports to bug-gnu-pspp@gnu.org.
-Changes from 0.7.3 to 0.7.5:
+Changes from 0.7.3 to 0.7.6:
+
+ * NPAR TESTS now supports the /KRUSKAL-WALLIS subcommand.
+
+ * AUTORECODE now supports the /GROUP subcommand.
* The MRSETS command is now implemented.
* SAVE TRANSLATE is now implemented, with initial support for saving
data in comma-separated value and tab-delimited formats.
+ * The PRESERVE and RESTORE commands are now implemented.
+
+ * The HOST command has been updated to use more modern syntax.
+
Changes from 0.7.2 to 0.7.3:
* Charts are now produced with Cairo and Pango, instead of libplot.
Gnulib does not maintain a stable API or ABI, so it is possible that
PSPP will not work with older or newer versions of Gnulib.
- commit b3c3b08eab509ef08c9303b05375088575f8cc1b
- Author: Karl Berry <karl@freefriends.org>
- Date: Wed Jun 16 17:30:50 2010 -0700
- update from texinfo
+ commit 52a32bbd66601d12627e104cd82d9b9094d942c3
+ Author: Bruno Haible <bruno@clisp.org>
+ Date: Fri Sep 24 14:36:26 2010 +0200
+
+ unistr/u8-strchr: Fix a test failure on i586 glibc systems.
+
+ * tests/unistr/test-strchr.h (test_strchr): Disable an invalid check.
+
To clone Gnulib into a directory named "gnulib" using Git, and then
check out this particular commit, run these commands:
$(GNULIB_TOOL) --import --no-changelog --m4-base=gl/m4 \
--source-base=gl --lib=libgl --tests-base=tests \
--doc-base=gl/doc --aux-dir=build-aux --import \
- $(GNULIB_MODULES)
+ --libtool $(GNULIB_MODULES)
libtoolize --force --automake
aclocal -I m4 -I gl/m4
autoconf
--- /dev/null
+/arg-nonnull.h
+/c++defs.h
+/config.libpath
+/config.rpath
+/gitlog-to-changelog
+/install-reloc
+/reloc-ldflags
+/unused-parameter.h
+/warn-on-use.h
dnl Initialize.
AC_PREREQ(2.63)
-AC_INIT([GNU PSPP], [0.7.5], [bug-gnu-pspp@gnu.org], [pspp])
+AC_INIT([GNU PSPP], [0.7.6], [bug-gnu-pspp@gnu.org], [pspp])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_TESTDIR([tests])
LDFLAGS=$save_LDFLAGS])
if test $pspp_cv_have_libpq = yes; then
+ PSQL_SUPPORT=yes
AC_DEFINE([PSQL_SUPPORT], [1],
[Define to 1 if building in support for reading from postgres
databases.])
else
+ PSQL_SUPPORT=no
PG_CONFIG=
PG_CFLAGS=
PG_LDFLAGS=
PG_LIBS=
fi
else
+ PSQL_SUPPORT=no
pspp_cv_have_libpq=no
fi
-AM_CONDITIONAL(PSQL_SUPPORT, test $pspp_cv_have_libpq = yes)
+AC_SUBST([PSQL_SUPPORT])
dnl Check for libxml2
PKG_CHECK_MODULES(
else
GNM_SUPPORT=no
fi
-AM_CONDITIONAL([GNM_SUPPORT], [test $GNM_SUPPORT = yes])
+AC_SUBST([GNM_SUPPORT])
dnl ODT support requires libxml2.
if test $HAVE_LIBXML2 = yes; then
AM_CONDITIONAL(WITH_PERL_MODULE, test $WITH_PERL_MODULE = yes)
AC_SEARCH_LIBS([cblas_dsdot], [gslcblas],,[PSPP_REQUIRED_PREREQ([libgslcblas])])
-PKG_CHECK_MODULES([GSL], [gsl >= 1.12], [], [PSPP_REQUIRED_PREREQ([gsl 2.0 version 1.12 or later])])
+PKG_CHECK_MODULES([GSL], [gsl >= 1.12], [],
+ AC_SEARCH_LIBS([gsl_linalg_cholesky_invert], [gsl],,[PSPP_REQUIRED_PREREQ([gsl 2.0 version 1.12 or later])]))
+
PSPP_GSL_NEEDS_FGNU89_INLINE
EXTRA_DIST += doc/pspp.man \
doc/get-commands.pl
-doc/ni.texi: $(top_srcdir)/src/language/command.def doc/get-commands.pl
+$(srcdir)/doc/ni.texi: $(top_srcdir)/src/language/command.def doc/get-commands.pl
@$(MKDIR_P) doc
$(PERL) $(top_srcdir)/doc/get-commands.pl $(top_srcdir)/src/language/command.def > $@
-doc/tut.texi:
+$(srcdir)/doc/tut.texi:
@$(MKDIR_P) doc
echo "@set example-dir $(examplesdir)" > $@
@samp{/etc/passwd}:
@c If you change this example, change the regression test in
-@c tests/command/get-data-txt-examples.sh to match.
+@c tests/language/data-io/get-data.at to match.
@example
GET DATA /TYPE=TXT /FILE='/etc/passwd' /DELIMITERS=':'
/VARIABLES=username A20
The following syntax can be used to read the used car data:
@c If you change this example, change the regression test in
-@c tests/command/get-data-txt-examples.sh to match.
+@c tests/language/data-io/get-data.at to match.
@example
GET DATA /TYPE=TXT /FILE='cars.data' /DELIMITERS=' ' /FIRSTCASE=2
/VARIABLES=model A8
The following syntax can be used to read the pet store data:
@c If you change this example, change the regression test in
-@c tests/command/get-data-txt-examples.sh to match.
+@c tests/language/data-io/get-data.at to match.
@example
GET DATA /TYPE=TXT /FILE='pets.data' /DELIMITERS=', ' /QUALIFIER='''"' /ESCAPE
/FIRSTCASE=3
The following syntax can be used to read the used car data:
@c If you change this example, change the regression test in
-@c tests/command/get-data-txt-examples.sh to match.
+@c tests/language/data-io/get-data.at to match.
@example
GET DATA /TYPE=TXT /FILE='cars.data' /ARRANGEMENT=FIXED /FIRSTCASE=2
/VARIABLES=model 0-7 A
@cindex unimplemented commands
@cindex commands, unimplemented
-@include doc/ni.texi
+@include ni.texi
@menu
* BINOMIAL:: Binomial Test
* CHISQUARE:: Chisquare Test
+* KRUSKAL-WALLIS:: Kruskal-Wallis Test
* WILCOXON:: Wilcoxon Signed Ranks Test
* SIGN:: The Sign Test
@end menu
If no /EXPECTED subcommand is given, then then equal frequencies
are expected.
+
+@node KRUSKAL-WALLIS
+@subsection Kruskal-Wallis Test
+@comment node-name, next, previous, up
+@vindex KRUSKAL-WALLIS
+@vindex K-W
+@cindex Kruskal-Wallis test
+
+@display
+ [ /KRUSKAL-WALLIS = varlist BY var (lower, upper) ]
+@end display
+
+The Kruskal-Wallis test is used to compare data from an
+arbitrary number of populations. It does not assume normality.
+The data to be compared are specified by @var{varlist}.
+The categorical variable determining the groups to which the
+data belongs is given by @var{var}. The limits @var{lower} and
+@var{upper} specify the valid range of @var{var}. Any cases for
+which @var{var} falls outside [@var{lower}, @var{upper}] will be
+ignored.
+
+The mean rank of each group as well as the chi-squared value and significance
+of the test will be printed.
+The abbreviated subcommand K-W may be used in place of KRUSKAL-WALLIS.
+
+
@node WILCOXON
@subsection Wilcoxon Matched Pairs Signed Ranks Test
@comment node-name, next, previous, up
@display
AUTORECODE VARIABLES=src_vars INTO dest_vars
- /DESCENDING
- /PRINT
+ [ /DESCENDING ]
+ [ /PRINT ]
+ [ /GROUP ]
@end display
The @cmd{AUTORECODE} procedure considers the @var{n} values that a variable
PRINT is currently ignored.
+The GROUP subcommand is relevant only if more than one variable is to be
+recoded. It causes a single mapping between source and target values to
+be used, instead of one map per variable.
+
@cmd{AUTORECODE} is a procedure. It causes the data to be read.
@node COMPUTE
@alias prompt = sansserif
-@include doc/tut.texi
+@include tut.texi
@node Using PSPP
@chapter Using PSPP
* INCLUDE:: Include a file within the current one.
* INSERT:: Insert a file within the current one.
* PERMISSIONS:: Change permissions on a file.
+* PRESERVE and RESTORE:: Saving settings and restoring them later.
* SET:: Adjust PSPP runtime parameters.
* SHOW:: Display runtime parameters.
* SUBTITLE:: Provide a document subtitle.
@display
HOST.
+HOST COMMAND=['command'...].
@end display
@cmd{HOST} suspends the current PSPP session and temporarily returns control
to the operating system.
This command cannot be used if the SAFER setting is active.
+If the COMMAND subcommand is specified, as a sequence of shell
+commands as quoted strings within square brackets, then PSPP executes
+them together in a single subshell.
+
+If no subcommands are specified, then PSPP invokes an interactive
+subshell.
@node INCLUDE
@section INCLUDE
This command cannot be used if the SAFER setting is active.
+@node PRESERVE and RESTORE
+@section PRESERVE and RESTORE
+@vindex PRESERVE
+@vindex RESTORE
+
+@display
+PRESERVE.
+@dots{}
+RESTORE.
+@end display
+
+@cmd{PRESERVE} saves all of the settings that @cmd{SET} (@pxref{SET})
+can adjust. A later @cmd{RESTORE} command restores those settings.
+
+@cmd{PRESERVE} can be nested up to five levels deep.
+
@node SET
@section SET
@vindex SET
}
}
gsl_matrix_free (B);
- return GSL_SUCCESS;
free (ordered_cols);
+ return GSL_SUCCESS;
}
return GSL_ENOTSQR;
}
PREREQ_PM => {POSIX=>0},
PM => {"lib/PSPP.pm", "\$(INST_LIBDIR)/PSPP.pm"},
($] >= 5.005 ? ## Add these new keywords supported since 5.005
- (ABSTRACT_FROM => 'lib/PSPP.pm', # retrieve abstract from module
+ (ABSTRACT => 'Perl extension to PSPP',
AUTHOR => 'John Darrington <john@darrington.wattle.id.au>') : ()),
INC => "-I $Locations{SourceDir} -I $Locations{SourceDir}/src -I $Locations{SourceDir}/gl -I $Locations{BuildDir}/gl -I $Locations{BuildDir}",
MYEXTLIB => "$Locations{BuildDir}/src/.libs/libpspp-core.\$(SO)",
MODULE = PSPP PACKAGE = PSPP
+PROTOTYPES: ENABLE
+
void
onBoot (ver)
const char *ver
if ( ifmt )
{
struct substring ss = ss_cstr (SvPV_nolen (sv));
- if ( ! data_in (ss, LEGACY_NATIVE, ifmt->type, 0, 0, 0,
- sfi->dict,
- case_data_rw (c, v),
- var_get_width (v)) )
+ char *error;
+ bool ok;
+
+ error = data_in (ss, LEGACY_NATIVE, ifmt->type,
+ case_data_rw (c, v), var_get_width (v),
+ dict_get_encoding (sfi->dict));
+ ok = error == NULL;
+ free (error);
+
+ if ( !ok )
{
RETVAL = 0;
goto finish;
cd perl-module && $(MAKE) $(AM_MAKEFLAGS) tardist
PHONY += module-make
-module-make: perl-module/Makefile src/libpspp-core.la
+module-make: perl-module/Makefile
cd perl-module && $(MAKE) $(AM_MAKEFLAGS)
ALL_LOCAL += perl_module_tarball
-perl_module_tarball: $(module_sources)
- if test x"$(top_builddir)" != x"$(top_srcdir)" ; then \
+perl_module_tarball: $(module_sources) src/libpspp-core.la
+ @if test x"$(top_builddir)" != x"$(top_srcdir)" ; then \
for f in $(module_sources); do \
destdir=`dirname $$f` ;\
mkdir -p $$destdir ;\
ok ( !ref $sf, "Returns undef on opening failure");
- ok ("$PSPP::errstr" eq "Error opening \"$tempdir/no-such-file.sav\" for reading as a system file: No such file or directory.",
+ ok ("$PSPP::errstr" eq "Error opening `$tempdir/no-such-file.sav' for reading as a system file: No such file or directory.",
"Error string on open failure");
}
# Francisco J. Miguel Quesada <Miguel.Quesada@uab.cat>, 2009.
# Palmira Payá Sanchez, 2009.
# Javier Gómez Serrano, 2009.
-#
+# F. J. Miguel Quesada <miguel.quesada@uab.cat>, 2010.
#
msgid ""
msgstr ""
-"Project-Id-Version: pspp-0.7.2-pre1\n"
+"Project-Id-Version: pspp-0.7.5\n"
"Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2010-05-21 12:02+0200\n"
-"PO-Revision-Date: 2010-01-24 16:28+0100\n"
+"POT-Creation-Date: 2010-05-21 16:40-0700\n"
+"PO-Revision-Date: 2010-10-11 13:23+0200\n"
"Last-Translator: Francesc Josep Miguel Quesada <Miguel.Quesada@uab.cat>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
"MIME-Version: 1.0\n"
msgstr "Prefereixo les etiquetes de variable"
#: src/ui/gui/psppire-var-view.c:193
-#, fuzzy, c-format
+#, c-format
msgid "Var%d"
-msgstr "Parell %d"
+msgstr "Var%d"
#: src/data/any-reader.c:56
#, c-format
#: src/data/calendar.c:96
#, c-format
msgid "Date %04d-%d-%d is before the earliest acceptable date of 1582-10-15."
-msgstr ""
-"La data %04d-%d-%d és anterior de la data acceptada més antiga, 1582-10-15."
+msgstr "La data %04d-%d-%d és anterior de la data acceptada més antiga, 1582-10-15."
#: src/data/casereader-filter.c:221
-msgid ""
-"At least one case in the data read had a weight value that was user-missing, "
-"system-missing, zero, or negative. These case(s) were ignored."
-msgstr ""
-"Almenys un cas a la lectura de dades tenia un valor de ponderació que és "
-"perdut d'usuari, de sistema, zero o negatiu. Aquest(s) cas(os) van ser "
-"ignorat(s)."
+msgid "At least one case in the data read had a weight value that was user-missing, system-missing, zero, or negative. These case(s) were ignored."
+msgstr "Almenys un cas a la lectura de dades tenia un valor de ponderació que és perdut d'usuari, de sistema, zero o negatiu. Aquest(s) cas(os) van ser ignorat(s)."
#: src/data/data-in.c:274 src/data/data-in.c:464
msgid "Field contents are not numeric."
msgstr "A la data s'espera un delimitador entre els camps."
#: src/data/data-in.c:837
-msgid ""
-"Unrecognized month format. Months may be specified as Arabic or Roman "
-"numerals or as at least 3 letters of their English names."
-msgstr ""
-"Format de mes no reconegut. Els mesos poden ser especificats com a números "
-"Aràbics o Romans, o com a mínim 3 lletres dels seus noms en Anglès."
+msgid "Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names."
+msgstr "Format de mes no reconegut. Els mesos poden ser especificats com a números Aràbics o Romans, o com a mínim 3 lletres dels seus noms en Anglès."
#: src/data/data-in.c:864
#, c-format
msgstr "Minut (%ld) ha de ser entre 0 i 59."
#: src/data/data-in.c:1014
-msgid ""
-"Unrecognized weekday name. At least the first two letters of an English "
-"weekday name must be specified."
-msgstr ""
-"Dia de la setmana no reconegut. Al menys s'han d'especificar les dues "
-"primeres lletres del nom en anglès."
+msgid "Unrecognized weekday name. At least the first two letters of an English weekday name must be specified."
+msgstr "Dia de la setmana no reconegut. Al menys s'han d'especificar les dues primeres lletres del nom en anglès."
#: src/data/data-in.c:1152
#, c-format
msgstr "zero"
#: src/data/dictionary.c:980
-msgid ""
-"At least one case in the data file had a weight value that was user-missing, "
-"system-missing, zero, or negative. These case(s) were ignored."
-msgstr ""
-"Almenys un cas a l'arxiu de dades tenia un valor de ponderació que és perdut "
-"d'usuari, de sistema, zero o negatiu. Aquest(s) cas(os) van ser ignorat(s)."
+msgid "At least one case in the data file had a weight value that was user-missing, system-missing, zero, or negative. These case(s) were ignored."
+msgstr "Almenys un cas a l'arxiu de dades tenia un valor de ponderació que és perdut d'usuari, de sistema, zero o negatiu. Aquest(s) cas(os) van ser ignorat(s)."
#: src/data/dictionary.c:1283
#, c-format
#: src/data/file-handle-def.c:462
#, c-format
msgid "Can't read from %s as a %s because it is already being read as a %s."
-msgstr ""
-"No es pot llegir de %s com una %s perquè ja està sent llegit com una %s."
+msgstr "No es pot llegir de %s com una %s perquè ja està sent llegit com una %s."
#: src/data/file-handle-def.c:466
#, c-format
#: src/data/file-name.c:168
#, c-format
msgid "Not opening pipe file `%s' because SAFER option set."
-msgstr ""
-"No obrir l'arxiu de transferència '%s' perquè l'opció SAFER està activada."
+msgstr "No obrir l'arxiu de transferència '%s' perquè l'opció SAFER està activada."
#: src/data/format.c:235
msgid "Input format"
#: src/data/format.c:260
#, c-format
msgid "%s %s specifies width %d, but %s requires a width between %d and %d."
-msgstr ""
-"%s %s especifica amplada %d, però %s requereix una amplada entre %d i %d."
+msgstr "%s %s especifica amplada %d, però %s requereix una amplada entre %d i %d."
#: src/data/format.c:269
#, c-format
msgid "%s %s specifies %d decimal place, but %s does not allow any decimals."
-msgid_plural ""
-"%s %s specifies %d decimal places, but %s does not allow any decimals."
+msgid_plural "%s %s specifies %d decimal places, but %s does not allow any decimals."
msgstr[0] "%s %s especifica %d lloc decimal, però %s no en permet cap."
msgstr[1] "%s %s especifica %d llocs decimals, però %s no en permet cap."
#: src/data/format.c:280
#, c-format
-msgid ""
-"%s %s specifies %d decimal place, but the given width allows at most %d "
-"decimals."
-msgid_plural ""
-"%s %s specifies %d decimal places, but the given width allows at most %d "
-"decimals."
-msgstr[0] ""
-"%s %s especifica %d lloc decimal, però l'amplada donada permet com a molt %d "
-"decimals."
-msgstr[1] ""
-"%s %s especifica %d llocs decimals, però l'amplada donada permet com a molt %"
-"d decimals."
+msgid "%s %s specifies %d decimal place, but the given width allows at most %d decimals."
+msgid_plural "%s %s specifies %d decimal places, but the given width allows at most %d decimals."
+msgstr[0] "%s %s especifica %d lloc decimal, però l'amplada donada permet com a molt %d decimals."
+msgstr[1] "%s %s especifica %d llocs decimals, però l'amplada donada permet com a molt %d decimals."
#: src/data/format.c:287
#, c-format
-msgid ""
-"%s %s specifies %d decimal place, but the given width does not allow for any "
-"decimals."
-msgid_plural ""
-"%s %s specifies %d decimal places, but the given width does not allow for "
-"any decimals."
-msgstr[0] ""
-"%s %s especifica %d lloc decimal, però l'amplada donada no en permet cap."
-msgstr[1] ""
-"%s %s especifica %d llocs decimals, però l'amplada donada no en permet cap."
+msgid "%s %s specifies %d decimal place, but the given width does not allow for any decimals."
+msgid_plural "%s %s specifies %d decimal places, but the given width does not allow for any decimals."
+msgstr[0] "%s %s especifica %d lloc decimal, però l'amplada donada no en permet cap."
+msgstr[1] "%s %s especifica %d llocs decimals, però l'amplada donada no en permet cap."
#: src/data/format.c:326
#, c-format
msgstr "Variable de cadena amb amplada %d no és compatible amb el format %s."
#: src/data/gnumeric-reader.c:36
-msgid ""
-"Support for Gnumeric files was not compiled into this installation of PSPP"
-msgstr ""
-"Suport per a arxius Gnumeric no va ser compilat en aquesta instal·lació de "
-"PSPP"
+msgid "Support for Gnumeric files was not compiled into this installation of PSPP"
+msgstr "Suport per a arxius Gnumeric no va ser compilat en aquesta instal·lació de PSPP"
#: src/data/gnumeric-reader.c:364
#, c-format
msgstr "Eliminant %s: %s."
#: src/data/por-file-reader.c:99
-#, fuzzy, c-format
+#, c-format
msgid "portable file %s corrupt at offset 0x%llx: "
-msgstr "arxiu portàtil %s corromput a la posició 0x%lx: "
+msgstr "l'arxiu portàtil %s és trencat a la posició 0x%llx: "
#: src/data/por-file-reader.c:128
-#, fuzzy, c-format
+#, c-format
msgid "reading portable file %s at offset 0x%llx: "
-msgstr "llegint l'arxiu portàtil %s en la posició 0x%lx: "
+msgstr "Llegint l'arxiu portàtil %s en la posició 0x%llx: "
#: src/data/por-file-reader.c:156
#, c-format
#: src/data/por-file-reader.c:275
#, c-format
-msgid ""
-"An error occurred while opening \"%s\" for reading as a portable file: %s."
+msgid "An error occurred while opening \"%s\" for reading as a portable file: %s."
msgstr "Error en obrir \"%s\" per a la lectura com a arxiu portàtil: %s."
#: src/data/por-file-reader.c:296
#: src/data/por-file-reader.c:593
#, c-format
-msgid ""
-"%s: Bad format specifier byte (%d). Variable will be assigned a default "
-"format."
-msgstr ""
-"%s: Byte especificador de format invàlid (%d). S'assignarà el format "
-"predeterminat a la variable."
+msgid "%s: Bad format specifier byte (%d). Variable will be assigned a default format."
+msgstr "%s: Byte especificador de format invàlid (%d). S'assignarà el format predeterminat a la variable."
#: src/data/por-file-reader.c:614
#, c-format
#: src/data/por-file-reader.c:618
#, c-format
msgid "String variable %s with width %d has invalid format specifier %s."
-msgstr ""
-"La variable en cadena %s amb longitud %d té una especificació de format "
-"invàlida %s."
+msgstr "La variable en cadena %s amb longitud %d té una especificació de format invàlida %s."
#: src/data/por-file-reader.c:642
msgid "Expected variable count record."
#: src/data/por-file-reader.c:797
#, c-format
-msgid ""
-"Cannot assign value labels to %s and %s, which have different variable types."
-msgstr ""
-"No es pot assignar etiquetes de valor a %s i %s, que tenen diferent tipus de "
-"variables."
+msgid "Cannot assign value labels to %s and %s, which have different variable types."
+msgstr "No es pot assignar etiquetes de valor a %s i %s, que tenen diferent tipus de variables."
#: src/data/por-file-writer.c:141
#, c-format
msgstr "Error I/O en escriure l'arxiu portàtil \"%s\"."
#: src/data/psql-reader.c:46
-msgid ""
-"Support for reading postgres databases was not compiled into this "
-"installation of PSPP"
-msgstr ""
-"El suport per a la lectura de les bases de dades postgres no va ser compilat "
-"en aquesta instal·lació de PSPP"
+msgid "Support for reading postgres databases was not compiled into this installation of PSPP"
+msgstr "El suport per a la lectura de les bases de dades postgres no va ser compilat en aquesta instal·lació de PSPP"
#: src/data/psql-reader.c:242
msgid "Memory error whilst opening psql source"
#: src/data/psql-reader.c:263
#, c-format
-msgid ""
-"Postgres server is version %s. Reading from versions earlier than 8.0 is not "
-"supported."
-msgstr ""
-"La versió del servidor Postgres és la %s. No es possible la lectura des de "
-"versions anteriors a la 8.0."
+msgid "Postgres server is version %s. Reading from versions earlier than 8.0 is not supported."
+msgstr "La versió del servidor Postgres és la %s. No es possible la lectura des de versions anteriors a la 8.0."
#: src/data/psql-reader.c:283
-msgid ""
-"Connection is unencrypted, but unencrypted connections have not been "
-"permitted."
-msgstr ""
-"La connexió no està xifrada, però les connexions sense xifrar no estan "
-"permeses."
+msgid "Connection is unencrypted, but unencrypted connections have not been permitted."
+msgstr "La connexió no està xifrada, però les connexions sense xifrar no estan permeses."
#: src/data/psql-reader.c:322 src/data/psql-reader.c:347
#: src/data/psql-reader.c:357
#: src/data/scratch-reader.c:54
#, c-format
-msgid ""
-"Scratch file handle %s has not yet been written, using SAVE or another "
-"procedure, so it cannot yet be used for reading."
-msgstr ""
-"El manipulador de l'arxius de treball %s encara no s'ha escrit, utilitzant "
-"SAVE o altre procediment, de manera que encara no es pot llegir."
+msgid "Scratch file handle %s has not yet been written, using SAVE or another procedure, so it cannot yet be used for reading."
+msgstr "El manipulador de l'arxius de treball %s encara no s'ha escrit, utilitzant SAVE o altre procediment, de manera que encara no es pot llegir."
#. TRANSLATORS: this fragment will be interpolated into
#. messages in fh_lock() that identify types of files.
#: src/data/settings.c:608
#, c-format
-msgid ""
-"%s: Custom currency string `%s' does not contain exactly three periods or "
-"commas (or it contains both)."
-msgstr ""
-"%s: Cadena de moneda personalitzada '%s' no conté exactament tres punts o "
-"comes (o els conté ambdós)."
+msgid "%s: Custom currency string `%s' does not contain exactly three periods or commas (or it contains both)."
+msgstr "%s: Cadena de moneda personalitzada '%s' no conté exactament tres punts o comes (o els conté ambdós)."
#: src/data/short-names.c:52
msgid "Variable suffix too large."
#: src/data/sys-file-reader.c:226
#, c-format
msgid "Recoded variable name duplicates an existing `%s' within system file."
-msgstr ""
-"El nom de la variable recodificada duplica `%s' existent dins de l'arxiu de "
-"sistema."
+msgstr "El nom de la variable recodificada duplica `%s' existent dins de l'arxiu de sistema."
#. TRANSLATORS: this fragment will be interpolated into
#. messages in fh_lock() that identify types of files.
#: src/data/sys-file-reader.c:388
#, c-format
msgid "File header claims %d variable positions but %d were read from file."
-msgstr ""
-"Capçalera de l'arxiu requereix %d posicions de variable, però s'han llegit %"
-"d des de l'arxiu."
+msgstr "Capçalera de l'arxiu requereix %d posicions de variable, però s'han llegit %d des de l'arxiu."
#: src/data/sys-file-reader.c:428
#, c-format
msgstr "Això no és un arxiu de sistema de SPSS."
#: src/data/sys-file-reader.c:525 tests/dissect-sysfile.c:227
-msgid ""
-"Compression bias is not the usual value of 100, or system file uses "
-"unrecognized floating-point format."
-msgstr ""
-"El biaix de compressió no és el valor habitual de 100, o l'arxiu de sistema "
-"utilitza un format de punt flotant no reconegut."
+msgid "Compression bias is not the usual value of 100, or system file uses unrecognized floating-point format."
+msgstr "El biaix de compressió no és el valor habitual de 100, o l'arxiu de sistema utilitza un format de punt flotant no reconegut."
#: src/data/sys-file-reader.c:602
#, c-format
#: src/data/sys-file-reader.c:649 tests/dissect-sysfile.c:387
msgid "Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3."
-msgstr ""
-"Camp d'indicador de valors perduts numèrics no és -3, -2, 0, 1, 2 o 3."
+msgstr "Camp d'indicador de valors perduts numèrics no és -3, -2, 0, 1, 2 o 3."
#: src/data/sys-file-reader.c:667 tests/dissect-sysfile.c:402
msgid "String missing value indicator field is not 0, 1, 2, or 3."
#: src/data/sys-file-reader.c:893
#, c-format
-msgid ""
-"Unrecognized record type 7, subtype %d. Please send a copy of this file, "
-"and the syntax which created it to %s"
-msgstr ""
-"Registre de tipus 7, subtipus %d , no reconegut. Si us plau envieu una còpia "
-"d'aquest arxiu, així com de la sintaxi que el va crear a %s"
+msgid "Unrecognized record type 7, subtype %d. Please send a copy of this file, and the syntax which created it to %s"
+msgstr "Registre de tipus 7, subtipus %d , no reconegut. Si us plau envieu una còpia d'aquest arxiu, així com de la sintaxi que el va crear a %s"
#: src/data/sys-file-reader.c:920 tests/dissect-sysfile.c:594
#, c-format
msgid "Bad size (%zu) or count (%zu) field on record type 7, subtype 3."
-msgstr ""
-"Camp de longitud (%zu) o quantitat (%zu) invàlids en el registre tipus 7, "
-"subtipus 3."
+msgstr "Camp de longitud (%zu) o quantitat (%zu) invàlids en el registre tipus 7, subtipus 3."
#: src/data/sys-file-reader.c:940
#, c-format
-msgid ""
-"Floating-point representation indicated by system file (%d) differs from "
-"expected (%d)."
-msgstr ""
-"Representació del punt flotant indicat per l'arxiu de sistema (%d) difereix "
-"de l'esperat (%d)."
+msgid "Floating-point representation indicated by system file (%d) differs from expected (%d)."
+msgstr "Representació del punt flotant indicat per l'arxiu de sistema (%d) difereix de l'esperat (%d)."
#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:110
-#, fuzzy
msgid "Little Endian"
-msgstr "Little Endian."
+msgstr "Tipus Little-Endian."
#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:109
-#, fuzzy
msgid "Big Endian"
-msgstr "Big Endian."
+msgstr "Tipus Big-Endian."
#: src/data/sys-file-reader.c:954
#, c-format
-msgid ""
-"Integer format indicated by system file (%s) differs from expected (%s)."
-msgstr ""
-"Format enter indicat per l'arxiu de sistema (%s) difereix de l'esperat (%s)."
+msgid "Integer format indicated by system file (%s) differs from expected (%s)."
+msgstr "Format enter indicat per l'arxiu de sistema (%s) difereix de l'esperat (%s)."
#: src/data/sys-file-reader.c:1011 tests/dissect-sysfile.c:625
#, c-format
#: src/data/sys-file-reader.c:1056
#, c-format
msgid "Missing space following 'C' at offset %zu in MRSETS record"
-msgstr ""
+msgstr "Espai perdut darrera 'C' en la possició %zu a registre MRSETS"
#: src/data/sys-file-reader.c:1074 tests/dissect-sysfile.c:691
#, c-format
msgid "Missing space following 'E' at offset %zu in MRSETS record"
-msgstr ""
+msgstr "Espai perdut darrera 'E' en la possició %zu a registre MRSETS"
#: src/data/sys-file-reader.c:1083 tests/dissect-sysfile.c:700
#, c-format
-msgid ""
-"Unexpected label source value \"%s\" following 'E' at offset %zu in MRSETS "
-"record"
-msgstr ""
+msgid "Unexpected label source value \"%s\" following 'E' at offset %zu in MRSETS record"
+msgstr "Valor d'etiqueta no esperat \"%s\" darrera 'E' en la possició %zu a registre MRSETS"
#: src/data/sys-file-reader.c:1089
#, c-format
msgid "Missing 'C', 'D', or 'E' at offset %zu in MRSETS record."
-msgstr ""
+msgstr "Manca 'C', 'D' o 'E' en la possició %zu a registre MRSETS"
#: src/data/sys-file-reader.c:1118
#, c-format
msgid "Missing new-line parsing variable names at offset %zu in MRSETS record."
-msgstr ""
+msgstr "Manca nom de variables de nova línia en la possició %zu a registre MRSETS"
#: src/data/sys-file-reader.c:1129
-#, fuzzy, c-format
+#, c-format
msgid "Duplicate variable name %s at offset %zu in MRSETS record."
-msgstr "Nom de la variable %s duplicat en la posició %d."
+msgstr "Nom de la variable %s duplicat en la posició %zu a registre MRSET."
#: src/data/sys-file-reader.c:1142
-#, fuzzy, c-format
+#, c-format
msgid "MRSET %s contains both string and numeric variables."
-msgstr ""
-"Ignorant el registre del valor de cadena llarga per a la variable numèrica %"
-"s."
+msgstr "MRSET %s contè variables textuals i numeriques."
#: src/data/sys-file-reader.c:1157
#, c-format
msgid "MRSET %s has only %zu variables."
-msgstr ""
+msgstr "MRSET %s nomès te %zu variables."
#: src/data/sys-file-reader.c:1194 tests/dissect-sysfile.c:758
#, c-format
msgid "Bad size %zu on extension 11."
-msgstr "Longitud no vàlid %zu en l'extensió 11."
+msgstr "Amplada no vàlida %zu en l'extensió 11."
#: src/data/sys-file-reader.c:1206 tests/dissect-sysfile.c:770
#, c-format
#: src/data/sys-file-reader.c:1227
#, c-format
-msgid ""
-"Invalid variable display parameters for variable %zu (%s). Default "
-"parameters substituted."
-msgstr ""
-"Paràmetres de visualització de variable no vàlids per a la variable %zu (%"
-"s). Substitució pels paràmetres per defecte."
+msgid "Invalid variable display parameters for variable %zu (%s). Default parameters substituted."
+msgstr "Paràmetres de visualització de variable no vàlids per a la variable %zu (%s). Substitució pels paràmetres per defecte."
#: src/data/sys-file-reader.c:1271
#, c-format
msgid "Long variable mapping from %s to invalid variable name `%s'."
-msgstr ""
-"Identificació de variable llarga des de %s cap a un nom de variable invàlid "
-"'%s'."
+msgstr "Identificació de variable llarga des de %s cap a un nom de variable invàlid '%s'."
#: src/data/sys-file-reader.c:1281
#, c-format
#: src/data/sys-file-reader.c:1334
#, c-format
msgid "%s listed as string of invalid length %s in very length string record."
-msgstr ""
-"%s figura com a cadena de longitud no vàlida %s en un registre de cadena "
-"molt llarg."
+msgstr "%s figura com a cadena de longitud no vàlida %s en un registre de cadena molt llarg."
#: src/data/sys-file-reader.c:1344
#, c-format
-msgid ""
-"%s listed in very long string record with width %s, which requires only one "
-"segment."
-msgstr ""
-"%s figura en el registre de cadena molt llarga amb longitud %s, que "
-"requereix només un segment."
+msgid "%s listed in very long string record with width %s, which requires only one segment."
+msgstr "%s figura en el registre de cadena molt llarga amb longitud %s, que requereix només un segment."
#: src/data/sys-file-reader.c:1350
#, c-format
#: src/data/sys-file-reader.c:1364
#, c-format
-msgid ""
-"Very long string with width %ld has segment %d of width %d (expected %d)"
-msgstr ""
-"Cadena molt llarga amb una longitud de %ld té un segment %d de longitud %d "
-"(s'espera %d)"
+msgid "Very long string with width %ld has segment %d of width %d (expected %d)"
+msgstr "Cadena molt llarga amb una longitud de %ld té un segment %d de longitud %d (s'espera %d)"
#: src/data/sys-file-reader.c:1410
#, c-format
msgstr "Nombre d'etiquetes invàlid: %d. Ignorant etiquetes."
#: src/data/sys-file-reader.c:1441 tests/dissect-sysfile.c:468
-msgid ""
-"Variable index record (type 4) does not immediately follow value label "
-"record (type 3) as it should."
-msgstr ""
-"Registre d'índex de variable (tipus 4) no és seguit immediatament pel "
-"registre d'etiquetes de valors (tipus 3) com hauria."
+msgid "Variable index record (type 4) does not immediately follow value label record (type 3) as it should."
+msgstr "Registre d'índex de variable (tipus 4) no és seguit immediatament pel registre d'etiquetes de valors (tipus 3) com hauria."
#: src/data/sys-file-reader.c:1448
#, c-format
-msgid ""
-"Number of variables associated with a value label (%d) is not between 1 and "
-"the number of variables (%zu)."
-msgstr ""
-"Nombre de variables associades amb una etiqueta de valors (%d) no està entre "
-"1 i el nombre de variables (%zu)."
+msgid "Number of variables associated with a value label (%d) is not between 1 and the number of variables (%zu)."
+msgstr "Nombre de variables associades amb una etiqueta de valors (%d) no està entre 1 i el nombre de variables (%zu)."
#: src/data/sys-file-reader.c:1459
#, c-format
-msgid ""
-"Value labels may not be added to long string variables (e.g. %s) using "
-"records types 3 and 4."
-msgstr ""
-"No es pot afegir etiquetes dels valors a les variables de cadena llarga (e."
-"g. %s) utilitzant els tipus de registres 3 i 4."
+msgid "Value labels may not be added to long string variables (e.g. %s) using records types 3 and 4."
+msgstr "No es pot afegir etiquetes dels valors a les variables de cadena llarga (e.g. %s) utilitzant els tipus de registres 3 i 4."
#: src/data/sys-file-reader.c:1468
#, c-format
-msgid ""
-"Variables associated with value label are not all of identical type. "
-"Variable %s is %s, but variable %s is %s."
-msgstr ""
-"Les variables associades amb etiqueta de valors no són totes del mateix "
-"tipus. La variable %s és %s, però la variable %s és %s."
+msgid "Variables associated with value label are not all of identical type. Variable %s is %s, but variable %s is %s."
+msgstr "Les variables associades amb etiqueta de valors no són totes del mateix tipus. La variable %s és %s, però la variable %s és %s."
#: src/data/sys-file-reader.c:1502
#, c-format
#: src/data/sys-file-reader.c:1620 tests/dissect-sysfile.c:936
#, c-format
-msgid ""
-"Variable name length in long string value label record (%d) exceeds %d-byte "
-"limit."
-msgstr ""
-"La longitud del nom de la variable al registre de l'etiqueta del valor de "
-"cadena llarga (%d) supera el límit %d-byte."
+msgid "Variable name length in long string value label record (%d) exceeds %d-byte limit."
+msgstr "La longitud del nom de la variable al registre de l'etiqueta del valor de cadena llarga (%d) supera el límit %d-byte."
#: src/data/sys-file-reader.c:1630
#, c-format
msgid "Ignoring long string value record for unknown variable %s."
-msgstr ""
-"Ignorant el registre del valor de cadena llarga per a la variable "
-"desconeguda %s."
+msgstr "Ignorant el registre del valor de cadena llarga per a la variable desconeguda %s."
#: src/data/sys-file-reader.c:1637
#, c-format
msgid "Ignoring long string value record for numeric variable %s."
-msgstr ""
-"Ignorant el registre del valor de cadena llarga per a la variable numèrica %"
-"s."
+msgstr "Ignorant el registre del valor de cadena llarga per a la variable numèrica %s."
#: src/data/sys-file-reader.c:1644
#, c-format
-msgid ""
-"Ignoring long string value record for variable %s because the record's width "
-"(%d) does not match the variable's width (%d)"
-msgstr ""
-"Ignorant el registre del valor de cadena llarga %s ja que l'amplada del "
-"registre (%d) no coincideix amb l'amplada de la variable (%d)"
+msgid "Ignoring long string value record for variable %s because the record's width (%d) does not match the variable's width (%d)"
+msgstr "Ignorant el registre del valor de cadena llarga %s ja que l'amplada del registre (%d) no coincideix amb l'amplada de la variable (%d)"
#: src/data/sys-file-reader.c:1666
#, c-format
-msgid ""
-"Ignoring long string value %zu for variable %s, with width %d, that has bad "
-"value width %zu."
-msgstr ""
-"Ignorant el valor de cadena llarga %zu per a la variable %s, d'amplada %d, "
-"que té una amplada de valor incorrecta %zu."
+msgid "Ignoring long string value %zu for variable %s, with width %d, that has bad value width %zu."
+msgstr "Ignorant el valor de cadena llarga %zu per a la variable %s, d'amplada %d, que té una amplada de valor incorrecta %zu."
#: src/data/sys-file-reader.c:1781
msgid "File ends in partial case."
msgstr "Error llegint un cas de l'arxiu %s."
#: src/data/sys-file-reader.c:1890
-msgid ""
-"Possible compressed data corruption: compressed spaces appear in numeric "
-"field."
-msgstr ""
+msgid "Possible compressed data corruption: compressed spaces appear in numeric field."
+msgstr "Possible corrupció de dades comprimides: apareixen espais comprimits a un camp numeric."
#: src/data/sys-file-reader.c:1943
#, c-format
-msgid ""
-"Possible compressed data corruption: string contains compressed integer "
-"(opcode %d)"
-msgstr ""
+msgid "Possible compressed data corruption: string contains compressed integer (opcode %d)"
+msgstr "Possible corrupció de dades comprimides: una cadena textual contè un enter comprimit (opcode %d)."
#: src/data/sys-file-reader.c:2035
#, c-format
#: src/data/sys-file-reader.c:2040
#, c-format
msgid "Variable index %d refers to long string continuation."
-msgstr ""
-"Índex de la variable %d es refereix a una continuació de cadena llarga."
+msgstr "Índex de la variable %d es refereix a una continuació de cadena llarga."
#: src/data/sys-file-reader.c:2108
#, c-format
msgstr "Suprimides %d advertències addicionals."
#: src/data/sys-file-reader.c:2153 src/data/sys-file-reader.c:2170
-#, fuzzy, c-format
+#, c-format
msgid "Dictionary record refers to unknown variable %s."
-msgstr "Mapa de la variable es refereix a una variable desconeguda %s."
+msgstr "El registre diccionari es refereix a la variable desconeguda %s."
#: src/data/sys-file-reader.c:2231
#, c-format
msgid "Expecting digit at offset %zu in MRSETS record."
-msgstr ""
+msgstr "S'espera un dígit en la posició %zu a registre MRSETS."
#: src/data/sys-file-reader.c:2238
#, c-format
msgid "Expecting space at offset %zu in MRSETS record."
-msgstr ""
+msgstr "S'espera un espai en la posició %zu a registre MRSETS."
#: src/data/sys-file-reader.c:2245
#, c-format
msgid "%zu-byte string starting at offset %zu exceeds record length %zu."
-msgstr ""
+msgstr "El text de %zu-byte que comença en la posició %zu excedeix la llargada del registre %zu. "
#: src/data/sys-file-reader.c:2255
#, c-format
msgid "Expecting space at offset %zu following %zu-byte string."
-msgstr ""
+msgstr "S'espera un espai en la posició %zu darrera dun text %zu-byte."
#: src/data/sys-file-reader.c:2347 tests/dissect-sysfile.c:1341
#, c-format
#: src/data/variable.c:206
#, c-format
-msgid ""
-"Character `%c' (in %s) may not appear as the first character in a variable "
-"name."
-msgstr ""
-"Caràcter '%c' (em %s) no pot aparèixer com el primer caràcter en un nom de "
-"variable."
+msgid "Character `%c' (in %s) may not appear as the first character in a variable name."
+msgstr "Caràcter '%c' (em %s) no pot aparèixer com el primer caràcter en un nom de variable."
#: src/data/variable.c:218
#, c-format
#: src/data/variable.c:258
#, c-format
msgid "`%s' may not be used as a variable name because it is a reserved word."
-msgstr ""
-"'%s' no pot ser utilitzat com a nom de variable perquè es una paraula "
-"reservada."
+msgstr "'%s' no pot ser utilitzat com a nom de variable perquè es una paraula reservada."
#: src/language/syntax-file.c:95
#, c-format
#: src/language/command.c:642
#, c-format
-msgid ""
-"%s is allowed only before the active file has been defined or inside INPUT "
-"PROGRAM."
-msgstr ""
-"%s només es permet abans que l'arxiu actiu s'ha definit o dins de INPUT "
-"PROGRAM."
+msgid "%s is allowed only before the active file has been defined or inside INPUT PROGRAM."
+msgstr "%s només es permet abans que l'arxiu actiu s'ha definit o dins de INPUT PROGRAM."
#: src/language/command.c:646
#, c-format
-msgid ""
-"%s is allowed only before the active file has been defined or inside FILE "
-"TYPE."
-msgstr ""
-"%s només es permet abans que l'arxiu actiu s'ha definit o dins de FILE TYPE."
+msgid "%s is allowed only before the active file has been defined or inside FILE TYPE."
+msgstr "%s només es permet abans que l'arxiu actiu s'ha definit o dins de FILE TYPE."
#: src/language/command.c:650
#, c-format
-msgid ""
-"%s is allowed only after the active file has been defined or inside INPUT "
-"PROGRAM."
-msgstr ""
-"%s només es permet després que l'arxiu actiu s'ha definit, o dins de INPUT "
-"PROGRAM."
+msgid "%s is allowed only after the active file has been defined or inside INPUT PROGRAM."
+msgstr "%s només es permet després que l'arxiu actiu s'ha definit, o dins de INPUT PROGRAM."
#: src/language/command.c:654
#, c-format
-msgid ""
-"%s is allowed only after the active file has been defined or inside FILE "
-"TYPE."
-msgstr ""
-"%s només es permet després que l'arxiu actiu s'ha definit, o dins de FILE "
-"TYPE."
+msgid "%s is allowed only after the active file has been defined or inside FILE TYPE."
+msgstr "%s només es permet després que l'arxiu actiu s'ha definit, o dins de FILE TYPE."
#: src/language/command.c:658
#, c-format
#: src/language/command.c:664
#, c-format
-msgid ""
-"%s is allowed only after the active file has been defined, inside INPUT "
-"PROGRAM, or inside FILE TYPE."
-msgstr ""
-"%s només es permet després que l'arxiu actiu s'ha definit, dins de INPUT "
-"PROGRAM, o FILE TYPE."
+msgid "%s is allowed only after the active file has been defined, inside INPUT PROGRAM, or inside FILE TYPE."
+msgstr "%s només es permet després que l'arxiu actiu s'ha definit, dins de INPUT PROGRAM, o FILE TYPE."
#: src/language/command.c:669
#, c-format
-msgid ""
-"%s is allowed only before the active file has been defined, inside INPUT "
-"PROGRAM, or inside FILE TYPE."
-msgstr ""
-"%s només es permet abans que l'arxiu actiu s'ha definit, dins de INPUT "
-"PROGRAM, o FILE TYPE."
+msgid "%s is allowed only before the active file has been defined, inside INPUT PROGRAM, or inside FILE TYPE."
+msgstr "%s només es permet abans que l'arxiu actiu s'ha definit, dins de INPUT PROGRAM, o FILE TYPE."
#: src/language/command.c:687 src/language/command.c:689
-#, fuzzy, c-format
+#, c-format
msgid "%s is not allowed inside %s."
-msgstr "%s no es permet dins de FILE TYPE."
+msgstr "%s no és permes dins de %s."
#: src/language/command.c:768 src/language/command.c:876
#: src/language/utilities/permissions.c:98
#: src/language/lexer/value-parser.c:60
#, c-format
-msgid ""
-"Low end of range (%g) is below high end (%g). The range will be treated as "
-"reversed."
-msgstr ""
-"El límit inferior de l'interval (%g) està per sota del límit superior (%g). "
-"L' interval serà invertit."
+msgid "Low end of range (%g) is below high end (%g). The range will be treated as reversed."
+msgstr "El límit inferior de l'interval (%g) està per sota del límit superior (%g). L' interval serà invertit."
#: src/language/lexer/value-parser.c:68
#, c-format
#: src/language/lexer/variable-parser.c:178
#, c-format
-msgid ""
-"%s is not a numeric variable. It will not be included in the variable list."
-msgstr ""
-"%s no és una variable numèrica. No serà inclosa a la llista de variables."
+msgid "%s is not a numeric variable. It will not be included in the variable list."
+msgstr "%s no és una variable numèrica. No serà inclosa a la llista de variables."
#: src/language/lexer/variable-parser.c:181
#, c-format
-msgid ""
-"%s is not a string variable. It will not be included in the variable list."
-msgstr ""
-"%s no és una variable de cadena. No serà inclosa a la llista de variables."
+msgid "%s is not a string variable. It will not be included in the variable list."
+msgstr "%s no és una variable de cadena. No serà inclosa a la llista de variables."
#: src/language/lexer/variable-parser.c:185
#, c-format
#: src/language/lexer/variable-parser.c:189
#, c-format
-msgid ""
-"%s and %s are not the same type. All variables in this variable list must "
-"be of the same type. %s will be omitted from the list."
-msgstr ""
-"%s i %s no són del mateix tipus. Totes les variables d'aquesta llista han de "
-"ser del mateix tipus. %s serà omesa de la llista."
+msgid "%s and %s are not the same type. All variables in this variable list must be of the same type. %s will be omitted from the list."
+msgstr "%s i %s no són del mateix tipus. Totes les variables d'aquesta llista han de ser del mateix tipus. %s serà omesa de la llista."
#: src/language/lexer/variable-parser.c:195
#, c-format
-msgid ""
-"%s and %s are string variables with different widths. All variables in this "
-"variable list must have the same width. %s will be omitted from the list."
-msgstr ""
-"%s i %s són variables de cadena amb tamanys diferents. Totes les variables "
-"d'aquesta llista han de tenir la mateixa amplada. %s serà omesa de la llista."
+msgid "%s and %s are string variables with different widths. All variables in this variable list must have the same width. %s will be omitted from the list."
+msgstr "%s i %s són variables de cadena amb tamanys diferents. Totes les variables d'aquesta llista han de tenir la mateixa amplada. %s serà omesa de la llista."
#: src/language/lexer/variable-parser.c:200
#: src/language/lexer/variable-parser.c:496
#: src/language/lexer/variable-parser.c:313
#, c-format
msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary."
-msgstr ""
-"%s TO %s no és una sintaxi vàlida atès que %s precedeix %s en el diccionari."
+msgstr "%s TO %s no és una sintaxi vàlida atès que %s precedeix %s en el diccionari."
#: src/language/lexer/variable-parser.c:321
#, c-format
-msgid ""
-"When using the TO keyword to specify several variables, both variables must "
-"be from the same variable dictionaries, of either ordinary, scratch, or "
-"system variables. %s is a %s variable, whereas %s is %s."
-msgstr ""
-"Quan s'utilitza la paraula clau TO per especificar diverses variables, "
-"ambdues han de ser del mateix diccionari de variables, ja siguin ordinals, "
-"scratch, o variables de sistema. %s és una variable %s, atès que %s és %s."
+msgid "When using the TO keyword to specify several variables, both variables must be from the same variable dictionaries, of either ordinary, scratch, or system variables. %s is a %s variable, whereas %s is %s."
+msgstr "Quan s'utilitza la paraula clau TO per especificar diverses variables, ambdues han de ser del mateix diccionari de variables, ja siguin ordinals, scratch, o variables de sistema. %s és una variable %s, atès que %s és %s."
#: src/language/lexer/variable-parser.c:395
msgid "incorrect use of TO convention"
#: src/language/xforms/compute.c:149 src/language/xforms/compute.c:203
#, c-format
-msgid ""
-"When executing COMPUTE: SYSMIS is not a valid value as an index into vector %"
-"s."
-msgstr ""
-"Quan s'executa COMPUTE: SYSMIS no és un valor vàlid com a índex en el vector "
-"%s."
+msgid "When executing COMPUTE: SYSMIS is not a valid value as an index into vector %s."
+msgstr "Quan s'executa COMPUTE: SYSMIS no és un valor vàlid com a índex en el vector %s."
#: src/language/xforms/compute.c:153 src/language/xforms/compute.c:210
#, c-format
-msgid ""
-"When executing COMPUTE: %g is not a valid value as an index into vector %s."
-msgstr ""
-"Quan s'executa COMPUTE: %g no és un valor vàlid com a índex en el vector %s."
+msgid "When executing COMPUTE: %g is not a valid value as an index into vector %s."
+msgstr "Quan s'executa COMPUTE: %g no és un valor vàlid com a índex en el vector %s."
#: src/language/xforms/compute.c:353
#, c-format
msgstr "No es pot fer una mostra de %d observacions d'una població de %d."
#: src/language/xforms/recode.c:248
-msgid ""
-"Inconsistent target variable types. Target variables must be all numeric or "
-"all string."
-msgstr ""
-"Tipus inconsistent de variables objectiu. Les variables objectiu han de ser "
-"totes, o bé de cadena o bé numèriques."
+msgid "Inconsistent target variable types. Target variables must be all numeric or all string."
+msgstr "Tipus inconsistent de variables objectiu. Les variables objectiu han de ser totes, o bé de cadena o bé numèriques."
#: src/language/xforms/recode.c:269
msgid "CONVERT requires string input values and numeric output values."
-msgstr ""
-"CONVERT requereix valors d'entrada de cadena i valors de sortida numèrics. "
+msgstr "CONVERT requereix valors d'entrada de cadena i valors de sortida numèrics. "
#: src/language/xforms/recode.c:324
msgid "THRU is not allowed with string variables."
#: src/language/xforms/recode.c:460
#, c-format
-msgid ""
-"%zu variable(s) cannot be recoded into %zu variable(s). Specify the same "
-"number of variables as source and target variables."
-msgstr ""
-"%zu variable(s) no poden ser recodificades a %zu variable(s). Especifiqueu "
-"el mateix nombre de variables com a origen i destinació."
+msgid "%zu variable(s) cannot be recoded into %zu variable(s). Specify the same number of variables as source and target variables."
+msgstr "%zu variable(s) no poden ser recodificades a %zu variable(s). Especifiqueu el mateix nombre de variables com a origen i destinació."
#: src/language/xforms/recode.c:475
#, c-format
-msgid ""
-"There is no variable named %s. (All string variables specified on INTO must "
-"already exist. Use the STRING command to create a string variable.)"
-msgstr ""
-"No existeix cap variable anomenada %s. (Totes les variables de cadena "
-"especificades a INTO ja han d'existir. Utilitzeu el comandament STRING per "
-"crear una variable de cadena.)"
+msgid "There is no variable named %s. (All string variables specified on INTO must already exist. Use the STRING command to create a string variable.)"
+msgstr "No existeix cap variable anomenada %s. (Totes les variables de cadena especificades a INTO ja han d'existir. Utilitzeu el comandament STRING per crear una variable de cadena.)"
#: src/language/xforms/recode.c:491
#, c-format
#: src/language/control/control-stack.c:55
#, c-format
msgid "This command must appear inside %s...%s, without intermediate %s...%s."
-msgstr ""
-"Aquesta ordre ha d'aparèixer dins de %s...%s, sense intermediaris %s...%s."
+msgstr "Aquesta ordre ha d'aparèixer dins de %s...%s, sense intermediaris %s...%s."
#: src/language/control/control-stack.c:72
#, c-format
msgstr "Només pot ser especificada una clàusula d'índex."
#: src/language/control/temporary.c:46
-msgid ""
-"This command may only appear once between procedures and procedure-like "
-"commands."
-msgstr ""
-"Aquesta ordre només pot aparèixer una vegada entre les ordres de "
-"procediments i quasi-procediments."
+msgid "This command may only appear once between procedures and procedure-like commands."
+msgstr "Aquesta ordre només pot aparèixer una vegada entre les ordres de procediments i quasi-procediments."
#: src/language/control/repeat.c:172
#, c-format
msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"."
-msgstr ""
-"El nom de la variable fictícia \"%s\" oculta la variable de diccionari \"%s"
-"\"."
+msgstr "El nom de la variable fictícia \"%s\" oculta la variable de diccionari \"%s\"."
#: src/language/control/repeat.c:177
#, c-format
#: src/language/control/repeat.c:223
#, c-format
-msgid ""
-"Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d "
-"were specified."
-msgstr ""
-"Una variable fictícia \"%.*s\" en te %d substitucions, de manera que \"%.*s"
-"\" també n'hauria de tenir-les, però es van especificar %d."
+msgid "Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d were specified."
+msgstr "Una variable fictícia \"%.*s\" en te %d substitucions, de manera que \"%.*s\" també n'hauria de tenir-les, però es van especificar %d."
#: src/language/control/repeat.c:335
msgid "DO REPEAT may not nest in compatibility mode."
#: src/language/dictionary/apply-dictionary.c:75
#, c-format
msgid "Variable %s is %s in target file, but %s in source file."
-msgstr ""
-"La variable %s és %s en l'arxiu de destinació, però %s en l'arxiu d'origen."
+msgstr "La variable %s és %s en l'arxiu de destinació, però %s en l'arxiu d'origen."
#: src/language/dictionary/apply-dictionary.c:115
msgid "No matching variables found between the source and target files."
-msgstr ""
-"No s'han trobat coincidències de variables entre els arxius d'origen i de "
-"destinació."
+msgstr "No s'han trobat coincidències de variables entre els arxius d'origen i de destinació."
#: src/language/dictionary/delete-variables.c:40
-msgid ""
-"DELETE VARIABLES may not be used after TEMPORARY. Temporary transformations "
-"will be made permanent."
-msgstr ""
-"DELETE VARIABLES no pot ser utilitzat després de TEMPORARY. Les "
-"transformacions temporals seran permanents."
+msgid "DELETE VARIABLES may not be used after TEMPORARY. Temporary transformations will be made permanent."
+msgstr "DELETE VARIABLES no pot ser utilitzat després de TEMPORARY. Les transformacions temporals seran permanents."
#: src/language/dictionary/delete-variables.c:48
-msgid ""
-"DELETE VARIABLES may not be used to delete all variables from the active "
-"file dictionary. Use NEW FILE instead."
-msgstr ""
-"DELETE VARIABLES no pot ser utilitzar per esborrar totes les variables de "
-"l'arxiu de diccionari actiu. Utilitzar NEW FILE en el seu lloc."
+msgid "DELETE VARIABLES may not be used to delete all variables from the active file dictionary. Use NEW FILE instead."
+msgstr "DELETE VARIABLES no pot ser utilitzar per esborrar totes les variables de l'arxiu de diccionari actiu. Utilitzar NEW FILE en el seu lloc."
#: src/language/dictionary/formats.c:90
msgid "`(' expected after variable list."
#: src/language/dictionary/missing-values.c:72
#, c-format
-msgid ""
-"Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within "
-"a single list."
-msgstr ""
-"No es poden barrejar les variables numèriques (e.g. %s) i les variables de "
-"cadena (e.g. %s) dins d'una llista única."
+msgid "Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within a single list."
+msgstr "No es poden barrejar les variables numèriques (e.g. %s) i les variables de cadena (e.g. %s) dins d'una llista única."
#: src/language/dictionary/missing-values.c:116
#, c-format
#: src/language/dictionary/missing-values.c:138
#, c-format
msgid "Missing values provided are too long to assign to variable of width %d."
-msgstr ""
-"Els valors perduts donats són massa llargs per assignar a la variable "
-"d'amplada %d."
+msgstr "Els valors perduts donats són massa llargs per assignar a la variable d'amplada %d."
#: src/language/dictionary/modify-variables.c:92
-msgid ""
-"MODIFY VARS may not be used after TEMPORARY. Temporary transformations will "
-"be made permanent."
-msgstr ""
-"MODIFY VARS no pot ser utilitzar després de TEMPORARY. Les transformacions "
-"temporals seran permanents."
+msgid "MODIFY VARS may not be used after TEMPORARY. Temporary transformations will be made permanent."
+msgstr "MODIFY VARS no pot ser utilitzar després de TEMPORARY. Les transformacions temporals seran permanents."
#: src/language/dictionary/modify-variables.c:114
#: src/language/dictionary/modify-variables.c:177
-#, fuzzy, c-format
+#, c-format
msgid "%s subcommand may be given at most once."
-msgstr "El subcomando RENAME pot ser utilitzat només una vegada."
+msgstr "El subcomando %s pot ser utilitzat només una vegada."
#: src/language/dictionary/modify-variables.c:137
msgid "Cannot specify ALL after specifying a set of variables."
-msgstr ""
-"No es pot especificar ALL després de l'especificació d'un conjunt de "
-"variables."
+msgstr "No es pot especificar ALL després de l'especificació d'un conjunt de variables."
#: src/language/dictionary/modify-variables.c:147
#: src/language/dictionary/modify-variables.c:190
-#, fuzzy, c-format
+#, c-format
msgid "`(' expected on %s subcommand."
-msgstr "`(' esperat al subcomando RENAME."
+msgstr "S'espera `(' al subcomando %s."
#: src/language/dictionary/modify-variables.c:159
msgid "`)' expected following variable names on REORDER subcommand."
-msgstr ""
-"`)' s'esperava seguit dels noms de la variable en el subcomando REORDER."
+msgstr "`)' s'esperava seguit dels noms de la variable en el subcomando REORDER."
#: src/language/dictionary/modify-variables.c:199
-msgid ""
-"`=' expected between lists of new and old variable names on RENAME "
-"subcommand."
-msgstr ""
-"`=' esperat entre les llistes de noms de variables noves i velles en el "
-"subcomando RENAME."
+msgid "`=' expected between lists of new and old variable names on RENAME subcommand."
+msgstr "`=' esperat entre les llistes de noms de variables noves i velles en el subcomando RENAME."
#: src/language/dictionary/modify-variables.c:208
#: src/language/dictionary/rename-variables.c:77
#, c-format
-msgid ""
-"Differing number of variables in old name list (%zu) and in new name list (%"
-"zu)."
-msgstr ""
-"Diferent nombre de variables en la llista de noms antiga (%zu) i en la "
-"llista de noms nova (%zu)."
+msgid "Differing number of variables in old name list (%zu) and in new name list (%zu)."
+msgstr "Diferent nombre de variables en la llista de noms antiga (%zu) i en la llista de noms nova (%zu)."
#: src/language/dictionary/modify-variables.c:219
msgid "`)' expected after variable lists on RENAME subcommand."
-msgstr ""
-"`)' esperat després de les llistes de variables en el subcomando RENAME."
+msgstr "`)' esperat després de les llistes de variables en el subcomando RENAME."
#: src/language/dictionary/modify-variables.c:233
-msgid ""
-"KEEP subcommand may be given at most once. It may not be given in "
-"conjunction with the DROP subcommand."
-msgstr ""
-"El subcomando KEEP pot ser emès més d'una vegada. Pot ser que no sigui "
-"facilitada en relació amb el subcomando DROP."
+msgid "KEEP subcommand may be given at most once. It may not be given in conjunction with the DROP subcommand."
+msgstr "El subcomando KEEP pot ser emès més d'una vegada. Pot ser que no sigui facilitada en relació amb el subcomando DROP."
#: src/language/dictionary/modify-variables.c:276
-msgid ""
-"DROP subcommand may be given at most once. It may not be given in "
-"conjunction with the KEEP subcommand."
-msgstr ""
-"El subcomando DROP pot ser utilitzat només una vegada. No pot ser utilitzat "
-"conjuntament amb el subcomando KEEP."
+msgid "DROP subcommand may be given at most once. It may not be given in conjunction with the KEEP subcommand."
+msgstr "El subcomando DROP pot ser utilitzat només una vegada. No pot ser utilitzat conjuntament amb el subcomando KEEP."
#: src/language/dictionary/modify-variables.c:302
#, c-format
#: src/language/dictionary/mrsets.c:98
#, c-format
-msgid ""
-"%s is not a valid name for a multiple response set. Multiple response set "
-"names must begin with `$'."
-msgstr ""
+msgid "%s is not a valid name for a multiple response set. Multiple response set names must begin with `$'."
+msgstr "%s no és un nom vàlid de variable per a un conjunt de resposta múltiple. Els conjunts de resposta múltiple han de començar amb `$'."
#: src/language/dictionary/mrsets.c:120
#, c-format
-msgid ""
-"VARIABLES specified only variable %s on %s, but at least two variables are "
-"required."
-msgstr ""
+msgid "VARIABLES specified only variable %s on %s, but at least two variables are required."
+msgstr "VARIABLES especifica només la variable %s a %s, però es requereixen al menys dues variables."
#: src/language/dictionary/mrsets.c:153
msgid "Numeric VALUE must be an integer."
-msgstr ""
+msgstr "VALUE numèric ha de ser un enter."
#: src/language/dictionary/mrsets.c:207 src/language/dictionary/mrsets.c:213
#: src/language/dictionary/mrsets.c:223
#, c-format
msgid "Required %s specification missing from %s subcommand."
-msgstr ""
+msgstr "Manca la especificació %s requerida pel subcomando %s."
#: src/language/dictionary/mrsets.c:231 src/language/dictionary/mrsets.c:269
#, c-format
-msgid ""
-"MDGROUP subcommand for group %s specifies a string VALUE, but the variables "
-"specified for this group are numeric."
-msgstr ""
+msgid "MDGROUP subcommand for group %s specifies a string VALUE, but the variables specified for this group are numeric."
+msgstr "El subcomando MDGROUPS pel grup %s especifica un VALUE textual, però les variables especificades per aquest grup son numèriques."
#: src/language/dictionary/mrsets.c:255
#, c-format
-msgid ""
-"VALUE string on MDGROUP subcommand for group %s is %d bytes long, but it "
-"must be no longer than the narrowest variable in the group, which is %s with "
-"a width of %d bytes."
-msgstr ""
+msgid "VALUE string on MDGROUP subcommand for group %s is %d bytes long, but it must be no longer than the narrowest variable in the group, which is %s with a width of %d bytes."
+msgstr "El VALUE textual al subcomando MDGROUP pel grup %s té %d bytes, però no pot ser més llarg que la variable més curta al grup, que és %s amb llargada %d bytes."
#: src/language/dictionary/mrsets.c:281
#, c-format
-msgid ""
-"MDGROUP subcommand for group %s specifies LABELSOURCE=VARLABEL but not "
-"CATEGORYLABELS=COUNTEDVALUES. Ignoring LABELSOURCE."
-msgstr ""
+msgid "MDGROUP subcommand for group %s specifies LABELSOURCE=VARLABEL but not CATEGORYLABELS=COUNTEDVALUES. Ignoring LABELSOURCE."
+msgstr "El subcomando MDGROUP pel grup %s espeficifica LABELSOURCE=VARLABEL però no CATEGORYLABELS=COUNTEDVALUES. S'ignorarà LABELSOURCE."
#: src/language/dictionary/mrsets.c:287
#, c-format
-msgid ""
-"MDGROUP subcommand for group %s specifies both LABEL and LABELSOURCE, but "
-"only one of these subcommands may be used at a time. Ignoring LABELSOURCE."
-msgstr ""
+msgid "MDGROUP subcommand for group %s specifies both LABEL and LABELSOURCE, but only one of these subcommands may be used at a time. Ignoring LABELSOURCE."
+msgstr "El subcomando MDGROUP pel grup %s espeficifica LABEL i LABELSOURCE, però només un d'aquests subcomandos pot ser utilitzat alhora. S'ignorarà LABELSOURCE."
#: src/language/dictionary/mrsets.c:327
#, c-format
-msgid ""
-"Variables %s and %s specified as part of multiple dichotomy group %s have "
-"the same variable label. Categories represented by these variables will not "
-"be distinguishable in output."
-msgstr ""
+msgid "Variables %s and %s specified as part of multiple dichotomy group %s have the same variable label. Categories represented by these variables will not be distinguishable in output."
+msgstr "Les variables %s i %s especificades com a part del grup dicotòmic múltiple %s tenen la mateixa etiqueta de variable. Les categories representades per aquestes variables no seran distingibles als resultats."
#: src/language/dictionary/mrsets.c:357
#, c-format
-msgid ""
-"Variable %s specified as part of multiple dichotomy group %s (which has "
-"CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value. "
-"This category will not be distinguishable in output."
-msgstr ""
+msgid "Variable %s specified as part of multiple dichotomy group %s (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value. This category will not be distinguishable in output."
+msgstr "La variable %s especificada com a part del grup dicotòmic múltiple %s (que té CATEGORYLABELS=COUNTEDVALUES) no en té etiqueta de valor pel seu valor de recompte. Aquesta categoria no serà distingible als resultats."
#: src/language/dictionary/mrsets.c:370
#, c-format
-msgid ""
-"Variables %s and %s specified as part of multiple dichotomy group %s (which "
-"has CATEGORYLABELS=COUNTEDVALUES) have the same value label for the the "
-"group's counted value. These categories will not be distinguishable in "
-"output."
-msgstr ""
+msgid "Variables %s and %s specified as part of multiple dichotomy group %s (which has CATEGORYLABELS=COUNTEDVALUES) have the same value label for the the group's counted value. These categories will not be distinguishable in output."
+msgstr "Les variables %s i %s especificades com a part del grup dicotòmic múltiple %s (que té CATEGORYLABELS=COUNTEDVALUES) té la mateixa etiqueta de valor pel valor de recompte del grup. Aquestes categories no seran distingible als resultats."
#: src/language/dictionary/mrsets.c:427
#, c-format
-msgid ""
-"Variables specified on MCGROUP should have the same categories, but %s and %"
-"s (and possibly others) in multiple category group %s have different value "
-"labels for value %s."
-msgstr ""
+msgid "Variables specified on MCGROUP should have the same categories, but %s and %s (and possibly others) in multiple category group %s have different value labels for value %s."
+msgstr "Variables especificades a MDGROUP han de tenir les mateixes categories, però %s i %s (i posiblement d'altres) al grup de caterories múltiple %s té diferents etiquetes de valors pel valor %s."
#: src/language/dictionary/mrsets.c:484
-#, fuzzy, c-format
+#, c-format
msgid "No multiple response set named %s."
-msgstr "Cap funció o vector anomenat %s."
+msgstr "Cap conjunt multiresposta anomenat %s."
#: src/language/dictionary/mrsets.c:538
-#, fuzzy
msgid "The active file dictionary does not contain any multiple response sets."
-msgstr "El diccionari de l'arxiu actiu no conté cap document. "
+msgstr "El diccionari de l'arxiu actiu no conté cap conjunt de multi-resposta. "
#: src/language/dictionary/mrsets.c:548
msgid "Multiple Response Sets"
-msgstr ""
+msgstr "Conjunts Multi-Resposta"
#: src/language/dictionary/mrsets.c:549 src/ui/gui/psppire-var-sheet.c:534
#: src/ui/gui/psppire-var-store.c:832
msgstr "Variables:"
#: src/language/dictionary/mrsets.c:551
-#, fuzzy
msgid "Details"
-msgstr "Decimals"
+msgstr "Detalls"
#: src/language/dictionary/mrsets.c:565
msgid "Multiple dichotomy set"
-msgstr ""
+msgstr "Conjunt de Dicotomies Múltiples"
#: src/language/dictionary/mrsets.c:566
msgid "Multiple category set"
-msgstr ""
+msgstr "Conjunt de Categories Múltiples"
#: src/language/dictionary/mrsets.c:568
#: src/language/dictionary/split-file.c:84
msgstr "Etiqueta"
#: src/language/dictionary/mrsets.c:572
-#, fuzzy
msgid "Label source"
-msgstr "Etiqueta: %s\n"
+msgstr "Font d'etiqueta"
#: src/language/dictionary/mrsets.c:574
-#, fuzzy
msgid "First variable label among variables"
-msgstr "Duplicar el nom de la variable %s entre les variables de destí."
+msgstr "Primera etiqueta de variable entre les variables"
#: src/language/dictionary/mrsets.c:575
msgid "Provided by user"
-msgstr ""
+msgstr "Proporcionat per l'usuari"
#: src/language/dictionary/mrsets.c:576
-#, fuzzy
msgid "Counted value"
-msgstr "Copiar els valors antics"
+msgstr "Valor de recompte"
#: src/language/dictionary/mrsets.c:582
msgid "Category label source"
-msgstr ""
+msgstr "Font d'etiquetes de categoria"
#: src/language/dictionary/mrsets.c:584
-#, fuzzy
msgid "Variable labels"
-msgstr "Prefereixo les etiquetes de variable"
+msgstr "Etiquetes de variable"
#: src/language/dictionary/mrsets.c:585
msgid "Value labels of counted value"
-msgstr ""
+msgstr "Etiquetes de valor del valor de recompte"
#: src/language/dictionary/numeric.c:67
#, c-format
msgstr "Tipus de format %s no pot ser utilitzat amb una variable de cadena. "
#: src/language/dictionary/rename-variables.c:49
-msgid ""
-"RENAME VARS may not be used after TEMPORARY. Temporary transformations will "
-"be made permanent."
-msgstr ""
-"RENAME VARS no pot ser utilitzat després de TEMPORARY. Les transformacions "
-"temporals seran permanents."
+msgid "RENAME VARS may not be used after TEMPORARY. Temporary transformations will be made permanent."
+msgstr "RENAME VARS no pot ser utilitzat després de TEMPORARY. Les transformacions temporals seran permanents."
#: src/language/dictionary/rename-variables.c:59
msgid "`(' expected."
msgstr "Tipus:"
#: src/language/dictionary/sys-file-info.c:128
-#: src/ui/gui/psppire-data-window.c:631
+#: src/ui/gui/psppire-data-window.c:634
msgid "System File"
msgstr "Arxiu de Sistema"
#: src/language/dictionary/vector.c:96
msgid "A slash must separate each vector specification in VECTOR's long form."
-msgstr ""
-"Una barra ha de separar cada especificació de vector en la forma llarga de "
-"VECTOR."
+msgstr "Una barra ha de separar cada especificació de vector en la forma llarga de VECTOR."
#: src/language/dictionary/vector.c:129
msgid "Vectors must have at least one element."
#: src/language/tests/float-format.c:201
#, c-format
-msgid ""
-"%s conversion of %s from %s to %s should have produced %s but actually "
-"produced %s."
-msgstr ""
-"conversió %s de %s desde %s a %s s'hauria d'haver produït %s però actualment "
-"ha produït %s."
+msgid "%s conversion of %s from %s to %s should have produced %s but actually produced %s."
+msgstr "conversió %s de %s desde %s a %s s'hauria d'haver produït %s però actualment ha produït %s."
#: src/language/tests/float-format.c:247
msgid "Too many values in single command."
msgstr "esperant BREAK"
#: src/language/stats/aggregate.c:252
-msgid ""
-"When PRESORTED is specified, specifying sorting directions with (A) or (D) "
-"has no effect. Output data will be sorted the same way as the input data."
-msgstr ""
-"Quan s'especifica PRESORTED, donar directives d'ordenació amb (A) o (D) no "
-"té efecte. Les dades de sortida seran ordenades de la mateixa manera que les "
-"d'entrada."
+msgid "When PRESORTED is specified, specifying sorting directions with (A) or (D) has no effect. Output data will be sorted the same way as the input data."
+msgstr "Quan s'especifica PRESORTED, donar directives d'ordenació amb (A) o (D) no té efecte. Les dades de sortida seran ordenades de la mateixa manera que les d'entrada."
#: src/language/stats/aggregate.c:424
msgid "expecting aggregation function"
#: src/language/stats/aggregate.c:507
#, c-format
msgid "Arguments to %s must be of same type as source variables."
-msgstr ""
-"Els arguments per a %s han de ser del mateix tipus que les variables "
-"d'origen."
+msgstr "Els arguments per a %s han de ser del mateix tipus que les variables d'origen."
#: src/language/stats/aggregate.c:517 src/language/expressions/parse.c:885
msgid "expecting `)'"
#: src/language/stats/aggregate.c:529
#, c-format
-msgid ""
-"Number of source variables (%zu) does not match number of target variables (%"
-"zu)."
-msgstr ""
-"Nombre de variables d'origen (%zu) no coincideix amb el nombre de variables "
-"de destinació (%zu)."
+msgid "Number of source variables (%zu) does not match number of target variables (%zu)."
+msgstr "Nombre de variables d'origen (%zu) no coincideix amb el nombre de variables de destinació (%zu)."
#: src/language/stats/aggregate.c:545
#, c-format
-msgid ""
-"The value arguments passed to the %s function are out-of-order. They will "
-"be treated as if they had been specified in the correct order."
-msgstr ""
-"El valor dels arguments passats a la funció %s estan fora d'ordre. Seran "
-"tractats com si haguessin estat especificats en l'ordre correcte."
+msgid "The value arguments passed to the %s function are out-of-order. They will be treated as if they had been specified in the correct order."
+msgstr "El valor dels arguments passats a la funció %s estan fora d'ordre. Seran tractats com si haguessin estat especificats en l'ordre correcte."
#: src/language/stats/aggregate.c:615
#, c-format
-msgid ""
-"Variable name %s is not unique within the aggregate file dictionary, which "
-"contains the aggregate variables and the break variables."
-msgstr ""
-"El nom de variable %s no és únic dins l'arxiu de diccionari agregat, que "
-"conté les variables agregades i les variables de tall."
+msgid "Variable name %s is not unique within the aggregate file dictionary, which contains the aggregate variables and the break variables."
+msgstr "El nom de variable %s no és únic dins l'arxiu de diccionari agregat, que conté les variables agregades i les variables de tall."
#: src/language/stats/autorecode.c:116
#, c-format
msgid "Source variable count (%zu) does not match target variable count (%zu)."
-msgstr ""
-"El recompte de la variable d'origen (%zu) no coincideix amb el recompte de "
-"la variable de destí (%zu)."
+msgstr "El recompte de la variable d'origen (%zu) no coincideix amb el recompte de la variable de destí (%zu)."
#: src/language/stats/autorecode.c:128
#, c-format
#: src/language/stats/chisquare.c:150
#, c-format
-msgid ""
-"CHISQUARE test specified %d expected values, but %d distinct values were "
-"encountered in variable %s."
-msgstr ""
-"Prova CHISQUARE especifica %d valors esperats, però %d diferents valors es "
-"van trobar a la variable %s."
+msgid "CHISQUARE test specified %d expected values, but %d distinct values were encountered in variable %s."
+msgstr "Prova CHISQUARE especifica %d valors esperats, però %d diferents valors es van trobar a la variable %s."
#: src/language/stats/chisquare.c:161 src/language/stats/chisquare.c:200
msgid "Observed N"
msgstr "Desviació Est."
#: src/language/stats/correlations.c:190 src/language/stats/factor.c:1620
-#, fuzzy
msgid "Correlations"
-msgstr "Correlació"
+msgstr "Correlacions"
#: src/language/stats/correlations.c:216
-#, fuzzy
msgid "Pearson Correlation"
-msgstr "Correlació de Spearman"
+msgstr "Correlació de Pearson"
#: src/language/stats/correlations.c:218 src/language/stats/oneway.q:686
#: src/language/stats/t-test.q:753 src/language/stats/t-test.q:924
msgstr "Sig. (2-cues)"
#: src/language/stats/correlations.c:218
-#, fuzzy
msgid "Sig. (1-tailed)"
-msgstr "Sig. (2-cues)"
+msgstr "Sig. (1-cua)"
#: src/language/stats/correlations.c:222
msgid "Cross-products"
-msgstr ""
+msgstr "Productes-creuats"
#: src/language/stats/correlations.c:223
-#, fuzzy
msgid "Covariance"
msgstr "Covariància"
msgstr "esperant nom de l'estadístic: torna a aplicar el defecte"
#: src/language/stats/descriptives.c:523
-msgid ""
-"Ran out of generic names for Z-score variables. There are only 126 generic "
-"names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
-msgstr ""
-"S'han esgotat els noms genèrics per les variables Z. Només hi ha 126 noms "
-"genèrics: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
+msgid "Ran out of generic names for Z-score variables. There are only 126 generic names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
+msgstr "S'han esgotat els noms genèrics per les variables Z. Només hi ha 126 noms genèrics: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
#: src/language/stats/descriptives.c:555
msgid "Mapping of variables to corresponding Z-scores."
#: src/language/stats/factor.c:803
msgid "Factor analysis on a single variable is not useful."
-msgstr ""
+msgstr "L'anàlisi factorial per a una única variable és inútil."
#: src/language/stats/factor.c:1206
-#, fuzzy
msgid "Component Number"
-msgstr "Columna Numero: 0"
+msgstr "Número de Component"
#: src/language/stats/factor.c:1206
-#, fuzzy
msgid "Factor Number"
-msgstr "Número de Cas"
+msgstr "Número de Factor"
#: src/language/stats/factor.c:1237
-#, fuzzy
msgid "Communalities"
-msgstr "Comentaris:"
+msgstr "Comunalitats"
#: src/language/stats/factor.c:1243
msgid "Initial"
-msgstr ""
+msgstr "Inicial"
#: src/language/stats/factor.c:1246
msgid "Extraction"
-msgstr ""
+msgstr "Extracció"
#: src/language/stats/factor.c:1310 src/language/stats/factor.c:1437
-#, fuzzy
msgid "Component"
-msgstr "Comentaris:"
+msgstr "Component"
#: src/language/stats/factor.c:1315 src/language/stats/factor.c:1439
-#, fuzzy
msgid "Factor"
-msgstr "_Factor:"
+msgstr "Factor"
#: src/language/stats/factor.c:1347 src/language/stats/factor.c:1495
#: src/ui/gui/psppire-data-store.c:755 src/ui/gui/psppire-var-store.c:699
#: src/language/stats/factor.c:1412
msgid "Total Variance Explained"
-msgstr ""
+msgstr "Variancia Total Explicada"
#: src/language/stats/factor.c:1444
msgid "Initial Eigenvalues"
-msgstr ""
+msgstr "Valors propis Inicials"
#: src/language/stats/factor.c:1450
msgid "Extraction Sums of Squared Loadings"
-msgstr ""
+msgstr "Extracció: Sumes de Carregues al Quadrat"
#: src/language/stats/factor.c:1456
msgid "Rotation Sums of Squared Loadings"
-msgstr ""
+msgstr "Rotació: Sumes de Carregues al Quadrat "
#: src/language/stats/factor.c:1464
-#, fuzzy, no-c-format
+#, no-c-format
msgid "% of Variance"
-msgstr "Variància"
+msgstr "% de Variància"
#: src/language/stats/factor.c:1465
msgid "Cumulative %"
-msgstr ""
+msgstr "% Acumulat"
#: src/language/stats/factor.c:1578
-#, fuzzy
msgid "Correlation Matrix"
-msgstr "Correlació"
+msgstr "Matriu de Correlació"
#: src/language/stats/factor.c:1632
-#, fuzzy
msgid "Sig. 1-tailed"
-msgstr "Sig. (2-cues)"
+msgstr "Sig. (1-cua)"
#: src/language/stats/factor.c:1666
-#, fuzzy
msgid "Determinant"
-msgstr "Dependent"
+msgstr "Determinant"
#: src/language/stats/factor.c:1743
msgid "Analysis N"
-msgstr ""
+msgstr "N Anàlisis"
#: src/language/stats/factor.c:1776
-msgid ""
-"The FACTOR criteria result in zero factors extracted. Therefore no analysis "
-"will be performed."
-msgstr ""
+msgid "The FACTOR criteria result in zero factors extracted. Therefore no analysis will be performed."
+msgstr "El criteri FACTOR resulta en l'extracció de cero factors. No es pot realitzar cap anàlisi."
#: src/language/stats/factor.c:1782
-msgid ""
-"The FACTOR criteria result in more factors than variables, which is not "
-"meaningful. No analysis will be performed."
-msgstr ""
+msgid "The FACTOR criteria result in more factors than variables, which is not meaningful. No analysis will be performed."
+msgstr "El criteri FACTOR resulta en més factors que variables, i això no té cap sentit. No es realitza cap anàlisi."
#: src/language/stats/factor.c:1865
msgid "Component Matrix"
-msgstr ""
+msgstr "Matriu de Components"
#: src/language/stats/factor.c:1865
-#, fuzzy
msgid "Factor Matrix"
-msgstr "Llista de Factors:"
+msgstr "Matriu de Factors"
#: src/language/stats/factor.c:1871
msgid "Rotated Component Matrix"
-msgstr ""
+msgstr "Matriu Rotada de Components"
#: src/language/stats/factor.c:1871
-#, fuzzy
msgid "Rotated Factor Matrix"
-msgstr "Llista de Factors:"
+msgstr "Matriu Rotada de Factors"
#: src/language/stats/flip.c:98
-msgid ""
-"FLIP ignores TEMPORARY. Temporary transformations will be made permanent."
-msgstr ""
-"FLIP ignora TEMPORARY. Les transformacions temporals seran permanents."
+msgid "FLIP ignores TEMPORARY. Temporary transformations will be made permanent."
+msgstr "FLIP ignora TEMPORARY. Les transformacions temporals seran permanents."
#: src/language/stats/flip.c:150
msgid "Could not create temporary file for FLIP."
#: src/language/data-io/combine-files.c:210
msgid "Cannot specify the active file since no active file has been defined."
-msgstr ""
-"No es pot especificar el fitxer actiu ja que cap fitxer actiu ha estat "
-"definit."
+msgstr "No es pot especificar el fitxer actiu ja que cap fitxer actiu ha estat definit."
#: src/language/data-io/combine-files.c:216
-msgid ""
-"This command may not be used after TEMPORARY when the active file is an "
-"input source. Temporary transformations will be made permanent."
-msgstr ""
-"Aquest comando no pot ser utilitzat després de TEMPORARY quan l'arxiu actiu "
-"és una font d'entrada. Les transformacions temporals seran permanents."
+msgid "This command may not be used after TEMPORARY when the active file is an input source. Temporary transformations will be made permanent."
+msgstr "Aquest comando no pot ser utilitzat després de TEMPORARY quan l'arxiu actiu és una font d'entrada. Les transformacions temporals seran permanents."
#: src/language/data-io/combine-files.c:250
msgid "Multiple IN subcommands for a single FILE or TABLE."
#: src/language/data-io/combine-files.c:381
#: src/language/data-io/combine-files.c:386
-#, fuzzy, c-format
+#, c-format
msgid "BY is required when %s is specified."
-msgstr "BY és necessari quan SORT s'especifica."
+msgstr "BY és necessari quan s'especifica %s."
#: src/language/data-io/combine-files.c:513
-msgid ""
-"Combining files with incompatible encodings. String data may not be "
-"represented correctly."
-msgstr ""
-"Combinant arxius amb codificacions incompatibles. Les dades de la cadena no "
-"podran estar representades correctament."
+msgid "Combining files with incompatible encodings. String data may not be represented correctly."
+msgstr "Combinant arxius amb codificacions incompatibles. Les dades de la cadena no podran estar representades correctament."
#: src/language/data-io/combine-files.c:545
#, c-format
-msgid ""
-"Variable %s in file %s has different type or width from the same variable in "
-"earlier file."
-msgstr ""
-"La variable %s a l'arxiu %s és de tipus o amplada diferent respecte de la "
-"mateixa variable en l'arxiu anterior. "
+msgid "Variable %s in file %s has different type or width from the same variable in earlier file."
+msgstr "La variable %s a l'arxiu %s és de tipus o amplada diferent respecte de la mateixa variable en l'arxiu anterior. "
#: src/language/data-io/combine-files.c:551
#, c-format
#: src/language/data-io/combine-files.c:562
#, c-format
msgid "In an earlier file, %s was a string variable with width %d."
-msgstr ""
-"En un arxiu anterior, %s era una variable cadena amb una amplada de %d."
+msgstr "En un arxiu anterior, %s era una variable cadena amb una amplada de %d."
#: src/language/data-io/combine-files.c:601
#, c-format
-msgid ""
-"Variable name %s specified on %s subcommand duplicates an existing variable "
-"name."
-msgstr ""
-"Nom de la variable %s especificat al subcomando %s duplica el nom de la "
-"variable existent."
+msgid "Variable name %s specified on %s subcommand duplicates an existing variable name."
+msgstr "Nom de la variable %s especificat al subcomando %s duplica el nom de la variable existent."
#: src/language/data-io/combine-files.c:762
#, c-format
#: src/language/data-io/data-list.c:243
msgid "Encoding should not be specified for inline data. It will be ignored."
-msgstr ""
-"La codificació no ha de ser especificada per les dades en línia. Serà "
-"ignorada."
+msgstr "La codificació no ha de ser especificada per les dades en línia. Serà ignorada."
#: src/language/data-io/data-list.c:254
msgid "The END subcommand may be used only with DATA LIST FIXED."
#: src/language/data-io/data-list.c:390
#, c-format
msgid "Cannot place variable %s on record %d when RECORDS=%d is specified."
-msgstr ""
-"No es pot posar la variable %s en el registre %d quan RECORDS=%d està "
-"especificat."
+msgstr "No es pot posar la variable %s en el registre %d quan RECORDS=%d està especificat."
#: src/language/data-io/data-parser.c:460
#: src/language/data-io/data-parser.c:469
#: src/language/data-io/data-parser.c:610
#, c-format
-msgid ""
-"Missing value(s) for all variables from %s onward. These will be filled "
-"with the system-missing value or blanks, as appropriate."
-msgstr ""
-"Valor(s) perdut(s) per a totes les variables des de %st. Aquests s'omplen "
-"amb el valor perdut del sistema o espais en blanc, segons correspongui."
+msgid "Missing value(s) for all variables from %s onward. These will be filled with the system-missing value or blanks, as appropriate."
+msgstr "Valor(s) perdut(s) per a totes les variables des de %st. Aquests s'omplen amb el valor perdut del sistema o espais en blanc, segons correspongui."
#: src/language/data-io/data-parser.c:630
msgid "Record ends in data not part of any field."
msgstr "No s'ha pogut obrir \"%s\" per a la lectura com un arxiu de dades: %s."
#: src/language/data-io/data-reader.c:192
-msgid ""
-"Unexpected end-of-file while reading data in BEGIN DATA. This probably "
-"indicates a missing or misformatted END DATA command. END DATA must appear "
-"by itself on a single line with exactly one space between words."
-msgstr ""
-"Final d'arxiu inesperat durant la lectura de dades en BEGIN DATA. Això "
-"probablement indica una pérdua o format erroni del comando END DATA. END "
-"DATA ha d'aparèixer per si mateix en una sola línia amb exactament un espai "
-"entre les paraules."
+msgid "Unexpected end-of-file while reading data in BEGIN DATA. This probably indicates a missing or misformatted END DATA command. END DATA must appear by itself on a single line with exactly one space between words."
+msgstr "Final d'arxiu inesperat durant la lectura de dades en BEGIN DATA. Això probablement indica una pérdua o format erroni del comando END DATA. END DATA ha d'aparèixer per si mateix en una sola línia amb exactament un espai entre les paraules."
#: src/language/data-io/data-reader.c:217
#, c-format
msgstr "Intent de llegir més enllà de END DATA."
#: src/language/data-io/data-reader.c:708
-msgid ""
-"This command is not valid here since the current input program does not "
-"access the inline file."
-msgstr ""
-"Aquesta ordre no es vàlida ja que el programa d'entrada actual no té accés a "
-"l'arxiu en línia."
+msgid "This command is not valid here since the current input program does not access the inline file."
+msgstr "Aquesta ordre no es vàlida ja que el programa d'entrada actual no té accés a l'arxiu en línia."
#: src/language/data-io/data-writer.c:74
#, c-format
msgid "An error occurred while opening \"%s\" for writing as a data file: %s."
-msgstr ""
-"S'ha produït un error en obrir \"%s\" per a escriure'l com un arxiu de "
-"dades: %s."
+msgstr "S'ha produït un error en obrir \"%s\" per a escriure'l com un arxiu de dades: %s."
#: src/language/data-io/data-writer.c:191
#, c-format
#: src/language/data-io/get-data.c:260
#, c-format
-msgid ""
-"%s is allowed only with %s arrangement, but %s arrangement was stated or "
-"implied earlier in this command."
-msgstr ""
-"%s només es permet amb configuració %s, però prèviament en aquest comando "
-"s'ha establit la configuració %s."
+msgid "%s is allowed only with %s arrangement, but %s arrangement was stated or implied earlier in this command."
+msgstr "%s només es permet amb configuració %s, però prèviament en aquest comando s'ha establit la configuració %s."
#: src/language/data-io/get-data.c:315
msgid "expecting FIXED or DELIMITED"
msgstr "Valor de PERCENT ha de ser entre 1 i 100."
#: src/language/data-io/get-data.c:447
-msgid ""
-"In compatible syntax mode, the QUALIFIER string must contain exactly one "
-"character."
-msgstr ""
-"En el mode de sintaxi compatible, la cadena QUALIFIER ha de contenir "
-"exactament un caràcter."
+msgid "In compatible syntax mode, the QUALIFIER string must contain exactly one character."
+msgstr "En el mode de sintaxi compatible, la cadena QUALIFIER ha de contenir exactament un caràcter."
#: src/language/data-io/get-data.c:462
msgid "expecting VARIABLES"
#: src/language/data-io/get-data.c:484
#: src/language/data-io/placement-parser.c:378
#, c-format
-msgid ""
-"The record number specified, %ld, is at or before the previous record, %d. "
-"Data fields must be listed in order of increasing record number."
-msgstr ""
-"El nombre de registre especificat, %ld, és a o abans del registre anterior, %"
-"d. Els camps de dades han de ser llistats en ordre incremental del número "
-"de registre."
+msgid "The record number specified, %ld, is at or before the previous record, %d. Data fields must be listed in order of increasing record number."
+msgstr "El nombre de registre especificat, %ld, és a o abans del registre anterior, %d. Els camps de dades han de ser llistats en ordre incremental del número de registre."
#: src/language/data-io/get-data.c:493
#, c-format
-msgid ""
-"The record number specified, %ld, exceeds the number of records per case "
-"specified on FIXCASE, %d."
-msgstr ""
-"El nombre de registre especificat , %ld, excedeix el nombre de registres per "
-"cas especificats a FIXCASE, %d."
+msgid "The record number specified, %ld, exceeds the number of records per case specified on FIXCASE, %d."
+msgstr "El nombre de registre especificat , %ld, excedeix el nombre de registres per cas especificats a FIXCASE, %d."
#: src/language/data-io/get.c:99
msgid "expecting COMM or TAPE"
msgstr "subcomando COLUMN especificat múltiples vegades."
#: src/language/data-io/inpt-pgm.c:338
-msgid ""
-"REREAD: Column numbers must be positive finite numbers. Column set to 1."
-msgstr ""
-"REREAD: Els nombres de columna han de ser nombres positius finits. La "
-"columna s'estableix en 1."
+msgid "REREAD: Column numbers must be positive finite numbers. Column set to 1."
+msgstr "REREAD: Els nombres de columna han de ser nombres positius finits. La columna s'estableix en 1."
#: src/language/data-io/placement-parser.c:87
#, c-format
-msgid ""
-"Number of variables specified (%zu) differs from number of variable formats "
-"(%zu)."
-msgstr ""
-"Nombre de variables especificades (%zu) difereix del nombre de formats de la "
-"variable (%zu)."
+msgid "Number of variables specified (%zu) differs from number of variable formats (%zu)."
+msgstr "Nombre de variables especificades (%zu) difereix del nombre de formats de la variable (%zu)."
#: src/language/data-io/placement-parser.c:97
-msgid ""
-"SPSS-like or Fortran-like format specification expected after variable names."
-msgstr ""
-"Després del nom de les variables s'esperen especificacions en format tipus-"
-"SPSS o tipus-Fortran."
+msgid "SPSS-like or Fortran-like format specification expected after variable names."
+msgstr "Després del nom de les variables s'esperen especificacions en format tipus-SPSS o tipus-Fortran."
#: src/language/data-io/placement-parser.c:119
#, c-format
msgid "The %d columns %d-%d can't be evenly divided into %zu fields."
-msgstr ""
-"Les %d columnes %d-%d no poden ser uniformement dividides entre els camps %"
-"zu."
+msgstr "Les %d columnes %d-%d no poden ser uniformement dividides entre els camps %zu."
#: src/language/data-io/placement-parser.c:305
msgid "Column positions for fields must be positive."
#: src/language/data-io/print.c:267
#, c-format
msgid "Output calls for %d records but %zu specified on RECORDS subcommand."
-msgstr ""
-"Resultats obtinguts per a %d registres, però %zu especificats al subcomando "
-"RECORDS."
+msgstr "Resultats obtinguts per a %d registres, però %zu especificats al subcomando RECORDS."
#: src/language/data-io/print.c:436
-#, fuzzy, c-format
+#, c-format
msgid "Writing %zu record to %s."
msgid_plural "Writing %zu records to %s."
-msgstr[0] "Escribint %d registre a %s."
-msgstr[1] "Escribint %d registres a %s."
+msgstr[0] "Escribint el registre %zu a %s."
+msgstr[1] "Escribint %zu registres a %s."
#: src/language/data-io/print.c:440
-#, fuzzy, c-format
+#, c-format
msgid "Writing %zu record."
msgid_plural "Writing %zu records."
-msgstr[0] "Escribint %d registre."
-msgstr[1] "Escrivint %d registres."
+msgstr[0] "Escribint el registre %zu."
+msgstr[1] "Escrivint %zu registres."
#: src/language/data-io/save.c:223 src/language/data-io/save.c:238
#: src/language/data-io/save.c:266
#: src/language/data-io/trim.c:88
#, c-format
-msgid ""
-"Cannot rename %s as %s because there already exists a variable named %s. To "
-"rename variables with overlapping names, use a single RENAME subcommand such "
-"as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
-msgstr ""
-"No es pot canviar el nom %s per %s perquè ja hi ha una variable anomenada %"
-"s. Per canviar el nom de les variables amb noms superposats, utilitzeu el "
-"subcomando RENAME només com a \"/RENAME (A=B)(B=C)(C=A)\", o equivalentment, "
-"\"/RENAME (A B C=B C A)\"."
+msgid "Cannot rename %s as %s because there already exists a variable named %s. To rename variables with overlapping names, use a single RENAME subcommand such as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
+msgstr "No es pot canviar el nom %s per %s perquè ja hi ha una variable anomenada %s. Per canviar el nom de les variables amb noms superposats, utilitzeu el subcomando RENAME només com a \"/RENAME (A=B)(B=C)(C=A)\", o equivalentment, \"/RENAME (A B C=B C A)\"."
#: src/language/data-io/trim.c:114
msgid "`=' expected after variable list."
#: src/language/data-io/trim.c:122
#, c-format
-msgid ""
-"Number of variables on left side of `=' (%zu) does not match number of "
-"variables on right side (%zu), in parenthesized group %d of RENAME "
-"subcommand."
-msgstr ""
-"El nombre de variables en el costat esquerre de `=' (%zu) no coincideix amb "
-"el nombre de variables al costat dret (%zu), en el grup entre parèntesi %d "
-"del subcomando RENAME."
+msgid "Number of variables on left side of `=' (%zu) does not match number of variables on right side (%zu), in parenthesized group %d of RENAME subcommand."
+msgstr "El nombre de variables en el costat esquerre de `=' (%zu) no coincideix amb el nombre de variables al costat dret (%zu), en el grup entre parèntesi %d del subcomando RENAME."
#: src/language/data-io/trim.c:135
#, c-format
msgstr "Nom de la variable %s duplicat."
#: src/language/expressions/helpers.c:51
-msgid ""
-"One of the arguments to a DATE function is not an integer. The result will "
-"be system-missing."
-msgstr ""
-"Un dels arguments per a funció DATE no és un enter. El resultat serà perdut "
-"del sistema."
+msgid "One of the arguments to a DATE function is not an integer. The result will be system-missing."
+msgstr "Un dels arguments per a funció DATE no és un enter. El resultat serà perdut del sistema."
#: src/language/expressions/helpers.c:73
-msgid ""
-"The week argument to DATE.WKYR is not an integer. The result will be system-"
-"missing."
-msgstr ""
-"L'argument de setmana per DATE.WKYR no és un enter. El resultat serà perdut "
-"pel sistema."
+msgid "The week argument to DATE.WKYR is not an integer. The result will be system-missing."
+msgstr "L'argument de setmana per DATE.WKYR no és un enter. El resultat serà perdut pel sistema."
#: src/language/expressions/helpers.c:79
-msgid ""
-"The week argument to DATE.WKYR is outside the acceptable range of 1 to 53. "
-"The result will be system-missing."
-msgstr ""
-"L'argument de setmana per DATE.WKYR és fora de l'interval acceptable entre 1 "
-"i 53. El resultat serà perdut pel sistema."
+msgid "The week argument to DATE.WKYR is outside the acceptable range of 1 to 53. The result will be system-missing."
+msgstr "L'argument de setmana per DATE.WKYR és fora de l'interval acceptable entre 1 i 53. El resultat serà perdut pel sistema."
#: src/language/expressions/helpers.c:101
-msgid ""
-"The day argument to DATE.YRDAY is not an integer. The result will be system-"
-"missing."
-msgstr ""
-"L'argument de dia per DATE.YRDAY no és un enter. El resultat serà perdut "
-"pel sistema."
+msgid "The day argument to DATE.YRDAY is not an integer. The result will be system-missing."
+msgstr "L'argument de dia per DATE.YRDAY no és un enter. El resultat serà perdut pel sistema."
#: src/language/expressions/helpers.c:107
-msgid ""
-"The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366. "
-"The result will be system-missing."
-msgstr ""
-"L'argument de dia per DATE.YRDAY és fora de l'interval acceptable entre 1 i "
-"366. El resultat serà perdut al sistema."
+msgid "The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366. The result will be system-missing."
+msgstr "L'argument de dia per DATE.YRDAY és fora de l'interval acceptable entre 1 i 366. El resultat serà perdut al sistema."
#: src/language/expressions/helpers.c:129
-msgid ""
-"The year argument to YRMODA is greater than 47516. The result will be "
-"system-missing."
-msgstr ""
-"L'argument d'any per YRMODA és més gran que 47516. El resultat será perdut "
-"al sistema."
+msgid "The year argument to YRMODA is greater than 47516. The result will be system-missing."
+msgstr "L'argument d'any per YRMODA és més gran que 47516. El resultat será perdut al sistema."
#: src/language/expressions/helpers.c:182
#, c-format
-msgid ""
-"Unrecognized date unit \"%.*s\". Valid date units are \"years\", \"quarters"
-"\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"."
-msgstr ""
-"Unitat de dates \"%.*s\" no reconeguda. Les unitats de data vàlides són "
-"\"anys\", \"trimestres\", \"mesos\", \"setmanes\", \"dies\", \"hores\", "
-"\"minuts\", i \"segons\"."
+msgid "Unrecognized date unit \"%.*s\". Valid date units are \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"."
+msgstr "Unitat de dates \"%.*s\" no reconeguda. Les unitats de data vàlides són \"anys\", \"trimestres\", \"mesos\", \"setmanes\", \"dies\", \"hores\", \"minuts\", i \"segons\"."
#: src/language/expressions/helpers.c:332
-msgid ""
-"Invalid DATESUM method. Valid choices are \"closest\" and \"rollover\"."
-msgstr ""
-"Mètode DATESUM invàlid. Les opcions vàlides són \"propera\" i \"acomplida\"."
+msgid "Invalid DATESUM method. Valid choices are \"closest\" and \"rollover\"."
+msgstr "Mètode DATESUM invàlid. Les opcions vàlides són \"propera\" i \"acomplida\"."
#: src/language/expressions/parse.c:259
#, c-format
-msgid ""
-"Type mismatch: expression has %s type, but a numeric value is required here."
-msgstr ""
-"Incompatibilitat de tipus: l'expressió té tipus %s, però aquí es demana un "
-"valor numèric."
+msgid "Type mismatch: expression has %s type, but a numeric value is required here."
+msgstr "Incompatibilitat de tipus: l'expressió té tipus %s, però aquí es demana un valor numèric."
#: src/language/expressions/parse.c:271
#, c-format
-msgid ""
-"Type mismatch: expression has %s type, but a string value is required here."
-msgstr ""
-"Incompatibilitat de tipus: l'expressió té tipus %s, però aquí es demana un "
-"valor de cadena."
+msgid "Type mismatch: expression has %s type, but a string value is required here."
+msgstr "Incompatibilitat de tipus: l'expressió té tipus %s, però aquí es demana un valor de cadena."
#: src/language/expressions/parse.c:427
#, c-format
msgid "Type mismatch while applying %s operator: cannot convert %s to %s."
-msgstr ""
-"Incompatibilitat dels tipus mentre que s'aplica l'operador %s: no es pot "
-"convertir %s a %s."
+msgstr "Incompatibilitat dels tipus mentre que s'aplica l'operador %s: no es pot convertir %s a %s."
#: src/language/expressions/parse.c:643
-msgid ""
-"Chaining relational operators (e.g. \"a < b < c\") will not produce the "
-"mathematically expected result. Use the AND logical operator to fix the "
-"problem (e.g. \"a < b AND b < c\"). If chaining is really intended, "
-"parentheses will disable this warning (e.g. \"(a < b) < c\".)"
-msgstr ""
-"L'encadenament d'operadors relacionals (p.e. \"a < b < c\") no produirà el "
-"resultat esperat matemàticament. Utilitzar l'operador lògic AND per "
-"solucionar el problema (p.e. \"a < b AND b < c\"). Si l'encadenament és "
-"realment intencionat, els parèntesis desactivaran aquesta alerta (p.e. \"(a "
-"< b) < c\".)"
+msgid "Chaining relational operators (e.g. \"a < b < c\") will not produce the mathematically expected result. Use the AND logical operator to fix the problem (e.g. \"a < b AND b < c\"). If chaining is really intended, parentheses will disable this warning (e.g. \"(a < b) < c\".)"
+msgstr "L'encadenament d'operadors relacionals (p.e. \"a < b < c\") no produirà el resultat esperat matemàticament. Utilitzar l'operador lògic AND per solucionar el problema (p.e. \"a < b AND b < c\"). Si l'encadenament és realment intencionat, els parèntesis desactivaran aquesta alerta (p.e. \"(a < b) < c\".)"
#: src/language/expressions/parse.c:744
-msgid ""
-"The exponentiation operator (\"**\") is left-associative, even though right-"
-"associative semantics are more useful. That is, \"a**b**c\" equals \"(a**b)"
-"**c\", not as \"a**(b**c)\". To disable this warning, insert parentheses."
-msgstr ""
-"L'operador d'exponenciació (\"**\") apareix a l'esquerra, tot i que si "
-"apareix a la dreta és més útil. És a dir, \"a**b**c\" és igual a \"(a**b)**c"
-"\", no a \"a**(b**c)\". Per desactivar aquesta alerta, insereix parèntesis."
+msgid "The exponentiation operator (\"**\") is left-associative, even though right-associative semantics are more useful. That is, \"a**b**c\" equals \"(a**b)**c\", not as \"a**(b**c)\". To disable this warning, insert parentheses."
+msgstr "L'operador d'exponenciació (\"**\") apareix a l'esquerra, tot i que si apareix a la dreta és més útil. És a dir, \"a**b**c\" és igual a \"(a**b)**c\", no a \"a**(b**c)\". Per desactivar aquesta alerta, insereix parèntesis."
#: src/language/expressions/parse.c:809
#, c-format
#: src/language/expressions/parse.c:1110
#, c-format
-msgid ""
-"With %s, using minimum valid argument count of %d does not make sense when "
-"passing only %d arguments in list."
-msgstr ""
-"Amb %s, utilitzar el mínim recompte d'argument vàlid %d no té sentit quan es "
-"passen només %d arguments en la llista."
+msgid "With %s, using minimum valid argument count of %d does not make sense when passing only %d arguments in list."
+msgstr "Amb %s, utilitzar el mínim recompte d'argument vàlid %d no té sentit quan es passen només %d arguments en la llista."
#: src/language/expressions/parse.c:1164
#, c-format
msgstr "avís"
#: src/libpspp/message.c:135
-#, fuzzy
msgid "note"
-msgstr "Centre"
+msgstr "anotació"
#: src/libpspp/tmpfile.c:56
msgid "failed to create temporary file"
msgstr "escrivint a un arxiu temporal"
#: src/libpspp/zip-writer.c:91
-#, fuzzy, c-format
+#, c-format
msgid "%s: error opening output file"
-msgstr "ascii: obrint l'arxiu de resultats \"%s\""
+msgstr "%s: error obrint l'arxiu de resultats"
#: src/libpspp/zip-writer.c:224
-#, fuzzy, c-format
+#, c-format
msgid "%s: write failed"
-msgstr "%s: No és un arxiu portàtil."
+msgstr "%s: error en escriure"
#: src/math/percentiles.c:36
msgid "HAverage"
#: src/output/ascii.c:278
#, c-format
msgid "%s: %s must be positive integer or `auto'"
-msgstr ""
+msgstr "%s: %s ha de ser enter positiu o `auto'"
#: src/output/ascii.c:311
-#, fuzzy, c-format
-msgid ""
-"ascii: page excluding margins and headers must be at least %d characters "
-"wide by %d lines long, but as configured is only %d characters by %d lines"
-msgstr ""
-"ascii: la pàgina excloent els marges i encapçalaments ha de ser com a mínim "
-"de 59 caràcters d'ample per 15 línies de llarg, però tal com està "
-"configurada la pàgina només hi ha %d caràcters i %d línies"
+#, c-format
+msgid "ascii: page excluding margins and headers must be at least %d characters wide by %d lines long, but as configured is only %d characters by %d lines"
+msgstr "ascii: excloent els marges i encapçalaments la pàgina ha de tenir com a mínim %d caràcters d'ample per %d línies de llarg, però tal com està configurada, només n'hi ha %d caràcters i %d línies"
#: src/output/ascii.c:360
#, c-format
#: src/output/ascii.c:503
#, c-format
msgid "See %s for a chart."
-msgstr ""
+msgstr "Veure %s per a gràfica."
#: src/output/ascii.c:806
#, c-format
#: src/output/csv.c:87 src/output/html.c:106 src/output/journal.c:93
#: src/output/msglog.c:66
-#, fuzzy, c-format
+#, c-format
msgid "error opening output file \"%s\""
-msgstr "ascii: obrint l'arxiu de resultats \"%s\""
+msgstr "error obrint l'arxiu de resultats \"%s\""
#: src/output/driver.c:330
#, c-format
-msgid ""
-"%s is not a valid device type (the choices are \"terminal\" and \"listing\")"
-msgstr ""
+msgid "%s is not a valid device type (the choices are \"terminal\" and \"listing\")"
+msgstr "%s no és un tipus de dispositiu vàlid (les opcions son \"terminal\" i \"llistat\")"
#: src/output/driver.c:343
-#, fuzzy, c-format
+#, c-format
msgid "%s: unknown option \"%s\""
-msgstr "ascii: paràmetre desconegut `%s'"
+msgstr "%s: opció desconeguda \"%s\""
#: src/output/html.c:114
msgid "PSPP Output"
msgstr "Resultat de PSPP"
#: src/output/journal.c:67
-#, fuzzy, c-format
+#, c-format
msgid "error writing output file \"%s\""
-msgstr "error en escriure \"%s\""
+msgstr "error en escriure l'arxiu de resultats \"%s\""
#: src/output/measure.c:65
#, c-format
msgstr "tipus de paper desconegut `%.*s'"
#: src/output/measure.c:248
-#, fuzzy, c-format
+#, c-format
msgid "error opening input file \"%s\""
-msgstr "error en obrir \"%s\""
+msgstr "error en obrir l'arxiu de dades \"%s\""
#: src/output/measure.c:259
-#, fuzzy, c-format
+#, c-format
msgid "error reading file \"%s\""
-msgstr "error de lectura \"%s\""
+msgstr "error llegint l'arxiu \"%s\""
#: src/output/measure.c:276
#, c-format
#: src/output/options.c:113
#, c-format
msgid "%s: \"%s\" is \"%s\" but a Boolean value is required"
-msgstr ""
+msgstr "%s: \"%s\" és \"%s\", però es requereix un valor Booleà"
#: src/output/options.c:188
#, c-format
msgid "%s: \"%s\" is \"%s\" but one of the following is required: %s"
-msgstr ""
+msgstr "%s: \"%s\" és \"%s\", però es requereix un del sequents: %s "
#: src/output/options.c:232
#, c-format
msgid "%s: \"%s\" is \"%s\" but a nonnegative integer is required"
-msgstr ""
+msgstr "%s: \"%s\" és \"%s\", però es requereix un enter no negatiu"
#: src/output/options.c:236
#, c-format
msgid "%s: \"%s\" is \"%s\" but a positive integer is required"
-msgstr ""
+msgstr "%s: \"%s\" és \"%s\", però es requereix un enter positiu"
#: src/output/options.c:239
#, c-format
msgid "%s: \"%s\" is \"%s\" but an integer is required"
-msgstr ""
+msgstr "%s: \"%s\" és \"%s\", però es requereix un enter"
#: src/output/options.c:242
#, c-format
msgid "%s: \"%s\" is \"%s\" but an integer greater than %d is required"
-msgstr ""
+msgstr "%s: \"%s\" és \"%s\", però es requereix un enter més gran que %d"
#: src/output/options.c:247
#, c-format
msgid "%s: \"%s\" is \"%s\" but an integer between %d and %d is required"
-msgstr ""
+msgstr "%s: \"%s\" és \"%s\", però es requereix un enter entre %d i %d"
#: src/output/options.c:326
#, c-format
msgid "%s: \"%s\" is \"%s\" but a file name that contains \"#\" is required."
-msgstr ""
+msgstr "%s: \"%s\" és \"%s\", però es requereix un nom d'arxiu que contingui \"#\"."
#: src/output/tab.c:206
#, c-format
msgstr "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) a taula de mida (%d,%d)\n"
#: src/output/tab.c:244
-#, fuzzy, c-format
+#, c-format
msgid "bad hline: x=(%d+%d=%d,%d+%d=%d) y=%d+%d=%d in table size (%d,%d)\n"
-msgstr "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) a taula de mida (%d,%d)\n"
+msgstr "incorrecta hline: x=(%d+%d=%d,%d+%d=%d) y=%d+%d=%d a taula de mida (%d,%d)\n"
#: src/output/tab.c:288
#, c-format
-msgid ""
-"bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
-msgstr ""
-"bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) en taula amb mida (%d,%d)\n"
+msgid "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
+msgstr "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) en taula amb mida (%d,%d)\n"
#: src/output/cairo.c:295
-#, fuzzy, c-format
+#, c-format
msgid "error opening output file \"%s\": %s"
-msgstr "ascii: obrint l'arxiu de resultats \"%s\""
+msgstr "error obrint l'arxiu de resultats \"%s\": %s"
#: src/output/cairo.c:312
-#, fuzzy, c-format
-msgid ""
-"The defined page is not wide enough to hold at least %d characters in the "
-"default font. In fact, there's only room for %d characters."
-msgstr ""
-"La pàgina PostScript definida no és prou extensa com per contenir marges i "
-"capçaleres, a més d'almenys 15 línies amb les fonts per defecte. De fet, "
-"només hi ha espai per %d línies de cada font en la mida per defecte de %d.%"
-"03d punts."
+#, c-format
+msgid "The defined page is not wide enough to hold at least %d characters in the default font. In fact, there's only room for %d characters."
+msgstr "La pàgina definida no és prou ampla com per contenir al més d'almenys %d caracters en la font per defecte. De fet, només n'hi ha espai per %d caracters."
#: src/output/cairo.c:322
-#, fuzzy, c-format
-msgid ""
-"The defined page is not long enough to hold margins and headers, plus least %"
-"d lines of the default fonts. In fact, there's only room for %d lines."
-msgstr ""
-"La pàgina PostScript definida no és prou extensa com per contenir marges i "
-"capçaleres, a més d'almenys 15 línies amb les fonts per defecte. De fet, "
-"només hi ha espai per %d línies de cada font en la mida per defecte de %d.%"
-"03d punts."
+#, c-format
+msgid "The defined page is not long enough to hold margins and headers, plus least %d lines of the default fonts. In fact, there's only room for %d lines."
+msgstr "La pàgina definida no és prou llarga com per contenir marges i capçaleres, a més d'almenys %d línies amb les fonts per defecte. De fet, només n'hi ha espai per %d línies."
#: src/output/cairo.c:376
-#, fuzzy, c-format
+#, c-format
msgid "error drawing output for %s driver: %s"
-msgstr "error de sintaxi analitzant opcions pel controlador \"%s\""
+msgstr "error dibuixant resultats pel controlador %s: \"%s\""
#: src/output/cairo.c:864
#, c-format
msgstr "\"%s\": especificació de caràcter no vàlida"
#: src/output/cairo.c:1084
-#, fuzzy, c-format
+#, c-format
msgid "error writing output file \"%s\": %s"
-msgstr "Error en tancar l'arxiu portàtil \"%s\": %s."
+msgstr "Error escribint l'arxiu de resultats \"%s\": %s."
#: src/output/charts/np-plot-cairo.c:37
#, c-format
#: src/output/charts/scree-cairo.c:36
msgid "Scree Plot"
-msgstr ""
+msgstr "Grafic de Sedimentació"
#: src/output/charts/scree-cairo.c:38
msgid "Eigenvalue"
-msgstr ""
+msgstr "Valor-propi"
#: src/output/odt.c:93
-#, fuzzy
msgid "error creating temporary file"
-msgstr "llegint arxiu temporal"
+msgstr "error creant arxiu temporal"
#: src/ui/source-init-opts.c:78
msgid "Algorithm must be either \"compatible\" or \"enhanced\"."
msgstr "La sintaxi ha de ser o \"compatible\" o \"ampliada\"."
#: src/ui/terminal/main.c:128
-msgid ""
-"Stopping syntax file processing here to avoid a cascade of dependent command "
-"failures."
-msgstr ""
-"Aturant el processament de l'arxiu de sintaxi aquí per evitar una cascada "
-"d'errors derivats."
+msgid "Stopping syntax file processing here to avoid a cascade of dependent command failures."
+msgstr "Aturant el processament de l'arxiu de sintaxi aquí per evitar una cascada d'errors derivats."
#: src/ui/terminal/msg-ui.c:127
#, c-format
msgid "Notes (%d) exceed limit (%d). Suppressing further notes."
-msgstr ""
+msgstr "Les anotacions (%d) han superat el límit (%d). Es suprimeixen les posteriors."
#: src/ui/terminal/msg-ui.c:135
#, c-format
msgstr "Avisos (%d) excedeixen el límit (%d)."
#: src/ui/terminal/msg-ui.c:138
-#, fuzzy, c-format
+#, c-format
msgid "Errors (%d) exceed limit (%d)."
-msgstr "Errors (%d) excedeixen el límit (%d)."
+msgstr "Els errors (%d) excedeixen el límit (%d)."
#: src/ui/terminal/terminal.c:72
#, c-format
#: src/ui/terminal/terminal-opts.c:119
#, c-format
msgid "%s: output option missing `='"
-msgstr ""
+msgstr "%s: manca opció de resultat `='"
#: src/ui/terminal/terminal-opts.c:126
#, c-format
msgid "%s: output option specified more than once"
-msgstr ""
+msgstr "%s: opció de resultat especificada més d'una vegada"
#: src/ui/gui/checkbox-treeview.c:92 src/language/stats/crosstabs.q:1213
#: src/language/stats/crosstabs.q:1240 src/language/stats/crosstabs.q:1263
#: src/ui/gui/factor-dialog.c:344
#, c-format
msgid "Eigenvalues over %4.2f times the mean eigenvalue"
-msgstr ""
+msgstr "Valors-propis per sobre de %4.2f vegades el valor-propi mitjà"
#: src/ui/gui/frequencies-dialog.c:45
msgid "Standard error of the mean"
#: src/ui/gui/help-menu.c:98
#, c-format
-msgid ""
-"Cannot open reference manual: %s. The PSPP user manual is also available at "
-"http://www.gnu.org/software/pspp/documentation.html"
-msgstr ""
+msgid "Cannot open reference manual: %s. The PSPP user manual is also available at http://www.gnu.org/software/pspp/documentation.html"
+msgstr "No es pot obrir el manula de referència: %s. El manual d'usuari de PSPP es tambè disponible a http://www.gnu.org/software/pspp/documentation.html"
#: src/ui/gui/help-menu.c:117
msgid "_Help"
msgstr "Obert"
#: src/ui/gui/psppire-data-window.c:392
-#, fuzzy
msgid "Data and Syntax Files"
-msgstr "No es pot obrir l'arxiu de sintaxi \"%s\""
+msgstr "Arxius de Dades i Sintaxi"
-#: src/ui/gui/psppire-data-window.c:402 src/ui/gui/psppire-data-window.c:611
+#: src/ui/gui/psppire-data-window.c:402 src/ui/gui/psppire-data-window.c:614
msgid "System Files (*.sav)"
msgstr "Arxius de Sistema (*.sav)"
-#: src/ui/gui/psppire-data-window.c:408 src/ui/gui/psppire-data-window.c:617
+#: src/ui/gui/psppire-data-window.c:408 src/ui/gui/psppire-data-window.c:620
msgid "Portable Files (*.por) "
msgstr "Arxius Portables (*.por)"
msgid "Syntax Files (*.sps) "
msgstr "Arxius de Sintàxi (*.sps) "
-#: src/ui/gui/psppire-data-window.c:420 src/ui/gui/psppire-data-window.c:623
+#: src/ui/gui/psppire-data-window.c:420 src/ui/gui/psppire-data-window.c:626
#: src/ui/gui/psppire-syntax-window.c:298
msgid "All Files"
msgstr "Tots els arxius"
-#: src/ui/gui/psppire-data-window.c:603
+#: src/ui/gui/psppire-data-window.c:606
msgid "Save"
msgstr "Desar"
-#: src/ui/gui/psppire-data-window.c:636
+#: src/ui/gui/psppire-data-window.c:639
msgid "Portable File"
msgstr "Arxiu Portable"
-#: src/ui/gui/psppire-data-window.c:773
+#: src/ui/gui/psppire-data-window.c:776
msgid "Font Selection"
msgstr "Selecció de font"
-#: src/ui/gui/psppire-data-window.c:1261
+#: src/ui/gui/psppire-data-window.c:1264
msgid "Data Editor"
msgstr "Editor de Dades"
#: src/ui/gui/psppire-output-window.c:458
msgid "Export Output"
-msgstr ""
+msgstr "Exporta Resultats"
#: src/ui/gui/psppire-output-window.c:466
-#, fuzzy
msgid "PDF Files (*.pdf)"
-msgstr "Arxius Portables (*.por)"
+msgstr "Arxius PDF (*.pdf)"
#: src/ui/gui/psppire-output-window.c:467
msgid "HTML Files (*.html)"
-msgstr ""
+msgstr "Arxius HTML (*.html)"
#: src/ui/gui/psppire-output-window.c:468
msgid "OpenDocument Files (*.odt)"
-msgstr ""
+msgstr "Arxius OpenDocument (*.odt)"
#: src/ui/gui/psppire-output-window.c:469
-#, fuzzy
msgid "Text Files (*.txt)"
-msgstr "Arxius de Sistema (*.sav)"
+msgstr "Arxius de Text (*.txt)"
#: src/ui/gui/psppire-output-window.c:470
-#, fuzzy
msgid "PostScript Files (*.ps)"
-msgstr "Arxius Portables (*.por)"
+msgstr "Arxius PostScript (*.ps)"
#: src/ui/gui/psppire-output-window.c:471
msgid "Comma-Separated Value Files (*.csv)"
-msgstr ""
+msgstr "Arxius de Valors Separats per Comes (*.csv)"
#: src/ui/gui/psppire-output-window.c:605
msgid "Output Viewer"
#: src/ui/gui/psppire-window.c:475
#, c-format
-msgid ""
-"If you don't save, changes from the last %ld seconds will be permanently "
-"lost."
-msgstr ""
-"Si no es desa, els canvis dels darrers %ld segons es perdran permanentment."
+msgid "If you don't save, changes from the last %ld seconds will be permanently lost."
+msgstr "Si no es desa, els canvis dels darrers %ld segons es perdran permanentment."
#: src/ui/gui/psppire-window.c:479
msgid "Close _without saving"
#: src/ui/gui/text-data-import-dialog.c:480
#, c-format
-msgid ""
-"Failed to read \"%s\", because it contains a line over %d bytes long and "
-"therefore appears not to be a text file."
-msgstr ""
-"Error en llegir \"%s\", perquè conté una linia per sobre dels %d bytes i per "
-"tant sembla que no es un arxiu de text."
+msgid "Failed to read \"%s\", because it contains a line over %d bytes long and therefore appears not to be a text file."
+msgstr "Error en llegir \"%s\", perquè conté una linia per sobre dels %d bytes i per tant sembla que no es un arxiu de text."
#: src/ui/gui/text-data-import-dialog.c:494
#, c-format
#: src/ui/gui/text-data-import-dialog.c:749
msgid ""
-"This assistant will guide you through the process of importing data into "
-"PSPP from a text file with one line per case, in which fields are separated "
-"by tabs, commas, or other delimiters.\n"
+"This assistant will guide you through the process of importing data into PSPP from a text file with one line per case, in which fields are separated by tabs, commas, or other delimiters.\n"
"\n"
msgstr ""
-"Aquest asistent t'acompanyarà per tot el procés d'importar dades cap al PSPP "
-"a partir d'un arxiu de text amb una linia per cas, al qual els camps estan "
-"separats per tabuladors, comes, o altres delimitadors.\n"
+"Aquest asistent t'acompanyarà per tot el procés d'importar dades cap al PSPP a partir d'un arxiu de text amb una linia per cas, al qual els camps estan separats per tabuladors, comes, o altres delimitadors.\n"
"\n"
#: src/ui/gui/text-data-import-dialog.c:755
#: src/ui/gui/text-data-import-dialog.c:769
#, c-format
-msgid ""
-"Only the first %zu line of the file will be shown for preview purposes in "
-"the following screens. "
-msgid_plural ""
-"Only the first %zu lines of the file will be shown for preview purposes in "
-"the following screens. "
-msgstr[0] ""
-"Només les primeres %zu linies de l'arxiu es previsualitzaran a les seguents "
-"pantalles. "
-msgstr[1] ""
-"Només les primeres %zu linies de l'arxiu es previsualitzaran a les seguents "
-"pantalles. "
+msgid "Only the first %zu line of the file will be shown for preview purposes in the following screens. "
+msgid_plural "Only the first %zu lines of the file will be shown for preview purposes in the following screens. "
+msgstr[0] "Només les primeres %zu linies de l'arxiu es previsualitzaran a les seguents pantalles. "
+msgstr[1] "Només les primeres %zu linies de l'arxiu es previsualitzaran a les seguents pantalles. "
#: src/ui/gui/text-data-import-dialog.c:776
msgid "You may choose below how much of the file should actually be imported."
msgstr "%s: El valor de l'atribut %s[%d] no esta entre cometes: %s"
#: tests/dissect-sysfile.c:880
-#, fuzzy, c-format
+#, c-format
msgid "Bad size %zu for extended number of cases."
-msgstr "Longitud no vàlid %zu en l'extensió 11."
+msgstr "Longitud no vàlid %zu per nombre extens de casos."
#: tests/dissect-sysfile.c:886
#, c-format
msgid "Bad count %zu for extended number of cases."
-msgstr ""
+msgstr "Recompte incorrecte %zu per nombre extens de casos."
#: src/language/utilities/set.q:188
msgid "WORKSPACE must be at least 1MB"
#: src/language/utilities/set.q:490
#, c-format
-msgid ""
-"FORMAT requires numeric output format as an argument. Specified format %s "
-"is of type string."
-msgstr ""
-"FORMAT requereix format de resultat numeric com a argument. El format %s "
-"especificat es de tipus cadena."
+msgid "FORMAT requires numeric output format as an argument. Specified format %s is of type string."
+msgstr "FORMAT requereix format de resultat numeric com a argument. El format %s especificat es de tipus cadena."
#: src/language/utilities/set.q:707
msgid "ISL (32-bit IEEE 754 single, little-endian)"
msgstr "%s és %s."
#: src/language/stats/crosstabs.q:289
-msgid ""
-"Missing mode REPORT not allowed in general mode. Assuming MISSING=TABLE."
-msgstr ""
-"L'INFORME de perduts no esta disponible el mode general. S'assumeix "
-"MISSING=TABLE."
+msgid "Missing mode REPORT not allowed in general mode. Assuming MISSING=TABLE."
+msgstr "L'INFORME de perduts no esta disponible el mode general. S'assumeix MISSING=TABLE."
#: src/language/stats/crosstabs.q:399
msgid "Too many cross-tabulation variables or dimensions."
msgstr "%s Dependent"
#: src/language/stats/examine.q:357
-#, fuzzy
msgid "Not creating NP plot because data set is empty."
-msgstr "No es crea el gràfic perquè el conjunt de dades es buit."
+msgstr "No es crearà el gràfic NP perquè el conjunt de dades es buit."
#: src/language/stats/examine.q:442 src/language/stats/examine.q:949
msgid "Not creating plot because data set is empty."
msgstr "%g"
#: src/language/stats/frequencies.q:382
-#, fuzzy
msgid "Bar charts are not implemented."
-msgstr "%s no està implementat."
+msgstr "El gràfic de barres no està implementat."
#: src/language/stats/frequencies.q:399
-#, fuzzy, c-format
-msgid ""
-"MAX for histogram must be greater than or equal to MIN, but MIN was "
-"specified as %.15g and MAX as %.15g. MIN and MAX will be ignored."
-msgstr ""
-"MAX ha de ser major o igual a MIN, si tots dos s'especifiquen. Però, MIN "
-"s'ha especificat com a %g i MAX com a %g. MIN i MAX son ignorats."
+#, c-format
+msgid "MAX for histogram must be greater than or equal to MIN, but MIN was specified as %.15g and MAX as %.15g. MIN and MAX will be ignored."
+msgstr "Per l'histograma, MAX ha de ser major o igual a MIN, però MIN s'ha especificat com a %.15g i MAX com a %.15g. MIN i MAX seràn ignorats."
#: src/language/stats/frequencies.q:420
-#, fuzzy, c-format
-msgid ""
-"MAX for pie chart must be greater than or equal to MIN, but MIN was "
-"specified as %.15g and MAX as %.15g. MIN and MAX will be ignored."
-msgstr ""
-"MAX ha de ser major o igual a MIN, si tots dos s'especifiquen. Però, MIN "
-"s'ha especificat com a %g i MAX com a %g. MIN i MAX son ignorats."
+#, c-format
+msgid "MAX for pie chart must be greater than or equal to MIN, but MIN was specified as %.15g and MAX as %.15g. MIN and MAX will be ignored."
+msgstr "Per grafica de sectors, MAX ha de ser major o igual a MIN, però MIN s'ha especificat com a %.15g i MAX com a %.15g. MIN i MAX seràn ignorats."
#: src/language/stats/frequencies.q:703
msgid "`)' expected after GROUPED interval list."
msgstr "Etiqueta de Valor"
#: src/language/stats/frequencies.q:816
-#, fuzzy
msgid "Valid Percent"
-msgstr "Percentatge"
+msgstr "Percentatge Vàlid"
#: src/language/stats/frequencies.q:817
-#, fuzzy
msgid "Cum Percent"
-msgstr "Percentatge"
+msgstr "Percentatge Acumulat"
#: src/language/stats/frequencies.q:1008
#, c-format
msgid "No valid data for variable %s; statistics not displayed."
-msgstr ""
-"No hi ha dades vàlides per a la variable %s; not es mostren estadístiques."
+msgstr "No hi ha dades vàlides per a la variable %s; not es mostren estadístiques."
#: src/language/stats/frequencies.q:1054
msgid "50 (Median)"
#: src/language/stats/frequencies.q:1209
#, c-format
msgid "Omitting pie chart for %s, which has only %d unique values."
-msgstr ""
+msgstr "S'omet grafic de sectors per a %s, que només té %d valors únics. "
#: src/language/stats/frequencies.q:1212
#, c-format
msgid "Omitting pie chart for %s, which has over 50 unique values."
-msgstr ""
+msgstr "S'omet grafic de sectors per a %s, que té més de 50 valors únics. "
-#: src/language/stats/glm.q:248
+#: src/language/stats/glm.q:247
msgid "Multivariate GLM not yet supported"
msgstr "GLM multivariable encara no disponible"
#: src/language/stats/npar.q:256
#, c-format
-msgid ""
-"The specified value of HI (%d) is lower than the specified value of LO (%d)"
-msgstr ""
-"El valor especificatper a HI (%d) és menor que l'especificat per a LO (%d)"
+msgid "The specified value of HI (%d) is lower than the specified value of LO (%d)"
+msgstr "El valor especificatper a HI (%d) és menor que l'especificat per a LO (%d)"
#: src/language/stats/npar.q:311
#, c-format
-msgid ""
-"%d expected values were given, but the specified range (%d-%d) requires "
-"exactly %d values."
-msgstr ""
-"S'han proporcionat %d valors esperats, però l'interval especificat (%d-%d) "
-"requereix exactament %d valors."
+msgid "%d expected values were given, but the specified range (%d-%d) requires exactly %d values."
+msgstr "S'han proporcionat %d valors esperats, però l'interval especificat (%d-%d) requereix exactament %d valors."
#: src/language/stats/npar.q:453 src/language/stats/t-test.q:380
#, c-format
-msgid ""
-"PAIRED was specified but the number of variables preceding WITH (%zu) did "
-"not match the number following (%zu)."
-msgstr ""
-"S'ha especificat PAIRED però el nombre de variables abans de WITH (%zu) not "
-"conicideixen amb en nombre de variables seguents (%zu)."
+msgid "PAIRED was specified but the number of variables preceding WITH (%zu) did not match the number following (%zu)."
+msgstr "S'ha especificat PAIRED però el nombre de variables abans de WITH (%zu) not conicideixen amb en nombre de variables seguents (%zu)."
#: src/language/stats/oneway.q:170
msgid "Number of contrast coefficients must equal the number of groups"
-msgstr ""
-"El nombre de coeficients de contrast ha de ser igual al nombre de grups."
+msgstr "El nombre de coeficients de contrast ha de ser igual al nombre de grups."
#: src/language/stats/oneway.q:179
#, c-format
#: src/language/stats/rank.q:600
msgid "Cannot create new rank variable. All candidates in use."
-msgstr ""
-"No es pot crear la nova variable de rangs. Tots els candidats estan en ús."
+msgstr "No es pot crear la nova variable de rangs. Tots els candidats estan en ús."
#: src/language/stats/rank.q:693
msgid "Variables Created By RANK"
msgstr "%s en %s(%s de %s)"
#: src/language/stats/rank.q:761
-msgid ""
-"FRACTION has been specified, but NORMAL and PROPORTION rank functions have "
-"not been requested. The FRACTION subcommand will be ignored."
-msgstr ""
-"S'ha especificat FRACTION, però no s'ahn demanat funcions de rang NORMAL o "
-"PROPORTION. La subordre FRACTION será ignorada."
+msgid "FRACTION has been specified, but NORMAL and PROPORTION rank functions have not been requested. The FRACTION subcommand will be ignored."
+msgstr "S'ha especificat FRACTION, però no s'ahn demanat funcions de rang NORMAL o PROPORTION. La subordre FRACTION será ignorada."
#: src/language/stats/rank.q:852
#, c-format
msgstr "Correlacions de Coeficients"
#: src/language/stats/regression.q:793
-msgid ""
-"The dependent variable is equal to the independent variable.The least "
-"squares line is therefore Y=X.Standard errors and related statistics may be "
-"meaningless."
-msgstr ""
-"La variable dependiente es igual a la variable independiente. La línea de "
-"minimos cuadrados es por tanto Y=X. Los errores estàndard i els estadistics "
-"relacionats podríen ser irrellevants."
+msgid "The dependent variable is equal to the independent variable.The least squares line is therefore Y=X.Standard errors and related statistics may be meaningless."
+msgstr "La variable dependiente es igual a la variable independiente. La línea de minimos cuadrados es por tanto Y=X. Los errores estàndard i els estadistics relacionats podríen ser irrellevants."
#: src/language/stats/regression.q:891
msgid "REGRESSION requires numeric variables."
-msgstr ""
+msgstr "REGRESSION requereix variables numèriques."
#: src/language/stats/regression.q:962
msgid "No valid data found. This command was skipped."
#: src/language/stats/t-test.q:190
msgid "Exactly one of TESTVAL, GROUPS and PAIRS subcommands must be specified."
-msgstr ""
-"Exactamente un dels subcomanaments TESTVAL, GROUPS y PAIRS ha "
-"d'especificarse."
+msgstr "Exactamente un dels subcomanaments TESTVAL, GROUPS y PAIRS ha d'especificarse."
#: src/language/stats/t-test.q:211
msgid "VARIABLES subcommand may not be used with PAIRS."
msgstr "Una o més VARIABLES han de ser especificades."
#: src/language/stats/t-test.q:324
-msgid ""
-"When applying GROUPS to a string variable, two values must be specified."
-msgstr ""
-"Quan s'aplica GROUPS a una variable alfabetica, s'han d'especificar dos "
-"valors."
+msgid "When applying GROUPS to a string variable, two values must be specified."
+msgstr "Quan s'aplica GROUPS a una variable alfabetica, s'han d'especificar dos valors."
#: src/language/stats/t-test.q:395
msgid "At least two variables must be specified on PAIRS."
#: src/language/data-io/file-handle.q:65
#, c-format
-msgid ""
-"File handle %s is already defined. Use CLOSE FILE HANDLE before redefining "
-"a file handle."
-msgstr ""
-"El manipulador d'arxiu %s ja ha esta definit. Utilitzar CLOSE FILE HANDLE "
-"abans de redefinir un manipulador d'arxius."
+msgid "File handle %s is already defined. Use CLOSE FILE HANDLE before redefining a file handle."
+msgstr "El manipulador d'arxiu %s ja ha esta definit. Utilitzar CLOSE FILE HANDLE abans de redefinir un manipulador d'arxius."
#: src/language/data-io/file-handle.q:120
msgid "RECFORM must be specified with MODE=360."
msgstr "RECFORM ha de ser espeficat amb MODE=360."
#: src/language/data-io/file-handle.q:131
-#, fuzzy, c-format
-msgid ""
-"The specified file mode requires LRECL. Assuming %zu-character records."
-msgstr ""
-"El mode d'arxiu especificat requereix LRECL. S'asumeix %d-registres de "
-"caracter."
+#, c-format
+msgid "The specified file mode requires LRECL. Assuming %zu-character records."
+msgstr "El mode d'arxiu especificat requereix LRECL. S'asumeix registres de %zu caracters."
#: src/language/data-io/file-handle.q:135
#, c-format
-msgid ""
-"Record length (%ld) must be between 1 and %lu bytes. Assuming %d-character "
-"records."
-msgstr ""
-"L'amplada de registre (%ld) ha d'estar entre 1 i %lu bytes. S'asumeix %d-"
-"registres de caracter."
+msgid "Record length (%ld) must be between 1 and %lu bytes. Assuming %d-character records."
+msgstr "L'amplada de registre (%ld) ha d'estar entre 1 i %lu bytes. S'asumeix %d-registres de caracter."
#: src/language/data-io/file-handle.q:177
msgid "file"
#: src/language/data-io/list.q:99
#, c-format
-msgid ""
-"The first case (%ld) specified precedes the last case (%ld) specified. The "
-"values will be swapped."
-msgstr ""
-"El primer cas (%ld) especificat precedeix a l'ultim cas (%ld) especificat. "
-"Els valors s'intercanviaran."
+msgid "The first case (%ld) specified precedes the last case (%ld) specified. The values will be swapped."
+msgstr "El primer cas (%ld) especificat precedeix a l'ultim cas (%ld) especificat. Els valors s'intercanviaran."
#: src/language/data-io/list.q:107
#, c-format
-msgid ""
-"The first case (%ld) to list is less than 1. The value is being reset to 1."
-msgstr ""
-"EL primer cas (%ld) per llistar es menor que 1. El valor es retorna a 1."
+msgid "The first case (%ld) to list is less than 1. The value is being reset to 1."
+msgstr "EL primer cas (%ld) per llistar es menor que 1. El valor es retorna a 1."
#: src/language/data-io/list.q:113
#, c-format
-msgid ""
-"The last case (%ld) to list is less than 1. The value is being reset to 1."
-msgstr ""
-"L'últim cas (%ld) per llistar es menor que 1. El valor es restaura a 1.."
+msgid "The last case (%ld) to list is less than 1. The value is being reset to 1."
+msgstr "L'últim cas (%ld) per llistar es menor que 1. El valor es restaura a 1.."
#: src/language/data-io/list.q:119
#, c-format
msgstr "El valor del pas %ld es menor que 1. el valor es retorna a 1."
#: src/ui/gui/binomial.ui:57 src/ui/gui/chi-square.ui:57
-#, fuzzy
msgid "_Test Variable List:"
-msgstr "Variable(s) de prova:"
+msgstr "Lista de Variable _Test:"
#: src/ui/gui/binomial.ui:126 src/ui/gui/chi-square.ui:126
msgid "_Get from data"
-msgstr ""
+msgstr "Obtenció des de dades"
#: src/ui/gui/binomial.ui:143 src/ui/gui/t-test.ui:333
msgid "_Cut point:"
#: src/ui/gui/binomial.ui:178
msgid "Define Dichotomy"
-msgstr ""
+msgstr "Defineix Dicotomia"
#: src/ui/gui/binomial.ui:197
-#, fuzzy
msgid "Test _Proportion:"
-msgstr "Test Prop."
+msgstr "Test _Proporció:"
#: src/ui/gui/correlation.ui:7
-#, fuzzy
msgid "Bivariate Correlations"
-msgstr "Correlació de Spearman"
+msgstr "Correlacions Bivariades"
#: src/ui/gui/correlation.ui:108
-#, fuzzy
msgid "Pearso_n"
-msgstr "R de Pearson"
+msgstr "Pearso_n"
#: src/ui/gui/correlation.ui:123
-#, fuzzy
msgid "_Kendall's tau-b"
-msgstr "Tau-B de Kendall"
+msgstr "Tau-b de _Kendall"
#: src/ui/gui/correlation.ui:138
msgid "_Spearman"
-msgstr ""
+msgstr "_Spearman"
#: src/ui/gui/correlation.ui:158
-#, fuzzy
msgid "Correlation Coefficients"
-msgstr "Coeficinents de Contrast"
+msgstr "Coeficients de Correlació"
#: src/ui/gui/correlation.ui:182
-#, fuzzy
msgid "_Two-tailed"
-msgstr "Total"
+msgstr "Dues cues"
#: src/ui/gui/correlation.ui:198
msgid "One-tai_led"
-msgstr ""
+msgstr "Una cua"
#: src/ui/gui/correlation.ui:220
-#, fuzzy
msgid "Test of Significance"
-msgstr "Significativitat"
+msgstr "Test de Significativitat"
#: src/ui/gui/correlation.ui:232
-#, fuzzy
msgid "_Flag significant correlations"
-msgstr "Correlacions de Coeficients"
+msgstr "Marca correlacions significants"
#: src/ui/gui/crosstabs.ui:7
-#, fuzzy
msgid "Crosstabs"
-msgstr "_Creuaments tabulars"
+msgstr "Taules _Creuades"
#: src/ui/gui/crosstabs.ui:50
msgid "Rows"
msgstr "Cel.les..."
#: src/ui/gui/crosstabs.ui:227
-#, fuzzy
msgid "Crosstabs: Format"
-msgstr "_Creuaments tabulars"
+msgstr "Taules Creuades: Format"
#: src/ui/gui/crosstabs.ui:241
msgid "Print tables"
msgstr "Etiquetant"
#: src/ui/gui/crosstabs.ui:369
-#, fuzzy
msgid "Crosstabs: Cells"
-msgstr "_Creuaments tabulars"
+msgstr "Taules Creuades: Cel·les"
#: src/ui/gui/crosstabs.ui:402
msgid "Cell Display"
msgstr "Contingut de cel.la"
#: src/ui/gui/crosstabs.ui:430
-#, fuzzy
msgid "Crosstabs: Statistics"
-msgstr "Proves Estad."
+msgstr "Taules Creuades: Estadístics"
#: src/ui/gui/crosstabs.ui:463 src/ui/gui/oneway.ui:222
#: src/ui/gui/regression.ui:340
msgstr "Estatísticas"
#: src/ui/gui/chi-square.ui:13
-#, fuzzy
msgid "Chi-Square Test"
-msgstr "Proves Chi-quadrat."
+msgstr "Test Chi-quadrat."
#: src/ui/gui/chi-square.ui:140
-#, fuzzy
msgid "Use _specified range"
-msgstr "Utilitza valors especificats:"
+msgstr "Utilitza rang e_specificat"
#: src/ui/gui/chi-square.ui:162
-#, fuzzy
msgid "_Lower:"
-msgstr "Inferior"
+msgstr "Mínim:"
#: src/ui/gui/chi-square.ui:170
-#, fuzzy
msgid "_Upper:"
-msgstr "Superior"
+msgstr "Màxim:"
#: src/ui/gui/chi-square.ui:214
-#, fuzzy
msgid "Expected Range:"
-msgstr "N esperat"
+msgstr "Rang esperat:"
#: src/ui/gui/chi-square.ui:240
msgid "All categor_ies equal"
-msgstr ""
+msgstr "Igual totes categories"
#: src/ui/gui/chi-square.ui:257
-#, fuzzy
msgid "_Values"
-msgstr "Valores"
+msgstr "_Valors"
#: src/ui/gui/chi-square.ui:301
-#, fuzzy
msgid "Expected Values:"
-msgstr "Valor extrems"
+msgstr "Valors Esperats:"
#: src/ui/gui/descriptives.ui:130 src/ui/gui/frequencies.ui:140
msgid "Statistics:"
msgstr "Opcions:"
#: src/ui/gui/examine.ui:8
-#, fuzzy
msgid "Explore"
-msgstr "_Explorar"
+msgstr "Explorar"
#: src/ui/gui/examine.ui:51
msgid "Label Cases by:"
msgstr "Opcions..."
#: src/ui/gui/examine.ui:302
-#, fuzzy
msgid "Explore: Statistics"
-msgstr "Proves Estad."
+msgstr "Explorar: Estadístics"
#: src/ui/gui/examine.ui:332
msgid "Extremes"
#: src/ui/gui/examine.ui:381
msgid "Explore: Options"
-msgstr ""
+msgstr "Explorar: Opcions"
#: src/ui/gui/examine.ui:405
msgid "Exclude cases listwise"
msgstr "Valors perduts"
#: src/ui/gui/factor.ui:21
-#, fuzzy
msgid "Factor Analysis"
-msgstr "Llista de Factors:"
+msgstr "Anàlisi Factorial"
#: src/ui/gui/factor.ui:47
-#, fuzzy
msgid "_Descriptives..."
-msgstr "Descriptives"
+msgstr "_Descriptius..."
#: src/ui/gui/factor.ui:60
-#, fuzzy
msgid "_Extraction..."
-msgstr "Opcions..."
+msgstr "_Extracció..."
#: src/ui/gui/factor.ui:74
-#, fuzzy
msgid "_Rotations..."
-msgstr "Opcions..."
+msgstr "Rotacions..."
#: src/ui/gui/factor.ui:192
msgid "Factor Analysis: Extraction"
-msgstr ""
+msgstr "Anàlisi Factorial: Extracció"
#: src/ui/gui/factor.ui:216
-#, fuzzy
msgid "Method: "
-msgstr "Mode:"
+msgstr "Mètode: "
#: src/ui/gui/factor.ui:266
-#, fuzzy
msgid "Correlation matrix"
-msgstr "Correlació"
+msgstr "Matriu de Correlació"
#: src/ui/gui/factor.ui:280
-#, fuzzy
msgid "Covariance matrix"
-msgstr "Covariància"
+msgstr "Matriu de Covariància"
#: src/ui/gui/factor.ui:300
-#, fuzzy
msgid "Analyse"
-msgstr "_Analitzar"
+msgstr "Analitzar"
#: src/ui/gui/factor.ui:324
msgid "Unrotatated factor solution"
-msgstr ""
+msgstr "Solució factorial no rotada"
#: src/ui/gui/factor.ui:338
msgid "Scree plot"
-msgstr ""
+msgstr "Gràfic de sedimentació"
#: src/ui/gui/factor.ui:357 src/ui/gui/roc.ui:286
-#, fuzzy
msgid "Display"
-msgstr "Contingut de cel.la"
+msgstr "Contingut"
#: src/ui/gui/factor.ui:430
msgid "Number of factors:"
-msgstr ""
+msgstr "Nombre de factors:"
#: src/ui/gui/factor.ui:460
-#, fuzzy
msgid "Extract"
-msgstr "Eta"
+msgstr "Extracció"
#: src/ui/gui/factor.ui:475 src/ui/gui/factor.ui:665
msgid "Maximum iterations for convergence:"
-msgstr ""
+msgstr "Iteracions màximes per convergència:"
#: src/ui/gui/factor.ui:538
-#, fuzzy
msgid "Factor Analysis: Rotation"
-msgstr "Llista de Factors:"
+msgstr "Anàlisi Factorial: Rotació"
#: src/ui/gui/factor.ui:571
-#, fuzzy
msgid "_None"
-msgstr "Cap"
+msgstr "_No res"
#: src/ui/gui/factor.ui:582
-#, fuzzy
msgid "_Varimax"
-msgstr "_Variables:"
+msgstr "_Varimax"
#: src/ui/gui/factor.ui:598
msgid "_Quartimax"
-msgstr ""
+msgstr "_Quartimax"
#: src/ui/gui/factor.ui:614
msgid "_Equimax"
-msgstr ""
+msgstr "_Equimax"
#: src/ui/gui/factor.ui:637
-#, fuzzy
msgid "Method"
-msgstr "Mode:"
+msgstr "Mètode"
#: src/ui/gui/factor.ui:648
-#, fuzzy
msgid "_Display rotated solution"
-msgstr "Mostra _informació de l'arxiu de dades"
+msgstr "Mostra solució rotada"
#: src/ui/gui/find.ui:8
-#, fuzzy
msgid "Find Case"
-msgstr "Rang de cassos"
+msgstr "Cerca cas"
#: src/ui/gui/find.ui:88
msgid "Variable:"
msgstr "Variable(s):"
#: src/ui/gui/frequencies.ui:151
-#, fuzzy
msgid "Include missing values"
-msgstr "Sense valors perduts"
+msgstr "Inclou valors perduts"
#: src/ui/gui/frequencies.ui:189
-#, fuzzy
msgid "Charts..."
-msgstr "_Contrasts..."
+msgstr "Gràfics..."
#: src/ui/gui/frequencies.ui:201
-#, fuzzy
msgid "Frequency Tables..."
-msgstr "Variable de Freqüència"
+msgstr "Taules de Freqüències..."
#: src/ui/gui/frequencies.ui:251
-#, fuzzy
msgid "Frequencies: Frequency Tables"
-msgstr "Mostrar la taula de freqüències"
+msgstr "Freqüències: Taules de freqüències"
#: src/ui/gui/frequencies.ui:281
msgid "Always"
-msgstr ""
+msgstr "Sempre"
#: src/ui/gui/frequencies.ui:297
-#, fuzzy
msgid "Never"
-msgstr "Negatiu"
+msgstr "Mai"
#: src/ui/gui/frequencies.ui:316
msgid "If no more than "
-msgstr ""
+msgstr "Si no més de "
#: src/ui/gui/frequencies.ui:347
-#, fuzzy
msgid "values"
-msgstr "Valores"
+msgstr "Valors"
#: src/ui/gui/frequencies.ui:368
-#, fuzzy
msgid "Display frequency tables"
-msgstr "Mostrar la taula de freqüències"
+msgstr "Mostra taula de freqüències"
#: src/ui/gui/frequencies.ui:396
-#, fuzzy
msgid "Ascending value"
-msgstr "Ascendent"
+msgstr "Valor Ascendent"
#: src/ui/gui/frequencies.ui:412
-#, fuzzy
msgid "Descending value"
-msgstr "Descendent"
+msgstr "Valor Descendent"
#: src/ui/gui/frequencies.ui:428
-#, fuzzy
msgid "Ascending frequency"
-msgstr "Ordre Ascendent"
+msgstr "Freqüència Ascendent"
#: src/ui/gui/frequencies.ui:444
-#, fuzzy
msgid "Descending frequency"
-msgstr "Ordre Descendent"
+msgstr "Freqüència Descendent"
#: src/ui/gui/frequencies.ui:466
msgid "Order by"
msgstr "Ordenat per"
#: src/ui/gui/frequencies.ui:508
-#, fuzzy
msgid "Frequencies: Charts"
-msgstr "Freqüències"
+msgstr "Freqüències: Gràfics"
#: src/ui/gui/frequencies.ui:536
-#, fuzzy
msgid "Exclude values below "
-msgstr "Exclou casos segons llista"
+msgstr "Excloure valors per sota "
#: src/ui/gui/frequencies.ui:571
-#, fuzzy
msgid "Exclude values above "
-msgstr "Excloure casos per parelles"
+msgstr "Excloure valors per sobre "
#: src/ui/gui/frequencies.ui:609
-#, fuzzy
msgid "<b>Chart Formatting</b>"
-msgstr "<b>Comilles</b>"
+msgstr "<b>Format de Gràfics</b>"
#: src/ui/gui/frequencies.ui:633
msgid "Draw histograms"
-msgstr ""
+msgstr "Dibuixa histogrames"
#: src/ui/gui/frequencies.ui:645
msgid "Superimpose normal curve"
-msgstr ""
+msgstr "Sobreimposa curva normal"
#: src/ui/gui/frequencies.ui:661
-#, fuzzy
msgid "Scale:"
-msgstr "Escala"
+msgstr "Escala:"
#: src/ui/gui/frequencies.ui:682
-#, fuzzy
msgid "Percentages"
-msgstr "Percentils"
+msgstr "Percentatges"
#: src/ui/gui/frequencies.ui:705
-#, fuzzy
msgid "<b>Histograms</b>"
-msgstr "<b>Separadors</b>"
+msgstr "<b>Histogrames</b>"
#: src/ui/gui/frequencies.ui:729
msgid "Draw pie charts"
-msgstr ""
+msgstr "Dibuixa gràfiques de sectors"
#: src/ui/gui/frequencies.ui:741
-#, fuzzy
msgid "Include slices for missing values"
-msgstr "Valors perduts _Discrets"
+msgstr "Incloure sectors pels valors perduts"
#: src/ui/gui/frequencies.ui:758
-#, fuzzy
msgid "<b>Pie Charts</b>"
-msgstr "<b>Separadors</b>"
+msgstr "<b>Gràfiques de Sectors</b>"
#: src/ui/gui/oneway.ui:8
-#, fuzzy
msgid "One-Way ANOVA"
-msgstr "_ANOVA d'un factor"
+msgstr "ANOVA d'un factor"
#: src/ui/gui/oneway.ui:31
msgid "_Factor:"
msgstr "_Contrasts..."
#: src/ui/gui/oneway.ui:292
-#, fuzzy
msgid "One-Way ANOVA: Contrasts"
-msgstr "_ANOVA d'un factor"
+msgstr "ANOVA d'un factor: Contrasts"
#: src/ui/gui/oneway.ui:369
msgid "_Coefficients:"
msgstr "Estatus actual: "
#: src/ui/gui/psppire.ui:195
-#, fuzzy
msgid "Transpose"
-msgstr "_Transposar"
+msgstr "Trasposar"
#: src/ui/gui/psppire.ui:247
msgid "Name Variable:"
msgstr "L'anàlisi per grups està activat"
#: src/ui/gui/psppire.ui:709
-#, fuzzy
msgid "Compute Variable"
-msgstr "Variables de sortida"
+msgstr "Calcular Variable"
#: src/ui/gui/psppire.ui:742
msgid "Target Variable:"
msgstr "Els casos no seleccionats son"
#: src/ui/gui/psppire.ui:1585
-#, fuzzy
msgid "Data File Comments"
-msgstr "_Comentaris arxiu de dades"
+msgstr "Comentaris de l'arxiu de dades"
#: src/ui/gui/psppire.ui:1609
msgid "Comments:"
msgstr "Columna Numero: 0"
#: src/ui/gui/psppire.ui:1703
-#, fuzzy
msgid "Select Cases: Range"
-msgstr "Seleccionar casos"
+msgstr "Seleccionar casos: Rang"
#: src/ui/gui/psppire.ui:1750
msgid "First case"
#: src/ui/gui/psppire.ui:1808
msgid "Compute Variable: Type and Label"
-msgstr ""
+msgstr "Calcular Variable: Tipus i Etiqueta"
#: src/ui/gui/psppire.ui:1843
msgid "Use expression as label"
msgstr "Utilitza l'expressio com a etiqueta"
#: src/ui/gui/psppire.ui:2088
-#, fuzzy
msgid "Goto Case"
-msgstr "Anar a"
+msgstr "Anar a Cas"
#: src/ui/gui/psppire.ui:2106
msgid "Goto Case Number:"
msgstr "Anar al cas número:"
#: src/ui/gui/psppire.ui:2149
-#, fuzzy
msgid "Select Cases: Random Sample"
-msgstr "Seleccionar casos"
+msgstr "Seleccionar casos: Mostra aleatoria"
#: src/ui/gui/psppire.ui:2247
msgid "Sample Size"
msgstr "Vincles..."
#: src/ui/gui/rank.ui:346
-#, fuzzy
msgid "Rank Cases: Types"
-msgstr "Rang de cassos"
+msgstr "Rang de cassos: Tipus"
#: src/ui/gui/rank.ui:366
msgid "Sum of case weights"
msgstr "Formula d'estimació de Porporcións"
#: src/ui/gui/rank.ui:625
-#, fuzzy
msgid "Rank Cases: Ties"
-msgstr "Rang de cassos"
+msgstr "Rang de cassos: Vincles"
#: src/ui/gui/rank.ui:651
msgid "_Mean"
msgstr "Rang assignat a empats"
#: src/ui/gui/sort.ui:8
-#, fuzzy
msgid "Sort Cases"
-msgstr "_Ordenar Casos"
+msgstr "Ordenar Casos"
#: src/ui/gui/sort.ui:79
msgid "Sort by:"
msgstr "Perdut del Sistema"
#: src/ui/gui/recode.ui:199
-#, fuzzy
msgid "System or User Missing"
msgstr "Perdut de sistema o d'usuari"
msgstr "Independent"
#: src/ui/gui/regression.ui:236
-#, fuzzy
msgid "Regression: Save"
-msgstr "Regressió"
+msgstr "Regressió: Desar"
#: src/ui/gui/regression.ui:250
msgid "Predicted values"
msgstr "Residuals"
#: src/ui/gui/regression.ui:298
-#, fuzzy
msgid "Regression: Statistics"
-msgstr "Proves Estad."
+msgstr "Regresió: Estadìstics"
#: src/ui/gui/reliability.ui:27
msgid "Reliability Analysis"
msgstr "Variables a primera divissió:"
#: src/ui/gui/roc.ui:115
-#, fuzzy
msgid "_Test Variable:"
-msgstr "Variable(s) de prova:"
+msgstr "Variable de prova:"
#: src/ui/gui/roc.ui:147
-#, fuzzy
msgid "_State Variable:"
-msgstr "Nom de Variable:"
+msgstr "Variable d'Estat:"
#: src/ui/gui/roc.ui:172
-#, fuzzy
msgid "_Value of state variable:"
-msgstr "Utilitzar variable de filtre"
+msgstr "_Valor de la variable d'estat:"
#: src/ui/gui/roc.ui:209
-#, fuzzy
msgid "ROC C_urve"
msgstr "Corba ROC"
#: src/ui/gui/roc.ui:227
msgid "_With diagonal reference line"
-msgstr ""
+msgstr "Amb línia de referència diagonal"
#: src/ui/gui/roc.ui:251
-#, fuzzy
msgid "Standard _Error and Confidence Interval"
-msgstr "Interval de Confiança del 95%%"
+msgstr "_Error típic i Interval de Confiança"
#: src/ui/gui/roc.ui:266
-#, fuzzy
msgid "_Coordinate points of the ROC Curve"
-msgstr "Coordenades de la Corba"
+msgstr "_Coordenades de la Corba ROC"
#: src/ui/gui/t-test.ui:8
-#, fuzzy
msgid "Independent-Samples T Test"
-msgstr "Prova T per mostres _Independents"
+msgstr "Prova T per mostres Independents"
#: src/ui/gui/t-test.ui:54 src/ui/gui/t-test.ui:175 src/ui/gui/t-test.ui:231
msgid "Define Groups"
msgstr "Utilitza valors especificats:"
#: src/ui/gui/t-test.ui:420
-#, fuzzy
msgid "Options"
-msgstr "Opcions:"
+msgstr "Opcions"
#: src/ui/gui/t-test.ui:452
msgid "Exclude cases _analysis by analysis"
msgstr "Exclure casos per _llista"
#: src/ui/gui/t-test.ui:529
-#, fuzzy
msgid "One - Sample T Test"
msgstr "Prova T per una mostra"
msgstr "Valor de prova: "
#: src/ui/gui/t-test.ui:704
-#, fuzzy
msgid "Paired Samples T Test"
-msgstr "Prova T per mostres A_parellades"
+msgstr "Prova T per mostres Aparellades"
#: src/ui/gui/text-data-import.ui:8
msgid "Importing Textual Data"
#: src/ui/gui/text-data-import.ui:19
msgid ""
-"This assistant will guide you through the process of importing data into "
-"PSPP from a text file with one line per case, in which fields are separated "
-"by tabs, commas, or other delimiters.\n"
+"This assistant will guide you through the process of importing data into PSPP from a text file with one line per case, in which fields are separated by tabs, commas, or other delimiters.\n"
"\n"
-"The selected file contains N lines of text. Only the first M of these will "
-"be shown for preview purposes in the following screens. You may choose "
-"below how much of the file should actually be imported."
+"The selected file contains N lines of text. Only the first M of these will be shown for preview purposes in the following screens. You may choose below how much of the file should actually be imported."
msgstr ""
-"Aquest assitent t'acompanyarà per tot el procés d'importar dades al PSPP des "
-"d'un arxiu de text amb una linia per cas, al qual els camps estan separats "
-"per tabuladors, comas, o altres delimitadors.\n"
+"Aquest assitent t'acompanyarà per tot el procés d'importar dades al PSPP des d'un arxiu de text amb una linia per cas, al qual els camps estan separats per tabuladors, comas, o altres delimitadors.\n"
"\n"
-"L'arxiu seleccionat conté N linies de text. Només les primeres M seran "
-"mostrades per previsualització a les pantalles seguents. Pots triar a "
-"continuació quina part de l'arxiu ha de ser importat."
+"L'arxiu seleccionat conté N linies de text. Només les primeres M seran mostrades per previsualització a les pantalles seguents. Pots triar a continuació quina part de l'arxiu ha de ser importat."
#: src/ui/gui/text-data-import.ui:52
msgid "All cases"
msgstr "Ajustar formats de variables"
#: src/ui/gui/text-data-import.ui:618
-msgid ""
-"Check the data formats displayed below and fix any that are incorrect. You "
-"may set other variable properties now or later."
-msgstr ""
-"Comprovar les formats de les dades mostrades a continuació i corregir els "
-"problemes. Es pot asignar altres propietats de les variables ara o més tard."
+msgid "Check the data formats displayed below and fix any that are incorrect. You may set other variable properties now or later."
+msgstr "Comprovar les formats de les dades mostrades a continuació i corregir els problemes. Es pot asignar altres propietats de les variables ara o més tard."
#: src/ui/gui/text-data-import.ui:662
msgid "<b>Variables</b>"
msgstr "Anar a"
#: src/ui/gui/data-editor.ui:134
-#, fuzzy
msgid "Jump to a case in the data sheet"
-msgstr "Anar a un cas a la Matriu de Dades"
+msgstr "Anar a un cas a la matriu de Dades"
#: src/ui/gui/data-editor.ui:160
msgid "Cl_ear Variables"
msgstr "_ANOVA d'un factor"
#: src/ui/gui/data-editor.ui:376
-#, fuzzy
msgid "Bivariate _Correlation..."
-msgstr "Correlació de Spearman"
+msgstr "_Correlació Bivariada..."
#: src/ui/gui/data-editor.ui:382
-#, fuzzy
msgid "Factor _Analysis"
-msgstr "Llista de Factors:"
+msgstr "_Anàlisi Factorial"
#: src/ui/gui/data-editor.ui:388
msgid "Re_liability"
msgstr "_Binomial"
#: src/ui/gui/data-editor.ui:418
-#, fuzzy
msgid "ROC Cur_ve..."
-msgstr "Corba ROC"
+msgstr "Corba ROC..."
#: src/ui/gui/data-editor.ui:424
msgid "_Utilities"
msgstr "Area de Divisió"
#: src/ui/gui/output-viewer.ui:22
-#, fuzzy
msgid "_Export"
-msgstr "_Explorar"
+msgstr "_Exportar"
#: src/ui/gui/syntax-editor.ui:100
msgid "_Run"
msgid "To End"
msgstr "Fins al final"
-#~ msgid "Dependent variable must be numeric."
-#~ msgstr "La variable dependent ha de ser numèrica."
-
-#~ msgid "Variable %s has label of invalid length %zu."
-#~ msgstr "Variable %s té una etiqueta de longitud no vàlida %zu."
-
-#~ msgid "_About"
-#~ msgstr "Qu_ant a..."
-
#~ msgid "Buttons"
#~ msgstr "Botons"
#~ msgid "...not found"
#~ msgstr "...no es troba"
+#~ msgid "Variable %s has label of invalid length %zu."
+#~ msgstr "Variable %s té una etiqueta de longitud no vàlida %zu."
+
#~ msgid "little-endian"
#~ msgstr "little-endian"
#~ msgid "unexpected end of line expecting string"
#~ msgstr "final de línia inesperat quan s'esperava una cadena"
-#~ msgid ""
-#~ "ascii: bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %"
-#~ "d decimal, with INDEX expressed in base 4"
-#~ msgstr ""
-#~ "ascii: índex de valor defectuós per a la clau `box' : la sintaxi és la box"
-#~ "[INDEX], 0 <= INDEX < %d decimal, amb INDEX expressat en base 4"
+#~ msgid "ascii: bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %d decimal, with INDEX expressed in base 4"
+#~ msgstr "ascii: índex de valor defectuós per a la clau `box' : la sintaxi és la box[INDEX], 0 <= INDEX < %d decimal, amb INDEX expressat en base 4"
#~ msgid "ascii: multiple values for %s"
#~ msgstr "ascii: valors múltiples per a %s"
#~ msgid "ascii: only screen devices may have `auto' length or width"
-#~ msgstr ""
-#~ "ascii: només els dispositius de pantalla poden tenir longitud o amplada "
-#~ "`auto'"
+#~ msgstr "ascii: només els dispositius de pantalla poden tenir longitud o amplada `auto'"
#~ msgid "ascii: positive integer required as `%s' value"
#~ msgstr "ascii: enter positiu requerit com a valor `%s'"
#~ msgid "ascii: `emphasis' value must be `bold', `underline', or `none'"
-#~ msgstr ""
-#~ "ascii: el valor d' `emphasis' ha de ser `bold', `underline', o `none'"
+#~ msgstr "ascii: el valor d' `emphasis' ha de ser `bold', `underline', o `none'"
#~ msgid "ascii: zero or positive integer required as `%s' value"
#~ msgstr "ascii: zero o enter positiu requerit com a valor `%s'"
#~ msgstr "obrint arxiu de resultat HTML: %s"
#~ msgid "unknown configuration parameter `%s' for HTML device driver"
-#~ msgstr ""
-#~ "paràmetre de configuració `%s' desconegut per al dispositiu controlador "
-#~ "HTML"
+#~ msgstr "paràmetre de configuració `%s' desconegut per al dispositiu controlador HTML"
#~ msgid "error creating \"%s\""
#~ msgstr "error en crear \"%s\""
#~ msgid "using default output driver configuration"
#~ msgstr "utilitzant controlador de configuració de resultats per defecte"
-#~ msgid ""
-#~ "cannot find output initialization file (use `-vv' to view search path)"
-#~ msgstr ""
-#~ "no es pot trobar l'arxiu d'inicialització de resultats (utilitzar `-vv' "
-#~ "per a veure la ruta de cerca)"
+#~ msgid "cannot find output initialization file (use `-vv' to view search path)"
+#~ msgstr "no es pot trobar l'arxiu d'inicialització de resultats (utilitzar `-vv' per a veure la ruta de cerca)"
#~ msgid "cannot open \"%s\""
#~ msgstr "no es pot obrir \"%s\""
#~ "Clases de controlador:\n"
#~ "\t"
-#~ msgid ""
-#~ "reached end of options inside quoted string parsing options for \"%s\" "
-#~ "driver"
-#~ msgstr ""
-#~ "Arribat al final d'opcions dins de la cadena entre cometes tot analitzant "
-#~ "opcions pel controlador \"%s\""
+#~ msgid "reached end of options inside quoted string parsing options for \"%s\" driver"
+#~ msgstr "Arribat al final d'opcions dins de la cadena entre cometes tot analitzant opcions pel controlador \"%s\""
#~ msgid "syntax error in string constant parsing options for \"%s\" driver"
-#~ msgstr ""
-#~ "error de sintaxi en una constant de cadena analitzant opcions pel "
-#~ "controlador \"%s\""
+#~ msgstr "error de sintaxi en una constant de cadena analitzant opcions pel controlador \"%s\""
#~ msgid "syntax error expecting `=' parsing options for driver \"%s\""
-#~ msgstr ""
-#~ "error de sintaxi quan s'esperava `=' analitzant les opcions pel "
-#~ "controlador \"%s\""
+#~ msgstr "error de sintaxi quan s'esperava `=' analitzant les opcions pel controlador \"%s\""
#~ msgid "unknown output driver class `%.*s'"
#~ msgstr "controlador de sortida de classe desconeguda `%.*s'"
#~ msgstr "tipus de dispositiu desconegut `%.*s'"
#~ msgid "cannot initialize output driver `%s' of class `%s'"
-#~ msgstr ""
-#~ "no pot inicialitzar el controlador de sortida `%s' de la classe `%s'"
+#~ msgstr "no pot inicialitzar el controlador de sortida `%s' de la classe `%s'"
#~ msgid "driver definition line missing driver name or class name"
-#~ msgstr ""
-#~ "línia de definició del controlador sense nom del controlador o nom de la "
-#~ "classe"
+#~ msgstr "línia de definició del controlador sense nom del controlador o nom de la classe"
#~ msgid "opening PostScript output file \"%s\""
#~ msgstr "obrir l'arxiu de sortida PostScript \"%s\""
#~ msgstr "tanqui l'arxiu de sortida PostScript \"%s\""
#~ msgid "unknown configuration parameter `%s' for PostScript device driver"
-#~ msgstr ""
-#~ "paràmetre de configuració desconegut`%s' pel controlador del dispositiu "
-#~ "PostScript"
+#~ msgstr "paràmetre de configuració desconegut`%s' pel controlador del dispositiu PostScript"
-#~ msgid ""
-#~ "unknown orientation `%s' (valid orientations are `portrait' and "
-#~ "`landscape')"
-#~ msgstr ""
-#~ "orientació desconeguda `%s' (les orientacions vàlides són `retrat' i "
-#~ "`paisatge')"
+#~ msgid "unknown orientation `%s' (valid orientations are `portrait' and `landscape')"
+#~ msgstr "orientació desconeguda `%s' (les orientacions vàlides són `retrat' i `paisatge')"
#~ msgid "boolean value expected for %s"
#~ msgstr "valor booleà esperat per a %s"
#~ msgid "positive integer value required for `%s'"
#~ msgstr "valor enter positiu necessari per a `%s'"
-#~ msgid ""
-#~ "default font size must be at least 1 point (value of 1000 for key `%s')"
-#~ msgstr ""
-#~ "la mida de caràcter per defecte ha de ser com a mínim 1 punt (valor de "
-#~ "1000 per la clau `%s')"
+#~ msgid "default font size must be at least 1 point (value of 1000 for key `%s')"
+#~ msgstr "la mida de caràcter per defecte ha de ser com a mínim 1 punt (valor de 1000 per la clau `%s')"
#~ msgid "could not find AFM file \"%s\""
#~ msgstr "no es pot trobar l'arxiu AFM \"%s\""
#~ msgid "creating \"%s\""
#~ msgstr "creant \"%s\""
-#~ msgid ""
-#~ "set to `compatible' if you want output calculated from broken algorithms"
-#~ msgstr ""
-#~ "activeu `compatible' si voleu obtenir resultats calculat a partir "
-#~ "d'algorismes trencats"
+#~ msgid "set to `compatible' if you want output calculated from broken algorithms"
+#~ msgstr "activeu `compatible' si voleu obtenir resultats calculat a partir d'algorismes trencats"
#~ msgid "Append DIR to include path"
#~ msgstr "Adjuntar DIR a la ruta d'inclusió"
#~ msgid "Don't allow some unsafe operations"
#~ msgstr "No permet algunes operacions insegures"
-#~ msgid ""
-#~ "Set to `compatible' if you want only to accept SPSS compatible syntax"
-#~ msgstr ""
-#~ "Activeu `compatible' si només voleu acceptar la sintaxi compatible de "
-#~ "l'SPSS"
+#~ msgid "Set to `compatible' if you want only to accept SPSS compatible syntax"
+#~ msgstr "Activeu `compatible' si només voleu acceptar la sintaxi compatible de l'SPSS"
#~ msgid "PSPP --- A program for statistical analysis"
#~ msgstr "PSPP ---Un programa d'anàlisi estadística"
#~ msgstr "Opcions que afecten a la sintaxi i al comportament:"
#~ msgid "Cannot open %s (%s). Writing errors to stdout instead.\n"
-#~ msgstr ""
-#~ "No es pot obrir %s (%s). Alternativament, escrivint errors a stdout.\n"
+#~ msgstr "No es pot obrir %s (%s). Alternativament, escrivint errors a stdout.\n"
#~ msgid "Terminating execution of syntax file due to error."
#~ msgstr "Finalitzant l'execució de l'arxiu de sintaxi degut a un error."
#~ msgstr "Enviar missatges d'error a FILE (annexa)"
#~ msgid "Select output driver DEVICE and disable defaults"
-#~ msgstr ""
-#~ "Seleccionar el controlador de sortida DEVICE i desactivar els valors per "
-#~ "defecte"
+#~ msgstr "Seleccionar el controlador de sortida DEVICE i desactivar els valors per defecte"
#~ msgid "Print a list of known driver classes, then exit"
-#~ msgstr ""
-#~ "Imprimir una llista de classes de controladors coneguts, després sortir"
+#~ msgstr "Imprimir una llista de classes de controladors coneguts, després sortir"
#~ msgid "Start an interactive session"
#~ msgstr "Inici d'una sessió interactiva"
#~ msgid "gtk-find"
#~ msgstr "gtk-find"
+#~ msgid "_About"
+#~ msgstr "Qu_ant a..."
+
#~ msgid "Print"
#~ msgstr "Iimprimir"
#~ msgid "Messages Reported"
#~ msgstr "S'han generat missatges"
-#~ msgid ""
-#~ "The PSPP processor reported # errors. The first # and last # are shown "
-#~ "below:"
-#~ msgstr ""
-#~ "El processador d'PSPP ha genrat # errors. Els primers # y els darrers # "
-#~ "es mostren a continuació:"
+#~ msgid "The PSPP processor reported # errors. The first # and last # are shown below:"
+#~ msgstr "El processador d'PSPP ha genrat # errors. Els primers # y els darrers # es mostren a continuació:"
#~ msgid "gtk-close"
#~ msgstr "tanca-gtk"
#~ "Alpha\n"
#~ "Dividit"
-#~ msgid ""
-#~ "At most one of BARCHART, HISTOGRAM, or HBAR should be given. HBAR will "
-#~ "be assumed. Argument values will be given precedence increasing along "
-#~ "the order given."
-#~ msgstr ""
-#~ "Al menys s'ha de donar algun BARCHART, HISTOGRAM o HBAR. S'assumeix "
-#~ "HBAR. Els valors d'arguments Argument tindrán preferencia creixent en "
-#~ "aquest mateix ordre)."
+#~ msgid "At most one of BARCHART, HISTOGRAM, or HBAR should be given. HBAR will be assumed. Argument values will be given precedence increasing along the order given."
+#~ msgstr "Al menys s'ha de donar algun BARCHART, HISTOGRAM o HBAR. S'assumeix HBAR. Els valors d'arguments Argument tindrán preferencia creixent en aquest mateix ordre)."
#~ msgid "Variable %s specified multiple times on VARIABLES subcommand."
-#~ msgstr ""
-#~ "La variable %s s'ha especificat més d'una vegada a l'ordre VARIABLES."
+#~ msgstr "La variable %s s'ha especificat més d'una vegada a l'ordre VARIABLES."
#~ msgid "Cum"
#~ msgstr "Acumulat"
#~ msgid "Pct"
#~ msgstr "Pct"
+#~ msgid "Dependent variable must be numeric."
+#~ msgstr "La variable dependent ha de ser numèrica."
+
#~ msgid "N of items"
#~ msgstr "N d'elements"
# British translations for PSPP
-# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc.
# This file is distributed under the same licence as the PSPP package.
#
msgid ""
msgstr ""
-"Project-Id-Version: PSPP 0.7.0\n"
+"Project-Id-Version: PSPP 0.7.6\n"
"Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2010-06-01 17:55+0200\n"
-"PO-Revision-Date: 2008-11-05 08:17+0900\n"
+"POT-Creation-Date: 2010-10-17 16:50+0200\n"
+"PO-Revision-Date: 2010-10-17 16:51+0200\n"
"Last-Translator: John Darrington <john@darrington.wattle.id.au>\n"
"Language-Team: John Darrington <john@darrington.wattle.id.au>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+#: src/ui/gui/helper.c:194
+msgid "Sorry. The help system hasn't yet been implemented."
+msgstr ""
+
#: src/ui/gui/psppire-buttonbox.c:275 src/ui/gui/psppire-buttonbox.c:437
msgid "Continue"
msgstr ""
msgstr ""
#: src/ui/gui/psppire-dictview.c:466 src/language/dictionary/split-file.c:82
-#: src/language/dictionary/sys-file-info.c:150
-#: src/language/dictionary/sys-file-info.c:340
-#: src/language/dictionary/sys-file-info.c:664
+#: src/language/dictionary/sys-file-info.c:149
+#: src/language/dictionary/sys-file-info.c:339
+#: src/language/dictionary/sys-file-info.c:663
#: src/language/stats/descriptives.c:881
-#: src/language/data-io/data-parser.c:649
-#: src/language/data-io/data-parser.c:688 src/language/data-io/print.c:403
+#: src/language/data-io/data-parser.c:682
+#: src/language/data-io/data-parser.c:721 src/language/data-io/print.c:403
msgid "Variable"
msgstr ""
#: src/data/any-reader.c:56
#, c-format
-msgid "An error occurred while opening \"%s\": %s."
-msgstr ""
+msgid "An error occurred while opening `%s': %s."
+msgstr "An error occurred while opening ‘%s’: %s."
#: src/data/any-reader.c:101
#, c-format
-msgid "\"%s\" is not a system or portable file."
-msgstr ""
+msgid "`%s' is not a system or portable file."
+msgstr "‘%s’ is not a system or portable file."
#: src/data/any-reader.c:107 src/data/any-writer.c:63
msgid "The inline file is not allowed here."
msgid "Month %d is not in acceptable range of 0 to 13."
msgstr ""
-#: src/data/calendar.c:89
+#: src/data/calendar.c:91
#, c-format
msgid "Day %d is not in acceptable range of 0 to 31."
msgstr ""
-#: src/data/calendar.c:96
+#: src/data/calendar.c:100
#, c-format
msgid "Date %04d-%d-%d is before the earliest acceptable date of 1582-10-15."
msgstr ""
"system-missing, zero, or negative. These case(s) were ignored."
msgstr ""
-#: src/data/data-in.c:274 src/data/data-in.c:464
+#. TRANSLATORS: this fragment will be interpolated into messages in fh_lock()
+#. that identify types of files.
+#: src/data/csv-file-writer.c:152
+msgid "CSV file"
+msgstr ""
+
+#: src/data/csv-file-writer.c:161 src/data/sys-file-writer.c:218
+#, c-format
+msgid "Error opening `%s' for writing as a system file: %s."
+msgstr "Error opening ‘%s’ for writing as a system file: %s."
+
+#: src/data/csv-file-writer.c:462
+#, c-format
+msgid "An I/O error occurred writing CSV file `%s'."
+msgstr "An I/O error occurred writing CSV file ‘%s’."
+
+#: src/data/data-in.c:172
+#, c-format
+msgid "Data is not valid as format %s: %s"
+msgstr ""
+
+#: src/data/data-in.c:377 src/data/data-in.c:553
msgid "Field contents are not numeric."
msgstr ""
-#: src/data/data-in.c:276 src/data/data-in.c:466
+#: src/data/data-in.c:379 src/data/data-in.c:555
msgid "Number followed by garbage."
msgstr ""
-#: src/data/data-in.c:287
+#: src/data/data-in.c:392
msgid "Invalid numeric syntax."
msgstr ""
-#: src/data/data-in.c:296 src/data/data-in.c:479
+#: src/data/data-in.c:400 src/data/data-in.c:571
msgid "Too-large number set to system-missing."
msgstr ""
-#: src/data/data-in.c:301 src/data/data-in.c:484
+#: src/data/data-in.c:406 src/data/data-in.c:577
msgid "Too-small number set to zero."
msgstr ""
-#: src/data/data-in.c:327
+#: src/data/data-in.c:426
msgid "All characters in field must be digits."
msgstr ""
-#: src/data/data-in.c:350
+#: src/data/data-in.c:445
msgid "Unrecognized character in field."
msgstr "Unrecognised character in field."
-#: src/data/data-in.c:374 src/data/data-in.c:650
+#: src/data/data-in.c:466 src/data/data-in.c:729
msgid "Field must have even length."
msgstr ""
-#: src/data/data-in.c:379 src/data/data-in.c:661
+#: src/data/data-in.c:468 src/data/data-in.c:732
msgid "Field must contain only hex digits."
msgstr ""
-#: src/data/data-in.c:700 src/data/data-in.c:747
+#: src/data/data-in.c:544
+msgid "Invalid zoned decimal syntax."
+msgstr ""
+
+#: src/data/data-in.c:644 src/data/data-in.c:650
+msgid "Invalid syntax for P field."
+msgstr ""
+
+#: src/data/data-in.c:768 src/data/data-in.c:814
msgid "Syntax error in date field."
msgstr ""
-#: src/data/data-in.c:716
+#: src/data/data-in.c:783
#, c-format
msgid "Day (%ld) must be between 1 and 31."
msgstr ""
-#: src/data/data-in.c:763
+#: src/data/data-in.c:828
msgid "Delimiter expected between fields in date."
msgstr ""
-#: src/data/data-in.c:837
+#: src/data/data-in.c:902
msgid ""
"Unrecognized month format. Months may be specified as Arabic or Roman "
"numerals or as at least 3 letters of their English names."
"Unrecognised month format. Months may be specified as Arabic or Roman \n"
"numerals or as at least 3 letters of their English names."
-#: src/data/data-in.c:864
+#: src/data/data-in.c:929
#, c-format
msgid "Year (%ld) must be between 1582 and 19999."
msgstr ""
-#: src/data/data-in.c:876
+#: src/data/data-in.c:940
#, c-format
-msgid "Trailing garbage \"%.*s\" following date."
-msgstr ""
+msgid "Trailing garbage `%.*s' following date."
+msgstr "Trailing garbage ‘%.*s’ following date."
-#: src/data/data-in.c:892
+#: src/data/data-in.c:954
msgid "Julian day must have exactly three digits."
msgstr ""
-#: src/data/data-in.c:897
+#: src/data/data-in.c:956
#, c-format
msgid "Julian day (%ld) must be between 1 and 366."
msgstr ""
-#: src/data/data-in.c:921
+#: src/data/data-in.c:980
#, c-format
msgid "Quarter (%ld) must be between 1 and 4."
msgstr ""
-#: src/data/data-in.c:941
+#: src/data/data-in.c:1001
#, c-format
msgid "Week (%ld) must be between 1 and 53."
msgstr ""
-#: src/data/data-in.c:954
+#: src/data/data-in.c:1013
msgid "Delimiter expected between fields in time."
msgstr ""
-#: src/data/data-in.c:974
+#: src/data/data-in.c:1033
#, c-format
msgid "Minute (%ld) must be between 0 and 59."
msgstr ""
-#: src/data/data-in.c:1014
+#: src/data/data-in.c:1071
msgid ""
"Unrecognized weekday name. At least the first two letters of an English "
"weekday name must be specified."
"Unrecognised weekday name. At least the first two letters of an English "
"weekday name must be specified."
-#: src/data/data-in.c:1152
+#: src/data/data-in.c:1197
#, c-format
msgid "`%c' expected in date field."
-msgstr ""
-
-#: src/data/data-in.c:1193
-#, c-format
-msgid "column %d"
-msgstr ""
-
-#: src/data/data-in.c:1195
-#, c-format
-msgid "columns %d-%d"
-msgstr ""
-
-#: src/data/data-in.c:1199
-#, c-format
-msgid "%s field) "
-msgstr ""
+msgstr "‘%c’ expected in date field."
#: src/data/data-out.c:481
#, c-format
msgid "scratch"
msgstr ""
-#: src/data/dictionary.c:980
+#: src/data/dictionary.c:981
msgid ""
"At least one case in the data file had a weight value that was user-missing, "
"system-missing, zero, or negative. These case(s) were ignored."
msgstr ""
-#: src/data/dictionary.c:1283
+#: src/data/dictionary.c:1284
#, c-format
msgid "Truncating document line to %d bytes."
msgstr ""
-#: src/data/file-handle-def.c:462
+#: src/data/file-handle-def.c:471
#, c-format
msgid "Can't read from %s as a %s because it is already being read as a %s."
msgstr ""
-#: src/data/file-handle-def.c:466
+#: src/data/file-handle-def.c:475
#, c-format
msgid "Can't write to %s as a %s because it is already being written as a %s."
msgstr ""
-#: src/data/file-handle-def.c:473
+#: src/data/file-handle-def.c:482
#, c-format
msgid "Can't re-open %s as a %s."
msgstr ""
#: src/data/file-name.c:168
#, c-format
msgid "Not opening pipe file `%s' because SAFER option set."
-msgstr ""
+msgstr "Not opening pipe file ‘%s’ because SAFER option set."
-#: src/data/format.c:235
+#: src/data/format.c:314
msgid "Input format"
msgstr ""
-#: src/data/format.c:235
+#: src/data/format.c:314
msgid "Output format"
msgstr ""
-#: src/data/format.c:244
+#: src/data/format.c:323
#, c-format
msgid "Format %s may not be used for input."
msgstr ""
-#: src/data/format.c:251
+#: src/data/format.c:330
#, c-format
msgid "%s specifies width %d, but %s requires an even width."
msgstr ""
-#: src/data/format.c:260
+#: src/data/format.c:339
#, c-format
msgid "%s %s specifies width %d, but %s requires a width between %d and %d."
msgstr ""
-#: src/data/format.c:269
+#: src/data/format.c:348
#, c-format
msgid "%s %s specifies %d decimal place, but %s does not allow any decimals."
msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/data/format.c:280
+#: src/data/format.c:359
#, c-format
msgid ""
"%s %s specifies %d decimal place, but the given width allows at most %d "
msgstr[0] ""
msgstr[1] ""
-#: src/data/format.c:287
+#: src/data/format.c:366
#, c-format
msgid ""
"%s %s specifies %d decimal place, but the given width does not allow for any "
msgstr[0] ""
msgstr[1] ""
-#: src/data/format.c:326
+#: src/data/format.c:405
#, c-format
msgid "%s variables are not compatible with %s format %s."
msgstr ""
-#: src/data/format.c:327 src/data/sys-file-reader.c:752
-#: src/ui/gui/psppire-var-store.c:628 src/ui/gui/psppire.ui:1960
+#: src/data/format.c:406 src/data/sys-file-reader.c:751
+#: src/ui/gui/psppire-var-store.c:628 src/ui/gui/compute.ui:503
#: src/ui/gui/var-sheet-dialogs.ui:139
msgid "String"
msgstr ""
-#: src/data/format.c:327 src/data/sys-file-reader.c:752
-#: src/ui/gui/psppire-var-store.c:621 src/ui/gui/psppire.ui:2040
+#: src/data/format.c:406 src/data/sys-file-reader.c:751
+#: src/ui/gui/psppire-var-store.c:621 src/ui/gui/compute.ui:584
#: src/ui/gui/var-sheet-dialogs.ui:27
msgid "Numeric"
msgstr ""
-#: src/data/format.c:328 src/data/sys-file-reader.c:1472
-#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493
-#: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506
-#: src/language/xforms/recode.c:507
+#: src/data/format.c:407 src/data/sys-file-reader.c:1472
+#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:496
+#: src/language/xforms/recode.c:497 src/language/xforms/recode.c:509
+#: src/language/xforms/recode.c:510
+#: src/language/dictionary/apply-dictionary.c:77
#: src/language/dictionary/apply-dictionary.c:78
-#: src/language/dictionary/apply-dictionary.c:79
msgid "numeric"
msgstr ""
-#: src/data/format.c:328 src/data/sys-file-reader.c:1472
-#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493
-#: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506
-#: src/language/xforms/recode.c:507
+#: src/data/format.c:407 src/data/sys-file-reader.c:1472
+#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:496
+#: src/language/xforms/recode.c:497 src/language/xforms/recode.c:509
+#: src/language/xforms/recode.c:510
+#: src/language/dictionary/apply-dictionary.c:77
#: src/language/dictionary/apply-dictionary.c:78
-#: src/language/dictionary/apply-dictionary.c:79
msgid "string"
msgstr ""
-#: src/data/format.c:346
+#: src/data/format.c:425
#, c-format
msgid "String variable with width %d is not compatible with format %s."
msgstr ""
#: src/data/gnumeric-reader.c:364
#, c-format
-msgid "Error opening \"%s\" for reading as a Gnumeric file: %s."
-msgstr ""
+msgid "Error opening `%s' for reading as a Gnumeric file: %s."
+msgstr "Error opening ‘%s’ for reading as a Gnumeric file: %s."
#: src/data/gnumeric-reader.c:384
#, c-format
-msgid "Invalid cell range \"%s\""
-msgstr ""
+msgid "Invalid cell range `%s'"
+msgstr "Invalid cell range ‘%s’"
#: src/data/gnumeric-reader.c:516 src/data/psql-reader.c:187
#, c-format
#: src/data/gnumeric-reader.c:528
#, c-format
-msgid "Selected sheet or range of spreadsheet \"%s\" is empty."
-msgstr ""
-
-#: src/data/make-file.c:68
-#, c-format
-msgid "%s: Creating temporary file: %s."
-msgstr ""
-
-#: src/data/make-file.c:110
-#, c-format
-msgid "%s: Creating file: %s."
-msgstr ""
+msgid "Selected sheet or range of spreadsheet `%s' is empty."
+msgstr "Selected sheet or range of spreadsheet ‘%s’ is empty."
-#: src/data/make-file.c:148
+#: src/data/make-file.c:71
#, c-format
msgid "Opening %s for writing: %s."
msgstr ""
-#: src/data/make-file.c:157
+#: src/data/make-file.c:80
#, c-format
msgid "Opening stream for %s: %s."
msgstr ""
-#: src/data/make-file.c:186
+#: src/data/make-file.c:109
#, c-format
msgid "Creating temporary file to replace %s: %s."
msgstr ""
-#: src/data/make-file.c:197
+#: src/data/make-file.c:120
#, c-format
msgid "Creating temporary file %s: %s."
msgstr ""
-#: src/data/make-file.c:209
+#: src/data/make-file.c:132
#, c-format
msgid "Opening stream for temporary file %s: %s."
msgstr ""
-#: src/data/make-file.c:250
+#: src/data/make-file.c:173
#, c-format
msgid "Replacing %s by %s: %s."
msgstr ""
-#: src/data/make-file.c:278
+#: src/data/make-file.c:201
#, c-format
msgid "Removing %s: %s."
msgstr ""
-#: src/data/por-file-reader.c:99
+#: src/data/por-file-reader.c:98
#, c-format
msgid "portable file %s corrupt at offset 0x%llx: "
msgstr ""
-#: src/data/por-file-reader.c:128
+#: src/data/por-file-reader.c:129
#, c-format
msgid "reading portable file %s at offset 0x%llx: "
msgstr ""
-#: src/data/por-file-reader.c:156
+#: src/data/por-file-reader.c:159
#, c-format
-msgid "Error closing portable file \"%s\": %s."
-msgstr ""
+msgid "Error closing portable file `%s': %s."
+msgstr "Error closing portable file ‘%s’: %s."
-#: src/data/por-file-reader.c:208
+#: src/data/por-file-reader.c:211
msgid "unexpected end of file"
msgstr ""
#. TRANSLATORS: this fragment will be interpolated into
#. messages in fh_lock() that identify types of files.
-#: src/data/por-file-reader.c:267 src/data/por-file-writer.c:149
+#: src/data/por-file-reader.c:270 src/data/por-file-writer.c:148
msgid "portable file"
msgstr ""
-#: src/data/por-file-reader.c:275
+#: src/data/por-file-reader.c:278
#, c-format
msgid ""
-"An error occurred while opening \"%s\" for reading as a portable file: %s."
+"An error occurred while opening `%s' for reading as a portable file: %s."
msgstr ""
-#: src/data/por-file-reader.c:296
+#: src/data/por-file-reader.c:299
msgid "Data record expected."
msgstr ""
-#: src/data/por-file-reader.c:378
+#: src/data/por-file-reader.c:381
msgid "Number expected."
msgstr ""
-#: src/data/por-file-reader.c:406
+#: src/data/por-file-reader.c:409
msgid "Missing numeric terminator."
msgstr ""
-#: src/data/por-file-reader.c:429
+#: src/data/por-file-reader.c:432
msgid "Invalid integer."
msgstr ""
-#: src/data/por-file-reader.c:440 src/data/por-file-reader.c:460
+#: src/data/por-file-reader.c:443 src/data/por-file-reader.c:463
#, c-format
msgid "Bad string length %d."
msgstr ""
-#: src/data/por-file-reader.c:523
+#: src/data/por-file-reader.c:526
#, c-format
msgid "%s: Not a portable file."
msgstr ""
-#: src/data/por-file-reader.c:540
+#: src/data/por-file-reader.c:543
#, c-format
msgid "Unrecognized version code `%c'."
msgstr "Unrecognised version code `%c'."
-#: src/data/por-file-reader.c:549
+#: src/data/por-file-reader.c:552
#, c-format
msgid "Bad date string length %zu."
msgstr ""
-#: src/data/por-file-reader.c:551
+#: src/data/por-file-reader.c:554
#, c-format
msgid "Bad time string length %zu."
msgstr ""
-#: src/data/por-file-reader.c:593
+#: src/data/por-file-reader.c:596
#, c-format
msgid ""
"%s: Bad format specifier byte (%d). Variable will be assigned a default "
"format."
msgstr ""
-#: src/data/por-file-reader.c:614
+#: src/data/por-file-reader.c:617
#, c-format
msgid "Numeric variable %s has invalid format specifier %s."
msgstr ""
-#: src/data/por-file-reader.c:618
+#: src/data/por-file-reader.c:621
#, c-format
msgid "String variable %s with width %d has invalid format specifier %s."
msgstr ""
-#: src/data/por-file-reader.c:642
+#: src/data/por-file-reader.c:645
msgid "Expected variable count record."
msgstr ""
-#: src/data/por-file-reader.c:646
+#: src/data/por-file-reader.c:649
#, c-format
msgid "Invalid number of variables %d."
msgstr ""
-#: src/data/por-file-reader.c:655
+#: src/data/por-file-reader.c:658
#, c-format
msgid "Weight variable name (%s) truncated."
msgstr ""
-#: src/data/por-file-reader.c:670
+#: src/data/por-file-reader.c:673
msgid "Expected variable record."
msgstr ""
-#: src/data/por-file-reader.c:674
+#: src/data/por-file-reader.c:677
#, c-format
msgid "Invalid variable width %d."
msgstr ""
-#: src/data/por-file-reader.c:681
+#: src/data/por-file-reader.c:684
#, c-format
msgid "Invalid variable name `%s' in position %d."
-msgstr ""
+msgstr "Invalid variable name ‘%s’ in position %d."
-#: src/data/por-file-reader.c:685 src/data/sys-file-reader.c:606
+#: src/data/por-file-reader.c:688 src/data/sys-file-reader.c:605
#, c-format
msgid "Bad width %d for variable %s."
msgstr ""
-#: src/data/por-file-reader.c:700
+#: src/data/por-file-reader.c:703
#, c-format
msgid "Duplicate variable name %s in position %d."
msgstr ""
-#: src/data/por-file-reader.c:701
+#: src/data/por-file-reader.c:704
#, c-format
msgid "Duplicate variable name %s in position %d renamed to %s."
msgstr ""
-#: src/data/por-file-reader.c:750
+#: src/data/por-file-reader.c:753
#, c-format
msgid "Weighting variable %s not present in dictionary."
msgstr ""
-#: src/data/por-file-reader.c:794
+#: src/data/por-file-reader.c:797
#, c-format
msgid "Unknown variable %s while parsing value labels."
msgstr ""
-#: src/data/por-file-reader.c:797
+#: src/data/por-file-reader.c:800
#, c-format
msgid ""
"Cannot assign value labels to %s and %s, which have different variable types."
msgstr ""
-#: src/data/por-file-writer.c:141
+#: src/data/por-file-writer.c:140
#, c-format
msgid "Invalid decimal digits count %d. Treating as %d."
msgstr ""
-#: src/data/por-file-writer.c:161
+#: src/data/por-file-writer.c:160
#, c-format
-msgid "Error opening \"%s\" for writing as a portable file: %s."
-msgstr ""
+msgid "Error opening `%s' for writing as a portable file: %s."
+msgstr "Error opening ‘%s’ for writing as a portable file: %s."
-#: src/data/por-file-writer.c:506
+#: src/data/por-file-writer.c:505
#, c-format
-msgid "An I/O error occurred writing portable file \"%s\"."
-msgstr ""
+msgid "An I/O error occurred writing portable file `%s'."
+msgstr "An I/O error occurred writing portable file ‘%s’."
#: src/data/psql-reader.c:46
msgid ""
"permitted."
msgstr ""
-#: src/data/psql-reader.c:322 src/data/psql-reader.c:347
-#: src/data/psql-reader.c:357
+#: src/data/psql-reader.c:321 src/data/psql-reader.c:346
+#: src/data/psql-reader.c:356
#, c-format
msgid "Error from psql source: %s."
msgstr ""
-#: src/data/psql-reader.c:452
+#: src/data/psql-reader.c:451
#, c-format
msgid "Unsupported OID %d. SYSMIS values will be inserted."
msgstr ""
msgid "scratch file"
msgstr ""
-#: src/data/settings.c:608
+#: src/data/settings.c:388
+msgid ""
+"MXWARNS set to zero. No further warnings will be given even when "
+"potentially problematic situations are encountered."
+msgstr ""
+
+#: src/data/settings.c:395
+#, c-format
+msgid ""
+"Warnings re-enabled. %d warnings will be issued before aborting syntax "
+"processing."
+msgstr ""
+
+#: src/data/settings.c:639
#, c-format
msgid ""
"%s: Custom currency string `%s' does not contain exactly three periods or "
msgid "Variable suffix too large."
msgstr ""
-#: src/data/sys-file-reader.c:226
+#: src/data/sys-file-reader.c:225
#, c-format
msgid "Recoded variable name duplicates an existing `%s' within system file."
-msgstr ""
+msgstr "Recoded variable name duplicates an existing ‘%s’ within system file."
#. TRANSLATORS: this fragment will be interpolated into
#. messages in fh_lock() that identify types of files.
-#: src/data/sys-file-reader.c:290 src/data/sys-file-writer.c:207
+#: src/data/sys-file-reader.c:289 src/data/sys-file-writer.c:206
msgid "system file"
msgstr ""
-#: src/data/sys-file-reader.c:297
+#: src/data/sys-file-reader.c:296
#, c-format
-msgid "Error opening \"%s\" for reading as a system file: %s."
-msgstr ""
+msgid "Error opening `%s' for reading as a system file: %s."
+msgstr "Error opening ‘%s’ for reading as a system file: %s."
-#: src/data/sys-file-reader.c:336 tests/dissect-sysfile.c:155
+#: src/data/sys-file-reader.c:335 tests/dissect-sysfile.c:155
msgid "Misplaced type 4 record."
msgstr ""
-#: src/data/sys-file-reader.c:347 tests/dissect-sysfile.c:166
+#: src/data/sys-file-reader.c:346 tests/dissect-sysfile.c:166
#, c-format
msgid "Unrecognized record type %d."
msgstr "Unrecognised record type %d."
-#: src/data/sys-file-reader.c:388
+#: src/data/sys-file-reader.c:387
#, c-format
msgid "File header claims %d variable positions but %d were read from file."
msgstr ""
-#: src/data/sys-file-reader.c:428
+#: src/data/sys-file-reader.c:427
#, c-format
-msgid "Error closing system file \"%s\": %s."
-msgstr ""
+msgid "Error closing system file `%s': %s."
+msgstr "Error closing system file ‘%s’: %s."
-#: src/data/sys-file-reader.c:493 src/data/sys-file-reader.c:503
+#: src/data/sys-file-reader.c:492 src/data/sys-file-reader.c:502
#: tests/dissect-sysfile.c:203 tests/dissect-sysfile.c:213
msgid "This is not an SPSS system file."
msgstr ""
-#: src/data/sys-file-reader.c:525 tests/dissect-sysfile.c:228
+#: src/data/sys-file-reader.c:524 tests/dissect-sysfile.c:228
msgid ""
"Compression bias is not the usual value of 100, or system file uses "
"unrecognized floating-point format."
"Compression bias is not the usual value of 100, or system file uses \n"
"unrecognised floating-point format."
-#: src/data/sys-file-reader.c:602
+#: src/data/sys-file-reader.c:598
+#, c-format
+msgid "Variable name begins with invalid character `%c'."
+msgstr "Variable name begins with invalid character ‘%c’."
+
+#: src/data/sys-file-reader.c:601
#, c-format
msgid "Invalid variable name `%s'."
-msgstr ""
+msgstr "Invalid variable name ‘%s’."
-#: src/data/sys-file-reader.c:610
+#: src/data/sys-file-reader.c:609
#, c-format
msgid "Duplicate variable name `%s' within system file."
-msgstr ""
+msgstr "Duplicate variable name ‘%s’ within system file."
-#: src/data/sys-file-reader.c:618 tests/dissect-sysfile.c:357
+#: src/data/sys-file-reader.c:617 tests/dissect-sysfile.c:357
msgid "Variable label indicator field is not 0 or 1."
msgstr ""
-#: src/data/sys-file-reader.c:649 tests/dissect-sysfile.c:388
+#: src/data/sys-file-reader.c:648 tests/dissect-sysfile.c:388
msgid "Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3."
msgstr ""
-#: src/data/sys-file-reader.c:667 tests/dissect-sysfile.c:403
+#: src/data/sys-file-reader.c:666 tests/dissect-sysfile.c:403
msgid "String missing value indicator field is not 0, 1, 2, or 3."
msgstr ""
-#: src/data/sys-file-reader.c:699
+#: src/data/sys-file-reader.c:698
msgid "Missing string continuation record."
msgstr ""
-#: src/data/sys-file-reader.c:733
+#: src/data/sys-file-reader.c:732
#, c-format
msgid "Unknown variable format %<PRIu8>."
msgstr ""
-#: src/data/sys-file-reader.c:751
+#: src/data/sys-file-reader.c:750
#, c-format
msgid "%s variable %s has invalid %s format %s."
msgstr ""
-#: src/data/sys-file-reader.c:754
+#: src/data/sys-file-reader.c:753
msgid "print"
msgstr ""
-#: src/data/sys-file-reader.c:754
+#: src/data/sys-file-reader.c:753
msgid "write"
msgstr ""
-#: src/data/sys-file-reader.c:758
+#: src/data/sys-file-reader.c:757
msgid "Suppressing further invalid format warnings."
msgstr ""
-#: src/data/sys-file-reader.c:776
+#: src/data/sys-file-reader.c:775
msgid "Weighting variable must be numeric."
msgstr ""
-#: src/data/sys-file-reader.c:790
+#: src/data/sys-file-reader.c:789
msgid "Multiple type 6 (document) records."
msgstr ""
-#: src/data/sys-file-reader.c:794
+#: src/data/sys-file-reader.c:793
#, c-format
msgid "Number of document lines (%d) must be greater than 0."
msgstr ""
-#: src/data/sys-file-reader.c:802
+#: src/data/sys-file-reader.c:801
msgid "Document line contains null byte."
msgstr ""
-#: src/data/sys-file-reader.c:893
+#: src/data/sys-file-reader.c:892
#, c-format
msgid ""
"Unrecognized record type 7, subtype %d. Please send a copy of this file, "
"and the syntax which created it to %s"
msgstr ""
-#: src/data/sys-file-reader.c:920 tests/dissect-sysfile.c:595
+#: src/data/sys-file-reader.c:919 tests/dissect-sysfile.c:595
#, c-format
msgid "Bad size (%zu) or count (%zu) field on record type 7, subtype 3."
msgstr ""
-#: src/data/sys-file-reader.c:940
+#: src/data/sys-file-reader.c:939
#, c-format
msgid ""
"Floating-point representation indicated by system file (%d) differs from "
"expected (%d)."
msgstr ""
-#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:110
+#: src/data/sys-file-reader.c:952 src/language/dictionary/sys-file-info.c:109
msgid "Little Endian"
msgstr ""
-#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:109
+#: src/data/sys-file-reader.c:952 src/language/dictionary/sys-file-info.c:108
msgid "Big Endian"
msgstr ""
-#: src/data/sys-file-reader.c:954
+#: src/data/sys-file-reader.c:953
#, c-format
msgid ""
"Integer format indicated by system file (%s) differs from expected (%s)."
msgstr ""
-#: src/data/sys-file-reader.c:1011 tests/dissect-sysfile.c:626
+#: src/data/sys-file-reader.c:1010 tests/dissect-sysfile.c:626
#, c-format
msgid "Bad size (%zu) or count (%zu) on extension 4."
msgstr ""
-#: src/data/sys-file-reader.c:1015 src/data/sys-file-reader.c:1019
-#: src/data/sys-file-reader.c:1023 tests/dissect-sysfile.c:631
+#: src/data/sys-file-reader.c:1014 src/data/sys-file-reader.c:1018
+#: src/data/sys-file-reader.c:1022 tests/dissect-sysfile.c:631
#: tests/dissect-sysfile.c:636 tests/dissect-sysfile.c:641
#, c-format
msgid "File specifies unexpected value %g as %s."
msgstr ""
-#: src/data/sys-file-reader.c:1056
-#, c-format
-msgid "Missing space following 'C' at offset %zu in MRSETS record"
-msgstr ""
-
-#: src/data/sys-file-reader.c:1074 tests/dissect-sysfile.c:692
+#: src/data/sys-file-reader.c:1055 src/data/sys-file-reader.c:1073
+#: tests/dissect-sysfile.c:692
#, c-format
-msgid "Missing space following 'E' at offset %zu in MRSETS record"
+msgid "Missing space following `%c' at offset %zu in MRSETS record"
msgstr ""
-#: src/data/sys-file-reader.c:1083 tests/dissect-sysfile.c:701
+#: src/data/sys-file-reader.c:1082 tests/dissect-sysfile.c:701
#, c-format
msgid ""
-"Unexpected label source value \"%s\" following 'E' at offset %zu in MRSETS "
+"Unexpected label source value `%s' following `E' at offset %zu in MRSETS "
"record"
msgstr ""
-#: src/data/sys-file-reader.c:1089
+#: src/data/sys-file-reader.c:1088
#, c-format
-msgid "Missing 'C', 'D', or 'E' at offset %zu in MRSETS record."
+msgid "Missing `C', `D', or `E' at offset %zu in MRSETS record."
msgstr ""
-#: src/data/sys-file-reader.c:1118
+#: src/data/sys-file-reader.c:1117
#, c-format
msgid "Missing new-line parsing variable names at offset %zu in MRSETS record."
msgstr ""
-#: src/data/sys-file-reader.c:1129
+#: src/data/sys-file-reader.c:1128
#, c-format
msgid "Duplicate variable name %s at offset %zu in MRSETS record."
msgstr ""
-#: src/data/sys-file-reader.c:1142
+#: src/data/sys-file-reader.c:1141
#, c-format
msgid "MRSET %s contains both string and numeric variables."
msgstr ""
-#: src/data/sys-file-reader.c:1157
+#: src/data/sys-file-reader.c:1156
#, c-format
msgid "MRSET %s has only %zu variables."
msgstr ""
#: src/data/sys-file-reader.c:1271
#, c-format
msgid "Long variable mapping from %s to invalid variable name `%s'."
-msgstr ""
+msgstr "Long variable mapping from %s to invalid variable name ‘%s’."
#: src/data/sys-file-reader.c:1281
#, c-format
msgid "Duplicate long variable name `%s' within system file."
-msgstr ""
+msgstr "Duplicate long variable name ‘%s’ within system file."
#: src/data/sys-file-reader.c:1334
#, c-format
#: src/data/sys-file-reader.c:1505 src/data/sys-file-reader.c:1686
#, c-format
-msgid "Duplicate value label for \"%.*s\" on %s."
-msgstr ""
+msgid "Duplicate value label for `%.*s' on %s."
+msgstr "Duplicate value label for ‘%.*s’ on %s."
#: src/data/sys-file-reader.c:1543
#, c-format
msgid "Expecting space at offset %zu following %zu-byte string."
msgstr ""
-#: src/data/sys-file-reader.c:2347 tests/dissect-sysfile.c:1356
+#: src/data/sys-file-reader.c:2349 tests/dissect-sysfile.c:1356
#, c-format
msgid "System error: %s."
msgstr ""
-#: src/data/sys-file-reader.c:2349 tests/dissect-sysfile.c:1358
+#: src/data/sys-file-reader.c:2351 tests/dissect-sysfile.c:1358
msgid "Unexpected end of file."
msgstr ""
-#: src/data/sys-file-writer.c:180
+#: src/data/sys-file-writer.c:179
#, c-format
msgid "Unknown system file version %d. Treating as version %d."
msgstr ""
-#: src/data/sys-file-writer.c:219
+#: src/data/sys-file-writer.c:985
#, c-format
-msgid "Error opening \"%s\" for writing as a system file: %s."
-msgstr ""
-
-#: src/data/sys-file-writer.c:989
-#, c-format
-msgid "An I/O error occurred writing system file \"%s\"."
-msgstr ""
+msgid "An I/O error occurred writing system file `%s'."
+msgstr "An I/O error occurred writing system file ‘%s’."
#: src/data/variable.c:206
#, c-format
#: src/data/variable.c:218
#, c-format
msgid "Character `%c' (in %s) may not appear in a variable name."
-msgstr ""
+msgstr "Character ‘%c’ (in %s) may not appear in a variable name."
#: src/data/variable.c:244
msgid "Variable name cannot be empty string."
#: src/data/variable.c:258
#, c-format
msgid "`%s' may not be used as a variable name because it is a reserved word."
-msgstr ""
-
-#: src/language/syntax-file.c:95
-#, c-format
-msgid "Opening `%s': %s."
-msgstr ""
+msgstr "‘%s’ may not be used as a variable name because it is a reserved word."
-#: src/language/syntax-file.c:109
+#: src/language/syntax-file.c:100
#, c-format
msgid "Reading `%s': %s."
-msgstr ""
+msgstr "Reading ‘%s’: %s."
-#: src/language/syntax-file.c:126
+#: src/language/syntax-file.c:117
#, c-format
msgid "Closing `%s': %s."
-msgstr ""
+msgstr "Closing ‘%s’: %s."
-#: src/language/command.c:205 src/language/expressions/parse.c:1267
+#: src/language/syntax-file.c:138
+#, c-format
+msgid "Opening `%s': %s."
+msgstr "Opening ‘%s’: %s."
+
+#: src/language/command.c:197 src/language/expressions/parse.c:1270
#: src/language/utilities/set.q:213
#, c-format
msgid "%s is not yet implemented."
msgstr ""
-#: src/language/command.c:210
+#: src/language/command.c:202
#, c-format
msgid "%s may be used only in testing mode."
msgstr ""
-#: src/language/command.c:215
+#: src/language/command.c:207
#, c-format
msgid "%s may be used only in enhanced syntax mode."
msgstr ""
-#: src/language/command.c:239
+#: src/language/command.c:231
msgid "Error encountered while ERROR=STOP is effective."
msgstr ""
-#: src/language/command.c:484
+#: src/language/command.c:476
msgid "expecting command name"
msgstr ""
-#: src/language/command.c:498
+#: src/language/command.c:490
#, c-format
msgid "Unknown command %s."
msgstr ""
-#: src/language/command.c:623
+#: src/language/command.c:615
#, c-format
msgid "%s is allowed only before the active file has been defined."
msgstr ""
-#: src/language/command.c:627
+#: src/language/command.c:619
#, c-format
msgid "%s is allowed only after the active file has been defined."
msgstr ""
-#: src/language/command.c:631
+#: src/language/command.c:623
#, c-format
msgid "%s is allowed only inside INPUT PROGRAM."
msgstr ""
-#: src/language/command.c:635
+#: src/language/command.c:627
#, c-format
msgid "%s is allowed only inside FILE TYPE."
msgstr ""
-#: src/language/command.c:642
+#: src/language/command.c:634
#, c-format
msgid ""
"%s is allowed only before the active file has been defined or inside INPUT "
"PROGRAM."
msgstr ""
-#: src/language/command.c:646
+#: src/language/command.c:638
#, c-format
msgid ""
"%s is allowed only before the active file has been defined or inside FILE "
"TYPE."
msgstr ""
-#: src/language/command.c:650
+#: src/language/command.c:642
#, c-format
msgid ""
"%s is allowed only after the active file has been defined or inside INPUT "
"PROGRAM."
msgstr ""
-#: src/language/command.c:654
+#: src/language/command.c:646
#, c-format
msgid ""
"%s is allowed only after the active file has been defined or inside FILE "
"TYPE."
msgstr ""
-#: src/language/command.c:658
+#: src/language/command.c:650
#, c-format
msgid "%s is allowed only inside INPUT PROGRAM or inside FILE TYPE."
msgstr ""
-#: src/language/command.c:664
+#: src/language/command.c:656
#, c-format
msgid ""
"%s is allowed only after the active file has been defined, inside INPUT "
"PROGRAM, or inside FILE TYPE."
msgstr ""
-#: src/language/command.c:669
+#: src/language/command.c:661
#, c-format
msgid ""
"%s is allowed only before the active file has been defined, inside INPUT "
"PROGRAM, or inside FILE TYPE."
msgstr ""
-#: src/language/command.c:687 src/language/command.c:689
+#: src/language/command.c:679 src/language/command.c:681
#, c-format
msgid "%s is not allowed inside %s."
msgstr ""
-#: src/language/command.c:768 src/language/command.c:876
-#: src/language/utilities/permissions.c:98
+#: src/language/command.c:760 src/language/utilities/host.c:128
+#: src/language/utilities/permissions.c:101
msgid "This command not allowed when the SAFER option is set."
msgstr ""
-#: src/language/command.c:780
+#: src/language/command.c:772
#, c-format
msgid "Error removing `%s': %s."
-msgstr ""
-
-#: src/language/command.c:830
-#, c-format
-msgid "Couldn't fork: %s."
-msgstr ""
-
-#: src/language/command.c:845
-msgid "Interactive shell not supported on this platform."
-msgstr ""
-
-#: src/language/command.c:857
-msgid "Command shell not supported on this platform."
-msgstr ""
-
-#: src/language/command.c:863
-#, c-format
-msgid "Error executing command: %s."
-msgstr ""
+msgstr "Error removing ‘%s’: %s."
-#: src/language/lexer/lexer.c:284
+#: src/language/lexer/lexer.c:263
#, c-format
msgid "%s does not form a valid number."
msgstr ""
-#: src/language/lexer/lexer.c:390
+#: src/language/lexer/lexer.c:369
#, c-format
msgid "Bad character in input: `%s'."
-msgstr ""
+msgstr "Bad character in input: ‘%s’."
-#: src/language/lexer/lexer.c:427
+#: src/language/lexer/lexer.c:402
#, c-format
msgid "Subcommand %s may only be specified once."
msgstr ""
-#: src/language/lexer/lexer.c:435
+#: src/language/lexer/lexer.c:410
#, c-format
msgid "missing required subcommand %s"
msgstr ""
-#: src/language/lexer/lexer.c:464
-#, c-format
-msgid "Syntax error %s at %s."
+#: src/language/lexer/lexer.c:423
+msgid "Syntax error at end of file"
msgstr ""
-#: src/language/lexer/lexer.c:467
-#, c-format
-msgid "Syntax error at %s."
+#: src/language/lexer/lexer.c:425
+msgid "Syntax error at end of command"
msgstr ""
-#: src/language/lexer/lexer.c:479 src/language/xforms/select-if.c:60
-#: src/language/stats/autorecode.c:144 src/language/data-io/print-space.c:73
+#: src/language/lexer/lexer.c:429
+#, c-format
+msgid "Syntax error at `%s'"
+msgstr "Syntax error at ‘%s’"
+
+#: src/language/lexer/lexer.c:457 src/language/xforms/select-if.c:60
+#: src/language/stats/autorecode.c:161 src/language/stats/npar.c:310
+#: src/language/data-io/print-space.c:73
msgid "expecting end of command"
msgstr ""
-#: src/language/lexer/lexer.c:601 src/language/lexer/lexer.c:618
+#: src/language/lexer/lexer.c:579 src/language/lexer/lexer.c:596
#, c-format
msgid "expecting `%s'"
-msgstr ""
+msgstr "expecting ‘%s’"
-#: src/language/lexer/lexer.c:632
+#: src/language/lexer/lexer.c:610
msgid "expecting string"
msgstr ""
-#: src/language/lexer/lexer.c:646
+#: src/language/lexer/lexer.c:624
msgid "expecting integer"
msgstr ""
-#: src/language/lexer/lexer.c:659
+#: src/language/lexer/lexer.c:637
msgid "expecting number"
msgstr ""
-#: src/language/lexer/lexer.c:671
+#: src/language/lexer/lexer.c:649
msgid "expecting identifier"
msgstr ""
-#: src/language/lexer/lexer.c:1065
+#: src/language/lexer/lexer.c:1042
msgid "binary"
msgstr ""
-#: src/language/lexer/lexer.c:1070
+#: src/language/lexer/lexer.c:1047
msgid "octal"
msgstr ""
-#: src/language/lexer/lexer.c:1075
+#: src/language/lexer/lexer.c:1052
msgid "hex"
msgstr ""
-#: src/language/lexer/lexer.c:1085
+#: src/language/lexer/lexer.c:1062
#, c-format
msgid "String of %s digits has %zu characters, which is not a multiple of %d."
msgstr ""
-#: src/language/lexer/lexer.c:1114
+#: src/language/lexer/lexer.c:1091
#, c-format
msgid "`%c' is not a valid %s digit."
-msgstr ""
+msgstr "‘%c’ is not a valid %s digit."
-#: src/language/lexer/lexer.c:1148
+#: src/language/lexer/lexer.c:1125
msgid "Unterminated string constant."
msgstr ""
-#: src/language/lexer/lexer.c:1202
+#: src/language/lexer/lexer.c:1179
msgid "Unexpected end of file in string concatenation."
msgstr ""
-#: src/language/lexer/lexer.c:1210
+#: src/language/lexer/lexer.c:1187
msgid "String expected following `+'."
-msgstr ""
+msgstr "String expected following ‘+’."
#: src/language/lexer/format-parser.c:88
msgid "expecting valid format specifier"
#: src/language/lexer/format-parser.c:126
#: src/language/data-io/placement-parser.c:226
#, c-format
-msgid "Unknown format type \"%s\"."
-msgstr ""
+msgid "Unknown format type `%s'."
+msgstr "Unknown format type ‘%s’."
#: src/language/lexer/format-parser.c:121
msgid "expecting format type"
msgstr ""
-#: src/language/lexer/value-parser.c:60
+#: src/language/lexer/value-parser.c:64
#, c-format
msgid ""
"Low end of range (%g) is below high end (%g). The range will be treated as "
"reversed."
msgstr ""
-#: src/language/lexer/value-parser.c:68
+#: src/language/lexer/value-parser.c:72
#, c-format
msgid "Ends of range are equal (%g)."
msgstr ""
-#: src/language/lexer/value-parser.c:76
+#: src/language/lexer/value-parser.c:80
msgid "LO or LOWEST must be part of a range."
msgstr ""
-#: src/language/lexer/value-parser.c:109
+#: src/language/lexer/value-parser.c:117
msgid "System-missing value is not valid here."
msgstr ""
-#: src/language/lexer/value-parser.c:117
+#: src/language/lexer/value-parser.c:125
msgid "expecting number or data string"
msgstr ""
msgid "Bad bounds in use of TO convention."
msgstr ""
-#: src/language/xforms/compute.c:149 src/language/xforms/compute.c:203
+#: src/language/xforms/compute.c:149 src/language/xforms/compute.c:204
#, c-format
msgid ""
-"When executing COMPUTE: SYSMIS is not a valid value as an index into vector %"
-"s."
+"When executing COMPUTE: SYSMIS is not a valid value as an index into vector "
+"%s."
msgstr ""
-#: src/language/xforms/compute.c:153 src/language/xforms/compute.c:210
+#: src/language/xforms/compute.c:153 src/language/xforms/compute.c:211
#, c-format
msgid ""
"When executing COMPUTE: %g is not a valid value as an index into vector %s."
msgstr ""
-#: src/language/xforms/compute.c:353
+#: src/language/xforms/compute.c:355
#, c-format
msgid "There is no vector named %s."
msgstr ""
msgid "Cannot sample %d observations from a population of %d."
msgstr ""
-#: src/language/xforms/recode.c:248
+#: src/language/xforms/recode.c:250
msgid ""
"Inconsistent target variable types. Target variables must be all numeric or "
"all string."
msgstr ""
-#: src/language/xforms/recode.c:269
+#: src/language/xforms/recode.c:271
msgid "CONVERT requires string input values and numeric output values."
msgstr ""
-#: src/language/xforms/recode.c:324
+#: src/language/xforms/recode.c:326
msgid "THRU is not allowed with string variables."
msgstr ""
-#: src/language/xforms/recode.c:403
+#: src/language/xforms/recode.c:406
msgid "expecting output value"
msgstr ""
-#: src/language/xforms/recode.c:460
+#: src/language/xforms/recode.c:463
#, c-format
msgid ""
"%zu variable(s) cannot be recoded into %zu variable(s). Specify the same "
"number of variables as source and target variables."
msgstr ""
-#: src/language/xforms/recode.c:475
+#: src/language/xforms/recode.c:478
#, c-format
msgid ""
"There is no variable named %s. (All string variables specified on INTO must "
"already exist. Use the STRING command to create a string variable.)"
msgstr ""
-#: src/language/xforms/recode.c:491
+#: src/language/xforms/recode.c:494
#, c-format
msgid "INTO is required with %s input values and %s output values."
msgstr ""
-#: src/language/xforms/recode.c:504
+#: src/language/xforms/recode.c:507
#, c-format
msgid "Type mismatch. Cannot store %s data in %s variable %s."
msgstr ""
msgid "Only one index clause may be specified."
msgstr ""
-#: src/language/control/temporary.c:46
+#: src/language/control/temporary.c:45
msgid ""
"This command may only appear once between procedures and procedure-like "
"commands."
#: src/language/control/repeat.c:172
#, c-format
-msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"."
-msgstr ""
+msgid "Dummy variable name `%s' hides dictionary variable `%s'."
+msgstr "Dummy variable name ‘%s’ hides dictionary variable ‘%s’."
#: src/language/control/repeat.c:177
#, c-format
-msgid "Dummy variable name \"%s\" is given twice."
-msgstr ""
+msgid "Dummy variable name `%s' is given twice."
+msgstr "Dummy variable name ‘%s’ is given twice."
#: src/language/control/repeat.c:223
#, c-format
msgid ""
-"Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d "
-"were specified."
+"Dummy variable `%.*s' had %d substitutions, so `%.*s' must also, but %d were "
+"specified."
+msgstr ""
+
+#: src/language/control/repeat.c:310
+msgid "DO REPEAT without END REPEAT."
msgstr ""
-#: src/language/control/repeat.c:335
+#: src/language/control/repeat.c:338
msgid "DO REPEAT may not nest in compatibility mode."
msgstr ""
-#: src/language/control/repeat.c:437
+#: src/language/control/repeat.c:440
msgid "Ranges may only have integer bounds"
msgstr ""
-#: src/language/control/repeat.c:446
+#: src/language/control/repeat.c:449
#, c-format
msgid "%g TO %g is an invalid range."
msgstr ""
-#: src/language/control/repeat.c:481
+#: src/language/control/repeat.c:484
msgid "String expected."
msgstr ""
-#: src/language/control/repeat.c:500
+#: src/language/control/repeat.c:503
msgid "No matching DO REPEAT."
msgstr ""
msgstr ""
#: src/language/dictionary/attributes.c:189
-msgid "expecting ATTRIBUTE= or DELETE="
+#: src/language/data-io/get-data.c:314 src/language/data-io/get-data.c:352
+#: src/language/data-io/get.c:99 src/language/data-io/save-translate.c:118
+#: src/language/data-io/save-translate.c:135
+#: src/language/data-io/save-translate.c:148
+#: src/language/data-io/save-translate.c:194
+#: src/language/data-io/save-translate.c:208
+#: src/language/data-io/save-translate.c:226 src/language/data-io/save.c:216
+#: src/language/data-io/save.c:231 src/language/data-io/save.c:259
+#, c-format
+msgid "expecting %s or %s"
msgstr ""
-#: src/language/dictionary/apply-dictionary.c:75
+#: src/language/dictionary/apply-dictionary.c:74
#, c-format
msgid "Variable %s is %s in target file, but %s in source file."
msgstr ""
-#: src/language/dictionary/apply-dictionary.c:115
+#: src/language/dictionary/apply-dictionary.c:114
msgid "No matching variables found between the source and target files."
msgstr ""
#: src/language/dictionary/formats.c:90
msgid "`(' expected after variable list."
-msgstr ""
+msgstr "‘(’ expected after variable list."
#: src/language/dictionary/formats.c:100 src/language/dictionary/numeric.c:74
msgid "`)' expected after output format."
-msgstr ""
+msgstr "‘)’ expected after output format."
-#: src/language/dictionary/missing-values.c:56
-#: src/language/stats/aggregate.c:459
-msgid "expecting `('"
-msgstr ""
-
-#: src/language/dictionary/missing-values.c:72
+#: src/language/dictionary/missing-values.c:69
#, c-format
msgid ""
"Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within "
"a single list."
msgstr ""
-#: src/language/dictionary/missing-values.c:116
+#: src/language/dictionary/missing-values.c:113
#, c-format
msgid "Truncating missing value to maximum acceptable length (%d bytes)."
msgstr ""
-#: src/language/dictionary/missing-values.c:138
+#: src/language/dictionary/missing-values.c:135
#, c-format
msgid "Missing values provided are too long to assign to variable of width %d."
msgstr ""
-#: src/language/dictionary/modify-variables.c:92
+#: src/language/dictionary/modify-variables.c:91
msgid ""
"MODIFY VARS may not be used after TEMPORARY. Temporary transformations will "
"be made permanent."
msgstr ""
-#: src/language/dictionary/modify-variables.c:114
-#: src/language/dictionary/modify-variables.c:177
+#: src/language/dictionary/modify-variables.c:113
+#: src/language/dictionary/modify-variables.c:176
+#: src/language/data-io/inpt-pgm.c:288
#, c-format
msgid "%s subcommand may be given at most once."
msgstr ""
-#: src/language/dictionary/modify-variables.c:137
+#: src/language/dictionary/modify-variables.c:136
msgid "Cannot specify ALL after specifying a set of variables."
msgstr ""
-#: src/language/dictionary/modify-variables.c:147
-#: src/language/dictionary/modify-variables.c:190
+#: src/language/dictionary/modify-variables.c:146
+#: src/language/dictionary/modify-variables.c:189
#, c-format
msgid "`(' expected on %s subcommand."
-msgstr ""
+msgstr "‘(’ expected on %s subcommand."
-#: src/language/dictionary/modify-variables.c:159
+#: src/language/dictionary/modify-variables.c:158
msgid "`)' expected following variable names on REORDER subcommand."
-msgstr ""
+msgstr "‘)’ expected following variable names on REORDER subcommand."
-#: src/language/dictionary/modify-variables.c:199
+#: src/language/dictionary/modify-variables.c:198
msgid ""
"`=' expected between lists of new and old variable names on RENAME "
"subcommand."
msgstr ""
-#: src/language/dictionary/modify-variables.c:208
-#: src/language/dictionary/rename-variables.c:77
+#: src/language/dictionary/modify-variables.c:207
+#: src/language/dictionary/rename-variables.c:76
#, c-format
msgid ""
-"Differing number of variables in old name list (%zu) and in new name list (%"
-"zu)."
+"Differing number of variables in old name list (%zu) and in new name list "
+"(%zu)."
msgstr ""
-#: src/language/dictionary/modify-variables.c:219
+#: src/language/dictionary/modify-variables.c:218
msgid "`)' expected after variable lists on RENAME subcommand."
-msgstr ""
+msgstr "‘)’ expected after variable lists on RENAME subcommand."
-#: src/language/dictionary/modify-variables.c:233
+#: src/language/dictionary/modify-variables.c:232
msgid ""
"KEEP subcommand may be given at most once. It may not be given in "
"conjunction with the DROP subcommand."
msgstr ""
-#: src/language/dictionary/modify-variables.c:276
+#: src/language/dictionary/modify-variables.c:275
msgid ""
"DROP subcommand may be given at most once. It may not be given in "
"conjunction with the KEEP subcommand."
msgstr ""
-#: src/language/dictionary/modify-variables.c:302
+#: src/language/dictionary/modify-variables.c:301
#, c-format
msgid "Unrecognized subcommand name `%s'."
msgstr "Unrecognised subcommand name `%s'."
-#: src/language/dictionary/modify-variables.c:304
+#: src/language/dictionary/modify-variables.c:303
msgid "Subcommand name expected."
msgstr ""
-#: src/language/dictionary/modify-variables.c:312
+#: src/language/dictionary/modify-variables.c:311
msgid "`/' or `.' expected."
-msgstr ""
+msgstr "‘/’ or ‘.’ expected."
#: src/language/dictionary/mrsets.c:98
#, c-format
#: src/language/dictionary/mrsets.c:427
#, c-format
msgid ""
-"Variables specified on MCGROUP should have the same categories, but %s and %"
-"s (and possibly others) in multiple category group %s have different value "
+"Variables specified on MCGROUP should have the same categories, but %s and "
+"%s (and possibly others) in multiple category group %s have different value "
"labels for value %s."
msgstr ""
#: src/language/dictionary/mrsets.c:568
#: src/language/dictionary/split-file.c:84
-#: src/language/dictionary/sys-file-info.c:344
-#: src/language/dictionary/sys-file-info.c:583
+#: src/language/dictionary/sys-file-info.c:343
+#: src/language/dictionary/sys-file-info.c:582
#: src/ui/gui/psppire-var-sheet.c:538 src/ui/gui/psppire-var-store.c:836
-#: src/ui/gui/crosstabs.ui:292 src/ui/gui/psppire.ui:1924
+#: src/ui/gui/compute.ui:467 src/ui/gui/crosstabs.ui:292
msgid "Label"
msgstr ""
msgid "Format type %s may not be used with a string variable."
msgstr ""
-#: src/language/dictionary/rename-variables.c:49
+#: src/language/dictionary/rename-variables.c:48
msgid ""
"RENAME VARS may not be used after TEMPORARY. Temporary transformations will "
"be made permanent."
msgstr ""
-#: src/language/dictionary/rename-variables.c:59
+#: src/language/dictionary/rename-variables.c:58
msgid "`(' expected."
-msgstr ""
+msgstr "‘(’ expected."
-#: src/language/dictionary/rename-variables.c:67
+#: src/language/dictionary/rename-variables.c:66
msgid "`=' expected between lists of new and old variable names."
-msgstr ""
+msgstr "‘=’ expected between lists of new and old variable names."
-#: src/language/dictionary/rename-variables.c:88
+#: src/language/dictionary/rename-variables.c:87
msgid "`)' expected after variable names."
-msgstr ""
+msgstr "‘)’ expected after variable names."
-#: src/language/dictionary/rename-variables.c:98
+#: src/language/dictionary/rename-variables.c:97
#, c-format
msgid "Renaming would duplicate variable name %s."
msgstr ""
#: src/language/dictionary/split-file.c:83
-#: src/language/dictionary/sys-file-info.c:429
-#: src/language/dictionary/sys-file-info.c:582
-#: src/language/stats/crosstabs.q:1214 src/language/stats/crosstabs.q:1241
-#: src/language/stats/crosstabs.q:1264 src/language/stats/crosstabs.q:1289
+#: src/language/dictionary/sys-file-info.c:428
+#: src/language/dictionary/sys-file-info.c:581
+#: src/language/stats/reliability.c:758 src/language/stats/reliability.c:769
+#: src/language/stats/crosstabs.q:1206 src/language/stats/crosstabs.q:1233
+#: src/language/stats/crosstabs.q:1256 src/language/stats/crosstabs.q:1281
#: src/language/stats/examine.q:1841 src/language/stats/frequencies.q:813
-#: src/language/stats/reliability.q:568 src/language/stats/reliability.q:579
msgid "Value"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:95
+#: src/language/dictionary/sys-file-info.c:94
msgid "File:"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:97 src/ui/gui/psppire.ui:1862
+#: src/language/dictionary/sys-file-info.c:96 src/ui/gui/compute.ui:405
#: src/ui/gui/recode.ui:859
msgid "Label:"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:101
+#: src/language/dictionary/sys-file-info.c:100
msgid "No label."
msgstr ""
-#: src/language/dictionary/sys-file-info.c:104
+#: src/language/dictionary/sys-file-info.c:103
msgid "Created:"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:107
+#: src/language/dictionary/sys-file-info.c:106
msgid "Integer Format:"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:111
-#: src/language/dictionary/sys-file-info.c:119
-#: src/language/dictionary/sys-file-info.c:124
-#: src/language/dictionary/sys-file-info.c:143
+#: src/language/dictionary/sys-file-info.c:110
+#: src/language/dictionary/sys-file-info.c:118
+#: src/language/dictionary/sys-file-info.c:123
+#: src/language/dictionary/sys-file-info.c:142
msgid "Unknown"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:112
+#: src/language/dictionary/sys-file-info.c:111
msgid "Real Format:"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:114
+#: src/language/dictionary/sys-file-info.c:113
msgid "IEEE 754 LE."
msgstr ""
-#: src/language/dictionary/sys-file-info.c:115
+#: src/language/dictionary/sys-file-info.c:114
msgid "IEEE 754 BE."
msgstr ""
-#: src/language/dictionary/sys-file-info.c:116
+#: src/language/dictionary/sys-file-info.c:115
msgid "VAX D."
msgstr ""
-#: src/language/dictionary/sys-file-info.c:117
+#: src/language/dictionary/sys-file-info.c:116
msgid "VAX G."
msgstr ""
-#: src/language/dictionary/sys-file-info.c:118
+#: src/language/dictionary/sys-file-info.c:117
msgid "IBM 390 Hex Long."
msgstr ""
-#: src/language/dictionary/sys-file-info.c:120 src/ui/gui/descriptives.ui:85
-#: src/ui/gui/factor.ui:173 src/ui/gui/recode.ui:960
+#: src/language/dictionary/sys-file-info.c:119 src/ui/gui/descriptives.ui:85
+#: src/ui/gui/factor.ui:181 src/ui/gui/recode.ui:960
msgid "Variables:"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:122
+#: src/language/dictionary/sys-file-info.c:121
msgid "Cases:"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:127
+#: src/language/dictionary/sys-file-info.c:126
msgid "Type:"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:128
-#: src/ui/gui/psppire-data-window.c:634
+#: src/language/dictionary/sys-file-info.c:127
+#: src/ui/gui/psppire-data-window.c:635
msgid "System File"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:129
+#: src/language/dictionary/sys-file-info.c:128
msgid "Weight:"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:134
+#: src/language/dictionary/sys-file-info.c:133
msgid "Not weighted."
msgstr ""
-#: src/language/dictionary/sys-file-info.c:136
+#: src/language/dictionary/sys-file-info.c:135
msgid "Mode:"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:138
+#: src/language/dictionary/sys-file-info.c:137
#, c-format
msgid "Compression %s."
msgstr ""
-#: src/language/dictionary/sys-file-info.c:138
+#: src/language/dictionary/sys-file-info.c:137
msgid "on"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:138
+#: src/language/dictionary/sys-file-info.c:137
msgid "off"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:141
+#: src/language/dictionary/sys-file-info.c:140
msgid "Charset:"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:151
-#: src/language/dictionary/sys-file-info.c:344
+#: src/language/dictionary/sys-file-info.c:150
+#: src/language/dictionary/sys-file-info.c:343
msgid "Description"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:152
-#: src/language/dictionary/sys-file-info.c:346
-#: src/language/dictionary/sys-file-info.c:663
+#: src/language/dictionary/sys-file-info.c:151
+#: src/language/dictionary/sys-file-info.c:345
+#: src/language/dictionary/sys-file-info.c:662
msgid "Position"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:199
+#: src/language/dictionary/sys-file-info.c:198
msgid "The active file does not have a file label."
msgstr ""
-#: src/language/dictionary/sys-file-info.c:202
+#: src/language/dictionary/sys-file-info.c:201
msgid "File label:"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:277
+#: src/language/dictionary/sys-file-info.c:276
msgid "No variables to display."
msgstr ""
-#: src/language/dictionary/sys-file-info.c:291
+#: src/language/dictionary/sys-file-info.c:290
msgid "Macros not supported."
msgstr ""
-#: src/language/dictionary/sys-file-info.c:300
+#: src/language/dictionary/sys-file-info.c:299
msgid "The active file dictionary does not contain any documents."
msgstr ""
-#: src/language/dictionary/sys-file-info.c:308
+#: src/language/dictionary/sys-file-info.c:307
msgid "Documents in the active file:"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:428
+#: src/language/dictionary/sys-file-info.c:427
msgid "Attribute"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:484
+#: src/language/dictionary/sys-file-info.c:483
#, c-format
msgid "Format: %s"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:491
+#: src/language/dictionary/sys-file-info.c:490
#, c-format
msgid "Print Format: %s"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:495
+#: src/language/dictionary/sys-file-info.c:494
#, c-format
msgid "Write Format: %s"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:508
+#: src/language/dictionary/sys-file-info.c:507
#, c-format
msgid "Measure: %s"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:509
+#: src/language/dictionary/sys-file-info.c:508
#: src/ui/gui/psppire-var-sheet.c:111
msgid "Nominal"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:510
+#: src/language/dictionary/sys-file-info.c:509
#: src/ui/gui/psppire-var-sheet.c:112
msgid "Ordinal"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:511
+#: src/language/dictionary/sys-file-info.c:510
#: src/ui/gui/psppire-var-sheet.c:113
msgid "Scale"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:514
+#: src/language/dictionary/sys-file-info.c:513
#, c-format
msgid "Display Alignment: %s"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:515
+#: src/language/dictionary/sys-file-info.c:514
#: src/ui/gui/psppire-var-sheet.c:104
msgid "Left"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:516
+#: src/language/dictionary/sys-file-info.c:515
#: src/ui/gui/psppire-var-sheet.c:106
msgid "Center"
msgstr "Centre"
-#: src/language/dictionary/sys-file-info.c:517
+#: src/language/dictionary/sys-file-info.c:516
#: src/ui/gui/psppire-var-sheet.c:105
msgid "Right"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:520
+#: src/language/dictionary/sys-file-info.c:519
#, c-format
msgid "Display Width: %d"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:534
+#: src/language/dictionary/sys-file-info.c:533
msgid "Missing Values: "
msgstr ""
-#: src/language/dictionary/sys-file-info.c:643
+#: src/language/dictionary/sys-file-info.c:642
msgid "No vectors defined."
msgstr ""
-#: src/language/dictionary/sys-file-info.c:662
+#: src/language/dictionary/sys-file-info.c:661
msgid "Vector"
msgstr ""
-#: src/language/dictionary/sys-file-info.c:665
+#: src/language/dictionary/sys-file-info.c:664
msgid "Print Format"
msgstr ""
-#: src/language/dictionary/value-labels.c:150
+#: src/language/dictionary/value-labels.c:149
msgid "Truncating value label to 60 characters."
msgstr ""
-#: src/language/dictionary/variable-label.c:51
-msgid "String expected for variable label."
-msgstr ""
-
-#: src/language/dictionary/variable-label.c:59
+#: src/language/dictionary/variable-label.c:58
msgid "Truncating variable label to 255 characters."
msgstr ""
msgid "Only USE ALL is currently implemented."
msgstr ""
-#: src/language/utilities/title.c:103
+#: src/language/utilities/host.c:85
#, c-format
-msgid " (Entered %s)"
+msgid "Couldn't fork: %s."
+msgstr ""
+
+#: src/language/utilities/host.c:100
+msgid "Interactive shell not supported on this platform."
+msgstr ""
+
+#: src/language/utilities/host.c:112
+msgid "Command shell not supported on this platform."
msgstr ""
-#: src/language/utilities/include.c:95
-msgid "Expecting BATCH or INTERACTIVE after SYNTAX."
+#: src/language/utilities/host.c:118
+#, c-format
+msgid "Error executing command: %s."
msgstr ""
-#: src/language/utilities/include.c:112
-msgid "Expecting YES or NO after CD."
+#: src/language/utilities/title.c:103
+#, c-format
+msgid " (Entered %s)"
msgstr ""
-#: src/language/utilities/include.c:129
-msgid "Expecting CONTINUE or STOP after ERROR."
+#: src/language/utilities/include.c:94 src/language/utilities/include.c:112
+#: src/language/utilities/include.c:130
+#, c-format
+msgid "expecting %s or %s after %s"
msgstr ""
-#: src/language/utilities/include.c:136
+#: src/language/utilities/include.c:138
#, c-format
msgid "Unexpected token: `%s'."
-msgstr ""
+msgstr "Unexpected token: ‘%s’."
-#: src/language/utilities/include.c:181
+#: src/language/utilities/include.c:183
msgid "expecting file name"
msgstr ""
-#: src/language/utilities/include.c:193
+#: src/language/utilities/include.c:195
#, c-format
msgid "Can't find `%s' in include file search path."
-msgstr ""
+msgstr "Can’t find ‘%s’ in include file search path."
-#: src/language/utilities/include.c:201
+#: src/language/utilities/include.c:203
#, c-format
msgid "Unable to open `%s': %s."
-msgstr ""
+msgstr "Unable to open ‘%s’: %s."
-#: src/language/utilities/permissions.c:73
+#: src/language/utilities/permissions.c:76
#, c-format
msgid "Expecting %s or %s."
msgstr ""
-#: src/language/utilities/permissions.c:106
+#: src/language/utilities/permissions.c:109
#, c-format
msgid "Cannot stat %s: %s"
msgstr ""
-#: src/language/utilities/permissions.c:119
+#: src/language/utilities/permissions.c:122
#, c-format
msgid "Cannot change mode of %s: %s"
msgstr ""
-#: src/language/stats/aggregate.c:220
-msgid "while expecting COLUMNWISE"
+#: src/language/stats/aggregate.c:94
+msgid "Sum of values"
+msgstr ""
+
+#: src/language/stats/aggregate.c:95
+msgid "Mean average"
+msgstr ""
+
+#: src/language/stats/aggregate.c:96
+msgid "Median average"
+msgstr ""
+
+#: src/language/stats/aggregate.c:97 src/ui/gui/descriptives-dialog.c:41
+#: src/ui/gui/frequencies-dialog.c:42
+msgid "Standard deviation"
+msgstr ""
+
+#: src/language/stats/aggregate.c:98
+msgid "Maximum value"
+msgstr ""
+
+#: src/language/stats/aggregate.c:99
+msgid "Minimum value"
+msgstr ""
+
+#: src/language/stats/aggregate.c:100
+msgid "Percentage greater than"
+msgstr ""
+
+#: src/language/stats/aggregate.c:101
+msgid "Percentage less than"
+msgstr ""
+
+#: src/language/stats/aggregate.c:102
+msgid "Percentage included in range"
+msgstr ""
+
+#: src/language/stats/aggregate.c:103
+msgid "Percentage excluded from range"
+msgstr ""
+
+#: src/language/stats/aggregate.c:104
+msgid "Fraction greater than"
+msgstr ""
+
+#: src/language/stats/aggregate.c:105
+msgid "Fraction less than"
+msgstr ""
+
+#: src/language/stats/aggregate.c:106
+msgid "Fraction included in range"
+msgstr ""
+
+#: src/language/stats/aggregate.c:107
+msgid "Fraction excluded from range"
+msgstr ""
+
+#: src/language/stats/aggregate.c:108
+msgid "Number of cases"
+msgstr ""
+
+#: src/language/stats/aggregate.c:109
+msgid "Number of cases (unweighted)"
+msgstr ""
+
+#: src/language/stats/aggregate.c:110
+msgid "Number of missing values"
+msgstr ""
+
+#: src/language/stats/aggregate.c:111
+msgid "Number of missing values (unweighted)"
+msgstr ""
+
+#: src/language/stats/aggregate.c:112
+msgid "First non-missing value"
+msgstr ""
+
+#: src/language/stats/aggregate.c:113
+msgid "Last non-missing value"
msgstr ""
-#: src/language/stats/aggregate.c:247
-msgid "expecting BREAK"
+#: src/language/stats/aggregate.c:225 src/language/data-io/get-data.c:461
+#, c-format
+msgid "expecting %s"
msgstr ""
-#: src/language/stats/aggregate.c:252
+#: src/language/stats/aggregate.c:256
msgid ""
"When PRESORTED is specified, specifying sorting directions with (A) or (D) "
"has no effect. Output data will be sorted the same way as the input data."
msgstr ""
-#: src/language/stats/aggregate.c:424
+#: src/language/stats/aggregate.c:450
msgid "expecting aggregation function"
msgstr ""
-#: src/language/stats/aggregate.c:442
+#: src/language/stats/aggregate.c:462
#, c-format
msgid "Unknown aggregation function %s."
msgstr ""
-#: src/language/stats/aggregate.c:498
+#: src/language/stats/aggregate.c:514
#, c-format
msgid "Missing argument %zu to %s."
msgstr ""
-#: src/language/stats/aggregate.c:507
+#: src/language/stats/aggregate.c:523
#, c-format
msgid "Arguments to %s must be of same type as source variables."
msgstr ""
-#: src/language/stats/aggregate.c:517 src/language/expressions/parse.c:885
-msgid "expecting `)'"
-msgstr ""
-
-#: src/language/stats/aggregate.c:529
+#: src/language/stats/aggregate.c:542
#, c-format
msgid ""
-"Number of source variables (%zu) does not match number of target variables (%"
-"zu)."
+"Number of source variables (%zu) does not match number of target variables "
+"(%zu)."
msgstr ""
-#: src/language/stats/aggregate.c:545
+#: src/language/stats/aggregate.c:558
#, c-format
msgid ""
"The value arguments passed to the %s function are out-of-order. They will "
"be treated as if they had been specified in the correct order."
msgstr ""
-#: src/language/stats/aggregate.c:615
+#: src/language/stats/aggregate.c:632
#, c-format
msgid ""
"Variable name %s is not unique within the aggregate file dictionary, which "
"contains the aggregate variables and the break variables."
msgstr ""
-#: src/language/stats/autorecode.c:116
+#: src/language/stats/autorecode.c:127
#, c-format
msgid "Source variable count (%zu) does not match target variable count (%zu)."
msgstr ""
-#: src/language/stats/autorecode.c:128
+#: src/language/stats/autorecode.c:139
#, c-format
msgid "Target variable %s duplicates existing variable %s."
msgstr ""
-#: src/language/stats/binomial.c:141
+#: src/language/stats/binomial.c:139
#, c-format
msgid "Variable %s is not dichotomous"
msgstr ""
-#: src/language/stats/binomial.c:192 src/ui/gui/binomial.ui:13
+#: src/language/stats/binomial.c:190 src/ui/gui/binomial.ui:13
msgid "Binomial Test"
msgstr ""
-#: src/language/stats/binomial.c:222
+#: src/language/stats/binomial.c:220
msgid "Group1"
msgstr ""
-#: src/language/stats/binomial.c:223
+#: src/language/stats/binomial.c:221
msgid "Group2"
msgstr ""
-#: src/language/stats/binomial.c:224 src/language/stats/chisquare.c:177
+#: src/language/stats/binomial.c:222 src/language/stats/chisquare.c:177
#: src/language/stats/chisquare.c:236 src/language/stats/factor.c:1464
-#: src/language/stats/sign.c:92 src/language/stats/wilcoxon.c:260
-#: src/ui/gui/crosstabs-dialog.c:60 src/language/stats/crosstabs.q:823
-#: src/language/stats/crosstabs.q:1151 src/language/stats/crosstabs.q:1528
-#: src/language/stats/examine.q:1105 src/language/stats/frequencies.q:871
-#: src/language/stats/oneway.q:302 src/language/stats/oneway.q:472
-#: src/language/stats/regression.q:291 src/language/stats/reliability.q:702
+#: src/language/stats/glm.c:343 src/language/stats/kruskal-wallis.c:294
+#: src/language/stats/oneway.c:622 src/language/stats/oneway.c:792
+#: src/language/stats/reliability.c:538 src/language/stats/sign.c:93
+#: src/language/stats/wilcoxon.c:255 src/ui/gui/crosstabs-dialog.c:60
+#: src/language/stats/crosstabs.q:815 src/language/stats/crosstabs.q:1143
+#: src/language/stats/crosstabs.q:1522 src/language/stats/examine.q:1105
+#: src/language/stats/frequencies.q:871 src/language/stats/regression.q:291
msgid "Total"
msgstr ""
-#: src/language/stats/binomial.c:257 src/language/stats/chisquare.c:199
-#: src/language/stats/crosstabs.q:1239 src/language/stats/crosstabs.q:1286
+#: src/language/stats/binomial.c:255 src/language/stats/chisquare.c:199
+#: src/language/stats/crosstabs.q:1231 src/language/stats/crosstabs.q:1278
msgid "Category"
msgstr ""
-#: src/language/stats/binomial.c:258 src/language/stats/correlations.c:119
-#: src/language/stats/correlations.c:227 src/language/stats/npar-summary.c:122
-#: src/language/stats/sign.c:72 src/language/stats/wilcoxon.c:243
-#: src/language/stats/crosstabs.q:830 src/language/stats/examine.q:1176
-#: src/language/stats/frequencies.q:1034 src/language/stats/oneway.q:385
-#: src/language/stats/reliability.q:705 src/language/stats/t-test.q:505
-#: src/language/stats/t-test.q:525 src/language/stats/t-test.q:625
-#: src/language/stats/t-test.q:1101
+#: src/language/stats/binomial.c:256 src/language/stats/correlations.c:119
+#: src/language/stats/correlations.c:227
+#: src/language/stats/kruskal-wallis.c:259
+#: src/language/stats/npar-summary.c:120 src/language/stats/oneway.c:692
+#: src/language/stats/reliability.c:541 src/language/stats/sign.c:72
+#: src/language/stats/wilcoxon.c:238 src/language/stats/crosstabs.q:822
+#: src/language/stats/examine.q:1176 src/language/stats/frequencies.q:1034
+#: src/language/stats/t-test.q:505 src/language/stats/t-test.q:525
+#: src/language/stats/t-test.q:625 src/language/stats/t-test.q:1101
msgid "N"
msgstr ""
-#: src/language/stats/binomial.c:259
+#: src/language/stats/binomial.c:257
msgid "Observed Prop."
msgstr ""
-#: src/language/stats/binomial.c:260
+#: src/language/stats/binomial.c:258
msgid "Test Prop."
msgstr ""
-#: src/language/stats/binomial.c:263
+#: src/language/stats/binomial.c:261 src/language/stats/crosstabs.q:1211
+#: src/language/stats/crosstabs.q:1213
#, c-format
msgid "Exact Sig. (%d-tailed)"
msgstr ""
msgid "Frequencies"
msgstr ""
-#: src/language/stats/chisquare.c:249 src/language/stats/sign.c:111
-#: src/language/stats/wilcoxon.c:309
+#: src/language/stats/chisquare.c:249 src/language/stats/kruskal-wallis.c:312
+#: src/language/stats/sign.c:112 src/language/stats/wilcoxon.c:304
msgid "Test Statistics"
msgstr ""
-#: src/language/stats/chisquare.c:263
+#: src/language/stats/chisquare.c:263 src/language/stats/kruskal-wallis.c:315
msgid "Chi-Square"
msgstr ""
-#: src/language/stats/chisquare.c:264 src/language/stats/crosstabs.q:1215
-#: src/language/stats/oneway.q:275 src/language/stats/oneway.q:685
+#: src/language/stats/chisquare.c:264 src/language/stats/glm.c:308
+#: src/language/stats/kruskal-wallis.c:318 src/language/stats/oneway.c:599
+#: src/language/stats/oneway.c:1008 src/language/stats/crosstabs.q:1207
#: src/language/stats/regression.q:284 src/language/stats/t-test.q:752
#: src/language/stats/t-test.q:923 src/language/stats/t-test.q:1010
msgid "df"
msgstr ""
-#: src/language/stats/chisquare.c:265
+#: src/language/stats/chisquare.c:265 src/language/stats/kruskal-wallis.c:321
msgid "Asymp. Sig."
msgstr ""
-#: src/language/stats/correlations.c:96 src/language/stats/factor.c:1722
-#: src/language/stats/npar-summary.c:108
+#: src/language/stats/correlations.c:96 src/language/stats/factor.c:1728
+#: src/language/stats/npar-summary.c:106
msgid "Descriptive Statistics"
msgstr ""
#: src/language/stats/correlations.c:117 src/language/stats/descriptives.c:101
-#: src/language/stats/factor.c:1743 src/language/stats/npar-summary.c:125
-#: src/ui/gui/descriptives-dialog.c:40 src/ui/gui/frequencies-dialog.c:41
-#: src/language/stats/examine.q:1444 src/language/stats/frequencies.q:105
-#: src/language/stats/oneway.q:386 src/language/stats/t-test.q:506
+#: src/language/stats/factor.c:1749 src/language/stats/npar-summary.c:123
+#: src/language/stats/oneway.c:693 src/ui/gui/descriptives-dialog.c:40
+#: src/ui/gui/frequencies-dialog.c:41 src/language/stats/examine.q:1444
+#: src/language/stats/frequencies.q:105 src/language/stats/t-test.q:506
#: src/language/stats/t-test.q:526 src/language/stats/t-test.q:624
#: src/language/stats/t-test.q:917
msgid "Mean"
msgstr ""
-#: src/language/stats/correlations.c:118 src/language/stats/factor.c:1744
-#: src/language/stats/npar-summary.c:128 src/language/stats/examine.q:1479
-#: src/language/stats/oneway.q:387 src/language/stats/t-test.q:507
+#: src/language/stats/correlations.c:118 src/language/stats/factor.c:1750
+#: src/language/stats/npar-summary.c:126 src/language/stats/oneway.c:694
+#: src/language/stats/examine.q:1479 src/language/stats/t-test.q:507
#: src/language/stats/t-test.q:527 src/language/stats/t-test.q:626
#: src/language/stats/t-test.q:918
msgid "Std. Deviation"
msgid "Pearson Correlation"
msgstr ""
-#: src/language/stats/correlations.c:218 src/language/stats/oneway.q:686
+#: src/language/stats/correlations.c:218 src/language/stats/oneway.c:1009
#: src/language/stats/t-test.q:753 src/language/stats/t-test.q:924
#: src/language/stats/t-test.q:1011
msgid "Sig. (2-tailed)"
msgstr ""
-#: src/language/stats/correlations.c:218
+#: src/language/stats/correlations.c:218 src/language/stats/factor.c:1634
msgid "Sig. (1-tailed)"
msgstr ""
msgid "Range"
msgstr ""
-#: src/language/stats/descriptives.c:110 src/language/stats/npar-summary.c:131
-#: src/ui/gui/descriptives-dialog.c:42 src/ui/gui/frequencies-dialog.c:43
-#: src/language/stats/examine.q:1484 src/language/stats/frequencies.q:116
-#: src/language/stats/oneway.q:400
+#: src/language/stats/descriptives.c:110 src/language/stats/npar-summary.c:129
+#: src/language/stats/oneway.c:707 src/ui/gui/descriptives-dialog.c:42
+#: src/ui/gui/frequencies-dialog.c:43 src/language/stats/examine.q:1484
+#: src/language/stats/frequencies.q:116
msgid "Minimum"
msgstr ""
-#: src/language/stats/descriptives.c:111 src/language/stats/npar-summary.c:134
-#: src/ui/gui/descriptives-dialog.c:43 src/ui/gui/frequencies-dialog.c:44
-#: src/language/stats/examine.q:1489 src/language/stats/frequencies.q:117
-#: src/language/stats/oneway.q:401
+#: src/language/stats/descriptives.c:111 src/language/stats/npar-summary.c:132
+#: src/language/stats/oneway.c:708 src/ui/gui/descriptives-dialog.c:43
+#: src/ui/gui/frequencies-dialog.c:44 src/language/stats/examine.q:1489
+#: src/language/stats/frequencies.q:117
msgid "Maximum"
msgstr ""
msgid "Mapping of variables to corresponding Z-scores."
msgstr ""
-#: src/language/stats/descriptives.c:559
+#: src/language/stats/descriptives.c:559 src/language/stats/glm.c:304
msgid "Source"
msgstr ""
msgid "Valid cases = %g; cases with missing value(s) = %g."
msgstr ""
-#: src/language/stats/sort-cases.c:64
-msgid "Buffer limit must be at least 2."
+#: src/language/stats/factor.c:805
+msgid "Factor analysis on a single variable is not useful."
msgstr ""
-#: src/language/stats/sort-criteria.c:74
-msgid "`A' or `D' expected inside parentheses."
-msgstr ""
-
-#: src/language/stats/sort-criteria.c:79
-msgid "`)' expected."
-msgstr ""
-
-#: src/language/stats/sort-criteria.c:92
-#, c-format
-msgid "Variable %s specified twice in sort criteria."
-msgstr ""
-
-#: src/language/stats/factor.c:805
-msgid "Factor analysis on a single variable is not useful."
-msgstr ""
-
-#: src/language/stats/factor.c:1208
-msgid "Component Number"
+#: src/language/stats/factor.c:1208
+msgid "Component Number"
msgstr ""
#: src/language/stats/factor.c:1208
msgid "Correlation Matrix"
msgstr ""
-#: src/language/stats/factor.c:1634
-msgid "Sig. 1-tailed"
-msgstr ""
-
#: src/language/stats/factor.c:1668
msgid "Determinant"
msgstr ""
-#: src/language/stats/factor.c:1745
+#: src/language/stats/factor.c:1699
+msgid ""
+"The dataset contains no complete observations. No analysis will be performed."
+msgstr ""
+
+#: src/language/stats/factor.c:1751
msgid "Analysis N"
msgstr ""
-#: src/language/stats/factor.c:1778
+#: src/language/stats/factor.c:1784
msgid ""
"The FACTOR criteria result in zero factors extracted. Therefore no analysis "
"will be performed."
msgstr ""
-#: src/language/stats/factor.c:1784
+#: src/language/stats/factor.c:1790
msgid ""
"The FACTOR criteria result in more factors than variables, which is not "
"meaningful. No analysis will be performed."
msgstr ""
-#: src/language/stats/factor.c:1867
+#: src/language/stats/factor.c:1873
msgid "Component Matrix"
msgstr ""
-#: src/language/stats/factor.c:1867
+#: src/language/stats/factor.c:1873
msgid "Factor Matrix"
msgstr ""
-#: src/language/stats/factor.c:1873
+#: src/language/stats/factor.c:1879
msgid "Rotated Component Matrix"
msgstr ""
-#: src/language/stats/factor.c:1873
+#: src/language/stats/factor.c:1879
msgid "Rotated Factor Matrix"
msgstr ""
msgid "Could not create temporary file for FLIP."
msgstr ""
-#: src/language/stats/flip.c:327
+#: src/language/stats/flip.c:325
#, c-format
msgid "Error rewinding FLIP file: %s."
msgstr ""
-#: src/language/stats/flip.c:334
+#: src/language/stats/flip.c:332
msgid "Error creating FLIP source file."
msgstr ""
-#: src/language/stats/flip.c:347
+#: src/language/stats/flip.c:345
#, c-format
msgid "Error reading FLIP file: %s."
msgstr ""
-#: src/language/stats/flip.c:349
+#: src/language/stats/flip.c:347
msgid "Unexpected end of file reading FLIP file."
msgstr ""
-#: src/language/stats/flip.c:365
+#: src/language/stats/flip.c:363
#, c-format
msgid "Error seeking FLIP source file: %s."
msgstr ""
-#: src/language/stats/flip.c:373
+#: src/language/stats/flip.c:371
#, c-format
msgid "Error writing FLIP source file: %s."
msgstr ""
-#: src/language/stats/flip.c:384
-#, c-format
-msgid "Error closing FLIP source file: %s."
-msgstr ""
-
-#: src/language/stats/flip.c:392
+#: src/language/stats/flip.c:386
#, c-format
msgid "Error rewinding FLIP source file: %s."
msgstr ""
-#: src/language/stats/flip.c:426
+#: src/language/stats/flip.c:419
#, c-format
msgid "Error reading FLIP temporary file: %s."
msgstr ""
-#: src/language/stats/flip.c:429
+#: src/language/stats/flip.c:422
msgid "Unexpected end of file reading FLIP temporary file."
msgstr ""
-#: src/language/stats/npar-summary.c:141 src/language/stats/examine.q:1996
+#: src/language/stats/glm.c:108
+msgid "Multivariate analysis is not yet implemented"
+msgstr ""
+
+#: src/language/stats/glm.c:291
+msgid "Tests of Between-Subjects Effects"
+msgstr ""
+
+#. TRANSLATORS: The parameter is a roman numeral
+#: src/language/stats/glm.c:307
+#, c-format
+msgid "Type %s Sum of Squares"
+msgstr ""
+
+#: src/language/stats/glm.c:309 src/language/stats/oneway.c:600
+#: src/language/stats/regression.q:285
+msgid "Mean Square"
+msgstr ""
+
+#: src/language/stats/glm.c:310 src/language/stats/oneway.c:601
+#: src/language/stats/regression.q:286 src/language/stats/t-test.q:749
+msgid "F"
+msgstr ""
+
+#: src/language/stats/glm.c:311 src/language/stats/t-test.q:750
+#: src/language/stats/t-test.q:1103
+msgid "Sig."
+msgstr ""
+
+#: src/language/stats/glm.c:314
+msgid "Corrected Model"
+msgstr ""
+
+#: src/language/stats/glm.c:323
+msgid "Intercept"
+msgstr ""
+
+#: src/language/stats/glm.c:337
+msgid "Error"
+msgstr ""
+
+#: src/language/stats/glm.c:350
+msgid "Corrected Total"
+msgstr ""
+
+#: src/language/stats/kruskal-wallis.c:244 src/language/stats/wilcoxon.c:225
+msgid "Ranks"
+msgstr ""
+
+#: src/language/stats/kruskal-wallis.c:258 src/language/stats/wilcoxon.c:239
+msgid "Mean Rank"
+msgstr ""
+
+#: src/language/stats/npar.c:233 src/language/stats/npar.c:260
+#, c-format
+msgid "The %s subcommand may be given only once."
+msgstr ""
+
+#: src/language/stats/npar.c:343
+msgid "NPAR subcommand not currently implemented."
+msgstr ""
+
+#: src/language/stats/npar.c:496
+#, c-format
+msgid ""
+"The specified value of HI (%d) is lower than the specified value of LO (%d)"
+msgstr ""
+
+#: src/language/stats/npar.c:551
+#, c-format
+msgid ""
+"%d expected values were given, but the specified range (%d-%d) requires "
+"exactly %d values."
+msgstr ""
+
+#: src/language/stats/npar.c:690 src/language/stats/t-test.q:380
+#, c-format
+msgid ""
+"PAIRED was specified but the number of variables preceding WITH (%zu) did "
+"not match the number following (%zu)."
+msgstr ""
+
+#: src/language/stats/npar-summary.c:139 src/language/stats/examine.q:1996
#: src/language/stats/examine.q:2013 src/language/stats/frequencies.q:1050
#: src/ui/gui/examine.ui:345
msgid "Percentiles"
msgstr ""
-#: src/language/stats/npar-summary.c:145
+#: src/language/stats/npar-summary.c:143
msgid "25th"
msgstr ""
-#: src/language/stats/npar-summary.c:148
+#: src/language/stats/npar-summary.c:146
msgid "50th (Median)"
msgstr ""
-#: src/language/stats/npar-summary.c:151
+#: src/language/stats/npar-summary.c:149
msgid "75th"
msgstr ""
-#: src/language/stats/roc.c:935
-msgid "Area Under the Curve"
+#: src/language/stats/oneway.c:548
+msgid "Number of contrast coefficients must equal the number of groups"
msgstr ""
-#: src/language/stats/roc.c:937
+#: src/language/stats/oneway.c:557
#, c-format
-msgid "Area Under the Curve (%s)"
+msgid "Coefficients for contrast %zu do not total zero"
msgstr ""
-#: src/language/stats/roc.c:942
-msgid "Area"
+#: src/language/stats/oneway.c:598 src/language/stats/regression.q:283
+msgid "Sum of Squares"
+msgstr ""
+
+#: src/language/stats/oneway.c:602 src/language/stats/oneway.c:847
+#: src/language/stats/regression.q:201 src/language/stats/regression.q:287
+msgid "Significance"
msgstr ""
-#: src/language/stats/roc.c:955 src/language/stats/examine.q:1641
-#: src/language/stats/oneway.q:388 src/language/stats/oneway.q:683
+#: src/language/stats/oneway.c:620
+msgid "Between Groups"
+msgstr ""
+
+#: src/language/stats/oneway.c:621
+msgid "Within Groups"
+msgstr ""
+
+#: src/language/stats/oneway.c:654 src/language/stats/regression.q:312
+msgid "ANOVA"
+msgstr ""
+
+#: src/language/stats/oneway.c:695 src/language/stats/oneway.c:1006
+#: src/language/stats/roc.c:975 src/language/stats/examine.q:1641
#: src/language/stats/regression.q:198
msgid "Std. Error"
msgstr ""
-#: src/language/stats/roc.c:956
-msgid "Asymptotic Sig."
+#: src/language/stats/oneway.c:701 src/language/stats/examine.q:1449
+#, c-format
+msgid "%g%% Confidence Interval for Mean"
msgstr ""
-#: src/language/stats/roc.c:958 src/language/stats/examine.q:1455
-#: src/language/stats/oneway.q:397
+#: src/language/stats/oneway.c:704 src/language/stats/roc.c:978
+#: src/language/stats/examine.q:1455
msgid "Lower Bound"
msgstr ""
-#: src/language/stats/roc.c:959 src/language/stats/examine.q:1460
-#: src/language/stats/oneway.q:398
+#: src/language/stats/oneway.c:705 src/language/stats/roc.c:979
+#: src/language/stats/examine.q:1460
msgid "Upper Bound"
msgstr ""
-#: src/language/stats/roc.c:963
+#: src/language/stats/oneway.c:710 src/language/stats/examine.q:1635
+#: src/ui/gui/descriptives.ui:8 src/ui/gui/examine.ui:319
+msgid "Descriptives"
+msgstr ""
+
+#: src/language/stats/oneway.c:844
+msgid "Levene Statistic"
+msgstr ""
+
+#: src/language/stats/oneway.c:845
+msgid "df1"
+msgstr ""
+
+#: src/language/stats/oneway.c:846
+msgid "df2"
+msgstr ""
+
+#: src/language/stats/oneway.c:849
+msgid "Test of Homogeneity of Variances"
+msgstr ""
+
+#: src/language/stats/oneway.c:922
+msgid "Contrast Coefficients"
+msgstr ""
+
+#: src/language/stats/oneway.c:924 src/language/stats/oneway.c:1004
+msgid "Contrast"
+msgstr ""
+
+#: src/language/stats/oneway.c:1002
+msgid "Contrast Tests"
+msgstr ""
+
+#: src/language/stats/oneway.c:1005
+msgid "Value of Contrast"
+msgstr ""
+
+#: src/language/stats/oneway.c:1007 src/language/stats/regression.q:200
+#: src/language/stats/t-test.q:751 src/language/stats/t-test.q:922
+#: src/language/stats/t-test.q:1009
+msgid "t"
+msgstr ""
+
+#: src/language/stats/oneway.c:1059
+msgid "Assume equal variances"
+msgstr ""
+
+#: src/language/stats/oneway.c:1063
+msgid "Does not assume equal"
+msgstr ""
+
+#: src/language/stats/reliability.c:146
+msgid "Reliabilty on a single variable is not useful."
+msgstr ""
+
+#: src/language/stats/reliability.c:506 src/language/stats/examine.q:1159
+msgid "Case Processing Summary"
+msgstr ""
+
+#: src/language/stats/reliability.c:529 src/language/stats/crosstabs.q:812
+#: src/language/stats/examine.q:1164
+msgid "Cases"
+msgstr ""
+
+#: src/language/stats/reliability.c:532 src/language/stats/crosstabs.q:813
+#: src/language/stats/examine.q:1103 src/language/stats/frequencies.q:1035
+msgid "Valid"
+msgstr ""
+
+#: src/language/stats/reliability.c:535
+msgid "Excluded"
+msgstr ""
+
+#: src/language/stats/reliability.c:543
+msgid "%"
+msgstr ""
+
+#: src/language/stats/reliability.c:588
+msgid "Item-Total Statistics"
+msgstr ""
+
+#: src/language/stats/reliability.c:610
+msgid "Scale Mean if Item Deleted"
+msgstr ""
+
+#: src/language/stats/reliability.c:613
+msgid "Scale Variance if Item Deleted"
+msgstr ""
+
+#: src/language/stats/reliability.c:616
+msgid "Corrected Item-Total Correlation"
+msgstr ""
+
+#: src/language/stats/reliability.c:619
+msgid "Cronbach's Alpha if Item Deleted"
+msgstr ""
+
+#: src/language/stats/reliability.c:693
+msgid "Reliability Statistics"
+msgstr ""
+
+#: src/language/stats/reliability.c:733 src/language/stats/reliability.c:752
+msgid "Cronbach's Alpha"
+msgstr ""
+
+#: src/language/stats/reliability.c:736 src/language/stats/reliability.c:761
+#: src/language/stats/reliability.c:772
+msgid "N of Items"
+msgstr ""
+
+#: src/language/stats/reliability.c:755
+msgid "Part 1"
+msgstr ""
+
+#: src/language/stats/reliability.c:766
+msgid "Part 2"
+msgstr ""
+
+#: src/language/stats/reliability.c:777
+msgid "Total N of Items"
+msgstr ""
+
+#: src/language/stats/reliability.c:780
+msgid "Correlation Between Forms"
+msgstr ""
+
+#: src/language/stats/reliability.c:784
+msgid "Spearman-Brown Coefficient"
+msgstr ""
+
+#: src/language/stats/reliability.c:787
+msgid "Equal Length"
+msgstr ""
+
+#: src/language/stats/reliability.c:790
+msgid "Unequal Length"
+msgstr ""
+
+#: src/language/stats/reliability.c:794
+msgid "Guttman Split-Half Coefficient"
+msgstr ""
+
+#: src/language/stats/roc.c:955
+msgid "Area Under the Curve"
+msgstr ""
+
+#: src/language/stats/roc.c:957
+#, c-format
+msgid "Area Under the Curve (%s)"
+msgstr ""
+
+#: src/language/stats/roc.c:962
+msgid "Area"
+msgstr ""
+
+#: src/language/stats/roc.c:976
+msgid "Asymptotic Sig."
+msgstr ""
+
+#: src/language/stats/roc.c:983
#, c-format
msgid "Asymp. %g%% Confidence Interval"
msgstr ""
-#: src/language/stats/roc.c:969
+#: src/language/stats/roc.c:989
msgid "Variable under test"
msgstr ""
-#: src/language/stats/roc.c:1028
+#: src/language/stats/roc.c:1048
msgid "Case Summary"
msgstr ""
-#: src/language/stats/roc.c:1048
+#: src/language/stats/roc.c:1068
msgid "Unweighted"
msgstr ""
-#: src/language/stats/roc.c:1049
+#: src/language/stats/roc.c:1069
msgid "Weighted"
msgstr ""
-#: src/language/stats/roc.c:1053
+#: src/language/stats/roc.c:1073
msgid "Valid N (listwise)"
msgstr ""
-#: src/language/stats/roc.c:1056
+#: src/language/stats/roc.c:1076
msgid "Positive"
msgstr ""
-#: src/language/stats/roc.c:1057
+#: src/language/stats/roc.c:1077
msgid "Negative"
msgstr ""
-#: src/language/stats/roc.c:1085
+#: src/language/stats/roc.c:1105
msgid "Coordinates of the Curve"
msgstr ""
-#: src/language/stats/roc.c:1087
+#: src/language/stats/roc.c:1107
#, c-format
msgid "Coordinates of the Curve (%s)"
msgstr ""
-#: src/language/stats/roc.c:1095
+#: src/language/stats/roc.c:1115
msgid "Test variable"
msgstr ""
-#: src/language/stats/roc.c:1097
+#: src/language/stats/roc.c:1117
msgid "Positive if greater than or equal to"
msgstr ""
-#: src/language/stats/roc.c:1098 src/output/charts/roc-chart-cairo.c:38
+#: src/language/stats/roc.c:1118 src/output/charts/roc-chart-cairo.c:38
msgid "Sensitivity"
msgstr ""
-#: src/language/stats/roc.c:1099 src/output/charts/roc-chart-cairo.c:37
+#: src/language/stats/roc.c:1119 src/output/charts/roc-chart-cairo.c:37
msgid "1 - Specificity"
msgstr ""
-#: src/language/stats/sign.c:89
+#: src/language/stats/sign.c:90
msgid "Negative Differences"
msgstr ""
-#: src/language/stats/sign.c:90
+#: src/language/stats/sign.c:91
msgid "Positive Differences"
msgstr ""
-#: src/language/stats/sign.c:91 src/language/stats/wilcoxon.c:259
+#: src/language/stats/sign.c:92 src/language/stats/wilcoxon.c:254
msgid "Ties"
msgstr ""
-#: src/language/stats/sign.c:130 src/language/stats/wilcoxon.c:327
+#: src/language/stats/sign.c:131 src/language/stats/wilcoxon.c:322
msgid "Exact Sig. (2-tailed)"
msgstr ""
-#: src/language/stats/sign.c:133 src/language/stats/wilcoxon.c:328
+#: src/language/stats/sign.c:134 src/language/stats/wilcoxon.c:323
msgid "Exact Sig. (1-tailed)"
msgstr ""
-#: src/language/stats/sign.c:136 src/language/stats/wilcoxon.c:331
+#: src/language/stats/sign.c:137 src/language/stats/wilcoxon.c:326
msgid "Point Probability"
msgstr ""
-#: src/language/stats/wilcoxon.c:230
-msgid "Ranks"
+#: src/language/stats/sort-cases.c:64
+msgid "Buffer limit must be at least 2."
msgstr ""
-#: src/language/stats/wilcoxon.c:244
-msgid "Mean Rank"
+#: src/language/stats/sort-criteria.c:74
+msgid "`A' or `D' expected inside parentheses."
+msgstr "‘A’ or ‘D’ expected inside parentheses."
+
+#: src/language/stats/sort-criteria.c:79
+msgid "`)' expected."
+msgstr "‘)’ expected."
+
+#: src/language/stats/sort-criteria.c:92
+#, c-format
+msgid "Variable %s specified twice in sort criteria."
msgstr ""
-#: src/language/stats/wilcoxon.c:245
+#: src/language/stats/wilcoxon.c:240
msgid "Sum of Ranks"
msgstr ""
-#: src/language/stats/wilcoxon.c:257
+#: src/language/stats/wilcoxon.c:252
msgid "Negative Ranks"
msgstr ""
-#: src/language/stats/wilcoxon.c:258
+#: src/language/stats/wilcoxon.c:253
msgid "Positive Ranks"
msgstr ""
-#: src/language/stats/wilcoxon.c:322
+#: src/language/stats/wilcoxon.c:317
msgid "Z"
msgstr ""
-#: src/language/stats/wilcoxon.c:323
+#: src/language/stats/wilcoxon.c:318 src/language/stats/crosstabs.q:1209
msgid "Asymp. Sig. (2-tailed)"
msgstr ""
msgstr ""
#: src/language/data-io/data-list.c:368 src/language/data-io/data-list.c:457
-#: src/language/data-io/get-data.c:530
+#: src/language/data-io/get-data.c:529
#, c-format
msgid "%s is a duplicate variable name."
msgstr ""
msgid "Cannot place variable %s on record %d when RECORDS=%d is specified."
msgstr ""
-#: src/language/data-io/data-parser.c:460
-#: src/language/data-io/data-parser.c:469
+#: src/language/data-io/data-parser.c:458
+#: src/language/data-io/data-parser.c:467
msgid "Quoted string extends beyond end of line."
msgstr ""
-#: src/language/data-io/data-parser.c:525
+#: src/language/data-io/data-parser.c:515
+#, c-format
+msgid "Data for variable %s is not valid as format %s: %s"
+msgstr ""
+
+#: src/language/data-io/data-parser.c:544
#, c-format
msgid "Partial case of %d of %d records discarded."
msgstr ""
-#: src/language/data-io/data-parser.c:572
+#: src/language/data-io/data-parser.c:601
#, c-format
msgid "Partial case discarded. The first variable missing was %s."
msgstr ""
-#: src/language/data-io/data-parser.c:610
+#: src/language/data-io/data-parser.c:643
#, c-format
msgid ""
"Missing value(s) for all variables from %s onward. These will be filled "
"with the system-missing value or blanks, as appropriate."
msgstr ""
-#: src/language/data-io/data-parser.c:630
+#: src/language/data-io/data-parser.c:663
msgid "Record ends in data not part of any field."
msgstr ""
-#: src/language/data-io/data-parser.c:650 src/language/data-io/print.c:404
+#: src/language/data-io/data-parser.c:683 src/language/data-io/print.c:404
msgid "Record"
msgstr ""
-#: src/language/data-io/data-parser.c:651 src/language/data-io/print.c:405
+#: src/language/data-io/data-parser.c:684 src/language/data-io/print.c:405
#: src/ui/gui/psppire-var-sheet.c:541 src/ui/gui/psppire-var-store.c:839
#: src/ui/gui/crosstabs.ui:89
msgid "Columns"
msgstr ""
-#: src/language/data-io/data-parser.c:652
-#: src/language/data-io/data-parser.c:689 src/language/data-io/print.c:406
+#: src/language/data-io/data-parser.c:685
+#: src/language/data-io/data-parser.c:722 src/language/data-io/print.c:406
msgid "Format"
msgstr ""
-#: src/language/data-io/data-parser.c:670
+#: src/language/data-io/data-parser.c:703
#, c-format
msgid "Reading %d record from %s."
msgid_plural "Reading %d records from %s."
msgstr[0] ""
msgstr[1] ""
-#: src/language/data-io/data-parser.c:704
+#: src/language/data-io/data-parser.c:737
#, c-format
msgid "Reading free-form data from %s."
msgstr ""
#: src/language/data-io/data-reader.c:149
#, c-format
-msgid "Could not open \"%s\" for reading as a data file: %s."
-msgstr ""
+msgid "Could not open `%s' for reading as a data file: %s."
+msgstr "Could not open ‘%s’ for reading as a data file: %s."
#: src/language/data-io/data-reader.c:191
msgid ""
msgid "Attempt to read beyond END DATA."
msgstr ""
-#: src/language/data-io/data-reader.c:707
+#: src/language/data-io/data-reader.c:703
msgid ""
"This command is not valid here since the current input program does not "
"access the inline file."
msgstr ""
-#: src/language/data-io/data-writer.c:74
+#: src/language/data-io/data-writer.c:73
#, c-format
-msgid "An error occurred while opening \"%s\" for writing as a data file: %s."
-msgstr ""
+msgid "An error occurred while opening `%s' for writing as a data file: %s."
+msgstr "An error occurred while opening ‘%s’ for writing as a data file: %s."
-#: src/language/data-io/data-writer.c:191
+#: src/language/data-io/data-writer.c:190
#, c-format
-msgid "I/O error occurred writing data file \"%s\"."
-msgstr ""
+msgid "I/O error occurred writing data file `%s'."
+msgstr "I/O error occurred writing data file ‘%s’."
#: src/language/data-io/get-data.c:64
#, c-format
msgid "Unsupported TYPE %s"
msgstr ""
-#: src/language/data-io/get-data.c:260
+#: src/language/data-io/get-data.c:259
#, c-format
msgid ""
"%s is allowed only with %s arrangement, but %s arrangement was stated or "
"implied earlier in this command."
msgstr ""
-#: src/language/data-io/get-data.c:315
-msgid "expecting FIXED or DELIMITED"
-msgstr ""
-
-#: src/language/data-io/get-data.c:328
+#: src/language/data-io/get-data.c:327
msgid "Value of FIRSTCASE must be 1 or greater."
msgstr ""
-#: src/language/data-io/get-data.c:353
-msgid "expecting LINE or VARIABLES"
-msgstr ""
-
-#: src/language/data-io/get-data.c:366
+#: src/language/data-io/get-data.c:365
msgid "Value of FIXCASE must be at least 1."
msgstr ""
-#: src/language/data-io/get-data.c:386
+#: src/language/data-io/get-data.c:385
msgid "Value of FIRST must be at least 1."
msgstr ""
-#: src/language/data-io/get-data.c:398
+#: src/language/data-io/get-data.c:397
msgid "Value of PERCENT must be between 1 and 100."
msgstr ""
-#: src/language/data-io/get-data.c:447
+#: src/language/data-io/get-data.c:446
msgid ""
"In compatible syntax mode, the QUALIFIER string must contain exactly one "
"character."
msgstr ""
-#: src/language/data-io/get-data.c:462
-msgid "expecting VARIABLES"
-msgstr ""
-
-#: src/language/data-io/get-data.c:484
+#: src/language/data-io/get-data.c:483
#: src/language/data-io/placement-parser.c:378
#, c-format
msgid ""
"Data fields must be listed in order of increasing record number."
msgstr ""
-#: src/language/data-io/get-data.c:493
+#: src/language/data-io/get-data.c:492
#, c-format
msgid ""
"The record number specified, %ld, exceeds the number of records per case "
"specified on FIXCASE, %d."
msgstr ""
-#: src/language/data-io/get.c:99
-msgid "expecting COMM or TAPE"
-msgstr ""
-
#: src/language/data-io/inpt-pgm.c:130
msgid "Unexpected end-of-file within INPUT PROGRAM."
msgstr ""
msgid "Input program did not create any variables."
msgstr ""
-#: src/language/data-io/inpt-pgm.c:288
-msgid "COLUMN subcommand multiply specified."
-msgstr ""
-
#: src/language/data-io/inpt-pgm.c:338
msgid ""
"REREAD: Column numbers must be positive finite numbers. Column set to 1."
msgstr[0] ""
msgstr[1] ""
-#: src/language/data-io/save.c:223 src/language/data-io/save.c:238
-#: src/language/data-io/save.c:266
+#: src/language/data-io/save-translate.c:164
+#: src/language/data-io/save-translate.c:178
#, c-format
-msgid "expecting %s or %s"
+msgid "The %s string must contain exactly one character."
msgstr ""
+#: src/language/data-io/save-translate.c:248
+#, c-format
+msgid "Output file `%s' exists but REPLACE was not specified."
+msgstr "Output file ‘%s’ exists but REPLACE was not specified."
+
#: src/language/data-io/trim.c:88
#, c-format
msgid ""
"Cannot rename %s as %s because there already exists a variable named %s. To "
"rename variables with overlapping names, use a single RENAME subcommand such "
-"as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
+"as `/RENAME (A=B)(B=C)(C=A)', or equivalently, `/RENAME (A B C=B C A)'."
msgstr ""
#: src/language/data-io/trim.c:114
msgid "`=' expected after variable list."
-msgstr ""
+msgstr "‘=’ expected after variable list."
#: src/language/data-io/trim.c:122
#, c-format
msgid "Cannot DROP all variables from dictionary."
msgstr ""
-#: src/language/expressions/evaluate.c:155
+#: src/language/expressions/evaluate.c:149
msgid "expecting number or string"
msgstr ""
-#: src/language/expressions/evaluate.c:169
+#: src/language/expressions/evaluate.c:163
#, c-format
msgid "Duplicate variable name %s."
msgstr ""
-#: src/language/expressions/helpers.c:51
+#: src/language/expressions/helpers.c:38
msgid ""
"One of the arguments to a DATE function is not an integer. The result will "
"be system-missing."
msgstr ""
-#: src/language/expressions/helpers.c:73
+#: src/language/expressions/helpers.c:66
msgid ""
"The week argument to DATE.WKYR is not an integer. The result will be system-"
"missing."
msgstr ""
-#: src/language/expressions/helpers.c:79
+#: src/language/expressions/helpers.c:72
msgid ""
"The week argument to DATE.WKYR is outside the acceptable range of 1 to 53. "
"The result will be system-missing."
msgstr ""
-#: src/language/expressions/helpers.c:101
+#: src/language/expressions/helpers.c:94
msgid ""
"The day argument to DATE.YRDAY is not an integer. The result will be system-"
"missing."
msgstr ""
-#: src/language/expressions/helpers.c:107
+#: src/language/expressions/helpers.c:100
msgid ""
"The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366. "
"The result will be system-missing."
msgstr ""
-#: src/language/expressions/helpers.c:129
+#: src/language/expressions/helpers.c:122
msgid ""
"The year argument to YRMODA is greater than 47516. The result will be "
"system-missing."
msgstr ""
-#: src/language/expressions/helpers.c:182
+#. TRANSLATORS: Don't translate the the actual unit names `weeks', `days' etc
+#. They must remain in their original English.
+#: src/language/expressions/helpers.c:177
#, c-format
msgid ""
-"Unrecognized date unit \"%.*s\". Valid date units are \"years\", \"quarters"
-"\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"."
+"Unrecognized date unit `%.*s'. Valid date units are `years', `quarters', "
+"`months', `weeks', `days', `hours', `minutes', and `seconds'."
msgstr ""
-"Unrecognised date unit \"%.*s\". Valid date units are \"years\", \"quarters"
-"\"\n"
-"\"\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds"
-"\"."
+"Unrecognised date unit `%.*s'. Valid date units are `years', `quarters', "
+"`months', `weeks', `days', `hours', `minutes', and `seconds'."
-#: src/language/expressions/helpers.c:332
-msgid ""
-"Invalid DATESUM method. Valid choices are \"closest\" and \"rollover\"."
+#: src/language/expressions/helpers.c:327
+msgid "Invalid DATESUM method. Valid choices are `closest' and `rollover'."
msgstr ""
#: src/language/expressions/parse.c:259
"Type mismatch: expression has %s type, but a string value is required here."
msgstr ""
-#: src/language/expressions/parse.c:427
+#: src/language/expressions/parse.c:433
#, c-format
msgid "Type mismatch while applying %s operator: cannot convert %s to %s."
msgstr ""
-#: src/language/expressions/parse.c:643
+#: src/language/expressions/parse.c:649
msgid ""
-"Chaining relational operators (e.g. \"a < b < c\") will not produce the "
+"Chaining relational operators (e.g. `a < b < c') will not produce the "
"mathematically expected result. Use the AND logical operator to fix the "
-"problem (e.g. \"a < b AND b < c\"). If chaining is really intended, "
-"parentheses will disable this warning (e.g. \"(a < b) < c\".)"
+"problem (e.g. `a < b AND b < c'). If chaining is really intended, "
+"parentheses will disable this warning (e.g. `(a < b) < c'.)"
msgstr ""
-#: src/language/expressions/parse.c:744
+#: src/language/expressions/parse.c:750
msgid ""
-"The exponentiation operator (\"**\") is left-associative, even though right-"
-"associative semantics are more useful. That is, \"a**b**c\" equals \"(a**b)"
-"**c\", not as \"a**(b**c)\". To disable this warning, insert parentheses."
+"The exponentiation operator (`**') is left-associative, even though right-"
+"associative semantics are more useful. That is, `a**b**c' equals `(a**b)"
+"**c', not as `a**(b**c)'. To disable this warning, insert parentheses."
msgstr ""
-#: src/language/expressions/parse.c:809
+#: src/language/expressions/parse.c:815
#, c-format
msgid "Unknown system variable %s."
msgstr ""
-#: src/language/expressions/parse.c:857
+#: src/language/expressions/parse.c:863
#, c-format
msgid "Unknown identifier %s."
msgstr ""
-#: src/language/expressions/parse.c:892
-msgid "in expression"
-msgstr ""
-
-#: src/language/expressions/parse.c:1073
+#: src/language/expressions/parse.c:1076
#, c-format
msgid "%s must have at least %d arguments in list."
msgstr ""
-#: src/language/expressions/parse.c:1082
+#: src/language/expressions/parse.c:1085
#, c-format
-msgid "%s must have even number of arguments in list."
+msgid "%s must have an even number of arguments in list."
msgstr ""
-#: src/language/expressions/parse.c:1085
+#: src/language/expressions/parse.c:1088
#, c-format
msgid "%s must have multiple of %d arguments in list."
msgstr ""
-#: src/language/expressions/parse.c:1095
+#: src/language/expressions/parse.c:1098
#, c-format
msgid "%s function does not accept a minimum valid argument count."
msgstr ""
-#: src/language/expressions/parse.c:1104
+#: src/language/expressions/parse.c:1107
#, c-format
msgid "%s requires at least %d valid arguments in list."
msgstr ""
-#: src/language/expressions/parse.c:1110
+#: src/language/expressions/parse.c:1113
#, c-format
msgid ""
"With %s, using minimum valid argument count of %d does not make sense when "
"passing only %d arguments in list."
msgstr ""
-#: src/language/expressions/parse.c:1164
+#: src/language/expressions/parse.c:1167
#, c-format
msgid "Type mismatch invoking %s as "
msgstr ""
-#: src/language/expressions/parse.c:1169
+#: src/language/expressions/parse.c:1172
msgid "Function invocation "
msgstr ""
-#: src/language/expressions/parse.c:1171
+#: src/language/expressions/parse.c:1174
msgid " does not match any known function. Candidates are:"
msgstr ""
-#: src/language/expressions/parse.c:1201
+#: src/language/expressions/parse.c:1204
#, c-format
msgid "No function or vector named %s."
msgstr ""
-#: src/language/expressions/parse.c:1244
+#: src/language/expressions/parse.c:1247
#, c-format
msgid "expecting `,' or `)' invoking %s function"
-msgstr ""
+msgstr "expecting ‘,’ or ‘)’ invoking %s function"
-#: src/language/expressions/parse.c:1264
+#: src/language/expressions/parse.c:1267
#, c-format
msgid "%s is a PSPP extension."
msgstr ""
-#: src/language/expressions/parse.c:1273
+#: src/language/expressions/parse.c:1276
#, c-format
msgid "%s may not appear after TEMPORARY."
msgstr ""
-#: src/libpspp/hash.c:545
-#, c-format
-msgid "hash table:"
+#: src/libpspp/ext-array.c:56
+msgid "failed to create temporary file"
msgstr ""
-#: src/libpspp/message.c:128
-msgid "error"
+#: src/libpspp/ext-array.c:96
+msgid "seeking in temporary file"
msgstr ""
-#: src/libpspp/message.c:131
-msgid "warning"
+#: src/libpspp/ext-array.c:115
+msgid "reading temporary file"
msgstr ""
-#: src/libpspp/message.c:135
-msgid "note"
+#: src/libpspp/ext-array.c:117
+msgid "unexpected end of file reading temporary file"
msgstr ""
-#: src/libpspp/tmpfile.c:56
-msgid "failed to create temporary file"
+#: src/libpspp/ext-array.c:136
+msgid "writing to temporary file"
msgstr ""
-#: src/libpspp/tmpfile.c:97
-msgid "seeking in temporary file"
+#: src/libpspp/message.c:145
+msgid "error"
msgstr ""
-#: src/libpspp/tmpfile.c:116
-msgid "reading temporary file"
+#: src/libpspp/message.c:148
+msgid "warning"
msgstr ""
-#: src/libpspp/tmpfile.c:118
-msgid "unexpected end of file reading temporary file"
+#: src/libpspp/message.c:152
+msgid "note"
msgstr ""
-#: src/libpspp/tmpfile.c:137
-msgid "writing to temporary file"
+#: src/libpspp/message.c:251
+#, c-format
+msgid "Notes (%d) exceed limit (%d). Suppressing further notes."
+msgstr ""
+
+#: src/libpspp/message.c:259
+#, c-format
+msgid "Warnings (%d) exceed limit (%d). Syntax processing will be halted."
+msgstr ""
+
+#: src/libpspp/message.c:262
+#, c-format
+msgid "Errors (%d) exceed limit (%d). Syntax processing will be halted."
msgstr ""
#: src/libpspp/zip-writer.c:91
msgid "Empirical with averaging"
msgstr ""
-#: src/output/ascii.c:278
+#: src/output/ascii.c:279
#, c-format
msgid "%s: %s must be positive integer or `auto'"
-msgstr ""
+msgstr "%s: %s must be positive integer or ‘auto’"
-#: src/output/ascii.c:311
+#: src/output/ascii.c:312
#, c-format
msgid ""
"ascii: page excluding margins and headers must be at least %d characters "
"wide by %d lines long, but as configured is only %d characters by %d lines"
msgstr ""
-#: src/output/ascii.c:360
+#: src/output/ascii.c:361
#, c-format
-msgid "ascii: closing output file \"%s\""
-msgstr ""
+msgid "ascii: closing output file `%s'"
+msgstr "ascii: closing output file ‘%s’"
-#: src/output/ascii.c:503
+#: src/output/ascii.c:504
#, c-format
msgid "See %s for a chart."
msgstr ""
-#: src/output/ascii.c:806
+#: src/output/ascii.c:807
#, c-format
-msgid "ascii: opening output file \"%s\""
-msgstr ""
+msgid "ascii: opening output file `%s'"
+msgstr "ascii: opening output file ‘%s’"
-#: src/output/ascii.c:913 src/output/cairo.c:784
+#: src/output/ascii.c:914
#, c-format
msgid "%s - Page %d"
msgstr ""
#: src/output/csv.c:87 src/output/html.c:106 src/output/journal.c:93
#: src/output/msglog.c:66
#, c-format
-msgid "error opening output file \"%s\""
-msgstr ""
+msgid "error opening output file `%s'"
+msgstr "error opening output file ‘%s’"
-#: src/output/driver.c:330
+#. TRANSLATORS: Don't translate the words `terminal' or `listing'.
+#: src/output/driver.c:331
#, c-format
msgid ""
-"%s is not a valid device type (the choices are \"terminal\" and \"listing\")"
+"%s is not a valid device type (the choices are `terminal' and `listing')"
msgstr ""
-#: src/output/driver.c:343
+#: src/output/driver.c:344
#, c-format
-msgid "%s: unknown option \"%s\""
-msgstr ""
+msgid "%s: unknown option `%s'"
+msgstr "%s: unknown option ‘%s’"
#: src/output/html.c:114
msgid "PSPP Output"
msgstr ""
+#: src/output/html.c:258
+msgid "No description"
+msgstr ""
+
#: src/output/journal.c:67
#, c-format
-msgid "error writing output file \"%s\""
-msgstr ""
+msgid "error writing output file `%s'"
+msgstr "error writing output file ‘%s’"
#: src/output/measure.c:65
#, c-format
msgid "`%s' is not a valid length."
-msgstr ""
+msgstr "‘%s’ is not a valid length."
#: src/output/measure.c:93
#, c-format
msgid "syntax error in paper size `%s'"
-msgstr ""
+msgstr "syntax error in paper size ‘%s’"
#: src/output/measure.c:230
#, c-format
msgid "unknown paper type `%.*s'"
-msgstr ""
+msgstr "unknown paper type ‘%.*s’"
#: src/output/measure.c:248
#, c-format
-msgid "error opening input file \"%s\""
-msgstr ""
+msgid "error opening input file `%s'"
+msgstr "error opening input file ‘%s’"
#: src/output/measure.c:259
#, c-format
-msgid "error reading file \"%s\""
-msgstr ""
+msgid "error reading file `%s'"
+msgstr "error reading file ‘%s’"
#: src/output/measure.c:276
#, c-format
-msgid "paper size file \"%s\" does not state a paper size"
-msgstr ""
+msgid "paper size file `%s' does not state a paper size"
+msgstr "paper size file ‘%s’ does not state a paper size"
#: src/output/options.c:113
#, c-format
-msgid "%s: \"%s\" is \"%s\" but a Boolean value is required"
-msgstr ""
+msgid "%s: `%s' is `%s' but a Boolean value is required"
+msgstr "%s: ‘%s’ is ‘%s’ but a Boolean value is required"
#: src/output/options.c:188
#, c-format
-msgid "%s: \"%s\" is \"%s\" but one of the following is required: %s"
-msgstr ""
+msgid "%s: `%s' is `%s' but one of the following is required: %s"
+msgstr "%s: ‘%s’ is ‘%s’ but one of the following is required: %s"
#: src/output/options.c:232
#, c-format
-msgid "%s: \"%s\" is \"%s\" but a nonnegative integer is required"
-msgstr ""
+msgid "%s: `%s' is `%s' but a nonnegative integer is required"
+msgstr "%s: ‘%s’ is ‘%s’ but a nonnegative integer is required"
#: src/output/options.c:236
#, c-format
-msgid "%s: \"%s\" is \"%s\" but a positive integer is required"
-msgstr ""
+msgid "%s: `%s' is `%s' but a positive integer is required"
+msgstr "%s: ‘%s’ is ‘%s’ but a positive integer is required"
#: src/output/options.c:239
#, c-format
-msgid "%s: \"%s\" is \"%s\" but an integer is required"
-msgstr ""
+msgid "%s: `%s' is `%s' but an integer is required"
+msgstr "%s: ‘%s’ is ‘%s’ but an integer is required"
#: src/output/options.c:242
#, c-format
-msgid "%s: \"%s\" is \"%s\" but an integer greater than %d is required"
-msgstr ""
+msgid "%s: `%s' is `%s' but an integer greater than %d is required"
+msgstr "%s: ‘%s’ is ‘%s’ but an integer greater than %d is required"
#: src/output/options.c:247
#, c-format
-msgid "%s: \"%s\" is \"%s\" but an integer between %d and %d is required"
+msgid "%s: `%s' is `%s' but an integer between %d and %d is required"
msgstr ""
#: src/output/options.c:326
#, c-format
-msgid "%s: \"%s\" is \"%s\" but a file name that contains \"#\" is required."
-msgstr ""
+msgid "%s: `%s' is `%s' but a file name that contains `#' is required."
+msgstr "%s: ‘%s’ is ‘%s’ but a file name that contains ‘#’ is required."
#: src/output/tab.c:206
#, c-format
"bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
msgstr ""
-#: src/output/cairo.c:295
+#: src/output/cairo.c:193
#, c-format
-msgid "error opening output file \"%s\": %s"
-msgstr ""
+msgid "`%s': bad font specification"
+msgstr "‘%s’: bad font specification"
+
+#: src/output/cairo.c:357
+#, c-format
+msgid "error opening output file `%s': %s"
+msgstr "error opening output file ‘%s’: %s"
-#: src/output/cairo.c:312
+#: src/output/cairo.c:374
#, c-format
msgid ""
"The defined page is not wide enough to hold at least %d characters in the "
"default font. In fact, there's only room for %d characters."
msgstr ""
-#: src/output/cairo.c:322
+#: src/output/cairo.c:384
#, c-format
msgid ""
-"The defined page is not long enough to hold margins and headers, plus least %"
-"d lines of the default fonts. In fact, there's only room for %d lines."
+"The defined page is not long enough to hold at least %d lines in the default "
+"font. In fact, there's only room for %d lines."
msgstr ""
-#: src/output/cairo.c:376
+#: src/output/cairo.c:435
#, c-format
msgid "error drawing output for %s driver: %s"
msgstr ""
-#: src/output/cairo.c:864
+#: src/output/cairo.c:1041
#, c-format
-msgid "\"%s\": bad font specification"
-msgstr ""
-
-#: src/output/cairo.c:1088
-#, c-format
-msgid "error writing output file \"%s\": %s"
-msgstr ""
+msgid "error writing output file `%s': %s"
+msgstr "error writing output file ‘%s’: %s"
#: src/output/charts/np-plot-cairo.c:37
#, c-format
msgid "Eigenvalue"
msgstr ""
-#: src/output/odt.c:93
+#: src/output/odt.c:94
msgid "error creating temporary file"
msgstr ""
-#: src/ui/source-init-opts.c:78
-msgid "Algorithm must be either \"compatible\" or \"enhanced\"."
-msgstr ""
+#: src/ui/source-init-opts.c:80
+msgid "Algorithm must be either `compatible' or `enhanced'."
+msgstr "Algorithm must be either ‘compatible’ or ‘enhanced’."
-#: src/ui/source-init-opts.c:103
-msgid "Syntax must be either \"compatible\" or \"enhanced\"."
-msgstr ""
+#: src/ui/source-init-opts.c:107
+msgid "Syntax must be either `compatible' or `enhanced'."
+msgstr "Syntax must be either ‘compatible’ or ‘enhanced’."
-#: src/ui/terminal/main.c:128
+#: src/ui/terminal/main.c:146
msgid ""
"Stopping syntax file processing here to avoid a cascade of dependent command "
"failures."
msgstr ""
-#: src/ui/terminal/msg-ui.c:127
+#: src/ui/terminal/terminal.c:62
#, c-format
-msgid "Notes (%d) exceed limit (%d). Suppressing further notes."
-msgstr ""
+msgid "could not access definition for terminal `%s'"
+msgstr "could not access definition for terminal ‘%s’"
-#: src/ui/terminal/msg-ui.c:135
+#: src/ui/terminal/terminal-opts.c:120
#, c-format
-msgid "Warnings (%d) exceed limit (%d)."
-msgstr ""
+msgid "%s: output option missing `='"
+msgstr "%s: output option missing ‘=’"
-#: src/ui/terminal/msg-ui.c:138
+#: src/ui/terminal/terminal-opts.c:127
#, c-format
-msgid "Errors (%d) exceed limit (%d)."
+msgid "%s: output option specified more than once"
msgstr ""
-#: src/ui/terminal/terminal.c:72
+#: src/ui/terminal/terminal-opts.c:187
#, c-format
-msgid "could not access definition for terminal `%s'"
+msgid ""
+"PSPP, a program for statistical analysis of sample data.\n"
+"Usage: %s [OPTION]... FILE...\n"
+"\n"
+"Arguments to long options also apply to equivalent short options.\n"
+"\n"
+"Output options:\n"
+" -o, --output=FILE output to FILE, default format from FILE's name\n"
+" -O format=FORMAT override format for previous -o\n"
+" -O OPTION=VALUE set output option to customize previous -o\n"
+" -O device={terminal|listing} override device type for previous -o\n"
+" -e, --error-file=FILE append errors, warnings, and notes to FILE\n"
+" --no-output disable default output driver\n"
+"Supported output formats: %s\n"
+"\n"
+"Language options:\n"
+" -I, --include=DIR append DIR to search path\n"
+" -I-, --no-include clear search path\n"
+" -r, --no-statrc disable running rc file at startup\n"
+" -a, --algorithm={compatible|enhanced}\n"
+" set to `compatible' if you want output\n"
+" calculated from broken algorithms\n"
+" -x, --syntax={compatible|enhanced}\n"
+" set to `compatible' to disable PSPP extensions\n"
+" -i, --interactive interpret syntax in interactive mode\n"
+" -s, --safer don't allow some unsafe operations\n"
+"Default search path:%s\n"
+"\n"
+"Informative output:\n"
+" -h, --help display this help and exit\n"
+" -V, --version output version information and exit\n"
+"\n"
+"Non-option arguments are interpreted as syntax files to execute.\n"
msgstr ""
-#: src/ui/terminal/terminal-opts.c:119
-#, c-format
-msgid "%s: output option missing `='"
+#: src/ui/gui/aggregate-dialog.c:162
+msgid "Aggregate destination file"
msgstr ""
-#: src/ui/terminal/terminal-opts.c:126
-#, c-format
-msgid "%s: output option specified more than once"
+#: src/ui/gui/aggregate-dialog.c:173 src/ui/gui/psppire-data-window.c:403
+#: src/ui/gui/psppire-data-window.c:615
+msgid "System Files (*.sav)"
+msgstr ""
+
+#: src/ui/gui/aggregate-dialog.c:179 src/ui/gui/psppire-data-window.c:409
+#: src/ui/gui/psppire-data-window.c:621
+msgid "Portable Files (*.por) "
msgstr ""
-#: src/ui/gui/checkbox-treeview.c:92 src/language/stats/crosstabs.q:1213
-#: src/language/stats/crosstabs.q:1240 src/language/stats/crosstabs.q:1263
-#: src/language/stats/crosstabs.q:1287 src/language/stats/examine.q:1638
+#: src/ui/gui/checkbox-treeview.c:92 src/language/stats/crosstabs.q:1205
+#: src/language/stats/crosstabs.q:1232 src/language/stats/crosstabs.q:1255
+#: src/language/stats/crosstabs.q:1279 src/language/stats/examine.q:1638
msgid "Statistic"
msgstr ""
msgid "Chisq"
msgstr ""
-#: src/ui/gui/crosstabs-dialog.c:42 src/language/stats/crosstabs.q:1774
+#: src/ui/gui/crosstabs-dialog.c:42 src/language/stats/crosstabs.q:1768
msgid "Phi"
msgstr ""
msgid "CC"
msgstr ""
-#: src/ui/gui/crosstabs-dialog.c:44 src/language/stats/crosstabs.q:1912
+#: src/ui/gui/crosstabs-dialog.c:44 src/language/stats/crosstabs.q:1906
msgid "Lambda"
msgstr ""
msgid "Risk"
msgstr ""
-#: src/ui/gui/crosstabs-dialog.c:49 src/language/stats/crosstabs.q:1779
+#: src/ui/gui/crosstabs-dialog.c:49 src/language/stats/crosstabs.q:1773
msgid "Gamma"
msgstr ""
msgid "D"
msgstr ""
-#: src/ui/gui/crosstabs-dialog.c:51 src/language/stats/crosstabs.q:1782
+#: src/ui/gui/crosstabs-dialog.c:51 src/language/stats/crosstabs.q:1776
msgid "Kappa"
msgstr ""
-#: src/ui/gui/crosstabs-dialog.c:52 src/language/stats/crosstabs.q:1916
+#: src/ui/gui/crosstabs-dialog.c:52 src/language/stats/crosstabs.q:1910
msgid "Eta"
msgstr ""
msgid "Adjusted Std. Residual"
msgstr ""
-#: src/ui/gui/descriptives-dialog.c:41 src/ui/gui/frequencies-dialog.c:42
-msgid "Standard deviation"
-msgstr ""
-
#: src/ui/gui/descriptives-dialog.c:46
msgid "Standard error"
msgstr ""
msgid "Median"
msgstr ""
-#: src/ui/gui/helper.c:197
-msgid "Sorry. The help system hasn't yet been implemented."
-msgstr ""
-
#: src/ui/gui/help-menu.c:67
msgid "A program for the analysis of sampled data"
msgstr ""
#, c-format
msgid ""
"Cannot open reference manual: %s. The PSPP user manual is also available at "
-"http://www.gnu.org/software/pspp/documentation.html"
+"%s"
msgstr ""
#: src/ui/gui/help-menu.c:117
msgid "_Reference Manual"
msgstr ""
+#: src/ui/gui/main.c:99
+#, c-format
+msgid ""
+"PSPPIRE, a GUI for PSPP, a program for statistical analysis of sample data.\n"
+"Usage: %s [OPTION]... FILE\n"
+"\n"
+"Arguments to long options also apply to equivalent short options.\n"
+"\n"
+"GUI options:\n"
+" -q, --no-splash don't show splash screen during startup\n"
+"\n"
+"%sLanguage options:\n"
+" -I, --include=DIR append DIR to search path\n"
+" -I-, --no-include clear search path\n"
+" -a, --algorithm={compatible|enhanced}\n"
+" set to `compatible' if you want output\n"
+" calculated from broken algorithms\n"
+" -x, --syntax={compatible|enhanced}\n"
+" set to `compatible' to disable PSPP extensions\n"
+" -i, --interactive interpret syntax in interactive mode\n"
+" -s, --safer don't allow some unsafe operations\n"
+"Default search path:%s\n"
+"\n"
+"Informative output:\n"
+" -h, --help display this help and exit\n"
+" -V, --version output version information and exit\n"
+"\n"
+"A non-option argument is interpreted as a .sav or .por file to load.\n"
+msgstr ""
+
#: src/ui/gui/missing-val-dialog.c:113 src/ui/gui/missing-val-dialog.c:167
msgid "Incorrect value for variable type"
msgstr ""
msgid "var"
msgstr ""
-#: src/ui/gui/psppire-data-window.c:212
+#: src/ui/gui/psppire-data-window.c:213
msgid "Transformations Pending"
msgstr ""
-#: src/ui/gui/psppire-data-window.c:228
+#: src/ui/gui/psppire-data-window.c:229
msgid "Filter off"
msgstr ""
-#: src/ui/gui/psppire-data-window.c:242
+#: src/ui/gui/psppire-data-window.c:243
#, c-format
msgid "Filter by %s"
msgstr ""
-#: src/ui/gui/psppire-data-window.c:263
+#: src/ui/gui/psppire-data-window.c:264
msgid "No Split"
msgstr ""
-#: src/ui/gui/psppire-data-window.c:272
+#: src/ui/gui/psppire-data-window.c:273
msgid "Split by "
msgstr ""
-#: src/ui/gui/psppire-data-window.c:300
+#: src/ui/gui/psppire-data-window.c:301
msgid "Weights off"
msgstr ""
-#: src/ui/gui/psppire-data-window.c:314
+#: src/ui/gui/psppire-data-window.c:315
#, c-format
msgid "Weight by %s"
msgstr ""
-#: src/ui/gui/psppire-data-window.c:382
+#: src/ui/gui/psppire-data-window.c:383
msgid "Open"
msgstr ""
-#: src/ui/gui/psppire-data-window.c:392
+#: src/ui/gui/psppire-data-window.c:393
msgid "Data and Syntax Files"
msgstr ""
-#: src/ui/gui/psppire-data-window.c:402 src/ui/gui/psppire-data-window.c:614
-msgid "System Files (*.sav)"
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:408 src/ui/gui/psppire-data-window.c:620
-msgid "Portable Files (*.por) "
-msgstr ""
-
-#: src/ui/gui/psppire-data-window.c:414 src/ui/gui/psppire-syntax-window.c:292
+#: src/ui/gui/psppire-data-window.c:415 src/ui/gui/psppire-syntax-window.c:501
msgid "Syntax Files (*.sps) "
msgstr ""
-#: src/ui/gui/psppire-data-window.c:420 src/ui/gui/psppire-data-window.c:626
-#: src/ui/gui/psppire-syntax-window.c:298
+#: src/ui/gui/psppire-data-window.c:421 src/ui/gui/psppire-data-window.c:627
+#: src/ui/gui/psppire-syntax-window.c:507
msgid "All Files"
msgstr ""
-#: src/ui/gui/psppire-data-window.c:606
+#: src/ui/gui/psppire-data-window.c:607 src/ui/gui/aggregate.ui:448
msgid "Save"
msgstr ""
-#: src/ui/gui/psppire-data-window.c:639
+#: src/ui/gui/psppire-data-window.c:640
msgid "Portable File"
msgstr ""
-#: src/ui/gui/psppire-data-window.c:776
+#: src/ui/gui/psppire-data-window.c:777
msgid "Font Selection"
msgstr ""
-#: src/ui/gui/psppire-data-window.c:1264
+#. TRANSLATORS: This will form a filename. Please avoid whitespace.
+#: src/ui/gui/psppire-data-window.c:1271
+msgid "PSPP-data"
+msgstr ""
+
+#: src/ui/gui/psppire-data-window.c:1272
msgid "Data Editor"
msgstr ""
-#: src/ui/gui/psppire-output-window.c:458
-msgid "Infer file type from extention"
+#. TRANSLATORS: This string must be a valid variable name. That means:
+#. - The string must be at most 64 bytes (not characters) long.
+#. - The string may not contain whitespace.
+#. - The first character may not be '$'
+#. - The first character may not be a digit
+#. - The final charactor may not be '.' or '_'
+#.
+#: src/ui/gui/psppire-dict.c:366
+#, c-format
+msgid "VAR%05d"
msgstr ""
-#: src/ui/gui/psppire-output-window.c:459
+#: src/ui/gui/psppire-output-window.c:456
+msgid "Infer file type from extension"
+msgstr ""
+
+#: src/ui/gui/psppire-output-window.c:457
msgid "PDF (*.pdf)"
msgstr ""
-#: src/ui/gui/psppire-output-window.c:460
+#: src/ui/gui/psppire-output-window.c:458
msgid "HTML (*.html)"
msgstr ""
-#: src/ui/gui/psppire-output-window.c:461
+#: src/ui/gui/psppire-output-window.c:459
msgid "OpenDocument (*.odt)"
msgstr ""
-#: src/ui/gui/psppire-output-window.c:462
+#: src/ui/gui/psppire-output-window.c:460
msgid "Text (*.txt)"
msgstr ""
-#: src/ui/gui/psppire-output-window.c:463
+#: src/ui/gui/psppire-output-window.c:461
msgid "PostScript (*.ps)"
msgstr ""
-#: src/ui/gui/psppire-output-window.c:464
+#: src/ui/gui/psppire-output-window.c:462
msgid "Comma-Separated Values (*.csv)"
msgstr ""
-#: src/ui/gui/psppire-output-window.c:565
+#: src/ui/gui/psppire-output-window.c:563
msgid "Export Output"
msgstr ""
-#: src/ui/gui/psppire-output-window.c:1042
+#: src/ui/gui/psppire-output-window.c:817
+msgid "failed to create temporary directory"
+msgstr ""
+
+#. TRANSLATORS: This will form a filename. Please avoid whitespace.
+#: src/ui/gui/psppire-output-window.c:1048
+msgid "Output"
+msgstr ""
+
+#: src/ui/gui/psppire-output-window.c:1049
msgid "Output Viewer"
msgstr ""
-#: src/ui/gui/psppire-syntax-window.c:265
+#: src/ui/gui/psppire-syntax-window.c:474
#, c-format
-msgid "Saved file \"%s\""
-msgstr ""
+msgid "Saved file `%s'"
+msgstr "Saved file ‘%s’"
-#: src/ui/gui/psppire-syntax-window.c:284
+#: src/ui/gui/psppire-syntax-window.c:493
msgid "Save Syntax"
msgstr ""
-#: src/ui/gui/psppire-syntax-window.c:496
+#. TRANSLATORS: This will form a filename. Please avoid whitespace.
+#: src/ui/gui/psppire-syntax-window.c:745
+msgid "Syntax"
+msgstr ""
+
+#: src/ui/gui/psppire-syntax-window.c:746
msgid "Syntax Editor"
msgstr ""
-#: src/ui/gui/psppire-syntax-window.c:510
+#: src/ui/gui/psppire-syntax-window.c:760
#, c-format
-msgid "Cannot load syntax file '%s'"
+msgid "Cannot load syntax file `%s'"
msgstr ""
#: src/ui/gui/psppire-var-sheet.c:535 src/ui/gui/psppire-var-store.c:833
-#: src/language/stats/crosstabs.q:1288 src/ui/gui/psppire.ui:2055
+#: src/language/stats/crosstabs.q:1280 src/ui/gui/compute.ui:599
msgid "Type"
msgstr ""
#: src/ui/gui/psppire-var-sheet.c:536 src/ui/gui/psppire-var-store.c:834
-#: src/ui/gui/psppire.ui:1974
+#: src/ui/gui/compute.ui:517
msgid "Width"
msgstr ""
msgstr ""
#: src/ui/gui/psppire-var-sheet.c:540 src/ui/gui/psppire-var-store.c:838
-#: src/language/stats/crosstabs.q:822 src/language/stats/examine.q:1104
+#: src/language/stats/crosstabs.q:814 src/language/stats/examine.q:1104
#: src/language/stats/frequencies.q:864 src/language/stats/frequencies.q:1036
msgid "Missing"
msgstr ""
msgid "Custom"
msgstr ""
+#: src/ui/gui/psppire-var-store.c:755
+#, c-format
+msgid "{%s,`%s'}_"
+msgstr "{%s,‘%s’}_"
+
#: src/ui/gui/psppire-window.c:97
#, c-format
msgid "%s %s PSPPIRE %s"
msgstr ""
-#: src/ui/gui/psppire-window.c:468
-#, c-format
-msgid "Save the changes to \"%s\" before closing?"
+#. TRANSLATORS: This will form a filename. Please avoid whitespace.
+#: src/ui/gui/psppire-window.c:247
+msgid "Untitled"
msgstr ""
-#: src/ui/gui/psppire-window.c:475
+#: src/ui/gui/psppire-window.c:469
+#, c-format
+msgid "Save the changes to `%s' before closing?"
+msgstr "Save the changes to ‘%s’ before closing?"
+
+#: src/ui/gui/psppire-window.c:476
#, c-format
msgid ""
"If you don't save, changes from the last %ld seconds will be permanently "
"lost."
msgstr ""
-#: src/ui/gui/psppire-window.c:479
+#: src/ui/gui/psppire-window.c:480
msgid "Close _without saving"
msgstr ""
msgid "Exactly %3d cases from the first %3d cases."
msgstr ""
-#: src/ui/gui/select-cases-dialog.c:223
+#: src/ui/gui/select-cases-dialog.c:222
#, c-format
msgid "%d thru %d"
msgstr ""
#: src/ui/gui/text-data-import-dialog.c:461
#, c-format
-msgid "Could not open \"%s\": %s"
-msgstr ""
+msgid "Could not open `%s': %s"
+msgstr "Could not open ‘%s’: %s"
#: src/ui/gui/text-data-import-dialog.c:477
#, c-format
-msgid "Error reading \"%s\": %s"
-msgstr ""
+msgid "Error reading `%s': %s"
+msgstr "Error reading ‘%s’: %s"
#: src/ui/gui/text-data-import-dialog.c:480
#, c-format
msgid ""
-"Failed to read \"%s\", because it contains a line over %d bytes long and "
+"Failed to read `%s', because it contains a line over %d bytes long and "
"therefore appears not to be a text file."
msgstr ""
#: src/ui/gui/text-data-import-dialog.c:494
#, c-format
-msgid "\"%s\" is empty."
-msgstr ""
+msgid "`%s' is empty."
+msgstr "‘%s’ is empty."
#: src/ui/gui/text-data-import-dialog.c:539
msgid "Import Delimited Text Data"
msgid "Importing Delimited Text Data"
msgstr ""
+#: src/ui/gui/text-data-import-dialog.c:739
+#, c-format
+msgid "Only the first %4d cases"
+msgstr ""
+
#: src/ui/gui/text-data-import-dialog.c:749
+#, c-format
+msgid "Only the first %3d %% of file (approximately)"
+msgstr ""
+
+#: src/ui/gui/text-data-import-dialog.c:774
msgid ""
"This assistant will guide you through the process of importing data into "
"PSPP from a text file with one line per case, in which fields are separated "
"\n"
msgstr ""
-#: src/ui/gui/text-data-import-dialog.c:755
+#: src/ui/gui/text-data-import-dialog.c:780
#, c-format
msgid "The selected file contains %zu line of text. "
msgid_plural "The selected file contains %zu lines of text. "
msgstr[0] ""
msgstr[1] ""
-#: src/ui/gui/text-data-import-dialog.c:763
+#: src/ui/gui/text-data-import-dialog.c:788
#, c-format
msgid "The selected file contains approximately %lu line of text. "
msgid_plural "The selected file contains approximately %lu lines of text. "
msgstr[0] ""
msgstr[1] ""
-#: src/ui/gui/text-data-import-dialog.c:769
+#: src/ui/gui/text-data-import-dialog.c:794
#, c-format
msgid ""
"Only the first %zu line of the file will be shown for preview purposes in "
msgstr[0] ""
msgstr[1] ""
-#: src/ui/gui/text-data-import-dialog.c:776
+#: src/ui/gui/text-data-import-dialog.c:801
msgid "You may choose below how much of the file should actually be imported."
msgstr ""
-#: src/ui/gui/text-data-import-dialog.c:1523
-#: src/ui/gui/text-data-import-dialog.c:1768
+#: src/ui/gui/text-data-import-dialog.c:884
+msgid "Text"
+msgstr ""
+
+#: src/ui/gui/text-data-import-dialog.c:1550
+#: src/ui/gui/text-data-import-dialog.c:1794
msgid "This input line has too few separators to fill in this field."
msgstr ""
-#: src/ui/gui/text-data-import-dialog.c:1759
+#: src/ui/gui/text-data-import-dialog.c:1785
#, c-format
-msgid "Field content \"%.*s\" cannot be parsed in format %s."
+msgid "Cannot parse field content `%.*s' as format %s: %s"
+msgstr "Cannot parse field content ‘%.*s’ as format %s: %s"
+
+#: src/ui/gui/text-data-import-dialog.c:1938
+msgid "Line"
msgstr ""
#: src/ui/gui/t-test-options.c:60
msgid "Confidence Interval: %2d %%"
msgstr ""
+#: src/ui/gui/val-labs-dialog.c:515
+#, c-format
+msgid "%s = `%s'"
+msgstr "%s = ‘%s’"
+
#: src/ui/gui/variable-info-dialog.c:77
#, c-format
msgid "Label: %s\n"
msgid "WIDTH must be at least 40."
msgstr ""
-#: src/language/utilities/set.q:490
+#: src/language/utilities/set.q:494
#, c-format
msgid ""
"FORMAT requires numeric output format as an argument. Specified format %s "
"is of type string."
msgstr ""
-#: src/language/utilities/set.q:707
+#: src/language/utilities/set.q:711
msgid "ISL (32-bit IEEE 754 single, little-endian)"
msgstr ""
-#: src/language/utilities/set.q:710
+#: src/language/utilities/set.q:714
msgid "ISB (32-bit IEEE 754 single, big-endian)"
msgstr ""
-#: src/language/utilities/set.q:713
+#: src/language/utilities/set.q:717
msgid "IDL (64-bit IEEE 754 double, little-endian)"
msgstr ""
-#: src/language/utilities/set.q:716
+#: src/language/utilities/set.q:720
msgid "IDB (64-bit IEEE 754 double, big-endian)"
msgstr ""
-#: src/language/utilities/set.q:720
+#: src/language/utilities/set.q:724
msgid "VF (32-bit VAX F, VAX-endian)"
msgstr ""
-#: src/language/utilities/set.q:723
+#: src/language/utilities/set.q:727
msgid "VD (64-bit VAX D, VAX-endian)"
msgstr ""
-#: src/language/utilities/set.q:726
+#: src/language/utilities/set.q:730
msgid "VG (64-bit VAX G, VAX-endian)"
msgstr ""
-#: src/language/utilities/set.q:730
+#: src/language/utilities/set.q:734
msgid "ZS (32-bit IBM Z hexadecimal short, big-endian)"
msgstr ""
-#: src/language/utilities/set.q:733
+#: src/language/utilities/set.q:737
msgid "ZL (64-bit IBM Z hexadecimal long, big-endian)"
msgstr ""
-#: src/language/utilities/set.q:835
+#: src/language/utilities/set.q:839
#, c-format
msgid "%s is %s."
msgstr ""
+#: src/language/utilities/set.q:942
+#, c-format
+msgid ""
+"Too many PRESERVE commands without a RESTORE: at most %d levels of saved "
+"settings are allowed."
+msgstr ""
+
+#: src/language/utilities/set.q:961
+msgid "RESTORE without matching PRESERVE."
+msgstr ""
+
#: src/language/stats/crosstabs.q:289
msgid ""
"Missing mode REPORT not allowed in general mode. Assuming MISSING=TABLE."
msgid "Too many cross-tabulation variables or dimensions."
msgstr ""
-#: src/language/stats/crosstabs.q:409
-msgid "expecting BY"
-msgstr ""
-
#: src/language/stats/crosstabs.q:466
msgid "VARIABLES must be specified before TABLES."
msgstr ""
-#: src/language/stats/crosstabs.q:504
+#: src/language/stats/crosstabs.q:500
#, c-format
msgid "Maximum value (%ld) less than minimum value (%ld)."
msgstr ""
-#: src/language/stats/crosstabs.q:818
+#: src/language/stats/crosstabs.q:810
msgid "Summary."
msgstr ""
-#: src/language/stats/crosstabs.q:820 src/language/stats/examine.q:1164
-#: src/language/stats/reliability.q:693
-msgid "Cases"
-msgstr ""
-
-#: src/language/stats/crosstabs.q:821 src/language/stats/examine.q:1103
-#: src/language/stats/frequencies.q:1035 src/language/stats/reliability.q:696
-msgid "Valid"
-msgstr ""
-
-#: src/language/stats/crosstabs.q:831 src/language/stats/examine.q:1179
+#: src/language/stats/crosstabs.q:823 src/language/stats/examine.q:1179
#: src/language/stats/frequencies.q:815
msgid "Percent"
msgstr ""
-#: src/language/stats/crosstabs.q:1109
+#: src/language/stats/crosstabs.q:1101
msgid "count"
msgstr ""
-#: src/language/stats/crosstabs.q:1110
+#: src/language/stats/crosstabs.q:1102
msgid "row %"
msgstr ""
-#: src/language/stats/crosstabs.q:1111
+#: src/language/stats/crosstabs.q:1103
msgid "column %"
msgstr ""
-#: src/language/stats/crosstabs.q:1112
+#: src/language/stats/crosstabs.q:1104
msgid "total %"
msgstr ""
-#: src/language/stats/crosstabs.q:1113
+#: src/language/stats/crosstabs.q:1105
msgid "expected"
msgstr ""
-#: src/language/stats/crosstabs.q:1114
+#: src/language/stats/crosstabs.q:1106
msgid "residual"
msgstr ""
-#: src/language/stats/crosstabs.q:1115
+#: src/language/stats/crosstabs.q:1107
msgid "std. resid."
msgstr ""
-#: src/language/stats/crosstabs.q:1116
+#: src/language/stats/crosstabs.q:1108
msgid "adj. resid."
msgstr ""
-#: src/language/stats/crosstabs.q:1210
+#: src/language/stats/crosstabs.q:1202
msgid "Chi-square tests."
msgstr ""
-#: src/language/stats/crosstabs.q:1217
-msgid "Asymp. Sig. (2-sided)"
-msgstr ""
-
-#: src/language/stats/crosstabs.q:1219
-msgid "Exact Sig. (2-sided)"
-msgstr ""
-
-#: src/language/stats/crosstabs.q:1221
-msgid "Exact Sig. (1-sided)"
-msgstr ""
-
-#: src/language/stats/crosstabs.q:1236
+#: src/language/stats/crosstabs.q:1228
msgid "Symmetric measures."
msgstr ""
-#: src/language/stats/crosstabs.q:1242 src/language/stats/crosstabs.q:1290
+#: src/language/stats/crosstabs.q:1234 src/language/stats/crosstabs.q:1282
msgid "Asymp. Std. Error"
msgstr ""
-#: src/language/stats/crosstabs.q:1243 src/language/stats/crosstabs.q:1291
+#: src/language/stats/crosstabs.q:1235 src/language/stats/crosstabs.q:1283
msgid "Approx. T"
msgstr ""
-#: src/language/stats/crosstabs.q:1244 src/language/stats/crosstabs.q:1292
+#: src/language/stats/crosstabs.q:1236 src/language/stats/crosstabs.q:1284
msgid "Approx. Sig."
msgstr ""
-#: src/language/stats/crosstabs.q:1258
+#: src/language/stats/crosstabs.q:1250
msgid "Risk estimate."
msgstr ""
-#: src/language/stats/crosstabs.q:1262
+#: src/language/stats/crosstabs.q:1254
#, c-format
msgid "95%% Confidence Interval"
msgstr ""
-#: src/language/stats/crosstabs.q:1265 src/language/stats/t-test.q:756
+#: src/language/stats/crosstabs.q:1257 src/language/stats/t-test.q:756
#: src/language/stats/t-test.q:920 src/language/stats/t-test.q:1013
msgid "Lower"
msgstr ""
-#: src/language/stats/crosstabs.q:1266 src/language/stats/t-test.q:757
+#: src/language/stats/crosstabs.q:1258 src/language/stats/t-test.q:757
#: src/language/stats/t-test.q:921 src/language/stats/t-test.q:1014
msgid "Upper"
msgstr ""
-#: src/language/stats/crosstabs.q:1283
+#: src/language/stats/crosstabs.q:1275
msgid "Directional measures."
msgstr ""
-#: src/language/stats/crosstabs.q:1708
+#: src/language/stats/crosstabs.q:1702
msgid "Pearson Chi-Square"
msgstr ""
-#: src/language/stats/crosstabs.q:1709
+#: src/language/stats/crosstabs.q:1703
msgid "Likelihood Ratio"
msgstr ""
-#: src/language/stats/crosstabs.q:1710
+#: src/language/stats/crosstabs.q:1704
msgid "Fisher's Exact Test"
msgstr ""
-#: src/language/stats/crosstabs.q:1711
+#: src/language/stats/crosstabs.q:1705
msgid "Continuity Correction"
msgstr ""
-#: src/language/stats/crosstabs.q:1712
+#: src/language/stats/crosstabs.q:1706
msgid "Linear-by-Linear Association"
msgstr ""
-#: src/language/stats/crosstabs.q:1747 src/language/stats/crosstabs.q:1822
-#: src/language/stats/crosstabs.q:1887
+#: src/language/stats/crosstabs.q:1741 src/language/stats/crosstabs.q:1816
+#: src/language/stats/crosstabs.q:1881
msgid "N of Valid Cases"
msgstr ""
-#: src/language/stats/crosstabs.q:1766 src/language/stats/crosstabs.q:1905
+#: src/language/stats/crosstabs.q:1760 src/language/stats/crosstabs.q:1899
msgid "Nominal by Nominal"
msgstr ""
-#: src/language/stats/crosstabs.q:1767 src/language/stats/crosstabs.q:1906
+#: src/language/stats/crosstabs.q:1761 src/language/stats/crosstabs.q:1900
msgid "Ordinal by Ordinal"
msgstr ""
-#: src/language/stats/crosstabs.q:1768
+#: src/language/stats/crosstabs.q:1762
msgid "Interval by Interval"
msgstr ""
-#: src/language/stats/crosstabs.q:1769
+#: src/language/stats/crosstabs.q:1763
msgid "Measure of Agreement"
msgstr ""
-#: src/language/stats/crosstabs.q:1775
+#: src/language/stats/crosstabs.q:1769
msgid "Cramer's V"
msgstr ""
-#: src/language/stats/crosstabs.q:1776
+#: src/language/stats/crosstabs.q:1770
msgid "Contingency Coefficient"
msgstr ""
-#: src/language/stats/crosstabs.q:1777
+#: src/language/stats/crosstabs.q:1771
msgid "Kendall's tau-b"
msgstr ""
-#: src/language/stats/crosstabs.q:1778
+#: src/language/stats/crosstabs.q:1772
msgid "Kendall's tau-c"
msgstr ""
-#: src/language/stats/crosstabs.q:1780
+#: src/language/stats/crosstabs.q:1774
msgid "Spearman Correlation"
msgstr ""
-#: src/language/stats/crosstabs.q:1781
+#: src/language/stats/crosstabs.q:1775
msgid "Pearson's R"
msgstr ""
-#: src/language/stats/crosstabs.q:1860
+#: src/language/stats/crosstabs.q:1854
#, c-format
msgid "Odds Ratio for %s (%g / %g)"
msgstr ""
-#: src/language/stats/crosstabs.q:1863
+#: src/language/stats/crosstabs.q:1857
#, c-format
msgid "Odds Ratio for %s (%.*s / %.*s)"
msgstr ""
-#: src/language/stats/crosstabs.q:1871
+#: src/language/stats/crosstabs.q:1865
#, c-format
msgid "For cohort %s = %g"
msgstr ""
-#: src/language/stats/crosstabs.q:1874
+#: src/language/stats/crosstabs.q:1868
#, c-format
msgid "For cohort %s = %.*s"
msgstr ""
-#: src/language/stats/crosstabs.q:1907
+#: src/language/stats/crosstabs.q:1901
msgid "Nominal by Interval"
msgstr ""
-#: src/language/stats/crosstabs.q:1913
+#: src/language/stats/crosstabs.q:1907
msgid "Goodman and Kruskal tau"
msgstr ""
-#: src/language/stats/crosstabs.q:1914
+#: src/language/stats/crosstabs.q:1908
msgid "Uncertainty Coefficient"
msgstr ""
-#: src/language/stats/crosstabs.q:1915
+#: src/language/stats/crosstabs.q:1909
msgid "Somers' d"
msgstr ""
-#: src/language/stats/crosstabs.q:1921
+#: src/language/stats/crosstabs.q:1915
msgid "Symmetric"
msgstr ""
-#: src/language/stats/crosstabs.q:1922 src/language/stats/crosstabs.q:1923
+#: src/language/stats/crosstabs.q:1916 src/language/stats/crosstabs.q:1917
#, c-format
msgid "%s Dependent"
msgstr ""
-#: src/language/stats/examine.q:357
+#: src/language/stats/examine.q:356
msgid "Not creating NP plot because data set is empty."
msgstr ""
msgid "%s and %s are mutually exclusive"
msgstr ""
-#: src/language/stats/examine.q:1159 src/language/stats/reliability.q:670
-msgid "Case Processing Summary"
-msgstr ""
-
-#: src/language/stats/examine.q:1449 src/language/stats/oneway.q:394
-#, c-format
-msgid "%g%% Confidence Interval for Mean"
-msgstr ""
-
#: src/language/stats/examine.q:1464
msgid "5% Trimmed Mean"
msgstr ""
msgid "Interquartile Range"
msgstr ""
-#: src/language/stats/examine.q:1635 src/language/stats/oneway.q:404
-#: src/ui/gui/descriptives.ui:8 src/ui/gui/examine.ui:319
-msgid "Descriptives"
-msgstr ""
-
#: src/language/stats/examine.q:1821
msgid "Highest"
msgstr ""
#: src/language/stats/frequencies.q:703
msgid "`)' expected after GROUPED interval list."
-msgstr ""
+msgstr "‘)’ expected after GROUPED interval list."
#: src/language/stats/frequencies.q:723
#, c-format
msgid "Omitting pie chart for %s, which has over 50 unique values."
msgstr ""
-#: src/language/stats/glm.q:247
-msgid "Multivariate GLM not yet supported"
-msgstr ""
-
-#: src/language/stats/means.q:100
-msgid "Missing required subcommand TABLES."
-msgstr ""
-
-#: src/language/stats/means.q:134
-msgid "TABLES subcommand may not appear more than once."
-msgstr ""
-
-#: src/language/stats/npar.q:111
-msgid "NPAR subcommand not currently implemented."
-msgstr ""
-
-#: src/language/stats/npar.q:256
-#, c-format
-msgid ""
-"The specified value of HI (%d) is lower than the specified value of LO (%d)"
-msgstr ""
-
-#: src/language/stats/npar.q:311
-#, c-format
-msgid ""
-"%d expected values were given, but the specified range (%d-%d) requires "
-"exactly %d values."
-msgstr ""
-
-#: src/language/stats/npar.q:453 src/language/stats/t-test.q:380
-#, c-format
-msgid ""
-"PAIRED was specified but the number of variables preceding WITH (%zu) did "
-"not match the number following (%zu)."
-msgstr ""
-
-#: src/language/stats/oneway.q:170
-msgid "Number of contrast coefficients must equal the number of groups"
-msgstr ""
-
-#: src/language/stats/oneway.q:179
-#, c-format
-msgid "Coefficients for contrast %zu do not total zero"
-msgstr ""
-
-#: src/language/stats/oneway.q:242
-#, c-format
-msgid "`%s' is not a variable name"
-msgstr ""
-
-#: src/language/stats/oneway.q:274 src/language/stats/regression.q:283
-msgid "Sum of Squares"
-msgstr ""
-
-#: src/language/stats/oneway.q:276 src/language/stats/regression.q:285
-msgid "Mean Square"
-msgstr ""
-
-#: src/language/stats/oneway.q:277 src/language/stats/regression.q:286
-#: src/language/stats/t-test.q:749
-msgid "F"
-msgstr ""
-
-#: src/language/stats/oneway.q:278 src/language/stats/oneway.q:535
-#: src/language/stats/regression.q:201 src/language/stats/regression.q:287
-msgid "Significance"
-msgstr ""
-
-#: src/language/stats/oneway.q:300
-msgid "Between Groups"
-msgstr ""
-
-#: src/language/stats/oneway.q:301
-msgid "Within Groups"
-msgstr ""
-
-#: src/language/stats/oneway.q:345 src/language/stats/regression.q:312
-msgid "ANOVA"
-msgstr ""
-
-#: src/language/stats/oneway.q:532
-msgid "Levene Statistic"
-msgstr ""
-
-#: src/language/stats/oneway.q:533
-msgid "df1"
-msgstr ""
-
-#: src/language/stats/oneway.q:534
-msgid "df2"
-msgstr ""
-
-#: src/language/stats/oneway.q:537
-msgid "Test of Homogeneity of Variances"
-msgstr ""
-
-#: src/language/stats/oneway.q:603
-msgid "Contrast Coefficients"
-msgstr ""
-
-#: src/language/stats/oneway.q:605 src/language/stats/oneway.q:681
-msgid "Contrast"
-msgstr ""
-
-#: src/language/stats/oneway.q:679
-msgid "Contrast Tests"
-msgstr ""
-
-#: src/language/stats/oneway.q:682
-msgid "Value of Contrast"
-msgstr ""
-
-#: src/language/stats/oneway.q:684 src/language/stats/regression.q:200
-#: src/language/stats/t-test.q:751 src/language/stats/t-test.q:922
-#: src/language/stats/t-test.q:1009
-msgid "t"
-msgstr ""
-
-#: src/language/stats/oneway.q:730
-msgid "Assume equal variances"
-msgstr ""
-
-#: src/language/stats/oneway.q:734
-msgid "Does not assume equal"
-msgstr ""
-
#: src/language/stats/rank.q:220
#, c-format
msgid "%s of %s by %s"
"meaningless."
msgstr ""
-#: src/language/stats/regression.q:891
+#: src/language/stats/regression.q:940
msgid "REGRESSION requires numeric variables."
msgstr ""
-#: src/language/stats/regression.q:962
+#: src/language/stats/regression.q:1015
msgid "No valid data found. This command was skipped."
msgstr ""
-#: src/language/stats/reliability.q:421
-msgid "Reliability Statistics"
-msgstr ""
-
-#: src/language/stats/reliability.q:462
-msgid "Item-Total Statistics"
-msgstr ""
-
-#: src/language/stats/reliability.q:484
-msgid "Scale Mean if Item Deleted"
-msgstr ""
-
-#: src/language/stats/reliability.q:487
-msgid "Scale Variance if Item Deleted"
-msgstr ""
-
-#: src/language/stats/reliability.q:490
-msgid "Corrected Item-Total Correlation"
-msgstr ""
-
-#: src/language/stats/reliability.q:493
-msgid "Cronbach's Alpha if Item Deleted"
-msgstr ""
-
-#: src/language/stats/reliability.q:543 src/language/stats/reliability.q:562
-msgid "Cronbach's Alpha"
-msgstr ""
-
-#: src/language/stats/reliability.q:546 src/language/stats/reliability.q:571
-#: src/language/stats/reliability.q:582
-msgid "N of Items"
-msgstr ""
-
-#: src/language/stats/reliability.q:565
-msgid "Part 1"
-msgstr ""
-
-#: src/language/stats/reliability.q:576
-msgid "Part 2"
-msgstr ""
-
-#: src/language/stats/reliability.q:587
-msgid "Total N of Items"
-msgstr ""
-
-#: src/language/stats/reliability.q:590
-msgid "Correlation Between Forms"
-msgstr ""
-
-#: src/language/stats/reliability.q:594
-msgid "Spearman-Brown Coefficient"
-msgstr ""
-
-#: src/language/stats/reliability.q:597
-msgid "Equal Length"
-msgstr ""
-
-#: src/language/stats/reliability.q:600
-msgid "Unequal Length"
-msgstr ""
-
-#: src/language/stats/reliability.q:604
-msgid "Guttman Split-Half Coefficient"
-msgstr ""
-
-#: src/language/stats/reliability.q:699
-msgid "Excluded"
-msgstr ""
-
-#: src/language/stats/reliability.q:707
-msgid "%"
-msgstr ""
-
#: src/language/stats/t-test.q:190
msgid "Exactly one of TESTVAL, GROUPS and PAIRS subcommands must be specified."
msgstr ""
msgid "t-test for Equality of Means"
msgstr ""
-#: src/language/stats/t-test.q:750 src/language/stats/t-test.q:1103
-msgid "Sig."
-msgstr ""
-
#: src/language/stats/t-test.q:754 src/language/stats/t-test.q:1012
msgid "Mean Difference"
msgstr ""
"The last case (%ld) to list is less than 1. The value is being reset to 1."
msgstr ""
-#: src/language/data-io/list.q:119
-#, c-format
-msgid "The step value %ld is less than 1. The value is being reset to 1."
+#: src/language/data-io/list.q:119
+#, c-format
+msgid "The step value %ld is less than 1. The value is being reset to 1."
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:7
+msgid "Aggregate Data"
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:100
+msgid "_Break variable(s)"
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:136
+msgid "Variable Name: "
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:161
+msgid "Variable Label: "
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:190
+msgid "Function: "
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:253
+msgid "Argument 1: "
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:282
+msgid "Argument 2: "
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:328
+msgid "Aggregated variables"
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:362
+msgid "_Add aggregated variables to the active dataset"
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:376
+msgid "_Replace the current dataset with the aggregated variables"
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:391
+msgid "_Write a new data file containing only the aggregated variables"
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:428
+msgid "label"
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:472
+msgid "File is _already sorted on break variable(s)"
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:487
+msgid "Sort file before a_ggregating"
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:508
+msgid "Options for very large datasets"
msgstr ""
#: src/ui/gui/binomial.ui:57 src/ui/gui/chi-square.ui:57
msgid "Test _Proportion:"
msgstr ""
+#: src/ui/gui/compute.ui:8
+msgid "Compute Variable"
+msgstr ""
+
+#: src/ui/gui/compute.ui:41
+msgid "Target Variable:"
+msgstr ""
+
+#: src/ui/gui/compute.ui:70
+msgid "Type & Label"
+msgstr ""
+
+#: src/ui/gui/compute.ui:117
+msgid "="
+msgstr ""
+
+#: src/ui/gui/compute.ui:171
+msgid "Numeric Expressions:"
+msgstr ""
+
+#: src/ui/gui/compute.ui:233
+msgid "Functions:"
+msgstr ""
+
+#: src/ui/gui/compute.ui:298 src/ui/gui/recode.ui:741
+#: src/ui/gui/select-cases.ui:378
+msgid "If..."
+msgstr ""
+
+#: src/ui/gui/compute.ui:351
+msgid "Compute Variable: Type and Label"
+msgstr ""
+
+#: src/ui/gui/compute.ui:386
+msgid "Use expression as label"
+msgstr ""
+
#: src/ui/gui/correlation.ui:7
msgid "Bivariate Correlations"
msgstr ""
msgid "Missing Values"
msgstr ""
-#: src/ui/gui/factor.ui:21
+#: src/ui/gui/goto-case.ui:8
+msgid "Goto Case"
+msgstr ""
+
+#: src/ui/gui/goto-case.ui:26
+msgid "Goto Case Number:"
+msgstr ""
+
+#: src/ui/gui/factor.ui:22
+msgid "Principal Components Analysis"
+msgstr ""
+
+#: src/ui/gui/factor.ui:26
+msgid "Principal Axis Factoring"
+msgstr ""
+
+#: src/ui/gui/factor.ui:29
msgid "Factor Analysis"
msgstr ""
-#: src/ui/gui/factor.ui:47
+#: src/ui/gui/factor.ui:55
msgid "_Descriptives..."
msgstr ""
-#: src/ui/gui/factor.ui:60
+#: src/ui/gui/factor.ui:68
msgid "_Extraction..."
msgstr ""
-#: src/ui/gui/factor.ui:74
+#: src/ui/gui/factor.ui:82
msgid "_Rotations..."
msgstr ""
-#: src/ui/gui/factor.ui:192
+#: src/ui/gui/factor.ui:200
msgid "Factor Analysis: Extraction"
msgstr ""
-#: src/ui/gui/factor.ui:216
+#: src/ui/gui/factor.ui:224
msgid "Method: "
msgstr ""
-#: src/ui/gui/factor.ui:266
+#: src/ui/gui/factor.ui:274
msgid "Correlation matrix"
msgstr ""
-#: src/ui/gui/factor.ui:280
+#: src/ui/gui/factor.ui:288
msgid "Covariance matrix"
msgstr ""
-#: src/ui/gui/factor.ui:300
+#: src/ui/gui/factor.ui:308
msgid "Analyse"
msgstr ""
-#: src/ui/gui/factor.ui:324
+#: src/ui/gui/factor.ui:332
msgid "Unrotatated factor solution"
msgstr ""
-#: src/ui/gui/factor.ui:338
+#: src/ui/gui/factor.ui:346
msgid "Scree plot"
msgstr ""
-#: src/ui/gui/factor.ui:357 src/ui/gui/roc.ui:286
+#: src/ui/gui/factor.ui:365 src/ui/gui/roc.ui:286
msgid "Display"
msgstr ""
-#: src/ui/gui/factor.ui:430
+#: src/ui/gui/factor.ui:438
msgid "Number of factors:"
msgstr ""
-#: src/ui/gui/factor.ui:460
+#: src/ui/gui/factor.ui:468
msgid "Extract"
msgstr ""
-#: src/ui/gui/factor.ui:475 src/ui/gui/factor.ui:665
+#: src/ui/gui/factor.ui:483 src/ui/gui/factor.ui:673
msgid "Maximum iterations for convergence:"
msgstr ""
-#: src/ui/gui/factor.ui:538
+#: src/ui/gui/factor.ui:546
msgid "Factor Analysis: Rotation"
msgstr ""
-#: src/ui/gui/factor.ui:571
+#: src/ui/gui/factor.ui:579
msgid "_None"
msgstr ""
-#: src/ui/gui/factor.ui:582
+#: src/ui/gui/factor.ui:590
msgid "_Varimax"
msgstr ""
-#: src/ui/gui/factor.ui:598
+#: src/ui/gui/factor.ui:606
msgid "_Quartimax"
msgstr ""
-#: src/ui/gui/factor.ui:614
+#: src/ui/gui/factor.ui:622
msgid "_Equimax"
msgstr ""
-#: src/ui/gui/factor.ui:637
+#: src/ui/gui/factor.ui:645
msgid "Method"
msgstr ""
-#: src/ui/gui/factor.ui:648
+#: src/ui/gui/factor.ui:656
msgid "_Display rotated solution"
msgstr ""
msgid "Dependent _Variable(s):"
msgstr ""
-#: src/ui/gui/oneway.ui:184 src/ui/gui/data-editor.ui:329
+#: src/ui/gui/oneway.ui:184 src/ui/gui/data-editor.ui:332
msgid "_Descriptives"
msgstr ""
msgstr ""
#: src/ui/gui/psppire.ui:383
-msgid "Split File"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:443
-msgid "Analyze all cases. Do not create groups."
-msgstr "Analyse all cases. Do not create groups."
-
-#: src/ui/gui/psppire.ui:459
-msgid "Compare groups."
-msgstr ""
-
-#: src/ui/gui/psppire.ui:475
-msgid "Organize output by groups."
-msgstr "Organise output by groups."
-
-#: src/ui/gui/psppire.ui:533
-msgid "Groups based on:"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:592
-msgid "Sort the file by grouping variables."
-msgstr ""
-
-#: src/ui/gui/psppire.ui:609
-msgid "File is already sorted."
-msgstr ""
-
-#: src/ui/gui/psppire.ui:662
-msgid "Current Status : "
-msgstr ""
-
-#: src/ui/gui/psppire.ui:673
-msgid "Analysis by groups is off"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:709
-msgid "Compute Variable"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:742
-msgid "Target Variable:"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:771
-msgid "Type & Label"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:818
-msgid "="
-msgstr ""
-
-#: src/ui/gui/psppire.ui:872
-msgid "Numeric Expressions:"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:934
-msgid "Functions:"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:999 src/ui/gui/psppire.ui:1422
-#: src/ui/gui/recode.ui:741
-msgid "If..."
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1052
-msgid "Select Cases"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1240
-msgid "Use filter variable"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1299
-msgid "Based on time or case range"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1311
-msgid "Range..."
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1355
-msgid "Random sample of cases"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1368
-msgid "Sample..."
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1410
-msgid "If condition is satisfied"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1462
-msgid "All Cases"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1477
-msgid "Select"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1504
-msgid "Filtered"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1520
-msgid "Deleted"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1543
-msgid "Unselected Cases Are"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1585
msgid "Data File Comments"
msgstr ""
-#: src/ui/gui/psppire.ui:1609
+#: src/ui/gui/psppire.ui:407
msgid "Comments:"
msgstr ""
-#: src/ui/gui/psppire.ui:1650
+#: src/ui/gui/psppire.ui:448
msgid "Display comments in output"
msgstr ""
-#: src/ui/gui/psppire.ui:1669
+#: src/ui/gui/psppire.ui:467
msgid "Column Number: 0"
msgstr ""
-#: src/ui/gui/psppire.ui:1703
-msgid "Select Cases: Range"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1750
-msgid "First case"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1763
-msgid "Last case"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1776
-msgid "Observation"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1808
-msgid "Compute Variable: Type and Label"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:1843
-msgid "Use expression as label"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:2088
-msgid "Goto Case"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:2106
-msgid "Goto Case Number:"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:2149
-msgid "Select Cases: Random Sample"
-msgstr ""
-
-#: src/ui/gui/psppire.ui:2247
-msgid "Sample Size"
-msgstr ""
-
#: src/ui/gui/rank.ui:8
msgid "Rank Cases"
msgstr ""
msgid "Sort Order"
msgstr ""
+#: src/ui/gui/split-file.ui:8
+msgid "Split File"
+msgstr ""
+
+#: src/ui/gui/split-file.ui:68
+msgid "Analyze all cases. Do not create groups."
+msgstr "Analyse all cases. Do not create groups."
+
+#: src/ui/gui/split-file.ui:84
+msgid "Compare groups."
+msgstr ""
+
+#: src/ui/gui/split-file.ui:100
+msgid "Organize output by groups."
+msgstr "Organise output by groups."
+
+#: src/ui/gui/split-file.ui:158
+msgid "Groups based on:"
+msgstr ""
+
+#: src/ui/gui/split-file.ui:217
+msgid "Sort the file by grouping variables."
+msgstr ""
+
+#: src/ui/gui/split-file.ui:234
+msgid "File is already sorted."
+msgstr ""
+
+#: src/ui/gui/split-file.ui:287
+msgid "Current Status : "
+msgstr ""
+
+#: src/ui/gui/split-file.ui:298
+msgid "Analysis by groups is off"
+msgstr ""
+
#: src/ui/gui/recode.ui:185 src/ui/gui/recode.ui:467
msgid "System Missing"
msgstr ""
msgstr ""
#: src/ui/gui/recode.ui:596
-msgid "Convert numeric strings to numbers ('5' -> 5)"
-msgstr ""
+msgid "Convert numeric strings to numbers (`5' -> 5)"
+msgstr "Convert numeric strings to numbers (‘5’ -> 5)"
#: src/ui/gui/recode.ui:614
msgid "Output variables are strings"
msgid "Regression: Statistics"
msgstr ""
-#: src/ui/gui/reliability.ui:27
+#: src/ui/gui/reliability.ui:26
msgid "Reliability Analysis"
msgstr ""
-#: src/ui/gui/reliability.ui:114
+#: src/ui/gui/reliability.ui:124
msgid "_Items:"
msgstr ""
-#: src/ui/gui/reliability.ui:136
+#: src/ui/gui/reliability.ui:141
msgid "Model:\t"
msgstr ""
-#: src/ui/gui/reliability.ui:175
+#: src/ui/gui/reliability.ui:180
msgid "Variables in first split:"
msgstr ""
+#: src/ui/gui/reliability.ui:217
+msgid "Show descriptives for scale if _item is deleted"
+msgstr ""
+
#: src/ui/gui/roc.ui:115
msgid "_Test Variable:"
msgstr ""
msgid "_Coordinate points of the ROC Curve"
msgstr ""
+#: src/ui/gui/select-cases.ui:8
+msgid "Select Cases"
+msgstr ""
+
+#: src/ui/gui/select-cases.ui:196
+msgid "Use filter variable"
+msgstr ""
+
+#: src/ui/gui/select-cases.ui:255
+msgid "Based on time or case range"
+msgstr ""
+
+#: src/ui/gui/select-cases.ui:267
+msgid "Range..."
+msgstr ""
+
+#: src/ui/gui/select-cases.ui:311
+msgid "Random sample of cases"
+msgstr ""
+
+#: src/ui/gui/select-cases.ui:324
+msgid "Sample..."
+msgstr ""
+
+#: src/ui/gui/select-cases.ui:366
+msgid "If condition is satisfied"
+msgstr ""
+
+#: src/ui/gui/select-cases.ui:418
+msgid "All Cases"
+msgstr ""
+
+#: src/ui/gui/select-cases.ui:433
+msgid "Select"
+msgstr ""
+
+#: src/ui/gui/select-cases.ui:460
+msgid "Filtered"
+msgstr ""
+
+#: src/ui/gui/select-cases.ui:476
+msgid "Deleted"
+msgstr ""
+
+#: src/ui/gui/select-cases.ui:499
+msgid "Unselected Cases Are"
+msgstr ""
+
+#: src/ui/gui/select-cases.ui:541
+msgid "Select Cases: Range"
+msgstr ""
+
+#: src/ui/gui/select-cases.ui:590
+msgid "First case"
+msgstr ""
+
+#: src/ui/gui/select-cases.ui:603
+msgid "Last case"
+msgstr ""
+
+#: src/ui/gui/select-cases.ui:616
+msgid "Observation"
+msgstr ""
+
+#: src/ui/gui/select-cases.ui:648
+msgid "Select Cases: Random Sample"
+msgstr ""
+
+#: src/ui/gui/select-cases.ui:746
+msgid "Sample Size"
+msgstr ""
+
#: src/ui/gui/t-test.ui:8
msgid "Independent-Samples T Test"
msgstr ""
"below how much of the file should actually be imported."
msgstr ""
-#: src/ui/gui/text-data-import.ui:52
+#: src/ui/gui/text-data-import.ui:95
msgid "All cases"
msgstr ""
-#: src/ui/gui/text-data-import.ui:71 src/ui/gui/text-data-import.ui:128
-msgid "Only first "
-msgstr ""
-
-#: src/ui/gui/text-data-import.ui:106
-msgid " cases"
-msgstr ""
-
-#: src/ui/gui/text-data-import.ui:162
-msgid "% of file (approximately)"
-msgstr ""
-
-#: src/ui/gui/text-data-import.ui:183
+#: src/ui/gui/text-data-import.ui:116
msgid "<b>Amount to Import</b>"
msgstr ""
-#: src/ui/gui/text-data-import.ui:202
+#: src/ui/gui/text-data-import.ui:135
msgid "Select Data to Import"
msgstr ""
-#: src/ui/gui/text-data-import.ui:213
+#: src/ui/gui/text-data-import.ui:146
msgid "Select the first line of the data file that contains data."
msgstr ""
-#: src/ui/gui/text-data-import.ui:241
+#: src/ui/gui/text-data-import.ui:174
msgid "Line above selected line contains variable names"
msgstr ""
-#: src/ui/gui/text-data-import.ui:259
+#: src/ui/gui/text-data-import.ui:192
msgid "Choose Separators"
msgstr ""
-#: src/ui/gui/text-data-import.ui:305
+#: src/ui/gui/text-data-import.ui:238
msgid "C_ustom"
msgstr ""
-#: src/ui/gui/text-data-import.ui:320
+#: src/ui/gui/text-data-import.ui:253
msgid "Slas_h (/)"
msgstr ""
-#: src/ui/gui/text-data-import.ui:337
+#: src/ui/gui/text-data-import.ui:270
msgid "Semicolo_n (;)"
msgstr ""
-#: src/ui/gui/text-data-import.ui:354
+#: src/ui/gui/text-data-import.ui:287
msgid "P_ipe (|)"
msgstr ""
-#: src/ui/gui/text-data-import.ui:369
+#: src/ui/gui/text-data-import.ui:302
msgid "H_yphen (-)"
msgstr ""
-#: src/ui/gui/text-data-import.ui:386
+#: src/ui/gui/text-data-import.ui:319
msgid "Co_mma (,)"
msgstr ""
-#: src/ui/gui/text-data-import.ui:403
+#: src/ui/gui/text-data-import.ui:336
msgid "_Colon (:)"
msgstr ""
-#: src/ui/gui/text-data-import.ui:418
+#: src/ui/gui/text-data-import.ui:351
msgid "Ban_g (!)"
msgstr ""
-#: src/ui/gui/text-data-import.ui:433
+#: src/ui/gui/text-data-import.ui:366
msgid "Ta_b"
msgstr ""
-#: src/ui/gui/text-data-import.ui:448
+#: src/ui/gui/text-data-import.ui:381
msgid "_Space"
msgstr ""
-#: src/ui/gui/text-data-import.ui:465
+#: src/ui/gui/text-data-import.ui:398
msgid "<b>Separators</b>"
msgstr ""
-#: src/ui/gui/text-data-import.ui:495
+#: src/ui/gui/text-data-import.ui:428
msgid "Doubled quote mark treated as escape"
msgstr ""
-#: src/ui/gui/text-data-import.ui:524
+#: src/ui/gui/text-data-import.ui:457
msgid "Quote separator characters with"
msgstr ""
-#: src/ui/gui/text-data-import.ui:544
+#: src/ui/gui/text-data-import.ui:477
msgid "<b>Quoting</b>"
msgstr ""
-#: src/ui/gui/text-data-import.ui:592
+#: src/ui/gui/text-data-import.ui:525
msgid "<b>Fields Preview</b>"
msgstr ""
-#: src/ui/gui/text-data-import.ui:607
+#: src/ui/gui/text-data-import.ui:540
msgid "Adjust Variable Formats"
msgstr ""
-#: src/ui/gui/text-data-import.ui:618
+#: src/ui/gui/text-data-import.ui:551
msgid ""
"Check the data formats displayed below and fix any that are incorrect. You "
"may set other variable properties now or later."
msgstr ""
-#: src/ui/gui/text-data-import.ui:662
+#: src/ui/gui/text-data-import.ui:595
msgid "<b>Variables</b>"
msgstr ""
-#: src/ui/gui/text-data-import.ui:705
+#: src/ui/gui/text-data-import.ui:638
msgid "<b>Data Preview</b>"
msgstr ""
msgid "Variable Information:"
msgstr ""
-#: src/ui/gui/data-editor.ui:9
-msgid "Sort Ascending"
-msgstr ""
-
-#: src/ui/gui/data-editor.ui:15
-msgid "Sort Descending"
-msgstr ""
-
-#: src/ui/gui/data-editor.ui:26 src/ui/gui/output-viewer.ui:9
+#: src/ui/gui/data-editor.ui:23 src/ui/gui/output-viewer.ui:9
#: src/ui/gui/syntax-editor.ui:10
msgid "_File"
msgstr ""
-#: src/ui/gui/data-editor.ui:38 src/ui/gui/syntax-editor.ui:22
+#: src/ui/gui/data-editor.ui:35 src/ui/gui/syntax-editor.ui:22
#: src/ui/gui/syntax-editor.ui:40
msgid "_Syntax"
msgstr ""
-#: src/ui/gui/data-editor.ui:44 src/ui/gui/data-editor.ui:218
-#: src/ui/gui/data-editor.ui:230 src/ui/gui/syntax-editor.ui:28
+#: src/ui/gui/data-editor.ui:41 src/ui/gui/data-editor.ui:214
+#: src/ui/gui/data-editor.ui:226 src/ui/gui/syntax-editor.ui:28
#: src/ui/gui/syntax-editor.ui:46
msgid "_Data"
msgstr ""
-#: src/ui/gui/data-editor.ui:56
+#: src/ui/gui/data-editor.ui:53
msgid "_Import Delimited Text Data"
msgstr ""
-#: src/ui/gui/data-editor.ui:75
+#: src/ui/gui/data-editor.ui:72
msgid "D_isplay Data File Information"
msgstr ""
-#: src/ui/gui/data-editor.ui:82
+#: src/ui/gui/data-editor.ui:79
msgid "Working File"
msgstr ""
-#: src/ui/gui/data-editor.ui:88
+#: src/ui/gui/data-editor.ui:85
msgid "External File"
msgstr ""
-#: src/ui/gui/data-editor.ui:94
+#: src/ui/gui/data-editor.ui:91
msgid "Recently Used Da_ta"
msgstr ""
-#: src/ui/gui/data-editor.ui:100
+#: src/ui/gui/data-editor.ui:97
msgid "Recently Used _Files"
msgstr ""
-#: src/ui/gui/data-editor.ui:112 src/ui/gui/output-viewer.ui:28
+#: src/ui/gui/data-editor.ui:109 src/ui/gui/output-viewer.ui:28
#: src/ui/gui/syntax-editor.ui:70
msgid "_Edit"
msgstr ""
-#: src/ui/gui/data-editor.ui:118
+#: src/ui/gui/data-editor.ui:115
msgid "Insert Variable"
msgstr ""
-#: src/ui/gui/data-editor.ui:119
+#: src/ui/gui/data-editor.ui:116
msgid "Create a new variable at the current position"
msgstr ""
-#: src/ui/gui/data-editor.ui:126
+#: src/ui/gui/data-editor.ui:123
msgid "Insert Cases"
msgstr ""
-#: src/ui/gui/data-editor.ui:127
+#: src/ui/gui/data-editor.ui:124
msgid "Create a new case at the current position"
msgstr ""
-#: src/ui/gui/data-editor.ui:133
+#: src/ui/gui/data-editor.ui:130
msgid "Go To Case"
msgstr ""
-#: src/ui/gui/data-editor.ui:135
+#: src/ui/gui/data-editor.ui:132
msgid "Jump to a case in the data sheet"
msgstr ""
-#: src/ui/gui/data-editor.ui:161
+#: src/ui/gui/data-editor.ui:158
msgid "Cl_ear Variables"
msgstr ""
-#: src/ui/gui/data-editor.ui:162
+#: src/ui/gui/data-editor.ui:159
msgid "Delete the variables at the selected position(s)"
msgstr ""
-#: src/ui/gui/data-editor.ui:170
+#: src/ui/gui/data-editor.ui:167
msgid "_Clear Cases"
msgstr ""
-#: src/ui/gui/data-editor.ui:171
+#: src/ui/gui/data-editor.ui:168
msgid "Delete the cases at the selected position(s)"
msgstr ""
-#: src/ui/gui/data-editor.ui:183
+#: src/ui/gui/data-editor.ui:180
msgid "_View"
msgstr ""
-#: src/ui/gui/data-editor.ui:190
+#: src/ui/gui/data-editor.ui:187
msgid "_Status Bar"
msgstr ""
-#: src/ui/gui/data-editor.ui:196
-msgid "_Fonts"
-msgstr ""
-
-#: src/ui/gui/data-editor.ui:204
+#: src/ui/gui/data-editor.ui:200
msgid "_Grid Lines"
msgstr ""
-#: src/ui/gui/data-editor.ui:210
+#: src/ui/gui/data-editor.ui:206
msgid "Value _Labels"
msgstr ""
-#: src/ui/gui/data-editor.ui:211
+#: src/ui/gui/data-editor.ui:207
msgid "Show/hide value labels"
msgstr ""
-#: src/ui/gui/data-editor.ui:224 src/ui/gui/data-editor.ui:431
+#: src/ui/gui/data-editor.ui:220 src/ui/gui/data-editor.ui:434
msgid "_Variables"
msgstr ""
-#: src/ui/gui/data-editor.ui:235
+#: src/ui/gui/data-editor.ui:231
msgid "_Sort Cases"
msgstr ""
-#: src/ui/gui/data-editor.ui:238
+#: src/ui/gui/data-editor.ui:234
msgid "Sort cases in the active file"
msgstr ""
-#: src/ui/gui/data-editor.ui:245
+#: src/ui/gui/data-editor.ui:241
msgid "_Transpose"
msgstr ""
-#: src/ui/gui/data-editor.ui:246
+#: src/ui/gui/data-editor.ui:242
msgid "Transpose the cases with the variables"
msgstr ""
-#: src/ui/gui/data-editor.ui:252
+#: src/ui/gui/data-editor.ui:249
+msgid "_Aggregate"
+msgstr ""
+
+#: src/ui/gui/data-editor.ui:255
msgid "S_plit File"
msgstr ""
-#: src/ui/gui/data-editor.ui:253
+#: src/ui/gui/data-editor.ui:256
msgid "Split the active file"
msgstr ""
-#: src/ui/gui/data-editor.ui:260
+#: src/ui/gui/data-editor.ui:263
msgid "Select _Cases"
msgstr ""
-#: src/ui/gui/data-editor.ui:266
+#: src/ui/gui/data-editor.ui:269
msgid "_Weight Cases"
msgstr ""
-#: src/ui/gui/data-editor.ui:267
+#: src/ui/gui/data-editor.ui:270
msgid "Weight cases by variable"
msgstr ""
-#: src/ui/gui/data-editor.ui:274
+#: src/ui/gui/data-editor.ui:277
msgid "_Transform"
msgstr ""
-#: src/ui/gui/data-editor.ui:280
+#: src/ui/gui/data-editor.ui:283
msgid "_Compute"
msgstr ""
-#: src/ui/gui/data-editor.ui:286
+#: src/ui/gui/data-editor.ui:289
msgid "Ran_k Cases"
msgstr ""
-#: src/ui/gui/data-editor.ui:292
+#: src/ui/gui/data-editor.ui:295
msgid "Recode into _Same Variables"
msgstr ""
-#: src/ui/gui/data-editor.ui:298
+#: src/ui/gui/data-editor.ui:301
msgid "Recode into _Different Variables"
msgstr ""
-#: src/ui/gui/data-editor.ui:304
+#: src/ui/gui/data-editor.ui:307
msgid "_Run Pending Transforms"
msgstr ""
-#: src/ui/gui/data-editor.ui:311
+#: src/ui/gui/data-editor.ui:314
msgid "_Analyze"
msgstr "_Analyse"
-#: src/ui/gui/data-editor.ui:317
+#: src/ui/gui/data-editor.ui:320
msgid "_Descriptive Statistics"
msgstr ""
-#: src/ui/gui/data-editor.ui:323
+#: src/ui/gui/data-editor.ui:326
msgid "_Frequencies"
msgstr ""
-#: src/ui/gui/data-editor.ui:335
+#: src/ui/gui/data-editor.ui:338
msgid "_Explore"
msgstr ""
-#: src/ui/gui/data-editor.ui:341
+#: src/ui/gui/data-editor.ui:344
msgid "_Crosstabs"
msgstr ""
-#: src/ui/gui/data-editor.ui:347
+#: src/ui/gui/data-editor.ui:350
msgid "Compare _Means"
msgstr ""
-#: src/ui/gui/data-editor.ui:353
+#: src/ui/gui/data-editor.ui:356
msgid "_One Sample T Test"
msgstr ""
-#: src/ui/gui/data-editor.ui:359
+#: src/ui/gui/data-editor.ui:362
msgid "_Independent Samples T Test"
msgstr ""
-#: src/ui/gui/data-editor.ui:365
+#: src/ui/gui/data-editor.ui:368
msgid "_Paired Samples T Test"
msgstr ""
-#: src/ui/gui/data-editor.ui:371
+#: src/ui/gui/data-editor.ui:374
msgid "One Way _ANOVA"
msgstr ""
-#: src/ui/gui/data-editor.ui:377
+#: src/ui/gui/data-editor.ui:380
msgid "Bivariate _Correlation..."
msgstr ""
-#: src/ui/gui/data-editor.ui:383
+#: src/ui/gui/data-editor.ui:386
msgid "Factor _Analysis"
msgstr ""
-#: src/ui/gui/data-editor.ui:389
+#: src/ui/gui/data-editor.ui:392
msgid "Re_liability"
msgstr ""
-#: src/ui/gui/data-editor.ui:395
+#: src/ui/gui/data-editor.ui:398
msgid "Linear _Regression"
msgstr ""
-#: src/ui/gui/data-editor.ui:401
+#: src/ui/gui/data-editor.ui:404
msgid "_Non-Parametric Statistics"
msgstr ""
-#: src/ui/gui/data-editor.ui:407
+#: src/ui/gui/data-editor.ui:410
msgid "_Chi-Square"
msgstr ""
-#: src/ui/gui/data-editor.ui:413
+#: src/ui/gui/data-editor.ui:416
msgid "_Binomial"
msgstr ""
-#: src/ui/gui/data-editor.ui:419
+#: src/ui/gui/data-editor.ui:422
msgid "ROC Cur_ve..."
msgstr ""
-#: src/ui/gui/data-editor.ui:425
+#: src/ui/gui/data-editor.ui:428
msgid "_Utilities"
msgstr ""
-#: src/ui/gui/data-editor.ui:432
+#: src/ui/gui/data-editor.ui:435
msgid "Jump to variable"
msgstr ""
-#: src/ui/gui/data-editor.ui:439
+#: src/ui/gui/data-editor.ui:442
msgid "Data File _Comments"
msgstr ""
-#: src/ui/gui/data-editor.ui:445 src/ui/gui/output-viewer.ui:46
-#: src/ui/gui/syntax-editor.ui:131
+#: src/ui/gui/data-editor.ui:448 src/ui/gui/output-viewer.ui:46
+#: src/ui/gui/syntax-editor.ui:135
msgid "_Windows"
msgstr ""
-#: src/ui/gui/data-editor.ui:451 src/ui/gui/output-viewer.ui:52
-#: src/ui/gui/syntax-editor.ui:137
+#: src/ui/gui/data-editor.ui:454 src/ui/gui/output-viewer.ui:52
+#: src/ui/gui/syntax-editor.ui:141
msgid "_Minimize All Windows"
msgstr "_Minimise All Windows"
-#: src/ui/gui/data-editor.ui:457
+#: src/ui/gui/data-editor.ui:460
msgid "_Split"
msgstr ""
-#: src/ui/gui/data-editor.ui:631
+#: src/ui/gui/data-editor.ui:635
msgid "Information Area"
msgstr ""
-#: src/ui/gui/data-editor.ui:653
+#: src/ui/gui/data-editor.ui:657
msgid "Processor Area"
msgstr ""
-#: src/ui/gui/data-editor.ui:678
+#: src/ui/gui/data-editor.ui:682
msgid "Case Counter Area"
msgstr ""
-#: src/ui/gui/data-editor.ui:703
+#: src/ui/gui/data-editor.ui:707
msgid "Filter Use Status Area"
msgstr ""
-#: src/ui/gui/data-editor.ui:729
+#: src/ui/gui/data-editor.ui:733
msgid "Weight Status Area"
msgstr ""
-#: src/ui/gui/data-editor.ui:755
+#: src/ui/gui/data-editor.ui:759
msgid "Split File Status Area"
msgstr ""
msgid "_Export"
msgstr ""
-#: src/ui/gui/syntax-editor.ui:100
+#: src/ui/gui/syntax-editor.ui:104
msgid "_Run"
msgstr ""
-#: src/ui/gui/syntax-editor.ui:106
+#: src/ui/gui/syntax-editor.ui:110
msgid "All"
msgstr ""
-#: src/ui/gui/syntax-editor.ui:112
+#: src/ui/gui/syntax-editor.ui:116
msgid "Selection"
msgstr ""
-#: src/ui/gui/syntax-editor.ui:118
+#: src/ui/gui/syntax-editor.ui:122
msgid "Current Line"
msgstr ""
-#: src/ui/gui/syntax-editor.ui:125
+#: src/ui/gui/syntax-editor.ui:129
msgid "To End"
msgstr ""
-
-#~ msgid "cannot initialize output driver `%s' of class `%s'"
-#~ msgstr "cannot initialise output driver `%s' of class `%s'"
-
-#~ msgid "Options affecting syntax and behavior:"
-#~ msgstr "Options affecting syntax and behaviour:"
-
-#~ msgid ""
-#~ " This program is free software: you can redistribute it and/or modify\n"
-#~ " it under the terms of the GNU General Public License as published by\n"
-#~ " the Free Software Foundation, either version 3 of the License, or\n"
-#~ " (at your option) any later version.\n"
-#~ "\n"
-#~ " This program is distributed in the hope that it will be useful,\n"
-#~ " but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-#~ " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
-#~ " GNU General Public License for more details.\n"
-#~ "\n"
-#~ " You should have received a copy of the GNU General Public License\n"
-#~ " along with this program. If not, see <http://www.gnu.org/licenses/>.\n"
-#~ msgstr ""
-#~ "\" This program is free software: you can redistribute it and/or modify"
-#~ "\\n\"\n"
-#~ "\" it under the terms of the GNU General Public License as published by"
-#~ "\\n\"\n"
-#~ "\" the Free Software Foundation, either version 3 of the Licence, or\\n"
-#~ "\"\n"
-#~ "\" (at your option) any later version.\\n\"\n"
-#~ "\"\\n\"\n"
-#~ "\" This program is distributed in the hope that it will be useful,\\n"
-#~ "\"\n"
-#~ "\" but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n"
-#~ "\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n\"\n"
-#~ "\" GNU General Public License for more details.\\n\"\n"
-#~ "\"\\n\"\n"
-#~ "\" You should have received a copy of the GNU General Public License\\n"
-#~ "\"\n"
-#~ "\" along with this program. If not, see <http://www.gnu.org/licenses/>."
-#~ "\\n\"\n"
# Spanish messages for PSPP
# Copyright (C) 2009, 2010 Free Software Foundation, Inc.
# This file is distributed under the same licence as the pspp package.
+# Francisco J. Miguel Quesada <Miguel.Quesada@uab.cat>, 2009.
# Palmira Payá Sanchez, 2009.
# Javier Gómez Serrano, 2009.
# Francesc Josep Miguel Quesada <Miguel.Quesada@uab.cat>, 2010.
#
msgid ""
msgstr ""
-"Project-Id-Version: pspp-0.7.2-pre1\n"
+"Project-Id-Version: pspp-0.7.5\n"
"Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2010-05-21 12:02+0200\n"
-"PO-Revision-Date: 2010-02-03 20:19+0100\n"
+"POT-Creation-Date: 2010-05-21 16:40-0700\n"
+"PO-Revision-Date: 2010-10-13 13:30+0200\n"
"Last-Translator: Francesc Josep Miguel Quesada <Miguel.Quesada@uab.cat>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
msgstr "Prefiero las etiquetas de variable"
#: src/ui/gui/psppire-var-view.c:193
-#, fuzzy, c-format
+#, c-format
msgid "Var%d"
-msgstr "Pareja %d"
+msgstr "Var%d"
#: src/data/any-reader.c:56
#, c-format
#: src/data/calendar.c:96
#, c-format
msgid "Date %04d-%d-%d is before the earliest acceptable date of 1582-10-15."
-msgstr ""
-"La fecha %04d-%d-%d es anterior a la fecha aceptada más antigua, 1582-10-15."
+msgstr "La fecha %04d-%d-%d es anterior a la fecha aceptada más antigua, 1582-10-15."
#: src/data/casereader-filter.c:221
-msgid ""
-"At least one case in the data read had a weight value that was user-missing, "
-"system-missing, zero, or negative. These case(s) were ignored."
-msgstr ""
-"Al menos un caso en la lectura de datos tenia un valor de ponderación que es "
-"perdido del usuari, del sistema, cero o negativo. Este(os) caso(s) fueron "
-"ignorado(s)."
+msgid "At least one case in the data read had a weight value that was user-missing, system-missing, zero, or negative. These case(s) were ignored."
+msgstr "Al menos un caso en la lectura de datos tenia un valor de ponderación que es perdido del usuari, del sistema, cero o negativo. Este(os) caso(s) fueron ignorado(s)."
#: src/data/data-in.c:274 src/data/data-in.c:464
msgid "Field contents are not numeric."
msgstr "En la fecha se espera un delimitador entre los campos."
#: src/data/data-in.c:837
-msgid ""
-"Unrecognized month format. Months may be specified as Arabic or Roman "
-"numerals or as at least 3 letters of their English names."
-msgstr ""
-"Formato de mes no reconocido. Los meses pueden ser especificados como "
-"números Arábicos o Romanos, o como mínimo 3 letras de sus nombres en Inglés."
+msgid "Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names."
+msgstr "Formato de mes no reconocido. Los meses pueden ser especificados como números Arábicos o Romanos, o como mínimo 3 letras de sus nombres en Inglés."
#: src/data/data-in.c:864
#, c-format
msgstr "Minuto (%ld) debe estar entre 0 y 59."
#: src/data/data-in.c:1014
-msgid ""
-"Unrecognized weekday name. At least the first two letters of an English "
-"weekday name must be specified."
-msgstr ""
-"Día de la semana no reconocido. Al menos se deben especificar las dos "
-"primeras letras del nombre en inglés."
+msgid "Unrecognized weekday name. At least the first two letters of an English weekday name must be specified."
+msgstr "Día de la semana no reconocido. Al menos se deben especificar las dos primeras letras del nombre en inglés."
#: src/data/data-in.c:1152
#, c-format
msgstr "cero"
#: src/data/dictionary.c:980
-msgid ""
-"At least one case in the data file had a weight value that was user-missing, "
-"system-missing, zero, or negative. These case(s) were ignored."
-msgstr ""
-"Al menos un caso del archivo de datos tenía un valor de ponderación perdido "
-"de usuario, de sistema, cero o negativo. Estos caso(s) fueron ignorado(s)."
+msgid "At least one case in the data file had a weight value that was user-missing, system-missing, zero, or negative. These case(s) were ignored."
+msgstr "Al menos un caso del archivo de datos tenía un valor de ponderación perdido de usuario, de sistema, cero o negativo. Estos caso(s) fueron ignorado(s)."
#: src/data/dictionary.c:1283
#, c-format
#: src/data/file-handle-def.c:462
#, c-format
msgid "Can't read from %s as a %s because it is already being read as a %s."
-msgstr ""
-"No se puede leer de %s como una %s porque ya esta siendo leída como una %s."
+msgstr "No se puede leer de %s como una %s porque ya esta siendo leída como una %s."
#: src/data/file-handle-def.c:466
#, c-format
msgid "Can't write to %s as a %s because it is already being written as a %s."
-msgstr ""
-"No se puede escribir en %s como una %s porque ya esta siendo escrita como "
-"una %s."
+msgstr "No se puede escribir en %s como una %s porque ya esta siendo escrita como una %s."
#: src/data/file-handle-def.c:473
#, c-format
#: src/data/file-name.c:168
#, c-format
msgid "Not opening pipe file `%s' because SAFER option set."
-msgstr ""
-"No abrir el archivo de transferencia '%s' porque la opción SAFER esta "
-"activada."
+msgstr "No abrir el archivo de transferencia '%s' porque la opción SAFER esta activada."
#: src/data/format.c:235
msgid "Input format"
msgid "Format %s may not be used for input."
msgstr "Formato %s no puede ser utilizado como entrada."
-# anchura o longitud o..
#: src/data/format.c:251
#, c-format
msgid "%s specifies width %d, but %s requires an even width."
#: src/data/format.c:260
#, c-format
msgid "%s %s specifies width %d, but %s requires a width between %d and %d."
-msgstr ""
-"%s %s especifica anchura %d, pero %s requiere una anchura entre %d y %d."
+msgstr "%s %s especifica anchura %d, pero %s requiere una anchura entre %d y %d."
#: src/data/format.c:269
#, c-format
msgid "%s %s specifies %d decimal place, but %s does not allow any decimals."
-msgid_plural ""
-"%s %s specifies %d decimal places, but %s does not allow any decimals."
+msgid_plural "%s %s specifies %d decimal places, but %s does not allow any decimals."
msgstr[0] "%s %s especifica %d lugar decimal, pero %s no permite ninguno."
msgstr[1] "%s %s especifica %d lugares decimales, pero %s no permite ninguno."
#: src/data/format.c:280
#, c-format
-msgid ""
-"%s %s specifies %d decimal place, but the given width allows at most %d "
-"decimals."
-msgid_plural ""
-"%s %s specifies %d decimal places, but the given width allows at most %d "
-"decimals."
-msgstr[0] ""
-"%s %s especifica %d lugar decimal, pero la anchura dada permite como mucho %"
-"d decimales."
-msgstr[1] ""
-"%s %s especifica %d lugares decimales, pero la anchura dada permite como "
-"mucho %d decimales."
+msgid "%s %s specifies %d decimal place, but the given width allows at most %d decimals."
+msgid_plural "%s %s specifies %d decimal places, but the given width allows at most %d decimals."
+msgstr[0] "%s %s especifica %d lugar decimal, pero la anchura dada permite como mucho %d decimales."
+msgstr[1] "%s %s especifica %d lugares decimales, pero la anchura dada permite como mucho %d decimales."
#: src/data/format.c:287
#, c-format
-msgid ""
-"%s %s specifies %d decimal place, but the given width does not allow for any "
-"decimals."
-msgid_plural ""
-"%s %s specifies %d decimal places, but the given width does not allow for "
-"any decimals."
-msgstr[0] ""
-"%s %s especifica %d lugar decimal, pero la anchura dada no permite ninguno."
-msgstr[1] ""
-"%s %s especifica %d lugares decimales, pero la anchura dada no permite "
-"ninguno."
+msgid "%s %s specifies %d decimal place, but the given width does not allow for any decimals."
+msgid_plural "%s %s specifies %d decimal places, but the given width does not allow for any decimals."
+msgstr[0] "%s %s especifica %d lugar decimal, pero la anchura dada no permite ninguno."
+msgstr[1] "%s %s especifica %d lugares decimales, pero la anchura dada no permite ninguno."
#: src/data/format.c:326
#, c-format
msgid "string"
msgstr "cadena"
-# amplitud, ancho?
#: src/data/format.c:346
#, c-format
msgid "String variable with width %d is not compatible with format %s."
msgstr "Variable de cadena con ancho %d no es compatible con el formato %s."
#: src/data/gnumeric-reader.c:36
-msgid ""
-"Support for Gnumeric files was not compiled into this installation of PSPP"
-msgstr ""
-"Soporte para archivos Gnumeric no fue compilado en esta instalación de PSPP"
+msgid "Support for Gnumeric files was not compiled into this installation of PSPP"
+msgstr "Soporte para archivos Gnumeric no fue compilado en esta instalación de PSPP"
#: src/data/gnumeric-reader.c:364
#, c-format
#: src/data/gnumeric-reader.c:528
#, c-format
msgid "Selected sheet or range of spreadsheet \"%s\" is empty."
-msgstr ""
-"La hoja o el intervalo de hojas de cálculo seleccionadas \"%s\" está vacía."
+msgstr "La hoja o el intervalo de hojas de cálculo seleccionadas \"%s\" está vacía."
#: src/data/make-file.c:68
#, c-format
msgstr "Eliminando %s: %s."
#: src/data/por-file-reader.c:99
-#, fuzzy, c-format
+#, c-format
msgid "portable file %s corrupt at offset 0x%llx: "
-msgstr "archivo portátil %s corrompido a la posición 0x%lx: "
+msgstr "el archivo portátil %s está corrupto en la posición 0x%llx: "
#: src/data/por-file-reader.c:128
-#, fuzzy, c-format
+#, c-format
msgid "reading portable file %s at offset 0x%llx: "
-msgstr "leyendo el archivo portátil %s en la posición 0x%lx: "
+msgstr "leyendo el archivo portátil %s en la posición 0x%llx: "
#: src/data/por-file-reader.c:156
#, c-format
#: src/data/por-file-reader.c:275
#, c-format
-msgid ""
-"An error occurred while opening \"%s\" for reading as a portable file: %s."
+msgid "An error occurred while opening \"%s\" for reading as a portable file: %s."
msgstr "Error en abrir \"%s\" para la lectura como archivo portátil: %s."
#: src/data/por-file-reader.c:296
msgid "Number expected."
msgstr "Número esperado."
-# Falta, ausencia?
#: src/data/por-file-reader.c:406
msgid "Missing numeric terminator."
msgstr "Falta la terminación numérica."
#: src/data/por-file-reader.c:593
#, c-format
-msgid ""
-"%s: Bad format specifier byte (%d). Variable will be assigned a default "
-"format."
-msgstr ""
-"%s: Byte especificador de formato inválido (%d). Se asignará formato "
-"predeterminado a la variable."
+msgid "%s: Bad format specifier byte (%d). Variable will be assigned a default format."
+msgstr "%s: Byte especificador de formato inválido (%d). Se asignará formato predeterminado a la variable."
#: src/data/por-file-reader.c:614
#, c-format
msgid "Numeric variable %s has invalid format specifier %s."
-msgstr ""
-"La variable numérica %s tiene una especificación de formato inválida %s."
+msgstr "La variable numérica %s tiene una especificación de formato inválida %s."
#: src/data/por-file-reader.c:618
#, c-format
msgid "String variable %s with width %d has invalid format specifier %s."
-msgstr ""
-"La variable en cadena %s con longitud %d tiene una especificación de formato "
-"inválida %s."
+msgstr "La variable en cadena %s con longitud %d tiene una especificación de formato inválida %s."
#: src/data/por-file-reader.c:642
msgid "Expected variable count record."
msgid "Expected variable record."
msgstr "Registro de variable esperado."
-# ancho?
#: src/data/por-file-reader.c:674
#, c-format
msgid "Invalid variable width %d."
#: src/data/por-file-reader.c:701
#, c-format
msgid "Duplicate variable name %s in position %d renamed to %s."
-msgstr ""
-"Nombre de la variable %s duplicado en la posición %d se ha renombrado a %s."
+msgstr "Nombre de la variable %s duplicado en la posición %d se ha renombrado a %s."
#: src/data/por-file-reader.c:750
#, c-format
#: src/data/por-file-reader.c:797
#, c-format
-msgid ""
-"Cannot assign value labels to %s and %s, which have different variable types."
-msgstr ""
-"No se puede asignar etiquetas de valor a %s y %s, que tienen diferentes "
-"tipos de variables."
+msgid "Cannot assign value labels to %s and %s, which have different variable types."
+msgstr "No se puede asignar etiquetas de valor a %s y %s, que tienen diferentes tipos de variables."
#: src/data/por-file-writer.c:141
#, c-format
msgstr "Error I/O en escribir el archivo portátil \"%s\"."
#: src/data/psql-reader.c:46
-msgid ""
-"Support for reading postgres databases was not compiled into this "
-"installation of PSPP"
-msgstr ""
-"El soporte para la lectura de las bases de datos postgres no fue compilado "
-"en esta instalación de PSPP"
+msgid "Support for reading postgres databases was not compiled into this installation of PSPP"
+msgstr "El soporte para la lectura de las bases de datos postgres no fue compilado en esta instalación de PSPP"
#: src/data/psql-reader.c:242
msgid "Memory error whilst opening psql source"
#: src/data/psql-reader.c:263
#, c-format
-msgid ""
-"Postgres server is version %s. Reading from versions earlier than 8.0 is not "
-"supported."
-msgstr ""
-"La versión del servidor Postgres es la %s. No es posible la lectura desde "
-"versiones anteriores a la 8.0."
+msgid "Postgres server is version %s. Reading from versions earlier than 8.0 is not supported."
+msgstr "La versión del servidor Postgres es la %s. No es posible la lectura desde versiones anteriores a la 8.0."
#: src/data/psql-reader.c:283
-msgid ""
-"Connection is unencrypted, but unencrypted connections have not been "
-"permitted."
-msgstr ""
-"La conexión no está cifrada, pero las conexiones sin cifrar no están "
-"permitidas."
+msgid "Connection is unencrypted, but unencrypted connections have not been permitted."
+msgstr "La conexión no está cifrada, pero las conexiones sin cifrar no están permitidas."
#: src/data/psql-reader.c:322 src/data/psql-reader.c:347
#: src/data/psql-reader.c:357
#: src/data/scratch-reader.c:54
#, c-format
-msgid ""
-"Scratch file handle %s has not yet been written, using SAVE or another "
-"procedure, so it cannot yet be used for reading."
-msgstr ""
-"El manipulador de archivos de trabajo %s aún no se ha escrito, utilizando "
-"SAVE u otro procedimiento, de forma que aún no se puede leer."
+msgid "Scratch file handle %s has not yet been written, using SAVE or another procedure, so it cannot yet be used for reading."
+msgstr "El manipulador de archivos de trabajo %s aún no se ha escrito, utilizando SAVE u otro procedimiento, de forma que aún no se puede leer."
#. TRANSLATORS: this fragment will be interpolated into
#. messages in fh_lock() that identify types of files.
#: src/data/settings.c:608
#, c-format
-msgid ""
-"%s: Custom currency string `%s' does not contain exactly three periods or "
-"commas (or it contains both)."
-msgstr ""
-"%s: La cadena de moneda personalizada '%s' no contiene exactamente tres "
-"puntos o comas (o contiene ambos)."
+msgid "%s: Custom currency string `%s' does not contain exactly three periods or commas (or it contains both)."
+msgstr "%s: La cadena de moneda personalizada '%s' no contiene exactamente tres puntos o comas (o contiene ambos)."
#: src/data/short-names.c:52
msgid "Variable suffix too large."
#: src/data/sys-file-reader.c:226
#, c-format
msgid "Recoded variable name duplicates an existing `%s' within system file."
-msgstr ""
-"El nombre de la variable recodificada duplica `%s' existente dentro del "
-"archivo del sistema."
+msgstr "El nombre de la variable recodificada duplica `%s' existente dentro del archivo del sistema."
#. TRANSLATORS: this fragment will be interpolated into
#. messages in fh_lock() that identify types of files.
#: src/data/sys-file-reader.c:388
#, c-format
msgid "File header claims %d variable positions but %d were read from file."
-msgstr ""
-"Cabecera del archivo requiere %d posiciones de variable, per se han leído %d "
-"desde el archivo."
+msgstr "Cabecera del archivo requiere %d posiciones de variable, per se han leído %d desde el archivo."
#: src/data/sys-file-reader.c:428
#, c-format
msgstr "Esto no es un archivo de sistema de SPSS."
#: src/data/sys-file-reader.c:525 tests/dissect-sysfile.c:227
-msgid ""
-"Compression bias is not the usual value of 100, or system file uses "
-"unrecognized floating-point format."
-msgstr ""
-"El sesgo de compresión no es el valor habitual de 100, o el archivo de "
-"sistema utiliza un formato de punto flotante no reconocido."
+msgid "Compression bias is not the usual value of 100, or system file uses unrecognized floating-point format."
+msgstr "El sesgo de compresión no es el valor habitual de 100, o el archivo de sistema utiliza un formato de punto flotante no reconocido."
#: src/data/sys-file-reader.c:602
#, c-format
#: src/data/sys-file-reader.c:649 tests/dissect-sysfile.c:387
msgid "Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3."
-msgstr ""
-"Campo de indicador de valores perdidos numéricos no es -3, -2, 0, 1, 2 o 3."
+msgstr "Campo de indicador de valores perdidos numéricos no es -3, -2, 0, 1, 2 o 3."
#: src/data/sys-file-reader.c:667 tests/dissect-sysfile.c:402
msgid "String missing value indicator field is not 0, 1, 2, or 3."
#: src/data/sys-file-reader.c:893
#, c-format
-msgid ""
-"Unrecognized record type 7, subtype %d. Please send a copy of this file, "
-"and the syntax which created it to %s"
-msgstr ""
-"Registro de tipo 7, subtipo %d , no reconocido. Por favor envíe una copia de "
-"este archivo, así como de la sintaxis que lo creó en %s"
+msgid "Unrecognized record type 7, subtype %d. Please send a copy of this file, and the syntax which created it to %s"
+msgstr "Registro de tipo 7, subtipo %d , no reconocido. Por favor envíe una copia de este archivo, así como de la sintaxis que lo creó en %s"
#: src/data/sys-file-reader.c:920 tests/dissect-sysfile.c:594
#, c-format
msgid "Bad size (%zu) or count (%zu) field on record type 7, subtype 3."
-msgstr ""
-"Campo de longitud (%zu) o cantidad (%zu) inválidos en el registro tipo 7, "
-"subtipo 3."
+msgstr "Campo de longitud (%zu) o cantidad (%zu) inválidos en el registro tipo 7, subtipo 3."
#: src/data/sys-file-reader.c:940
#, c-format
-msgid ""
-"Floating-point representation indicated by system file (%d) differs from "
-"expected (%d)."
-msgstr ""
-"Representación del punto flotante indicado por el archivo de sistema (%d) "
-"difiere de lo esperado (%d)."
+msgid "Floating-point representation indicated by system file (%d) differs from expected (%d)."
+msgstr "Representación del punto flotante indicado por el archivo de sistema (%d) difiere de lo esperado (%d)."
#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:110
-#, fuzzy
msgid "Little Endian"
-msgstr "Little Endian."
+msgstr "Tipo Little-Endian"
#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:109
-#, fuzzy
msgid "Big Endian"
-msgstr "Big Endian."
+msgstr "Tipo Big-Endian."
#: src/data/sys-file-reader.c:954
#, c-format
-msgid ""
-"Integer format indicated by system file (%s) differs from expected (%s)."
-msgstr ""
-"Formato entero indicado por el archivo de sistema (%s) difiere de lo "
-"esperado (%s)."
+msgid "Integer format indicated by system file (%s) differs from expected (%s)."
+msgstr "Formato entero indicado por el archivo de sistema (%s) difiere de lo esperado (%s)."
#: src/data/sys-file-reader.c:1011 tests/dissect-sysfile.c:625
#, c-format
#: src/data/sys-file-reader.c:1056
#, c-format
msgid "Missing space following 'C' at offset %zu in MRSETS record"
-msgstr ""
+msgstr "Espacio perdido tras 'C' en la posición %zu del registro MRSETS"
#: src/data/sys-file-reader.c:1074 tests/dissect-sysfile.c:691
#, c-format
msgid "Missing space following 'E' at offset %zu in MRSETS record"
-msgstr ""
+msgstr "Espacio perdido tras 'E' en la posición %zu del registro MRSETS"
#: src/data/sys-file-reader.c:1083 tests/dissect-sysfile.c:700
#, c-format
-msgid ""
-"Unexpected label source value \"%s\" following 'E' at offset %zu in MRSETS "
-"record"
-msgstr ""
+msgid "Unexpected label source value \"%s\" following 'E' at offset %zu in MRSETS record"
+msgstr "Etiqueta de valor fuente inesperada \"%s\" tras 'E' en la posición %zu del registro MRSETS"
#: src/data/sys-file-reader.c:1089
#, c-format
msgid "Missing 'C', 'D', or 'E' at offset %zu in MRSETS record."
-msgstr ""
+msgstr "Falta 'C', 'D' o 'E' en la posición %zu del registro MRSETS"
#: src/data/sys-file-reader.c:1118
#, c-format
msgid "Missing new-line parsing variable names at offset %zu in MRSETS record."
-msgstr ""
+msgstr "Falta el nombre de variable de nueva línea en la posición %zu del registro MRSETS"
#: src/data/sys-file-reader.c:1129
-#, fuzzy, c-format
+#, c-format
msgid "Duplicate variable name %s at offset %zu in MRSETS record."
-msgstr "Nombre de la variable %s duplicado en la posición %d."
+msgstr "Nombre de la variable %s duplicado en la posición %zu en registro MRSETS."
#: src/data/sys-file-reader.c:1142
-#, fuzzy, c-format
+#, c-format
msgid "MRSET %s contains both string and numeric variables."
-msgstr ""
-"Ignorando el registro del valor de cadena larga para la variable numérica %s."
+msgstr "MRSET %s contiene tanto variables textuales como numéricas."
#: src/data/sys-file-reader.c:1157
#, c-format
msgid "MRSET %s has only %zu variables."
-msgstr ""
+msgstr "MRSET %s tiene sólo %zu variables."
#: src/data/sys-file-reader.c:1194 tests/dissect-sysfile.c:758
#, c-format
#: src/data/sys-file-reader.c:1227
#, c-format
-msgid ""
-"Invalid variable display parameters for variable %zu (%s). Default "
-"parameters substituted."
-msgstr ""
-"Parámetros de visualización de variable no válidos para la variable %zu (%"
-"s). Sustitución de parámetros por defecto."
+msgid "Invalid variable display parameters for variable %zu (%s). Default parameters substituted."
+msgstr "Parámetros de visualización de variable no válidos para la variable %zu (%s). Sustitución de parámetros por defecto."
#: src/data/sys-file-reader.c:1271
#, c-format
msgid "Long variable mapping from %s to invalid variable name `%s'."
-msgstr ""
-"Identificación de variable larga desde %s hacia un nombre de variable "
-"inválido '%s'."
+msgstr "Identificación de variable larga desde %s hacia un nombre de variable inválido '%s'."
#: src/data/sys-file-reader.c:1281
#, c-format
msgid "Duplicate long variable name `%s' within system file."
-msgstr ""
-"Nombre de la variable larga '%s' duplicada dentro del archivo de sistema."
+msgstr "Nombre de la variable larga '%s' duplicada dentro del archivo de sistema."
#: src/data/sys-file-reader.c:1334
#, c-format
msgid "%s listed as string of invalid length %s in very length string record."
-msgstr ""
-"%s figura como cadena de longitud no válida %s en un registro de cadena muy "
-"largo."
+msgstr "%s figura como cadena de longitud no válida %s en un registro de cadena muy largo."
#: src/data/sys-file-reader.c:1344
#, c-format
-msgid ""
-"%s listed in very long string record with width %s, which requires only one "
-"segment."
-msgstr ""
-"%s figura en el registro de cadena muy larga con longitud %s, que requiere "
-"solo un segmento."
+msgid "%s listed in very long string record with width %s, which requires only one segment."
+msgstr "%s figura en el registro de cadena muy larga con longitud %s, que requiere solo un segmento."
#: src/data/sys-file-reader.c:1350
#, c-format
#: src/data/sys-file-reader.c:1364
#, c-format
-msgid ""
-"Very long string with width %ld has segment %d of width %d (expected %d)"
-msgstr ""
-"Cadena muy larga con una longitud de %ld tiene un segmento %d de longitud %d "
-"(se espera %d)"
+msgid "Very long string with width %ld has segment %d of width %d (expected %d)"
+msgstr "Cadena muy larga con una longitud de %ld tiene un segmento %d de longitud %d (se espera %d)"
#: src/data/sys-file-reader.c:1410
#, c-format
msgstr "Número de etiquetas inválido: %d. Ignorando etiquetas."
#: src/data/sys-file-reader.c:1441 tests/dissect-sysfile.c:468
-msgid ""
-"Variable index record (type 4) does not immediately follow value label "
-"record (type 3) as it should."
-msgstr ""
-"Registro de índice de variable (tipo 4) no está seguido inmediatament, como "
-"debería, por el registro de etiquetas de valores (tipo 3) ."
+msgid "Variable index record (type 4) does not immediately follow value label record (type 3) as it should."
+msgstr "Registro de índice de variable (tipo 4) no está seguido inmediatament, como debería, por el registro de etiquetas de valores (tipo 3) ."
#: src/data/sys-file-reader.c:1448
#, c-format
-msgid ""
-"Number of variables associated with a value label (%d) is not between 1 and "
-"the number of variables (%zu)."
-msgstr ""
-"Número de variables asociadas con una etiqueta de valores (%d) no está entre "
-"1 y el número de variables (%zu)."
+msgid "Number of variables associated with a value label (%d) is not between 1 and the number of variables (%zu)."
+msgstr "Número de variables asociadas con una etiqueta de valores (%d) no está entre 1 y el número de variables (%zu)."
#: src/data/sys-file-reader.c:1459
#, c-format
-msgid ""
-"Value labels may not be added to long string variables (e.g. %s) using "
-"records types 3 and 4."
-msgstr ""
-"No se pueden añadir etiquetas de valor a las variables de cadena larga (e.g. "
-"%s) utilizando los tipos de registro 3 y 4."
+msgid "Value labels may not be added to long string variables (e.g. %s) using records types 3 and 4."
+msgstr "No se pueden añadir etiquetas de valor a las variables de cadena larga (e.g. %s) utilizando los tipos de registro 3 y 4."
#: src/data/sys-file-reader.c:1468
#, c-format
-msgid ""
-"Variables associated with value label are not all of identical type. "
-"Variable %s is %s, but variable %s is %s."
-msgstr ""
-"Las variables asociadas con etiqueta de valores no son todas del mismo "
-"tipo. La variable %s es %s, pero la variable %s es %s."
+msgid "Variables associated with value label are not all of identical type. Variable %s is %s, but variable %s is %s."
+msgstr "Las variables asociadas con etiqueta de valores no son todas del mismo tipo. La variable %s es %s, pero la variable %s es %s."
#: src/data/sys-file-reader.c:1502
#, c-format
#: src/data/sys-file-reader.c:1620 tests/dissect-sysfile.c:936
#, c-format
-msgid ""
-"Variable name length in long string value label record (%d) exceeds %d-byte "
-"limit."
-msgstr ""
-"La longitud del nombre de la variable en el registro de la etiqueta del "
-"valor de cadena larga (%d) supera el límite %d-byte."
+msgid "Variable name length in long string value label record (%d) exceeds %d-byte limit."
+msgstr "La longitud del nombre de la variable en el registro de la etiqueta del valor de cadena larga (%d) supera el límite %d-byte."
#: src/data/sys-file-reader.c:1630
#, c-format
msgid "Ignoring long string value record for unknown variable %s."
-msgstr ""
-"Ignorando el registro del valor de cadena larga para la variable desconocida "
-"%s."
+msgstr "Ignorando el registro del valor de cadena larga para la variable desconocida %s."
#: src/data/sys-file-reader.c:1637
#, c-format
msgid "Ignoring long string value record for numeric variable %s."
-msgstr ""
-"Ignorando el registro del valor de cadena larga para la variable numérica %s."
+msgstr "Ignorando el registro del valor de cadena larga para la variable numérica %s."
#: src/data/sys-file-reader.c:1644
#, c-format
-msgid ""
-"Ignoring long string value record for variable %s because the record's width "
-"(%d) does not match the variable's width (%d)"
-msgstr ""
-"Ignorando el registro del valor de cadena larga %s ya que el ancho del "
-"registro (%d) no coincide con el ancho de la variable (%d)"
+msgid "Ignoring long string value record for variable %s because the record's width (%d) does not match the variable's width (%d)"
+msgstr "Ignorando el registro del valor de cadena larga %s ya que el ancho del registro (%d) no coincide con el ancho de la variable (%d)"
#: src/data/sys-file-reader.c:1666
#, c-format
-msgid ""
-"Ignoring long string value %zu for variable %s, with width %d, that has bad "
-"value width %zu."
-msgstr ""
-"Ignorando el valor de cadena larga %zu para la variable %s, de ancho %d, que "
-"tiene un ancho de valor incorrecto %zu."
+msgid "Ignoring long string value %zu for variable %s, with width %d, that has bad value width %zu."
+msgstr "Ignorando el valor de cadena larga %zu para la variable %s, de ancho %d, que tiene un ancho de valor incorrecto %zu."
#: src/data/sys-file-reader.c:1781
msgid "File ends in partial case."
msgstr "Error leyendo un caso del archivo %s."
#: src/data/sys-file-reader.c:1890
-msgid ""
-"Possible compressed data corruption: compressed spaces appear in numeric "
-"field."
-msgstr ""
+msgid "Possible compressed data corruption: compressed spaces appear in numeric field."
+msgstr "Posible corrupción de datos comprimidos: aparecen espacios comprimidos en un campo numérico."
#: src/data/sys-file-reader.c:1943
#, c-format
-msgid ""
-"Possible compressed data corruption: string contains compressed integer "
-"(opcode %d)"
-msgstr ""
+msgid "Possible compressed data corruption: string contains compressed integer (opcode %d)"
+msgstr "Posible corrupción de datos comprimidos: una cadena textual contiene un entero comprimido (opcode %d)."
#: src/data/sys-file-reader.c:2035
#, c-format
#: src/data/sys-file-reader.c:2040
#, c-format
msgid "Variable index %d refers to long string continuation."
-msgstr ""
-"Índice de la variable %d se refiere a una continuación de cadena larga."
+msgstr "Índice de la variable %d se refiere a una continuación de cadena larga."
#: src/data/sys-file-reader.c:2108
#, c-format
msgstr "Suprimidas %d advertencias adicionales."
#: src/data/sys-file-reader.c:2153 src/data/sys-file-reader.c:2170
-#, fuzzy, c-format
+#, c-format
msgid "Dictionary record refers to unknown variable %s."
-msgstr "Mapa de la variable se refiere a una variable desconocida %s."
+msgstr "El registro diccionario se refiere a una variable desconocida %s."
#: src/data/sys-file-reader.c:2231
#, c-format
msgid "Expecting digit at offset %zu in MRSETS record."
-msgstr ""
+msgstr "Se espera un dígito en la posición %zu del registro MRSETS."
#: src/data/sys-file-reader.c:2238
#, c-format
msgid "Expecting space at offset %zu in MRSETS record."
-msgstr ""
+msgstr "Se espera un espacio en la posición %zu del registre MRSETS."
#: src/data/sys-file-reader.c:2245
#, c-format
msgid "%zu-byte string starting at offset %zu exceeds record length %zu."
-msgstr ""
+msgstr "El texto de %zu-bytes que comienza en la posición %zu excede la longitud del registro %zu. "
#: src/data/sys-file-reader.c:2255
#, c-format
msgid "Expecting space at offset %zu following %zu-byte string."
-msgstr ""
+msgstr "Se espera un espacio en la posición %zu tras un texto de %zu-byte."
#: src/data/sys-file-reader.c:2347 tests/dissect-sysfile.c:1341
#, c-format
#: src/data/sys-file-writer.c:180
#, c-format
msgid "Unknown system file version %d. Treating as version %d."
-msgstr ""
-"Versión de archivo de sistema %d desconocida.Se tratará como versión %d."
+msgstr "Versión de archivo de sistema %d desconocida.Se tratará como versión %d."
#: src/data/sys-file-writer.c:219
#, c-format
#: src/data/variable.c:206
#, c-format
-msgid ""
-"Character `%c' (in %s) may not appear as the first character in a variable "
-"name."
-msgstr ""
-"Carácter '%c' (en %s) no puede aparecer como el primer carácter en un nombre "
-"de variable."
+msgid "Character `%c' (in %s) may not appear as the first character in a variable name."
+msgstr "Carácter '%c' (en %s) no puede aparecer como el primer carácter en un nombre de variable."
#: src/data/variable.c:218
#, c-format
#: src/data/variable.c:258
#, c-format
msgid "`%s' may not be used as a variable name because it is a reserved word."
-msgstr ""
-"'%s' no puede ser utilizado como nombre de variable porque es una palabra "
-"reservada."
+msgstr "'%s' no puede ser utilizado como nombre de variable porque es una palabra reservada."
#: src/language/syntax-file.c:95
#, c-format
#: src/language/command.c:642
#, c-format
-msgid ""
-"%s is allowed only before the active file has been defined or inside INPUT "
-"PROGRAM."
-msgstr ""
-"%s sólo se permite antes que el archivo activo se ha definido, o dentro de "
-"INPUT PROGRAM."
+msgid "%s is allowed only before the active file has been defined or inside INPUT PROGRAM."
+msgstr "%s sólo se permite antes que el archivo activo se ha definido, o dentro de INPUT PROGRAM."
#: src/language/command.c:646
#, c-format
-msgid ""
-"%s is allowed only before the active file has been defined or inside FILE "
-"TYPE."
-msgstr ""
-"%s sólo se permite antes que el archivo activo se ha definido, o dentro de "
-"FILE TYPE."
+msgid "%s is allowed only before the active file has been defined or inside FILE TYPE."
+msgstr "%s sólo se permite antes que el archivo activo se ha definido, o dentro de FILE TYPE."
#: src/language/command.c:650
#, c-format
-msgid ""
-"%s is allowed only after the active file has been defined or inside INPUT "
-"PROGRAM."
-msgstr ""
-"%s sólo se permite después que el archivo activo se ha definido, o dentro de "
-"INPUT PROGRAM."
+msgid "%s is allowed only after the active file has been defined or inside INPUT PROGRAM."
+msgstr "%s sólo se permite después que el archivo activo se ha definido, o dentro de INPUT PROGRAM."
#: src/language/command.c:654
#, c-format
-msgid ""
-"%s is allowed only after the active file has been defined or inside FILE "
-"TYPE."
-msgstr ""
-"%s sólo se permite después que el archivo activo se ha definido, o dentro de "
-"FILE TYPE."
+msgid "%s is allowed only after the active file has been defined or inside FILE TYPE."
+msgstr "%s sólo se permite después que el archivo activo se ha definido, o dentro de FILE TYPE."
#: src/language/command.c:658
#, c-format
#: src/language/command.c:664
#, c-format
-msgid ""
-"%s is allowed only after the active file has been defined, inside INPUT "
-"PROGRAM, or inside FILE TYPE."
-msgstr ""
-"%s sólo se permite después que el archivo activo se ha definido, dentro de "
-"INPUT PROGRAM, o FILE TYPE."
+msgid "%s is allowed only after the active file has been defined, inside INPUT PROGRAM, or inside FILE TYPE."
+msgstr "%s sólo se permite después que el archivo activo se ha definido, dentro de INPUT PROGRAM, o FILE TYPE."
#: src/language/command.c:669
#, c-format
-msgid ""
-"%s is allowed only before the active file has been defined, inside INPUT "
-"PROGRAM, or inside FILE TYPE."
-msgstr ""
-"%s sólo se permite antes que el archivo activo se ha definido, dentro de "
-"INPUT PROGRAM, o FILE TYPE."
+msgid "%s is allowed only before the active file has been defined, inside INPUT PROGRAM, or inside FILE TYPE."
+msgstr "%s sólo se permite antes que el archivo activo se ha definido, dentro de INPUT PROGRAM, o FILE TYPE."
#: src/language/command.c:687 src/language/command.c:689
-#, fuzzy, c-format
+#, c-format
msgid "%s is not allowed inside %s."
-msgstr "%s no se permite dentro de FILE TYPE."
+msgstr "%s no está permitido dentro de %s."
#: src/language/command.c:768 src/language/command.c:876
#: src/language/utilities/permissions.c:98
#: src/language/lexer/lexer.c:1085
#, c-format
msgid "String of %s digits has %zu characters, which is not a multiple of %d."
-msgstr ""
-"La cadena de %s dígitos tiene %zu caracteres, que no es un múltiplo de %d."
+msgstr "La cadena de %s dígitos tiene %zu caracteres, que no es un múltiplo de %d."
#: src/language/lexer/lexer.c:1114
#, c-format
#: src/language/lexer/value-parser.c:60
#, c-format
-msgid ""
-"Low end of range (%g) is below high end (%g). The range will be treated as "
-"reversed."
-msgstr ""
-"El límite inferior del intervalo (%g) está por debajo del límite superior (%"
-"g). El intervalo será invertido."
+msgid "Low end of range (%g) is below high end (%g). The range will be treated as reversed."
+msgstr "El límite inferior del intervalo (%g) está por debajo del límite superior (%g). El intervalo será invertido."
#: src/language/lexer/value-parser.c:68
#, c-format
#: src/language/lexer/variable-parser.c:178
#, c-format
-msgid ""
-"%s is not a numeric variable. It will not be included in the variable list."
-msgstr ""
-"%s no es una variable numérica. No será incluida en la lista de variables."
+msgid "%s is not a numeric variable. It will not be included in the variable list."
+msgstr "%s no es una variable numérica. No será incluida en la lista de variables."
#: src/language/lexer/variable-parser.c:181
#, c-format
-msgid ""
-"%s is not a string variable. It will not be included in the variable list."
-msgstr ""
-"%s no es una variable de cadena. No será incluida en la lista de variables."
+msgid "%s is not a string variable. It will not be included in the variable list."
+msgstr "%s no es una variable de cadena. No será incluida en la lista de variables."
#: src/language/lexer/variable-parser.c:185
#, c-format
#: src/language/lexer/variable-parser.c:189
#, c-format
-msgid ""
-"%s and %s are not the same type. All variables in this variable list must "
-"be of the same type. %s will be omitted from the list."
-msgstr ""
-"%s y %s no son del mismo tipo. Todas las variables de esta lista tienen que "
-"ser del mismo tipo. %s será omitida de la lista."
+msgid "%s and %s are not the same type. All variables in this variable list must be of the same type. %s will be omitted from the list."
+msgstr "%s y %s no son del mismo tipo. Todas las variables de esta lista tienen que ser del mismo tipo. %s será omitida de la lista."
#: src/language/lexer/variable-parser.c:195
#, c-format
-msgid ""
-"%s and %s are string variables with different widths. All variables in this "
-"variable list must have the same width. %s will be omitted from the list."
-msgstr ""
-"%s y %s son variables de cadena con tamaños diferentes. Todas las variables "
-"de esta lista deben tener el mismo tamaño. %s será omitida de la lista."
+msgid "%s and %s are string variables with different widths. All variables in this variable list must have the same width. %s will be omitted from the list."
+msgstr "%s y %s son variables de cadena con tamaños diferentes. Todas las variables de esta lista deben tener el mismo tamaño. %s será omitida de la lista."
#: src/language/lexer/variable-parser.c:200
#: src/language/lexer/variable-parser.c:496
#: src/language/lexer/variable-parser.c:313
#, c-format
msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary."
-msgstr ""
-"%s TO %s no es una sintaxis válida debido a que %s precede %s en el "
-"diccionario."
+msgstr "%s TO %s no es una sintaxis válida debido a que %s precede %s en el diccionario."
#: src/language/lexer/variable-parser.c:321
#, c-format
-msgid ""
-"When using the TO keyword to specify several variables, both variables must "
-"be from the same variable dictionaries, of either ordinary, scratch, or "
-"system variables. %s is a %s variable, whereas %s is %s."
-msgstr ""
-"Cuando se utiliza la palabra clave TO para especificar diversas variables, "
-"ambas tienen que ser del mismo diccionario de variables, ya sean ordinales, "
-"scratch, o variables de sistema. %s es una variable %s, debido a que %s es %"
-"s."
+msgid "When using the TO keyword to specify several variables, both variables must be from the same variable dictionaries, of either ordinary, scratch, or system variables. %s is a %s variable, whereas %s is %s."
+msgstr "Cuando se utiliza la palabra clave TO para especificar diversas variables, ambas tienen que ser del mismo diccionario de variables, ya sean ordinales, scratch, o variables de sistema. %s es una variable %s, debido a que %s es %s."
#: src/language/lexer/variable-parser.c:395
msgid "incorrect use of TO convention"
#: src/language/xforms/compute.c:149 src/language/xforms/compute.c:203
#, c-format
-msgid ""
-"When executing COMPUTE: SYSMIS is not a valid value as an index into vector %"
-"s."
-msgstr ""
-"Cuando se ejecuta COMPUTE: SYSMIS no es un valor válido como índice en el "
-"vector %s."
+msgid "When executing COMPUTE: SYSMIS is not a valid value as an index into vector %s."
+msgstr "Cuando se ejecuta COMPUTE: SYSMIS no es un valor válido como índice en el vector %s."
#: src/language/xforms/compute.c:153 src/language/xforms/compute.c:210
#, c-format
-msgid ""
-"When executing COMPUTE: %g is not a valid value as an index into vector %s."
-msgstr ""
-"Cuando se ejecuta COMPUTE: %g no es un valor válid como índice en el vector %"
-"s."
+msgid "When executing COMPUTE: %g is not a valid value as an index into vector %s."
+msgstr "Cuando se ejecuta COMPUTE: %g no es un valor válid como índice en el vector %s."
#: src/language/xforms/compute.c:353
#, c-format
#: src/language/xforms/sample.c:96
#, c-format
msgid "Cannot sample %d observations from a population of %d."
-msgstr ""
-"No se puede hacer una muestra de %d observaciones de una población de %d."
+msgstr "No se puede hacer una muestra de %d observaciones de una población de %d."
#: src/language/xforms/recode.c:248
-msgid ""
-"Inconsistent target variable types. Target variables must be all numeric or "
-"all string."
-msgstr ""
-"Tipo inconsistente de variables objetivo. Las variables objetivo tienen que "
-"ser todas, o bien de cadena o bien numéricas."
+msgid "Inconsistent target variable types. Target variables must be all numeric or all string."
+msgstr "Tipo inconsistente de variables objetivo. Las variables objetivo tienen que ser todas, o bien de cadena o bien numéricas."
#: src/language/xforms/recode.c:269
msgid "CONVERT requires string input values and numeric output values."
-msgstr ""
-"CONVERT requiere valores de entrada de cadena y valores de salida numéricos."
+msgstr "CONVERT requiere valores de entrada de cadena y valores de salida numéricos."
#: src/language/xforms/recode.c:324
msgid "THRU is not allowed with string variables."
#: src/language/xforms/recode.c:460
#, c-format
-msgid ""
-"%zu variable(s) cannot be recoded into %zu variable(s). Specify the same "
-"number of variables as source and target variables."
-msgstr ""
-"%zu variable(s) no pueden ser recodificadas en %zu variable(s). Especifique "
-"el mismo número de variables como origen y destino."
+msgid "%zu variable(s) cannot be recoded into %zu variable(s). Specify the same number of variables as source and target variables."
+msgstr "%zu variable(s) no pueden ser recodificadas en %zu variable(s). Especifique el mismo número de variables como origen y destino."
#: src/language/xforms/recode.c:475
#, c-format
-msgid ""
-"There is no variable named %s. (All string variables specified on INTO must "
-"already exist. Use the STRING command to create a string variable.)"
-msgstr ""
-"No existe ninguna variable llamada %s. (Todas las variables de cadena "
-"especificadas en INTO tienen que existir. Utilice el comando STRING para "
-"crear una variable de cadena.)"
+msgid "There is no variable named %s. (All string variables specified on INTO must already exist. Use the STRING command to create a string variable.)"
+msgstr "No existe ninguna variable llamada %s. (Todas las variables de cadena especificadas en INTO tienen que existir. Utilice el comando STRING para crear una variable de cadena.)"
#: src/language/xforms/recode.c:491
#, c-format
#: src/language/xforms/select-if.c:100
msgid "Syntax error expecting OFF or BY. Turning off case filtering."
-msgstr ""
-"Error de sintaxis esperando OFF o BY. Desactivando el filtraje de casos."
+msgstr "Error de sintaxis esperando OFF o BY. Desactivando el filtraje de casos."
#: src/language/xforms/select-if.c:115
msgid "The filter variable must be numeric."
#: src/language/control/control-stack.c:55
#, c-format
msgid "This command must appear inside %s...%s, without intermediate %s...%s."
-msgstr ""
-"Esta orden tiene que aparecer dentro de %s...%s, sin intermediarios %s...%s."
+msgstr "Esta orden tiene que aparecer dentro de %s...%s, sin intermediarios %s...%s."
#: src/language/control/control-stack.c:72
#, c-format
msgstr "Únicamente puede ser especificada una cláusula del índice."
#: src/language/control/temporary.c:46
-msgid ""
-"This command may only appear once between procedures and procedure-like "
-"commands."
-msgstr ""
-"Esta orden únicamente puede aparecer una vez entre las órdenes de "
-"procedimientos y casi-procedimientos."
+msgid "This command may only appear once between procedures and procedure-like commands."
+msgstr "Esta orden únicamente puede aparecer una vez entre las órdenes de procedimientos y casi-procedimientos."
#: src/language/control/repeat.c:172
#, c-format
msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"."
-msgstr ""
-"El nombre de la variable ficticia \"%s\" oculta la variable de diccionario "
-"\"%s\"."
+msgstr "El nombre de la variable ficticia \"%s\" oculta la variable de diccionario \"%s\"."
#: src/language/control/repeat.c:177
#, c-format
#: src/language/control/repeat.c:223
#, c-format
-msgid ""
-"Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d "
-"were specified."
-msgstr ""
-"Una variable ficticia \"%.*s\" tiene %d substituciones, de forma tal que \"%."
-"*s\" también tendría que tenerlas, pero se especificaron %d."
+msgid "Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d were specified."
+msgstr "Una variable ficticia \"%.*s\" tiene %d substituciones, de forma tal que \"%.*s\" también tendría que tenerlas, pero se especificaron %d."
# recursivamente? recurridamente? repetidamente?
#: src/language/control/repeat.c:335
#: src/language/dictionary/apply-dictionary.c:75
#, c-format
msgid "Variable %s is %s in target file, but %s in source file."
-msgstr ""
-"La variable %s es %s en el archivo de destino, pero %s en el archivo de "
-"origen."
+msgstr "La variable %s es %s en el archivo de destino, pero %s en el archivo de origen."
#: src/language/dictionary/apply-dictionary.c:115
msgid "No matching variables found between the source and target files."
-msgstr ""
-"No se han encontrado coincidencias de variables entre los archivos de origen "
-"y de destino."
+msgstr "No se han encontrado coincidencias de variables entre los archivos de origen y de destino."
#: src/language/dictionary/delete-variables.c:40
-msgid ""
-"DELETE VARIABLES may not be used after TEMPORARY. Temporary transformations "
-"will be made permanent."
-msgstr ""
-"DELETE VARIABLES no puede ser utilizado después de TEMPORARY. Las "
-"transformaciones temporales serán permanentes."
+msgid "DELETE VARIABLES may not be used after TEMPORARY. Temporary transformations will be made permanent."
+msgstr "DELETE VARIABLES no puede ser utilizado después de TEMPORARY. Las transformaciones temporales serán permanentes."
#: src/language/dictionary/delete-variables.c:48
-msgid ""
-"DELETE VARIABLES may not be used to delete all variables from the active "
-"file dictionary. Use NEW FILE instead."
-msgstr ""
-"DELETE VARIABLES no puede ser utilizado para borrar todas las variables del "
-"archivo de diccionario activo. Utilizar NEW FILE en su lugar."
+msgid "DELETE VARIABLES may not be used to delete all variables from the active file dictionary. Use NEW FILE instead."
+msgstr "DELETE VARIABLES no puede ser utilizado para borrar todas las variables del archivo de diccionario activo. Utilizar NEW FILE en su lugar."
#: src/language/dictionary/formats.c:90
msgid "`(' expected after variable list."
#: src/language/dictionary/missing-values.c:72
#, c-format
-msgid ""
-"Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within "
-"a single list."
-msgstr ""
-"No se pueden mezclar las variables numéricas (e.g. %s) y las variables de "
-"cadena (e.g. %s) dentro de una lista única."
+msgid "Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within a single list."
+msgstr "No se pueden mezclar las variables numéricas (e.g. %s) y las variables de cadena (e.g. %s) dentro de una lista única."
#: src/language/dictionary/missing-values.c:116
#, c-format
#: src/language/dictionary/missing-values.c:138
#, c-format
msgid "Missing values provided are too long to assign to variable of width %d."
-msgstr ""
-"Los valores perdidos proporcionados son demasiado largos para asignar a una "
-"variable de ancho %d."
+msgstr "Los valores perdidos proporcionados son demasiado largos para asignar a una variable de ancho %d."
#: src/language/dictionary/modify-variables.c:92
-msgid ""
-"MODIFY VARS may not be used after TEMPORARY. Temporary transformations will "
-"be made permanent."
-msgstr ""
-"MODIFY VARS no puede ser utilizado después de TEMPORARY. Las "
-"transformaciones temporales serán permanentes."
+msgid "MODIFY VARS may not be used after TEMPORARY. Temporary transformations will be made permanent."
+msgstr "MODIFY VARS no puede ser utilizado después de TEMPORARY. Las transformaciones temporales serán permanentes."
#: src/language/dictionary/modify-variables.c:114
#: src/language/dictionary/modify-variables.c:177
-#, fuzzy, c-format
+#, c-format
msgid "%s subcommand may be given at most once."
-msgstr "El subcomando RENAME puede ser utilizado únicamente una vez."
+msgstr "El subcomando %s sólo puede utilizarse una vez."
#: src/language/dictionary/modify-variables.c:137
msgid "Cannot specify ALL after specifying a set of variables."
-msgstr ""
-"No se puede especificar ALL después de la especificación de un conjunto de "
-"variables."
+msgstr "No se puede especificar ALL después de la especificación de un conjunto de variables."
#: src/language/dictionary/modify-variables.c:147
#: src/language/dictionary/modify-variables.c:190
-#, fuzzy, c-format
+#, c-format
msgid "`(' expected on %s subcommand."
-msgstr "`(' esperado en subcomando RENAME."
+msgstr "Se espera `(' en el subcomando %s."
#: src/language/dictionary/modify-variables.c:159
msgid "`)' expected following variable names on REORDER subcommand."
-msgstr ""
-"`)' se esperaba seguido de los nombres de la variable en el subcomando "
-"REORDER."
+msgstr "`)' se esperaba seguido de los nombres de la variable en el subcomando REORDER."
#: src/language/dictionary/modify-variables.c:199
-msgid ""
-"`=' expected between lists of new and old variable names on RENAME "
-"subcommand."
-msgstr ""
-"`=' esperado entre las listas de nombres de variables nuevas y viejas en el "
-"subcomando RENAME."
+msgid "`=' expected between lists of new and old variable names on RENAME subcommand."
+msgstr "`=' esperado entre las listas de nombres de variables nuevas y viejas en el subcomando RENAME."
#: src/language/dictionary/modify-variables.c:208
#: src/language/dictionary/rename-variables.c:77
#, c-format
-msgid ""
-"Differing number of variables in old name list (%zu) and in new name list (%"
-"zu)."
-msgstr ""
-"Diferente número de variables en la lista de nombres antigua (%zu) y en la "
-"lista de nombres nueva (%zu)."
+msgid "Differing number of variables in old name list (%zu) and in new name list (%zu)."
+msgstr "Diferente número de variables en la lista de nombres antigua (%zu) y en la lista de nombres nueva (%zu)."
#: src/language/dictionary/modify-variables.c:219
msgid "`)' expected after variable lists on RENAME subcommand."
-msgstr ""
-"`)' esperado después de las listas de variables en el subcomando RENAME."
+msgstr "`)' esperado después de las listas de variables en el subcomando RENAME."
#: src/language/dictionary/modify-variables.c:233
-msgid ""
-"KEEP subcommand may be given at most once. It may not be given in "
-"conjunction with the DROP subcommand."
-msgstr ""
-"El subcomando KEEP puede ser emitido más de una vez. Puede ser que no sea "
-"facilitado en relación con el subcomando DROP."
+msgid "KEEP subcommand may be given at most once. It may not be given in conjunction with the DROP subcommand."
+msgstr "El subcomando KEEP puede ser emitido más de una vez. Puede ser que no sea facilitado en relación con el subcomando DROP."
#: src/language/dictionary/modify-variables.c:276
-msgid ""
-"DROP subcommand may be given at most once. It may not be given in "
-"conjunction with the KEEP subcommand."
-msgstr ""
-"El subcomando DROP puede ser utilizado únicamente una vez. No puede ser "
-"utilizado juntamente con el subcomando KEEP."
+msgid "DROP subcommand may be given at most once. It may not be given in conjunction with the KEEP subcommand."
+msgstr "El subcomando DROP puede ser utilizado únicamente una vez. No puede ser utilizado juntamente con el subcomando KEEP."
#: src/language/dictionary/modify-variables.c:302
#, c-format
#: src/language/dictionary/mrsets.c:98
#, c-format
-msgid ""
-"%s is not a valid name for a multiple response set. Multiple response set "
-"names must begin with `$'."
-msgstr ""
+msgid "%s is not a valid name for a multiple response set. Multiple response set names must begin with `$'."
+msgstr "%s no es un nombre válido de variable para un conjunto de respuesta múltiple. Los conjuntos de respuesta múltiple han de comenzar con `$'."
#: src/language/dictionary/mrsets.c:120
#, c-format
-msgid ""
-"VARIABLES specified only variable %s on %s, but at least two variables are "
-"required."
-msgstr ""
+msgid "VARIABLES specified only variable %s on %s, but at least two variables are required."
+msgstr "VARIABLES especifica sólo la variable %s en %s, pero se requieren al menos dos variables."
#: src/language/dictionary/mrsets.c:153
msgid "Numeric VALUE must be an integer."
-msgstr ""
+msgstr "VALUE numérico debe ser un entero."
#: src/language/dictionary/mrsets.c:207 src/language/dictionary/mrsets.c:213
#: src/language/dictionary/mrsets.c:223
#, c-format
msgid "Required %s specification missing from %s subcommand."
-msgstr ""
+msgstr "Falta la especificación %s requerida para el subcomando %s."
#: src/language/dictionary/mrsets.c:231 src/language/dictionary/mrsets.c:269
#, c-format
-msgid ""
-"MDGROUP subcommand for group %s specifies a string VALUE, but the variables "
-"specified for this group are numeric."
-msgstr ""
+msgid "MDGROUP subcommand for group %s specifies a string VALUE, but the variables specified for this group are numeric."
+msgstr "El subcomando MDGROUPS para el grupo %s especifica un VALUE textual, pero las variables especificadas por este grupo son numéricas."
#: src/language/dictionary/mrsets.c:255
#, c-format
-msgid ""
-"VALUE string on MDGROUP subcommand for group %s is %d bytes long, but it "
-"must be no longer than the narrowest variable in the group, which is %s with "
-"a width of %d bytes."
-msgstr ""
+msgid "VALUE string on MDGROUP subcommand for group %s is %d bytes long, but it must be no longer than the narrowest variable in the group, which is %s with a width of %d bytes."
+msgstr "El VALUE textual del subcomando MDGROUP para el grupo %s tiene %d bytes, pero no puede ser más largo que la variable más corta del grupo, que es %s con longitud %d bytes."
#: src/language/dictionary/mrsets.c:281
#, c-format
-msgid ""
-"MDGROUP subcommand for group %s specifies LABELSOURCE=VARLABEL but not "
-"CATEGORYLABELS=COUNTEDVALUES. Ignoring LABELSOURCE."
-msgstr ""
+msgid "MDGROUP subcommand for group %s specifies LABELSOURCE=VARLABEL but not CATEGORYLABELS=COUNTEDVALUES. Ignoring LABELSOURCE."
+msgstr "El subcomando MDGROUP para el grupo %s espeficifica LABELSOURCE=VARLABEL pero no CATEGORYLABELS=COUNTEDVALUES. Se ignorará LABELSOURCE."
#: src/language/dictionary/mrsets.c:287
#, c-format
-msgid ""
-"MDGROUP subcommand for group %s specifies both LABEL and LABELSOURCE, but "
-"only one of these subcommands may be used at a time. Ignoring LABELSOURCE."
-msgstr ""
+msgid "MDGROUP subcommand for group %s specifies both LABEL and LABELSOURCE, but only one of these subcommands may be used at a time. Ignoring LABELSOURCE."
+msgstr "El subcomando MDGROUP para el grupo %s espeficifica LABEL i LABELSOURCE, pero sólo uno de estos subcomandos puede ser utilitzado a la vez. Se ignorará LABELSOURCE."
#: src/language/dictionary/mrsets.c:327
#, c-format
-msgid ""
-"Variables %s and %s specified as part of multiple dichotomy group %s have "
-"the same variable label. Categories represented by these variables will not "
-"be distinguishable in output."
-msgstr ""
+msgid "Variables %s and %s specified as part of multiple dichotomy group %s have the same variable label. Categories represented by these variables will not be distinguishable in output."
+msgstr "Las variables %s y %s especificadas como parte del grupo dicotomico múltiple %s tienen la misma etiqueta de variable. Las categorias representadas por estas variables no seran distingibles en los resultados."
#: src/language/dictionary/mrsets.c:357
#, c-format
-msgid ""
-"Variable %s specified as part of multiple dichotomy group %s (which has "
-"CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value. "
-"This category will not be distinguishable in output."
-msgstr ""
+msgid "Variable %s specified as part of multiple dichotomy group %s (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value. This category will not be distinguishable in output."
+msgstr "La variable %s especificada como parte del grupe dicotomico múltiple %s (que tiene CATEGORYLABELS=COUNTEDVALUES) no tiene etiqueta de valor para su valor de recuento. Esta categoria no será distingible en los resultados."
#: src/language/dictionary/mrsets.c:370
#, c-format
-msgid ""
-"Variables %s and %s specified as part of multiple dichotomy group %s (which "
-"has CATEGORYLABELS=COUNTEDVALUES) have the same value label for the the "
-"group's counted value. These categories will not be distinguishable in "
-"output."
-msgstr ""
+msgid "Variables %s and %s specified as part of multiple dichotomy group %s (which has CATEGORYLABELS=COUNTEDVALUES) have the same value label for the the group's counted value. These categories will not be distinguishable in output."
+msgstr "Las variables %s y %s especificadas como parte del grupo dicotomico múltiple %s (que tiene CATEGORYLABELS=COUNTEDVALUES) no tiene etiqueta de valor para su valor de recuento. Esta categoria no será distingible en los resultados."
#: src/language/dictionary/mrsets.c:427
#, c-format
-msgid ""
-"Variables specified on MCGROUP should have the same categories, but %s and %"
-"s (and possibly others) in multiple category group %s have different value "
-"labels for value %s."
-msgstr ""
+msgid "Variables specified on MCGROUP should have the same categories, but %s and %s (and possibly others) in multiple category group %s have different value labels for value %s."
+msgstr "La variables especificadas en MDGROUP deben tener las mismas categorias, pero %s y %s (y posiblemente otras) del grupo de caterorias múltiples %s tiene diferentes etiquetas de valores para el valor %s."
#: src/language/dictionary/mrsets.c:484
-#, fuzzy, c-format
+#, c-format
msgid "No multiple response set named %s."
-msgstr "Ninguna función o vector nombrado %s."
+msgstr "Ningún conjunto multirespuesta llamado %s."
#: src/language/dictionary/mrsets.c:538
-#, fuzzy
msgid "The active file dictionary does not contain any multiple response sets."
-msgstr "El diccionario del archivo activo no contiene ningún documento."
+msgstr "El diccionario del fichero activo no contiene ningún conjunto de multi-respuesta. "
#: src/language/dictionary/mrsets.c:548
msgid "Multiple Response Sets"
-msgstr ""
+msgstr "Conjuntos Multi-Respuesta"
#: src/language/dictionary/mrsets.c:549 src/ui/gui/psppire-var-sheet.c:534
#: src/ui/gui/psppire-var-store.c:832
msgstr "Variables"
#: src/language/dictionary/mrsets.c:551
-#, fuzzy
msgid "Details"
-msgstr "Decimales"
+msgstr "Detalles"
#: src/language/dictionary/mrsets.c:565
msgid "Multiple dichotomy set"
-msgstr ""
+msgstr "Conjunto de Dicotomias Múltiples"
#: src/language/dictionary/mrsets.c:566
msgid "Multiple category set"
-msgstr ""
+msgstr "Conjunto de Categorias Múltiples"
#: src/language/dictionary/mrsets.c:568
#: src/language/dictionary/split-file.c:84
msgstr "Etiqueta"
#: src/language/dictionary/mrsets.c:572
-#, fuzzy
msgid "Label source"
-msgstr "Etiqueta: %s\n"
+msgstr "Fuente de etiquetas"
#: src/language/dictionary/mrsets.c:574
-#, fuzzy
msgid "First variable label among variables"
-msgstr "Duplicar el nombre de la variable %s entre las variables de destino."
+msgstr "Primera etiqueta de variable entre las variables"
#: src/language/dictionary/mrsets.c:575
msgid "Provided by user"
-msgstr ""
+msgstr "Proporcionado por el usuario"
#: src/language/dictionary/mrsets.c:576
-#, fuzzy
msgid "Counted value"
-msgstr "Copiar los valores anteriores"
+msgstr "Valor de recuento"
#: src/language/dictionary/mrsets.c:582
msgid "Category label source"
-msgstr ""
+msgstr "Fuente de etiquetas de categoria"
#: src/language/dictionary/mrsets.c:584
-#, fuzzy
msgid "Variable labels"
-msgstr "Prefiero las etiquetas de variable"
+msgstr "Etiquetas de variable"
#: src/language/dictionary/mrsets.c:585
msgid "Value labels of counted value"
-msgstr ""
+msgstr "Etiquetas de valor del valor de recuento"
#: src/language/dictionary/numeric.c:67
#, c-format
msgstr "El tipo de formato %s no puede utilizarse con variable de cadena."
#: src/language/dictionary/rename-variables.c:49
-msgid ""
-"RENAME VARS may not be used after TEMPORARY. Temporary transformations will "
-"be made permanent."
-msgstr ""
-"RENAME VARS no puede ser utilizado después de TEMPORARY. Las "
-"transformaciones temporales serán permanentes."
+msgid "RENAME VARS may not be used after TEMPORARY. Temporary transformations will be made permanent."
+msgstr "RENAME VARS no puede ser utilizado después de TEMPORARY. Las transformaciones temporales serán permanentes."
#: src/language/dictionary/rename-variables.c:59
msgid "`(' expected."
msgstr "Tipo:"
#: src/language/dictionary/sys-file-info.c:128
-#: src/ui/gui/psppire-data-window.c:631
+#: src/ui/gui/psppire-data-window.c:634
msgid "System File"
msgstr "Archivo de Sistema"
#: src/language/dictionary/vector.c:96
msgid "A slash must separate each vector specification in VECTOR's long form."
-msgstr ""
-"Una barra debe separar cada especificación de vector en la forma larga de "
-"VECTOR."
+msgstr "Una barra debe separar cada especificación de vector en la forma larga de VECTOR."
#: src/language/dictionary/vector.c:129
msgid "Vectors must have at least one element."
#: src/language/tests/float-format.c:201
#, c-format
-msgid ""
-"%s conversion of %s from %s to %s should have produced %s but actually "
-"produced %s."
-msgstr ""
-"conversión %s de %s desde %s en %s debería haber producido %s pero "
-"actualmente ha producido %s."
+msgid "%s conversion of %s from %s to %s should have produced %s but actually produced %s."
+msgstr "conversión %s de %s desde %s en %s debería haber producido %s pero actualmente ha producido %s."
#: src/language/tests/float-format.c:247
msgid "Too many values in single command."
#: src/language/utilities/include.c:193
#, c-format
msgid "Can't find `%s' in include file search path."
-msgstr ""
-"No se puede encontrar `%s' en la ruta de búsqueda del archivo de inclusión."
+msgstr "No se puede encontrar `%s' en la ruta de búsqueda del archivo de inclusión."
#: src/language/utilities/include.c:201
#, c-format
msgstr "esperando BREAK"
#: src/language/stats/aggregate.c:252
-msgid ""
-"When PRESORTED is specified, specifying sorting directions with (A) or (D) "
-"has no effect. Output data will be sorted the same way as the input data."
-msgstr ""
-"Cuando se especifica PRESORTED, dar directivas de ordenación con (A) o (D) "
-"no tiene efecto. Los datos de salida serán ordenados de la misma manera que "
-"los de entrada."
+msgid "When PRESORTED is specified, specifying sorting directions with (A) or (D) has no effect. Output data will be sorted the same way as the input data."
+msgstr "Cuando se especifica PRESORTED, dar directivas de ordenación con (A) o (D) no tiene efecto. Los datos de salida serán ordenados de la misma manera que los de entrada."
#: src/language/stats/aggregate.c:424
msgid "expecting aggregation function"
#: src/language/stats/aggregate.c:507
#, c-format
msgid "Arguments to %s must be of same type as source variables."
-msgstr ""
-"Los argumentos para %s deben ser del mismo tipo que las variables de origen."
+msgstr "Los argumentos para %s deben ser del mismo tipo que las variables de origen."
#: src/language/stats/aggregate.c:517 src/language/expressions/parse.c:885
msgid "expecting `)'"
#: src/language/stats/aggregate.c:529
#, c-format
-msgid ""
-"Number of source variables (%zu) does not match number of target variables (%"
-"zu)."
-msgstr ""
-"Número de variables de origen (%zu) no coincide con el número de variables "
-"de destino (%zu)."
+msgid "Number of source variables (%zu) does not match number of target variables (%zu)."
+msgstr "Número de variables de origen (%zu) no coincide con el número de variables de destino (%zu)."
#: src/language/stats/aggregate.c:545
#, c-format
-msgid ""
-"The value arguments passed to the %s function are out-of-order. They will "
-"be treated as if they had been specified in the correct order."
-msgstr ""
-"El valor de los argumentos pasados en la función %s están fuera de orden. "
-"Serán tratatos como si hubieran sido especificados en el orden correcto."
+msgid "The value arguments passed to the %s function are out-of-order. They will be treated as if they had been specified in the correct order."
+msgstr "El valor de los argumentos pasados en la función %s están fuera de orden. Serán tratatos como si hubieran sido especificados en el orden correcto."
#: src/language/stats/aggregate.c:615
#, c-format
-msgid ""
-"Variable name %s is not unique within the aggregate file dictionary, which "
-"contains the aggregate variables and the break variables."
-msgstr ""
-"El nombre de variable %s no es único dentro del archivo de diccionario "
-"agregado, que contiene las variables agregadas y las variables de corte."
+msgid "Variable name %s is not unique within the aggregate file dictionary, which contains the aggregate variables and the break variables."
+msgstr "El nombre de variable %s no es único dentro del archivo de diccionario agregado, que contiene las variables agregadas y las variables de corte."
#: src/language/stats/autorecode.c:116
#, c-format
msgid "Source variable count (%zu) does not match target variable count (%zu)."
-msgstr ""
-"El recuento de la variable de origen (%zu) no coincide con el recuento de la "
-"variable de destino (%zu)."
+msgstr "El recuento de la variable de origen (%zu) no coincide con el recuento de la variable de destino (%zu)."
#: src/language/stats/autorecode.c:128
#, c-format
#: src/language/stats/chisquare.c:150
#, c-format
-msgid ""
-"CHISQUARE test specified %d expected values, but %d distinct values were "
-"encountered in variable %s."
-msgstr ""
-"Prueba CHISQUARE especifica %d valores esperados, pero %d diferentes valores "
-"se encontraron la variable %s."
+msgid "CHISQUARE test specified %d expected values, but %d distinct values were encountered in variable %s."
+msgstr "Prueba CHISQUARE especifica %d valores esperados, pero %d diferentes valores se encontraron la variable %s."
#: src/language/stats/chisquare.c:161 src/language/stats/chisquare.c:200
msgid "Observed N"
msgstr "Desviación Estándar"
#: src/language/stats/correlations.c:190 src/language/stats/factor.c:1620
-#, fuzzy
msgid "Correlations"
-msgstr "Correlación"
+msgstr "Correlaciones"
#: src/language/stats/correlations.c:216
-#, fuzzy
msgid "Pearson Correlation"
-msgstr "Correlación de Spearman"
+msgstr "Correlación de Pearson"
#: src/language/stats/correlations.c:218 src/language/stats/oneway.q:686
#: src/language/stats/t-test.q:753 src/language/stats/t-test.q:924
msgstr "Sign. (2-colas)"
#: src/language/stats/correlations.c:218
-#, fuzzy
msgid "Sig. (1-tailed)"
-msgstr "Sign. (2-colas)"
+msgstr "Sig. (1-cola)"
#: src/language/stats/correlations.c:222
msgid "Cross-products"
-msgstr ""
+msgstr "Productos-cruzados"
#: src/language/stats/correlations.c:223
-#, fuzzy
msgid "Covariance"
msgstr "Covarianza"
msgstr "esperando nombre del estadístico: vuelve a aplicar el defecto"
#: src/language/stats/descriptives.c:523
-msgid ""
-"Ran out of generic names for Z-score variables. There are only 126 generic "
-"names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
-msgstr ""
-"Se han agotado los nombres genéricos para las variables Z. Sólo hay 126 "
-"nombres genéricos: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-"
-"ZQZQ09."
+msgid "Ran out of generic names for Z-score variables. There are only 126 generic names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
+msgstr "Se han agotado los nombres genéricos para las variables Z. Sólo hay 126 nombres genéricos: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
#: src/language/stats/descriptives.c:555
msgid "Mapping of variables to corresponding Z-scores."
#: src/language/stats/factor.c:803
msgid "Factor analysis on a single variable is not useful."
-msgstr ""
+msgstr "El análisis factorial para una única variable es inútil."
#: src/language/stats/factor.c:1206
-#, fuzzy
msgid "Component Number"
-msgstr "Columna Número: 0"
+msgstr "Número de Componente"
#: src/language/stats/factor.c:1206
-#, fuzzy
msgid "Factor Number"
-msgstr "Número de Caso"
+msgstr "Número de Factores"
#: src/language/stats/factor.c:1237
-#, fuzzy
msgid "Communalities"
-msgstr "Comentarios:"
+msgstr "Comunalidades"
#: src/language/stats/factor.c:1243
msgid "Initial"
-msgstr ""
+msgstr "Inicial"
#: src/language/stats/factor.c:1246
msgid "Extraction"
-msgstr ""
+msgstr "Extracción"
#: src/language/stats/factor.c:1310 src/language/stats/factor.c:1437
-#, fuzzy
msgid "Component"
-msgstr "Comentarios:"
+msgstr "Componente"
#: src/language/stats/factor.c:1315 src/language/stats/factor.c:1439
-#, fuzzy
msgid "Factor"
-msgstr "_Factor:"
+msgstr "Factor"
#: src/language/stats/factor.c:1347 src/language/stats/factor.c:1495
#: src/ui/gui/psppire-data-store.c:755 src/ui/gui/psppire-var-store.c:699
#: src/language/stats/factor.c:1412
msgid "Total Variance Explained"
-msgstr ""
+msgstr "Varianza Total Explicada"
#: src/language/stats/factor.c:1444
msgid "Initial Eigenvalues"
-msgstr ""
+msgstr "Valores propios Iniciales"
#: src/language/stats/factor.c:1450
msgid "Extraction Sums of Squared Loadings"
-msgstr ""
+msgstr "Sumas de Pesos al Cuadrado de la Extracción"
#: src/language/stats/factor.c:1456
msgid "Rotation Sums of Squared Loadings"
-msgstr ""
+msgstr "Rotación: Sumas de Pesos al Cuadrado "
#: src/language/stats/factor.c:1464
-#, fuzzy, no-c-format
+#, no-c-format
msgid "% of Variance"
-msgstr "Varianza"
+msgstr "% de Varianza"
#: src/language/stats/factor.c:1465
msgid "Cumulative %"
-msgstr ""
+msgstr "% Acumulado"
#: src/language/stats/factor.c:1578
-#, fuzzy
msgid "Correlation Matrix"
-msgstr "Correlación"
+msgstr "Matriz de Correlación"
#: src/language/stats/factor.c:1632
-#, fuzzy
msgid "Sig. 1-tailed"
-msgstr "Sign. (2-colas)"
+msgstr "Sig. (1-cola)"
#: src/language/stats/factor.c:1666
-#, fuzzy
msgid "Determinant"
-msgstr "Dependiente"
+msgstr "Determinante"
#: src/language/stats/factor.c:1743
msgid "Analysis N"
-msgstr ""
+msgstr "Análisis N"
#: src/language/stats/factor.c:1776
-msgid ""
-"The FACTOR criteria result in zero factors extracted. Therefore no analysis "
-"will be performed."
-msgstr ""
+msgid "The FACTOR criteria result in zero factors extracted. Therefore no analysis will be performed."
+msgstr "El criterio FACTOR resulta en la extracción de cero factores. No se puede realizar ningún análisis."
#: src/language/stats/factor.c:1782
-msgid ""
-"The FACTOR criteria result in more factors than variables, which is not "
-"meaningful. No analysis will be performed."
-msgstr ""
+msgid "The FACTOR criteria result in more factors than variables, which is not meaningful. No analysis will be performed."
+msgstr "El criterio FACTOR resulta en más factores que variables, y esto no tiene ningún sentido."
#: src/language/stats/factor.c:1865
msgid "Component Matrix"
-msgstr ""
+msgstr "Matriz de Componentes"
#: src/language/stats/factor.c:1865
-#, fuzzy
msgid "Factor Matrix"
-msgstr "Lista de Factores:"
+msgstr "Matriz de Factores"
#: src/language/stats/factor.c:1871
msgid "Rotated Component Matrix"
-msgstr ""
+msgstr "Matriz Rotada de Componentes"
#: src/language/stats/factor.c:1871
-#, fuzzy
msgid "Rotated Factor Matrix"
-msgstr "Lista de Factores:"
+msgstr "Matriz Rotada de Factores"
#: src/language/stats/flip.c:98
-msgid ""
-"FLIP ignores TEMPORARY. Temporary transformations will be made permanent."
-msgstr ""
-"FLIP ignora TEMPORARY. Las transformaciones temporales serán permanentes."
+msgid "FLIP ignores TEMPORARY. Temporary transformations will be made permanent."
+msgstr "FLIP ignora TEMPORARY. Las transformaciones temporales serán permanentes."
#: src/language/stats/flip.c:150
msgid "Could not create temporary file for FLIP."
#: src/language/data-io/combine-files.c:210
msgid "Cannot specify the active file since no active file has been defined."
-msgstr ""
-"No se puede especificar el fichero activo ya que ningún fichero activo ha "
-"sido definido."
+msgstr "No se puede especificar el fichero activo ya que ningún fichero activo ha sido definido."
#: src/language/data-io/combine-files.c:216
-msgid ""
-"This command may not be used after TEMPORARY when the active file is an "
-"input source. Temporary transformations will be made permanent."
-msgstr ""
-"Este comando no puede ser utilizado después de TEMPORARY cuando el archivo "
-"activo es una fuente de entrada. Las transformaciones temporales serán "
-"permanentes."
+msgid "This command may not be used after TEMPORARY when the active file is an input source. Temporary transformations will be made permanent."
+msgstr "Este comando no puede ser utilizado después de TEMPORARY cuando el archivo activo es una fuente de entrada. Las transformaciones temporales serán permanentes."
#: src/language/data-io/combine-files.c:250
msgid "Multiple IN subcommands for a single FILE or TABLE."
#: src/language/data-io/combine-files.c:381
#: src/language/data-io/combine-files.c:386
-#, fuzzy, c-format
+#, c-format
msgid "BY is required when %s is specified."
-msgstr "BY es necesario cuando SORT se especifica."
+msgstr "BY es necesario cuando se especifica %s."
#: src/language/data-io/combine-files.c:513
-msgid ""
-"Combining files with incompatible encodings. String data may not be "
-"represented correctly."
-msgstr ""
-"Combinando archivos con codificaciones incompatibles. Los datos de la cadena "
-"no podrán estar representados correctamente."
+msgid "Combining files with incompatible encodings. String data may not be represented correctly."
+msgstr "Combinando archivos con codificaciones incompatibles. Los datos de la cadena no podrán estar representados correctamente."
#: src/language/data-io/combine-files.c:545
#, c-format
-msgid ""
-"Variable %s in file %s has different type or width from the same variable in "
-"earlier file."
-msgstr ""
-"La variable %s en el archivo %s es de tipo o tamaño diferente respecto de la "
-"misma variable en un archivo anterior."
+msgid "Variable %s in file %s has different type or width from the same variable in earlier file."
+msgstr "La variable %s en el archivo %s es de tipo o tamaño diferente respecto de la misma variable en un archivo anterior."
#: src/language/data-io/combine-files.c:551
#, c-format
#: src/language/data-io/combine-files.c:562
#, c-format
msgid "In an earlier file, %s was a string variable with width %d."
-msgstr ""
-"En un archivo anterior, %s era una variable de cadena con un tamaño de %d."
+msgstr "En un archivo anterior, %s era una variable de cadena con un tamaño de %d."
#: src/language/data-io/combine-files.c:601
#, c-format
-msgid ""
-"Variable name %s specified on %s subcommand duplicates an existing variable "
-"name."
-msgstr ""
-"Nombre de la variable %s especificado en el subcomando %s duplica el nombre "
-"de la variable existente."
+msgid "Variable name %s specified on %s subcommand duplicates an existing variable name."
+msgstr "Nombre de la variable %s especificado en el subcomando %s duplica el nombre de la variable existente."
#: src/language/data-io/combine-files.c:762
#, c-format
#: src/language/data-io/data-list.c:243
msgid "Encoding should not be specified for inline data. It will be ignored."
-msgstr ""
-"La codificación no debe ser especificada por los datos en línea. Será "
-"ignorada."
+msgstr "La codificación no debe ser especificada por los datos en línea. Será ignorada."
#: src/language/data-io/data-list.c:254
msgid "The END subcommand may be used only with DATA LIST FIXED."
#: src/language/data-io/data-list.c:390
#, c-format
msgid "Cannot place variable %s on record %d when RECORDS=%d is specified."
-msgstr ""
-"No se puede poner la variable %s en el registro %d cuando RECORDS=%d está "
-"especificado."
+msgstr "No se puede poner la variable %s en el registro %d cuando RECORDS=%d está especificado."
#: src/language/data-io/data-parser.c:460
#: src/language/data-io/data-parser.c:469
#: src/language/data-io/data-parser.c:610
#, c-format
-msgid ""
-"Missing value(s) for all variables from %s onward. These will be filled "
-"with the system-missing value or blanks, as appropriate."
-msgstr ""
-"Valor(es) perdido(s) para todas las variables desde %st. Éstos se llenan "
-"con el valor perdido del sistema o espacios en blanco, según corresponda."
+msgid "Missing value(s) for all variables from %s onward. These will be filled with the system-missing value or blanks, as appropriate."
+msgstr "Valor(es) perdido(s) para todas las variables desde %st. Éstos se llenan con el valor perdido del sistema o espacios en blanco, según corresponda."
#: src/language/data-io/data-parser.c:630
msgid "Record ends in data not part of any field."
#: src/language/data-io/data-reader.c:150
#, c-format
msgid "Could not open \"%s\" for reading as a data file: %s."
-msgstr ""
-"No se ha podido abrir \"%s\" para la lectura como un archivo de datos: %s."
+msgstr "No se ha podido abrir \"%s\" para la lectura como un archivo de datos: %s."
#: src/language/data-io/data-reader.c:192
-msgid ""
-"Unexpected end-of-file while reading data in BEGIN DATA. This probably "
-"indicates a missing or misformatted END DATA command. END DATA must appear "
-"by itself on a single line with exactly one space between words."
-msgstr ""
-"Final de archivo inesperado durante la lectura de datos en BEGIN DATA. Esto "
-"probablemente indica una pérdida o formato erróneo del comando END DATA. "
-"END DATA debe aparecer por sí misma en una sola línea con exactamente un "
-"espacio entre las palabras."
+msgid "Unexpected end-of-file while reading data in BEGIN DATA. This probably indicates a missing or misformatted END DATA command. END DATA must appear by itself on a single line with exactly one space between words."
+msgstr "Final de archivo inesperado durante la lectura de datos en BEGIN DATA. Esto probablemente indica una pérdida o formato erróneo del comando END DATA. END DATA debe aparecer por sí misma en una sola línea con exactamente un espacio entre las palabras."
#: src/language/data-io/data-reader.c:217
#, c-format
msgstr "Intento de leer más allá de END DATA."
#: src/language/data-io/data-reader.c:708
-msgid ""
-"This command is not valid here since the current input program does not "
-"access the inline file."
-msgstr ""
-"Esta orden no es válida ya que el programa de entrada actual no tiene acceso "
-"al archivo en línea."
+msgid "This command is not valid here since the current input program does not access the inline file."
+msgstr "Esta orden no es válida ya que el programa de entrada actual no tiene acceso al archivo en línea."
#: src/language/data-io/data-writer.c:74
#, c-format
msgid "An error occurred while opening \"%s\" for writing as a data file: %s."
-msgstr ""
-"Se ha producido un error al abrir \"%s\" para escribirlo como un archivo de "
-"datos: %s."
+msgstr "Se ha producido un error al abrir \"%s\" para escribirlo como un archivo de datos: %s."
#: src/language/data-io/data-writer.c:191
#, c-format
#: src/language/data-io/get-data.c:260
#, c-format
-msgid ""
-"%s is allowed only with %s arrangement, but %s arrangement was stated or "
-"implied earlier in this command."
-msgstr ""
-"%s sólo se permite con configuración %s, pero previamente en este comando se "
-"ha establecido la configuración %s."
+msgid "%s is allowed only with %s arrangement, but %s arrangement was stated or implied earlier in this command."
+msgstr "%s sólo se permite con configuración %s, pero previamente en este comando se ha establecido la configuración %s."
#: src/language/data-io/get-data.c:315
msgid "expecting FIXED or DELIMITED"
msgstr "Valor de PERCENT debe estar entre 1 y 100."
#: src/language/data-io/get-data.c:447
-msgid ""
-"In compatible syntax mode, the QUALIFIER string must contain exactly one "
-"character."
-msgstr ""
-"En el modo de sintaxis compatible, la cadena QUALIFIER debe contener "
-"exactamente un carácter."
+msgid "In compatible syntax mode, the QUALIFIER string must contain exactly one character."
+msgstr "En el modo de sintaxis compatible, la cadena QUALIFIER debe contener exactamente un carácter."
#: src/language/data-io/get-data.c:462
msgid "expecting VARIABLES"
#: src/language/data-io/get-data.c:484
#: src/language/data-io/placement-parser.c:378
#, c-format
-msgid ""
-"The record number specified, %ld, is at or before the previous record, %d. "
-"Data fields must be listed in order of increasing record number."
-msgstr ""
-"El número de registro especificado, %ld, es en o antes del registro "
-"anterior, %d. Los campos de datos deben ser listados en orden incremental "
-"del número de registro."
+msgid "The record number specified, %ld, is at or before the previous record, %d. Data fields must be listed in order of increasing record number."
+msgstr "El número de registro especificado, %ld, es en o antes del registro anterior, %d. Los campos de datos deben ser listados en orden incremental del número de registro."
#: src/language/data-io/get-data.c:493
#, c-format
-msgid ""
-"The record number specified, %ld, exceeds the number of records per case "
-"specified on FIXCASE, %d."
-msgstr ""
-"El número de registro especificado, %ld, excede el número de registros para "
-"casos especificados en FIXCASE, %d."
+msgid "The record number specified, %ld, exceeds the number of records per case specified on FIXCASE, %d."
+msgstr "El número de registro especificado, %ld, excede el número de registros para casos especificados en FIXCASE, %d."
#: src/language/data-io/get.c:99
msgid "expecting COMM or TAPE"
msgstr "subcomando COLUMN especificado múltiples veces."
#: src/language/data-io/inpt-pgm.c:338
-msgid ""
-"REREAD: Column numbers must be positive finite numbers. Column set to 1."
-msgstr ""
-"REREAD: Los números de columna tienen que ser números positivos finitos. La "
-"columna se establece en 1."
+msgid "REREAD: Column numbers must be positive finite numbers. Column set to 1."
+msgstr "REREAD: Los números de columna tienen que ser números positivos finitos. La columna se establece en 1."
#: src/language/data-io/placement-parser.c:87
#, c-format
-msgid ""
-"Number of variables specified (%zu) differs from number of variable formats "
-"(%zu)."
-msgstr ""
-"Número de variables especificadas (%zu) difiere del número de formatos de la "
-"variable (%zu)."
+msgid "Number of variables specified (%zu) differs from number of variable formats (%zu)."
+msgstr "Número de variables especificadas (%zu) difiere del número de formatos de la variable (%zu)."
#: src/language/data-io/placement-parser.c:97
-msgid ""
-"SPSS-like or Fortran-like format specification expected after variable names."
-msgstr ""
-"Después del nombre de las variables se esperan especificaciones en formato "
-"tipo-SPSS o tipo-Fortran."
+msgid "SPSS-like or Fortran-like format specification expected after variable names."
+msgstr "Después del nombre de las variables se esperan especificaciones en formato tipo-SPSS o tipo-Fortran."
#: src/language/data-io/placement-parser.c:119
#, c-format
msgid "The %d columns %d-%d can't be evenly divided into %zu fields."
-msgstr ""
-"Las %d columnas %d-%d no pueden ser uniformemente dividas entre los campos %"
-"zu."
+msgstr "Las %d columnas %d-%d no pueden ser uniformemente dividas entre los campos %zu."
#: src/language/data-io/placement-parser.c:305
msgid "Column positions for fields must be positive."
#: src/language/data-io/placement-parser.c:344
msgid "The ending column for a field must be greater than the starting column."
-msgstr ""
-"La columna final de un campo tiene que ser mayor que la columna de inicio."
+msgstr "La columna final de un campo tiene que ser mayor que la columna de inicio."
#: src/language/data-io/print-space.c:116
msgid "The expression on PRINT SPACE evaluated to the system-missing value."
-msgstr ""
-"La expresión en PRINT SPACE se evalúa por el sistema de valores perdidos."
+msgstr "La expresión en PRINT SPACE se evalúa por el sistema de valores perdidos."
#: src/language/data-io/print-space.c:119
#, c-format
#: src/language/data-io/print.c:267
#, c-format
msgid "Output calls for %d records but %zu specified on RECORDS subcommand."
-msgstr ""
-"Resultados obtenidos para %d registros, pero %zu especificados en el "
-"subcomando RECORDS."
+msgstr "Resultados obtenidos para %d registros, pero %zu especificados en el subcomando RECORDS."
#: src/language/data-io/print.c:436
-#, fuzzy, c-format
+#, c-format
msgid "Writing %zu record to %s."
msgid_plural "Writing %zu records to %s."
-msgstr[0] "Escribiendo %d registro en %s."
-msgstr[1] "Escribiendot %d registros en %s."
+msgstr[0] "Escribiendo el registro %zu en %s."
+msgstr[1] "Escribiendo %zu registros en %s."
#: src/language/data-io/print.c:440
-#, fuzzy, c-format
+#, c-format
msgid "Writing %zu record."
msgid_plural "Writing %zu records."
-msgstr[0] "Escribiendo %d registro."
-msgstr[1] "Escribiendo %d registros."
+msgstr[0] "Escribiendo el registro %zu."
+msgstr[1] "Escribiendo %zu registros."
#: src/language/data-io/save.c:223 src/language/data-io/save.c:238
#: src/language/data-io/save.c:266
#: src/language/data-io/trim.c:88
#, c-format
-msgid ""
-"Cannot rename %s as %s because there already exists a variable named %s. To "
-"rename variables with overlapping names, use a single RENAME subcommand such "
-"as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
-msgstr ""
-"No se puede cambiar el nombre %s por %s porque ya hay una variable nombrada %"
-"s. Para cambiar el nombre de las variables con nombre superpuesto, utilitce "
-"el subcomando RENAME únicamente como \"/RENAME (A=B)(B=C)(C=A)\", o "
-"equivalentemente, \"/RENAME (A B C=B C A)\"."
+msgid "Cannot rename %s as %s because there already exists a variable named %s. To rename variables with overlapping names, use a single RENAME subcommand such as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
+msgstr "No se puede cambiar el nombre %s por %s porque ya hay una variable nombrada %s. Para cambiar el nombre de las variables con nombre superpuesto, utilitce el subcomando RENAME únicamente como \"/RENAME (A=B)(B=C)(C=A)\", o equivalentemente, \"/RENAME (A B C=B C A)\"."
#: src/language/data-io/trim.c:114
msgid "`=' expected after variable list."
#: src/language/data-io/trim.c:122
#, c-format
-msgid ""
-"Number of variables on left side of `=' (%zu) does not match number of "
-"variables on right side (%zu), in parenthesized group %d of RENAME "
-"subcommand."
-msgstr ""
-"El número de variables en el lado izquierdo de `=' (%zu) no coincide con el "
-"número de variables en el lado derecho (%zu), en el grupo entre paréntesis %"
-"d del subcomando RENAME."
+msgid "Number of variables on left side of `=' (%zu) does not match number of variables on right side (%zu), in parenthesized group %d of RENAME subcommand."
+msgstr "El número de variables en el lado izquierdo de `=' (%zu) no coincide con el número de variables en el lado derecho (%zu), en el grupo entre paréntesis %d del subcomando RENAME."
#: src/language/data-io/trim.c:135
#, c-format
msgstr "Nombre de la variable %s duplicado."
#: src/language/expressions/helpers.c:51
-msgid ""
-"One of the arguments to a DATE function is not an integer. The result will "
-"be system-missing."
-msgstr ""
-"Uno de los argumentos para función DATE no es un entero. El resultado será "
-"perdido por el sistema."
+msgid "One of the arguments to a DATE function is not an integer. The result will be system-missing."
+msgstr "Uno de los argumentos para función DATE no es un entero. El resultado será perdido por el sistema."
#: src/language/expressions/helpers.c:73
-msgid ""
-"The week argument to DATE.WKYR is not an integer. The result will be system-"
-"missing."
-msgstr ""
-"El argumento de semana para DATE.WKYR no es un entero. El resultado será "
-"perdido del sistema."
+msgid "The week argument to DATE.WKYR is not an integer. The result will be system-missing."
+msgstr "El argumento de semana para DATE.WKYR no es un entero. El resultado será perdido del sistema."
#: src/language/expressions/helpers.c:79
-msgid ""
-"The week argument to DATE.WKYR is outside the acceptable range of 1 to 53. "
-"The result will be system-missing."
-msgstr ""
-"El argumento de semana para DATE.WKYR está fuera del intervalo aceptable "
-"entre 1 y 53. El resultado será perdido del sistema."
+msgid "The week argument to DATE.WKYR is outside the acceptable range of 1 to 53. The result will be system-missing."
+msgstr "El argumento de semana para DATE.WKYR está fuera del intervalo aceptable entre 1 y 53. El resultado será perdido del sistema."
#: src/language/expressions/helpers.c:101
-msgid ""
-"The day argument to DATE.YRDAY is not an integer. The result will be system-"
-"missing."
-msgstr ""
-"El argumento de día para DATE.YRDAY no es un entero. El resultado será "
-"perdido del sistema."
+msgid "The day argument to DATE.YRDAY is not an integer. The result will be system-missing."
+msgstr "El argumento de día para DATE.YRDAY no es un entero. El resultado será perdido del sistema."
#: src/language/expressions/helpers.c:107
-msgid ""
-"The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366. "
-"The result will be system-missing."
-msgstr ""
-"El argumento de día para DATE.YRDAY está fuera del intervalo aceptable entre "
-"1 y 366. El resultado será perdido del sistema."
+msgid "The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366. The result will be system-missing."
+msgstr "El argumento de día para DATE.YRDAY está fuera del intervalo aceptable entre 1 y 366. El resultado será perdido del sistema."
#: src/language/expressions/helpers.c:129
-msgid ""
-"The year argument to YRMODA is greater than 47516. The result will be "
-"system-missing."
-msgstr ""
-"El argumento año para YRMODA es más grande que 47516. El resultado será "
-"perdido del sistema."
+msgid "The year argument to YRMODA is greater than 47516. The result will be system-missing."
+msgstr "El argumento año para YRMODA es más grande que 47516. El resultado será perdido del sistema."
#: src/language/expressions/helpers.c:182
#, c-format
-msgid ""
-"Unrecognized date unit \"%.*s\". Valid date units are \"years\", \"quarters"
-"\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"."
-msgstr ""
-"Unidad de fecha \"%.*s\" no reconocida. Las unidades de fecha válidas son "
-"\"años\", \"trimestres\", \"meses\", \"semanas\", \"días\", \"horas\", "
-"\"minutos\", y \"segundos\"."
+msgid "Unrecognized date unit \"%.*s\". Valid date units are \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"."
+msgstr "Unidad de fecha \"%.*s\" no reconocida. Las unidades de fecha válidas son \"años\", \"trimestres\", \"meses\", \"semanas\", \"días\", \"horas\", \"minutos\", y \"segundos\"."
#: src/language/expressions/helpers.c:332
-msgid ""
-"Invalid DATESUM method. Valid choices are \"closest\" and \"rollover\"."
-msgstr ""
-"Método DATESUM inválido. Las opciones válidas son \"cercana\" y \"cumplida"
-"\"."
+msgid "Invalid DATESUM method. Valid choices are \"closest\" and \"rollover\"."
+msgstr "Método DATESUM inválido. Las opciones válidas son \"cercana\" y \"cumplida\"."
#: src/language/expressions/parse.c:259
#, c-format
-msgid ""
-"Type mismatch: expression has %s type, but a numeric value is required here."
-msgstr ""
-"Incompatibilidad de tipo: la expresión tiene tipo %s, pero aquí se pide un "
-"valor numérico."
+msgid "Type mismatch: expression has %s type, but a numeric value is required here."
+msgstr "Incompatibilidad de tipo: la expresión tiene tipo %s, pero aquí se pide un valor numérico."
#: src/language/expressions/parse.c:271
#, c-format
-msgid ""
-"Type mismatch: expression has %s type, but a string value is required here."
-msgstr ""
-"Incompatibilidad de tipo: la expresión tiene tipo %s, pero aquí se pide un "
-"valor de cadena."
+msgid "Type mismatch: expression has %s type, but a string value is required here."
+msgstr "Incompatibilidad de tipo: la expresión tiene tipo %s, pero aquí se pide un valor de cadena."
#: src/language/expressions/parse.c:427
#, c-format
msgid "Type mismatch while applying %s operator: cannot convert %s to %s."
-msgstr ""
-"Incompatibilidad de los tipos mientras se aplica el operador %s: no se puede "
-"convertir %s en %s."
+msgstr "Incompatibilidad de los tipos mientras se aplica el operador %s: no se puede convertir %s en %s."
#: src/language/expressions/parse.c:643
-msgid ""
-"Chaining relational operators (e.g. \"a < b < c\") will not produce the "
-"mathematically expected result. Use the AND logical operator to fix the "
-"problem (e.g. \"a < b AND b < c\"). If chaining is really intended, "
-"parentheses will disable this warning (e.g. \"(a < b) < c\".)"
-msgstr ""
-"El encadenamiento de operadores relacionales (p.e. \"a < b < c\") no "
-"producirà el resultado esperado matemáticamente. Utilizar el operador lógico "
-"AND para solucionar el problema (p.e. \"a < b AND b < c\"). Si el "
-"encadenamiento es realmente intencionado, los paréntesis desactivaran esta "
-"alerta (p.e. \"(a < b) < c\".)"
+msgid "Chaining relational operators (e.g. \"a < b < c\") will not produce the mathematically expected result. Use the AND logical operator to fix the problem (e.g. \"a < b AND b < c\"). If chaining is really intended, parentheses will disable this warning (e.g. \"(a < b) < c\".)"
+msgstr "El encadenamiento de operadores relacionales (p.e. \"a < b < c\") no producirà el resultado esperado matemáticamente. Utilizar el operador lógico AND para solucionar el problema (p.e. \"a < b AND b < c\"). Si el encadenamiento es realmente intencionado, los paréntesis desactivaran esta alerta (p.e. \"(a < b) < c\".)"
#: src/language/expressions/parse.c:744
-msgid ""
-"The exponentiation operator (\"**\") is left-associative, even though right-"
-"associative semantics are more useful. That is, \"a**b**c\" equals \"(a**b)"
-"**c\", not as \"a**(b**c)\". To disable this warning, insert parentheses."
-msgstr ""
-"El operador de exponenciación (\"**\") aparece a la izquierda, aunque si "
-"aparece a la derecha es más útil. Es decir, \"a**b**c\" es igual a \"(a**b)"
-"**c\", no a \"a**(b**c)\". Para desactivar esta alerta, insertar paréntesis."
+msgid "The exponentiation operator (\"**\") is left-associative, even though right-associative semantics are more useful. That is, \"a**b**c\" equals \"(a**b)**c\", not as \"a**(b**c)\". To disable this warning, insert parentheses."
+msgstr "El operador de exponenciación (\"**\") aparece a la izquierda, aunque si aparece a la derecha es más útil. Es decir, \"a**b**c\" es igual a \"(a**b)**c\", no a \"a**(b**c)\". Para desactivar esta alerta, insertar paréntesis."
#: src/language/expressions/parse.c:809
#, c-format
#: src/language/expressions/parse.c:1110
#, c-format
-msgid ""
-"With %s, using minimum valid argument count of %d does not make sense when "
-"passing only %d arguments in list."
-msgstr ""
-"Con %s, no tiene sentido utilizar %d como recuento mínimo de argumento "
-"válido si se pasan únicamente %d argumentos en la lista."
+msgid "With %s, using minimum valid argument count of %d does not make sense when passing only %d arguments in list."
+msgstr "Con %s, no tiene sentido utilizar %d como recuento mínimo de argumento válido si se pasan únicamente %d argumentos en la lista."
#: src/language/expressions/parse.c:1164
#, c-format
msgstr "aviso"
#: src/libpspp/message.c:135
-#, fuzzy
msgid "note"
-msgstr "Centro"
+msgstr "anotación"
#: src/libpspp/tmpfile.c:56
msgid "failed to create temporary file"
msgstr "escribiendo en un archivo temporal"
#: src/libpspp/zip-writer.c:91
-#, fuzzy, c-format
+#, c-format
msgid "%s: error opening output file"
-msgstr "ascii: abriendo el archivo de resultados \"%s\""
+msgstr "%s: error abriendo el archivo de resultados"
#: src/libpspp/zip-writer.c:224
-#, fuzzy, c-format
+#, c-format
msgid "%s: write failed"
-msgstr "%s: No es un archivo portátil."
+msgstr "%s: error de escritura"
#: src/math/percentiles.c:36
msgid "HAverage"
#: src/output/ascii.c:278
#, c-format
msgid "%s: %s must be positive integer or `auto'"
-msgstr ""
+msgstr "%s: %s debe ser un entero positivo o `auto'"
#: src/output/ascii.c:311
-#, fuzzy, c-format
-msgid ""
-"ascii: page excluding margins and headers must be at least %d characters "
-"wide by %d lines long, but as configured is only %d characters by %d lines"
-msgstr ""
-"ascii: excluyendo los márgenes y encabezamientos la página tiene que ser "
-"como mínimo de 59 carácteres de ancho por 15 líneas de largo, pero tal como "
-"está configurada la página únicamente tiene %d carácteres y %d líneas"
+#, c-format
+msgid "ascii: page excluding margins and headers must be at least %d characters wide by %d lines long, but as configured is only %d characters by %d lines"
+msgstr "ascii: excluyendo los margenes y encabezamientos la página debe tener como mínimo %d caracteres de ancho por %d líneas de largo, pero tal como está configurada, sólo hay %d caracteres y %d líneas"
#: src/output/ascii.c:360
#, c-format
#: src/output/ascii.c:503
#, c-format
msgid "See %s for a chart."
-msgstr ""
+msgstr "Ver %s para gráfico."
#: src/output/ascii.c:806
#, c-format
#: src/output/csv.c:87 src/output/html.c:106 src/output/journal.c:93
#: src/output/msglog.c:66
-#, fuzzy, c-format
+#, c-format
msgid "error opening output file \"%s\""
-msgstr "ascii: abriendo el archivo de resultados \"%s\""
+msgstr "error abriendo el fichero de resultados \"%s\""
#: src/output/driver.c:330
#, c-format
-msgid ""
-"%s is not a valid device type (the choices are \"terminal\" and \"listing\")"
-msgstr ""
+msgid "%s is not a valid device type (the choices are \"terminal\" and \"listing\")"
+msgstr "%s no es un tipo de dispositivo válido (las opciones son \"terminal\" y \"listing\")"
#: src/output/driver.c:343
-#, fuzzy, c-format
+#, c-format
msgid "%s: unknown option \"%s\""
-msgstr "ascii: parámetro desconocido `%s'"
+msgstr "%s: opción desconocida \"%s\""
#: src/output/html.c:114
msgid "PSPP Output"
msgstr "Resultado de PSPP"
#: src/output/journal.c:67
-#, fuzzy, c-format
+#, c-format
msgid "error writing output file \"%s\""
-msgstr "error en escribir \"%s\""
+msgstr "error al escribir el fichero de resultados \"%s\""
#: src/output/measure.c:65
#, c-format
msgstr "tipo de papel desconocido `%.*s'"
#: src/output/measure.c:248
-#, fuzzy, c-format
+#, c-format
msgid "error opening input file \"%s\""
-msgstr "error en abrir \"%s\""
+msgstr "error al abrir el fichero de datos \"%s\""
#: src/output/measure.c:259
-#, fuzzy, c-format
+#, c-format
msgid "error reading file \"%s\""
-msgstr "error de lectura \"%s\""
+msgstr "error leyendo el archivo \"%s\""
#: src/output/measure.c:276
#, c-format
#: src/output/options.c:113
#, c-format
msgid "%s: \"%s\" is \"%s\" but a Boolean value is required"
-msgstr ""
+msgstr "%s: \"%s\" es \"%s\", pero se requiere un valor Booleano"
#: src/output/options.c:188
#, c-format
msgid "%s: \"%s\" is \"%s\" but one of the following is required: %s"
-msgstr ""
+msgstr "%s: \"%s\" es \"%s\", pero se requiere uno de los siguientes: %s "
#: src/output/options.c:232
#, c-format
msgid "%s: \"%s\" is \"%s\" but a nonnegative integer is required"
-msgstr ""
+msgstr "%s: \"%s\" es \"%s\", pero se requiere un entero no negativo"
#: src/output/options.c:236
#, c-format
msgid "%s: \"%s\" is \"%s\" but a positive integer is required"
-msgstr ""
+msgstr "%s: \"%s\" es \"%s\", pero se requiere un entero positivo"
#: src/output/options.c:239
#, c-format
msgid "%s: \"%s\" is \"%s\" but an integer is required"
-msgstr ""
+msgstr "%s: \"%s\" es \"%s\", pero se requiere un entero"
#: src/output/options.c:242
#, c-format
msgid "%s: \"%s\" is \"%s\" but an integer greater than %d is required"
-msgstr ""
+msgstr "%s: \"%s\" es \"%s\", pero se requiere un entero mayor que %d"
#: src/output/options.c:247
#, c-format
msgid "%s: \"%s\" is \"%s\" but an integer between %d and %d is required"
-msgstr ""
+msgstr "%s: \"%s\" es \"%s\", pero se requiere un entero entre %d y %d"
#: src/output/options.c:326
#, c-format
msgid "%s: \"%s\" is \"%s\" but a file name that contains \"#\" is required."
-msgstr ""
+msgstr "%s: \"%s\" es \"%s\", pero se requiere un nombre de fichero que contenga \"#\"."
#: src/output/tab.c:206
#, c-format
msgid "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
-msgstr "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) a taula de mida (%d,%d)\n"
+msgstr "incorrecta vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) en tabla de medida (%d,%d)\n"
#: src/output/tab.c:244
-#, fuzzy, c-format
+#, c-format
msgid "bad hline: x=(%d+%d=%d,%d+%d=%d) y=%d+%d=%d in table size (%d,%d)\n"
-msgstr "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) a taula de mida (%d,%d)\n"
+msgstr "incorrecta hline: x=(%d+%d=%d,%d+%d=%d) y=%d+%d=%d en tabla de medida (%d,%d)\n"
#: src/output/tab.c:288
#, c-format
-msgid ""
-"bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
-msgstr ""
-"bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) en taula amb mida (%d,%d)\n"
+msgid "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
+msgstr "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) en taula amb mida (%d,%d)\n"
#: src/output/cairo.c:295
-#, fuzzy, c-format
+#, c-format
msgid "error opening output file \"%s\": %s"
-msgstr "ascii: abriendo el archivo de resultados \"%s\""
+msgstr "error abriendo el fichero de resultados \"%s\": %s"
#: src/output/cairo.c:312
-#, fuzzy, c-format
-msgid ""
-"The defined page is not wide enough to hold at least %d characters in the "
-"default font. In fact, there's only room for %d characters."
-msgstr ""
-"La página PostScript definida no es suficientemente extensa como para "
-"contener márgenes y encabezamientos, además de almenos 15 líneas con las "
-"fuentes por defecto. De hecho, únicamente hay espacio para %d líneas de "
-"cada fuente en la medida por defecto de %d.%03d puntos."
+#, c-format
+msgid "The defined page is not wide enough to hold at least %d characters in the default font. In fact, there's only room for %d characters."
+msgstr "La página definida no es suficientemente ancha como para contener al menos %d caracteres de la fuente por defecto. De hecho, sólo hay espacio para %d caracteres."
#: src/output/cairo.c:322
-#, fuzzy, c-format
-msgid ""
-"The defined page is not long enough to hold margins and headers, plus least %"
-"d lines of the default fonts. In fact, there's only room for %d lines."
-msgstr ""
-"La página PostScript definida no es suficientemente extensa como para "
-"contener márgenes y encabezamientos, además de almenos 15 líneas con las "
-"fuentes por defecto. De hecho, únicamente hay espacio para %d líneas de "
-"cada fuente en la medida por defecto de %d.%03d puntos."
+#, c-format
+msgid "The defined page is not long enough to hold margins and headers, plus least %d lines of the default fonts. In fact, there's only room for %d lines."
+msgstr "La página definida no es suficientemente larga como para contener margenes y cabezeras, además de al menos %d líneas de las fuentes por defecto. De hecho, sólo hay espacio para %d líneas."
#: src/output/cairo.c:376
-#, fuzzy, c-format
+#, c-format
msgid "error drawing output for %s driver: %s"
-msgstr "error de sintaxis analitzando opciones para el controlador \"%s\""
+msgstr "error dibujando resultados para el controlador %s: %s"
#: src/output/cairo.c:864
#, c-format
msgstr "\"%s\": especificación de carácter no válida"
#: src/output/cairo.c:1084
-#, fuzzy, c-format
+#, c-format
msgid "error writing output file \"%s\": %s"
-msgstr "Error en cerrar el archivo portátil \"%s\": %s."
+msgstr "Error escribiendo el fichero de resultados \"%s\": %s."
#: src/output/charts/np-plot-cairo.c:37
#, c-format
#: src/output/charts/scree-cairo.c:36
msgid "Scree Plot"
-msgstr ""
+msgstr "Gráfico de Sedimentación"
#: src/output/charts/scree-cairo.c:38
msgid "Eigenvalue"
-msgstr ""
+msgstr "Valor-propio"
#: src/output/odt.c:93
-#, fuzzy
msgid "error creating temporary file"
-msgstr "leyendo archivo temporal"
+msgstr "error creando fichero temporal"
#: src/ui/source-init-opts.c:78
msgid "Algorithm must be either \"compatible\" or \"enhanced\"."
msgstr "La sintaxis tiene que ser o \"compatible\" o \"ampliada\"."
#: src/ui/terminal/main.c:128
-msgid ""
-"Stopping syntax file processing here to avoid a cascade of dependent command "
-"failures."
-msgstr ""
-"Deteniendo el procesamiento del archivo de sintaxis aquí para evitar una "
-"cascada de errores derivados."
+msgid "Stopping syntax file processing here to avoid a cascade of dependent command failures."
+msgstr "Deteniendo el procesamiento del archivo de sintaxis aquí para evitar una cascada de errores derivados."
#: src/ui/terminal/msg-ui.c:127
#, c-format
msgid "Notes (%d) exceed limit (%d). Suppressing further notes."
-msgstr ""
+msgstr "Las anotaciones (%d) han superado el límite (%d). Se suprimen las posteriores."
#: src/ui/terminal/msg-ui.c:135
#, c-format
msgstr "Avisos (%d) exceden el límite (%d)."
#: src/ui/terminal/msg-ui.c:138
-#, fuzzy, c-format
+#, c-format
msgid "Errors (%d) exceed limit (%d)."
-msgstr "Errores (%d) exceden el límite (%d)."
+msgstr "Los errores (%d) exceden el límite (%d)."
#: src/ui/terminal/terminal.c:72
#, c-format
#: src/ui/terminal/terminal-opts.c:119
#, c-format
msgid "%s: output option missing `='"
-msgstr ""
+msgstr "%s: falta una opción de resultado `='"
#: src/ui/terminal/terminal-opts.c:126
#, c-format
msgid "%s: output option specified more than once"
-msgstr ""
+msgstr "%s: opción de resultado especificada más de una vez"
#: src/ui/gui/checkbox-treeview.c:92 src/language/stats/crosstabs.q:1213
#: src/language/stats/crosstabs.q:1240 src/language/stats/crosstabs.q:1263
#: src/ui/gui/factor-dialog.c:344
#, c-format
msgid "Eigenvalues over %4.2f times the mean eigenvalue"
-msgstr ""
+msgstr "Algunos valores propios superan %4.2f veces el valor-propio medio"
#: src/ui/gui/frequencies-dialog.c:45
msgid "Standard error of the mean"
#: src/ui/gui/help-menu.c:98
#, c-format
-msgid ""
-"Cannot open reference manual: %s. The PSPP user manual is also available at "
-"http://www.gnu.org/software/pspp/documentation.html"
-msgstr ""
+msgid "Cannot open reference manual: %s. The PSPP user manual is also available at http://www.gnu.org/software/pspp/documentation.html"
+msgstr "No puede abrirse el manual de referencia: %s. El manual del usuario de PSPP también está disponible en http://www.gnu.org/software/pspp/documentation.html"
#: src/ui/gui/help-menu.c:117
msgid "_Help"
msgstr "Abrir"
#: src/ui/gui/psppire-data-window.c:392
-#, fuzzy
msgid "Data and Syntax Files"
-msgstr "No se puede abrir el archivo de sintaxis \"%s\""
+msgstr "Ficheros de Datos y Sintaxsi"
-#: src/ui/gui/psppire-data-window.c:402 src/ui/gui/psppire-data-window.c:611
+#: src/ui/gui/psppire-data-window.c:402 src/ui/gui/psppire-data-window.c:614
msgid "System Files (*.sav)"
msgstr "Archivos de Sistema (*.sav)"
-#: src/ui/gui/psppire-data-window.c:408 src/ui/gui/psppire-data-window.c:617
+#: src/ui/gui/psppire-data-window.c:408 src/ui/gui/psppire-data-window.c:620
msgid "Portable Files (*.por) "
msgstr "Archivos Portátiles (*.por)"
msgid "Syntax Files (*.sps) "
msgstr "Archivos de Sintàxis (*.sps) "
-#: src/ui/gui/psppire-data-window.c:420 src/ui/gui/psppire-data-window.c:623
+#: src/ui/gui/psppire-data-window.c:420 src/ui/gui/psppire-data-window.c:626
#: src/ui/gui/psppire-syntax-window.c:298
msgid "All Files"
msgstr "Todos los archivos"
-#: src/ui/gui/psppire-data-window.c:603
+#: src/ui/gui/psppire-data-window.c:606
msgid "Save"
msgstr "Guardar"
-#: src/ui/gui/psppire-data-window.c:636
+#: src/ui/gui/psppire-data-window.c:639
msgid "Portable File"
msgstr "Archivo Portátil"
-#: src/ui/gui/psppire-data-window.c:773
+#: src/ui/gui/psppire-data-window.c:776
msgid "Font Selection"
msgstr "Selección de fuente"
-#: src/ui/gui/psppire-data-window.c:1261
+#: src/ui/gui/psppire-data-window.c:1264
msgid "Data Editor"
msgstr "Editor de Datos"
#: src/ui/gui/psppire-output-window.c:458
msgid "Export Output"
-msgstr ""
+msgstr "Exporta Resultados"
#: src/ui/gui/psppire-output-window.c:466
-#, fuzzy
msgid "PDF Files (*.pdf)"
-msgstr "Archivos Portátiles (*.por)"
+msgstr "Ficheros PDF (*.pdf)"
#: src/ui/gui/psppire-output-window.c:467
msgid "HTML Files (*.html)"
-msgstr ""
+msgstr "Ficheros HTML (*.html)"
#: src/ui/gui/psppire-output-window.c:468
msgid "OpenDocument Files (*.odt)"
-msgstr ""
+msgstr "Ficheros OpenDocument (*.odt)"
#: src/ui/gui/psppire-output-window.c:469
-#, fuzzy
msgid "Text Files (*.txt)"
-msgstr "Archivos de Sistema (*.sav)"
+msgstr "Ficheros de Text (*.txt)"
#: src/ui/gui/psppire-output-window.c:470
-#, fuzzy
msgid "PostScript Files (*.ps)"
-msgstr "Archivos Portátiles (*.por)"
+msgstr "Ficheros PostScript (*.ps)"
#: src/ui/gui/psppire-output-window.c:471
msgid "Comma-Separated Value Files (*.csv)"
-msgstr ""
+msgstr "Ficheros de Valores Separados por Comas (*.csv)"
#: src/ui/gui/psppire-output-window.c:605
msgid "Output Viewer"
#: src/ui/gui/psppire-window.c:475
#, c-format
-msgid ""
-"If you don't save, changes from the last %ld seconds will be permanently "
-"lost."
-msgstr ""
-"Si no se guarda ahora, los cambios de los últims %ld segundos se perderan "
-"permanentemente."
+msgid "If you don't save, changes from the last %ld seconds will be permanently lost."
+msgstr "Si no se guarda ahora, los cambios de los últims %ld segundos se perderan permanentemente."
#: src/ui/gui/psppire-window.c:479
msgid "Close _without saving"
#: src/ui/gui/text-data-import-dialog.c:480
#, c-format
-msgid ""
-"Failed to read \"%s\", because it contains a line over %d bytes long and "
-"therefore appears not to be a text file."
-msgstr ""
-"Error leyendo \"%s\", porque contiene una linea más allá de %d bytes y por "
-"tanto parece que no es un archivo de texto."
+msgid "Failed to read \"%s\", because it contains a line over %d bytes long and therefore appears not to be a text file."
+msgstr "Error leyendo \"%s\", porque contiene una linea más allá de %d bytes y por tanto parece que no es un archivo de texto."
#: src/ui/gui/text-data-import-dialog.c:494
#, c-format
#: src/ui/gui/text-data-import-dialog.c:749
msgid ""
-"This assistant will guide you through the process of importing data into "
-"PSPP from a text file with one line per case, in which fields are separated "
-"by tabs, commas, or other delimiters.\n"
+"This assistant will guide you through the process of importing data into PSPP from a text file with one line per case, in which fields are separated by tabs, commas, or other delimiters.\n"
"\n"
msgstr ""
-"Este asistente te quiará a lo largo del proceso de importar datos en PSPP "
-"desde un archivo de texto con una línea por caso, en el que los campos "
-"estan separados por tabuladores, comas, u otros delimitadores.\n"
+"Este asistente te quiará a lo largo del proceso de importar datos en PSPP desde un archivo de texto con una línea por caso, en el que los campos estan separados por tabuladores, comas, u otros delimitadores.\n"
"\n"
#: src/ui/gui/text-data-import-dialog.c:755
#, c-format
msgid "The selected file contains approximately %lu line of text. "
msgid_plural "The selected file contains approximately %lu lines of text. "
-msgstr[0] ""
-"El archivo seleccionado contiene aproximadamente %lu línea de texto. "
-msgstr[1] ""
-"El archivo seleccionado contiene aproximadamente %lu líneas de texto. "
+msgstr[0] "El archivo seleccionado contiene aproximadamente %lu línea de texto. "
+msgstr[1] "El archivo seleccionado contiene aproximadamente %lu líneas de texto. "
#: src/ui/gui/text-data-import-dialog.c:769
#, c-format
-msgid ""
-"Only the first %zu line of the file will be shown for preview purposes in "
-"the following screens. "
-msgid_plural ""
-"Only the first %zu lines of the file will be shown for preview purposes in "
-"the following screens. "
-msgstr[0] ""
-"Únicamente la primera %zu líneas del archivo se previsualizaran en las "
-"siguientes pantallas. "
-msgstr[1] ""
-"Únicamente las primeras %zu líneas del archivo se previsualizaran en las "
-"siguientes pantallas. "
+msgid "Only the first %zu line of the file will be shown for preview purposes in the following screens. "
+msgid_plural "Only the first %zu lines of the file will be shown for preview purposes in the following screens. "
+msgstr[0] "Únicamente la primera %zu líneas del archivo se previsualizaran en las siguientes pantallas. "
+msgstr[1] "Únicamente las primeras %zu líneas del archivo se previsualizaran en las siguientes pantallas. "
#: src/ui/gui/text-data-import-dialog.c:776
msgid "You may choose below how much of the file should actually be imported."
-msgstr ""
-"Puedes escoger a continuación que parte del archivo va a ser importado."
+msgstr "Puedes escoger a continuación que parte del archivo va a ser importado."
#: src/ui/gui/text-data-import-dialog.c:1523
#: src/ui/gui/text-data-import-dialog.c:1768
msgid "This input line has too few separators to fill in this field."
-msgstr ""
-"Esta línea de entrada no tiene suficientes separadores para llenar el campo."
+msgstr "Esta línea de entrada no tiene suficientes separadores para llenar el campo."
#: src/ui/gui/text-data-import-dialog.c:1759
#, c-format
msgstr "%s: El valor del atributo %s[%d] no está entre comillas: %s"
#: tests/dissect-sysfile.c:880
-#, fuzzy, c-format
+#, c-format
msgid "Bad size %zu for extended number of cases."
-msgstr "Longitud no válida %zu en la extensión 11."
+msgstr "Longitud no válida %zu para un número extenso de casos."
#: tests/dissect-sysfile.c:886
#, c-format
msgid "Bad count %zu for extended number of cases."
-msgstr ""
+msgstr "Recuento incorrecto %zu para un número extenso de casos."
#: src/language/utilities/set.q:188
msgid "WORKSPACE must be at least 1MB"
#: src/language/utilities/set.q:490
#, c-format
-msgid ""
-"FORMAT requires numeric output format as an argument. Specified format %s "
-"is of type string."
-msgstr ""
-"FORMAT requiere formato de resultado numérico como argumento. El formato %s "
-"especificado es de tipo cadena."
+msgid "FORMAT requires numeric output format as an argument. Specified format %s is of type string."
+msgstr "FORMAT requiere formato de resultado numérico como argumento. El formato %s especificado es de tipo cadena."
#: src/language/utilities/set.q:707
msgid "ISL (32-bit IEEE 754 single, little-endian)"
msgstr "%s es %s."
#: src/language/stats/crosstabs.q:289
-msgid ""
-"Missing mode REPORT not allowed in general mode. Assuming MISSING=TABLE."
-msgstr ""
-"El INFORME de perdidos no está disponible en el modo general. Se asume "
-"MISSING=TABLE."
+msgid "Missing mode REPORT not allowed in general mode. Assuming MISSING=TABLE."
+msgstr "El INFORME de perdidos no está disponible en el modo general. Se asume MISSING=TABLE."
#: src/language/stats/crosstabs.q:399
msgid "Too many cross-tabulation variables or dimensions."
msgstr "%s Dependiente"
#: src/language/stats/examine.q:357
-#, fuzzy
msgid "Not creating NP plot because data set is empty."
-msgstr "No se crea el gráfico porque el conjunto de datos está vacío."
+msgstr "No se creará el gráfico NP porque el conjunto de datos está vacío."
#: src/language/stats/examine.q:442 src/language/stats/examine.q:949
msgid "Not creating plot because data set is empty."
msgstr "%g"
#: src/language/stats/frequencies.q:382
-#, fuzzy
msgid "Bar charts are not implemented."
-msgstr "%s no está implementado."
+msgstr "El gráfico de barras no está implementado."
#: src/language/stats/frequencies.q:399
-#, fuzzy, c-format
-msgid ""
-"MAX for histogram must be greater than or equal to MIN, but MIN was "
-"specified as %.15g and MAX as %.15g. MIN and MAX will be ignored."
-msgstr ""
-"MAX debe ser mayor o igual a MIN, si ambos se especifican. Pero, MIN se "
-"debe especificar como %g y MAX como %g. MIN y MAX serán ignorados."
+#, c-format
+msgid "MAX for histogram must be greater than or equal to MIN, but MIN was specified as %.15g and MAX as %.15g. MIN and MAX will be ignored."
+msgstr "Para el histograma, MAX debe ser mayor o igual a MIN, pero MIN se ha especificado como %15g y MAX como %15g. MIN y MAX serán ignorados."
#: src/language/stats/frequencies.q:420
-#, fuzzy, c-format
-msgid ""
-"MAX for pie chart must be greater than or equal to MIN, but MIN was "
-"specified as %.15g and MAX as %.15g. MIN and MAX will be ignored."
-msgstr ""
-"MAX debe ser mayor o igual a MIN, si ambos se especifican. Pero, MIN se "
-"debe especificar como %g y MAX como %g. MIN y MAX serán ignorados."
+#, c-format
+msgid "MAX for pie chart must be greater than or equal to MIN, but MIN was specified as %.15g and MAX as %.15g. MIN and MAX will be ignored."
+msgstr "Para el gráfico de sectores, MAX debe ser mayor o igual a MIN, pero MIN se ha especificado como %15g y MAX como %15g. MIN y MAX serán ignorados."
#: src/language/stats/frequencies.q:703
msgid "`)' expected after GROUPED interval list."
#: src/language/stats/frequencies.q:723
#, c-format
msgid "Variables %s specified multiple times on GROUPED subcommand."
-msgstr ""
-"La variable %s se ha especificado más de una vez en el subcomando GROUPED."
+msgstr "La variable %s se ha especificado más de una vez en el subcomando GROUPED."
#: src/language/stats/frequencies.q:733
#, c-format
msgstr "Etiqueta de Valor"
#: src/language/stats/frequencies.q:816
-#, fuzzy
msgid "Valid Percent"
-msgstr "Porcentaje"
+msgstr "Porcentaje Válido"
#: src/language/stats/frequencies.q:817
-#, fuzzy
msgid "Cum Percent"
-msgstr "Porcentaje"
+msgstr "Porcentaje Acumulado"
#: src/language/stats/frequencies.q:1008
#, c-format
#: src/language/stats/frequencies.q:1209
#, c-format
msgid "Omitting pie chart for %s, which has only %d unique values."
-msgstr ""
+msgstr "Se omite el gráfico de sectores para %s, que sólo tiene %d valores únicos."
#: src/language/stats/frequencies.q:1212
#, c-format
msgid "Omitting pie chart for %s, which has over 50 unique values."
-msgstr ""
+msgstr "Se omite el gráfico de sectores para %s, que tiene más de 50 valores únicos."
-#: src/language/stats/glm.q:248
+#: src/language/stats/glm.q:247
msgid "Multivariate GLM not yet supported"
msgstr "GLM multivariable todavía no disponible"
#: src/language/stats/npar.q:256
#, c-format
-msgid ""
-"The specified value of HI (%d) is lower than the specified value of LO (%d)"
-msgstr ""
-"El valor especificado para HI (%d) es menor que el especificado para LO (%d)"
+msgid "The specified value of HI (%d) is lower than the specified value of LO (%d)"
+msgstr "El valor especificado para HI (%d) es menor que el especificado para LO (%d)"
#: src/language/stats/npar.q:311
#, c-format
-msgid ""
-"%d expected values were given, but the specified range (%d-%d) requires "
-"exactly %d values."
-msgstr ""
-"Se han proporcionado %d valores esperados, pero el intervalo especificado (%"
-"d-%d) requiere exactamente %d valores."
+msgid "%d expected values were given, but the specified range (%d-%d) requires exactly %d values."
+msgstr "Se han proporcionado %d valores esperados, pero el intervalo especificado (%d-%d) requiere exactamente %d valores."
#: src/language/stats/npar.q:453 src/language/stats/t-test.q:380
#, c-format
-msgid ""
-"PAIRED was specified but the number of variables preceding WITH (%zu) did "
-"not match the number following (%zu)."
-msgstr ""
-"Se ha especificado PAIRED pero el número de variables antes de WITH (%zu) no "
-"coincide con el número de variables posterior (%zu)."
+msgid "PAIRED was specified but the number of variables preceding WITH (%zu) did not match the number following (%zu)."
+msgstr "Se ha especificado PAIRED pero el número de variables antes de WITH (%zu) no coincide con el número de variables posterior (%zu)."
#: src/language/stats/oneway.q:170
msgid "Number of contrast coefficients must equal the number of groups"
-msgstr ""
-"El número de coeficientes de contraste debe ser igual al número de grupos"
+msgstr "El número de coeficientes de contraste debe ser igual al número de grupos"
#: src/language/stats/oneway.q:179
#, c-format
#: src/language/stats/rank.q:600
msgid "Cannot create new rank variable. All candidates in use."
-msgstr ""
-"No se puede crear la nueva variable de rangos. Todos los candidatos están "
-"en uso."
+msgstr "No se puede crear la nueva variable de rangos. Todos los candidatos están en uso."
#: src/language/stats/rank.q:693
msgid "Variables Created By RANK"
msgstr "%s en %s(%s de %s)"
#: src/language/stats/rank.q:761
-msgid ""
-"FRACTION has been specified, but NORMAL and PROPORTION rank functions have "
-"not been requested. The FRACTION subcommand will be ignored."
-msgstr ""
-"Se ha especificado FRACTION, pero no se han pedido funciones de rango NORMAL "
-"o PROPORTION. La suborden FRACTION será ignorada."
+msgid "FRACTION has been specified, but NORMAL and PROPORTION rank functions have not been requested. The FRACTION subcommand will be ignored."
+msgstr "Se ha especificado FRACTION, pero no se han pedido funciones de rango NORMAL o PROPORTION. La suborden FRACTION será ignorada."
#: src/language/stats/rank.q:852
#, c-format
msgstr "Correlaciones de Coeficientes"
#: src/language/stats/regression.q:793
-msgid ""
-"The dependent variable is equal to the independent variable.The least "
-"squares line is therefore Y=X.Standard errors and related statistics may be "
-"meaningless."
-msgstr ""
-"La variable dependiente es igual a la variable independiente. La línea de "
-"minimos cuadrados es por tanto Y=X. Los errores estándard y los estadísticos "
-"relacionados podrian ser irrelevantes."
+msgid "The dependent variable is equal to the independent variable.The least squares line is therefore Y=X.Standard errors and related statistics may be meaningless."
+msgstr "La variable dependiente es igual a la variable independiente. La línea de minimos cuadrados es por tanto Y=X. Los errores estándard y los estadísticos relacionados podrian ser irrelevantes."
#: src/language/stats/regression.q:891
msgid "REGRESSION requires numeric variables."
-msgstr ""
+msgstr "REGRESSION requiere variables numéricas."
#: src/language/stats/regression.q:962
msgid "No valid data found. This command was skipped."
#: src/language/stats/t-test.q:190
msgid "Exactly one of TESTVAL, GROUPS and PAIRS subcommands must be specified."
-msgstr ""
-"Debe especificarse sólo uno de los subcomandos TESTVAL, GROUPS y PAIRS."
+msgstr "Debe especificarse sólo uno de los subcomandos TESTVAL, GROUPS y PAIRS."
#: src/language/stats/t-test.q:211
msgid "VARIABLES subcommand may not be used with PAIRS."
msgstr "Una o más VARIABLES deben ser especificadas."
#: src/language/stats/t-test.q:324
-msgid ""
-"When applying GROUPS to a string variable, two values must be specified."
-msgstr ""
-"Cuando se aplica GROUPS a una variable alfabética, se deben especificar dos "
-"valores."
+msgid "When applying GROUPS to a string variable, two values must be specified."
+msgstr "Cuando se aplica GROUPS a una variable alfabética, se deben especificar dos valores."
#: src/language/stats/t-test.q:395
msgid "At least two variables must be specified on PAIRS."
#: src/language/data-io/file-handle.q:65
#, c-format
-msgid ""
-"File handle %s is already defined. Use CLOSE FILE HANDLE before redefining "
-"a file handle."
-msgstr ""
-"El manipulador de archivo %s ya está definido. Usar CLOSE FILE HANDLE antes "
-"de redefinir un manipulador de archivos."
+msgid "File handle %s is already defined. Use CLOSE FILE HANDLE before redefining a file handle."
+msgstr "El manipulador de archivo %s ya está definido. Usar CLOSE FILE HANDLE antes de redefinir un manipulador de archivos."
#: src/language/data-io/file-handle.q:120
msgid "RECFORM must be specified with MODE=360."
msgstr "RECFORM debe ser especificado con MODE=360."
#: src/language/data-io/file-handle.q:131
-#, fuzzy, c-format
-msgid ""
-"The specified file mode requires LRECL. Assuming %zu-character records."
-msgstr ""
-"El modo de archivo especificado requiere LRECL. Se asume %d-registros de "
-"carácter."
+#, c-format
+msgid "The specified file mode requires LRECL. Assuming %zu-character records."
+msgstr "El modo de fichero especificado requiere LRECL. Se asumen registros de %zu caracteres."
#: src/language/data-io/file-handle.q:135
#, c-format
-msgid ""
-"Record length (%ld) must be between 1 and %lu bytes. Assuming %d-character "
-"records."
-msgstr ""
-"El tamaño de registro (%ld) debe estar entre 1 y %lu bytes. Se asume %d-"
-"registros de carácter."
+msgid "Record length (%ld) must be between 1 and %lu bytes. Assuming %d-character records."
+msgstr "El tamaño de registro (%ld) debe estar entre 1 y %lu bytes. Se asume %d-registros de carácter."
#: src/language/data-io/file-handle.q:177
msgid "file"
#: src/language/data-io/list.q:99
#, c-format
-msgid ""
-"The first case (%ld) specified precedes the last case (%ld) specified. The "
-"values will be swapped."
-msgstr ""
-"El primer caso (%ld) especificado precede al último caso (%ld) "
-"especificado. Los valores se intercanviarán."
+msgid "The first case (%ld) specified precedes the last case (%ld) specified. The values will be swapped."
+msgstr "El primer caso (%ld) especificado precede al último caso (%ld) especificado. Los valores se intercanviarán."
#: src/language/data-io/list.q:107
#, c-format
-msgid ""
-"The first case (%ld) to list is less than 1. The value is being reset to 1."
+msgid "The first case (%ld) to list is less than 1. The value is being reset to 1."
msgstr "EL primer caso (%ld) a listar es menor que 1. El valor se ajusta a 1."
#: src/language/data-io/list.q:113
#, c-format
-msgid ""
-"The last case (%ld) to list is less than 1. The value is being reset to 1."
+msgid "The last case (%ld) to list is less than 1. The value is being reset to 1."
msgstr "El último caso (%ld) a listar es menor que 1. El valor se ajusta a 1."
#: src/language/data-io/list.q:119
msgstr "El valor de paso %ld es menor que 1. El valor se ajusta a 1."
#: src/ui/gui/binomial.ui:57 src/ui/gui/chi-square.ui:57
-#, fuzzy
msgid "_Test Variable List:"
-msgstr "Variable(s) de contraste:"
+msgstr "Lista de Variable _Test:"
#: src/ui/gui/binomial.ui:126 src/ui/gui/chi-square.ui:126
msgid "_Get from data"
-msgstr ""
+msgstr "Obtención de datos"
#: src/ui/gui/binomial.ui:143 src/ui/gui/t-test.ui:333
msgid "_Cut point:"
#: src/ui/gui/binomial.ui:178
msgid "Define Dichotomy"
-msgstr ""
+msgstr "Definir Dicotomía"
#: src/ui/gui/binomial.ui:197
-#, fuzzy
msgid "Test _Proportion:"
-msgstr "Prop. Test"
+msgstr "Test _Proporción:"
#: src/ui/gui/correlation.ui:7
-#, fuzzy
msgid "Bivariate Correlations"
-msgstr "Correlación de Spearman"
+msgstr "Correlaciones Bivariadas"
#: src/ui/gui/correlation.ui:108
-#, fuzzy
msgid "Pearso_n"
-msgstr "R de Pearson"
+msgstr "Pearso_n"
#: src/ui/gui/correlation.ui:123
-#, fuzzy
msgid "_Kendall's tau-b"
-msgstr "Tau-B de Kendall"
+msgstr "Tau-b de _Kendall"
#: src/ui/gui/correlation.ui:138
msgid "_Spearman"
-msgstr ""
+msgstr "_Spearman"
#: src/ui/gui/correlation.ui:158
-#, fuzzy
msgid "Correlation Coefficients"
-msgstr "Coeficientes de Contraste"
+msgstr "Coeficientes de Correlación"
#: src/ui/gui/correlation.ui:182
-#, fuzzy
msgid "_Two-tailed"
-msgstr "Total"
+msgstr "Dos colas"
#: src/ui/gui/correlation.ui:198
msgid "One-tai_led"
-msgstr ""
+msgstr "Una cola"
#: src/ui/gui/correlation.ui:220
-#, fuzzy
msgid "Test of Significance"
-msgstr "Significatividad"
+msgstr "Test de Significatividad"
#: src/ui/gui/correlation.ui:232
-#, fuzzy
msgid "_Flag significant correlations"
-msgstr "Correlaciones de Coeficientes"
+msgstr "Marca correlaciones significantes"
#: src/ui/gui/crosstabs.ui:7
-#, fuzzy
msgid "Crosstabs"
-msgstr "Tablas _Cruzadas"
+msgstr "Tablas _Contingencia"
#: src/ui/gui/crosstabs.ui:50
msgid "Rows"
msgstr "Celdas..."
#: src/ui/gui/crosstabs.ui:227
-#, fuzzy
msgid "Crosstabs: Format"
-msgstr "Tablas _Cruzadas"
+msgstr "Tablas Contingencia: Formato"
#: src/ui/gui/crosstabs.ui:241
msgid "Print tables"
msgstr "Etiquetando"
#: src/ui/gui/crosstabs.ui:369
-#, fuzzy
msgid "Crosstabs: Cells"
-msgstr "Tablas _Cruzadas"
+msgstr "Tablas Contingencia: Casillas"
#: src/ui/gui/crosstabs.ui:402
msgid "Cell Display"
msgstr "Contenido de celda"
#: src/ui/gui/crosstabs.ui:430
-#, fuzzy
msgid "Crosstabs: Statistics"
-msgstr "Pruebas Estadísticas"
+msgstr "Tablas Contingencia: Estadísticos"
#: src/ui/gui/crosstabs.ui:463 src/ui/gui/oneway.ui:222
#: src/ui/gui/regression.ui:340
msgstr "Estadísticas"
#: src/ui/gui/chi-square.ui:13
-#, fuzzy
msgid "Chi-Square Test"
-msgstr "Pruebas Chi-cuadrado."
+msgstr "Test Chi-cuadrado."
#: src/ui/gui/chi-square.ui:140
-#, fuzzy
msgid "Use _specified range"
-msgstr "Utiliza valores especificados:"
+msgstr "Utiliza rango e_specificado"
#: src/ui/gui/chi-square.ui:162
-#, fuzzy
msgid "_Lower:"
-msgstr "Inferior"
+msgstr "Mínimo:"
#: src/ui/gui/chi-square.ui:170
-#, fuzzy
msgid "_Upper:"
-msgstr "Superior"
+msgstr "Máximo:"
#: src/ui/gui/chi-square.ui:214
-#, fuzzy
msgid "Expected Range:"
-msgstr "N esperado"
+msgstr "Rango esperado:"
#: src/ui/gui/chi-square.ui:240
msgid "All categor_ies equal"
-msgstr ""
+msgstr "Igual todas las categor_ias"
#: src/ui/gui/chi-square.ui:257
-#, fuzzy
msgid "_Values"
-msgstr "Valores"
+msgstr "_Valores"
#: src/ui/gui/chi-square.ui:301
-#, fuzzy
msgid "Expected Values:"
-msgstr "Valores extremos"
+msgstr "Valores Esperados:"
#: src/ui/gui/descriptives.ui:130 src/ui/gui/frequencies.ui:140
msgid "Statistics:"
#: src/ui/gui/descriptives.ui:222
msgid "Save Z-scores of selected variables as new variables"
-msgstr ""
-"Guardar puntuaciones-Z de las variables seleccionadas como nuevas variables"
+msgstr "Guardar puntuaciones-Z de las variables seleccionadas como nuevas variables"
#: src/ui/gui/descriptives.ui:243
msgid "Options:"
msgstr "Opciones:"
#: src/ui/gui/examine.ui:8
-#, fuzzy
msgid "Explore"
-msgstr "_Explorar"
+msgstr "Explorar"
#: src/ui/gui/examine.ui:51
msgid "Label Cases by:"
msgstr "Opciones..."
#: src/ui/gui/examine.ui:302
-#, fuzzy
msgid "Explore: Statistics"
-msgstr "Pruebas Estadísticas"
+msgstr "Explorar: Estadísticos"
#: src/ui/gui/examine.ui:332
msgid "Extremes"
#: src/ui/gui/examine.ui:381
msgid "Explore: Options"
-msgstr ""
+msgstr "Explorar: Opciones"
#: src/ui/gui/examine.ui:405
msgid "Exclude cases listwise"
msgstr "Valores perdidos"
#: src/ui/gui/factor.ui:21
-#, fuzzy
msgid "Factor Analysis"
-msgstr "Lista de Factores:"
+msgstr "Análisis Factorial"
#: src/ui/gui/factor.ui:47
-#, fuzzy
msgid "_Descriptives..."
-msgstr "Descriptivos"
+msgstr "_Descriptivos..."
#: src/ui/gui/factor.ui:60
-#, fuzzy
msgid "_Extraction..."
-msgstr "Opciones..."
+msgstr "_Extracción..."
#: src/ui/gui/factor.ui:74
-#, fuzzy
msgid "_Rotations..."
-msgstr "Opciones..."
+msgstr "_Rotaciones..."
#: src/ui/gui/factor.ui:192
msgid "Factor Analysis: Extraction"
-msgstr ""
+msgstr "Análisis Factorial: Extracción"
#: src/ui/gui/factor.ui:216
-#, fuzzy
msgid "Method: "
-msgstr "Modo:"
+msgstr "Método: "
#: src/ui/gui/factor.ui:266
-#, fuzzy
msgid "Correlation matrix"
-msgstr "Correlación"
+msgstr "Matriz de Correlaciones"
#: src/ui/gui/factor.ui:280
-#, fuzzy
msgid "Covariance matrix"
-msgstr "Covarianza"
+msgstr "Matriz de Covariancias"
#: src/ui/gui/factor.ui:300
-#, fuzzy
msgid "Analyse"
-msgstr "_Analizar"
+msgstr "Analizar"
#: src/ui/gui/factor.ui:324
msgid "Unrotatated factor solution"
-msgstr ""
+msgstr "Solución factorial sin rotar"
#: src/ui/gui/factor.ui:338
msgid "Scree plot"
-msgstr ""
+msgstr "Gráfico de sedimentación"
#: src/ui/gui/factor.ui:357 src/ui/gui/roc.ui:286
-#, fuzzy
msgid "Display"
-msgstr "Contenido de celda"
+msgstr "Contenido"
#: src/ui/gui/factor.ui:430
msgid "Number of factors:"
-msgstr ""
+msgstr "Número de factores:"
#: src/ui/gui/factor.ui:460
-#, fuzzy
msgid "Extract"
-msgstr "Eta"
+msgstr "Extracción"
#: src/ui/gui/factor.ui:475 src/ui/gui/factor.ui:665
msgid "Maximum iterations for convergence:"
-msgstr ""
+msgstr "Iteraciones máximas para la convergencia:"
#: src/ui/gui/factor.ui:538
-#, fuzzy
msgid "Factor Analysis: Rotation"
-msgstr "Lista de Factores:"
+msgstr "Análisis Factorial: Rotación"
#: src/ui/gui/factor.ui:571
-#, fuzzy
msgid "_None"
-msgstr "Ninguno"
+msgstr "_Ninguno"
#: src/ui/gui/factor.ui:582
-#, fuzzy
msgid "_Varimax"
-msgstr "_Variables"
+msgstr "_Varimax"
#: src/ui/gui/factor.ui:598
msgid "_Quartimax"
-msgstr ""
+msgstr "_Quartimax"
#: src/ui/gui/factor.ui:614
msgid "_Equimax"
-msgstr ""
+msgstr "_Equimax"
#: src/ui/gui/factor.ui:637
-#, fuzzy
msgid "Method"
-msgstr "Modo:"
+msgstr "Método"
#: src/ui/gui/factor.ui:648
-#, fuzzy
msgid "_Display rotated solution"
-msgstr "Muestra _información del archivo de datos"
+msgstr "Muestra la solución rotada"
#: src/ui/gui/find.ui:8
-#, fuzzy
msgid "Find Case"
-msgstr "Rango de Casos"
+msgstr "Buscar caso"
#: src/ui/gui/find.ui:88
msgid "Variable:"
msgstr "Variable(s):"
#: src/ui/gui/frequencies.ui:151
-#, fuzzy
msgid "Include missing values"
-msgstr "Si_n valores perdidos"
+msgstr "Incluye valores perdidos"
#: src/ui/gui/frequencies.ui:189
-#, fuzzy
msgid "Charts..."
-msgstr "_Contrastes..."
+msgstr "Gráficos..."
#: src/ui/gui/frequencies.ui:201
-#, fuzzy
msgid "Frequency Tables..."
-msgstr "Variable de Frecuencia"
+msgstr "Tablas de Frecuencias..."
#: src/ui/gui/frequencies.ui:251
-#, fuzzy
msgid "Frequencies: Frequency Tables"
-msgstr "Mostrar la tabla de frecuencias"
+msgstr "Frecuencias: Tablas de frecuencias"
#: src/ui/gui/frequencies.ui:281
msgid "Always"
-msgstr ""
+msgstr "Siempre"
#: src/ui/gui/frequencies.ui:297
-#, fuzzy
msgid "Never"
-msgstr "Negativo"
+msgstr "Nunca"
#: src/ui/gui/frequencies.ui:316
msgid "If no more than "
-msgstr ""
+msgstr "Si no más de "
#: src/ui/gui/frequencies.ui:347
-#, fuzzy
msgid "values"
msgstr "Valores"
#: src/ui/gui/frequencies.ui:368
-#, fuzzy
msgid "Display frequency tables"
-msgstr "Mostrar la tabla de frecuencias"
+msgstr "Mostrar tabla de frecuencias"
#: src/ui/gui/frequencies.ui:396
-#, fuzzy
msgid "Ascending value"
-msgstr "Ascendente"
+msgstr "Valor Ascendente"
#: src/ui/gui/frequencies.ui:412
-#, fuzzy
msgid "Descending value"
-msgstr "Descendente"
+msgstr "Valor Descendente"
#: src/ui/gui/frequencies.ui:428
-#, fuzzy
msgid "Ascending frequency"
msgstr "Orden Ascendente"
#: src/ui/gui/frequencies.ui:444
-#, fuzzy
msgid "Descending frequency"
msgstr "Orden Descendente"
msgstr "Ordenado por"
#: src/ui/gui/frequencies.ui:508
-#, fuzzy
msgid "Frequencies: Charts"
-msgstr "Frecuencias"
+msgstr "Frecuencias: Gráficos"
#: src/ui/gui/frequencies.ui:536
-#, fuzzy
msgid "Exclude values below "
-msgstr "Excluir casos según lista"
+msgstr "Excluir valores por debajo "
#: src/ui/gui/frequencies.ui:571
-#, fuzzy
msgid "Exclude values above "
-msgstr "Excluir casos por parejas"
+msgstr "Excluir valores por encima "
#: src/ui/gui/frequencies.ui:609
-#, fuzzy
msgid "<b>Chart Formatting</b>"
-msgstr "<b>Comillas</b>"
+msgstr "<b>Formato de Gráficos</b>"
#: src/ui/gui/frequencies.ui:633
msgid "Draw histograms"
-msgstr ""
+msgstr "Dibujar histogramas"
#: src/ui/gui/frequencies.ui:645
msgid "Superimpose normal curve"
-msgstr ""
+msgstr "Sobreimprimir curva normal"
#: src/ui/gui/frequencies.ui:661
-#, fuzzy
msgid "Scale:"
-msgstr "Escala"
+msgstr "Escala:"
#: src/ui/gui/frequencies.ui:682
-#, fuzzy
msgid "Percentages"
-msgstr "Percentiles"
+msgstr "Porcentajes"
#: src/ui/gui/frequencies.ui:705
-#, fuzzy
msgid "<b>Histograms</b>"
-msgstr "<b>Separadores</b>"
+msgstr "<b>Histogramas</b>"
#: src/ui/gui/frequencies.ui:729
msgid "Draw pie charts"
-msgstr ""
+msgstr "Dibuja diagramas de sectores"
#: src/ui/gui/frequencies.ui:741
-#, fuzzy
msgid "Include slices for missing values"
-msgstr "Valores perdidos _Discretos"
+msgstr "Incluir sectores para los valores perdidos"
#: src/ui/gui/frequencies.ui:758
-#, fuzzy
msgid "<b>Pie Charts</b>"
-msgstr "<b>Separadores</b>"
+msgstr "<b>Diagramas de Sectores</b>"
#: src/ui/gui/oneway.ui:8
-#, fuzzy
msgid "One-Way ANOVA"
-msgstr "_ANOVA de un factor"
+msgstr "ANOVA de un factor"
#: src/ui/gui/oneway.ui:31
msgid "_Factor:"
msgstr "_Contrastes..."
#: src/ui/gui/oneway.ui:292
-#, fuzzy
msgid "One-Way ANOVA: Contrasts"
-msgstr "_ANOVA de un factor"
+msgstr "ANOVA de un factor: Contrastes"
#: src/ui/gui/oneway.ui:369
msgid "_Coefficients:"
msgstr "Estatus actual: "
#: src/ui/gui/psppire.ui:195
-#, fuzzy
msgid "Transpose"
-msgstr "_Trasponer"
+msgstr "Transponer"
#: src/ui/gui/psppire.ui:247
msgid "Name Variable:"
msgstr "El análisis por grupos está activado"
#: src/ui/gui/psppire.ui:709
-#, fuzzy
msgid "Compute Variable"
-msgstr "Variables de salida"
+msgstr "Calcular Variable"
#: src/ui/gui/psppire.ui:742
msgid "Target Variable:"
msgstr "Los casos no seleccionados són"
#: src/ui/gui/psppire.ui:1585
-#, fuzzy
msgid "Data File Comments"
-msgstr "_Comentarios al archivo de datos"
+msgstr "Comentarios del fichero de datos"
#: src/ui/gui/psppire.ui:1609
msgid "Comments:"
msgstr "Columna Número: 0"
#: src/ui/gui/psppire.ui:1703
-#, fuzzy
msgid "Select Cases: Range"
-msgstr "Seleccionar casos"
+msgstr "Seleccionar casos: Rango"
#: src/ui/gui/psppire.ui:1750
msgid "First case"
#: src/ui/gui/psppire.ui:1808
msgid "Compute Variable: Type and Label"
-msgstr ""
+msgstr "Calcular Variable: Tipo y Etiqueta"
#: src/ui/gui/psppire.ui:1843
msgid "Use expression as label"
msgstr "Utilizar la expresión como etiqueta"
#: src/ui/gui/psppire.ui:2088
-#, fuzzy
msgid "Goto Case"
-msgstr "Ir al Caso"
+msgstr "Ir al Cas"
#: src/ui/gui/psppire.ui:2106
msgid "Goto Case Number:"
msgstr "Ir al caso número:"
#: src/ui/gui/psppire.ui:2149
-#, fuzzy
msgid "Select Cases: Random Sample"
-msgstr "Seleccionar casos"
+msgstr "Seleccionar casos: Muestra aleatoria"
#: src/ui/gui/psppire.ui:2247
msgid "Sample Size"
msgstr "Vínculos..."
#: src/ui/gui/rank.ui:346
-#, fuzzy
msgid "Rank Cases: Types"
-msgstr "Rango de Casos"
+msgstr "Rango de casos: Tipos"
#: src/ui/gui/rank.ui:366
msgid "Sum of case weights"
msgstr "Fórmula de estimación de Proporciones"
#: src/ui/gui/rank.ui:625
-#, fuzzy
msgid "Rank Cases: Ties"
-msgstr "Rango de Casos"
+msgstr "Rango de casos: Vínculos"
#: src/ui/gui/rank.ui:651
msgid "_Mean"
msgstr "Rango asignado a empates"
#: src/ui/gui/sort.ui:8
-#, fuzzy
msgid "Sort Cases"
-msgstr "Ordenar Caso_s"
+msgstr "Ordenar Casos"
#: src/ui/gui/sort.ui:79
msgid "Sort by:"
msgstr "Perdido del Sistema"
#: src/ui/gui/recode.ui:199
-#, fuzzy
msgid "System or User Missing"
-msgstr "Perdido de sistema o de usuario"
+msgstr "Perdido de Sistema o de Usuario"
#: src/ui/gui/recode.ui:237
msgid "through"
msgstr "Independiente"
#: src/ui/gui/regression.ui:236
-#, fuzzy
msgid "Regression: Save"
-msgstr "Regresión"
+msgstr "Regresión: Guardar"
#: src/ui/gui/regression.ui:250
msgid "Predicted values"
msgstr "Residuales"
#: src/ui/gui/regression.ui:298
-#, fuzzy
msgid "Regression: Statistics"
-msgstr "Pruebas Estadísticas"
+msgstr "Regresión: Estadísticos"
#: src/ui/gui/reliability.ui:27
msgid "Reliability Analysis"
msgstr "Variables a primera división:"
#: src/ui/gui/roc.ui:115
-#, fuzzy
msgid "_Test Variable:"
-msgstr "Variable(s) de contraste:"
+msgstr "Variable de prueba:"
#: src/ui/gui/roc.ui:147
-#, fuzzy
msgid "_State Variable:"
-msgstr "Nombre de Variable:"
+msgstr "Variable de Estado:"
#: src/ui/gui/roc.ui:172
-#, fuzzy
msgid "_Value of state variable:"
-msgstr "Utilizar variable de filtro"
+msgstr "_Valor de la variable de estado:"
#: src/ui/gui/roc.ui:209
-#, fuzzy
msgid "ROC C_urve"
msgstr "Curva ROC"
#: src/ui/gui/roc.ui:227
msgid "_With diagonal reference line"
-msgstr ""
+msgstr "Con línea de referencia diagonal"
#: src/ui/gui/roc.ui:251
-#, fuzzy
msgid "Standard _Error and Confidence Interval"
-msgstr "Intervalo de Confianza del 95%%"
+msgstr "_Error típico y Intervalo de Confianza"
#: src/ui/gui/roc.ui:266
-#, fuzzy
msgid "_Coordinate points of the ROC Curve"
-msgstr "Coordenadas de la Curva"
+msgstr "_Coordenadas de la Curva ROC"
#: src/ui/gui/t-test.ui:8
-#, fuzzy
msgid "Independent-Samples T Test"
-msgstr "Prueba T para muestras _Independientes"
+msgstr "Prueba T para muestras Independientes"
#: src/ui/gui/t-test.ui:54 src/ui/gui/t-test.ui:175 src/ui/gui/t-test.ui:231
msgid "Define Groups"
msgstr "Utiliza valores especificados:"
#: src/ui/gui/t-test.ui:420
-#, fuzzy
msgid "Options"
-msgstr "Opciones:"
+msgstr "Opciones"
#: src/ui/gui/t-test.ui:452
msgid "Exclude cases _analysis by analysis"
msgstr "Excluir casos según _lista"
#: src/ui/gui/t-test.ui:529
-#, fuzzy
msgid "One - Sample T Test"
msgstr "Prueba T para una muestra"
msgstr "Valor de Contraste: "
#: src/ui/gui/t-test.ui:704
-#, fuzzy
msgid "Paired Samples T Test"
-msgstr "Prueba T para muestras Em_parejadas"
+msgstr "Prueba T para muestras Emparejadas"
#: src/ui/gui/text-data-import.ui:8
msgid "Importing Textual Data"
#: src/ui/gui/text-data-import.ui:19
msgid ""
-"This assistant will guide you through the process of importing data into "
-"PSPP from a text file with one line per case, in which fields are separated "
-"by tabs, commas, or other delimiters.\n"
+"This assistant will guide you through the process of importing data into PSPP from a text file with one line per case, in which fields are separated by tabs, commas, or other delimiters.\n"
"\n"
-"The selected file contains N lines of text. Only the first M of these will "
-"be shown for preview purposes in the following screens. You may choose "
-"below how much of the file should actually be imported."
+"The selected file contains N lines of text. Only the first M of these will be shown for preview purposes in the following screens. You may choose below how much of the file should actually be imported."
msgstr ""
-"Este asistente te quiará a lo largo del proceso de importar datos al PSPP "
-"desde un archivo de texto con una línea por caso, en el cual los campos "
-"están separados por tabuladores, comas, u otros delimitadores.\n"
+"Este asistente te quiará a lo largo del proceso de importar datos al PSPP desde un archivo de texto con una línea por caso, en el cual los campos están separados por tabuladores, comas, u otros delimitadores.\n"
"\n"
-"El archivo seleccionado contiene N líneas de texto. Solo las primeras M se "
-"mostrarán como previsualización en las pantallas siguientes. Puedes escoger "
-"a continuación qué parte del archivo ha de ser importado."
+"El archivo seleccionado contiene N líneas de texto. Solo las primeras M se mostrarán como previsualización en las pantallas siguientes. Puedes escoger a continuación qué parte del archivo ha de ser importado."
#: src/ui/gui/text-data-import.ui:52
msgid "All cases"
#: src/ui/gui/text-data-import.ui:241
msgid "Line above selected line contains variable names"
-msgstr ""
-"La línea por encima de la seleccionada contiene los nombres de las variables"
+msgstr "La línea por encima de la seleccionada contiene los nombres de las variables"
#: src/ui/gui/text-data-import.ui:259
msgid "Choose Separators"
msgstr "Ajustar formato de variables"
#: src/ui/gui/text-data-import.ui:618
-msgid ""
-"Check the data formats displayed below and fix any that are incorrect. You "
-"may set other variable properties now or later."
-msgstr ""
-"Comprueba los formatos de los datos mostrados a continuación y corrige los "
-"problemas. Se pueden asignar propiedades de las variables ahora o más "
-"adelante."
+msgid "Check the data formats displayed below and fix any that are incorrect. You may set other variable properties now or later."
+msgstr "Comprueba los formatos de los datos mostrados a continuación y corrige los problemas. Se pueden asignar propiedades de las variables ahora o más adelante."
#: src/ui/gui/text-data-import.ui:662
msgid "<b>Variables</b>"
msgstr "Ir al Caso"
#: src/ui/gui/data-editor.ui:134
-#, fuzzy
msgid "Jump to a case in the data sheet"
-msgstr "Ir a un caso en la Matriz de Datos"
+msgstr "Ir a un caso en la matriz de datos"
#: src/ui/gui/data-editor.ui:160
msgid "Cl_ear Variables"
msgstr "_ANOVA de un factor"
#: src/ui/gui/data-editor.ui:376
-#, fuzzy
msgid "Bivariate _Correlation..."
-msgstr "Correlación de Spearman"
+msgstr "_Correlación Bivariada..."
#: src/ui/gui/data-editor.ui:382
-#, fuzzy
msgid "Factor _Analysis"
-msgstr "Lista de Factores:"
+msgstr "_Análisis Factorial"
#: src/ui/gui/data-editor.ui:388
msgid "Re_liability"
msgstr "_Binomial"
#: src/ui/gui/data-editor.ui:418
-#, fuzzy
msgid "ROC Cur_ve..."
msgstr "Curva ROC"
msgstr "Área de División de Archivo"
#: src/ui/gui/output-viewer.ui:22
-#, fuzzy
msgid "_Export"
-msgstr "_Explorar"
+msgstr "_Exportar"
#: src/ui/gui/syntax-editor.ui:100
msgid "_Run"
msgid "To End"
msgstr "Hasta el final"
-#~ msgid "Dependent variable must be numeric."
-#~ msgstr "La variable dependiente debe ser numérica."
-
-#~ msgid "Variable %s has label of invalid length %zu."
-#~ msgstr "Variable %s tiene una etiqueta de longitud no válida %zu."
-
-#~ msgid "_About"
-#~ msgstr "Sobre..."
-
#~ msgid "Buttons"
#~ msgstr "Botones"
#~ msgid "...not found"
#~ msgstr "...no se encuentra"
+#~ msgid "Variable %s has label of invalid length %zu."
+#~ msgstr "Variable %s tiene una etiqueta de longitud no válida %zu."
+
#~ msgid "little-endian"
#~ msgstr "little-endian"
#~ msgid "unexpected end of line expecting string"
#~ msgstr "final de línea inesperado cuando se esperaba una cadena"
-#~ msgid ""
-#~ "ascii: bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %"
-#~ "d decimal, with INDEX expressed in base 4"
-#~ msgstr ""
-#~ "ascii: índice de valor defectuoso para la clave `box' : la sintaxis es la "
-#~ "box[INDEX], 0 <= INDEX < %d decimal, con INDEX expresado en base 4"
+#~ msgid "ascii: bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %d decimal, with INDEX expressed in base 4"
+#~ msgstr "ascii: índice de valor defectuoso para la clave `box' : la sintaxis es la box[INDEX], 0 <= INDEX < %d decimal, con INDEX expresado en base 4"
#~ msgid "ascii: multiple values for %s"
#~ msgstr "ascii: valores múltiples para %s"
#~ msgid "ascii: only screen devices may have `auto' length or width"
-#~ msgstr ""
-#~ "ascii: únicamente los dispositivos de pantalla pueden tener largo o ancho "
-#~ "`auto'"
+#~ msgstr "ascii: únicamente los dispositivos de pantalla pueden tener largo o ancho `auto'"
#~ msgid "ascii: positive integer required as `%s' value"
#~ msgstr "ascii: entero positivo requerido como valor `%s'"
#~ msgid "ascii: `emphasis' value must be `bold', `underline', or `none'"
-#~ msgstr ""
-#~ "ascii: el valor de `emphasis' tiene que ser `bold', `underline', o `none'"
+#~ msgstr "ascii: el valor de `emphasis' tiene que ser `bold', `underline', o `none'"
#~ msgid "ascii: zero or positive integer required as `%s' value"
#~ msgstr "ascii: cero o entero positivo requerido como valor `%s'"
#~ msgstr "abriendo archivo de resultado HTML: %s"
#~ msgid "unknown configuration parameter `%s' for HTML device driver"
-#~ msgstr ""
-#~ "parámetro de configuración `%s' desconocido para el dispositivo "
-#~ "controlador HTML"
+#~ msgstr "parámetro de configuración `%s' desconocido para el dispositivo controlador HTML"
#~ msgid "error creating \"%s\""
#~ msgstr "error en crear \"%s\""
#~ msgid "using default output driver configuration"
#~ msgstr "utilizando driver de configuración de resultados por defecto"
-#~ msgid ""
-#~ "cannot find output initialization file (use `-vv' to view search path)"
-#~ msgstr ""
-#~ "no se puede encontrar el archivo de inicialización de resultados "
-#~ "(utilizar `-vv' para ver la ruta de búsqueda)"
+#~ msgid "cannot find output initialization file (use `-vv' to view search path)"
+#~ msgstr "no se puede encontrar el archivo de inicialización de resultados (utilizar `-vv' para ver la ruta de búsqueda)"
#~ msgid "cannot open \"%s\""
#~ msgstr "no se puede abrir \"%s\""
#~ "Clases de controlador:\n"
#~ "\t"
-#~ msgid ""
-#~ "reached end of options inside quoted string parsing options for \"%s\" "
-#~ "driver"
-#~ msgstr ""
-#~ "Llegado al final de opciones dentro de la cadena entre comillas "
-#~ "analitzando opciones para el controlador \"%s\""
+#~ msgid "reached end of options inside quoted string parsing options for \"%s\" driver"
+#~ msgstr "Llegado al final de opciones dentro de la cadena entre comillas analitzando opciones para el controlador \"%s\""
#~ msgid "syntax error in string constant parsing options for \"%s\" driver"
-#~ msgstr ""
-#~ "error de sintaxis en una constante de cadena analizando opciones para el "
-#~ "controlador \"%s\""
+#~ msgstr "error de sintaxis en una constante de cadena analizando opciones para el controlador \"%s\""
#~ msgid "syntax error expecting `=' parsing options for driver \"%s\""
-#~ msgstr ""
-#~ "error de sintaxis cuando se esperaba `=' analizando las opciones para el "
-#~ "controlador \"%s\""
+#~ msgstr "error de sintaxis cuando se esperaba `=' analizando las opciones para el controlador \"%s\""
#~ msgid "unknown output driver class `%.*s'"
#~ msgstr "controlador de salida de clase desconocida `%.*s'"
#~ msgstr "no puede inicializar el controlador de salida `%s' de la clase `%s'"
#~ msgid "driver definition line missing driver name or class name"
-#~ msgstr ""
-#~ "línea de definición del controlador sin nombre del controlador o nombre "
-#~ "de la clase"
+#~ msgstr "línea de definición del controlador sin nombre del controlador o nombre de la clase"
#~ msgid "opening PostScript output file \"%s\""
#~ msgstr "abriendo el archivo de salida PostScript \"%s\""
#~ msgstr "cierre el archivo de salida PostScript \"%s\""
#~ msgid "unknown configuration parameter `%s' for PostScript device driver"
-#~ msgstr ""
-#~ "parámetro de configuración desconocido`%s' para el controlador del "
-#~ "dispositivo PostScript"
+#~ msgstr "parámetro de configuración desconocido`%s' para el controlador del dispositivo PostScript"
-#~ msgid ""
-#~ "unknown orientation `%s' (valid orientations are `portrait' and "
-#~ "`landscape')"
-#~ msgstr ""
-#~ "orientación desconocida `%s' (las orientaciones válidas son `retrato' i "
-#~ "`paisaje')"
+#~ msgid "unknown orientation `%s' (valid orientations are `portrait' and `landscape')"
+#~ msgstr "orientación desconocida `%s' (las orientaciones válidas son `retrato' i `paisaje')"
#~ msgid "boolean value expected for %s"
#~ msgstr "valor booleano esperado para %s"
#~ msgid "positive integer value required for `%s'"
#~ msgstr "valor entero positivo necesario para `%s'"
-#~ msgid ""
-#~ "default font size must be at least 1 point (value of 1000 for key `%s')"
-#~ msgstr ""
-#~ "la medida de carácter por defecto tiene que ser como mínimo 1 punto "
-#~ "(valor de 1000 por la clave `%s')"
+#~ msgid "default font size must be at least 1 point (value of 1000 for key `%s')"
+#~ msgstr "la medida de carácter por defecto tiene que ser como mínimo 1 punto (valor de 1000 por la clave `%s')"
#~ msgid "could not find AFM file \"%s\""
#~ msgstr "no se puede encontrar el archivo AFM \"%s\""
#~ msgid "creating \"%s\""
#~ msgstr "creando \"%s\""
-#~ msgid ""
-#~ "set to `compatible' if you want output calculated from broken algorithms"
-#~ msgstr ""
-#~ "active `compatible' si quiere obtener resultados calculados a partir de "
-#~ "algoritmos rotos"
+#~ msgid "set to `compatible' if you want output calculated from broken algorithms"
+#~ msgstr "active `compatible' si quiere obtener resultados calculados a partir de algoritmos rotos"
#~ msgid "Append DIR to include path"
#~ msgstr "Adjuntar DIR en la ruta de inclusión"
#~ msgid "Don't allow some unsafe operations"
#~ msgstr "No permite algunas operaciones inseguras"
-#~ msgid ""
-#~ "Set to `compatible' if you want only to accept SPSS compatible syntax"
-#~ msgstr ""
-#~ "Active `compatible' si únicamente quiere aceptar la sintaxis compatible "
-#~ "de SPSS"
+#~ msgid "Set to `compatible' if you want only to accept SPSS compatible syntax"
+#~ msgstr "Active `compatible' si únicamente quiere aceptar la sintaxis compatible de SPSS"
#~ msgid "PSPP --- A program for statistical analysis"
#~ msgstr "PSPP ---Un programa de análisis estadístico"
#~ msgstr "Opciones que afectan a la sintaxis y al comportamiento:"
#~ msgid "Cannot open %s (%s). Writing errors to stdout instead.\n"
-#~ msgstr ""
-#~ "No se puede abrir %s (%s). Alternativamente, escribiendo errores a "
-#~ "stdout.\n"
+#~ msgstr "No se puede abrir %s (%s). Alternativamente, escribiendo errores a stdout.\n"
#~ msgid "Terminating execution of syntax file due to error."
#~ msgstr "Finalizando la ejecución del archivo de sintaxis debido a un error."
#~ msgstr "Enviar mensajes de error a FILE (anexa)"
#~ msgid "Select output driver DEVICE and disable defaults"
-#~ msgstr ""
-#~ "Seleccionar el controlador de salida DEVICE y desactivar los valores por "
-#~ "defecto"
+#~ msgstr "Seleccionar el controlador de salida DEVICE y desactivar los valores por defecto"
#~ msgid "Print a list of known driver classes, then exit"
-#~ msgstr ""
-#~ "Imprimir una lista de clases de controladores conocidos, después salir"
+#~ msgstr "Imprimir una lista de clases de controladores conocidos, después salir"
#~ msgid "Start an interactive session"
#~ msgstr "Inicio de una sesión interactiva"
#~ msgid "gtk-find"
#~ msgstr "gtk-find"
+#~ msgid "_About"
+#~ msgstr "Sobre..."
+
#~ msgid "Print"
#~ msgstr "Imprimir"
#~ msgid "Messages Reported"
#~ msgstr "Se han generado mensajes"
-#~ msgid ""
-#~ "The PSPP processor reported # errors. The first # and last # are shown "
-#~ "below:"
-#~ msgstr ""
-#~ "El procesador de PSPP ha generado # errores. Los # primeros y los # "
-#~ "últimos se muestran a continuación:"
+#~ msgid "The PSPP processor reported # errors. The first # and last # are shown below:"
+#~ msgstr "El procesador de PSPP ha generado # errores. Los # primeros y los # últimos se muestran a continuación:"
#~ msgid "gtk-close"
#~ msgstr "gtk-close"
#~ "Alpha\n"
#~ "Dividido"
-#~ msgid ""
-#~ "At most one of BARCHART, HISTOGRAM, or HBAR should be given. HBAR will "
-#~ "be assumed. Argument values will be given precedence increasing along "
-#~ "the order given."
-#~ msgstr ""
-#~ "Al menos se ha de declarar un tipo de entre BARCHART, HISTOGRAM o HBAR. "
-#~ "Se asume HBAR. (Argument values will be given precedence increasing "
-#~ "along the order given)."
+#~ msgid "At most one of BARCHART, HISTOGRAM, or HBAR should be given. HBAR will be assumed. Argument values will be given precedence increasing along the order given."
+#~ msgstr "Al menos se ha de declarar un tipo de entre BARCHART, HISTOGRAM o HBAR. Se asume HBAR. (Argument values will be given precedence increasing along the order given)."
#~ msgid "Variable %s specified multiple times on VARIABLES subcommand."
-#~ msgstr ""
-#~ "La variable %s se ha especificado más de una vez en el subcomando "
-#~ "VARIABLES."
+#~ msgstr "La variable %s se ha especificado más de una vez en el subcomando VARIABLES."
#~ msgid "Cum"
#~ msgstr "Acum."
#~ msgid "Pct"
#~ msgstr "Pct"
+#~ msgid "Dependent variable must be numeric."
+#~ msgstr "La variable dependiente debe ser numérica."
+
#~ msgid "N of items"
#~ msgstr "N de elementos"
#~ msgstr "Err.Est.Media"
#~ msgid "`/FORMAT WEIGHT' specified, but weighting is not on."
-#~ msgstr ""
-#~ "`/FORMAT WEIGHT' especificado, pero la ponderación no está activada."
+#~ msgstr "`/FORMAT WEIGHT' especificado, pero la ponderación no está activada."
#~ msgid "Line"
#~ msgstr "Línea"
-# translation of pspp-0.7.5.po to Dutch
-# Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
-# This file is distributed under the same licence as the PSPP package.#
+# translation of pspp-0.7.6.po to Dutch
+# Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# This file is distributed under the same licence as the PSPP package.
#
# Vertaalde woorden:
# Bad = Foutief
# Harry Thijssen <pspp@sjpaes.nl>, 2009, 2010.
msgid ""
msgstr ""
-"Project-Id-Version: pspp-0.7.5\n"
+"Project-Id-Version: pspp-0.7.6\n"
"Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2010-05-21 16:40-0700\n"
-"PO-Revision-Date: 2010-05-25 23:08+0200\n"
+"POT-Creation-Date: 2010-10-16 13:02-0700\n"
+"PO-Revision-Date: 2010-10-06 22:27+0200\n"
"Last-Translator: Harry Thijssen <pspp@sjpaes.nl>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
"MIME-Version: 1.0\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 1.0\n"
+#: src/ui/gui/helper.c:194
+msgid "Sorry. The help system hasn't yet been implemented."
+msgstr "Sorry. Het hulp systeem is nog niet geïmplementeerd."
+
#: src/ui/gui/psppire-buttonbox.c:275 src/ui/gui/psppire-buttonbox.c:437
msgid "Continue"
msgstr "Verder"
msgstr "Plak"
#: src/ui/gui/psppire-dictview.c:466 src/language/dictionary/split-file.c:82
-#: src/language/dictionary/sys-file-info.c:150
-#: src/language/dictionary/sys-file-info.c:340
-#: src/language/dictionary/sys-file-info.c:664
+#: src/language/dictionary/sys-file-info.c:149
+#: src/language/dictionary/sys-file-info.c:339
+#: src/language/dictionary/sys-file-info.c:663
#: src/language/stats/descriptives.c:881
-#: src/language/data-io/data-parser.c:649
-#: src/language/data-io/data-parser.c:688 src/language/data-io/print.c:403
+#: src/language/data-io/data-parser.c:682
+#: src/language/data-io/data-parser.c:721 src/language/data-io/print.c:403
msgid "Variable"
msgstr "Variabele"
#: src/data/any-reader.c:56
#, c-format
-msgid "An error occurred while opening \"%s\": %s."
-msgstr "Fout opgetreden bij openen van \"%s\": %s."
+msgid "An error occurred while opening `%s': %s."
+msgstr "Fout opgetreden bij openen van '%s': %s."
#: src/data/any-reader.c:101
#, c-format
-msgid "\"%s\" is not a system or portable file."
-msgstr "\"%s\" is geen systeem of overdraagbaar bestand."
+msgid "`%s' is not a system or portable file."
+msgstr "'%s' is geen systeem of overdraagbaar bestand."
#: src/data/any-reader.c:107 src/data/any-writer.c:63
msgid "The inline file is not allowed here."
msgid "Month %d is not in acceptable range of 0 to 13."
msgstr "Maand %d valt niet in het acceptabele bereik van 0 tot 13."
-#: src/data/calendar.c:89
+#: src/data/calendar.c:91
#, c-format
msgid "Day %d is not in acceptable range of 0 to 31."
msgstr "Dag %d valt niet in het acceptabele bereik van 0 tot 31."
-#: src/data/calendar.c:96
+#: src/data/calendar.c:100
#, c-format
msgid "Date %04d-%d-%d is before the earliest acceptable date of 1582-10-15."
msgstr "Datum %04d-%d-%d ligt voor de eerste acceptabele datum van 1582-10-15."
msgid "At least one case in the data read had a weight value that was user-missing, system-missing, zero, or negative. These case(s) were ignored."
msgstr "Tenminste een case in de gelezen gegevens heeft een gewichtwaarde 'user-missing, system-missing, zero, of negatief. Deze case(s) zijn genegeerd."
-#: src/data/data-in.c:274 src/data/data-in.c:464
+#. TRANSLATORS: this fragment will be interpolated into messages in fh_lock()
+#. that identify types of files.
+#: src/data/csv-file-writer.c:152
+msgid "CSV file"
+msgstr "CSV bestand"
+
+#: src/data/csv-file-writer.c:161 src/data/sys-file-writer.c:218
+#, c-format
+msgid "Error opening `%s' for writing as a system file: %s."
+msgstr "Fout bij het openen van '%s' voor het schrijven als een systeembestand: %s."
+
+#: src/data/csv-file-writer.c:462
+#, c-format
+msgid "An I/O error occurred writing CSV file `%s'."
+msgstr "Een I/O fout is opgetreden tijdens het schrijven van systeembestand '%s'."
+
+#: src/data/data-in.c:172
+#, fuzzy, c-format
+msgid "Data is not valid as format %s: %s"
+msgstr "%s variabele %s heeft ongeldig %s opmaak %s."
+
+#: src/data/data-in.c:377 src/data/data-in.c:553
msgid "Field contents are not numeric."
msgstr "Veldinhoud is niet numeriek."
-#: src/data/data-in.c:276 src/data/data-in.c:466
+#: src/data/data-in.c:379 src/data/data-in.c:555
msgid "Number followed by garbage."
msgstr "Nummer gevolgd door rommel."
-#: src/data/data-in.c:287
+#: src/data/data-in.c:392
msgid "Invalid numeric syntax."
msgstr "Ongeldige numerieke syntax."
-#: src/data/data-in.c:296 src/data/data-in.c:479
+#: src/data/data-in.c:400 src/data/data-in.c:571
msgid "Too-large number set to system-missing."
msgstr "Te groot getal, is op system-missing gezet."
-#: src/data/data-in.c:301 src/data/data-in.c:484
+#: src/data/data-in.c:406 src/data/data-in.c:577
msgid "Too-small number set to zero."
msgstr "Te klein getal, is op nul gezet."
-#: src/data/data-in.c:327
+#: src/data/data-in.c:426
msgid "All characters in field must be digits."
msgstr "Alle tekens in veld moeten cijfers zijn."
-#: src/data/data-in.c:350
+#: src/data/data-in.c:445
msgid "Unrecognized character in field."
msgstr "Niet herkenbaar teken in veld."
-#: src/data/data-in.c:374 src/data/data-in.c:650
+#: src/data/data-in.c:466 src/data/data-in.c:729
msgid "Field must have even length."
msgstr "Veld moet een even lengte hebben."
-#: src/data/data-in.c:379 src/data/data-in.c:661
+#: src/data/data-in.c:468 src/data/data-in.c:732
msgid "Field must contain only hex digits."
msgstr "Veld mag alleen hexadecimale cijfers bevatten."
-#: src/data/data-in.c:700 src/data/data-in.c:747
+#: src/data/data-in.c:544
+#, fuzzy
+msgid "Invalid zoned decimal syntax."
+msgstr "Ongeldige numerieke syntax."
+
+#: src/data/data-in.c:644 src/data/data-in.c:650
+#, fuzzy
+msgid "Invalid syntax for P field."
+msgstr "Ongeldige numerieke syntax."
+
+#: src/data/data-in.c:768 src/data/data-in.c:814
msgid "Syntax error in date field."
msgstr "Syntaxfout in datumveld."
-#: src/data/data-in.c:716
+#: src/data/data-in.c:783
#, c-format
msgid "Day (%ld) must be between 1 and 31."
msgstr "Dag (%ld) moet tussen 1 en 31 liggen."
-#: src/data/data-in.c:763
+#: src/data/data-in.c:828
msgid "Delimiter expected between fields in date."
msgstr "Veldscheider verwacht tussen velden in datum."
-#: src/data/data-in.c:837
+#: src/data/data-in.c:902
msgid "Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names."
msgstr "Niet-herkende maand opmaak. Maanden mogen gespecificeerd zijn als Arabisch of Romeins numeriek of als tenminste de eerste 3 letters van hun Engelse naam."
-#: src/data/data-in.c:864
+#: src/data/data-in.c:929
#, c-format
msgid "Year (%ld) must be between 1582 and 19999."
msgstr "Jaar (%ld) moet tussen 1582 en 19999 liggen."
-#: src/data/data-in.c:876
+#: src/data/data-in.c:940
#, c-format
-msgid "Trailing garbage \"%.*s\" following date."
-msgstr "Afsluitende rommel \"%.*s\" achter datum."
+msgid "Trailing garbage `%.*s' following date."
+msgstr "Afsluitende rommel '%.*s' achter datum."
-#: src/data/data-in.c:892
+#: src/data/data-in.c:954
msgid "Julian day must have exactly three digits."
msgstr "Juliaanse datum moet bestaan uit precies 3 cijfers."
-#: src/data/data-in.c:897
+#: src/data/data-in.c:956
#, c-format
msgid "Julian day (%ld) must be between 1 and 366."
msgstr "Juliaanse dag (%ld) moet tussen 1 en 366 zijn."
-#: src/data/data-in.c:921
+#: src/data/data-in.c:980
#, c-format
msgid "Quarter (%ld) must be between 1 and 4."
msgstr "Kwartaal (%ld) moet tussen 1 en 4 zijn."
-#: src/data/data-in.c:941
+#: src/data/data-in.c:1001
#, c-format
msgid "Week (%ld) must be between 1 and 53."
msgstr "Week (%ld) moet tussen 1 en 53 zijn."
-#: src/data/data-in.c:954
+#: src/data/data-in.c:1013
msgid "Delimiter expected between fields in time."
msgstr "Veldscheider verwacht tussen velden in tijd."
-#: src/data/data-in.c:974
+#: src/data/data-in.c:1033
#, c-format
msgid "Minute (%ld) must be between 0 and 59."
msgstr "Minuut (%ld) moet tussen 0 en 59 zijn."
-#: src/data/data-in.c:1014
+#: src/data/data-in.c:1071
msgid "Unrecognized weekday name. At least the first two letters of an English weekday name must be specified."
msgstr "Niet-herkende weekdagnaam. Tenminste de eerste 2 letters van een Engelse weekdagnaam moeten opgegeven worden."
-#: src/data/data-in.c:1152
+#: src/data/data-in.c:1197
#, c-format
msgid "`%c' expected in date field."
msgstr "'%c' verwacht in datumveld."
-#: src/data/data-in.c:1193
-#, c-format
-msgid "column %d"
-msgstr "kolom %d"
-
-#: src/data/data-in.c:1195
-#, c-format
-msgid "columns %d-%d"
-msgstr "kolommen %d-%d"
-
-#: src/data/data-in.c:1199
-#, c-format
-msgid "%s field) "
-msgstr "%s veld) "
-
#: src/data/data-out.c:481
#, c-format
msgid "Weekday number %f is not between 1 and 7."
msgid "scratch"
msgstr "scratch"
-#: src/data/dictionary.c:980
+#: src/data/dictionary.c:981
msgid "At least one case in the data file had a weight value that was user-missing, system-missing, zero, or negative. These case(s) were ignored."
msgstr "Op zijn minst een case in het gegevensbestand heeft een gewichtwaarde user-missing, system-missing, nul, of negatief. Deze case(s) zijn genegeerd."
-#: src/data/dictionary.c:1283
+#: src/data/dictionary.c:1284
#, c-format
msgid "Truncating document line to %d bytes."
msgstr "Documentregel afgekapt tot %d bytes."
-#: src/data/file-handle-def.c:462
+#: src/data/file-handle-def.c:471
#, c-format
msgid "Can't read from %s as a %s because it is already being read as a %s."
msgstr "Kan niet lezen van %s als een %s omdat het al gelezen wordt als een %s."
-#: src/data/file-handle-def.c:466
+#: src/data/file-handle-def.c:475
#, c-format
msgid "Can't write to %s as a %s because it is already being written as a %s."
msgstr "Kan niet schrijven naar %s als een %s omdat het al geschreven wordt als een %s."
-#: src/data/file-handle-def.c:473
+#: src/data/file-handle-def.c:482
#, c-format
msgid "Can't re-open %s as a %s."
msgstr "Kan %s niet heropenen als een %s."
msgid "Not opening pipe file `%s' because SAFER option set."
msgstr "Pijpbestand '%s' wordt niet geopend omdat de SAFER optie is gezet."
-#: src/data/format.c:235
+#: src/data/format.c:314
msgid "Input format"
msgstr "Invoerindeling"
-#: src/data/format.c:235
+#: src/data/format.c:314
msgid "Output format"
msgstr "Uitvoerindeling"
-#: src/data/format.c:244
+#: src/data/format.c:323
#, c-format
msgid "Format %s may not be used for input."
msgstr "Indeling %s mag niet gebruikt worden voor invoer."
-#: src/data/format.c:251
+#: src/data/format.c:330
#, c-format
msgid "%s specifies width %d, but %s requires an even width."
msgstr "%s specificeert breedte %d, maar %s vereist een even breedte."
-#: src/data/format.c:260
+#: src/data/format.c:339
#, c-format
msgid "%s %s specifies width %d, but %s requires a width between %d and %d."
msgstr "%s %s specificeert breedte %d, maar %s vereist een breedte tussen %d en %d."
-#: src/data/format.c:269
+#: src/data/format.c:348
#, c-format
msgid "%s %s specifies %d decimal place, but %s does not allow any decimals."
msgid_plural "%s %s specifies %d decimal places, but %s does not allow any decimals."
msgstr[0] "%s %s specificeert %d decimaal, maar %s staat geen decimalen toe."
msgstr[1] "%s %s specificeert %d decimalen, maar %s staat geen decimalen toe."
-#: src/data/format.c:280
+#: src/data/format.c:359
#, c-format
msgid "%s %s specifies %d decimal place, but the given width allows at most %d decimals."
msgid_plural "%s %s specifies %d decimal places, but the given width allows at most %d decimals."
msgstr[0] "%s %s specificeert %d decimaal, maar de opgegeven breedte staat maximaal %d decimalen toe."
msgstr[1] "%s %s specificeert %d decimalen, maar de opgegeven breedte staat maximaal %d decimalen toe."
-#: src/data/format.c:287
+#: src/data/format.c:366
#, c-format
msgid "%s %s specifies %d decimal place, but the given width does not allow for any decimals."
msgid_plural "%s %s specifies %d decimal places, but the given width does not allow for any decimals."
msgstr[0] "%s %s specificeert %d decimaal, maar de opgegeven breedte staat geen decimalen toe."
msgstr[1] "%s %s specificeert %d decimalen, maar de opgegeven breedte staat geen decimalen toe."
-#: src/data/format.c:326
+#: src/data/format.c:405
#, c-format
msgid "%s variables are not compatible with %s format %s."
msgstr "%s variabelen zijn niet overeenkomstig met %s opmaak %s."
-#: src/data/format.c:327 src/data/sys-file-reader.c:752
-#: src/ui/gui/psppire-var-store.c:628 src/ui/gui/psppire.ui:1960
+#: src/data/format.c:406 src/data/sys-file-reader.c:751
+#: src/ui/gui/psppire-var-store.c:628 src/ui/gui/compute.ui:503
#: src/ui/gui/var-sheet-dialogs.ui:139
msgid "String"
msgstr "Tekenreeks"
-#: src/data/format.c:327 src/data/sys-file-reader.c:752
-#: src/ui/gui/psppire-var-store.c:621 src/ui/gui/psppire.ui:2040
+#: src/data/format.c:406 src/data/sys-file-reader.c:751
+#: src/ui/gui/psppire-var-store.c:621 src/ui/gui/compute.ui:584
#: src/ui/gui/var-sheet-dialogs.ui:27
msgid "Numeric"
msgstr "Numeriek"
-#: src/data/format.c:328 src/data/sys-file-reader.c:1472
-#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493
-#: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506
-#: src/language/xforms/recode.c:507
+#: src/data/format.c:407 src/data/sys-file-reader.c:1472
+#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:496
+#: src/language/xforms/recode.c:497 src/language/xforms/recode.c:509
+#: src/language/xforms/recode.c:510
+#: src/language/dictionary/apply-dictionary.c:77
#: src/language/dictionary/apply-dictionary.c:78
-#: src/language/dictionary/apply-dictionary.c:79
msgid "numeric"
msgstr "numeriek"
-#: src/data/format.c:328 src/data/sys-file-reader.c:1472
-#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493
-#: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506
-#: src/language/xforms/recode.c:507
+#: src/data/format.c:407 src/data/sys-file-reader.c:1472
+#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:496
+#: src/language/xforms/recode.c:497 src/language/xforms/recode.c:509
+#: src/language/xforms/recode.c:510
+#: src/language/dictionary/apply-dictionary.c:77
#: src/language/dictionary/apply-dictionary.c:78
-#: src/language/dictionary/apply-dictionary.c:79
msgid "string"
msgstr "tekenreeks"
-#: src/data/format.c:346
+#: src/data/format.c:425
#, c-format
msgid "String variable with width %d is not compatible with format %s."
msgstr "Tekenreeksvariabele met breedte %d is niet overeenkomstig met opmaaak %s."
#: src/data/gnumeric-reader.c:364
#, c-format
-msgid "Error opening \"%s\" for reading as a Gnumeric file: %s."
-msgstr "Fout bij het openen van \"%s\" voor het lezen als een Gnumeric-bestand: %s."
+msgid "Error opening `%s' for reading as a Gnumeric file: %s."
+msgstr "Fout bij het openen van '%s' voor het lezen als een Gnumeric-bestand: %s."
#: src/data/gnumeric-reader.c:384
#, c-format
-msgid "Invalid cell range \"%s\""
-msgstr "Ongeldig celbereik \"%s\""
+msgid "Invalid cell range `%s'"
+msgstr "Ongeldig celbereik '%s'"
#: src/data/gnumeric-reader.c:516 src/data/psql-reader.c:187
#, c-format
#: src/data/gnumeric-reader.c:528
#, c-format
-msgid "Selected sheet or range of spreadsheet \"%s\" is empty."
-msgstr "Geselecteerd blad of bereik van werkblad \"%s\" is leeg."
-
-#: src/data/make-file.c:68
-#, c-format
-msgid "%s: Creating temporary file: %s."
-msgstr "%s: Aanmaken tijdelijk bestand: %s."
-
-#: src/data/make-file.c:110
-#, c-format
-msgid "%s: Creating file: %s."
-msgstr "%s: Aanmaken bestand: %s."
+msgid "Selected sheet or range of spreadsheet `%s' is empty."
+msgstr "Geselecteerd blad of bereik van werkblad '%s' is leeg."
-#: src/data/make-file.c:148
+#: src/data/make-file.c:71
#, c-format
msgid "Opening %s for writing: %s."
msgstr "Openen %s voor schrijven: %s."
-#: src/data/make-file.c:157
+#: src/data/make-file.c:80
#, c-format
msgid "Opening stream for %s: %s."
msgstr "Openen stream voor %s: %s."
-#: src/data/make-file.c:186
+#: src/data/make-file.c:109
#, c-format
msgid "Creating temporary file to replace %s: %s."
msgstr "Aanmaken tijdelijk bestand voor het vervangen van %s: %s."
-#: src/data/make-file.c:197
+#: src/data/make-file.c:120
#, c-format
msgid "Creating temporary file %s: %s."
msgstr "Aanmaken tijdelijk bestand %s: %s."
-#: src/data/make-file.c:209
+#: src/data/make-file.c:132
#, c-format
msgid "Opening stream for temporary file %s: %s."
msgstr "Openen stream voor tijdelijk bestand %s: %s."
-#: src/data/make-file.c:250
+#: src/data/make-file.c:173
#, c-format
msgid "Replacing %s by %s: %s."
msgstr "Vervangen %s door %s: %s."
-#: src/data/make-file.c:278
+#: src/data/make-file.c:201
#, c-format
msgid "Removing %s: %s."
msgstr "Verwijderen %s: %s."
-#: src/data/por-file-reader.c:99
+#: src/data/por-file-reader.c:98
#, c-format
msgid "portable file %s corrupt at offset 0x%llx: "
msgstr "overdraagbaar-bestand %s beschadigd op positie 0x%llx: "
-#: src/data/por-file-reader.c:128
+#: src/data/por-file-reader.c:129
#, c-format
msgid "reading portable file %s at offset 0x%llx: "
msgstr "lezen overdraagbaar bestand %s op positie 0x%llx: "
-#: src/data/por-file-reader.c:156
+#: src/data/por-file-reader.c:159
#, c-format
-msgid "Error closing portable file \"%s\": %s."
-msgstr "Fout bij het afsluiten van overdraagbaar bestand \"%s\": %s."
+msgid "Error closing portable file `%s': %s."
+msgstr "Fout bij het afsluiten van overdraagbaar bestand '%s': %s."
-#: src/data/por-file-reader.c:208
+#: src/data/por-file-reader.c:211
msgid "unexpected end of file"
msgstr "onverwacht einde-bestand"
#. TRANSLATORS: this fragment will be interpolated into
#. messages in fh_lock() that identify types of files.
-#: src/data/por-file-reader.c:267 src/data/por-file-writer.c:149
+#: src/data/por-file-reader.c:270 src/data/por-file-writer.c:148
msgid "portable file"
msgstr "overdraagbaar bestand"
-#: src/data/por-file-reader.c:275
+#: src/data/por-file-reader.c:278
#, c-format
-msgid "An error occurred while opening \"%s\" for reading as a portable file: %s."
-msgstr "Fout opgetreden tijdens het openen van \"%s\" voor het lezen als overdraagbaar bestand: %s."
+msgid "An error occurred while opening `%s' for reading as a portable file: %s."
+msgstr "Fout opgetreden tijdens het openen van '%s' voor het lezen als overdraagbaar bestand: %s."
-#: src/data/por-file-reader.c:296
+#: src/data/por-file-reader.c:299
msgid "Data record expected."
msgstr "Gegevensrecord verwacht."
-#: src/data/por-file-reader.c:378
+#: src/data/por-file-reader.c:381
msgid "Number expected."
msgstr "Nummer verwacht."
-#: src/data/por-file-reader.c:406
+#: src/data/por-file-reader.c:409
msgid "Missing numeric terminator."
msgstr "Ontbrekende numerieke afsluiter."
-#: src/data/por-file-reader.c:429
+#: src/data/por-file-reader.c:432
msgid "Invalid integer."
msgstr "Ongeldige integer."
-#: src/data/por-file-reader.c:440 src/data/por-file-reader.c:460
+#: src/data/por-file-reader.c:443 src/data/por-file-reader.c:463
#, c-format
msgid "Bad string length %d."
msgstr "Onjuiste tekenreekslengte %d."
-#: src/data/por-file-reader.c:523
+#: src/data/por-file-reader.c:526
#, c-format
msgid "%s: Not a portable file."
msgstr "%s: Geen overdraagbaar bestand."
-#: src/data/por-file-reader.c:540
+#: src/data/por-file-reader.c:543
#, c-format
msgid "Unrecognized version code `%c'."
msgstr "Niet-herkende versiecode '%c'."
-#: src/data/por-file-reader.c:549
+#: src/data/por-file-reader.c:552
#, c-format
msgid "Bad date string length %zu."
msgstr "Onjuiste datum-tekenreekslengte %zu."
-#: src/data/por-file-reader.c:551
+#: src/data/por-file-reader.c:554
#, c-format
msgid "Bad time string length %zu."
msgstr "Onjuiste tijd-tekenreekslengte %zu."
-#: src/data/por-file-reader.c:593
+#: src/data/por-file-reader.c:596
#, c-format
msgid "%s: Bad format specifier byte (%d). Variable will be assigned a default format."
msgstr "%s: Onjuist opmaakspecificatie byte (%d). Variabele krijgt een standaardopmaak."
-#: src/data/por-file-reader.c:614
+#: src/data/por-file-reader.c:617
#, c-format
msgid "Numeric variable %s has invalid format specifier %s."
msgstr "Numerieke variabele %s heeft een ongeldig opmaakspecificatie %s."
-#: src/data/por-file-reader.c:618
+#: src/data/por-file-reader.c:621
#, c-format
msgid "String variable %s with width %d has invalid format specifier %s."
msgstr "Tekenreeksvariabele %s met breedte %d heeft ongeldig opmaakspecificatie %s."
-#: src/data/por-file-reader.c:642
+#: src/data/por-file-reader.c:645
msgid "Expected variable count record."
msgstr "Variabelenteller record verwacht."
-#: src/data/por-file-reader.c:646
+#: src/data/por-file-reader.c:649
#, c-format
msgid "Invalid number of variables %d."
msgstr "Ongeldig aantal variabelen %d."
-#: src/data/por-file-reader.c:655
+#: src/data/por-file-reader.c:658
#, c-format
msgid "Weight variable name (%s) truncated."
msgstr "Wegingsvariabelennaam (%s) is afgekapt."
-#: src/data/por-file-reader.c:670
+#: src/data/por-file-reader.c:673
msgid "Expected variable record."
msgstr "Variabelenrecord verwacht."
-#: src/data/por-file-reader.c:674
+#: src/data/por-file-reader.c:677
#, c-format
msgid "Invalid variable width %d."
msgstr "Ongeldige variabelenbreedte %d."
-#: src/data/por-file-reader.c:681
+#: src/data/por-file-reader.c:684
#, c-format
msgid "Invalid variable name `%s' in position %d."
msgstr "Ongeldige variabelennaam '%s' op positie %d."
-#: src/data/por-file-reader.c:685 src/data/sys-file-reader.c:606
+#: src/data/por-file-reader.c:688 src/data/sys-file-reader.c:605
#, c-format
msgid "Bad width %d for variable %s."
msgstr "Onjuiste breedte %d voor variabele %s."
-#: src/data/por-file-reader.c:700
+#: src/data/por-file-reader.c:703
#, c-format
msgid "Duplicate variable name %s in position %d."
msgstr "Dubbele variabelennaam %s op positie %d."
-#: src/data/por-file-reader.c:701
+#: src/data/por-file-reader.c:704
#, c-format
msgid "Duplicate variable name %s in position %d renamed to %s."
msgstr "Dubbele variabelennaam %s op positie %d is hernoemd naar %s."
-#: src/data/por-file-reader.c:750
+#: src/data/por-file-reader.c:753
#, c-format
msgid "Weighting variable %s not present in dictionary."
msgstr "Wegingvariabele %s niet aanwezig in woordenboek."
-#: src/data/por-file-reader.c:794
+#: src/data/por-file-reader.c:797
#, c-format
msgid "Unknown variable %s while parsing value labels."
msgstr "Onbekende variabele %s tijdens het ontleden van waardelabels."
-#: src/data/por-file-reader.c:797
+#: src/data/por-file-reader.c:800
#, c-format
msgid "Cannot assign value labels to %s and %s, which have different variable types."
msgstr "Kan geen waardelabels toekennen aan %s en %s, die verschillende variabelentypes hebben."
-#: src/data/por-file-writer.c:141
+#: src/data/por-file-writer.c:140
#, c-format
msgid "Invalid decimal digits count %d. Treating as %d."
msgstr "Ongeldige decimaal cijfers teller %d. Behandeld als %d."
-#: src/data/por-file-writer.c:161
+#: src/data/por-file-writer.c:160
#, c-format
-msgid "Error opening \"%s\" for writing as a portable file: %s."
-msgstr "Fout tijdens openen \"%s\" voor het schrijven als een overdraagbaar bestand: %s."
+msgid "Error opening `%s' for writing as a portable file: %s."
+msgstr "Fout tijdens openen '%s' voor het schrijven als een overdraagbaar bestand: %s."
-#: src/data/por-file-writer.c:506
+#: src/data/por-file-writer.c:505
#, c-format
-msgid "An I/O error occurred writing portable file \"%s\"."
-msgstr "Een I/O fout opgetreden tijdens het schrijven van overdraagbaar bestand \"%s\"."
+msgid "An I/O error occurred writing portable file `%s'."
+msgstr "Een I/O fout opgetreden tijdens het schrijven van overdraagbaar bestand '%s'."
#: src/data/psql-reader.c:46
msgid "Support for reading postgres databases was not compiled into this installation of PSPP"
msgid "Connection is unencrypted, but unencrypted connections have not been permitted."
msgstr "Connectie is niet geëncrypt, maar niet geëncrypte connecties zijn niet toegestaan."
-#: src/data/psql-reader.c:322 src/data/psql-reader.c:347
-#: src/data/psql-reader.c:357
+#: src/data/psql-reader.c:321 src/data/psql-reader.c:346
+#: src/data/psql-reader.c:356
#, c-format
msgid "Error from psql source: %s."
msgstr "Fout van psql source: %s."
-#: src/data/psql-reader.c:452
+#: src/data/psql-reader.c:451
#, c-format
msgid "Unsupported OID %d. SYSMIS values will be inserted."
msgstr "Niet ondersteunde OID %d. SYSMIS waarde wordt ingevoegd."
msgid "scratch file"
msgstr "scratchbestand"
-#: src/data/settings.c:608
+#: src/data/settings.c:388
+msgid "MXWARNS set to zero. No further warnings will be given even when potentially problematic situations are encountered."
+msgstr ""
+
+#: src/data/settings.c:395
+#, c-format
+msgid "Warnings re-enabled. %d warnings will be issued before aborting syntax processing."
+msgstr ""
+
+#: src/data/settings.c:639
#, c-format
msgid "%s: Custom currency string `%s' does not contain exactly three periods or commas (or it contains both)."
msgstr "%s: Aangepaste munt-tekenreeks '%s' bevat niet exact drie punten of komma's (of het bevat beiden)."
msgid "Variable suffix too large."
msgstr "Variabelen-achtervoegsel te lang."
-#: src/data/sys-file-reader.c:226
+#: src/data/sys-file-reader.c:225
#, c-format
msgid "Recoded variable name duplicates an existing `%s' within system file."
msgstr "Gehercodeerde variabelennaam dupliceert een bestaande '%s' binnen systeembestand."
#. TRANSLATORS: this fragment will be interpolated into
#. messages in fh_lock() that identify types of files.
-#: src/data/sys-file-reader.c:290 src/data/sys-file-writer.c:207
+#: src/data/sys-file-reader.c:289 src/data/sys-file-writer.c:206
msgid "system file"
msgstr "systeembestand"
-#: src/data/sys-file-reader.c:297
+#: src/data/sys-file-reader.c:296
#, c-format
-msgid "Error opening \"%s\" for reading as a system file: %s."
-msgstr "Fout bij het openen van \"%s\" voor het lezen als een systeembestand: %s."
+msgid "Error opening `%s' for reading as a system file: %s."
+msgstr "Fout bij het openen van '%s' voor het lezen als een systeembestand: %s."
-#: src/data/sys-file-reader.c:336 tests/dissect-sysfile.c:154
+#: src/data/sys-file-reader.c:335 tests/dissect-sysfile.c:155
msgid "Misplaced type 4 record."
msgstr "Verkeerd geplaatst type 4 record."
-#: src/data/sys-file-reader.c:347 tests/dissect-sysfile.c:165
+#: src/data/sys-file-reader.c:346 tests/dissect-sysfile.c:166
#, c-format
msgid "Unrecognized record type %d."
msgstr "Niet-herkend recordtype %d."
-#: src/data/sys-file-reader.c:388
+#: src/data/sys-file-reader.c:387
#, c-format
msgid "File header claims %d variable positions but %d were read from file."
msgstr "Bestandskop claimt %d variabelenposities maar er zijn er %d gelezen van het bestand."
-#: src/data/sys-file-reader.c:428
+#: src/data/sys-file-reader.c:427
#, c-format
-msgid "Error closing system file \"%s\": %s."
-msgstr "Fout bij het sluiten van systeembestand \"%s\": %s."
+msgid "Error closing system file `%s': %s."
+msgstr "Fout bij het sluiten van systeembestand '%s': %s."
-#: src/data/sys-file-reader.c:493 src/data/sys-file-reader.c:503
-#: tests/dissect-sysfile.c:202 tests/dissect-sysfile.c:212
+#: src/data/sys-file-reader.c:492 src/data/sys-file-reader.c:502
+#: tests/dissect-sysfile.c:203 tests/dissect-sysfile.c:213
msgid "This is not an SPSS system file."
msgstr "Dit is geen SPSS-systeembestand."
-#: src/data/sys-file-reader.c:525 tests/dissect-sysfile.c:227
+#: src/data/sys-file-reader.c:524 tests/dissect-sysfile.c:228
msgid "Compression bias is not the usual value of 100, or system file uses unrecognized floating-point format."
msgstr ""
-#: src/data/sys-file-reader.c:602
+#: src/data/sys-file-reader.c:598
+#, fuzzy, c-format
+msgid "Variable name begins with invalid character `%c'."
+msgstr "Variabele index %d niet in geldig bereik 1...%d."
+
+#: src/data/sys-file-reader.c:601
#, c-format
msgid "Invalid variable name `%s'."
msgstr "Ongeldige variabelennaam '%s'."
-#: src/data/sys-file-reader.c:610
+#: src/data/sys-file-reader.c:609
#, c-format
msgid "Duplicate variable name `%s' within system file."
msgstr "Dubbele variabelennaam '%s' binnen systeembestand."
-#: src/data/sys-file-reader.c:618 tests/dissect-sysfile.c:356
+#: src/data/sys-file-reader.c:617 tests/dissect-sysfile.c:357
msgid "Variable label indicator field is not 0 or 1."
msgstr "Variabelen-labelindicatorveld is niet 0 of 1."
-#: src/data/sys-file-reader.c:649 tests/dissect-sysfile.c:387
+#: src/data/sys-file-reader.c:648 tests/dissect-sysfile.c:388
msgid "Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3."
msgstr "Numeriek ontbrekende-waarde indicatorveld is niet -3, -2, 0, 1, 2, of 3."
-#: src/data/sys-file-reader.c:667 tests/dissect-sysfile.c:402
+#: src/data/sys-file-reader.c:666 tests/dissect-sysfile.c:403
msgid "String missing value indicator field is not 0, 1, 2, or 3."
msgstr "Tekenreeks ontbrekende-waarde indicatorveld is niet 0, 1, 2, of 3."
-#: src/data/sys-file-reader.c:699
+#: src/data/sys-file-reader.c:698
msgid "Missing string continuation record."
msgstr "Mis tekenreeks continuering record."
-#: src/data/sys-file-reader.c:733
+#: src/data/sys-file-reader.c:732
#, c-format
msgid "Unknown variable format %<PRIu8>."
msgstr "Onbekend variabelenopmaak %<PRIu8>."
-#: src/data/sys-file-reader.c:751
+#: src/data/sys-file-reader.c:750
#, c-format
msgid "%s variable %s has invalid %s format %s."
msgstr "%s variabele %s heeft ongeldig %s opmaak %s."
-#: src/data/sys-file-reader.c:754
+#: src/data/sys-file-reader.c:753
msgid "print"
msgstr "afdrukken"
-#: src/data/sys-file-reader.c:754
+#: src/data/sys-file-reader.c:753
msgid "write"
msgstr "schrijf"
-#: src/data/sys-file-reader.c:758
+#: src/data/sys-file-reader.c:757
msgid "Suppressing further invalid format warnings."
msgstr "Onderdrukt verdere ongeldig indelingswaarschuwingen."
-#: src/data/sys-file-reader.c:776
+#: src/data/sys-file-reader.c:775
msgid "Weighting variable must be numeric."
msgstr "Wegingvariabele moet numeriek zijn."
-#: src/data/sys-file-reader.c:790
+#: src/data/sys-file-reader.c:789
msgid "Multiple type 6 (document) records."
msgstr "Meerdere type 6 (document) records."
-#: src/data/sys-file-reader.c:794
+#: src/data/sys-file-reader.c:793
#, c-format
msgid "Number of document lines (%d) must be greater than 0."
msgstr "Aantal documentregels (%d) moet groter dan 0 zijn."
-#: src/data/sys-file-reader.c:802
+#: src/data/sys-file-reader.c:801
msgid "Document line contains null byte."
msgstr "Documentregel bevat null byte."
-#: src/data/sys-file-reader.c:893
+#: src/data/sys-file-reader.c:892
#, c-format
msgid "Unrecognized record type 7, subtype %d. Please send a copy of this file, and the syntax which created it to %s"
msgstr "Niet-herkend type 7, subtype %d. Stuur s.v.p. een kopie van dit bestand en de syntax waarmee het is aangemaakt naar %s "
-#: src/data/sys-file-reader.c:920 tests/dissect-sysfile.c:594
+#: src/data/sys-file-reader.c:919 tests/dissect-sysfile.c:595
#, c-format
msgid "Bad size (%zu) or count (%zu) field on record type 7, subtype 3."
msgstr "Onjuiste lengte (%zu) of aantal (%zu) veld in recordtype 7, subtype 3."
-#: src/data/sys-file-reader.c:940
+#: src/data/sys-file-reader.c:939
#, c-format
msgid "Floating-point representation indicated by system file (%d) differs from expected (%d)."
msgstr "Drijvende komma representatie aangegeven door systeembestand %d verschilt van verwachting (%d)."
-#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:110
+#: src/data/sys-file-reader.c:952 src/language/dictionary/sys-file-info.c:109
msgid "Little Endian"
msgstr "Little Endian"
-#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:109
+#: src/data/sys-file-reader.c:952 src/language/dictionary/sys-file-info.c:108
msgid "Big Endian"
msgstr "Big Endian"
-#: src/data/sys-file-reader.c:954
+#: src/data/sys-file-reader.c:953
#, c-format
msgid "Integer format indicated by system file (%s) differs from expected (%s)."
msgstr "Integer indeling aangegeven door systeembestand (%s) verschilt van verwacht (%s)."
-#: src/data/sys-file-reader.c:1011 tests/dissect-sysfile.c:625
+#: src/data/sys-file-reader.c:1010 tests/dissect-sysfile.c:626
#, c-format
msgid "Bad size (%zu) or count (%zu) on extension 4."
msgstr "Onjuiste lengte (%zu) of aantal (%zu) bij extensie 4."
-#: src/data/sys-file-reader.c:1015 src/data/sys-file-reader.c:1019
-#: src/data/sys-file-reader.c:1023 tests/dissect-sysfile.c:630
-#: tests/dissect-sysfile.c:635 tests/dissect-sysfile.c:640
+#: src/data/sys-file-reader.c:1014 src/data/sys-file-reader.c:1018
+#: src/data/sys-file-reader.c:1022 tests/dissect-sysfile.c:631
+#: tests/dissect-sysfile.c:636 tests/dissect-sysfile.c:641
#, c-format
msgid "File specifies unexpected value %g as %s."
msgstr "Bestand specificeert onverwachte waarde %g als %s."
-#: src/data/sys-file-reader.c:1056
-#, c-format
-msgid "Missing space following 'C' at offset %zu in MRSETS record"
-msgstr ""
-
-#: src/data/sys-file-reader.c:1074 tests/dissect-sysfile.c:691
-#, c-format
-msgid "Missing space following 'E' at offset %zu in MRSETS record"
-msgstr ""
+#: src/data/sys-file-reader.c:1055 src/data/sys-file-reader.c:1073
+#: tests/dissect-sysfile.c:692
+#, fuzzy, c-format
+msgid "Missing space following `%c' at offset %zu in MRSETS record"
+msgstr "Dubbele variabelenaam %s op offset %zu in MRSETS record."
-#: src/data/sys-file-reader.c:1083 tests/dissect-sysfile.c:700
-#, c-format
-msgid "Unexpected label source value \"%s\" following 'E' at offset %zu in MRSETS record"
-msgstr ""
+#: src/data/sys-file-reader.c:1082 tests/dissect-sysfile.c:701
+#, fuzzy, c-format
+msgid "Unexpected label source value `%s' following `E' at offset %zu in MRSETS record"
+msgstr "Dubbele variabelenaam %s op offset %zu in MRSETS record."
-#: src/data/sys-file-reader.c:1089
+#: src/data/sys-file-reader.c:1088
#, c-format
-msgid "Missing 'C', 'D', or 'E' at offset %zu in MRSETS record."
-msgstr ""
+msgid "Missing `C', `D', or `E' at offset %zu in MRSETS record."
+msgstr "Ontbrekende `C', `D', of `E' op offset %zu in MRSETS record."
-#: src/data/sys-file-reader.c:1118
+#: src/data/sys-file-reader.c:1117
#, c-format
msgid "Missing new-line parsing variable names at offset %zu in MRSETS record."
msgstr ""
-#: src/data/sys-file-reader.c:1129
+#: src/data/sys-file-reader.c:1128
#, c-format
msgid "Duplicate variable name %s at offset %zu in MRSETS record."
msgstr "Dubbele variabelenaam %s op offset %zu in MRSETS record."
-#: src/data/sys-file-reader.c:1142
+#: src/data/sys-file-reader.c:1141
#, c-format
msgid "MRSET %s contains both string and numeric variables."
msgstr "MRSET %s bevat zowel tekenreeks als numerieke variabelen."
-#: src/data/sys-file-reader.c:1157
+#: src/data/sys-file-reader.c:1156
#, c-format
msgid "MRSET %s has only %zu variables."
msgstr "MRSET %s heeft slechts %zu variabelen."
-#: src/data/sys-file-reader.c:1194 tests/dissect-sysfile.c:758
+#: src/data/sys-file-reader.c:1194 tests/dissect-sysfile.c:759
#, c-format
msgid "Bad size %zu on extension 11."
msgstr "Onjuiste lengte %zu voor extensie 11."
-#: src/data/sys-file-reader.c:1206 tests/dissect-sysfile.c:770
+#: src/data/sys-file-reader.c:1206 tests/dissect-sysfile.c:771
#, c-format
msgid "Extension 11 has bad count %zu (for %zu variables)."
msgstr "Extensie 11 heeft een foutief aantal %zu (voor %zu variabelen)."
msgid "Invalid number of labels: %d. Ignoring labels."
msgstr "Ongeldig aantal labels: %d. Labels worden genegeerd."
-#: src/data/sys-file-reader.c:1441 tests/dissect-sysfile.c:468
+#: src/data/sys-file-reader.c:1441 tests/dissect-sysfile.c:469
msgid "Variable index record (type 4) does not immediately follow value label record (type 3) as it should."
msgstr "Variabele index record (type 4) volgt niet onmiddellijk waardelabel record (type 3) zoals het moet."
#: src/data/sys-file-reader.c:1505 src/data/sys-file-reader.c:1686
#, c-format
-msgid "Duplicate value label for \"%.*s\" on %s."
-msgstr "Dubbel waardelabel voor \"%.*s\" in %s."
+msgid "Duplicate value label for `%.*s' on %s."
+msgstr "Dubbel waardelabel voor '%.*s' in %s."
#: src/data/sys-file-reader.c:1543
#, c-format
msgid "Attribute value %s[%d] is not quoted: %s"
msgstr "Attribuut waarde %s[%d] is niet geciteerd: %s"
-#: src/data/sys-file-reader.c:1620 tests/dissect-sysfile.c:936
+#: src/data/sys-file-reader.c:1620 tests/dissect-sysfile.c:937
#, c-format
msgid "Variable name length in long string value label record (%d) exceeds %d-byte limit."
msgstr ""
msgid "Expecting space at offset %zu following %zu-byte string."
msgstr ""
-#: src/data/sys-file-reader.c:2347 tests/dissect-sysfile.c:1341
+#: src/data/sys-file-reader.c:2349 tests/dissect-sysfile.c:1356
#, c-format
msgid "System error: %s."
msgstr "Systeemfout: %s."
-#: src/data/sys-file-reader.c:2349 tests/dissect-sysfile.c:1343
+#: src/data/sys-file-reader.c:2351 tests/dissect-sysfile.c:1358
msgid "Unexpected end of file."
msgstr "Onverwacht einde-bestand."
-#: src/data/sys-file-writer.c:180
+#: src/data/sys-file-writer.c:179
#, c-format
msgid "Unknown system file version %d. Treating as version %d."
msgstr "Onbekende systeembestand versie %d. Behandeld als versie %d."
-#: src/data/sys-file-writer.c:219
+#: src/data/sys-file-writer.c:985
#, c-format
-msgid "Error opening \"%s\" for writing as a system file: %s."
-msgstr "Fout bij het openen van \"%s\" voor het schrijven als een systeembestand: %s."
-
-#: src/data/sys-file-writer.c:989
-#, c-format
-msgid "An I/O error occurred writing system file \"%s\"."
-msgstr "Een I/O fout is opgetreden tijdens het schrijven van systeembestand \"%s\"."
+msgid "An I/O error occurred writing system file `%s'."
+msgstr "Een I/O fout is opgetreden tijdens het schrijven van systeembestand '%s'."
#: src/data/variable.c:206
#, c-format
msgid "`%s' may not be used as a variable name because it is a reserved word."
msgstr "'%s' mag niet gebruikt worden als variabelennaam omdat het een gereserveerd woord is."
-#: src/language/syntax-file.c:95
-#, c-format
-msgid "Opening `%s': %s."
-msgstr "Openen '%s': %s."
-
-#: src/language/syntax-file.c:109
+#: src/language/syntax-file.c:100
#, c-format
msgid "Reading `%s': %s."
msgstr "Lezen '%s': %s."
-#: src/language/syntax-file.c:126
+#: src/language/syntax-file.c:117
#, c-format
msgid "Closing `%s': %s."
msgstr "Sluiten '%s': %s."
-#: src/language/command.c:205 src/language/expressions/parse.c:1267
+#: src/language/syntax-file.c:138
+#, c-format
+msgid "Opening `%s': %s."
+msgstr "Openen '%s': %s."
+
+#: src/language/command.c:197 src/language/expressions/parse.c:1270
#: src/language/utilities/set.q:213
#, c-format
msgid "%s is not yet implemented."
msgstr "%s is nog niet geïmplementeerd."
-#: src/language/command.c:210
+#: src/language/command.c:202
#, c-format
msgid "%s may be used only in testing mode."
msgstr "%s mag alleen in testmodus gebruikt worden."
-#: src/language/command.c:215
+#: src/language/command.c:207
#, c-format
msgid "%s may be used only in enhanced syntax mode."
msgstr "%s mag alleen in uitgebreide syntaxmodus gebruikt worden."
-#: src/language/command.c:239
+#: src/language/command.c:231
msgid "Error encountered while ERROR=STOP is effective."
msgstr "Fout tegengekomen terwijl ERROR=STOP is actief."
-#: src/language/command.c:484
+#: src/language/command.c:476
msgid "expecting command name"
msgstr "opdrachtnaam verwacht"
-#: src/language/command.c:498
+#: src/language/command.c:490
#, c-format
msgid "Unknown command %s."
msgstr "Onbekende opdracht %s."
-#: src/language/command.c:623
+#: src/language/command.c:615
#, c-format
msgid "%s is allowed only before the active file has been defined."
msgstr "%s is alleen toegestaan voordat het actieve bestand is gedefinieerd."
-#: src/language/command.c:627
+#: src/language/command.c:619
#, c-format
msgid "%s is allowed only after the active file has been defined."
msgstr "%s is alleen toegestaan nadat het actieve bestand is gedefinieerd."
-#: src/language/command.c:631
+#: src/language/command.c:623
#, c-format
msgid "%s is allowed only inside INPUT PROGRAM."
msgstr "%s is alleen toegestaan binnen INPUT PROGRAM."
-#: src/language/command.c:635
+#: src/language/command.c:627
#, c-format
msgid "%s is allowed only inside FILE TYPE."
msgstr "%s is alleen toegestaan binnen FILE TYPE."
-#: src/language/command.c:642
+#: src/language/command.c:634
#, c-format
msgid "%s is allowed only before the active file has been defined or inside INPUT PROGRAM."
msgstr "%s is alleen toegestaan voordat het actieve bestand is gedefinieerd of binnen INPUT PROGRAMMA."
-#: src/language/command.c:646
+#: src/language/command.c:638
#, c-format
msgid "%s is allowed only before the active file has been defined or inside FILE TYPE."
msgstr "%s is alleen toegestaan voordat het actieve bestand is gedefinieerd of binnen FILE TYPE."
-#: src/language/command.c:650
+#: src/language/command.c:642
#, c-format
msgid "%s is allowed only after the active file has been defined or inside INPUT PROGRAM."
msgstr "%s is alleen toegestaan nadat het actieve bestand is gedefinieerd of binnen INPUT PROGRAMMA."
-#: src/language/command.c:654
+#: src/language/command.c:646
#, c-format
msgid "%s is allowed only after the active file has been defined or inside FILE TYPE."
msgstr "%s is alleen toegestaan nadat het actieve bestand is gedefinieerd of binnen FILE TYPE."
-#: src/language/command.c:658
+#: src/language/command.c:650
#, c-format
msgid "%s is allowed only inside INPUT PROGRAM or inside FILE TYPE."
msgstr "%s is alleen toegestaan binnen INPUT PROGRAM of binnen FILE TYPE."
-#: src/language/command.c:664
+#: src/language/command.c:656
#, c-format
msgid "%s is allowed only after the active file has been defined, inside INPUT PROGRAM, or inside FILE TYPE."
msgstr "%s is alleen toegestaan nadat het actieve bestand is gedefinieerd, binnen INPUT PROGRAM of binnen FILE TYPE."
-#: src/language/command.c:669
+#: src/language/command.c:661
#, c-format
msgid "%s is allowed only before the active file has been defined, inside INPUT PROGRAM, or inside FILE TYPE."
msgstr "%s is alleen toegestaan voordat het actieve bestand is gedefinieerd, binnen INPUT PROGRAM of binnen FILE TYPE."
-#: src/language/command.c:687 src/language/command.c:689
+#: src/language/command.c:679 src/language/command.c:681
#, c-format
msgid "%s is not allowed inside %s."
msgstr "%s is niet toegestaan binnen %s."
-#: src/language/command.c:768 src/language/command.c:876
-#: src/language/utilities/permissions.c:98
+#: src/language/command.c:760 src/language/utilities/host.c:128
+#: src/language/utilities/permissions.c:101
msgid "This command not allowed when the SAFER option is set."
msgstr "Deze opdracht is niet toegestaan als de SAFER optie is gezet."
-#: src/language/command.c:780
+#: src/language/command.c:772
#, c-format
msgid "Error removing `%s': %s."
msgstr "Fout bij verwijderen '%s': %s."
-#: src/language/command.c:830
-#, c-format
-msgid "Couldn't fork: %s."
-msgstr ""
-
-#: src/language/command.c:845
-msgid "Interactive shell not supported on this platform."
-msgstr "Interactieve-shell niet ondersteund op dit platform."
-
-#: src/language/command.c:857
-msgid "Command shell not supported on this platform."
-msgstr "Opdracht-shell niet ondersteund op dit platform."
-
-#: src/language/command.c:863
-#, c-format
-msgid "Error executing command: %s."
-msgstr "Fout tijdens uitvoeren opdracht: %s."
-
-#: src/language/lexer/lexer.c:284
+#: src/language/lexer/lexer.c:263
#, c-format
msgid "%s does not form a valid number."
msgstr "%s vormt geen geldig nummer."
-#: src/language/lexer/lexer.c:390
+#: src/language/lexer/lexer.c:369
#, c-format
msgid "Bad character in input: `%s'."
msgstr "Foutief teken in invoer: '%s'."
-#: src/language/lexer/lexer.c:427
+#: src/language/lexer/lexer.c:402
#, c-format
msgid "Subcommand %s may only be specified once."
msgstr "Subopdracht %s mag slechts een keer gespecificeerd worden."
-#: src/language/lexer/lexer.c:435
+#: src/language/lexer/lexer.c:410
#, c-format
msgid "missing required subcommand %s"
msgstr "mis vereiste subopdracht %s"
-#: src/language/lexer/lexer.c:464
-#, c-format
-msgid "Syntax error %s at %s."
-msgstr "Syntaxfout %s op %s."
+#: src/language/lexer/lexer.c:423
+#, fuzzy
+msgid "Syntax error at end of file"
+msgstr "Syntaxfout in datumveld."
-#: src/language/lexer/lexer.c:467
-#, c-format
-msgid "Syntax error at %s."
+#: src/language/lexer/lexer.c:425
+#, fuzzy
+msgid "Syntax error at end of command"
+msgstr "Syntaxfout in datumveld."
+
+#: src/language/lexer/lexer.c:429
+#, fuzzy, c-format
+msgid "Syntax error at `%s'"
msgstr "Syntaxfout op %s."
-#: src/language/lexer/lexer.c:479 src/language/xforms/select-if.c:60
-#: src/language/stats/autorecode.c:144 src/language/data-io/print-space.c:73
+#: src/language/lexer/lexer.c:457 src/language/xforms/select-if.c:60
+#: src/language/stats/autorecode.c:161 src/language/stats/npar.c:310
+#: src/language/data-io/print-space.c:73
msgid "expecting end of command"
msgstr "verwacht einde-van-opdracht "
-#: src/language/lexer/lexer.c:601 src/language/lexer/lexer.c:618
+#: src/language/lexer/lexer.c:579 src/language/lexer/lexer.c:596
#, c-format
msgid "expecting `%s'"
msgstr "verwacht '%s'"
-#: src/language/lexer/lexer.c:632
+#: src/language/lexer/lexer.c:610
msgid "expecting string"
msgstr "tekenreeks verwacht"
-#: src/language/lexer/lexer.c:646
+#: src/language/lexer/lexer.c:624
msgid "expecting integer"
msgstr "verwacht integer"
-#: src/language/lexer/lexer.c:659
+#: src/language/lexer/lexer.c:637
msgid "expecting number"
msgstr "nummer verwacht"
-#: src/language/lexer/lexer.c:671
+#: src/language/lexer/lexer.c:649
msgid "expecting identifier"
msgstr "verwacht herkenningsteken"
-#: src/language/lexer/lexer.c:1065
+#: src/language/lexer/lexer.c:1042
msgid "binary"
msgstr "binair"
-#: src/language/lexer/lexer.c:1070
+#: src/language/lexer/lexer.c:1047
msgid "octal"
msgstr "octaal"
-#: src/language/lexer/lexer.c:1075
+#: src/language/lexer/lexer.c:1052
msgid "hex"
msgstr "hexadecimaal"
-#: src/language/lexer/lexer.c:1085
+#: src/language/lexer/lexer.c:1062
#, c-format
msgid "String of %s digits has %zu characters, which is not a multiple of %d."
msgstr "Tekenreeks van %s cijfers bestaat uit %zu tekens, dat geen meervoud van %d is."
-#: src/language/lexer/lexer.c:1114
+#: src/language/lexer/lexer.c:1091
#, c-format
msgid "`%c' is not a valid %s digit."
msgstr "'%c' is geen geldig %s cijfer."
-#: src/language/lexer/lexer.c:1148
+#: src/language/lexer/lexer.c:1125
msgid "Unterminated string constant."
msgstr "Geen einde aan tekenreeksconstante."
-#: src/language/lexer/lexer.c:1202
+#: src/language/lexer/lexer.c:1179
msgid "Unexpected end of file in string concatenation."
msgstr "Onverwacht bestandseinde in tekenreeks samenvoeging."
-#: src/language/lexer/lexer.c:1210
+#: src/language/lexer/lexer.c:1187
msgid "String expected following `+'."
msgstr "Tekenreeks verwacht achter '+'."
-#: src/language/lexer/lexer.c:1223
-#, c-format
-msgid "String exceeds 255 characters in length (%zu characters)."
-msgstr "Tekenreeks overschrijdt de lengte van 255 tekens (%zu tekens)."
-
#: src/language/lexer/format-parser.c:88
msgid "expecting valid format specifier"
msgstr "verwacht geldige indelingsspecificator"
#: src/language/lexer/format-parser.c:126
#: src/language/data-io/placement-parser.c:226
#, c-format
-msgid "Unknown format type \"%s\"."
-msgstr "Onbekend opmaaktype \"%s\"."
+msgid "Unknown format type `%s'."
+msgstr "Onbekend opmaaktype '%s'."
#: src/language/lexer/format-parser.c:121
msgid "expecting format type"
msgstr "verwacht opmaaktype"
-#: src/language/lexer/value-parser.c:60
+#: src/language/lexer/value-parser.c:64
#, c-format
msgid "Low end of range (%g) is below high end (%g). The range will be treated as reversed."
msgstr "Ondergrens van bereik (%g) is lager dan bovengrens (%g). Het bereik wordt behandeld als omgekeerd."
-#: src/language/lexer/value-parser.c:68
+#: src/language/lexer/value-parser.c:72
#, c-format
msgid "Ends of range are equal (%g)."
msgstr "Eindes van bereik zijn gelijk (%g)."
-#: src/language/lexer/value-parser.c:76
+#: src/language/lexer/value-parser.c:80
msgid "LO or LOWEST must be part of a range."
msgstr "LO of LOWEST moet een onderdeel van een bereik zijn."
-#: src/language/lexer/value-parser.c:109
+#: src/language/lexer/value-parser.c:117
msgid "System-missing value is not valid here."
msgstr "System-missing waarde is hier niet geldig."
-#: src/language/lexer/value-parser.c:117
+#: src/language/lexer/value-parser.c:125
msgid "expecting number or data string"
msgstr "nummer of gegevenstekenreeks verwacht"
msgid "Bad bounds in use of TO convention."
msgstr "Slechte grenzen in het gebruik van TO conventie."
-#: src/language/xforms/compute.c:149 src/language/xforms/compute.c:203
+#: src/language/xforms/compute.c:149 src/language/xforms/compute.c:204
#, c-format
msgid "When executing COMPUTE: SYSMIS is not a valid value as an index into vector %s."
msgstr "Tijdens uitvoeren van COMPUTE: SYSMIS is geen geldige waarde als een index in vector %s."
-#: src/language/xforms/compute.c:153 src/language/xforms/compute.c:210
+#: src/language/xforms/compute.c:153 src/language/xforms/compute.c:211
#, c-format
msgid "When executing COMPUTE: %g is not a valid value as an index into vector %s."
msgstr "Tijdens uitvoeren van COMPUTE: %g is geen geldige waarde als een index in vector %s."
-#: src/language/xforms/compute.c:353
+#: src/language/xforms/compute.c:355
#, c-format
msgid "There is no vector named %s."
msgstr "Er is geen vector genaamd %s."
msgid "Cannot sample %d observations from a population of %d."
msgstr "Kan niet %d observaties bemonsteren van een populatie van %d."
-#: src/language/xforms/recode.c:248
+#: src/language/xforms/recode.c:250
msgid "Inconsistent target variable types. Target variables must be all numeric or all string."
msgstr "Inconsistent doelvariabelen-types. Doelvariabelen moeten allemaal numeriek of allemaal tekenreeks zijn."
-#: src/language/xforms/recode.c:269
+#: src/language/xforms/recode.c:271
msgid "CONVERT requires string input values and numeric output values."
msgstr "CONVERT vereist tekenreeks invoerwaardes en numerieke uitvoerwaardes."
-#: src/language/xforms/recode.c:324
+#: src/language/xforms/recode.c:326
msgid "THRU is not allowed with string variables."
msgstr "THRU is niet toegestaan met tekenreeksvariabelen."
-#: src/language/xforms/recode.c:403
+#: src/language/xforms/recode.c:406
msgid "expecting output value"
msgstr "verwacht uitvoerwaarde"
-#: src/language/xforms/recode.c:460
+#: src/language/xforms/recode.c:463
#, c-format
msgid "%zu variable(s) cannot be recoded into %zu variable(s). Specify the same number of variables as source and target variables."
msgstr "%zu variabel(en) kunnen niet gehercodeerd worden in %zu variabel(en). Specificeer hetzelfde aantal variabelen als bron- en als doelvariabelen."
-#: src/language/xforms/recode.c:475
+#: src/language/xforms/recode.c:478
#, c-format
msgid "There is no variable named %s. (All string variables specified on INTO must already exist. Use the STRING command to create a string variable.)"
msgstr "Er is geen variabele genaamd %s. (Alle tekenreeksvariabelen gespecificeerd bij INTO dienen al te bestaan. Gebruik de STRING opdracht om een tekenreeks variabele aan te maken.)"
-#: src/language/xforms/recode.c:491
+#: src/language/xforms/recode.c:494
#, c-format
msgid "INTO is required with %s input values and %s output values."
msgstr "INTO is vereist met %s invoerwaardes en %s uitvoerwaardes."
-#: src/language/xforms/recode.c:504
+#: src/language/xforms/recode.c:507
#, c-format
msgid "Type mismatch. Cannot store %s data in %s variable %s."
msgstr "Type fout. Kan %s gegevens niet in %s variabele %s opslaan."
msgid "Only one index clause may be specified."
msgstr "Slechts een index clausule mag gespecificeerd worden."
-#: src/language/control/temporary.c:46
+#: src/language/control/temporary.c:45
msgid "This command may only appear once between procedures and procedure-like commands."
msgstr "Deze opdracht mag slechts 1 keer voorkomen tussen procedures en procedure-achtige opdrachten."
#: src/language/control/repeat.c:172
#, c-format
-msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"."
-msgstr "Dummy-variabelennaam \"%s\" verbergt woordenboekvariabele \"%s\"."
+msgid "Dummy variable name `%s' hides dictionary variable `%s'."
+msgstr "Dummy-variabelennaam '%s' verbergt woordenboekvariabele '%s'."
#: src/language/control/repeat.c:177
#, c-format
-msgid "Dummy variable name \"%s\" is given twice."
-msgstr "Dummy-variabelennaam \"%s\" is twee keer opgegeven."
+msgid "Dummy variable name `%s' is given twice."
+msgstr "Dummy-variabelennaam '%s' is twee keer opgegeven."
#: src/language/control/repeat.c:223
#, c-format
-msgid "Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d were specified."
-msgstr "Dummy variabele \"%.*s\" heeft %d vervangingen, dus \"%.*s\" moet dat ook, maar %d zijn er gespecificeerd."
+msgid "Dummy variable `%.*s' had %d substitutions, so `%.*s' must also, but %d were specified."
+msgstr "Dummy variabele '%.*s' heeft %d vervangingen, dus '%.*s' moet dat ook, maar %d zijn er gespecificeerd."
+
+#: src/language/control/repeat.c:310
+msgid "DO REPEAT without END REPEAT."
+msgstr ""
-#: src/language/control/repeat.c:335
+#: src/language/control/repeat.c:338
msgid "DO REPEAT may not nest in compatibility mode."
msgstr "DO REPEAT mag niet nesten in compatibiliteitsmodus."
-#: src/language/control/repeat.c:437
+#: src/language/control/repeat.c:440
msgid "Ranges may only have integer bounds"
msgstr "Bereiken mogen alleen integer grenzen hebben"
-#: src/language/control/repeat.c:446
+#: src/language/control/repeat.c:449
#, c-format
msgid "%g TO %g is an invalid range."
msgstr "%g TO %g is een ongeldig bereik."
-#: src/language/control/repeat.c:481
+#: src/language/control/repeat.c:484
msgid "String expected."
msgstr "Tekenreeks verwacht."
-#: src/language/control/repeat.c:500
+#: src/language/control/repeat.c:503
msgid "No matching DO REPEAT."
msgstr "Geen overeenkomende DO REPEAT."
msgstr "Attribuut tabel index moet minimaal 1 en maximaal 65535 zijn."
#: src/language/dictionary/attributes.c:189
-msgid "expecting ATTRIBUTE= or DELETE="
-msgstr "verwacht ATTRIBUTE= of DELETE="
+#: src/language/data-io/get-data.c:314 src/language/data-io/get-data.c:352
+#: src/language/data-io/get.c:99 src/language/data-io/save-translate.c:118
+#: src/language/data-io/save-translate.c:135
+#: src/language/data-io/save-translate.c:148
+#: src/language/data-io/save-translate.c:194
+#: src/language/data-io/save-translate.c:208
+#: src/language/data-io/save-translate.c:226 src/language/data-io/save.c:216
+#: src/language/data-io/save.c:231 src/language/data-io/save.c:259
+#, c-format
+msgid "expecting %s or %s"
+msgstr "%s of %s verwacht"
-#: src/language/dictionary/apply-dictionary.c:75
+#: src/language/dictionary/apply-dictionary.c:74
#, c-format
msgid "Variable %s is %s in target file, but %s in source file."
msgstr "Variabele %s is %s in doelbestand, maar %s in bronbestand."
-#: src/language/dictionary/apply-dictionary.c:115
+#: src/language/dictionary/apply-dictionary.c:114
msgid "No matching variables found between the source and target files."
msgstr "Geen overeenkomende variabelen gevonden tussen het bron- en het doelbestand."
msgid "`)' expected after output format."
msgstr "')' verwacht na uitvoerindeling."
-#: src/language/dictionary/missing-values.c:56
-#: src/language/stats/aggregate.c:459
-msgid "expecting `('"
-msgstr "'(' verwacht"
-
-#: src/language/dictionary/missing-values.c:72
+#: src/language/dictionary/missing-values.c:69
#, c-format
msgid "Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within a single list."
msgstr "Kan numerieke variabelen (b.v. %s) en tekenreeksvariabelen (b.v. %s) niet mixen binnen een enkele lijst."
-#: src/language/dictionary/missing-values.c:116
+#: src/language/dictionary/missing-values.c:113
#, c-format
msgid "Truncating missing value to maximum acceptable length (%d bytes)."
msgstr "Afkappen ontbrekende-waarde naar maximale acceptabele lengte (%d bytes)."
-#: src/language/dictionary/missing-values.c:138
+#: src/language/dictionary/missing-values.c:135
#, c-format
msgid "Missing values provided are too long to assign to variable of width %d."
msgstr "De opgegeven ontbrekende-waarde zijn te lang om toe te kennen aan een variabele van breedte %d."
-#: src/language/dictionary/modify-variables.c:92
+#: src/language/dictionary/modify-variables.c:91
msgid "MODIFY VARS may not be used after TEMPORARY. Temporary transformations will be made permanent."
msgstr "MODIFY VARS mag niet gebruikt worden na TEMPORARY. Tijdelijke transformaties zullen permanent gemaakt worden."
-#: src/language/dictionary/modify-variables.c:114
-#: src/language/dictionary/modify-variables.c:177
+#: src/language/dictionary/modify-variables.c:113
+#: src/language/dictionary/modify-variables.c:176
+#: src/language/data-io/inpt-pgm.c:288
#, c-format
msgid "%s subcommand may be given at most once."
msgstr "%s-subopdracht mag maximaal 1 keer gegeven worden."
-#: src/language/dictionary/modify-variables.c:137
+#: src/language/dictionary/modify-variables.c:136
msgid "Cannot specify ALL after specifying a set of variables."
msgstr "Kan niet ALL opgeven na het specificeren van een set van variabelen."
-#: src/language/dictionary/modify-variables.c:147
-#: src/language/dictionary/modify-variables.c:190
+#: src/language/dictionary/modify-variables.c:146
+#: src/language/dictionary/modify-variables.c:189
#, c-format
msgid "`(' expected on %s subcommand."
msgstr "'(' verwacht in %s-subopdracht."
-#: src/language/dictionary/modify-variables.c:159
+#: src/language/dictionary/modify-variables.c:158
msgid "`)' expected following variable names on REORDER subcommand."
msgstr "')' verwacht achter variabelennamen in REORDER-subopdracht."
-#: src/language/dictionary/modify-variables.c:199
+#: src/language/dictionary/modify-variables.c:198
msgid "`=' expected between lists of new and old variable names on RENAME subcommand."
msgstr "'=' verwacht tussen lijst van nieuwe en oude variabelennamen in RENAME-subopdracht."
-#: src/language/dictionary/modify-variables.c:208
-#: src/language/dictionary/rename-variables.c:77
+#: src/language/dictionary/modify-variables.c:207
+#: src/language/dictionary/rename-variables.c:76
#, c-format
msgid "Differing number of variables in old name list (%zu) and in new name list (%zu)."
msgstr "Verschillend aantal variabelen in oude naamlijst (%zu) en in de nieuwe naamlijst (%zu)."
-#: src/language/dictionary/modify-variables.c:219
+#: src/language/dictionary/modify-variables.c:218
msgid "`)' expected after variable lists on RENAME subcommand."
msgstr "')' verwacht na variabelenlijst in RENAME-subopdracht."
-#: src/language/dictionary/modify-variables.c:233
+#: src/language/dictionary/modify-variables.c:232
msgid "KEEP subcommand may be given at most once. It may not be given in conjunction with the DROP subcommand."
msgstr "KEEP-subopdracht mag slechts eenmaal gegeven worden. Het mag niet gegeven worden in combinatie met de DROP-subopdracht."
-#: src/language/dictionary/modify-variables.c:276
+#: src/language/dictionary/modify-variables.c:275
msgid "DROP subcommand may be given at most once. It may not be given in conjunction with the KEEP subcommand."
msgstr "DROP subopdracht mag slechts eenmaal gegeven worden. Het mag niet gegeven worden in combinatie met de KEEP-subopdracht."
-#: src/language/dictionary/modify-variables.c:302
+#: src/language/dictionary/modify-variables.c:301
#, c-format
msgid "Unrecognized subcommand name `%s'."
msgstr "Niet-herkende subopdrachtnaam '%s'."
-#: src/language/dictionary/modify-variables.c:304
+#: src/language/dictionary/modify-variables.c:303
msgid "Subcommand name expected."
msgstr "Subopdrachtnaam verwacht."
-#: src/language/dictionary/modify-variables.c:312
+#: src/language/dictionary/modify-variables.c:311
msgid "`/' or `.' expected."
msgstr "'/' of '.' verwacht."
#: src/language/dictionary/mrsets.c:568
#: src/language/dictionary/split-file.c:84
-#: src/language/dictionary/sys-file-info.c:344
-#: src/language/dictionary/sys-file-info.c:583
+#: src/language/dictionary/sys-file-info.c:343
+#: src/language/dictionary/sys-file-info.c:582
#: src/ui/gui/psppire-var-sheet.c:538 src/ui/gui/psppire-var-store.c:836
-#: src/ui/gui/crosstabs.ui:292 src/ui/gui/psppire.ui:1924
+#: src/ui/gui/compute.ui:467 src/ui/gui/crosstabs.ui:292
msgid "Label"
msgstr "Label"
msgid "Format type %s may not be used with a string variable."
msgstr "Opmaaktype %s mag niet gebruikt worden met een tekenreeksvariabele."
-#: src/language/dictionary/rename-variables.c:49
+#: src/language/dictionary/rename-variables.c:48
msgid "RENAME VARS may not be used after TEMPORARY. Temporary transformations will be made permanent."
msgstr "RENAME VARS mag niet gebruikt worden na TEMPORARY. Tijdelijke transformaties zullen permanent gemaakt worden."
-#: src/language/dictionary/rename-variables.c:59
+#: src/language/dictionary/rename-variables.c:58
msgid "`(' expected."
msgstr "'(' verwacht."
-#: src/language/dictionary/rename-variables.c:67
+#: src/language/dictionary/rename-variables.c:66
msgid "`=' expected between lists of new and old variable names."
msgstr "'=' verwacht tussen lijst met nieuwe en oude variabelennamen."
-#: src/language/dictionary/rename-variables.c:88
+#: src/language/dictionary/rename-variables.c:87
msgid "`)' expected after variable names."
msgstr "')' verwacht achter variabelennamen."
-#: src/language/dictionary/rename-variables.c:98
+#: src/language/dictionary/rename-variables.c:97
#, c-format
msgid "Renaming would duplicate variable name %s."
msgstr "Hernoemen zou variabelennaam %s dupliceren."
#: src/language/dictionary/split-file.c:83
-#: src/language/dictionary/sys-file-info.c:429
-#: src/language/dictionary/sys-file-info.c:582
-#: src/language/stats/crosstabs.q:1214 src/language/stats/crosstabs.q:1241
-#: src/language/stats/crosstabs.q:1264 src/language/stats/crosstabs.q:1289
+#: src/language/dictionary/sys-file-info.c:428
+#: src/language/dictionary/sys-file-info.c:581
+#: src/language/stats/reliability.c:758 src/language/stats/reliability.c:769
+#: src/language/stats/crosstabs.q:1206 src/language/stats/crosstabs.q:1233
+#: src/language/stats/crosstabs.q:1256 src/language/stats/crosstabs.q:1281
#: src/language/stats/examine.q:1841 src/language/stats/frequencies.q:813
-#: src/language/stats/reliability.q:568 src/language/stats/reliability.q:579
msgid "Value"
msgstr "Waarde"
-#: src/language/dictionary/sys-file-info.c:95
+#: src/language/dictionary/sys-file-info.c:94
msgid "File:"
msgstr "Bestand:"
-#: src/language/dictionary/sys-file-info.c:97 src/ui/gui/psppire.ui:1862
+#: src/language/dictionary/sys-file-info.c:96 src/ui/gui/compute.ui:405
#: src/ui/gui/recode.ui:859
msgid "Label:"
msgstr "Label:"
-#: src/language/dictionary/sys-file-info.c:101
+#: src/language/dictionary/sys-file-info.c:100
msgid "No label."
msgstr "Geen label."
-#: src/language/dictionary/sys-file-info.c:104
+#: src/language/dictionary/sys-file-info.c:103
msgid "Created:"
msgstr "Aangemaakt:"
-#: src/language/dictionary/sys-file-info.c:107
+#: src/language/dictionary/sys-file-info.c:106
msgid "Integer Format:"
msgstr "Integeropmaak"
-#: src/language/dictionary/sys-file-info.c:111
-#: src/language/dictionary/sys-file-info.c:119
-#: src/language/dictionary/sys-file-info.c:124
-#: src/language/dictionary/sys-file-info.c:143
+#: src/language/dictionary/sys-file-info.c:110
+#: src/language/dictionary/sys-file-info.c:118
+#: src/language/dictionary/sys-file-info.c:123
+#: src/language/dictionary/sys-file-info.c:142
msgid "Unknown"
msgstr "Onbekend"
-#: src/language/dictionary/sys-file-info.c:112
+#: src/language/dictionary/sys-file-info.c:111
msgid "Real Format:"
msgstr "Realopmaak:"
-#: src/language/dictionary/sys-file-info.c:114
+#: src/language/dictionary/sys-file-info.c:113
msgid "IEEE 754 LE."
msgstr "IEEE 754 LE."
-#: src/language/dictionary/sys-file-info.c:115
+#: src/language/dictionary/sys-file-info.c:114
msgid "IEEE 754 BE."
msgstr "IEEE 754 BE."
-#: src/language/dictionary/sys-file-info.c:116
+#: src/language/dictionary/sys-file-info.c:115
msgid "VAX D."
msgstr "VAX D."
-#: src/language/dictionary/sys-file-info.c:117
+#: src/language/dictionary/sys-file-info.c:116
msgid "VAX G."
msgstr "VAX G."
-#: src/language/dictionary/sys-file-info.c:118
+#: src/language/dictionary/sys-file-info.c:117
msgid "IBM 390 Hex Long."
msgstr "IBM 390 Hex Long."
-#: src/language/dictionary/sys-file-info.c:120 src/ui/gui/descriptives.ui:85
-#: src/ui/gui/factor.ui:173 src/ui/gui/recode.ui:960
+#: src/language/dictionary/sys-file-info.c:119 src/ui/gui/descriptives.ui:85
+#: src/ui/gui/factor.ui:181 src/ui/gui/recode.ui:960
msgid "Variables:"
msgstr "Variabelen:"
-#: src/language/dictionary/sys-file-info.c:122
+#: src/language/dictionary/sys-file-info.c:121
msgid "Cases:"
msgstr "Cases:"
-#: src/language/dictionary/sys-file-info.c:127
+#: src/language/dictionary/sys-file-info.c:126
msgid "Type:"
msgstr "Type:"
-#: src/language/dictionary/sys-file-info.c:128
-#: src/ui/gui/psppire-data-window.c:634
+#: src/language/dictionary/sys-file-info.c:127
+#: src/ui/gui/psppire-data-window.c:635
msgid "System File"
msgstr "Systeembestand"
-#: src/language/dictionary/sys-file-info.c:129
+#: src/language/dictionary/sys-file-info.c:128
msgid "Weight:"
msgstr "Gewicht:"
-#: src/language/dictionary/sys-file-info.c:134
+#: src/language/dictionary/sys-file-info.c:133
msgid "Not weighted."
msgstr "Niet gewogen."
-#: src/language/dictionary/sys-file-info.c:136
+#: src/language/dictionary/sys-file-info.c:135
msgid "Mode:"
msgstr "Modus:"
-#: src/language/dictionary/sys-file-info.c:138
+#: src/language/dictionary/sys-file-info.c:137
#, c-format
msgid "Compression %s."
msgstr "Compressie %s."
-#: src/language/dictionary/sys-file-info.c:138
+#: src/language/dictionary/sys-file-info.c:137
msgid "on"
msgstr "aan"
-#: src/language/dictionary/sys-file-info.c:138
+#: src/language/dictionary/sys-file-info.c:137
msgid "off"
msgstr "uit"
-#: src/language/dictionary/sys-file-info.c:141
+#: src/language/dictionary/sys-file-info.c:140
msgid "Charset:"
msgstr "Tekenset:"
-#: src/language/dictionary/sys-file-info.c:151
-#: src/language/dictionary/sys-file-info.c:344
+#: src/language/dictionary/sys-file-info.c:150
+#: src/language/dictionary/sys-file-info.c:343
msgid "Description"
msgstr "Omschrijving"
-#: src/language/dictionary/sys-file-info.c:152
-#: src/language/dictionary/sys-file-info.c:346
-#: src/language/dictionary/sys-file-info.c:663
+#: src/language/dictionary/sys-file-info.c:151
+#: src/language/dictionary/sys-file-info.c:345
+#: src/language/dictionary/sys-file-info.c:662
msgid "Position"
msgstr "Positie"
-#: src/language/dictionary/sys-file-info.c:199
+#: src/language/dictionary/sys-file-info.c:198
msgid "The active file does not have a file label."
msgstr "Het actieve bestand heeft geen bestandlabel."
-#: src/language/dictionary/sys-file-info.c:202
+#: src/language/dictionary/sys-file-info.c:201
msgid "File label:"
msgstr "Bestandlabel:"
-#: src/language/dictionary/sys-file-info.c:277
+#: src/language/dictionary/sys-file-info.c:276
msgid "No variables to display."
msgstr "Geen variabelen om te tonen."
-#: src/language/dictionary/sys-file-info.c:291
+#: src/language/dictionary/sys-file-info.c:290
msgid "Macros not supported."
msgstr "Macro's worden niet ondersteund."
-#: src/language/dictionary/sys-file-info.c:300
+#: src/language/dictionary/sys-file-info.c:299
msgid "The active file dictionary does not contain any documents."
msgstr "Het actieve bestandwoordenboek bevat geen documenten."
-#: src/language/dictionary/sys-file-info.c:308
+#: src/language/dictionary/sys-file-info.c:307
msgid "Documents in the active file:"
msgstr "Documenten in het actieve bestand:"
-#: src/language/dictionary/sys-file-info.c:428
+#: src/language/dictionary/sys-file-info.c:427
msgid "Attribute"
msgstr "Attribuut"
-#: src/language/dictionary/sys-file-info.c:484
+#: src/language/dictionary/sys-file-info.c:483
#, c-format
msgid "Format: %s"
msgstr "Indeling: %s"
-#: src/language/dictionary/sys-file-info.c:491
+#: src/language/dictionary/sys-file-info.c:490
#, c-format
msgid "Print Format: %s"
msgstr "Afdrukindeling: %s"
-#: src/language/dictionary/sys-file-info.c:495
+#: src/language/dictionary/sys-file-info.c:494
#, c-format
msgid "Write Format: %s"
msgstr "Schrijfindeling: %s"
-#: src/language/dictionary/sys-file-info.c:508
+#: src/language/dictionary/sys-file-info.c:507
#, c-format
msgid "Measure: %s"
msgstr "Meting: %s"
-#: src/language/dictionary/sys-file-info.c:509
+#: src/language/dictionary/sys-file-info.c:508
#: src/ui/gui/psppire-var-sheet.c:111
msgid "Nominal"
msgstr "Nominaal"
-#: src/language/dictionary/sys-file-info.c:510
+#: src/language/dictionary/sys-file-info.c:509
#: src/ui/gui/psppire-var-sheet.c:112
msgid "Ordinal"
msgstr "Ordinaal"
-#: src/language/dictionary/sys-file-info.c:511
+#: src/language/dictionary/sys-file-info.c:510
#: src/ui/gui/psppire-var-sheet.c:113
msgid "Scale"
msgstr "Schaal"
-#: src/language/dictionary/sys-file-info.c:514
+#: src/language/dictionary/sys-file-info.c:513
#, c-format
msgid "Display Alignment: %s"
msgstr "Toongroepering: %s"
-#: src/language/dictionary/sys-file-info.c:515
+#: src/language/dictionary/sys-file-info.c:514
#: src/ui/gui/psppire-var-sheet.c:104
msgid "Left"
msgstr "Links"
-#: src/language/dictionary/sys-file-info.c:516
+#: src/language/dictionary/sys-file-info.c:515
#: src/ui/gui/psppire-var-sheet.c:106
msgid "Center"
msgstr "Centreer"
-#: src/language/dictionary/sys-file-info.c:517
+#: src/language/dictionary/sys-file-info.c:516
#: src/ui/gui/psppire-var-sheet.c:105
msgid "Right"
msgstr "Rechts"
-#: src/language/dictionary/sys-file-info.c:520
+#: src/language/dictionary/sys-file-info.c:519
#, c-format
msgid "Display Width: %d"
msgstr "Toonbreedte: %d"
-#: src/language/dictionary/sys-file-info.c:534
+#: src/language/dictionary/sys-file-info.c:533
msgid "Missing Values: "
msgstr "Ontbrekende waardes: "
-#: src/language/dictionary/sys-file-info.c:643
+#: src/language/dictionary/sys-file-info.c:642
msgid "No vectors defined."
msgstr "Geen vectoren gedefinieerd."
-#: src/language/dictionary/sys-file-info.c:662
+#: src/language/dictionary/sys-file-info.c:661
msgid "Vector"
msgstr "Vector"
-#: src/language/dictionary/sys-file-info.c:665
+#: src/language/dictionary/sys-file-info.c:664
msgid "Print Format"
msgstr "Afdrukindeling"
-#: src/language/dictionary/value-labels.c:150
+#: src/language/dictionary/value-labels.c:149
msgid "Truncating value label to 60 characters."
msgstr "Waardelabel is afgekapt tot 60 tekens."
-#: src/language/dictionary/variable-label.c:51
-msgid "String expected for variable label."
-msgstr "Tekenreeks verwacht voor variabelenlabel."
-
-#: src/language/dictionary/variable-label.c:59
+#: src/language/dictionary/variable-label.c:58
msgid "Truncating variable label to 255 characters."
msgstr "Variabelenlabel is afgekapt tot 255 tekens."
msgid "Only USE ALL is currently implemented."
msgstr "Alleen USE ALL is op dit moment geïmplementeerd."
+#: src/language/utilities/host.c:85
+#, c-format
+msgid "Couldn't fork: %s."
+msgstr ""
+
+#: src/language/utilities/host.c:100
+msgid "Interactive shell not supported on this platform."
+msgstr "Interactieve-shell niet ondersteund op dit platform."
+
+#: src/language/utilities/host.c:112
+msgid "Command shell not supported on this platform."
+msgstr "Opdracht-shell niet ondersteund op dit platform."
+
+#: src/language/utilities/host.c:118
+#, c-format
+msgid "Error executing command: %s."
+msgstr "Fout tijdens uitvoeren opdracht: %s."
+
#: src/language/utilities/title.c:103
#, c-format
msgid " (Entered %s)"
msgstr " (Ingevoerd %s)"
-#: src/language/utilities/include.c:95
-msgid "Expecting BATCH or INTERACTIVE after SYNTAX."
-msgstr "BATCH of INTERACTIVE verwacht na SYNTAX."
-
-#: src/language/utilities/include.c:112
-msgid "Expecting YES or NO after CD."
-msgstr "YES of NO verwacht na CD."
-
-#: src/language/utilities/include.c:129
-msgid "Expecting CONTINUE or STOP after ERROR."
-msgstr "CONTINUE of STOP verwacht na ERROR."
+#: src/language/utilities/include.c:94 src/language/utilities/include.c:112
+#: src/language/utilities/include.c:130
+#, fuzzy, c-format
+msgid "expecting %s or %s after %s"
+msgstr "%s of %s verwacht"
-#: src/language/utilities/include.c:136
+#: src/language/utilities/include.c:138
#, c-format
msgid "Unexpected token: `%s'."
msgstr "Onverwacht symbool: '%s'."
-#: src/language/utilities/include.c:181
+#: src/language/utilities/include.c:183
msgid "expecting file name"
msgstr "bestandsnaam verwacht"
-#: src/language/utilities/include.c:193
+#: src/language/utilities/include.c:195
#, c-format
msgid "Can't find `%s' in include file search path."
msgstr "Kan '%s' niet vinden in include-bestand zoekpad."
-#: src/language/utilities/include.c:201
+#: src/language/utilities/include.c:203
#, c-format
msgid "Unable to open `%s': %s."
msgstr "Onmogelijk om te openen '%s': %s."
-#: src/language/utilities/permissions.c:73
+#: src/language/utilities/permissions.c:76
#, c-format
msgid "Expecting %s or %s."
msgstr "Verwacht %s of %s."
-#: src/language/utilities/permissions.c:106
+#: src/language/utilities/permissions.c:109
#, c-format
msgid "Cannot stat %s: %s"
msgstr ""
-#: src/language/utilities/permissions.c:119
+#: src/language/utilities/permissions.c:122
#, c-format
msgid "Cannot change mode of %s: %s"
msgstr "Kan modus van %s niet veranderen: %s"
-#: src/language/stats/aggregate.c:220
-msgid "while expecting COLUMNWISE"
-msgstr "terwijl COLUMNWISE verwacht werd"
+#: src/language/stats/aggregate.c:94
+msgid "Sum of values"
+msgstr "Som van waardes"
+
+#: src/language/stats/aggregate.c:95
+msgid "Mean average"
+msgstr ""
+
+#: src/language/stats/aggregate.c:96
+msgid "Median average"
+msgstr "Mediaan gemiddelde"
+
+#: src/language/stats/aggregate.c:97 src/ui/gui/descriptives-dialog.c:41
+#: src/ui/gui/frequencies-dialog.c:42
+msgid "Standard deviation"
+msgstr "Standarddeviatie"
+
+#: src/language/stats/aggregate.c:98
+msgid "Maximum value"
+msgstr "Maximum waarde"
+
+#: src/language/stats/aggregate.c:99
+msgid "Minimum value"
+msgstr "Minimum waarde"
+
+#: src/language/stats/aggregate.c:100
+msgid "Percentage greater than"
+msgstr ""
+
+#: src/language/stats/aggregate.c:101
+msgid "Percentage less than"
+msgstr "Percentage kleiner dan"
+
+#: src/language/stats/aggregate.c:102
+msgid "Percentage included in range"
+msgstr ""
+
+#: src/language/stats/aggregate.c:103
+msgid "Percentage excluded from range"
+msgstr ""
+
+#: src/language/stats/aggregate.c:104
+msgid "Fraction greater than"
+msgstr ""
+
+#: src/language/stats/aggregate.c:105
+msgid "Fraction less than"
+msgstr "Fractie kleiner dan"
+
+#: src/language/stats/aggregate.c:106
+msgid "Fraction included in range"
+msgstr ""
+
+#: src/language/stats/aggregate.c:107
+msgid "Fraction excluded from range"
+msgstr ""
+
+#: src/language/stats/aggregate.c:108
+msgid "Number of cases"
+msgstr "Aantal cases"
-#: src/language/stats/aggregate.c:247
-msgid "expecting BREAK"
-msgstr "BREAK verwacht"
+#: src/language/stats/aggregate.c:109
+msgid "Number of cases (unweighted)"
+msgstr "Aantal cases (ongewogen)"
-#: src/language/stats/aggregate.c:252
+#: src/language/stats/aggregate.c:110
+msgid "Number of missing values"
+msgstr "Aantal missende waardes"
+
+#: src/language/stats/aggregate.c:111
+msgid "Number of missing values (unweighted)"
+msgstr "Aantal ontbrekende waardes (ongewogen)"
+
+#: src/language/stats/aggregate.c:112
+msgid "First non-missing value"
+msgstr "Eerste niet-ontbrekende waarde"
+
+#: src/language/stats/aggregate.c:113
+msgid "Last non-missing value"
+msgstr "Laatste niet-ontbrekende waarde"
+
+#: src/language/stats/aggregate.c:225 src/language/data-io/get-data.c:461
+#, fuzzy, c-format
+msgid "expecting %s"
+msgstr "verwacht '%s'"
+
+#: src/language/stats/aggregate.c:256
msgid "When PRESORTED is specified, specifying sorting directions with (A) or (D) has no effect. Output data will be sorted the same way as the input data."
msgstr "Als PRESORTED is gespecificeerd, heeft specificeren van sorteervolgorde met (A) of (D) geen effect. Uitvoergegevens zullen hetzelfde gesorteerd zijn als de invoergegevens."
-#: src/language/stats/aggregate.c:424
+#: src/language/stats/aggregate.c:450
msgid "expecting aggregation function"
msgstr "aggregatie-functie verwacht"
-#: src/language/stats/aggregate.c:442
+#: src/language/stats/aggregate.c:462
#, c-format
msgid "Unknown aggregation function %s."
msgstr "Onbekende aggregatie functie %s."
-#: src/language/stats/aggregate.c:498
+#: src/language/stats/aggregate.c:514
#, c-format
msgid "Missing argument %zu to %s."
msgstr "Mis argument %zu naar %s."
-#: src/language/stats/aggregate.c:507
+#: src/language/stats/aggregate.c:523
#, c-format
msgid "Arguments to %s must be of same type as source variables."
msgstr "Argumenten naar %s moeten van hetzelfde type zijn als bronvariabelen."
-#: src/language/stats/aggregate.c:517 src/language/expressions/parse.c:885
-msgid "expecting `)'"
-msgstr "')' verwacht"
-
-#: src/language/stats/aggregate.c:529
+#: src/language/stats/aggregate.c:542
#, c-format
msgid "Number of source variables (%zu) does not match number of target variables (%zu)."
msgstr "Aantal bronvariabelen (%zu) komt niet overeen met aantal doelvariabelen (%zu)."
-#: src/language/stats/aggregate.c:545
+#: src/language/stats/aggregate.c:558
#, c-format
msgid "The value arguments passed to the %s function are out-of-order. They will be treated as if they had been specified in the correct order."
msgstr "De volgorde van de geldige argumenten doorgegeven aan de %s functie klopt niet. Ze worden behandeld alsof ze in de correcte volgorde waren opgegeven."
-#: src/language/stats/aggregate.c:615
+#: src/language/stats/aggregate.c:632
#, c-format
msgid "Variable name %s is not unique within the aggregate file dictionary, which contains the aggregate variables and the break variables."
msgstr "Variabelennaam %s is niet uniek binnen het aggregate-bestandwoordenboek, dat de aggregate- en break-variabelen bevat."
-#: src/language/stats/autorecode.c:116
+#: src/language/stats/autorecode.c:127
#, c-format
msgid "Source variable count (%zu) does not match target variable count (%zu)."
msgstr "Bron-variabelenteller (%zu) komt niet overeen met doel-variabelenteller (%zu)."
-#: src/language/stats/autorecode.c:128
+#: src/language/stats/autorecode.c:139
#, c-format
msgid "Target variable %s duplicates existing variable %s."
msgstr "Doelvariabele %s dupliceert bestaande variabele %s."
-#: src/language/stats/binomial.c:141
+#: src/language/stats/binomial.c:139
#, c-format
msgid "Variable %s is not dichotomous"
msgstr "Variabele %s is niet dichotomisch "
-#: src/language/stats/binomial.c:192 src/ui/gui/binomial.ui:13
+#: src/language/stats/binomial.c:190 src/ui/gui/binomial.ui:13
msgid "Binomial Test"
msgstr "Binomiaal Test"
-#: src/language/stats/binomial.c:222
+#: src/language/stats/binomial.c:220
msgid "Group1"
msgstr "Groep1 "
-#: src/language/stats/binomial.c:223
+#: src/language/stats/binomial.c:221
msgid "Group2"
msgstr "Groep2"
-#: src/language/stats/binomial.c:224 src/language/stats/chisquare.c:177
-#: src/language/stats/chisquare.c:236 src/language/stats/factor.c:1462
-#: src/language/stats/sign.c:92 src/language/stats/wilcoxon.c:260
-#: src/ui/gui/crosstabs-dialog.c:60 src/language/stats/crosstabs.q:823
-#: src/language/stats/crosstabs.q:1151 src/language/stats/crosstabs.q:1528
-#: src/language/stats/examine.q:1105 src/language/stats/frequencies.q:871
-#: src/language/stats/oneway.q:302 src/language/stats/oneway.q:472
-#: src/language/stats/regression.q:291 src/language/stats/reliability.q:702
+#: src/language/stats/binomial.c:222 src/language/stats/chisquare.c:177
+#: src/language/stats/chisquare.c:236 src/language/stats/factor.c:1464
+#: src/language/stats/glm.c:343 src/language/stats/kruskal-wallis.c:294
+#: src/language/stats/oneway.c:776 src/language/stats/oneway.c:946
+#: src/language/stats/reliability.c:538 src/language/stats/sign.c:93
+#: src/language/stats/wilcoxon.c:255 src/ui/gui/crosstabs-dialog.c:60
+#: src/language/stats/crosstabs.q:815 src/language/stats/crosstabs.q:1143
+#: src/language/stats/crosstabs.q:1522 src/language/stats/examine.q:1105
+#: src/language/stats/frequencies.q:871 src/language/stats/regression.q:291
msgid "Total"
msgstr "Totaal"
-#: src/language/stats/binomial.c:257 src/language/stats/chisquare.c:199
-#: src/language/stats/crosstabs.q:1239 src/language/stats/crosstabs.q:1286
+#: src/language/stats/binomial.c:255 src/language/stats/chisquare.c:199
+#: src/language/stats/crosstabs.q:1231 src/language/stats/crosstabs.q:1278
msgid "Category"
msgstr "Categorie"
-#: src/language/stats/binomial.c:258 src/language/stats/correlations.c:119
-#: src/language/stats/correlations.c:227 src/language/stats/npar-summary.c:122
-#: src/language/stats/sign.c:72 src/language/stats/wilcoxon.c:243
-#: src/language/stats/crosstabs.q:830 src/language/stats/examine.q:1176
-#: src/language/stats/frequencies.q:1034 src/language/stats/oneway.q:385
-#: src/language/stats/reliability.q:705 src/language/stats/t-test.q:505
-#: src/language/stats/t-test.q:525 src/language/stats/t-test.q:625
-#: src/language/stats/t-test.q:1101
+#: src/language/stats/binomial.c:256 src/language/stats/correlations.c:119
+#: src/language/stats/correlations.c:227
+#: src/language/stats/kruskal-wallis.c:259
+#: src/language/stats/npar-summary.c:120 src/language/stats/oneway.c:846
+#: src/language/stats/reliability.c:541 src/language/stats/sign.c:72
+#: src/language/stats/wilcoxon.c:238 src/language/stats/crosstabs.q:822
+#: src/language/stats/examine.q:1176 src/language/stats/frequencies.q:1034
+#: src/language/stats/t-test.q:505 src/language/stats/t-test.q:525
+#: src/language/stats/t-test.q:625 src/language/stats/t-test.q:1101
msgid "N"
msgstr "N"
-#: src/language/stats/binomial.c:259
+#: src/language/stats/binomial.c:257
msgid "Observed Prop."
msgstr ""
-#: src/language/stats/binomial.c:260
+#: src/language/stats/binomial.c:258
msgid "Test Prop."
msgstr ""
-#: src/language/stats/binomial.c:263
+#: src/language/stats/binomial.c:261 src/language/stats/crosstabs.q:1211
+#: src/language/stats/crosstabs.q:1213
#, c-format
msgid "Exact Sig. (%d-tailed)"
msgstr ""
msgid "Frequencies"
msgstr "Frequenties"
-#: src/language/stats/chisquare.c:249 src/language/stats/sign.c:111
-#: src/language/stats/wilcoxon.c:309
+#: src/language/stats/chisquare.c:249 src/language/stats/kruskal-wallis.c:312
+#: src/language/stats/sign.c:112 src/language/stats/wilcoxon.c:304
msgid "Test Statistics"
msgstr "Test Statistieken"
-#: src/language/stats/chisquare.c:263
+#: src/language/stats/chisquare.c:263 src/language/stats/kruskal-wallis.c:315
msgid "Chi-Square"
msgstr "Chi-Square"
-#: src/language/stats/chisquare.c:264 src/language/stats/crosstabs.q:1215
-#: src/language/stats/oneway.q:275 src/language/stats/oneway.q:685
+#: src/language/stats/chisquare.c:264 src/language/stats/glm.c:308
+#: src/language/stats/kruskal-wallis.c:318 src/language/stats/oneway.c:753
+#: src/language/stats/oneway.c:1165 src/language/stats/crosstabs.q:1207
#: src/language/stats/regression.q:284 src/language/stats/t-test.q:752
#: src/language/stats/t-test.q:923 src/language/stats/t-test.q:1010
msgid "df"
msgstr "df"
-#: src/language/stats/chisquare.c:265
+#: src/language/stats/chisquare.c:265 src/language/stats/kruskal-wallis.c:321
msgid "Asymp. Sig."
msgstr ""
-#: src/language/stats/correlations.c:96 src/language/stats/factor.c:1720
-#: src/language/stats/npar-summary.c:108
+#: src/language/stats/correlations.c:96 src/language/stats/factor.c:1728
+#: src/language/stats/npar-summary.c:106
msgid "Descriptive Statistics"
msgstr "Descriptieve Statistieken"
#: src/language/stats/correlations.c:117 src/language/stats/descriptives.c:101
-#: src/language/stats/factor.c:1741 src/language/stats/npar-summary.c:125
-#: src/ui/gui/descriptives-dialog.c:40 src/ui/gui/frequencies-dialog.c:41
-#: src/language/stats/examine.q:1444 src/language/stats/frequencies.q:105
-#: src/language/stats/oneway.q:386 src/language/stats/t-test.q:506
+#: src/language/stats/factor.c:1749 src/language/stats/npar-summary.c:123
+#: src/language/stats/oneway.c:847 src/ui/gui/descriptives-dialog.c:40
+#: src/ui/gui/frequencies-dialog.c:41 src/language/stats/examine.q:1444
+#: src/language/stats/frequencies.q:105 src/language/stats/t-test.q:506
#: src/language/stats/t-test.q:526 src/language/stats/t-test.q:624
#: src/language/stats/t-test.q:917
msgid "Mean"
msgstr "Gemiddelde "
-#: src/language/stats/correlations.c:118 src/language/stats/factor.c:1742
-#: src/language/stats/npar-summary.c:128 src/language/stats/examine.q:1479
-#: src/language/stats/oneway.q:387 src/language/stats/t-test.q:507
+#: src/language/stats/correlations.c:118 src/language/stats/factor.c:1750
+#: src/language/stats/npar-summary.c:126 src/language/stats/oneway.c:848
+#: src/language/stats/examine.q:1479 src/language/stats/t-test.q:507
#: src/language/stats/t-test.q:527 src/language/stats/t-test.q:626
#: src/language/stats/t-test.q:918
msgid "Std. Deviation"
msgstr "Std. Deviatie"
-#: src/language/stats/correlations.c:190 src/language/stats/factor.c:1620
+#: src/language/stats/correlations.c:190 src/language/stats/factor.c:1622
msgid "Correlations"
msgstr "Correlatie"
msgid "Pearson Correlation"
msgstr "Pearson Correlatie"
-#: src/language/stats/correlations.c:218 src/language/stats/oneway.q:686
+#: src/language/stats/correlations.c:218 src/language/stats/oneway.c:1166
#: src/language/stats/t-test.q:753 src/language/stats/t-test.q:924
#: src/language/stats/t-test.q:1011
msgid "Sig. (2-tailed)"
msgstr ""
-#: src/language/stats/correlations.c:218
+#: src/language/stats/correlations.c:218 src/language/stats/factor.c:1634
msgid "Sig. (1-tailed)"
msgstr ""
msgid "Range"
msgstr "Bereik"
-#: src/language/stats/descriptives.c:110 src/language/stats/npar-summary.c:131
-#: src/ui/gui/descriptives-dialog.c:42 src/ui/gui/frequencies-dialog.c:43
-#: src/language/stats/examine.q:1484 src/language/stats/frequencies.q:116
-#: src/language/stats/oneway.q:400
+#: src/language/stats/descriptives.c:110 src/language/stats/npar-summary.c:129
+#: src/language/stats/oneway.c:861 src/ui/gui/descriptives-dialog.c:42
+#: src/ui/gui/frequencies-dialog.c:43 src/language/stats/examine.q:1484
+#: src/language/stats/frequencies.q:116
msgid "Minimum"
msgstr "Minimum"
-#: src/language/stats/descriptives.c:111 src/language/stats/npar-summary.c:134
-#: src/ui/gui/descriptives-dialog.c:43 src/ui/gui/frequencies-dialog.c:44
-#: src/language/stats/examine.q:1489 src/language/stats/frequencies.q:117
-#: src/language/stats/oneway.q:401
+#: src/language/stats/descriptives.c:111 src/language/stats/npar-summary.c:132
+#: src/language/stats/oneway.c:862 src/ui/gui/descriptives-dialog.c:43
+#: src/ui/gui/frequencies-dialog.c:44 src/language/stats/examine.q:1489
+#: src/language/stats/frequencies.q:117
msgid "Maximum"
msgstr "Maximum"
msgid "Mapping of variables to corresponding Z-scores."
msgstr "Mappen van variabelen naar corresponderende Z-scores."
-#: src/language/stats/descriptives.c:559
+#: src/language/stats/descriptives.c:559 src/language/stats/glm.c:304
msgid "Source"
msgstr "Bron"
msgid "Valid cases = %g; cases with missing value(s) = %g."
msgstr "Geldige cases = %g; cases met ontbrekende-waarde(s) = %g."
-#: src/language/stats/sort-cases.c:64
-msgid "Buffer limit must be at least 2."
-msgstr "Bufferlimiet moet tenminste 2 zijn."
-
-#: src/language/stats/sort-criteria.c:74
-msgid "`A' or `D' expected inside parentheses."
-msgstr "'A' of 'D' verwacht binnen haakjes."
-
-#: src/language/stats/sort-criteria.c:79
-msgid "`)' expected."
-msgstr "')' verwacht."
-
-#: src/language/stats/sort-criteria.c:92
-#, c-format
-msgid "Variable %s specified twice in sort criteria."
-msgstr "Variabele %s 2 keer opgegeven in sorteer criteria."
-
-#: src/language/stats/factor.c:803
+#: src/language/stats/factor.c:805
msgid "Factor analysis on a single variable is not useful."
msgstr "Factor analyse op een enkele variabele is niet zinvol."
-#: src/language/stats/factor.c:1206
+#: src/language/stats/factor.c:1208
msgid "Component Number"
msgstr "Component-nummer "
-#: src/language/stats/factor.c:1206
+#: src/language/stats/factor.c:1208
msgid "Factor Number"
msgstr "Factor Nummer"
-#: src/language/stats/factor.c:1237
+#: src/language/stats/factor.c:1239
msgid "Communalities"
msgstr ""
-#: src/language/stats/factor.c:1243
+#: src/language/stats/factor.c:1245
msgid "Initial"
msgstr "Initieel "
-#: src/language/stats/factor.c:1246
+#: src/language/stats/factor.c:1248
msgid "Extraction"
msgstr "Extractie"
-#: src/language/stats/factor.c:1310 src/language/stats/factor.c:1437
+#: src/language/stats/factor.c:1312 src/language/stats/factor.c:1439
msgid "Component"
msgstr "Component"
-#: src/language/stats/factor.c:1315 src/language/stats/factor.c:1439
+#: src/language/stats/factor.c:1317 src/language/stats/factor.c:1441
msgid "Factor"
msgstr "Factor"
-#: src/language/stats/factor.c:1347 src/language/stats/factor.c:1495
+#: src/language/stats/factor.c:1349 src/language/stats/factor.c:1497
#: src/ui/gui/psppire-data-store.c:755 src/ui/gui/psppire-var-store.c:699
#: src/ui/gui/psppire-var-store.c:709 src/ui/gui/psppire-var-store.c:719
#: src/ui/gui/psppire-var-store.c:825
msgid "%d"
msgstr "%d"
-#: src/language/stats/factor.c:1412
+#: src/language/stats/factor.c:1414
msgid "Total Variance Explained"
msgstr ""
-#: src/language/stats/factor.c:1444
+#: src/language/stats/factor.c:1446
msgid "Initial Eigenvalues"
msgstr ""
-#: src/language/stats/factor.c:1450
+#: src/language/stats/factor.c:1452
msgid "Extraction Sums of Squared Loadings"
msgstr ""
-#: src/language/stats/factor.c:1456
+#: src/language/stats/factor.c:1458
msgid "Rotation Sums of Squared Loadings"
msgstr ""
-#: src/language/stats/factor.c:1464
+#: src/language/stats/factor.c:1466
#, no-c-format
msgid "% of Variance"
msgstr "% van Variatie"
-#: src/language/stats/factor.c:1465
+#: src/language/stats/factor.c:1467
msgid "Cumulative %"
msgstr "Cumulatieve %"
-#: src/language/stats/factor.c:1578
+#: src/language/stats/factor.c:1580
msgid "Correlation Matrix"
msgstr "Correlatie-Matrix"
-#: src/language/stats/factor.c:1632
-msgid "Sig. 1-tailed"
-msgstr ""
-
-#: src/language/stats/factor.c:1666
+#: src/language/stats/factor.c:1668
msgid "Determinant"
msgstr "Determinant"
-#: src/language/stats/factor.c:1743
+#: src/language/stats/factor.c:1699
+msgid "The dataset contains no complete observations. No analysis will be performed."
+msgstr ""
+
+#: src/language/stats/factor.c:1751
msgid "Analysis N"
msgstr "Analyses N"
-#: src/language/stats/factor.c:1776
+#: src/language/stats/factor.c:1784
msgid "The FACTOR criteria result in zero factors extracted. Therefore no analysis will be performed."
msgstr ""
-#: src/language/stats/factor.c:1782
+#: src/language/stats/factor.c:1790
msgid "The FACTOR criteria result in more factors than variables, which is not meaningful. No analysis will be performed."
msgstr ""
-#: src/language/stats/factor.c:1865
+#: src/language/stats/factor.c:1873
msgid "Component Matrix"
msgstr "Component-Matrix"
-#: src/language/stats/factor.c:1865
+#: src/language/stats/factor.c:1873
msgid "Factor Matrix"
msgstr "Factor-Matrix:"
-#: src/language/stats/factor.c:1871
+#: src/language/stats/factor.c:1879
msgid "Rotated Component Matrix"
msgstr "Geroteerde componentmatrix"
-#: src/language/stats/factor.c:1871
+#: src/language/stats/factor.c:1879
msgid "Rotated Factor Matrix"
msgstr "Geroteerde factormatrix:"
msgid "Could not create temporary file for FLIP."
msgstr "Kon geen tijdelijk bestand voor FLIP aanmaken."
-#: src/language/stats/flip.c:327
+#: src/language/stats/flip.c:325
#, c-format
msgid "Error rewinding FLIP file: %s."
msgstr "Fout tijdens terugdraaien FLIP bestand: %s."
-#: src/language/stats/flip.c:334
+#: src/language/stats/flip.c:332
msgid "Error creating FLIP source file."
msgstr "Fout tijdens het creëren van FLIP bronbestand."
-#: src/language/stats/flip.c:347
+#: src/language/stats/flip.c:345
#, c-format
msgid "Error reading FLIP file: %s."
msgstr "Fout tijdens lezen FLIP bestand: %s."
-#: src/language/stats/flip.c:349
+#: src/language/stats/flip.c:347
msgid "Unexpected end of file reading FLIP file."
msgstr "Onverwacht einde-bestand tijdens lezen FLIP bestand."
-#: src/language/stats/flip.c:365
+#: src/language/stats/flip.c:363
#, c-format
msgid "Error seeking FLIP source file: %s."
msgstr "Fout tijdens zoeken FLIP bronbestand: %s."
-#: src/language/stats/flip.c:373
+#: src/language/stats/flip.c:371
#, c-format
msgid "Error writing FLIP source file: %s."
msgstr "Fout tijdens schrijven FLIP bronbestand: %s."
-#: src/language/stats/flip.c:384
-#, c-format
-msgid "Error closing FLIP source file: %s."
-msgstr "Fout tijdens sluiten FLIP bronbestand: %s."
-
-#: src/language/stats/flip.c:392
+#: src/language/stats/flip.c:386
#, c-format
msgid "Error rewinding FLIP source file: %s."
msgstr "Fout tijdens terugdraaien FLIP bronbestand: %s."
-#: src/language/stats/flip.c:426
+#: src/language/stats/flip.c:419
#, c-format
msgid "Error reading FLIP temporary file: %s."
msgstr "Fout tijdens lezen FLIP tijdelijk bestand: %s."
-#: src/language/stats/flip.c:429
+#: src/language/stats/flip.c:422
msgid "Unexpected end of file reading FLIP temporary file."
msgstr "Onverwacht einde-bestand tijdens lezen FLIP tijdelijk bestand."
-#: src/language/stats/npar-summary.c:141 src/language/stats/examine.q:1996
-#: src/language/stats/examine.q:2013 src/language/stats/frequencies.q:1050
-#: src/ui/gui/examine.ui:345
-msgid "Percentiles"
-msgstr "Percentiles"
-
-#: src/language/stats/npar-summary.c:145
-msgid "25th"
-msgstr "25ste"
-
-#: src/language/stats/npar-summary.c:148
-msgid "50th (Median)"
-msgstr "50ste (Mediaan)"
-
-#: src/language/stats/npar-summary.c:151
-msgid "75th"
-msgstr "75ste"
+#: src/language/stats/glm.c:108
+#, fuzzy
+msgid "Multivariate analysis is not yet implemented"
+msgstr "%s is nog niet geïmplementeerd."
-#: src/language/stats/roc.c:932
-msgid "Area Under the Curve"
+#: src/language/stats/glm.c:291
+msgid "Tests of Between-Subjects Effects"
msgstr ""
-#: src/language/stats/roc.c:934
+#. TRANSLATORS: The parameter is a roman numeral
+#: src/language/stats/glm.c:307
#, c-format
-msgid "Area Under the Curve (%s)"
+msgid "Type %s Sum of Squares"
msgstr ""
-#: src/language/stats/roc.c:939
-msgid "Area"
+#: src/language/stats/glm.c:309 src/language/stats/oneway.c:754
+#: src/language/stats/regression.q:285
+msgid "Mean Square"
msgstr ""
-#: src/language/stats/roc.c:952 src/language/stats/examine.q:1641
-#: src/language/stats/oneway.q:388 src/language/stats/oneway.q:683
-#: src/language/stats/regression.q:198
-msgid "Std. Error"
-msgstr "Std. Fout"
+#: src/language/stats/glm.c:310 src/language/stats/oneway.c:755
+#: src/language/stats/regression.q:286 src/language/stats/t-test.q:749
+msgid "F"
+msgstr "F"
-#: src/language/stats/roc.c:953
-msgid "Asymptotic Sig."
+#: src/language/stats/glm.c:311 src/language/stats/t-test.q:750
+#: src/language/stats/t-test.q:1103
+msgid "Sig."
msgstr ""
-#: src/language/stats/roc.c:955 src/language/stats/examine.q:1455
-#: src/language/stats/oneway.q:397
-msgid "Lower Bound"
-msgstr "Benedengrens"
+#: src/language/stats/glm.c:314
+msgid "Corrected Model"
+msgstr ""
-#: src/language/stats/roc.c:956 src/language/stats/examine.q:1460
-#: src/language/stats/oneway.q:398
-msgid "Upper Bound"
-msgstr "Bovengrens"
+#: src/language/stats/glm.c:323
+#, fuzzy
+msgid "Intercept"
+msgstr "Percentage"
-#: src/language/stats/roc.c:960
-#, c-format
-msgid "Asymp. %g%% Confidence Interval"
-msgstr "Asymp. %g%% Betrouwbaarheidsinterval"
+#: src/language/stats/glm.c:337
+#, fuzzy
+msgid "Error"
+msgstr "fout"
-#: src/language/stats/roc.c:966
-msgid "Variable under test"
-msgstr ""
+#: src/language/stats/glm.c:350
+#, fuzzy
+msgid "Corrected Total"
+msgstr "Coëfficiënt Totaal: "
+
+#: src/language/stats/kruskal-wallis.c:244 src/language/stats/wilcoxon.c:225
+msgid "Ranks"
+msgstr "Rangschikking"
+
+#: src/language/stats/kruskal-wallis.c:258 src/language/stats/wilcoxon.c:239
+msgid "Mean Rank"
+msgstr ""
+
+#: src/language/stats/npar.c:233 src/language/stats/npar.c:260
+#, fuzzy, c-format
+msgid "The %s subcommand may be given only once."
+msgstr "%s-subopdracht mag maximaal 1 keer gegeven worden."
+
+#: src/language/stats/npar.c:343
+msgid "NPAR subcommand not currently implemented."
+msgstr ""
+
+#: src/language/stats/npar.c:496
+#, c-format
+msgid "The specified value of HI (%d) is lower than the specified value of LO (%d)"
+msgstr "De opgegeven waarde van HI (%d) is lager dan de opgegeven waarde van LO (%d)"
+
+#: src/language/stats/npar.c:551
+#, c-format
+msgid "%d expected values were given, but the specified range (%d-%d) requires exactly %d values."
+msgstr "%d verwachte waardes waren opgegeven, maar het opgegeven bereik (%d-%d) vereist precies %d waardes."
+
+#: src/language/stats/npar.c:690 src/language/stats/t-test.q:380
+#, c-format
+msgid "PAIRED was specified but the number of variables preceding WITH (%zu) did not match the number following (%zu)."
+msgstr "PAIRED was opgegeven maar het aantal variabelen voor WITH (%zu) komt niet overeen met het aantal er achter (%zu)."
+
+#: src/language/stats/npar-summary.c:139 src/language/stats/examine.q:1996
+#: src/language/stats/examine.q:2013 src/language/stats/frequencies.q:1050
+#: src/ui/gui/examine.ui:345
+msgid "Percentiles"
+msgstr "Percentiles"
+
+#: src/language/stats/npar-summary.c:143
+msgid "25th"
+msgstr "25ste"
+
+#: src/language/stats/npar-summary.c:146
+msgid "50th (Median)"
+msgstr "50ste (Mediaan)"
+
+#: src/language/stats/npar-summary.c:149
+msgid "75th"
+msgstr "75ste"
+
+#: src/language/stats/oneway.c:692
+msgid "Number of contrast coefficients must equal the number of groups"
+msgstr ""
+
+#: src/language/stats/oneway.c:701
+#, c-format
+msgid "Coefficients for contrast %zu do not total zero"
+msgstr ""
+
+#: src/language/stats/oneway.c:752 src/language/stats/regression.q:283
+msgid "Sum of Squares"
+msgstr ""
+
+#: src/language/stats/oneway.c:756 src/language/stats/oneway.c:1001
+#: src/language/stats/regression.q:201 src/language/stats/regression.q:287
+msgid "Significance"
+msgstr "Significantie "
+
+#: src/language/stats/oneway.c:774
+msgid "Between Groups"
+msgstr "Tussen groepen"
+
+#: src/language/stats/oneway.c:775
+msgid "Within Groups"
+msgstr "Binnen groepen"
+
+#: src/language/stats/oneway.c:808 src/language/stats/regression.q:312
+msgid "ANOVA"
+msgstr "ANOVA"
+
+#: src/language/stats/oneway.c:849 src/language/stats/oneway.c:1163
+#: src/language/stats/roc.c:975 src/language/stats/examine.q:1641
+#: src/language/stats/regression.q:198
+msgid "Std. Error"
+msgstr "Std. Fout"
+
+#: src/language/stats/oneway.c:855 src/language/stats/examine.q:1449
+#, c-format
+msgid "%g%% Confidence Interval for Mean"
+msgstr ""
+
+#: src/language/stats/oneway.c:858 src/language/stats/roc.c:978
+#: src/language/stats/examine.q:1455
+msgid "Lower Bound"
+msgstr "Benedengrens"
+
+#: src/language/stats/oneway.c:859 src/language/stats/roc.c:979
+#: src/language/stats/examine.q:1460
+msgid "Upper Bound"
+msgstr "Bovengrens"
+
+#: src/language/stats/oneway.c:864 src/language/stats/examine.q:1635
+#: src/ui/gui/descriptives.ui:8 src/ui/gui/examine.ui:319
+msgid "Descriptives"
+msgstr "Descriptieve"
+
+#: src/language/stats/oneway.c:998
+msgid "Levene Statistic"
+msgstr ""
+
+#: src/language/stats/oneway.c:999
+msgid "df1"
+msgstr "df1"
+
+#: src/language/stats/oneway.c:1000
+msgid "df2"
+msgstr "df2"
+
+#: src/language/stats/oneway.c:1003
+msgid "Test of Homogeneity of Variances"
+msgstr ""
+
+#: src/language/stats/oneway.c:1079
+msgid "Contrast Coefficients"
+msgstr "Contrastcoëfficiënten"
+
+#: src/language/stats/oneway.c:1081 src/language/stats/oneway.c:1161
+msgid "Contrast"
+msgstr "Contrast"
+
+#: src/language/stats/oneway.c:1159
+msgid "Contrast Tests"
+msgstr "Contrasttesten"
+
+#: src/language/stats/oneway.c:1162
+msgid "Value of Contrast"
+msgstr ""
+
+#: src/language/stats/oneway.c:1164 src/language/stats/regression.q:200
+#: src/language/stats/t-test.q:751 src/language/stats/t-test.q:922
+#: src/language/stats/t-test.q:1009
+msgid "t"
+msgstr "t"
+
+#: src/language/stats/oneway.c:1216
+msgid "Assume equal variances"
+msgstr "Veronderstelt gelijke variantie"
+
+#: src/language/stats/oneway.c:1220
+msgid "Does not assume equal"
+msgstr "Veronderstelt niet gelijk"
+
+#: src/language/stats/reliability.c:146
+msgid "Reliabilty on a single variable is not useful."
+msgstr "betrouwbaarheids analyse op een enkele variabele is niet zinvol."
+
+#: src/language/stats/reliability.c:506 src/language/stats/examine.q:1159
+msgid "Case Processing Summary"
+msgstr "Case Bewerkingsoverzicht"
+
+#: src/language/stats/reliability.c:529 src/language/stats/crosstabs.q:812
+#: src/language/stats/examine.q:1164
+msgid "Cases"
+msgstr "Cases"
+
+#: src/language/stats/reliability.c:532 src/language/stats/crosstabs.q:813
+#: src/language/stats/examine.q:1103 src/language/stats/frequencies.q:1035
+msgid "Valid"
+msgstr "Geldig"
+
+#: src/language/stats/reliability.c:535
+msgid "Excluded"
+msgstr "Uitgesloten"
+
+#: src/language/stats/reliability.c:543
+msgid "%"
+msgstr "%"
+
+#: src/language/stats/reliability.c:588
+msgid "Item-Total Statistics"
+msgstr "Item-Totaal Statistieken"
+
+#: src/language/stats/reliability.c:610
+msgid "Scale Mean if Item Deleted"
+msgstr ""
+
+#: src/language/stats/reliability.c:613
+msgid "Scale Variance if Item Deleted"
+msgstr ""
+
+#: src/language/stats/reliability.c:616
+msgid "Corrected Item-Total Correlation"
+msgstr ""
+
+#: src/language/stats/reliability.c:619
+msgid "Cronbach's Alpha if Item Deleted"
+msgstr ""
+
+#: src/language/stats/reliability.c:693
+msgid "Reliability Statistics"
+msgstr "Betrouwbaarheids Statistieken"
+
+#: src/language/stats/reliability.c:733 src/language/stats/reliability.c:752
+msgid "Cronbach's Alpha"
+msgstr "Cronbach's Alpha"
+
+#: src/language/stats/reliability.c:736 src/language/stats/reliability.c:761
+#: src/language/stats/reliability.c:772
+msgid "N of Items"
+msgstr "N van Items"
+
+#: src/language/stats/reliability.c:755
+msgid "Part 1"
+msgstr "Deel 1"
+
+#: src/language/stats/reliability.c:766
+msgid "Part 2"
+msgstr "Deel 2"
+
+#: src/language/stats/reliability.c:777
+msgid "Total N of Items"
+msgstr "Totaal N van Items"
+
+#: src/language/stats/reliability.c:780
+msgid "Correlation Between Forms"
+msgstr "Correlatie Tussen Formulieren"
+
+#: src/language/stats/reliability.c:784
+msgid "Spearman-Brown Coefficient"
+msgstr "Spearman-Brown Coefficient"
+
+#: src/language/stats/reliability.c:787
+msgid "Equal Length"
+msgstr "Gelijke lengte"
+
+#: src/language/stats/reliability.c:790
+msgid "Unequal Length"
+msgstr "Ongelijke lengte"
+
+#: src/language/stats/reliability.c:794
+msgid "Guttman Split-Half Coefficient"
+msgstr "Guttman Split-Half Coëfficiënt"
+
+#: src/language/stats/roc.c:955
+msgid "Area Under the Curve"
+msgstr ""
+
+#: src/language/stats/roc.c:957
+#, c-format
+msgid "Area Under the Curve (%s)"
+msgstr ""
-#: src/language/stats/roc.c:1025
+#: src/language/stats/roc.c:962
+msgid "Area"
+msgstr ""
+
+#: src/language/stats/roc.c:976
+msgid "Asymptotic Sig."
+msgstr ""
+
+#: src/language/stats/roc.c:983
+#, c-format
+msgid "Asymp. %g%% Confidence Interval"
+msgstr "Asymp. %g%% Betrouwbaarheidsinterval"
+
+#: src/language/stats/roc.c:989
+msgid "Variable under test"
+msgstr ""
+
+#: src/language/stats/roc.c:1048
msgid "Case Summary"
msgstr "Case Overzicht"
-#: src/language/stats/roc.c:1045
+#: src/language/stats/roc.c:1068
msgid "Unweighted"
msgstr "Niet gewogen"
-#: src/language/stats/roc.c:1046
+#: src/language/stats/roc.c:1069
msgid "Weighted"
msgstr "Gewicht"
-#: src/language/stats/roc.c:1050
+#: src/language/stats/roc.c:1073
msgid "Valid N (listwise)"
msgstr ""
-#: src/language/stats/roc.c:1053
+#: src/language/stats/roc.c:1076
msgid "Positive"
msgstr "Positief"
-#: src/language/stats/roc.c:1054
+#: src/language/stats/roc.c:1077
msgid "Negative"
msgstr "Negatief"
-#: src/language/stats/roc.c:1082
+#: src/language/stats/roc.c:1105
msgid "Coordinates of the Curve"
msgstr ""
-#: src/language/stats/roc.c:1084
+#: src/language/stats/roc.c:1107
#, c-format
msgid "Coordinates of the Curve (%s)"
msgstr ""
-#: src/language/stats/roc.c:1092
+#: src/language/stats/roc.c:1115
msgid "Test variable"
msgstr "Testvariabele(n)"
-#: src/language/stats/roc.c:1094
+#: src/language/stats/roc.c:1117
msgid "Positive if greater than or equal to"
msgstr "Positief als grote dan of gelijk aan"
-#: src/language/stats/roc.c:1095 src/output/charts/roc-chart-cairo.c:38
+#: src/language/stats/roc.c:1118 src/output/charts/roc-chart-cairo.c:38
msgid "Sensitivity"
msgstr "Gevoeligheid"
-#: src/language/stats/roc.c:1096 src/output/charts/roc-chart-cairo.c:37
+#: src/language/stats/roc.c:1119 src/output/charts/roc-chart-cairo.c:37
msgid "1 - Specificity"
msgstr ""
-#: src/language/stats/sign.c:89
+#: src/language/stats/sign.c:90
msgid "Negative Differences"
msgstr "Negatieve Verschillen"
-#: src/language/stats/sign.c:90
+#: src/language/stats/sign.c:91
msgid "Positive Differences"
msgstr "Positieve Verschillen"
-#: src/language/stats/sign.c:91 src/language/stats/wilcoxon.c:259
+#: src/language/stats/sign.c:92 src/language/stats/wilcoxon.c:254
msgid "Ties"
msgstr ""
-#: src/language/stats/sign.c:130 src/language/stats/wilcoxon.c:327
+#: src/language/stats/sign.c:131 src/language/stats/wilcoxon.c:322
msgid "Exact Sig. (2-tailed)"
msgstr ""
-#: src/language/stats/sign.c:133 src/language/stats/wilcoxon.c:328
+#: src/language/stats/sign.c:134 src/language/stats/wilcoxon.c:323
msgid "Exact Sig. (1-tailed)"
msgstr ""
-#: src/language/stats/sign.c:136 src/language/stats/wilcoxon.c:331
+#: src/language/stats/sign.c:137 src/language/stats/wilcoxon.c:326
msgid "Point Probability"
msgstr ""
-#: src/language/stats/wilcoxon.c:230
-msgid "Ranks"
-msgstr "Rangschikking"
+#: src/language/stats/sort-cases.c:64
+msgid "Buffer limit must be at least 2."
+msgstr "Bufferlimiet moet tenminste 2 zijn."
-#: src/language/stats/wilcoxon.c:244
-msgid "Mean Rank"
-msgstr ""
+#: src/language/stats/sort-criteria.c:74
+msgid "`A' or `D' expected inside parentheses."
+msgstr "'A' of 'D' verwacht binnen haakjes."
-#: src/language/stats/wilcoxon.c:245
+#: src/language/stats/sort-criteria.c:79
+msgid "`)' expected."
+msgstr "')' verwacht."
+
+#: src/language/stats/sort-criteria.c:92
+#, c-format
+msgid "Variable %s specified twice in sort criteria."
+msgstr "Variabele %s 2 keer opgegeven in sorteer criteria."
+
+#: src/language/stats/wilcoxon.c:240
msgid "Sum of Ranks"
msgstr "Som van Rangen"
-#: src/language/stats/wilcoxon.c:257
+#: src/language/stats/wilcoxon.c:252
msgid "Negative Ranks"
msgstr "Negatieve Rangen"
-#: src/language/stats/wilcoxon.c:258
+#: src/language/stats/wilcoxon.c:253
msgid "Positive Ranks"
msgstr "Positieve Rangen"
-#: src/language/stats/wilcoxon.c:322
+#: src/language/stats/wilcoxon.c:317
msgid "Z"
msgstr "Z"
-#: src/language/stats/wilcoxon.c:323
+#: src/language/stats/wilcoxon.c:318 src/language/stats/crosstabs.q:1209
msgid "Asymp. Sig. (2-tailed)"
msgstr ""
msgstr "Tenminste 1 variabele moet gespecificeerd worden."
#: src/language/data-io/data-list.c:368 src/language/data-io/data-list.c:457
-#: src/language/data-io/get-data.c:530
+#: src/language/data-io/get-data.c:529
#, c-format
msgid "%s is a duplicate variable name."
msgstr "%s is een dubbele variabelennaam."
msgid "Cannot place variable %s on record %d when RECORDS=%d is specified."
msgstr "Kan variabele %s niet plaatsen in record %d als RECORDS=%d is gespecificeerd."
-#: src/language/data-io/data-parser.c:460
-#: src/language/data-io/data-parser.c:469
+#: src/language/data-io/data-parser.c:458
+#: src/language/data-io/data-parser.c:467
msgid "Quoted string extends beyond end of line."
msgstr "Geciteerde tekenreeks loopt door na regeleinde."
-#: src/language/data-io/data-parser.c:525
+#: src/language/data-io/data-parser.c:515
+#, fuzzy, c-format
+msgid "Data for variable %s is not valid as format %s: %s"
+msgstr "%s variabele %s heeft ongeldig %s opmaak %s."
+
+#: src/language/data-io/data-parser.c:544
#, c-format
msgid "Partial case of %d of %d records discarded."
msgstr "Gedeeltelijke case van %d van %d records genegeerd."
-#: src/language/data-io/data-parser.c:572
+#: src/language/data-io/data-parser.c:601
#, c-format
msgid "Partial case discarded. The first variable missing was %s."
msgstr "Gedeeltelijke case overgeslagen. De eerste gemiste variabele was %s."
-#: src/language/data-io/data-parser.c:610
+#: src/language/data-io/data-parser.c:643
#, c-format
msgid "Missing value(s) for all variables from %s onward. These will be filled with the system-missing value or blanks, as appropriate."
msgstr "Ontbrekende-waarde(s) voor alle variabelen vanaf %s. Deze worden gevuld met de geschikte system-missing waarde of spatie."
-#: src/language/data-io/data-parser.c:630
+#: src/language/data-io/data-parser.c:663
msgid "Record ends in data not part of any field."
msgstr "Record eindigt in gegeven dat geen onderdeel is van een veld."
-#: src/language/data-io/data-parser.c:650 src/language/data-io/print.c:404
+#: src/language/data-io/data-parser.c:683 src/language/data-io/print.c:404
msgid "Record"
msgstr "Record"
-#: src/language/data-io/data-parser.c:651 src/language/data-io/print.c:405
+#: src/language/data-io/data-parser.c:684 src/language/data-io/print.c:405
#: src/ui/gui/psppire-var-sheet.c:541 src/ui/gui/psppire-var-store.c:839
#: src/ui/gui/crosstabs.ui:89
msgid "Columns"
msgstr "Kolommen"
-#: src/language/data-io/data-parser.c:652
-#: src/language/data-io/data-parser.c:689 src/language/data-io/print.c:406
+#: src/language/data-io/data-parser.c:685
+#: src/language/data-io/data-parser.c:722 src/language/data-io/print.c:406
msgid "Format"
msgstr "Indeling"
-#: src/language/data-io/data-parser.c:670
+#: src/language/data-io/data-parser.c:703
#, c-format
msgid "Reading %d record from %s."
msgid_plural "Reading %d records from %s."
msgstr[0] "Lezen %d record van %s."
msgstr[1] "Lezen %d records van %s."
-#: src/language/data-io/data-parser.c:704
+#: src/language/data-io/data-parser.c:737
#, c-format
msgid "Reading free-form data from %s."
msgstr "Lezen vrije-vorm gegeven van %s."
msgid "data file"
msgstr "gegevensbestand"
-#: src/language/data-io/data-reader.c:150
+#: src/language/data-io/data-reader.c:149
#, c-format
-msgid "Could not open \"%s\" for reading as a data file: %s."
-msgstr "Kon \"%s\" niet openen voor het lezen als gegevensbestand: %s."
+msgid "Could not open `%s' for reading as a data file: %s."
+msgstr "Kon '%s' niet openen voor het lezen als gegevensbestand: %s."
-#: src/language/data-io/data-reader.c:192
+#: src/language/data-io/data-reader.c:191
msgid "Unexpected end-of-file while reading data in BEGIN DATA. This probably indicates a missing or misformatted END DATA command. END DATA must appear by itself on a single line with exactly one space between words."
msgstr "Onverwacht einde-bestand tijdens het lezen van gegevens in BEGIN DATA. Dit geeft waarschijnlijk aan dat de END DATA opdracht ontbreekt of verkeerd geschreven is. END DATA dient alleen op één regel met precies één spatie tussen de woorden voor te komen."
-#: src/language/data-io/data-reader.c:217
+#: src/language/data-io/data-reader.c:216
#, c-format
msgid "Error reading file %s: %s."
msgstr "Fout tijdens lezen bestand %s: %s."
-#: src/language/data-io/data-reader.c:220
+#: src/language/data-io/data-reader.c:219
#, c-format
msgid "Unexpected end of file reading %s."
msgstr "Onverwacht einde tijdens lezen van bestand %s."
-#: src/language/data-io/data-reader.c:229
+#: src/language/data-io/data-reader.c:228
#, c-format
msgid "Unexpected end of file in partial record reading %s."
msgstr ""
-#: src/language/data-io/data-reader.c:289
+#: src/language/data-io/data-reader.c:288
#, c-format
msgid "Corrupt block descriptor word at offset 0x%lx in %s."
msgstr ""
-#: src/language/data-io/data-reader.c:290
+#: src/language/data-io/data-reader.c:289
#, c-format
msgid "Corrupt record descriptor word at offset 0x%lx in %s."
msgstr ""
-#: src/language/data-io/data-reader.c:303
+#: src/language/data-io/data-reader.c:302
#, c-format
msgid "Corrupt record size at offset 0x%lx in %s."
msgstr ""
-#: src/language/data-io/data-reader.c:445
+#: src/language/data-io/data-reader.c:444
msgid "Record exceeds remaining block length."
msgstr "Record overschrijdt resterende bloklengte."
-#: src/language/data-io/data-reader.c:519
+#: src/language/data-io/data-reader.c:518
#, c-format
msgid "Attempt to read beyond end-of-file on file %s."
msgstr "Poging om te lezen na einde-bestand in bestand %s."
-#: src/language/data-io/data-reader.c:522
+#: src/language/data-io/data-reader.c:521
msgid "Attempt to read beyond END DATA."
msgstr "Poging om te lezen na END DATA."
-#: src/language/data-io/data-reader.c:708
+#: src/language/data-io/data-reader.c:703
msgid "This command is not valid here since the current input program does not access the inline file."
msgstr "Deze opdracht is hier niet geldig omdat het huidige invoerprogramma het inline-bestand niet benaderd."
-#: src/language/data-io/data-writer.c:74
+#: src/language/data-io/data-writer.c:73
#, c-format
-msgid "An error occurred while opening \"%s\" for writing as a data file: %s."
-msgstr "Een fout is opgetreden tijdens het openen van \"%s\" voor schrijven als gegevensbestand: %s."
+msgid "An error occurred while opening `%s' for writing as a data file: %s."
+msgstr "Een fout is opgetreden tijdens het openen van '%s' voor schrijven als gegevensbestand: %s."
-#: src/language/data-io/data-writer.c:191
+#: src/language/data-io/data-writer.c:190
#, c-format
-msgid "I/O error occurred writing data file \"%s\"."
-msgstr "I/O fout opgetreden tijdens schrijven gegevensbestand \"%s\"."
+msgid "I/O error occurred writing data file `%s'."
+msgstr "I/O fout opgetreden tijdens schrijven gegevensbestand '%s'."
#: src/language/data-io/get-data.c:64
#, c-format
msgid "Unsupported TYPE %s"
msgstr "Niet ondersteund TYPE %s"
-#: src/language/data-io/get-data.c:260
+#: src/language/data-io/get-data.c:259
#, c-format
msgid "%s is allowed only with %s arrangement, but %s arrangement was stated or implied earlier in this command."
msgstr "%s is alleen toegestaan met %s regeling, maar %s regeling was eerder opgegeven of geïmpliceerd in deze opdracht."
-#: src/language/data-io/get-data.c:315
-msgid "expecting FIXED or DELIMITED"
-msgstr "FIXED of DELIMITED verwacht"
-
-#: src/language/data-io/get-data.c:328
+#: src/language/data-io/get-data.c:327
msgid "Value of FIRSTCASE must be 1 or greater."
msgstr "Waarde van FIRSTCASE moet 1 of groter zijn."
-#: src/language/data-io/get-data.c:353
-msgid "expecting LINE or VARIABLES"
-msgstr "LINE of VARIABLES verwacht"
-
-#: src/language/data-io/get-data.c:366
+#: src/language/data-io/get-data.c:365
msgid "Value of FIXCASE must be at least 1."
msgstr "Waarde van FIXCASE moet tenminste 1 zijn."
-#: src/language/data-io/get-data.c:386
+#: src/language/data-io/get-data.c:385
msgid "Value of FIRST must be at least 1."
msgstr "Waarde van FIRST moet tenminste 1 zijn."
-#: src/language/data-io/get-data.c:398
+#: src/language/data-io/get-data.c:397
msgid "Value of PERCENT must be between 1 and 100."
msgstr "Waarde van PERCENT moet tussen 1 en 100 zijn."
-#: src/language/data-io/get-data.c:447
+#: src/language/data-io/get-data.c:446
msgid "In compatible syntax mode, the QUALIFIER string must contain exactly one character."
msgstr "In compatibele syntaxmodus, dient de QUALIFIER tekenreeks precies één teken te bevatten."
-#: src/language/data-io/get-data.c:462
-msgid "expecting VARIABLES"
-msgstr "VARIABLES verwacht"
-
-#: src/language/data-io/get-data.c:484
+#: src/language/data-io/get-data.c:483
#: src/language/data-io/placement-parser.c:378
#, c-format
msgid "The record number specified, %ld, is at or before the previous record, %d. Data fields must be listed in order of increasing record number."
msgstr "Het opgegeven recordnummer, %ld, is op of voor het huidige record, %d. Gegevensvelden dienen opgegeven te worden in oplopende recordnummer volgorde."
-#: src/language/data-io/get-data.c:493
+#: src/language/data-io/get-data.c:492
#, c-format
msgid "The record number specified, %ld, exceeds the number of records per case specified on FIXCASE, %d."
msgstr "Het gespecificeerde recordnummer, %ld, overschrijdt het aantal records per case zoals gespecificeerd in FIXCASE, %d."
-#: src/language/data-io/get.c:99
-msgid "expecting COMM or TAPE"
-msgstr "COMM of TAPE verwacht"
-
#: src/language/data-io/inpt-pgm.c:130
msgid "Unexpected end-of-file within INPUT PROGRAM."
msgstr "Onverwacht einde-bestand binnen INPUT PROGRAM."
msgid "Input program did not create any variables."
msgstr "Invoerprogramma heeft geen variabelen gecreëerd."
-#: src/language/data-io/inpt-pgm.c:288
-msgid "COLUMN subcommand multiply specified."
-msgstr "COLUMN-subopdracht meerdere keren gespecificeerd."
-
#: src/language/data-io/inpt-pgm.c:338
msgid "REREAD: Column numbers must be positive finite numbers. Column set to 1."
msgstr "REREAD: Kolomnummers moeten positieve eindige nummers zijn. Kolom is op 1 gezet."
msgstr[0] "Schrijven van %zu record."
msgstr[1] "Schrijven van %zu records."
-#: src/language/data-io/save.c:223 src/language/data-io/save.c:238
-#: src/language/data-io/save.c:266
+#: src/language/data-io/save-translate.c:164
+#: src/language/data-io/save-translate.c:178
#, c-format
-msgid "expecting %s or %s"
-msgstr "%s of %s verwacht"
+msgid "The %s string must contain exactly one character."
+msgstr "De %s tekenreeks dient exact één teken te bevatten."
+
+#: src/language/data-io/save-translate.c:248
+#, c-format
+msgid "Output file `%s' exists but REPLACE was not specified."
+msgstr ""
#: src/language/data-io/trim.c:88
#, c-format
-msgid "Cannot rename %s as %s because there already exists a variable named %s. To rename variables with overlapping names, use a single RENAME subcommand such as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
-msgstr "Kan %s niet hernoemen naar %s omdat er al een variabele met de naam %s bestaat. Om variabelen met overlappende naam te hernoemen gebruik een enkel RENAME-subopdracht zoals \"/RENAME (A=B)(B=C)(C=A)\", of equivalent achtig, \"/RENAME (A B C=B C A)\"."
+msgid "Cannot rename %s as %s because there already exists a variable named %s. To rename variables with overlapping names, use a single RENAME subcommand such as `/RENAME (A=B)(B=C)(C=A)', or equivalently, `/RENAME (A B C=B C A)'."
+msgstr "Kan %s niet hernoemen naar %s omdat er al een variabele met de naam %s bestaat. Om variabelen met overlappende naam te hernoemen gebruik een enkel RENAME-subopdracht zoals '/RENAME (A=B)(B=C)(C=A)', of equivalent achtig, '/RENAME (A B C=B C A)'."
#: src/language/data-io/trim.c:114
msgid "`=' expected after variable list."
msgid "Cannot DROP all variables from dictionary."
msgstr "Kan niet alle variabelen DROP-en uit woordenboek."
-#: src/language/expressions/evaluate.c:155
+#: src/language/expressions/evaluate.c:149
msgid "expecting number or string"
msgstr "verwacht nummer of tekenreeks"
-#: src/language/expressions/evaluate.c:169
+#: src/language/expressions/evaluate.c:163
#, c-format
msgid "Duplicate variable name %s."
msgstr "Dubbele variabelennaam %s."
-#: src/language/expressions/helpers.c:51
+#: src/language/expressions/helpers.c:38
msgid "One of the arguments to a DATE function is not an integer. The result will be system-missing."
msgstr "Een van de variabelen voor een DATE functie is geen integer. Het resultaat zal system-missing zijn."
-#: src/language/expressions/helpers.c:73
+#: src/language/expressions/helpers.c:66
msgid "The week argument to DATE.WKYR is not an integer. The result will be system-missing."
msgstr "Het week argument voor DATE.WKYR is geen integer. Het resultaat zal system-missing zijn."
-#: src/language/expressions/helpers.c:79
+#: src/language/expressions/helpers.c:72
msgid "The week argument to DATE.WKYR is outside the acceptable range of 1 to 53. The result will be system-missing."
msgstr "Het week argument voor DATE.WKYR is buiten het acceptabele bereik van 1 tot 53. Het resultaat zal system-missing zijn."
-#: src/language/expressions/helpers.c:101
+#: src/language/expressions/helpers.c:94
msgid "The day argument to DATE.YRDAY is not an integer. The result will be system-missing."
msgstr "Het dag argument voor DATE.WKYR is geen integer. Het resultaat zal system-missing zijn."
-#: src/language/expressions/helpers.c:107
+#: src/language/expressions/helpers.c:100
msgid "The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366. The result will be system-missing."
msgstr "Het dag argument voor DATE.WKYR is buiten het acceptabele bereik van 1 tot 366. Het resultaat zal system-missing zijn."
-#: src/language/expressions/helpers.c:129
+#: src/language/expressions/helpers.c:122
msgid "The year argument to YRMODA is greater than 47516. The result will be system-missing."
msgstr "Het jaar argument voor YRMODA is groter dan 47516. Het resultaat zal system-missing zijn."
-#: src/language/expressions/helpers.c:182
+#. TRANSLATORS: Don't translate the the actual unit names `weeks', `days' etc
+#. They must remain in their original English.
+#: src/language/expressions/helpers.c:177
#, c-format
-msgid "Unrecognized date unit \"%.*s\". Valid date units are \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"."
-msgstr "Niet-herkende datum eenheid \"%.*s\". Geldige datum eenheden zijn \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", en \"seconds\"."
+msgid "Unrecognized date unit `%.*s'. Valid date units are `years', `quarters', `months', `weeks', `days', `hours', `minutes', and `seconds'."
+msgstr "Niet-herkende datum eenheid '%.*s'. Geldige datum eenheden zijn 'years', 'quarters', 'months', 'weeks', 'days', 'hours', 'minutes', en 'seconds'."
-#: src/language/expressions/helpers.c:332
-msgid "Invalid DATESUM method. Valid choices are \"closest\" and \"rollover\"."
-msgstr "Ongeldige DATESUM methode. Geldige keuzes zijn \"closest\" en \"rollover\"."
+#: src/language/expressions/helpers.c:327
+msgid "Invalid DATESUM method. Valid choices are `closest' and `rollover'."
+msgstr "Ongeldige DATESUM methode. Geldige keuzes zijn 'closest' en 'rollover'."
#: src/language/expressions/parse.c:259
#, c-format
msgid "Type mismatch: expression has %s type, but a string value is required here."
msgstr "Type ongelijk: expressie heeft type %s, maar een tekenreeks waarde is hier vereist."
-#: src/language/expressions/parse.c:427
+#: src/language/expressions/parse.c:433
#, c-format
msgid "Type mismatch while applying %s operator: cannot convert %s to %s."
msgstr "Type ongelijk tijdens het uitvoeren van %s operator: kan %s niet naar %s converteren."
-#: src/language/expressions/parse.c:643
-msgid "Chaining relational operators (e.g. \"a < b < c\") will not produce the mathematically expected result. Use the AND logical operator to fix the problem (e.g. \"a < b AND b < c\"). If chaining is really intended, parentheses will disable this warning (e.g. \"(a < b) < c\".)"
+#: src/language/expressions/parse.c:649
+msgid "Chaining relational operators (e.g. `a < b < c') will not produce the mathematically expected result. Use the AND logical operator to fix the problem (e.g. `a < b AND b < c'). If chaining is really intended, parentheses will disable this warning (e.g. `(a < b) < c'.)"
msgstr ""
-#: src/language/expressions/parse.c:744
-msgid "The exponentiation operator (\"**\") is left-associative, even though right-associative semantics are more useful. That is, \"a**b**c\" equals \"(a**b)**c\", not as \"a**(b**c)\". To disable this warning, insert parentheses."
+#: src/language/expressions/parse.c:750
+msgid "The exponentiation operator (`**') is left-associative, even though right-associative semantics are more useful. That is, `a**b**c' equals `(a**b)**c', not as `a**(b**c)'. To disable this warning, insert parentheses."
msgstr ""
-#: src/language/expressions/parse.c:809
+#: src/language/expressions/parse.c:815
#, c-format
msgid "Unknown system variable %s."
msgstr "Onbekende systeemvariabele %s."
-#: src/language/expressions/parse.c:857
+#: src/language/expressions/parse.c:863
#, c-format
msgid "Unknown identifier %s."
msgstr "Onbekende herkenningsteken %s."
-#: src/language/expressions/parse.c:892
-msgid "in expression"
-msgstr "in expressie"
-
-#: src/language/expressions/parse.c:1073
+#: src/language/expressions/parse.c:1076
#, c-format
msgid "%s must have at least %d arguments in list."
msgstr "%s heeft tenminste %d argumenten nodig in lijst."
-#: src/language/expressions/parse.c:1082
+#: src/language/expressions/parse.c:1085
#, c-format
-msgid "%s must have even number of arguments in list."
+msgid "%s must have an even number of arguments in list."
msgstr "%s heeft een even aantal argumenten in lijst nodig."
-#: src/language/expressions/parse.c:1085
+#: src/language/expressions/parse.c:1088
#, c-format
msgid "%s must have multiple of %d arguments in list."
msgstr "%s heeft meerdere %d argumenten in lijst nodig."
-#: src/language/expressions/parse.c:1095
+#: src/language/expressions/parse.c:1098
#, c-format
msgid "%s function does not accept a minimum valid argument count."
msgstr "%s functie accepteert geen minimaal geldige argumenten teller."
-#: src/language/expressions/parse.c:1104
+#: src/language/expressions/parse.c:1107
#, c-format
msgid "%s requires at least %d valid arguments in list."
msgstr "%s vereist tenminste %d geldige argumenten in lijst."
-#: src/language/expressions/parse.c:1110
+#: src/language/expressions/parse.c:1113
#, c-format
msgid "With %s, using minimum valid argument count of %d does not make sense when passing only %d arguments in list."
msgstr "Met %s, heeft het gebruik van de minimum geldige argumenttelling van %d geen zin wanneer een lijst van slechts %d wordt doorgegeven."
-#: src/language/expressions/parse.c:1164
+#: src/language/expressions/parse.c:1167
#, c-format
msgid "Type mismatch invoking %s as "
msgstr "Type ongelijk bij aanroep %s als "
-#: src/language/expressions/parse.c:1169
+#: src/language/expressions/parse.c:1172
msgid "Function invocation "
msgstr "Functieaanroep "
-#: src/language/expressions/parse.c:1171
+#: src/language/expressions/parse.c:1174
msgid " does not match any known function. Candidates are:"
msgstr " komt niet overeen met een geldige functie. Kandidaten zijn:"
-#: src/language/expressions/parse.c:1201
+#: src/language/expressions/parse.c:1204
#, c-format
msgid "No function or vector named %s."
msgstr "Geen functie of vector genaamd %s."
-#: src/language/expressions/parse.c:1244
+#: src/language/expressions/parse.c:1247
#, c-format
msgid "expecting `,' or `)' invoking %s function"
msgstr "verwacht ',' of ')' bij aanroep %s functie"
-#: src/language/expressions/parse.c:1264
+#: src/language/expressions/parse.c:1267
#, c-format
msgid "%s is a PSPP extension."
msgstr "%s is een PSPP extensie."
-#: src/language/expressions/parse.c:1273
+#: src/language/expressions/parse.c:1276
#, c-format
msgid "%s may not appear after TEMPORARY."
msgstr "%s mag niet voorkomen na TEMPORARY."
-#: src/libpspp/hash.c:545
-#, c-format
-msgid "hash table:"
-msgstr "hash-tabel:"
-
-#: src/libpspp/message.c:128
-msgid "error"
-msgstr "fout"
-
-#: src/libpspp/message.c:131
-msgid "warning"
-msgstr "waarschuwing"
-
-#: src/libpspp/message.c:135
-msgid "note"
-msgstr "aantekening"
-
-#: src/libpspp/tmpfile.c:56
+#: src/libpspp/ext-array.c:56
msgid "failed to create temporary file"
msgstr "aanmaken van tijdelijk bestand is mislukt"
-#: src/libpspp/tmpfile.c:97
+#: src/libpspp/ext-array.c:96
msgid "seeking in temporary file"
msgstr "zoeken in tijdelijk bestand"
-#: src/libpspp/tmpfile.c:116
+#: src/libpspp/ext-array.c:115
msgid "reading temporary file"
msgstr "lezen tijdelijk bestand"
-#: src/libpspp/tmpfile.c:118
+#: src/libpspp/ext-array.c:117
msgid "unexpected end of file reading temporary file"
msgstr "onverwacht einde-bestand bij het lezen van tijdelijk bestand"
-#: src/libpspp/tmpfile.c:137
+#: src/libpspp/ext-array.c:136
msgid "writing to temporary file"
msgstr "schrijven naar tijdelijk bestand"
+#: src/libpspp/message.c:145
+msgid "error"
+msgstr "fout"
+
+#: src/libpspp/message.c:148
+msgid "warning"
+msgstr "waarschuwing"
+
+#: src/libpspp/message.c:152
+msgid "note"
+msgstr "aantekening"
+
+#: src/libpspp/message.c:251
+#, c-format
+msgid "Notes (%d) exceed limit (%d). Suppressing further notes."
+msgstr "Notities (%d) overschrijdt limiet (%d). Onderdruk verdere notitties."
+
+#: src/libpspp/message.c:259
+#, fuzzy, c-format
+msgid "Warnings (%d) exceed limit (%d). Syntax processing will be halted."
+msgstr "Notities (%d) overschrijdt limiet (%d). Onderdruk verdere notitties."
+
+#: src/libpspp/message.c:262
+#, fuzzy, c-format
+msgid "Errors (%d) exceed limit (%d). Syntax processing will be halted."
+msgstr "Notities (%d) overschrijdt limiet (%d). Onderdruk verdere notitties."
+
#: src/libpspp/zip-writer.c:91
#, c-format
msgid "%s: error opening output file"
msgid "Empirical with averaging"
msgstr "Empirisch met gemiddelde"
-#: src/output/ascii.c:278
+#: src/output/ascii.c:279
#, c-format
msgid "%s: %s must be positive integer or `auto'"
msgstr "%s: %s dient positief integer of 'auto' te zijn"
-#: src/output/ascii.c:311
+#: src/output/ascii.c:312
#, c-format
msgid "ascii: page excluding margins and headers must be at least %d characters wide by %d lines long, but as configured is only %d characters by %d lines"
msgstr "ascii: pagina exclusief marges en koppen moet tenminste %d tekens breed en %d regels lang zijn, maar geconfigureerd is slechts %d tekens bij %d regels"
-#: src/output/ascii.c:360
+#: src/output/ascii.c:361
#, c-format
-msgid "ascii: closing output file \"%s\""
-msgstr "ascii: sluiten uitvoerbestand \"%s\""
+msgid "ascii: closing output file `%s'"
+msgstr "ascii: sluiten uitvoerbestand '%s'"
-#: src/output/ascii.c:503
+#: src/output/ascii.c:504
#, c-format
msgid "See %s for a chart."
msgstr "Zie %s voor een diagram."
-#: src/output/ascii.c:806
+#: src/output/ascii.c:807
#, c-format
-msgid "ascii: opening output file \"%s\""
-msgstr "ascii: openen uitvoerbestand \"%s\""
+msgid "ascii: opening output file `%s'"
+msgstr "ascii: openen uitvoerbestand '%s'"
-#: src/output/ascii.c:913 src/output/cairo.c:784
+#: src/output/ascii.c:914
#, c-format
msgid "%s - Page %d"
msgstr "%s - Pagina %d"
#: src/output/csv.c:87 src/output/html.c:106 src/output/journal.c:93
#: src/output/msglog.c:66
#, c-format
-msgid "error opening output file \"%s\""
-msgstr "fout tijdens openen uitvoerbestand \"%s\""
+msgid "error opening output file `%s'"
+msgstr "fout tijdens openen uitvoerbestand '%s'"
-#: src/output/driver.c:330
+#. TRANSLATORS: Don't translate the words `terminal' or `listing'.
+#: src/output/driver.c:331
#, c-format
-msgid "%s is not a valid device type (the choices are \"terminal\" and \"listing\")"
-msgstr "%s is geen valide apparaattype (de keuzes zijn \"terminal\" en \"listing\")"
+msgid "%s is not a valid device type (the choices are `terminal' and `listing')"
+msgstr "%s is geen valide apparaattype (de keuzes zijn 'terminal' en 'listing')"
-#: src/output/driver.c:343
+#: src/output/driver.c:344
#, c-format
-msgid "%s: unknown option \"%s\""
-msgstr "%s: onbekende optie \"%s\""
+msgid "%s: unknown option `%s'"
+msgstr "%s: onbekende optie '%s'"
#: src/output/html.c:114
msgid "PSPP Output"
msgstr "PSPP-uitvoer"
+#: src/output/html.c:258
+#, fuzzy
+msgid "No description"
+msgstr "Omschrijving"
+
#: src/output/journal.c:67
#, c-format
-msgid "error writing output file \"%s\""
-msgstr "fout bij schrijven van \"%s\""
+msgid "error writing output file `%s'"
+msgstr "fout bij schrijven van '%s'"
#: src/output/measure.c:65
#, c-format
#: src/output/measure.c:248
#, c-format
-msgid "error opening input file \"%s\""
-msgstr "fout tijdens openen \"%s\" "
+msgid "error opening input file `%s'"
+msgstr "fout tijdens openen '%s' "
#: src/output/measure.c:259
#, c-format
-msgid "error reading file \"%s\""
-msgstr "fout tijdens lezen \"%s\""
+msgid "error reading file `%s'"
+msgstr "fout tijdens lezen '%s'"
#: src/output/measure.c:276
#, c-format
-msgid "paper size file \"%s\" does not state a paper size"
-msgstr "papier grootte bestand \"%s\" geeft geen papier grootte aan"
+msgid "paper size file `%s' does not state a paper size"
+msgstr "papier grootte bestand '%s' geeft geen papier grootte aan"
#: src/output/options.c:113
#, c-format
-msgid "%s: \"%s\" is \"%s\" but a Boolean value is required"
-msgstr "%s: \"%s\" is \"%s\" maar een Boolean waarde is noodzakelijk"
+msgid "%s: `%s' is `%s' but a Boolean value is required"
+msgstr "%s: '%s' is '%s' maar een Boolean waarde is noodzakelijk"
#: src/output/options.c:188
#, c-format
-msgid "%s: \"%s\" is \"%s\" but one of the following is required: %s"
-msgstr "%s: \"%s\" is \"%s\" maar een van de volgende is noodzakelijk: %s"
+msgid "%s: `%s' is `%s' but one of the following is required: %s"
+msgstr "%s: '%s' is '%s' maar een van de volgende is noodzakelijk: %s"
#: src/output/options.c:232
#, c-format
-msgid "%s: \"%s\" is \"%s\" but a nonnegative integer is required"
-msgstr "%s: \"%s\" is \"%s\" maar een niet negatieve integer is noodzakelijk"
+msgid "%s: `%s' is `%s' but a nonnegative integer is required"
+msgstr "%s: '%s' is '%s' maar een niet negatieve integer is noodzakelijk"
#: src/output/options.c:236
#, c-format
-msgid "%s: \"%s\" is \"%s\" but a positive integer is required"
-msgstr "%s: \"%s\" is \"%s\" maar een positieve integer is noodzakelijk"
+msgid "%s: `%s' is `%s' but a positive integer is required"
+msgstr "%s: '%s' is '%s' maar een positieve integer is noodzakelijk"
#: src/output/options.c:239
#, c-format
-msgid "%s: \"%s\" is \"%s\" but an integer is required"
-msgstr "%s: \"%s\" is \"%s\" maar een integer is noodzakelijk"
+msgid "%s: `%s' is `%s' but an integer is required"
+msgstr "%s: '%s' is '%s' maar een integer is noodzakelijk"
#: src/output/options.c:242
#, c-format
-msgid "%s: \"%s\" is \"%s\" but an integer greater than %d is required"
-msgstr "%s: \"%s\" is \"%s\" maar een integer groter dan %d is noodzakelijk"
+msgid "%s: `%s' is `%s' but an integer greater than %d is required"
+msgstr "%s: '%s' is '%s' maar een integer groter dan %d is noodzakelijk"
#: src/output/options.c:247
#, c-format
-msgid "%s: \"%s\" is \"%s\" but an integer between %d and %d is required"
-msgstr "%s: \"%s\" is \"%s\" maar een integer tussen %d en %d is noodzakelijk"
+msgid "%s: `%s' is `%s' but an integer between %d and %d is required"
+msgstr "%s: '%s' is '%s' maar een integer tussen %d en %d is noodzakelijk"
#: src/output/options.c:326
#, c-format
-msgid "%s: \"%s\" is \"%s\" but a file name that contains \"#\" is required."
-msgstr "%s: \"%s\" is \"%s\" maar een bestandsnaam die \"#\" bevat is noodzakelijk."
+msgid "%s: `%s' is `%s' but a file name that contains `#' is required."
+msgstr "%s: '%s' is '%s' maar een bestandsnaam die '#' bevat is noodzakelijk."
#: src/output/tab.c:206
#, c-format
msgid "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
msgstr ""
-#: src/output/cairo.c:295
+#: src/output/cairo.c:193
#, c-format
-msgid "error opening output file \"%s\": %s"
-msgstr "fout tijdens openen uitvoerbestand \"%s\": %s"
+msgid "`%s': bad font specification"
+msgstr "'%s': slechte fontspecificatie"
-#: src/output/cairo.c:312
+#: src/output/cairo.c:357
+#, c-format
+msgid "error opening output file `%s': %s"
+msgstr "fout tijdens openen uitvoerbestand '%s': %s"
+
+#: src/output/cairo.c:374
#, c-format
msgid "The defined page is not wide enough to hold at least %d characters in the default font. In fact, there's only room for %d characters."
msgstr "De gedefinieerde pagina is niet breed om ten minste %d tekens in het standaard font te bevatten. In feite is er slechts plaats voor %d tekens."
-#: src/output/cairo.c:322
+#: src/output/cairo.c:384
#, c-format
-msgid "The defined page is not long enough to hold margins and headers, plus least %d lines of the default fonts. In fact, there's only room for %d lines."
-msgstr "De gedefinieerde pagina is niet lang genoeg om marges en koppen, plus tenminste %d regels van het standaard font te bevatten. In feite is er slechts plaats voor %d regels."
+msgid "The defined page is not long enough to hold at least %d lines in the default font. In fact, there's only room for %d lines."
+msgstr "De gedefinieerde pagina is niet lang genoeg om tenminste %d regels van het standaard font te bevatten. In feite is er slechts plaats voor %d regels."
-#: src/output/cairo.c:376
+#: src/output/cairo.c:435
#, c-format
msgid "error drawing output for %s driver: %s"
msgstr "fout tijdens tekenen uitvoer voor %s driver: %s "
-#: src/output/cairo.c:864
+#: src/output/cairo.c:1041
#, c-format
-msgid "\"%s\": bad font specification"
-msgstr "\"%s\": slechte fontspecificatie"
-
-#: src/output/cairo.c:1084
-#, c-format
-msgid "error writing output file \"%s\": %s"
-msgstr "fout tijdens schrijven uitvoerbestand \"%s\": %s"
+msgid "error writing output file `%s': %s"
+msgstr "fout tijdens schrijven uitvoerbestand '%s': %s"
#: src/output/charts/np-plot-cairo.c:37
#, c-format
msgid "Normal Q-Q Plot of %s"
msgstr "Normal Q-Q Plot van %s"
-#: src/output/charts/np-plot-cairo.c:38 src/output/charts/np-plot-cairo.c:66
+#: src/output/charts/np-plot-cairo.c:38 src/output/charts/np-plot-cairo.c:65
msgid "Observed Value"
msgstr "Waargenomen Waarde"
msgid "Detrended Normal Q-Q Plot of %s"
msgstr "Detrended Normal Q-Q Plot van %s"
-#: src/output/charts/np-plot-cairo.c:67
+#: src/output/charts/np-plot-cairo.c:66
msgid "Dev from Normal"
msgstr ""
msgid "Eigenvalue"
msgstr ""
-#: src/output/odt.c:93
+#: src/output/odt.c:94
msgid "error creating temporary file"
msgstr "fout tijdens aanmaken tijdelijk bestand"
-#: src/ui/source-init-opts.c:78
-msgid "Algorithm must be either \"compatible\" or \"enhanced\"."
-msgstr "Algoritme moet of \"compatible\" of \"enhanced\" zijn."
+#: src/ui/source-init-opts.c:80
+msgid "Algorithm must be either `compatible' or `enhanced'."
+msgstr "Algoritme moet of 'compatible' of 'enhanced' zijn."
-#: src/ui/source-init-opts.c:103
-msgid "Syntax must be either \"compatible\" or \"enhanced\"."
-msgstr "Syntax moet of \"compatible\" of \"enhanced\" zijn."
+#: src/ui/source-init-opts.c:107
+msgid "Syntax must be either `compatible' or `enhanced'."
+msgstr "Syntax moet of 'compatible' of 'enhanced' zijn."
-#: src/ui/terminal/main.c:128
+#: src/ui/terminal/main.c:146
msgid "Stopping syntax file processing here to avoid a cascade of dependent command failures."
msgstr "Stop syntaxbestand uitvoering hier om een cascade van afhankelijke opdrachtfouten te voorkomen."
-#: src/ui/terminal/msg-ui.c:127
-#, c-format
-msgid "Notes (%d) exceed limit (%d). Suppressing further notes."
-msgstr "Notities (%d) overschrijdt limiet (%d). Onderdruk verdere notitties."
-
-#: src/ui/terminal/msg-ui.c:135
-#, c-format
-msgid "Warnings (%d) exceed limit (%d)."
-msgstr "Waarschuwingen (%d) overschrijden limiet (%d)."
-
-#: src/ui/terminal/msg-ui.c:138
-#, c-format
-msgid "Errors (%d) exceed limit (%d)."
-msgstr "Fouten (%d) overschrijden limiet (%d)."
-
-#: src/ui/terminal/terminal.c:72
+#: src/ui/terminal/terminal.c:62
#, c-format
msgid "could not access definition for terminal `%s'"
msgstr "kon definitie voor terminal '%s' niet benaderen"
-#: src/ui/terminal/terminal-opts.c:119
+#: src/ui/terminal/terminal-opts.c:120
#, c-format
msgid "%s: output option missing `='"
msgstr "%s: ontbrekende uitvoer-optie '='"
-#: src/ui/terminal/terminal-opts.c:126
+#: src/ui/terminal/terminal-opts.c:127
#, c-format
msgid "%s: output option specified more than once"
msgstr "%s: uitvoer-optie meer dan 1 keer gespecificeerd"
-#: src/ui/gui/checkbox-treeview.c:92 src/language/stats/crosstabs.q:1213
-#: src/language/stats/crosstabs.q:1240 src/language/stats/crosstabs.q:1263
-#: src/language/stats/crosstabs.q:1287 src/language/stats/examine.q:1638
+#: src/ui/terminal/terminal-opts.c:187
+#, c-format
+msgid ""
+"PSPP, a program for statistical analysis of sample data.\n"
+"Usage: %s [OPTION]... FILE...\n"
+"\n"
+"Arguments to long options also apply to equivalent short options.\n"
+"\n"
+"Output options:\n"
+" -o, --output=FILE output to FILE, default format from FILE's name\n"
+" -O format=FORMAT override format for previous -o\n"
+" -O OPTION=VALUE set output option to customize previous -o\n"
+" -O device={terminal|listing} override device type for previous -o\n"
+" -e, --error-file=FILE append errors, warnings, and notes to FILE\n"
+" --no-output disable default output driver\n"
+"Supported output formats: %s\n"
+"\n"
+"Language options:\n"
+" -I, --include=DIR append DIR to search path\n"
+" -I-, --no-include clear search path\n"
+" -r, --no-statrc disable running rc file at startup\n"
+" -a, --algorithm={compatible|enhanced}\n"
+" set to `compatible' if you want output\n"
+" calculated from broken algorithms\n"
+" -x, --syntax={compatible|enhanced}\n"
+" set to `compatible' to disable PSPP extensions\n"
+" -i, --interactive interpret syntax in interactive mode\n"
+" -s, --safer don't allow some unsafe operations\n"
+"Default search path:%s\n"
+"\n"
+"Informative output:\n"
+" -h, --help display this help and exit\n"
+" -V, --version output version information and exit\n"
+"\n"
+"Non-option arguments are interpreted as syntax files to execute.\n"
+msgstr ""
+
+#: src/ui/gui/aggregate-dialog.c:162
+msgid "Aggregate destination file"
+msgstr "Aggregatie doelbestand"
+
+#: src/ui/gui/aggregate-dialog.c:173 src/ui/gui/psppire-data-window.c:403
+#: src/ui/gui/psppire-data-window.c:615
+msgid "System Files (*.sav)"
+msgstr "Systeembestanden (*.sav)"
+
+#: src/ui/gui/aggregate-dialog.c:179 src/ui/gui/psppire-data-window.c:409
+#: src/ui/gui/psppire-data-window.c:621
+msgid "Portable Files (*.por) "
+msgstr "Overdraagbaar (Portable) bestanden (*.por)"
+
+#: src/ui/gui/checkbox-treeview.c:92 src/language/stats/crosstabs.q:1205
+#: src/language/stats/crosstabs.q:1232 src/language/stats/crosstabs.q:1255
+#: src/language/stats/crosstabs.q:1279 src/language/stats/examine.q:1638
msgid "Statistic"
msgstr "Statistiek"
msgid "Chisq"
msgstr "Chisq"
-#: src/ui/gui/crosstabs-dialog.c:42 src/language/stats/crosstabs.q:1774
+#: src/ui/gui/crosstabs-dialog.c:42 src/language/stats/crosstabs.q:1768
msgid "Phi"
msgstr "Phi"
msgid "CC"
msgstr "CC"
-#: src/ui/gui/crosstabs-dialog.c:44 src/language/stats/crosstabs.q:1912
+#: src/ui/gui/crosstabs-dialog.c:44 src/language/stats/crosstabs.q:1906
msgid "Lambda"
msgstr "Lambda"
msgid "Risk"
msgstr ""
-#: src/ui/gui/crosstabs-dialog.c:49 src/language/stats/crosstabs.q:1779
+#: src/ui/gui/crosstabs-dialog.c:49 src/language/stats/crosstabs.q:1773
msgid "Gamma"
msgstr "Gamma"
msgid "D"
msgstr "D"
-#: src/ui/gui/crosstabs-dialog.c:51 src/language/stats/crosstabs.q:1782
+#: src/ui/gui/crosstabs-dialog.c:51 src/language/stats/crosstabs.q:1776
msgid "Kappa"
msgstr "Kappa"
-#: src/ui/gui/crosstabs-dialog.c:52 src/language/stats/crosstabs.q:1916
+#: src/ui/gui/crosstabs-dialog.c:52 src/language/stats/crosstabs.q:1910
msgid "Eta"
msgstr "Eta"
msgid "Adjusted Std. Residual"
msgstr ""
-#: src/ui/gui/descriptives-dialog.c:41 src/ui/gui/frequencies-dialog.c:42
-msgid "Standard deviation"
-msgstr "Standaarddeviatie"
-
#: src/ui/gui/descriptives-dialog.c:46
msgid "Standard error"
msgstr "Standaardfout"
msgid "Median"
msgstr "Mediaan"
-#: src/ui/gui/helper.c:197
-msgid "Sorry. The help system hasn't yet been implemented."
-msgstr "Sorry. Het hulp systeem is nog niet geïmplementeerd."
-
#: src/ui/gui/help-menu.c:67
msgid "A program for the analysis of sampled data"
msgstr "Een programma voor de analyse van bemonsterde gegevens"
#: src/ui/gui/help-menu.c:98
#, c-format
-msgid "Cannot open reference manual: %s. The PSPP user manual is also available at http://www.gnu.org/software/pspp/documentation.html"
-msgstr "Kan de handleiding niet openen: %s. De PSPP gebruikers handleiding is ook beschikbaar op http://www.gnu.org/software/pspp/documentation.html"
+msgid "Cannot open reference manual: %s. The PSPP user manual is also available at %s"
+msgstr "Kan de handleiding niet openen: %s. De PSPP gebruikers handleiding is ook beschikbaar op %s"
#: src/ui/gui/help-menu.c:117
msgid "_Help"
msgid "_Reference Manual"
msgstr "_Handleiding"
+#: src/ui/gui/main.c:99
+#, c-format
+msgid ""
+"PSPPIRE, a GUI for PSPP, a program for statistical analysis of sample data.\n"
+"Usage: %s [OPTION]... FILE\n"
+"\n"
+"Arguments to long options also apply to equivalent short options.\n"
+"\n"
+"GUI options:\n"
+" -q, --no-splash don't show splash screen during startup\n"
+"\n"
+"%sLanguage options:\n"
+" -I, --include=DIR append DIR to search path\n"
+" -I-, --no-include clear search path\n"
+" -a, --algorithm={compatible|enhanced}\n"
+" set to `compatible' if you want output\n"
+" calculated from broken algorithms\n"
+" -x, --syntax={compatible|enhanced}\n"
+" set to `compatible' to disable PSPP extensions\n"
+" -i, --interactive interpret syntax in interactive mode\n"
+" -s, --safer don't allow some unsafe operations\n"
+"Default search path:%s\n"
+"\n"
+"Informative output:\n"
+" -h, --help display this help and exit\n"
+" -V, --version output version information and exit\n"
+"\n"
+"A non-option argument is interpreted as a .sav or .por file to load.\n"
+msgstr ""
+
#: src/ui/gui/missing-val-dialog.c:113 src/ui/gui/missing-val-dialog.c:167
msgid "Incorrect value for variable type"
msgstr "Onjuiste waarde voor variabelentype"
msgid "var"
msgstr "var"
-#: src/ui/gui/psppire-data-window.c:212
+#: src/ui/gui/psppire-data-window.c:213
msgid "Transformations Pending"
msgstr "Transformaties uitstaand"
-#: src/ui/gui/psppire-data-window.c:228
+#: src/ui/gui/psppire-data-window.c:229
msgid "Filter off"
msgstr "Filter uit"
-#: src/ui/gui/psppire-data-window.c:242
+#: src/ui/gui/psppire-data-window.c:243
#, c-format
msgid "Filter by %s"
msgstr "Filter op %s"
-#: src/ui/gui/psppire-data-window.c:263
+#: src/ui/gui/psppire-data-window.c:264
msgid "No Split"
msgstr "Geen splits"
-#: src/ui/gui/psppire-data-window.c:272
+#: src/ui/gui/psppire-data-window.c:273
msgid "Split by "
msgstr "Splits op "
-#: src/ui/gui/psppire-data-window.c:300
+#: src/ui/gui/psppire-data-window.c:301
msgid "Weights off"
msgstr "Weging uit"
-#: src/ui/gui/psppire-data-window.c:314
+#: src/ui/gui/psppire-data-window.c:315
#, c-format
msgid "Weight by %s"
msgstr "Weeg op %s"
-#: src/ui/gui/psppire-data-window.c:382
+#: src/ui/gui/psppire-data-window.c:383
msgid "Open"
msgstr "Open"
-#: src/ui/gui/psppire-data-window.c:392
+#: src/ui/gui/psppire-data-window.c:393
msgid "Data and Syntax Files"
msgstr "Gegevens- en Syntax-bestanden"
-#: src/ui/gui/psppire-data-window.c:402 src/ui/gui/psppire-data-window.c:614
-msgid "System Files (*.sav)"
-msgstr "Systeembestanden (*.sav)"
-
-#: src/ui/gui/psppire-data-window.c:408 src/ui/gui/psppire-data-window.c:620
-msgid "Portable Files (*.por) "
-msgstr "Overdraagbaar (Portable) bestanden (*.por)"
-
-#: src/ui/gui/psppire-data-window.c:414 src/ui/gui/psppire-syntax-window.c:292
+#: src/ui/gui/psppire-data-window.c:415 src/ui/gui/psppire-syntax-window.c:501
msgid "Syntax Files (*.sps) "
msgstr "Syntaxbestanden (*.sps)"
-#: src/ui/gui/psppire-data-window.c:420 src/ui/gui/psppire-data-window.c:626
-#: src/ui/gui/psppire-syntax-window.c:298
+#: src/ui/gui/psppire-data-window.c:421 src/ui/gui/psppire-data-window.c:627
+#: src/ui/gui/psppire-syntax-window.c:507
msgid "All Files"
msgstr "Alle bestanden"
-#: src/ui/gui/psppire-data-window.c:606
+#: src/ui/gui/psppire-data-window.c:607 src/ui/gui/aggregate.ui:448
msgid "Save"
msgstr "Opslaan"
-#: src/ui/gui/psppire-data-window.c:639
+#: src/ui/gui/psppire-data-window.c:640
msgid "Portable File"
msgstr "Overdraagbaar bestand"
-#: src/ui/gui/psppire-data-window.c:776
+#: src/ui/gui/psppire-data-window.c:777
msgid "Font Selection"
msgstr "Font selectie"
-#: src/ui/gui/psppire-data-window.c:1264
+#. TRANSLATORS: This will form a filename. Please avoid whitespace.
+#: src/ui/gui/psppire-data-window.c:1271
+msgid "PSPP-data"
+msgstr ""
+
+#: src/ui/gui/psppire-data-window.c:1272
msgid "Data Editor"
msgstr "Gegevensbewerker"
-#: src/ui/gui/psppire-output-window.c:458
-msgid "Export Output"
-msgstr "Exporteer Uitvoer"
+#. TRANSLATORS: This string must be a valid variable name. That means:
+#. - The string must be at most 64 bytes (not characters) long.
+#. - The string may not contain whitespace.
+#. - The first character may not be '$'
+#. - The first character may not be a digit
+#. - The final charactor may not be '.' or '_'
+#.
+#: src/ui/gui/psppire-dict.c:366
+#, c-format
+msgid "VAR%05d"
+msgstr ""
-#: src/ui/gui/psppire-output-window.c:466
-#, fuzzy
-msgid "PDF Files (*.pdf)"
+#: src/ui/gui/psppire-output-window.c:456
+msgid "Infer file type from extension"
+msgstr ""
+
+#: src/ui/gui/psppire-output-window.c:457
+msgid "PDF (*.pdf)"
msgstr "PDF (*.pdf)"
-#: src/ui/gui/psppire-output-window.c:467
-#, fuzzy
-msgid "HTML Files (*.html)"
+#: src/ui/gui/psppire-output-window.c:458
+msgid "HTML (*.html)"
msgstr "HTML (*.html)"
-#: src/ui/gui/psppire-output-window.c:468
-#, fuzzy
-msgid "OpenDocument Files (*.odt)"
+#: src/ui/gui/psppire-output-window.c:459
+msgid "OpenDocument (*.odt)"
msgstr "OpenDocument (*.odt)"
-#: src/ui/gui/psppire-output-window.c:469
-#, fuzzy
-msgid "Text Files (*.txt)"
+#: src/ui/gui/psppire-output-window.c:460
+msgid "Text (*.txt)"
msgstr "Text (*.txt)"
-#: src/ui/gui/psppire-output-window.c:470
-#, fuzzy
-msgid "PostScript Files (*.ps)"
+#: src/ui/gui/psppire-output-window.c:461
+msgid "PostScript (*.ps)"
msgstr "PostScript (*.ps)"
-#: src/ui/gui/psppire-output-window.c:471
-#, fuzzy
-msgid "Comma-Separated Value Files (*.csv)"
+#: src/ui/gui/psppire-output-window.c:462
+msgid "Comma-Separated Values (*.csv)"
msgstr "Komma-Gescheiden-Waarde (*.csv)"
-#: src/ui/gui/psppire-output-window.c:605
+#: src/ui/gui/psppire-output-window.c:563
+msgid "Export Output"
+msgstr "Exporteer Uitvoer"
+
+#: src/ui/gui/psppire-output-window.c:817
+msgid "failed to create temporary directory"
+msgstr "aanmaken van tijdelijk bestand is mislukt"
+
+#. TRANSLATORS: This will form a filename. Please avoid whitespace.
+#: src/ui/gui/psppire-output-window.c:1048
+msgid "Output"
+msgstr "Uitvoer"
+
+#: src/ui/gui/psppire-output-window.c:1049
msgid "Output Viewer"
msgstr "Uitvoer Viewer"
-#: src/ui/gui/psppire-syntax-window.c:265
+#: src/ui/gui/psppire-syntax-window.c:474
#, c-format
-msgid "Saved file \"%s\""
-msgstr "Opslaan bestand \"%s\""
+msgid "Saved file `%s'"
+msgstr "Opslaan bestand '%s'"
-#: src/ui/gui/psppire-syntax-window.c:284
+#: src/ui/gui/psppire-syntax-window.c:493
msgid "Save Syntax"
msgstr "Sla Syntax op"
-#: src/ui/gui/psppire-syntax-window.c:496
+#. TRANSLATORS: This will form a filename. Please avoid whitespace.
+#: src/ui/gui/psppire-syntax-window.c:745
+msgid "Syntax"
+msgstr "Syntax"
+
+#: src/ui/gui/psppire-syntax-window.c:746
msgid "Syntax Editor"
msgstr "Syntaxbewerker"
-#: src/ui/gui/psppire-syntax-window.c:510
+#: src/ui/gui/psppire-syntax-window.c:760
#, c-format
-msgid "Cannot load syntax file '%s'"
+msgid "Cannot load syntax file `%s'"
msgstr "Kan syntaxbestand '%s' niet laden"
#: src/ui/gui/psppire-var-sheet.c:535 src/ui/gui/psppire-var-store.c:833
-#: src/language/stats/crosstabs.q:1288 src/ui/gui/psppire.ui:2055
+#: src/language/stats/crosstabs.q:1280 src/ui/gui/compute.ui:599
msgid "Type"
msgstr "Type"
#: src/ui/gui/psppire-var-sheet.c:536 src/ui/gui/psppire-var-store.c:834
-#: src/ui/gui/psppire.ui:1974
+#: src/ui/gui/compute.ui:517
msgid "Width"
msgstr "Breedte"
msgstr "Waardes"
#: src/ui/gui/psppire-var-sheet.c:540 src/ui/gui/psppire-var-store.c:838
-#: src/language/stats/crosstabs.q:822 src/language/stats/examine.q:1104
+#: src/language/stats/crosstabs.q:814 src/language/stats/examine.q:1104
#: src/language/stats/frequencies.q:864 src/language/stats/frequencies.q:1036
msgid "Missing"
msgstr "Ontbrekend"
msgid "Custom"
msgstr "Aangepast"
+#: src/ui/gui/psppire-var-store.c:755
+#, c-format
+msgid "{%s,`%s'}_"
+msgstr ""
+
#: src/ui/gui/psppire-window.c:97
#, c-format
msgid "%s %s PSPPIRE %s"
msgstr "%s %s PSPPIRE %s"
-#: src/ui/gui/psppire-window.c:468
+#. TRANSLATORS: This will form a filename. Please avoid whitespace.
+#: src/ui/gui/psppire-window.c:247
+msgid "Untitled"
+msgstr "Zonder titel"
+
+#: src/ui/gui/psppire-window.c:469
#, c-format
-msgid "Save the changes to \"%s\" before closing?"
-msgstr "Opslaan van de aanpassingen in \"%s\" voor het afsluiten?"
+msgid "Save the changes to `%s' before closing?"
+msgstr "Opslaan van de aanpassingen in '%s' voor het afsluiten?"
-#: src/ui/gui/psppire-window.c:475
+#: src/ui/gui/psppire-window.c:476
#, c-format
msgid "If you don't save, changes from the last %ld seconds will be permanently lost."
msgstr "Als u niet opslaat zullen de aanpassingen van de laatste %ld seconden permanent verloren gaan."
-#: src/ui/gui/psppire-window.c:479
+#: src/ui/gui/psppire-window.c:480
msgid "Close _without saving"
msgstr "Sluit _zonder opslaan"
-#: src/ui/gui/recode-dialog.c:911
+#: src/ui/gui/recode-dialog.c:887
msgid "Recode into Different Variables"
msgstr "Hercodeer in Andere Variabelen"
-#: src/ui/gui/recode-dialog.c:914 src/ui/gui/recode.ui:692
+#: src/ui/gui/recode-dialog.c:890 src/ui/gui/recode.ui:692
msgid "Recode into Same Variables"
msgstr "Hercodeer in Zelfde Variabelen"
-#: src/ui/gui/recode-dialog.c:929 src/ui/gui/recode-dialog.c:1025
+#: src/ui/gui/recode-dialog.c:904 src/ui/gui/recode-dialog.c:1000
msgid "New"
msgstr "Nieuw"
-#: src/ui/gui/recode-dialog.c:944 src/ui/gui/recode-dialog.c:1017
+#: src/ui/gui/recode-dialog.c:919 src/ui/gui/recode-dialog.c:992
msgid "Old"
msgstr "Oud"
-#: src/ui/gui/recode-dialog.c:1274
+#: src/ui/gui/recode-dialog.c:1249
msgid "Recode into Different Variables: Old and New Values "
msgstr "Hercodeer in Andere Variabelen: Oude en Nieuwe Waardes "
-#: src/ui/gui/recode-dialog.c:1275
+#: src/ui/gui/recode-dialog.c:1250
msgid "Recode into Same Variables: Old and New Values"
msgstr "Hercodeer in Zelfde Variabelen: Oude en Nieuwe Waardes "
msgid "Exactly %3d cases from the first %3d cases."
msgstr "Precies %3d cases van de eerste %3d cases."
-#: src/ui/gui/select-cases-dialog.c:223
+#: src/ui/gui/select-cases-dialog.c:222
#, c-format
msgid "%d thru %d"
msgstr "%d tot %d"
#: src/ui/gui/text-data-import-dialog.c:461
#, c-format
-msgid "Could not open \"%s\": %s"
-msgstr "Kon \"%s\": %s niet openen"
+msgid "Could not open `%s': %s"
+msgstr "Kon '%s': %s niet openen"
#: src/ui/gui/text-data-import-dialog.c:477
#, c-format
-msgid "Error reading \"%s\": %s"
-msgstr "Fout bij lezen \"%s\": %s"
+msgid "Error reading `%s': %s"
+msgstr "Fout bij lezen '%s': %s"
#: src/ui/gui/text-data-import-dialog.c:480
#, c-format
-msgid "Failed to read \"%s\", because it contains a line over %d bytes long and therefore appears not to be a text file."
-msgstr "Lezen van \"%s\" mislukt omdat het een regel bevat die meer dan %d bytes lang is en daarom is het geen tekstbestand."
+msgid "Failed to read `%s', because it contains a line over %d bytes long and therefore appears not to be a text file."
+msgstr "Lezen van '%s' mislukt omdat het een regel bevat die meer dan %d bytes lang is en daarom is het geen tekstbestand."
#: src/ui/gui/text-data-import-dialog.c:494
#, c-format
-msgid "\"%s\" is empty."
-msgstr "\"%s\" is leeg."
+msgid "`%s' is empty."
+msgstr "'%s' is leeg."
#: src/ui/gui/text-data-import-dialog.c:539
msgid "Import Delimited Text Data"
msgid "Importing Delimited Text Data"
msgstr "Importeren Gescheiden Tekstgegevens"
+#: src/ui/gui/text-data-import-dialog.c:739
+#, c-format
+msgid "Only the first %4d cases"
+msgstr "Alleen de eerste %4d cases"
+
#: src/ui/gui/text-data-import-dialog.c:749
+#, fuzzy, c-format
+msgid "Only the first %3d %% of file (approximately)"
+msgstr "% van bestand (ongeveer)"
+
+#: src/ui/gui/text-data-import-dialog.c:774
msgid ""
"This assistant will guide you through the process of importing data into PSPP from a text file with one line per case, in which fields are separated by tabs, commas, or other delimiters.\n"
"\n"
msgstr "De assistent zal je begeleiden door het proces van het importeren van gegevens in PSPP van een tekstbestand met 1 regel per case, waarin velden zijn gescheiden door tabs, komma's of andere scheidingstekens.\n"
-#: src/ui/gui/text-data-import-dialog.c:755
+#: src/ui/gui/text-data-import-dialog.c:780
#, c-format
msgid "The selected file contains %zu line of text. "
msgid_plural "The selected file contains %zu lines of text. "
msgstr[0] "Het geselecteerde bestand bevat %zu regel tekst. "
msgstr[1] "Het geselecteerde bestand bevat %zu regels tekst. "
-#: src/ui/gui/text-data-import-dialog.c:763
+#: src/ui/gui/text-data-import-dialog.c:788
#, c-format
msgid "The selected file contains approximately %lu line of text. "
msgid_plural "The selected file contains approximately %lu lines of text. "
msgstr[0] "Het geselecteerde bestand bevat ongeveer %lu regel tekst. "
msgstr[1] "Het geselecteerde bestand bevat ongeveer %lu regels tekst. "
-#: src/ui/gui/text-data-import-dialog.c:769
+#: src/ui/gui/text-data-import-dialog.c:794
#, c-format
msgid "Only the first %zu line of the file will be shown for preview purposes in the following screens. "
msgid_plural "Only the first %zu lines of the file will be shown for preview purposes in the following screens. "
msgstr[0] "Alleen de eerste %zu regel van het bestand worden getoond voor voorbeeld doeleinden in de volgende schermen. "
msgstr[1] "Alleen de eerste %zu regels van het bestand worden getoond voor voorbeeld doeleinden in de volgende schermen. "
-#: src/ui/gui/text-data-import-dialog.c:776
+#: src/ui/gui/text-data-import-dialog.c:801
msgid "You may choose below how much of the file should actually be imported."
msgstr "Hieronder kunt u kiezen hoeveel van het bestand daadwerkelijk geïmporteerd moet worden."
-#: src/ui/gui/text-data-import-dialog.c:1523
-#: src/ui/gui/text-data-import-dialog.c:1768
+#: src/ui/gui/text-data-import-dialog.c:884
+msgid "Text"
+msgstr "Tekst"
+
+#: src/ui/gui/text-data-import-dialog.c:1550
+#: src/ui/gui/text-data-import-dialog.c:1794
msgid "This input line has too few separators to fill in this field."
msgstr "Deze invoerregel heeft te weinig scheidingstekens om dit veld te vullen."
-#: src/ui/gui/text-data-import-dialog.c:1759
-#, c-format
-msgid "Field content \"%.*s\" cannot be parsed in format %s."
-msgstr "Veldinhoud \"%.*s\" kan niet opgedeeld worden in opmaak %s."
+#: src/ui/gui/text-data-import-dialog.c:1785
+#, fuzzy, c-format
+msgid "Cannot parse field content `%.*s' as format %s: %s"
+msgstr "Veldinhoud '%.*s' kan niet opgedeeld worden in opmaak %s."
+
+#: src/ui/gui/text-data-import-dialog.c:1938
+msgid "Line"
+msgstr ""
#: src/ui/gui/t-test-options.c:60
#, c-format
msgid "Confidence Interval: %2d %%"
msgstr "Betrouwbaarheidsinterval: %2d %%"
+#: src/ui/gui/val-labs-dialog.c:515
+#, fuzzy, c-format
+msgid "%s = `%s'"
+msgstr "%s & %s"
+
#: src/ui/gui/variable-info-dialog.c:77
#, c-format
msgid "Label: %s\n"
msgid "Weight cases by %s"
msgstr "Weeg cases per %s"
-#: tests/dissect-sysfile.c:571
+#: tests/dissect-sysfile.c:572
#, c-format
msgid "Unrecognized record type 7, subtype %d."
msgstr "Niet-herkend recordtype 7, subtype %d."
-#: tests/dissect-sysfile.c:850
+#: tests/dissect-sysfile.c:851
#, c-format
msgid "%s: Error parsing attribute value %s[%d]"
msgstr "%s: Fout bij het ontleden van attribuut waarde %s[%d]"
-#: tests/dissect-sysfile.c:856
+#: tests/dissect-sysfile.c:857
#, c-format
msgid "%s: Attribute value %s[%d] is not quoted: %s"
msgstr "%s: Attribuut waarde %s[%d] is niet geciteerd: %s"
-#: tests/dissect-sysfile.c:880
+#: tests/dissect-sysfile.c:881
#, c-format
msgid "Bad size %zu for extended number of cases."
msgstr "Onjuiste lengte %zu voor vergroot aantal cases."
-#: tests/dissect-sysfile.c:886
+#: tests/dissect-sysfile.c:887
#, c-format
msgid "Bad count %zu for extended number of cases."
msgstr ""
msgid "WIDTH must be at least 40."
msgstr "WIDTH moet tenminste 40 zijn."
-#: src/language/utilities/set.q:490
+#: src/language/utilities/set.q:494
#, c-format
msgid "FORMAT requires numeric output format as an argument. Specified format %s is of type string."
msgstr "FORMAT vereist numerieke uitvoeropmaak als een argument. Opgegeven opmaak %s is van het type tekenreeks."
-#: src/language/utilities/set.q:707
+#: src/language/utilities/set.q:711
msgid "ISL (32-bit IEEE 754 single, little-endian)"
msgstr "ISL (32-bit IEEE 754 single, little-endian)"
-#: src/language/utilities/set.q:710
+#: src/language/utilities/set.q:714
msgid "ISB (32-bit IEEE 754 single, big-endian)"
msgstr "ISB (32-bit IEEE 754 single, big-endian)"
-#: src/language/utilities/set.q:713
+#: src/language/utilities/set.q:717
msgid "IDL (64-bit IEEE 754 double, little-endian)"
msgstr "IDL (64-bit IEEE 754 double, little-endian)"
-#: src/language/utilities/set.q:716
+#: src/language/utilities/set.q:720
msgid "IDB (64-bit IEEE 754 double, big-endian)"
msgstr "IDB (64-bit IEEE 754 double, big-endian)"
-#: src/language/utilities/set.q:720
+#: src/language/utilities/set.q:724
msgid "VF (32-bit VAX F, VAX-endian)"
msgstr "VF (32-bit VAX F, VAX-endian)"
-#: src/language/utilities/set.q:723
+#: src/language/utilities/set.q:727
msgid "VD (64-bit VAX D, VAX-endian)"
msgstr "VD (64-bit VAX D, VAX-endian)"
-#: src/language/utilities/set.q:726
+#: src/language/utilities/set.q:730
msgid "VG (64-bit VAX G, VAX-endian)"
msgstr "VG (64-bit VAX G, VAX-endian)"
-#: src/language/utilities/set.q:730
+#: src/language/utilities/set.q:734
msgid "ZS (32-bit IBM Z hexadecimal short, big-endian)"
msgstr "ZS (32-bit IBM Z hexadecimal short, big-endian)"
-#: src/language/utilities/set.q:733
+#: src/language/utilities/set.q:737
msgid "ZL (64-bit IBM Z hexadecimal long, big-endian)"
msgstr "ZL (64-bit IBM Z hexadecimal long, big-endian)"
-#: src/language/utilities/set.q:835
+#: src/language/utilities/set.q:839
#, c-format
msgid "%s is %s."
msgstr "%s van %s."
+#: src/language/utilities/set.q:942
+#, c-format
+msgid "Too many PRESERVE commands without a RESTORE: at most %d levels of saved settings are allowed."
+msgstr ""
+
+#: src/language/utilities/set.q:961
+msgid "RESTORE without matching PRESERVE."
+msgstr ""
+
#: src/language/stats/crosstabs.q:289
msgid "Missing mode REPORT not allowed in general mode. Assuming MISSING=TABLE."
msgstr "Missing modus REPORT niet toegestaan in algemene modus. MISSING=TABLE aangenomen."
msgid "Too many cross-tabulation variables or dimensions."
msgstr "Te veel cross-tabulation variabelen of dimensies."
-#: src/language/stats/crosstabs.q:409
-msgid "expecting BY"
-msgstr "BY verwacht"
-
#: src/language/stats/crosstabs.q:466
msgid "VARIABLES must be specified before TABLES."
msgstr "VARIABLES dient voor TABLES gespecificeerd te worden."
-#: src/language/stats/crosstabs.q:504
+#: src/language/stats/crosstabs.q:500
#, c-format
msgid "Maximum value (%ld) less than minimum value (%ld)."
msgstr "Maximumwaarde (%ld) is kleiner dan minimumwaarde (%ld)."
-#: src/language/stats/crosstabs.q:818
+#: src/language/stats/crosstabs.q:810
msgid "Summary."
msgstr "Overzicht."
-#: src/language/stats/crosstabs.q:820 src/language/stats/examine.q:1164
-#: src/language/stats/reliability.q:693
-msgid "Cases"
-msgstr "Cases"
-
-#: src/language/stats/crosstabs.q:821 src/language/stats/examine.q:1103
-#: src/language/stats/frequencies.q:1035 src/language/stats/reliability.q:696
-msgid "Valid"
-msgstr "Geldig"
-
-#: src/language/stats/crosstabs.q:831 src/language/stats/examine.q:1179
+#: src/language/stats/crosstabs.q:823 src/language/stats/examine.q:1179
#: src/language/stats/frequencies.q:815
msgid "Percent"
msgstr "Percentage"
-#: src/language/stats/crosstabs.q:1109
+#: src/language/stats/crosstabs.q:1101
msgid "count"
msgstr "aantal"
-#: src/language/stats/crosstabs.q:1110
+#: src/language/stats/crosstabs.q:1102
msgid "row %"
msgstr "rij %"
-#: src/language/stats/crosstabs.q:1111
+#: src/language/stats/crosstabs.q:1103
msgid "column %"
msgstr "kolom %"
-#: src/language/stats/crosstabs.q:1112
+#: src/language/stats/crosstabs.q:1104
msgid "total %"
msgstr "totaal %"
-#: src/language/stats/crosstabs.q:1113
+#: src/language/stats/crosstabs.q:1105
msgid "expected"
msgstr "verwacht"
-#: src/language/stats/crosstabs.q:1114
+#: src/language/stats/crosstabs.q:1106
msgid "residual"
msgstr "overblijvend"
-#: src/language/stats/crosstabs.q:1115
+#: src/language/stats/crosstabs.q:1107
msgid "std. resid."
msgstr ""
-#: src/language/stats/crosstabs.q:1116
+#: src/language/stats/crosstabs.q:1108
msgid "adj. resid."
msgstr ""
-#: src/language/stats/crosstabs.q:1210
+#: src/language/stats/crosstabs.q:1202
msgid "Chi-square tests."
msgstr "Chi-square tests."
-#: src/language/stats/crosstabs.q:1217
-msgid "Asymp. Sig. (2-sided)"
-msgstr ""
-
-#: src/language/stats/crosstabs.q:1219
-msgid "Exact Sig. (2-sided)"
-msgstr ""
-
-#: src/language/stats/crosstabs.q:1221
-msgid "Exact Sig. (1-sided)"
-msgstr ""
-
-#: src/language/stats/crosstabs.q:1236
+#: src/language/stats/crosstabs.q:1228
msgid "Symmetric measures."
msgstr "Symmetrische metingen."
-#: src/language/stats/crosstabs.q:1242 src/language/stats/crosstabs.q:1290
+#: src/language/stats/crosstabs.q:1234 src/language/stats/crosstabs.q:1282
msgid "Asymp. Std. Error"
msgstr ""
-#: src/language/stats/crosstabs.q:1243 src/language/stats/crosstabs.q:1291
+#: src/language/stats/crosstabs.q:1235 src/language/stats/crosstabs.q:1283
msgid "Approx. T"
msgstr ""
-#: src/language/stats/crosstabs.q:1244 src/language/stats/crosstabs.q:1292
+#: src/language/stats/crosstabs.q:1236 src/language/stats/crosstabs.q:1284
msgid "Approx. Sig."
msgstr ""
-#: src/language/stats/crosstabs.q:1258
+#: src/language/stats/crosstabs.q:1250
msgid "Risk estimate."
msgstr ""
-#: src/language/stats/crosstabs.q:1262
+#: src/language/stats/crosstabs.q:1254
#, c-format
msgid "95%% Confidence Interval"
msgstr "95%% Betrouwbaarheidsinterval"
-#: src/language/stats/crosstabs.q:1265 src/language/stats/t-test.q:756
+#: src/language/stats/crosstabs.q:1257 src/language/stats/t-test.q:756
#: src/language/stats/t-test.q:920 src/language/stats/t-test.q:1013
msgid "Lower"
msgstr "Lager"
-#: src/language/stats/crosstabs.q:1266 src/language/stats/t-test.q:757
+#: src/language/stats/crosstabs.q:1258 src/language/stats/t-test.q:757
#: src/language/stats/t-test.q:921 src/language/stats/t-test.q:1014
msgid "Upper"
msgstr "Hoger"
-#: src/language/stats/crosstabs.q:1283
+#: src/language/stats/crosstabs.q:1275
msgid "Directional measures."
msgstr "Directionele metingen."
-#: src/language/stats/crosstabs.q:1708
+#: src/language/stats/crosstabs.q:1702
msgid "Pearson Chi-Square"
msgstr "Pearson Chi-Square"
-#: src/language/stats/crosstabs.q:1709
+#: src/language/stats/crosstabs.q:1703
msgid "Likelihood Ratio"
msgstr "Waarschijnlijkheidsratio"
-#: src/language/stats/crosstabs.q:1710
+#: src/language/stats/crosstabs.q:1704
msgid "Fisher's Exact Test"
msgstr "Fisher's Exact Test"
-#: src/language/stats/crosstabs.q:1711
+#: src/language/stats/crosstabs.q:1705
msgid "Continuity Correction"
msgstr "Continuïteitscorrectie"
-#: src/language/stats/crosstabs.q:1712
+#: src/language/stats/crosstabs.q:1706
msgid "Linear-by-Linear Association"
msgstr ""
-#: src/language/stats/crosstabs.q:1747 src/language/stats/crosstabs.q:1822
-#: src/language/stats/crosstabs.q:1887
+#: src/language/stats/crosstabs.q:1741 src/language/stats/crosstabs.q:1816
+#: src/language/stats/crosstabs.q:1881
msgid "N of Valid Cases"
msgstr ""
-#: src/language/stats/crosstabs.q:1766 src/language/stats/crosstabs.q:1905
+#: src/language/stats/crosstabs.q:1760 src/language/stats/crosstabs.q:1899
msgid "Nominal by Nominal"
msgstr ""
-#: src/language/stats/crosstabs.q:1767 src/language/stats/crosstabs.q:1906
+#: src/language/stats/crosstabs.q:1761 src/language/stats/crosstabs.q:1900
msgid "Ordinal by Ordinal"
msgstr ""
-#: src/language/stats/crosstabs.q:1768
+#: src/language/stats/crosstabs.q:1762
msgid "Interval by Interval"
msgstr ""
-#: src/language/stats/crosstabs.q:1769
+#: src/language/stats/crosstabs.q:1763
msgid "Measure of Agreement"
msgstr ""
-#: src/language/stats/crosstabs.q:1775
+#: src/language/stats/crosstabs.q:1769
msgid "Cramer's V"
msgstr "Cramer's V"
-#: src/language/stats/crosstabs.q:1776
+#: src/language/stats/crosstabs.q:1770
msgid "Contingency Coefficient"
msgstr ""
-#: src/language/stats/crosstabs.q:1777
+#: src/language/stats/crosstabs.q:1771
msgid "Kendall's tau-b"
msgstr "Kendall's tau-b"
-#: src/language/stats/crosstabs.q:1778
+#: src/language/stats/crosstabs.q:1772
msgid "Kendall's tau-c"
msgstr "Kendall's tau-c"
-#: src/language/stats/crosstabs.q:1780
+#: src/language/stats/crosstabs.q:1774
msgid "Spearman Correlation"
msgstr "Spearman Correlatie"
-#: src/language/stats/crosstabs.q:1781
+#: src/language/stats/crosstabs.q:1775
msgid "Pearson's R"
msgstr "Pearson's R"
-#: src/language/stats/crosstabs.q:1860
+#: src/language/stats/crosstabs.q:1854
#, c-format
msgid "Odds Ratio for %s (%g / %g)"
msgstr ""
-#: src/language/stats/crosstabs.q:1863
+#: src/language/stats/crosstabs.q:1857
#, c-format
msgid "Odds Ratio for %s (%.*s / %.*s)"
msgstr ""
-#: src/language/stats/crosstabs.q:1871
+#: src/language/stats/crosstabs.q:1865
#, c-format
msgid "For cohort %s = %g"
msgstr "Voor cohort %s = %g"
-#: src/language/stats/crosstabs.q:1874
+#: src/language/stats/crosstabs.q:1868
#, c-format
msgid "For cohort %s = %.*s"
msgstr "Voor cohort %s = %.*s"
-#: src/language/stats/crosstabs.q:1907
+#: src/language/stats/crosstabs.q:1901
msgid "Nominal by Interval"
msgstr ""
-#: src/language/stats/crosstabs.q:1913
+#: src/language/stats/crosstabs.q:1907
msgid "Goodman and Kruskal tau"
msgstr "Goodman and Kruskal tau"
-#: src/language/stats/crosstabs.q:1914
+#: src/language/stats/crosstabs.q:1908
msgid "Uncertainty Coefficient"
msgstr "Onzekerheidscoëfficiënt"
-#: src/language/stats/crosstabs.q:1915
+#: src/language/stats/crosstabs.q:1909
msgid "Somers' d"
msgstr "Somers' d"
-#: src/language/stats/crosstabs.q:1921
+#: src/language/stats/crosstabs.q:1915
msgid "Symmetric"
msgstr "Symmetrisch"
-#: src/language/stats/crosstabs.q:1922 src/language/stats/crosstabs.q:1923
+#: src/language/stats/crosstabs.q:1916 src/language/stats/crosstabs.q:1917
#, c-format
msgid "%s Dependent"
msgstr "%s Afhankelijk"
-#: src/language/stats/examine.q:357
+#: src/language/stats/examine.q:356
msgid "Not creating NP plot because data set is empty."
msgstr "Niet aanmaken van NP plot omdat gegevens set leeg is."
msgid "%s and %s are mutually exclusive"
msgstr "%s en %s zijn wederzijds exclusief"
-#: src/language/stats/examine.q:1159 src/language/stats/reliability.q:670
-msgid "Case Processing Summary"
-msgstr "Case Bewerkingsoverzicht"
-
-#: src/language/stats/examine.q:1449 src/language/stats/oneway.q:394
-#, c-format
-msgid "%g%% Confidence Interval for Mean"
-msgstr ""
-
#: src/language/stats/examine.q:1464
msgid "5% Trimmed Mean"
msgstr ""
msgid "Interquartile Range"
msgstr ""
-#: src/language/stats/examine.q:1635 src/language/stats/oneway.q:404
-#: src/ui/gui/descriptives.ui:8 src/ui/gui/examine.ui:319
-msgid "Descriptives"
-msgstr "Descriptieve"
-
#: src/language/stats/examine.q:1821
msgid "Highest"
msgstr "Hoogste"
msgid "Omitting pie chart for %s, which has over 50 unique values."
msgstr ""
-#: src/language/stats/glm.q:247
-msgid "Multivariate GLM not yet supported"
-msgstr "Mutivariante GLM wordt nog niet ondersteund"
-
-#: src/language/stats/means.q:100
-msgid "Missing required subcommand TABLES."
-msgstr "Mis vereiste subopdracht TABLES."
-
-#: src/language/stats/means.q:134
-msgid "TABLES subcommand may not appear more than once."
-msgstr "TABLES-subopdracht mag niet meer dan 1 keer voorkomen."
-
-#: src/language/stats/npar.q:111
-msgid "NPAR subcommand not currently implemented."
-msgstr ""
-
-#: src/language/stats/npar.q:256
-#, c-format
-msgid "The specified value of HI (%d) is lower than the specified value of LO (%d)"
-msgstr "De opgegeven waarde van HI (%d) is lager dan de opgegeven waarde van LO (%d)"
-
-#: src/language/stats/npar.q:311
-#, c-format
-msgid "%d expected values were given, but the specified range (%d-%d) requires exactly %d values."
-msgstr "%d verwachte waardes waren opgegeven, maar het opgegeven bereik (%d-%d) vereist precies %d waardes."
-
-#: src/language/stats/npar.q:453 src/language/stats/t-test.q:380
-#, c-format
-msgid "PAIRED was specified but the number of variables preceding WITH (%zu) did not match the number following (%zu)."
-msgstr "PAIRED was opgegeven maar het aantal variabelen voor WITH (%zu) komt niet overeen met het aantal er achter (%zu)."
-
-#: src/language/stats/oneway.q:170
-msgid "Number of contrast coefficients must equal the number of groups"
-msgstr ""
-
-#: src/language/stats/oneway.q:179
-#, c-format
-msgid "Coefficients for contrast %zu do not total zero"
-msgstr ""
-
-#: src/language/stats/oneway.q:242
-#, c-format
-msgid "`%s' is not a variable name"
-msgstr "'%s' is geen variabelennaam"
-
-#: src/language/stats/oneway.q:274 src/language/stats/regression.q:283
-msgid "Sum of Squares"
-msgstr ""
-
-#: src/language/stats/oneway.q:276 src/language/stats/regression.q:285
-msgid "Mean Square"
-msgstr ""
-
-#: src/language/stats/oneway.q:277 src/language/stats/regression.q:286
-#: src/language/stats/t-test.q:749
-msgid "F"
-msgstr "F"
-
-#: src/language/stats/oneway.q:278 src/language/stats/oneway.q:535
-#: src/language/stats/regression.q:201 src/language/stats/regression.q:287
-msgid "Significance"
-msgstr "Significantie "
-
-#: src/language/stats/oneway.q:300
-msgid "Between Groups"
-msgstr "Tussen groepen"
-
-#: src/language/stats/oneway.q:301
-msgid "Within Groups"
-msgstr "Binnen groepen"
-
-#: src/language/stats/oneway.q:345 src/language/stats/regression.q:312
-msgid "ANOVA"
-msgstr "ANOVA"
-
-#: src/language/stats/oneway.q:532
-msgid "Levene Statistic"
-msgstr ""
-
-#: src/language/stats/oneway.q:533
-msgid "df1"
-msgstr "df1"
-
-#: src/language/stats/oneway.q:534
-msgid "df2"
-msgstr "df2"
-
-#: src/language/stats/oneway.q:537
-msgid "Test of Homogeneity of Variances"
-msgstr ""
-
-#: src/language/stats/oneway.q:603
-msgid "Contrast Coefficients"
-msgstr "Contrastcoëfficiënten"
-
-#: src/language/stats/oneway.q:605 src/language/stats/oneway.q:681
-msgid "Contrast"
-msgstr "Contrast"
-
-#: src/language/stats/oneway.q:679
-msgid "Contrast Tests"
-msgstr "Contrasttesten"
-
-#: src/language/stats/oneway.q:682
-msgid "Value of Contrast"
-msgstr ""
-
-#: src/language/stats/oneway.q:684 src/language/stats/regression.q:200
-#: src/language/stats/t-test.q:751 src/language/stats/t-test.q:922
-#: src/language/stats/t-test.q:1009
-msgid "t"
-msgstr "t"
-
-#: src/language/stats/oneway.q:730
-msgid "Assume equal variances"
-msgstr "Veronderstelt gelijke variantie"
-
-#: src/language/stats/oneway.q:734
-msgid "Does not assume equal"
-msgstr "Veronderstelt niet gelijk"
-
#: src/language/stats/rank.q:220
#, c-format
msgid "%s of %s by %s"
msgid "The dependent variable is equal to the independent variable.The least squares line is therefore Y=X.Standard errors and related statistics may be meaningless."
msgstr ""
-#: src/language/stats/regression.q:891
+#: src/language/stats/regression.q:940
msgid "REGRESSION requires numeric variables."
-msgstr ""
+msgstr "REGRESSION vereist numerieke variabelen."
-#: src/language/stats/regression.q:962
+#: src/language/stats/regression.q:1015
msgid "No valid data found. This command was skipped."
msgstr "Geen geldige gegevens gevonden. Deze opdracht is overgeslagen."
-#: src/language/stats/reliability.q:421
-msgid "Reliability Statistics"
-msgstr "Betrouwbaarheids Statistieken"
-
-#: src/language/stats/reliability.q:462
-msgid "Item-Total Statistics"
-msgstr "Item-Totaal Statistieken"
-
-#: src/language/stats/reliability.q:484
-msgid "Scale Mean if Item Deleted"
-msgstr ""
-
-#: src/language/stats/reliability.q:487
-msgid "Scale Variance if Item Deleted"
-msgstr ""
-
-#: src/language/stats/reliability.q:490
-msgid "Corrected Item-Total Correlation"
-msgstr ""
-
-#: src/language/stats/reliability.q:493
-msgid "Cronbach's Alpha if Item Deleted"
-msgstr ""
-
-#: src/language/stats/reliability.q:543 src/language/stats/reliability.q:562
-msgid "Cronbach's Alpha"
-msgstr "Cronbach's Alpha"
-
-#: src/language/stats/reliability.q:546 src/language/stats/reliability.q:571
-#: src/language/stats/reliability.q:582
-msgid "N of Items"
-msgstr "N van Items"
-
-#: src/language/stats/reliability.q:565
-msgid "Part 1"
-msgstr "Deel 1"
-
-#: src/language/stats/reliability.q:576
-msgid "Part 2"
-msgstr "Deel 2"
-
-#: src/language/stats/reliability.q:587
-msgid "Total N of Items"
-msgstr "Totaal N van Items"
-
-#: src/language/stats/reliability.q:590
-msgid "Correlation Between Forms"
-msgstr "Correlatie Tussen Formulieren"
-
-#: src/language/stats/reliability.q:594
-msgid "Spearman-Brown Coefficient"
-msgstr "Spearman-Brown Coefficient"
-
-#: src/language/stats/reliability.q:597
-msgid "Equal Length"
-msgstr "Gelijke lengte"
-
-#: src/language/stats/reliability.q:600
-msgid "Unequal Length"
-msgstr "Ongelijke lengte"
-
-#: src/language/stats/reliability.q:604
-msgid "Guttman Split-Half Coefficient"
-msgstr "Guttman Split-Half Coëfficiënt"
-
-#: src/language/stats/reliability.q:699
-msgid "Excluded"
-msgstr "Uitgesloten"
-
-#: src/language/stats/reliability.q:707
-msgid "%"
-msgstr "%"
-
#: src/language/stats/t-test.q:190
msgid "Exactly one of TESTVAL, GROUPS and PAIRS subcommands must be specified."
msgstr "Precies 1 van de TESTVAL-, GROUPS- en PAIRS-subopdrachten moet zijn gespecificeerd."
msgid "t-test for Equality of Means"
msgstr ""
-#: src/language/stats/t-test.q:750 src/language/stats/t-test.q:1103
-msgid "Sig."
-msgstr ""
-
#: src/language/stats/t-test.q:754 src/language/stats/t-test.q:1012
msgid "Mean Difference"
msgstr "Gemiddeld verschil"
msgid "The step value %ld is less than 1. The value is being reset to 1."
msgstr "De stap waarde %ld is kleiner dan 1. De waarde is op 1 gezet."
+#: src/ui/gui/aggregate.ui:7
+msgid "Aggregate Data"
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:100
+msgid "_Break variable(s)"
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:136
+msgid "Variable Name: "
+msgstr "Variabelenaam: "
+
+#: src/ui/gui/aggregate.ui:161
+msgid "Variable Label: "
+msgstr "Variabelelabels: "
+
+#: src/ui/gui/aggregate.ui:190
+msgid "Function: "
+msgstr "Functie: "
+
+#: src/ui/gui/aggregate.ui:253
+msgid "Argument 1: "
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:282
+msgid "Argument 2: "
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:328
+msgid "Aggregated variables"
+msgstr "Geaggregeerde variabele(n)"
+
+#: src/ui/gui/aggregate.ui:362
+msgid "_Add aggregated variables to the active dataset"
+msgstr "_Voeg geaggregeerde variabelen toe aan de actieve dataset "
+
+#: src/ui/gui/aggregate.ui:376
+msgid "_Replace the current dataset with the aggregated variables"
+msgstr "_Vervang de huidige dataset met de geaggregeerde variabelen"
+
+#: src/ui/gui/aggregate.ui:391
+msgid "_Write a new data file containing only the aggregated variables"
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:428
+msgid "label"
+msgstr "label"
+
+#: src/ui/gui/aggregate.ui:472
+msgid "File is _already sorted on break variable(s)"
+msgstr "Bestand is _al gesorteerd op break variabele(n)."
+
+#: src/ui/gui/aggregate.ui:487
+msgid "Sort file before a_ggregating"
+msgstr ""
+
+#: src/ui/gui/aggregate.ui:508
+msgid "Options for very large datasets"
+msgstr ""
+
#: src/ui/gui/binomial.ui:57 src/ui/gui/chi-square.ui:57
msgid "_Test Variable List:"
msgstr "Testvariabelelijst:"
msgid "Test _Proportion:"
msgstr ""
+#: src/ui/gui/compute.ui:8
+msgid "Compute Variable"
+msgstr "Berekenvariabele"
+
+#: src/ui/gui/compute.ui:41
+msgid "Target Variable:"
+msgstr "Doelvariabele:"
+
+#: src/ui/gui/compute.ui:70
+msgid "Type & Label"
+msgstr "Type & Label"
+
+#: src/ui/gui/compute.ui:117
+msgid "="
+msgstr "="
+
+#: src/ui/gui/compute.ui:171
+msgid "Numeric Expressions:"
+msgstr "Numerieke Expressies:"
+
+#: src/ui/gui/compute.ui:233
+msgid "Functions:"
+msgstr "Functies:"
+
+#: src/ui/gui/compute.ui:298 src/ui/gui/recode.ui:741
+#: src/ui/gui/select-cases.ui:378
+msgid "If..."
+msgstr "Als..."
+
+#: src/ui/gui/compute.ui:351
+msgid "Compute Variable: Type and Label"
+msgstr "Bereken variabele: Type en Label"
+
+#: src/ui/gui/compute.ui:386
+msgid "Use expression as label"
+msgstr "Gebruik expressie als label"
+
#: src/ui/gui/correlation.ui:7
msgid "Bivariate Correlations"
msgstr "Bivariate Correlaties"
msgid "Missing Values"
msgstr "Ontbrekende waardes"
-#: src/ui/gui/factor.ui:21
+#: src/ui/gui/goto-case.ui:8
+msgid "Goto Case"
+msgstr "Ga naar case"
+
+#: src/ui/gui/goto-case.ui:26
+msgid "Goto Case Number:"
+msgstr "Ga naar Case Nummer:"
+
+#: src/ui/gui/factor.ui:22
+msgid "Principal Components Analysis"
+msgstr ""
+
+#: src/ui/gui/factor.ui:26
+msgid "Principal Axis Factoring"
+msgstr ""
+
+#: src/ui/gui/factor.ui:29
msgid "Factor Analysis"
msgstr "Factoranalyse"
-#: src/ui/gui/factor.ui:47
+#: src/ui/gui/factor.ui:55
msgid "_Descriptives..."
msgstr "_Descriptieven..."
-#: src/ui/gui/factor.ui:60
+#: src/ui/gui/factor.ui:68
msgid "_Extraction..."
msgstr "_Extractie..."
-#: src/ui/gui/factor.ui:74
+#: src/ui/gui/factor.ui:82
msgid "_Rotations..."
msgstr "_Rotaties..."
-#: src/ui/gui/factor.ui:192
+#: src/ui/gui/factor.ui:200
msgid "Factor Analysis: Extraction"
msgstr ""
-#: src/ui/gui/factor.ui:216
+#: src/ui/gui/factor.ui:224
msgid "Method: "
msgstr "Methode:"
-#: src/ui/gui/factor.ui:266
+#: src/ui/gui/factor.ui:274
msgid "Correlation matrix"
msgstr "Correlatie-matrix"
-#: src/ui/gui/factor.ui:280
+#: src/ui/gui/factor.ui:288
msgid "Covariance matrix"
msgstr "Covariantie-matrix"
-#: src/ui/gui/factor.ui:300
+#: src/ui/gui/factor.ui:308
msgid "Analyse"
msgstr "Analyseer"
-#: src/ui/gui/factor.ui:324
+#: src/ui/gui/factor.ui:332
msgid "Unrotatated factor solution"
msgstr ""
-#: src/ui/gui/factor.ui:338
+#: src/ui/gui/factor.ui:346
msgid "Scree plot"
msgstr ""
-#: src/ui/gui/factor.ui:357 src/ui/gui/roc.ui:286
+#: src/ui/gui/factor.ui:365 src/ui/gui/roc.ui:286
msgid "Display"
msgstr "Scherm"
-#: src/ui/gui/factor.ui:430
+#: src/ui/gui/factor.ui:438
msgid "Number of factors:"
msgstr "Aantal factoren:"
-#: src/ui/gui/factor.ui:460
+#: src/ui/gui/factor.ui:468
msgid "Extract"
msgstr ""
-#: src/ui/gui/factor.ui:475 src/ui/gui/factor.ui:665
+#: src/ui/gui/factor.ui:483 src/ui/gui/factor.ui:673
msgid "Maximum iterations for convergence:"
msgstr "Maximaal aantal iteraties voor convergentie:"
-#: src/ui/gui/factor.ui:538
+#: src/ui/gui/factor.ui:546
msgid "Factor Analysis: Rotation"
msgstr "Factoranalyse: Rotatie"
-#: src/ui/gui/factor.ui:571
+#: src/ui/gui/factor.ui:579
msgid "_None"
msgstr "_Geen"
-#: src/ui/gui/factor.ui:582
+#: src/ui/gui/factor.ui:590
msgid "_Varimax"
msgstr ""
-#: src/ui/gui/factor.ui:598
+#: src/ui/gui/factor.ui:606
msgid "_Quartimax"
msgstr ""
-#: src/ui/gui/factor.ui:614
+#: src/ui/gui/factor.ui:622
msgid "_Equimax"
msgstr ""
-#: src/ui/gui/factor.ui:637
+#: src/ui/gui/factor.ui:645
msgid "Method"
msgstr "Methode"
-#: src/ui/gui/factor.ui:648
+#: src/ui/gui/factor.ui:656
msgid "_Display rotated solution"
msgstr "_Toon geroteerde oplossing"
msgid "Dependent _Variable(s):"
msgstr "Afhankelijke _Variabel(en):"
-#: src/ui/gui/oneway.ui:184 src/ui/gui/data-editor.ui:328
+#: src/ui/gui/oneway.ui:184 src/ui/gui/data-editor.ui:332
msgid "_Descriptives"
msgstr "_Descriptieven"
msgstr "Naam Variabele:"
#: src/ui/gui/psppire.ui:383
-msgid "Split File"
-msgstr "Splits bestand"
-
-#: src/ui/gui/psppire.ui:443
-msgid "Analyze all cases. Do not create groups."
-msgstr "Analyseer alle cases. Creëer geen groepen."
-
-#: src/ui/gui/psppire.ui:459
-msgid "Compare groups."
-msgstr "Vergelijk groepen."
-
-#: src/ui/gui/psppire.ui:475
-msgid "Organize output by groups."
-msgstr "Organiseer uitvoer per groepen."
-
-#: src/ui/gui/psppire.ui:533
-msgid "Groups based on:"
-msgstr "Groepen gebaseerd op:"
-
-#: src/ui/gui/psppire.ui:592
-msgid "Sort the file by grouping variables."
-msgstr "Sorteer bestand op groeperingsvariabelen."
-
-#: src/ui/gui/psppire.ui:609
-msgid "File is already sorted."
-msgstr "Bestand is al gesorteerd."
-
-#: src/ui/gui/psppire.ui:662
-msgid "Current Status : "
-msgstr "Huidige Status : "
-
-#: src/ui/gui/psppire.ui:673
-msgid "Analysis by groups is off"
-msgstr "Analyseer per groep is uit"
-
-#: src/ui/gui/psppire.ui:709
-msgid "Compute Variable"
-msgstr "Berekenvariabele"
-
-#: src/ui/gui/psppire.ui:742
-msgid "Target Variable:"
-msgstr "Doelvariabele:"
-
-#: src/ui/gui/psppire.ui:771
-msgid "Type & Label"
-msgstr "Type & Label"
-
-#: src/ui/gui/psppire.ui:818
-msgid "="
-msgstr "="
-
-#: src/ui/gui/psppire.ui:872
-msgid "Numeric Expressions:"
-msgstr "Numerieke Expressies:"
-
-#: src/ui/gui/psppire.ui:934
-msgid "Functions:"
-msgstr "Functies:"
-
-#: src/ui/gui/psppire.ui:999 src/ui/gui/psppire.ui:1422
-#: src/ui/gui/recode.ui:741
-msgid "If..."
-msgstr "Als..."
-
-#: src/ui/gui/psppire.ui:1052
-msgid "Select Cases"
-msgstr "Selecteer cases"
-
-#: src/ui/gui/psppire.ui:1240
-msgid "Use filter variable"
-msgstr "Gebruik filtervariabele"
-
-#: src/ui/gui/psppire.ui:1299
-msgid "Based on time or case range"
-msgstr "Gebaseerd op tijd of case bereik"
-
-#: src/ui/gui/psppire.ui:1311
-msgid "Range..."
-msgstr "Bereik..."
-
-#: src/ui/gui/psppire.ui:1355
-msgid "Random sample of cases"
-msgstr "Willekeurige steekproef van cases"
-
-#: src/ui/gui/psppire.ui:1368
-msgid "Sample..."
-msgstr "Steekproef..."
-
-#: src/ui/gui/psppire.ui:1410
-msgid "If condition is satisfied"
-msgstr "Aan If conditie is voldaan"
-
-#: src/ui/gui/psppire.ui:1462
-msgid "All Cases"
-msgstr "Alle Cases"
-
-#: src/ui/gui/psppire.ui:1477
-msgid "Select"
-msgstr "Selecteer"
-
-#: src/ui/gui/psppire.ui:1504
-msgid "Filtered"
-msgstr "Gefilterd"
-
-#: src/ui/gui/psppire.ui:1520
-msgid "Deleted"
-msgstr "Verwijderd"
-
-#: src/ui/gui/psppire.ui:1543
-msgid "Unselected Cases Are"
-msgstr "Niet geselecteerde Cases zijn"
-
-#: src/ui/gui/psppire.ui:1585
msgid "Data File Comments"
msgstr "Gegevensbestand _commentaren"
-#: src/ui/gui/psppire.ui:1609
+#: src/ui/gui/psppire.ui:407
msgid "Comments:"
msgstr "Commentaren:"
-#: src/ui/gui/psppire.ui:1650
+#: src/ui/gui/psppire.ui:448
msgid "Display comments in output"
msgstr "Toon commentaren in uitvoer"
-#: src/ui/gui/psppire.ui:1669
+#: src/ui/gui/psppire.ui:467
msgid "Column Number: 0"
msgstr "Kolomnummer: 0"
-#: src/ui/gui/psppire.ui:1703
-msgid "Select Cases: Range"
-msgstr "Selecteer cases: Reeks"
-
-#: src/ui/gui/psppire.ui:1750
-msgid "First case"
-msgstr "Eerste case"
-
-#: src/ui/gui/psppire.ui:1763
-msgid "Last case"
-msgstr "Laatste case"
-
-#: src/ui/gui/psppire.ui:1776
-msgid "Observation"
-msgstr "Observatie"
-
-#: src/ui/gui/psppire.ui:1808
-msgid "Compute Variable: Type and Label"
-msgstr "Bereken variabele: Type en Label"
-
-#: src/ui/gui/psppire.ui:1843
-msgid "Use expression as label"
-msgstr "Gebruik expressie als label"
-
-#: src/ui/gui/psppire.ui:2088
-msgid "Goto Case"
-msgstr "Ga naar case"
-
-#: src/ui/gui/psppire.ui:2106
-msgid "Goto Case Number:"
-msgstr "Ga naar Case Nummer:"
-
-#: src/ui/gui/psppire.ui:2149
-msgid "Select Cases: Random Sample"
-msgstr "Selecteer cases: Aselecte steekproef"
-
-#: src/ui/gui/psppire.ui:2247
-msgid "Sample Size"
-msgstr "Steekproef Grootte"
-
#: src/ui/gui/rank.ui:8
msgid "Rank Cases"
msgstr "Rangschik Cases"
msgid "Sort Order"
msgstr "Sorteervolgorde"
+#: src/ui/gui/split-file.ui:8
+msgid "Split File"
+msgstr "Splits bestand"
+
+#: src/ui/gui/split-file.ui:68
+msgid "Analyze all cases. Do not create groups."
+msgstr "Analyseer alle cases. Creëer geen groepen."
+
+#: src/ui/gui/split-file.ui:84
+msgid "Compare groups."
+msgstr "Vergelijk groepen."
+
+#: src/ui/gui/split-file.ui:100
+msgid "Organize output by groups."
+msgstr "Organiseer uitvoer per groepen."
+
+#: src/ui/gui/split-file.ui:158
+msgid "Groups based on:"
+msgstr "Groepen gebaseerd op:"
+
+#: src/ui/gui/split-file.ui:217
+msgid "Sort the file by grouping variables."
+msgstr "Sorteer bestand op groeperingsvariabelen."
+
+#: src/ui/gui/split-file.ui:234
+msgid "File is already sorted."
+msgstr "Bestand is al gesorteerd."
+
+#: src/ui/gui/split-file.ui:287
+msgid "Current Status : "
+msgstr "Huidige Status : "
+
+#: src/ui/gui/split-file.ui:298
+msgid "Analysis by groups is off"
+msgstr "Analyseer per groep is uit"
+
#: src/ui/gui/recode.ui:185 src/ui/gui/recode.ui:467
msgid "System Missing"
msgstr "Ontbrekende waarde"
msgstr "Nieuwe Waarde"
#: src/ui/gui/recode.ui:596
-msgid "Convert numeric strings to numbers ('5' -> 5)"
+msgid "Convert numeric strings to numbers (`5' -> 5)"
msgstr "Converteer numerieke tekenreeksen naar nummers ('5' -> 5)"
#: src/ui/gui/recode.ui:614
msgid "Regression: Statistics"
msgstr "Regressie: Statistieken"
-#: src/ui/gui/reliability.ui:27
+#: src/ui/gui/reliability.ui:26
msgid "Reliability Analysis"
msgstr "Betrouwbaarheids Analyses"
-#: src/ui/gui/reliability.ui:114
+#: src/ui/gui/reliability.ui:124
msgid "_Items:"
msgstr "_Items:"
-#: src/ui/gui/reliability.ui:136
+#: src/ui/gui/reliability.ui:141
msgid "Model:\t"
msgstr "Model:\t"
-#: src/ui/gui/reliability.ui:175
+#: src/ui/gui/reliability.ui:180
msgid "Variables in first split:"
msgstr "Variabelen in eerste splitsing:"
+#: src/ui/gui/reliability.ui:217
+msgid "Show descriptives for scale if _item is deleted"
+msgstr ""
+
#: src/ui/gui/roc.ui:115
msgid "_Test Variable:"
msgstr "Testvariabele:"
msgid "_Coordinate points of the ROC Curve"
msgstr ""
+#: src/ui/gui/select-cases.ui:8
+msgid "Select Cases"
+msgstr "Selecteer cases"
+
+#: src/ui/gui/select-cases.ui:196
+msgid "Use filter variable"
+msgstr "Gebruik filtervariabele"
+
+#: src/ui/gui/select-cases.ui:255
+msgid "Based on time or case range"
+msgstr "Gebaseerd op tijd of case bereik"
+
+#: src/ui/gui/select-cases.ui:267
+msgid "Range..."
+msgstr "Bereik..."
+
+#: src/ui/gui/select-cases.ui:311
+msgid "Random sample of cases"
+msgstr "Willekeurige steekproef van cases"
+
+#: src/ui/gui/select-cases.ui:324
+msgid "Sample..."
+msgstr "Steekproef..."
+
+#: src/ui/gui/select-cases.ui:366
+msgid "If condition is satisfied"
+msgstr "Aan If conditie is voldaan"
+
+#: src/ui/gui/select-cases.ui:418
+msgid "All Cases"
+msgstr "Alle Cases"
+
+#: src/ui/gui/select-cases.ui:433
+msgid "Select"
+msgstr "Selecteer"
+
+#: src/ui/gui/select-cases.ui:460
+msgid "Filtered"
+msgstr "Gefilterd"
+
+#: src/ui/gui/select-cases.ui:476
+msgid "Deleted"
+msgstr "Verwijderd"
+
+#: src/ui/gui/select-cases.ui:499
+msgid "Unselected Cases Are"
+msgstr "Niet geselecteerde Cases zijn"
+
+#: src/ui/gui/select-cases.ui:541
+msgid "Select Cases: Range"
+msgstr "Selecteer cases: Reeks"
+
+#: src/ui/gui/select-cases.ui:590
+msgid "First case"
+msgstr "Eerste case"
+
+#: src/ui/gui/select-cases.ui:603
+msgid "Last case"
+msgstr "Laatste case"
+
+#: src/ui/gui/select-cases.ui:616
+msgid "Observation"
+msgstr "Observatie"
+
+#: src/ui/gui/select-cases.ui:648
+msgid "Select Cases: Random Sample"
+msgstr "Selecteer cases: Aselecte steekproef"
+
+#: src/ui/gui/select-cases.ui:746
+msgid "Sample Size"
+msgstr "Steekproef Grootte"
+
#: src/ui/gui/t-test.ui:8
msgid "Independent-Samples T Test"
msgstr "Independent-Samples T Test"
" \n"
"Het geselecteerde bestand bevat N regels tekst. Alleen de eerste M hiervan zullen getoond worden voor voorbeeld doeleinden in de volgende schermen. Je kunt hieronder kiezen hoeveel van het bestand daadwerkelijk geïmporteerd moet worden."
-#: src/ui/gui/text-data-import.ui:52
+#: src/ui/gui/text-data-import.ui:95
msgid "All cases"
msgstr "Alle cases"
-#: src/ui/gui/text-data-import.ui:71 src/ui/gui/text-data-import.ui:128
-msgid "Only first "
-msgstr "Alleen eerste "
-
-#: src/ui/gui/text-data-import.ui:106
-msgid " cases"
-msgstr " cases"
-
-#: src/ui/gui/text-data-import.ui:162
-msgid "% of file (approximately)"
-msgstr "% van bestand (ongeveer)"
-
-#: src/ui/gui/text-data-import.ui:183
+#: src/ui/gui/text-data-import.ui:116
msgid "<b>Amount to Import</b>"
msgstr "<b>Aantal te Importeren</b>"
-#: src/ui/gui/text-data-import.ui:202
+#: src/ui/gui/text-data-import.ui:135
msgid "Select Data to Import"
msgstr "Selecteer Gegevens om te Importeren"
-#: src/ui/gui/text-data-import.ui:213
+#: src/ui/gui/text-data-import.ui:146
msgid "Select the first line of the data file that contains data."
msgstr "Selecteer de eerste regel van het gegevensbestand die gegevens bevat."
-#: src/ui/gui/text-data-import.ui:241
+#: src/ui/gui/text-data-import.ui:174
msgid "Line above selected line contains variable names"
msgstr "De regel boven de geselecteerde gegevensregel bevat de variabelennamen"
-#: src/ui/gui/text-data-import.ui:259
+#: src/ui/gui/text-data-import.ui:192
msgid "Choose Separators"
msgstr "Kies scheidingstekens"
-#: src/ui/gui/text-data-import.ui:305
+#: src/ui/gui/text-data-import.ui:238
msgid "C_ustom"
msgstr ""
-#: src/ui/gui/text-data-import.ui:320
+#: src/ui/gui/text-data-import.ui:253
msgid "Slas_h (/)"
msgstr "Sc_huine streep (/)"
-#: src/ui/gui/text-data-import.ui:337
+#: src/ui/gui/text-data-import.ui:270
msgid "Semicolo_n (;)"
msgstr "Pu_ntkomma (;)"
-#: src/ui/gui/text-data-import.ui:354
+#: src/ui/gui/text-data-import.ui:287
msgid "P_ipe (|)"
msgstr "P_ijp (|)"
-#: src/ui/gui/text-data-import.ui:369
+#: src/ui/gui/text-data-import.ui:302
msgid "H_yphen (-)"
msgstr "Streep (-)"
-#: src/ui/gui/text-data-import.ui:386
+#: src/ui/gui/text-data-import.ui:319
msgid "Co_mma (,)"
msgstr "Ko_mma (,)"
-#: src/ui/gui/text-data-import.ui:403
+#: src/ui/gui/text-data-import.ui:336
msgid "_Colon (:)"
msgstr "_Dubbelepunt (:)"
-#: src/ui/gui/text-data-import.ui:418
+#: src/ui/gui/text-data-import.ui:351
msgid "Ban_g (!)"
msgstr "Uitroepteken (!)"
-#: src/ui/gui/text-data-import.ui:433
+#: src/ui/gui/text-data-import.ui:366
msgid "Ta_b"
msgstr "Ta_b"
-#: src/ui/gui/text-data-import.ui:448
+#: src/ui/gui/text-data-import.ui:381
msgid "_Space"
msgstr "_Spatie"
-#: src/ui/gui/text-data-import.ui:465
+#: src/ui/gui/text-data-import.ui:398
msgid "<b>Separators</b>"
msgstr "<b>Scheiders</b>"
-#: src/ui/gui/text-data-import.ui:495
+#: src/ui/gui/text-data-import.ui:428
msgid "Doubled quote mark treated as escape"
msgstr ""
-#: src/ui/gui/text-data-import.ui:524
+#: src/ui/gui/text-data-import.ui:457
msgid "Quote separator characters with"
msgstr "Citeer scheidingstekens met"
-#: src/ui/gui/text-data-import.ui:544
+#: src/ui/gui/text-data-import.ui:477
msgid "<b>Quoting</b>"
msgstr "<b>Citeren</b>"
-#: src/ui/gui/text-data-import.ui:592
+#: src/ui/gui/text-data-import.ui:525
msgid "<b>Fields Preview</b>"
msgstr "<b>Veldenvoorbeeld</b>"
-#: src/ui/gui/text-data-import.ui:607
+#: src/ui/gui/text-data-import.ui:540
msgid "Adjust Variable Formats"
msgstr "Pas Variabelenopmaak aan"
-#: src/ui/gui/text-data-import.ui:618
+#: src/ui/gui/text-data-import.ui:551
msgid "Check the data formats displayed below and fix any that are incorrect. You may set other variable properties now or later."
msgstr "Controleer de gegevensopmaak hieronder en verbeter degene die foutief zijn. Je mag andere variabelenopties nu of later zetten."
-#: src/ui/gui/text-data-import.ui:662
+#: src/ui/gui/text-data-import.ui:595
msgid "<b>Variables</b>"
msgstr "<b>Variabelen</b>"
-#: src/ui/gui/text-data-import.ui:705
+#: src/ui/gui/text-data-import.ui:638
msgid "<b>Data Preview</b>"
msgstr "<b>Gegevensvoorbeeld</b>"
msgid "Variable Information:"
msgstr "Variabeleninformatie:"
-#: src/ui/gui/data-editor.ui:9
-msgid "Sort Ascending"
-msgstr "Sorteer oplopend"
-
-#: src/ui/gui/data-editor.ui:15
-msgid "Sort Descending"
-msgstr "Sorteer aflopend"
-
-#: src/ui/gui/data-editor.ui:26 src/ui/gui/output-viewer.ui:9
+#: src/ui/gui/data-editor.ui:23 src/ui/gui/output-viewer.ui:9
#: src/ui/gui/syntax-editor.ui:10
msgid "_File"
msgstr "_Bestand"
-#: src/ui/gui/data-editor.ui:38 src/ui/gui/syntax-editor.ui:22
+#: src/ui/gui/data-editor.ui:35 src/ui/gui/syntax-editor.ui:22
#: src/ui/gui/syntax-editor.ui:40
msgid "_Syntax"
msgstr "_Syntax"
-#: src/ui/gui/data-editor.ui:44 src/ui/gui/data-editor.ui:217
-#: src/ui/gui/data-editor.ui:229 src/ui/gui/syntax-editor.ui:28
+#: src/ui/gui/data-editor.ui:41 src/ui/gui/data-editor.ui:214
+#: src/ui/gui/data-editor.ui:226 src/ui/gui/syntax-editor.ui:28
#: src/ui/gui/syntax-editor.ui:46
msgid "_Data"
msgstr "_Gegevens"
-#: src/ui/gui/data-editor.ui:56
+#: src/ui/gui/data-editor.ui:53
msgid "_Import Delimited Text Data"
msgstr "Gescheiden tekstgegevens _importeren"
-#: src/ui/gui/data-editor.ui:75
+#: src/ui/gui/data-editor.ui:72
msgid "D_isplay Data File Information"
msgstr "Gegevensbestand_informatie tonen"
-#: src/ui/gui/data-editor.ui:81
+#: src/ui/gui/data-editor.ui:79
msgid "Working File"
msgstr "Werkbestand"
-#: src/ui/gui/data-editor.ui:87
+#: src/ui/gui/data-editor.ui:85
msgid "External File"
msgstr "Extern bestand"
-#: src/ui/gui/data-editor.ui:93
+#: src/ui/gui/data-editor.ui:91
msgid "Recently Used Da_ta"
msgstr "Recent gebruikte _gegevens"
-#: src/ui/gui/data-editor.ui:99
+#: src/ui/gui/data-editor.ui:97
msgid "Recently Used _Files"
msgstr "Recent gebruikte _bestanden"
# Standaard snelleter voor Bewerken is de w.
-#: src/ui/gui/data-editor.ui:111 src/ui/gui/output-viewer.ui:28
+#: src/ui/gui/data-editor.ui:109 src/ui/gui/output-viewer.ui:28
#: src/ui/gui/syntax-editor.ui:70
msgid "_Edit"
msgstr "Be_werken"
-#: src/ui/gui/data-editor.ui:117
+#: src/ui/gui/data-editor.ui:115
msgid "Insert Variable"
msgstr "Invoegen variabele"
-#: src/ui/gui/data-editor.ui:118
+#: src/ui/gui/data-editor.ui:116
msgid "Create a new variable at the current position"
msgstr "Creëer een nieuwe variabele op de huidige positie"
-#: src/ui/gui/data-editor.ui:125
+#: src/ui/gui/data-editor.ui:123
msgid "Insert Cases"
msgstr "Invoegen cases"
-#: src/ui/gui/data-editor.ui:126
+#: src/ui/gui/data-editor.ui:124
msgid "Create a new case at the current position"
msgstr "Creëer een nieuwe case op de huidige positie"
-#: src/ui/gui/data-editor.ui:132
+#: src/ui/gui/data-editor.ui:130
msgid "Go To Case"
msgstr "Ga naar case"
-#: src/ui/gui/data-editor.ui:134
+#: src/ui/gui/data-editor.ui:132
msgid "Jump to a case in the data sheet"
msgstr "Spring naar een Case in het Gegevensblad"
-#: src/ui/gui/data-editor.ui:160
+#: src/ui/gui/data-editor.ui:158
msgid "Cl_ear Variables"
msgstr "Wis _variabelen"
-#: src/ui/gui/data-editor.ui:161
+#: src/ui/gui/data-editor.ui:159
msgid "Delete the variables at the selected position(s)"
msgstr "Verwijder de variabele op de geselecteerde positie(s)"
-#: src/ui/gui/data-editor.ui:169
+#: src/ui/gui/data-editor.ui:167
msgid "_Clear Cases"
msgstr "Wis _cases"
-#: src/ui/gui/data-editor.ui:170
+#: src/ui/gui/data-editor.ui:168
msgid "Delete the cases at the selected position(s)"
msgstr "Verwijder de cases op de geselecteerde positie(s)"
-#: src/ui/gui/data-editor.ui:182
+#: src/ui/gui/data-editor.ui:180
msgid "_View"
msgstr "Beel_d"
-#: src/ui/gui/data-editor.ui:189
+#: src/ui/gui/data-editor.ui:187
msgid "_Status Bar"
msgstr "_Statusbalk"
-#: src/ui/gui/data-editor.ui:195
-msgid "_Fonts"
-msgstr "_Fonts"
-
-#: src/ui/gui/data-editor.ui:203
+#: src/ui/gui/data-editor.ui:200
msgid "_Grid Lines"
msgstr "_Rasterlijnen"
-#: src/ui/gui/data-editor.ui:209
+#: src/ui/gui/data-editor.ui:206
msgid "Value _Labels"
msgstr "Waarde_labels"
-#: src/ui/gui/data-editor.ui:210
+#: src/ui/gui/data-editor.ui:207
msgid "Show/hide value labels"
msgstr "Toon/verberg waardelabels"
-#: src/ui/gui/data-editor.ui:223 src/ui/gui/data-editor.ui:430
+#: src/ui/gui/data-editor.ui:220 src/ui/gui/data-editor.ui:434
msgid "_Variables"
msgstr "_Variabelen"
-#: src/ui/gui/data-editor.ui:234
+#: src/ui/gui/data-editor.ui:231
msgid "_Sort Cases"
msgstr "_Sorteer Cases"
-#: src/ui/gui/data-editor.ui:237
+#: src/ui/gui/data-editor.ui:234
msgid "Sort cases in the active file"
msgstr "Sorteer cases in het actieve bestand"
-#: src/ui/gui/data-editor.ui:244
+#: src/ui/gui/data-editor.ui:241
msgid "_Transpose"
msgstr "_Herschikken"
-#: src/ui/gui/data-editor.ui:245
+#: src/ui/gui/data-editor.ui:242
msgid "Transpose the cases with the variables"
msgstr "Herschik de cases met de variabelen"
-#: src/ui/gui/data-editor.ui:251
+#: src/ui/gui/data-editor.ui:249
+msgid "_Aggregate"
+msgstr "_Aggregeer"
+
+#: src/ui/gui/data-editor.ui:255
msgid "S_plit File"
msgstr "S_plits bestand"
-#: src/ui/gui/data-editor.ui:252
+#: src/ui/gui/data-editor.ui:256
msgid "Split the active file"
msgstr "Splits het actieve bestand"
-#: src/ui/gui/data-editor.ui:259
+#: src/ui/gui/data-editor.ui:263
msgid "Select _Cases"
msgstr "Selecteer _cases"
-#: src/ui/gui/data-editor.ui:265
+#: src/ui/gui/data-editor.ui:269
msgid "_Weight Cases"
msgstr "_Weeg cases"
-#: src/ui/gui/data-editor.ui:266
+#: src/ui/gui/data-editor.ui:270
msgid "Weight cases by variable"
msgstr "Weeg cases per variabele"
-#: src/ui/gui/data-editor.ui:273
+#: src/ui/gui/data-editor.ui:277
msgid "_Transform"
msgstr "_Transformeren"
-#: src/ui/gui/data-editor.ui:279
+#: src/ui/gui/data-editor.ui:283
msgid "_Compute"
msgstr "_Berekenen"
-#: src/ui/gui/data-editor.ui:285
+#: src/ui/gui/data-editor.ui:289
msgid "Ran_k Cases"
msgstr "Rangschi_k cases"
-#: src/ui/gui/data-editor.ui:291
+#: src/ui/gui/data-editor.ui:295
msgid "Recode into _Same Variables"
msgstr "Hercodeer in _Zelfde Variabelen"
-#: src/ui/gui/data-editor.ui:297
+#: src/ui/gui/data-editor.ui:301
msgid "Recode into _Different Variables"
msgstr "Hercodeer in _Andere Variabelen"
-#: src/ui/gui/data-editor.ui:303
+#: src/ui/gui/data-editor.ui:307
msgid "_Run Pending Transforms"
msgstr "_uitvoeren uitstaande Transformaties"
-#: src/ui/gui/data-editor.ui:310
+#: src/ui/gui/data-editor.ui:314
msgid "_Analyze"
msgstr "_Analyseer"
-#: src/ui/gui/data-editor.ui:316
+#: src/ui/gui/data-editor.ui:320
msgid "_Descriptive Statistics"
msgstr "_Descriptieve statistieken"
-#: src/ui/gui/data-editor.ui:322
+#: src/ui/gui/data-editor.ui:326
msgid "_Frequencies"
msgstr "_Frequenties"
-#: src/ui/gui/data-editor.ui:334
+#: src/ui/gui/data-editor.ui:338
msgid "_Explore"
msgstr "_Onderzoek"
-#: src/ui/gui/data-editor.ui:340
+#: src/ui/gui/data-editor.ui:344
msgid "_Crosstabs"
msgstr "_Kruistabellen"
-#: src/ui/gui/data-editor.ui:346
+#: src/ui/gui/data-editor.ui:350
msgid "Compare _Means"
msgstr ""
-#: src/ui/gui/data-editor.ui:352
+#: src/ui/gui/data-editor.ui:356
msgid "_One Sample T Test"
msgstr ""
-#: src/ui/gui/data-editor.ui:358
+#: src/ui/gui/data-editor.ui:362
msgid "_Independent Samples T Test"
msgstr ""
-#: src/ui/gui/data-editor.ui:364
+#: src/ui/gui/data-editor.ui:368
msgid "_Paired Samples T Test"
msgstr ""
-#: src/ui/gui/data-editor.ui:370
+#: src/ui/gui/data-editor.ui:374
msgid "One Way _ANOVA"
msgstr ""
-#: src/ui/gui/data-editor.ui:376
+#: src/ui/gui/data-editor.ui:380
msgid "Bivariate _Correlation..."
msgstr "Bivariate _correlatie..."
-#: src/ui/gui/data-editor.ui:382
+#: src/ui/gui/data-editor.ui:386
msgid "Factor _Analysis"
msgstr "Factor _analyses"
-#: src/ui/gui/data-editor.ui:388
+#: src/ui/gui/data-editor.ui:392
msgid "Re_liability"
msgstr "Betrouwbaarheid"
-#: src/ui/gui/data-editor.ui:394
+#: src/ui/gui/data-editor.ui:398
msgid "Linear _Regression"
msgstr "Lineare _regressie"
-#: src/ui/gui/data-editor.ui:400
+#: src/ui/gui/data-editor.ui:404
msgid "_Non-Parametric Statistics"
msgstr ""
-#: src/ui/gui/data-editor.ui:406
+#: src/ui/gui/data-editor.ui:410
msgid "_Chi-Square"
msgstr "_Chi-Square"
-#: src/ui/gui/data-editor.ui:412
+#: src/ui/gui/data-editor.ui:416
msgid "_Binomial"
msgstr "_Binomiaal"
-#: src/ui/gui/data-editor.ui:418
+#: src/ui/gui/data-editor.ui:422
msgid "ROC Cur_ve..."
msgstr "ROC Cur_ve..."
-#: src/ui/gui/data-editor.ui:424
+#: src/ui/gui/data-editor.ui:428
msgid "_Utilities"
msgstr "E_xtra"
-#: src/ui/gui/data-editor.ui:431
+#: src/ui/gui/data-editor.ui:435
msgid "Jump to variable"
msgstr "Spring naar variabele"
-#: src/ui/gui/data-editor.ui:438
+#: src/ui/gui/data-editor.ui:442
msgid "Data File _Comments"
msgstr "Gegevensbestand _commentaren"
-#: src/ui/gui/data-editor.ui:444 src/ui/gui/output-viewer.ui:40
-#: src/ui/gui/syntax-editor.ui:131
+#: src/ui/gui/data-editor.ui:448 src/ui/gui/output-viewer.ui:46
+#: src/ui/gui/syntax-editor.ui:135
msgid "_Windows"
msgstr "_Vensters"
-#: src/ui/gui/data-editor.ui:450 src/ui/gui/output-viewer.ui:46
-#: src/ui/gui/syntax-editor.ui:137
+#: src/ui/gui/data-editor.ui:454 src/ui/gui/output-viewer.ui:52
+#: src/ui/gui/syntax-editor.ui:141
msgid "_Minimize All Windows"
msgstr "_Minimaliseer alle vensters"
-#: src/ui/gui/data-editor.ui:456
+#: src/ui/gui/data-editor.ui:460
msgid "_Split"
msgstr "_Splitsen"
-#: src/ui/gui/data-editor.ui:630
+#: src/ui/gui/data-editor.ui:635
msgid "Information Area"
msgstr "Informatiegebied"
-#: src/ui/gui/data-editor.ui:652
+#: src/ui/gui/data-editor.ui:657
msgid "Processor Area"
msgstr "Processorgebied"
-#: src/ui/gui/data-editor.ui:677
+#: src/ui/gui/data-editor.ui:682
msgid "Case Counter Area"
msgstr "Case-tellergebied"
-#: src/ui/gui/data-editor.ui:702
+#: src/ui/gui/data-editor.ui:707
msgid "Filter Use Status Area"
msgstr "Filtergebruik statusgebied"
-#: src/ui/gui/data-editor.ui:728
+#: src/ui/gui/data-editor.ui:733
msgid "Weight Status Area"
msgstr "Weging statusgebied"
-#: src/ui/gui/data-editor.ui:754
+#: src/ui/gui/data-editor.ui:759
msgid "Split File Status Area"
msgstr "Splitsbestand statusgebied"
msgid "_Export"
msgstr "_Exporteer"
-#: src/ui/gui/syntax-editor.ui:100
+#: src/ui/gui/syntax-editor.ui:104
msgid "_Run"
msgstr "Uitvoe_ren"
-#: src/ui/gui/syntax-editor.ui:106
+#: src/ui/gui/syntax-editor.ui:110
msgid "All"
msgstr "Alles"
-#: src/ui/gui/syntax-editor.ui:112
+#: src/ui/gui/syntax-editor.ui:116
msgid "Selection"
msgstr "Selectie"
-#: src/ui/gui/syntax-editor.ui:118
+#: src/ui/gui/syntax-editor.ui:122
msgid "Current Line"
msgstr "Huidige regel"
-#: src/ui/gui/syntax-editor.ui:125
+#: src/ui/gui/syntax-editor.ui:129
msgid "To End"
msgstr "Naar einde"
+#~ msgid "column %d"
+#~ msgstr "kolom %d"
+
+#~ msgid "columns %d-%d"
+#~ msgstr "kolommen %d-%d"
+
+#~ msgid "%s field) "
+#~ msgstr "%s veld) "
+
+#~ msgid "Syntax error %s at %s."
+#~ msgstr "Syntaxfout %s op %s."
+
+#~ msgid "expecting ATTRIBUTE= or DELETE="
+#~ msgstr "verwacht ATTRIBUTE= of DELETE="
+
+#~ msgid "expecting `('"
+#~ msgstr "'(' verwacht"
+
+#~ msgid "String expected for variable label."
+#~ msgstr "Tekenreeks verwacht voor variabelenlabel."
+
+#~ msgid "Expecting BATCH or INTERACTIVE after SYNTAX."
+#~ msgstr "BATCH of INTERACTIVE verwacht na SYNTAX."
+
+#~ msgid "Expecting YES or NO after CD."
+#~ msgstr "YES of NO verwacht na CD."
+
+#~ msgid "Expecting CONTINUE or STOP after ERROR."
+#~ msgstr "CONTINUE of STOP verwacht na ERROR."
+
+#~ msgid "while expecting COLUMNWISE"
+#~ msgstr "terwijl COLUMNWISE verwacht werd"
+
+#~ msgid "expecting BREAK"
+#~ msgstr "BREAK verwacht"
+
+#~ msgid "expecting `)'"
+#~ msgstr "')' verwacht"
+
+#~ msgid "expecting VARIABLES"
+#~ msgstr "VARIABLES verwacht"
+
+#~ msgid "in expression"
+#~ msgstr "in expressie"
+
+#, fuzzy
+#~ msgid "Missing space following `E' at offset %zu in MRSETS record"
+#~ msgstr "Dubbele variabelenaam %s op offset %zu in MRSETS record."
+
+#~ msgid "expecting BY"
+#~ msgstr "BY verwacht"
+
+#~ msgid "Multivariate GLM not yet supported"
+#~ msgstr "Mutivariante GLM wordt nog niet ondersteund"
+
+#~ msgid "expecting FIXED or DELIMITED"
+#~ msgstr "FIXED of DELIMITED verwacht"
+
+#~ msgid "expecting LINE or VARIABLES"
+#~ msgstr "LINE of VARIABLES verwacht"
+
+#~ msgid "expecting COMM or TAPE"
+#~ msgstr "COMM of TAPE verwacht"
+
+#~ msgid "COLUMN subcommand multiply specified."
+#~ msgstr "COLUMN-subopdracht meerdere keren gespecificeerd."
+
+#~ msgid "hash table:"
+#~ msgstr "hash-tabel:"
+
+#~ msgid "Warnings (%d) exceed limit (%d)."
+#~ msgstr "Waarschuwingen (%d) overschrijden limiet (%d)."
+
+#~ msgid "Errors (%d) exceed limit (%d)."
+#~ msgstr "Fouten (%d) overschrijden limiet (%d)."
+
+#~ msgid "`%s' is not a variable name"
+#~ msgstr "'%s' is geen variabelennaam"
+
+#~ msgid " cases"
+#~ msgstr " cases"
+
+#~ msgid "Error closing FLIP source file: %s."
+#~ msgstr "Fout tijdens sluiten FLIP bronbestand: %s."
+
+#~ msgid "%s: Creating temporary file: %s."
+#~ msgstr "%s: Aanmaken tijdelijk bestand: %s."
+
+#~ msgid "%s: Creating file: %s."
+#~ msgstr "%s: Aanmaken bestand: %s."
+
+#~ msgid "String exceeds 255 characters in length (%zu characters)."
+#~ msgstr "Tekenreeks overschrijdt de lengte van 255 tekens (%zu tekens)."
+
+#~ msgid "Missing required subcommand TABLES."
+#~ msgstr "Mis vereiste subopdracht TABLES."
+
+#~ msgid "TABLES subcommand may not appear more than once."
+#~ msgstr "TABLES-subopdracht mag niet meer dan 1 keer voorkomen."
+
+#~ msgid "Sort Ascending"
+#~ msgstr "Sorteer oplopend"
+
+#~ msgid "Sort Descending"
+#~ msgstr "Sorteer aflopend"
+
+#~ msgid "_Fonts"
+#~ msgstr "_Fonts"
+
#~ msgid "Variable %s has label of invalid length %zu."
#~ msgstr "Variabele %s heeft label van ongeldige lengte %zu."
file = fn_open (file_name, "rb");
if (file == NULL)
{
- msg (ME, _("An error occurred while opening \"%s\": %s."),
+ msg (ME, _("An error occurred while opening `%s': %s."),
file_name, strerror (errno));
return IO_ERROR;
}
else if (result == YES)
return pfm_open_reader (handle, dict, NULL);
- msg (SE, _("\"%s\" is not a system or portable file."),
+ msg (SE, _("`%s' is not a system or portable file."),
fh_get_file_name (handle));
return NULL;
}
Gregorian calendar. Returns SYSMIS for dates before 14 Oct
1582. */
double
-calendar_gregorian_to_offset (int y, int m, int d,
- calendar_error_func *error, void *aux)
+calendar_gregorian_to_offset (int y, int m, int d, char **errorp)
{
/* Normalize year. */
if (y >= 0 && y < 100)
}
else
{
- error (aux, _("Month %d is not in acceptable range of 0 to 13."), m);
+ if (errorp != NULL)
+ *errorp = xasprintf (_("Month %d is not in acceptable range of "
+ "0 to 13."), m);
return SYSMIS;
}
}
/* Normalize day. */
if (d < 0 || d > 31)
{
- error (aux, _("Day %d is not in acceptable range of 0 to 31."), d);
+ if (errorp != NULL)
+ *errorp = xasprintf (_("Day %d is not in acceptable range of "
+ "0 to 31."), d);
return SYSMIS;
}
/* Validate date. */
if (y < 1582 || (y == 1582 && (m < 10 || (m == 10 && d < 15))))
{
- error (aux, _("Date %04d-%d-%d is before the earliest acceptable "
- "date of 1582-10-15."), y, m, d);
+ if (errorp != NULL)
+ *errorp = xasprintf (_("Date %04d-%d-%d is before the earliest "
+ "acceptable date of 1582-10-15."), y, m, d);
return SYSMIS;
}
/* Calculate offset. */
+ if (errorp != NULL)
+ *errorp = NULL;
return raw_gregorian_to_offset (y, m, d);
}
#ifndef CALENDAR_H
#define CALENDAR_H 1
-typedef void calendar_error_func (void *aux, const char *, ...);
-
-double calendar_gregorian_to_offset (int y, int m, int d,
- calendar_error_func *, void *aux);
+double calendar_gregorian_to_offset (int y, int m, int d, char **errorp);
void calendar_offset_to_gregorian (int ofs, int *y, int *m, int *d, int *yd);
int calendar_offset_to_year (int ofs);
int calendar_offset_to_month (int ofs);
static void *
value_to_data (const union value *value_, int width)
{
- union value *value = (union value *) value_;
+ union value *value = CONST_CAST (union value *, value_);
assert (sizeof value->f == sizeof (double));
if (width == 0)
return &value->f;
static inline struct ccase *
case_ref (const struct ccase *c_)
{
- struct ccase *c = (struct ccase *) c_;
+ struct ccase *c = CONST_CAST (struct ccase *, c_);
c->ref_cnt++;
return c;
}
writer = autopaging_writer_create (
casereader_get_proto (grouper->reader));
- case_ref (group_case);
- casewriter_write (writer, group_case);
+
+ casewriter_write (writer, case_ref (group_case));
while ((tmp = casereader_peek (grouper->reader, 0)) != NULL
&& grouper->same_group (group_case, tmp, grouper->aux))
case_unref (casereader_read (grouper->reader));
casewriter_write (writer, tmp);
}
+ case_unref (tmp);
case_unref (group_case);
*reader = casewriter_make_reader (writer);
when the filtering casereader is destroyed. */
struct casereader *
casereader_create_filter_missing (struct casereader *reader,
- const struct variable **vars, size_t var_cnt,
+ const struct variable *const*vars, size_t var_cnt,
enum mv_class class,
casenumber *n_missing,
struct casewriter *exclude)
/* PSPP - a program for statistical analysis.
- Copyright (C) 2009 Free Software Foundation, Inc.
+ Copyright (C) 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
{
struct casereader_select *cs = xmalloc (sizeof *cs);
cs->by = by;
- cs->i = 0;
+ cs->i = by - 1;
return casereader_create_filter_func (subreader,
casereader_select_include,
casereader_select_destroy,
const union value *current_value = case_data (c, cdr->key);
const int key_width = var_get_width (cdr->key);
const double weight = cdr->weight ? case_data (c, cdr->weight)->f : 1.0;
- const struct ccase *next_case = casereader_peek (cdr->clone, cdr->n + 1);
+ struct ccase *next_case = casereader_peek (cdr->clone, cdr->n + 1);
int dir = 0;
cdr->n ++;
dir = value_compare_3way (case_data (next_case, cdr->key),
current_value, key_width);
+ case_unref (next_case);
if ( dir != 0 )
{
/* Insist that the data are sorted */
/* Copies all the cases in READER to WRITER, propagating errors
- appropriately. */
+ appropriately. READER is destroyed by this function */
void
casereader_transfer (struct casereader *reader, struct casewriter *writer)
{
struct casewriter *exclude);
struct casereader *
casereader_create_filter_missing (struct casereader *,
- const struct variable **vars, size_t var_cnt,
+ const struct variable *const*vars, size_t var_cnt,
enum mv_class,
casenumber *n_missing,
struct casewriter *exclude);
&w->file, NULL);
if (w->rf == NULL)
{
- msg (ME, _("Error opening \"%s\" for writing as a system file: %s."),
+ msg (ME, _("Error opening `%s' for writing as a system file: %s."),
fh_get_file_name (fh), strerror (errno));
goto error;
}
ok = false;
if (!ok)
- msg (ME, _("An I/O error occurred writing CSV file \"%s\"."),
+ msg (ME, _("An I/O error occurred writing CSV file `%s'."),
fh_get_file_name (w->fh));
if (ok ? !replace_file_commit (w->rf) : !replace_file_abort (w->rf))
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2006, 2009 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2006, 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <ctype.h>
#include <errno.h>
+#include <limits.h>
#include <math.h>
#include <stdarg.h>
+#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
-#include <stdbool.h>
-#include <limits.h>
#include "calendar.h"
+#include "dictionary.h"
+#include "format.h"
#include "identifier.h"
+#include "libpspp/assertion.h"
+#include "libpspp/compiler.h"
+#include "libpspp/i18n.h"
+#include "libpspp/integer-format.h"
+#include "libpspp/legacy-encoding.h"
+#include "libpspp/misc.h"
+#include "libpspp/str.h"
#include "settings.h"
#include "value.h"
-#include "format.h"
-#include "dictionary.h"
-#include <libpspp/assertion.h>
-#include <libpspp/legacy-encoding.h>
-#include <libpspp/i18n.h>
-#include <libpspp/compiler.h>
-#include <libpspp/integer-format.h>
-#include <libpspp/message.h>
-#include <libpspp/misc.h>
-#include <libpspp/str.h>
-#include "c-ctype.h"
-#include "c-strtod.h"
-#include "minmax.h"
-#include "xalloc.h"
+#include "gl/c-ctype.h"
+#include "gl/c-strtod.h"
+#include "gl/minmax.h"
+#include "gl/xalloc.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
/* Information about parsing one data field. */
struct data_in
{
- const char *src_enc; /* Encoding of source. */
struct substring input; /* Source. */
enum fmt_type format; /* Input format. */
- int implied_decimals; /* Number of implied decimal places. */
union value *output; /* Destination. */
int width; /* Output width. */
-
- int first_column; /* First column of field; 0 if inapplicable. */
- int last_column; /* Last column. */
};
-
-
-typedef bool data_in_parser_func (struct data_in *);
+typedef char *data_in_parser_func (struct data_in *);
#define FMT(NAME, METHOD, IMIN, OMIN, IO, CATEGORY) \
static data_in_parser_func parse_##METHOD;
#include "format.def"
-static void vdata_warning (const struct data_in *, const char *, va_list)
- PRINTF_FORMAT (2, 0);
-static void data_warning (const struct data_in *, const char *, ...)
- PRINTF_FORMAT (2, 3);
-
-static void apply_implied_decimals (struct data_in *);
static void default_result (struct data_in *);
static bool trim_spaces_and_check_missing (struct data_in *);
static int hexit_value (int c);
\f
/* Parses the characters in INPUT, which are encoded in the given
- ENCODING, according to FORMAT. Stores the parsed
- representation in OUTPUT, which the caller must have
- initialized with the given WIDTH (0 for a numeric field,
- otherwise the string width).
- Iff FORMAT is a string format, then DICT must be a pointer
- to the dictionary associated with OUTPUT. Otherwise, DICT
- may be null.
-
- If no decimal point is included in a numeric format, then
- IMPLIED_DECIMALS decimal places are implied. Specify 0 if no
- decimal places should be implied.
-
- If FIRST_COLUMN and LAST_COLUMN are nonzero, then they should
- be the 1-based column number of the first and
- one-past-the-last-character in INPUT, for use in error
- messages. (LAST_COLUMN cannot always be calculated from
- FIRST_COLUMN plus the length of the input because of the
- possibility of escaped quotes in strings, etc.) */
-bool
-data_in (struct substring input, const char *encoding,
- enum fmt_type format, int implied_decimals,
- int first_column, int last_column,
- const struct dictionary *dict,
- union value *output, int width)
+ INPUT_ENCODING, according to FORMAT.
+
+ Stores the parsed representation in OUTPUT, which the caller must have
+ initialized with the given WIDTH (0 for a numeric field, otherwise the
+ string width). If FORMAT is FMT_A, then OUTPUT_ENCODING must specify the
+ correct encoding for OUTPUT (normally obtained via dict_get_encoding()). */
+char *
+data_in (struct substring input, const char *input_encoding,
+ enum fmt_type format,
+ union value *output, int width, const char *output_encoding)
{
static data_in_parser_func *const handlers[FMT_NUMBER_OF_FORMATS] =
{
struct data_in i;
- char *s = NULL;
- bool ok;
+ enum fmt_category cat;
+ const char *dest_encoding;
+ char *s;
+ char *error;
assert ((width != 0) == fmt_is_string (format));
i.format = format;
- i.implied_decimals = implied_decimals;
i.output = output;
i.width = width;
- i.first_column = first_column;
- i.last_column = last_column;
- i.src_enc = encoding;
-
if (ss_is_empty (input))
{
default_result (&i);
- return true;
+ return NULL;
}
- if (fmt_get_category (format) & ( FMT_CAT_BINARY | FMT_CAT_HEXADECIMAL | FMT_CAT_LEGACY))
+ cat = fmt_get_category (format);
+ if (cat & (FMT_CAT_BASIC | FMT_CAT_HEXADECIMAL
+ | FMT_CAT_DATE | FMT_CAT_TIME | FMT_CAT_DATE_COMPONENT))
{
- i.input = input;
+ /* We're going to parse these into numbers. For this purpose we want to
+ deal with them in the local "C" encoding. Any character not in that
+ encoding wouldn't be valid anyhow. */
+ dest_encoding = LEGACY_NATIVE;
+ }
+ else if (cat & (FMT_CAT_BINARY | FMT_CAT_LEGACY))
+ {
+ /* Don't recode these binary formats at all, since they are not text. */
+ dest_encoding = NULL;
}
else
{
- const char *dest_encoding;
-
- if ( dict == NULL)
- {
- assert (0 == (fmt_get_category (format) & (FMT_CAT_BINARY | FMT_CAT_STRING)));
- dest_encoding = LEGACY_NATIVE;
- }
+ assert (cat == FMT_CAT_STRING);
+ if (format == FMT_AHEX)
+ {
+ /* We want the hex digits in the local "C" encoding, even though the
+ result may not be in that encoding. */
+ dest_encoding = LEGACY_NATIVE;
+ }
else
- dest_encoding = dict_get_encoding (dict);
+ {
+ /* Use the final output encoding. */
+ dest_encoding = output_encoding;
+ }
+ }
- s = recode_string (dest_encoding, i.src_enc, ss_data (input), ss_length (input));
- i.input = ss_cstr (s);
+ if (dest_encoding != NULL)
+ {
+ i.input = recode_substring_pool (dest_encoding, input_encoding, input,
+ NULL);
+ s = i.input.string;
+ }
+ else
+ {
+ i.input = input;
+ s = NULL;
}
- ok = handlers[i.format] (&i);
- if (!ok)
+ error = handlers[i.format] (&i);
+ if (error != NULL)
default_result (&i);
free (s);
- return ok;
+
+ return error;
+}
+
+bool
+data_in_msg (struct substring input, const char *input_encoding,
+ enum fmt_type format,
+ union value *output, int width, const char *output_encoding)
+{
+ char *error = data_in (input, input_encoding, format,
+ output, width, output_encoding);
+ if (error != NULL)
+ {
+ msg (SW,_("Data is not valid as format %s: %s"),
+ fmt_name (format), error);
+ free (error);
+ return false;
+ }
+ else
+ return true;
+}
+
+static bool
+number_has_implied_decimals (const char *s, enum fmt_type type)
+{
+ int decimal = settings_get_style (type)->decimal;
+ bool got_digit = false;
+ for (;;)
+ {
+ switch (*s)
+ {
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ got_digit = true;
+ break;
+
+ case '+': case '-':
+ if (got_digit)
+ return false;
+ break;
+
+ case 'e': case 'E': case 'd': case 'D':
+ return false;
+
+ case '.': case ',':
+ if (*s == decimal)
+ return false;
+ break;
+
+ case '\0':
+ return true;
+
+ default:
+ break;
+ }
+
+ s++;
+ }
+}
+
+static bool
+has_implied_decimals (struct substring input, const char *input_encoding,
+ enum fmt_type format)
+{
+ bool retval;
+ char *s;
+
+ switch (format)
+ {
+ case FMT_F:
+ case FMT_COMMA:
+ case FMT_DOT:
+ case FMT_DOLLAR:
+ case FMT_PCT:
+ case FMT_E:
+ case FMT_Z:
+ break;
+
+ case FMT_N:
+ case FMT_IB:
+ case FMT_PIB:
+ case FMT_P:
+ case FMT_PK:
+ return true;
+
+ default:
+ return false;
+ }
+
+ s = recode_string (LEGACY_NATIVE, input_encoding,
+ ss_data (input), ss_length (input));
+ retval = (format == FMT_Z
+ ? strchr (s, '.') == NULL
+ : number_has_implied_decimals (s, format));
+ free (s);
+
+ return retval;
}
+/* In some cases, when no decimal point is explicitly included in numeric
+ input, its position is implied by the number of decimal places in the input
+ format. In such a case, this function may be called just after data_in().
+ Its arguments are a subset of that function's arguments plus D, the number
+ of decimal places associated with FORMAT.
+
+ If it is appropriate, this function modifies the numeric value in OUTPUT. */
+void
+data_in_imply_decimals (struct substring input, const char *input_encoding,
+ enum fmt_type format, int d, union value *output)
+{
+ if (d > 0 && output->f != SYSMIS
+ && has_implied_decimals (input, input_encoding, format))
+ output->f /= pow (10., d);
+}
\f
/* Format parsers. */
/* Parses F, COMMA, DOT, DOLLAR, PCT, and E input formats. */
-static bool
+static char *
parse_number (struct data_in *i)
{
const struct fmt_number_style *style =
/* Trim spaces and check for missing value representation. */
if (trim_spaces_and_check_missing (i))
- return true;
+ return NULL;
ds_init_empty (&tmp);
ds_extend (&tmp, 64);
if (!ss_is_empty (i->input))
{
+ char *error;
if (ds_is_empty (&tmp))
- data_warning (i, _("Field contents are not numeric."));
+ error = xstrdup (_("Field contents are not numeric."));
else
- data_warning (i, _("Number followed by garbage."));
+ error = xstrdup (_("Number followed by garbage."));
ds_destroy (&tmp);
- return false;
+ return error;
}
/* Let c_strtod() do the conversion. */
i->output->f = c_strtod (ds_cstr (&tmp), &tail);
if (*tail != '\0')
{
- data_warning (i, _("Invalid numeric syntax."));
errno = save_errno;
ds_destroy (&tmp);
- return false;
+ return xstrdup (_("Invalid numeric syntax."));
}
else if (errno == ERANGE)
{
if (fabs (i->output->f) > 1)
{
- data_warning (i, _("Too-large number set to system-missing."));
i->output->f = SYSMIS;
+ ds_destroy (&tmp);
+ return xstrdup (_("Too-large number set to system-missing."));
}
else
{
- data_warning (i, _("Too-small number set to zero."));
i->output->f = 0.0;
+ ds_destroy (&tmp);
+ return xstrdup (_("Too-small number set to zero."));
}
}
else
- {
- errno = save_errno;
- if (!explicit_decimals)
- apply_implied_decimals (i);
- }
+ errno = save_errno;
ds_destroy (&tmp);
- return true;
+ return NULL;
}
/* Parses N format. */
-static bool
+static char *
parse_N (struct data_in *i)
{
int c;
while ((c = ss_get_char (&i->input)) != EOF)
{
if (!c_isdigit (c))
- {
- data_warning (i, _("All characters in field must be digits."));
- return false;
- }
+ return xstrdup (_("All characters in field must be digits."));
i->output->f = i->output->f * 10.0 + (c - '0');
}
- apply_implied_decimals (i);
- return true;
+ return NULL;
}
/* Parses PIBHEX format. */
-static bool
+static char *
parse_PIBHEX (struct data_in *i)
{
double n;
while ((c = ss_get_char (&i->input)) != EOF)
{
if (!c_isxdigit (c))
- {
- data_warning (i, _("Unrecognized character in field."));
- return false;
- }
+ return xstrdup (_("Unrecognized character in field."));
n = n * 16.0 + hexit_value (c);
}
i->output->f = n;
- return true;
+ return NULL;
}
/* Parses RBHEX format. */
-static bool
+static char *
parse_RBHEX (struct data_in *i)
{
double d;
int hi = ss_get_char (&i->input);
int lo = ss_get_char (&i->input);
if (lo == EOF)
- {
- data_warning (i, _("Field must have even length."));
- return false;
- }
+ return xstrdup (_("Field must have even length."));
else if (!c_isxdigit (hi) || !c_isxdigit (lo))
- {
- data_warning (i, _("Field must contain only hex digits."));
- return false;
- }
+ return xstrdup (_("Field must contain only hex digits."));
((unsigned char *) &d)[j] = 16 * hexit_value (hi) + hexit_value (lo);
}
i->output->f = d;
- return true;
+ return NULL;
}
/* Digits for Z format. */
}
/* Parses Z format. */
-static bool
+static char *
parse_Z (struct data_in *i)
{
struct string tmp;
/* Trim spaces and check for missing value representation. */
if (trim_spaces_and_check_missing (i))
- return true;
+ return NULL;
ds_init_empty (&tmp);
ds_extend (&tmp, 64);
else
{
ds_destroy (&tmp);
- return false;
+ return xstrdup (_("Invalid zoned decimal syntax."));
}
}
if (!ss_is_empty (i->input))
{
+ char *error;
+
if (ds_length (&tmp) == 1)
- data_warning (i, _("Field contents are not numeric."));
+ error = xstrdup (_("Field contents are not numeric."));
else
- data_warning (i, _("Number followed by garbage."));
+ error = xstrdup (_("Number followed by garbage."));
+
ds_destroy (&tmp);
- return false;
+ return error;
}
/* Let c_strtod() do the conversion. */
{
if (fabs (i->output->f) > 1)
{
- data_warning (i, _("Too-large number set to system-missing."));
i->output->f = SYSMIS;
+ ds_destroy (&tmp);
+ return xstrdup (_("Too-large number set to system-missing."));
}
else
{
- data_warning (i, _("Too-small number set to zero."));
i->output->f = 0.0;
+ ds_destroy (&tmp);
+ return xstrdup (_("Too-small number set to zero."));
}
}
else
- {
- errno = save_errno;
- if (!got_dot)
- apply_implied_decimals (i);
- }
+ errno = save_errno;
ds_destroy (&tmp);
- return true;
+ return NULL;
}
/* Parses IB format. */
-static bool
+static char *
parse_IB (struct data_in *i)
{
size_t bytes;
i->output->f = -(double) -value;
}
- apply_implied_decimals (i);
-
- return true;
+ return NULL;
}
/* Parses PIB format. */
-static bool
+static char *
parse_PIB (struct data_in *i)
{
i->output->f = integer_get (settings_get_input_integer_format (), ss_data (i->input),
MIN (8, ss_length (i->input)));
- apply_implied_decimals (i);
-
- return true;
+ return NULL;
}
/* Consumes the first character of S. Stores its high 4 bits in
}
/* Parses P format. */
-static bool
+static char *
parse_P (struct data_in *i)
{
int high_nibble, low_nibble;
{
get_nibbles (&i->input, &high_nibble, &low_nibble);
if (high_nibble > 9 || low_nibble > 9)
- return false;
+ return xstrdup (_("Invalid syntax for P field."));
i->output->f = (100 * i->output->f) + (10 * high_nibble) + low_nibble;
}
get_nibbles (&i->input, &high_nibble, &low_nibble);
if (high_nibble > 9)
- return false;
+ return xstrdup (_("Invalid syntax for P field."));
i->output->f = (10 * i->output->f) + high_nibble;
if (low_nibble < 10)
i->output->f = (10 * i->output->f) + low_nibble;
else if (low_nibble == 0xb || low_nibble == 0xd)
i->output->f = -i->output->f;
- apply_implied_decimals (i);
-
- return true;
+ return NULL;
}
/* Parses PK format. */
-static bool
+static char *
parse_PK (struct data_in *i)
{
i->output->f = 0.0;
if (high_nibble > 9 || low_nibble > 9)
{
i->output->f = SYSMIS;
- return true;
+ return NULL;
}
i->output->f = (100 * i->output->f) + (10 * high_nibble) + low_nibble;
}
- apply_implied_decimals (i);
-
- return true;
+ return NULL;
}
/* Parses RB format. */
-static bool
+static char *
parse_RB (struct data_in *i)
{
enum float_format ff = settings_get_input_float_format ();
else
i->output->f = SYSMIS;
- return true;
+ return NULL;
}
/* Parses A format. */
-static bool
+static char *
parse_A (struct data_in *i)
{
/* This is equivalent to buf_copy_rpad, except that we posibly
if (dst_size > src_size)
memset (&dst[src_size], ' ', dst_size - src_size);
- return true;
+ return NULL;
}
/* Parses AHEX format. */
-static bool
+static char *
parse_AHEX (struct data_in *i)
{
uint8_t *s = value_str_rw (i->output, i->width);
if (hi == EOF)
break;
else if (lo == EOF)
- {
- data_warning (i, _("Field must have even length."));
- return false;
- }
+ return xstrdup (_("Field must have even length."));
- if (0 != strcmp (i->src_enc, LEGACY_NATIVE))
- {
- hi = legacy_to_native (i->src_enc, hi);
- lo = legacy_to_native (i->src_enc, lo);
- }
if (!c_isxdigit (hi) || !c_isxdigit (lo))
- {
- data_warning (i, _("Field must contain only hex digits."));
- return false;
- }
+ return xstrdup (_("Field must contain only hex digits."));
if (j < i->width)
s[j] = hexit_value (hi) * 16 + hexit_value (lo);
memset (&s[j], ' ', i->width - j);
- return true;
+ return NULL;
}
\f
/* Date & time format components. */
MAX_DIGITS characters in I, storing the result into *RESULT.
Returns true if successful, false if no integer was
present. */
-static bool
+static char * WARN_UNUSED_RESULT
parse_int (struct data_in *i, long *result, size_t max_digits)
{
struct substring head = ss_head (i->input, max_digits);
if (n)
{
ss_advance (&i->input, n);
- return true;
+ return NULL;
}
else
- {
- data_warning (i, _("Syntax error in date field."));
- return false;
- }
+ return xstrdup (_("Syntax error in date field."));
}
/* Parses a date integer between 1 and 31 from I, storing it into
*DAY.
Returns true if successful, false if no date was present. */
-static bool
+static char *
parse_day (struct data_in *i, long *day)
{
- if (!parse_int (i, day, SIZE_MAX))
- return false;
+ char *error = parse_int (i, day, SIZE_MAX);
+ if (error != NULL)
+ return error;
if (*day >= 1 && *day <= 31)
- return true;
+ return NULL;
- data_warning (i, _("Day (%ld) must be between 1 and 31."), *day);
- return false;
+ return xasprintf (_("Day (%ld) must be between 1 and 31."), *day);
}
/* Parses an integer from the beginning of I.
If *TIME_SIGN is SIGN_NO_TIME, allows a sign to precede the
time and sets *TIME_SIGN. Otherwise, does not allow a sign.
Returns true if successful, false if no integer was present. */
-static bool
+static char *
parse_time_units (struct data_in *i, double seconds_per_unit,
enum time_sign *time_sign, double *time)
{
+ char *error;
long units;
if (*time_sign == SIGN_NO_TIME)
*time_sign = SIGN_POSITIVE;
}
}
- if (!parse_int (i, &units, SIZE_MAX))
- return false;
+ error = parse_int (i, &units, SIZE_MAX);
+ if (error != NULL)
+ return error;
if (units < 0)
- {
- data_warning (i, _("Syntax error in date field."));
- return false;
- }
+ return xstrdup (_("Syntax error in date field."));
*time += units * seconds_per_unit;
- return true;
+ return NULL;
}
/* Parses a data delimiter from the beginning of I.
Returns true if successful, false if no delimiter was
present. */
-static bool
+static char *
parse_date_delimiter (struct data_in *i)
{
if (ss_ltrim (&i->input, ss_cstr ("-/.," CC_SPACES)))
- return true;
+ return NULL;
- data_warning (i, _("Delimiter expected between fields in date."));
- return false;
+ return xstrdup (_("Delimiter expected between fields in date."));
}
/* Parses spaces at the beginning of I. */
/* Parses a month name or number from the beginning of I,
storing the month (in range 1...12) into *MONTH.
Returns true if successful, false if no month was present. */
-static bool
+static char *
parse_month (struct data_in *i, long *month)
{
if (c_isdigit (ss_first (i->input)))
{
- if (!parse_int (i, month, SIZE_MAX))
- return false;
+ char *error = parse_int (i, month, SIZE_MAX);
+ if (error != NULL)
+ return error;
if (*month >= 1 && *month <= 12)
- return true;
+ return NULL;
}
else
{
struct substring token = parse_name_token (i);
if (match_name (ss_head (token, 3), english_names, month)
|| match_name (ss_head (token, 4), roman_names, month))
- return true;
+ return NULL;
}
- data_warning (i, _("Unrecognized month format. Months may be specified "
- "as Arabic or Roman numerals or as at least 3 letters "
- "of their English names."));
- return false;
+ return xstrdup (_("Unrecognized month format. Months may be specified "
+ "as Arabic or Roman numerals or as at least 3 letters "
+ "of their English names."));
}
/* Parses a year of at most MAX_DIGITS from the beginning of I,
storing a "4-digit" year into *YEAR. */
-static bool
+static char *
parse_year (struct data_in *i, long *year, size_t max_digits)
{
- if (!parse_int (i, year, max_digits))
- return false;
+ char *error = parse_int (i, year, max_digits);
+ if (error != NULL)
+ return error;
if (*year >= 0 && *year <= 99)
{
*year += epoch_century + 100;
}
if (*year >= 1582 || *year <= 19999)
- return true;
+ return NULL;
- data_warning (i, _("Year (%ld) must be between 1582 and 19999."), *year);
- return false;
+ return xasprintf (_("Year (%ld) must be between 1582 and 19999."), *year);
}
/* Returns true if input in I has been exhausted,
false otherwise. */
-static bool
+static char *
parse_trailer (struct data_in *i)
{
if (ss_is_empty (i->input))
- return true;
+ return NULL;
- data_warning (i, _("Trailing garbage \"%.*s\" following date."),
- (int) ss_length (i->input), ss_data (i->input));
- return false;
+ return xasprintf (_("Trailing garbage `%.*s' following date."),
+ (int) ss_length (i->input), ss_data (i->input));
}
/* Parses a 3-digit Julian day-of-year value from I into *YDAY.
Returns true if successful, false on failure. */
-static bool
+static char *
parse_yday (struct data_in *i, long *yday)
{
struct substring num_s;
ss_get_chars (&i->input, 3, &num_s);
if (ss_span (num_s, ss_cstr (CC_DIGITS)) != 3)
- {
- data_warning (i, _("Julian day must have exactly three digits."));
- return false;
- }
+ return xstrdup (_("Julian day must have exactly three digits."));
else if (!ss_get_long (&num_s, &num) || num < 1 || num > 366)
- {
- data_warning (i, _("Julian day (%ld) must be between 1 and 366."), num);
- return false;
- }
+ return xasprintf (_("Julian day (%ld) must be between 1 and 366."), num);
*yday = num;
- return true;
+ return NULL;
}
/* Parses a quarter-of-year integer between 1 and 4 from I.
Stores the corresponding month into *MONTH.
Returns true if successful, false if no quarter was present. */
-static bool
+static char *
parse_quarter (struct data_in *i, long int *month)
{
long quarter;
+ char *error;
- if (!parse_int (i, &quarter, SIZE_MAX))
- return false;
+ error = parse_int (i, &quarter, SIZE_MAX);
+ if (error != NULL)
+ return error;
if (quarter >= 1 && quarter <= 4)
{
*month = (quarter - 1) * 3 + 1;
- return true;
+ return NULL;
}
- data_warning (i, _("Quarter (%ld) must be between 1 and 4."), quarter);
- return false;
+ return xasprintf (_("Quarter (%ld) must be between 1 and 4."), quarter);
}
/* Parses a week-of-year integer between 1 and 53 from I,
Stores the corresponding year-of-day into *YDAY.
Returns true if successful, false if no week was present. */
-static bool
+static char *
parse_week (struct data_in *i, long int *yday)
{
+ char *error;
long week;
- if (!parse_int (i, &week, SIZE_MAX))
- return false;
+ error = parse_int (i, &week, SIZE_MAX);
+ if (error != NULL)
+ return error;
if (week >= 1 && week <= 53)
{
*yday = (week - 1) * 7 + 1;
- return true;
+ return NULL;
}
- data_warning (i, _("Week (%ld) must be between 1 and 53."), week);
- return false;
+ return xasprintf (_("Week (%ld) must be between 1 and 53."), week);
}
/* Parses a time delimiter from the beginning of I.
Returns true if successful, false if no delimiter was
present. */
-static bool
+static char *
parse_time_delimiter (struct data_in *i)
{
if (ss_ltrim (&i->input, ss_cstr (":" CC_SPACES)) > 0)
- return true;
+ return NULL;
- data_warning (i, _("Delimiter expected between fields in time."));
- return false;
+ return xstrdup (_("Delimiter expected between fields in time."));
}
/* Parses minutes and optional seconds from the beginning of I.
The time is converted into seconds, which are added to
*TIME.
Returns true if successful, false if an error was found. */
-static bool
+static char *
parse_minute_second (struct data_in *i, double *time)
{
long minute;
char buf[64];
+ char *error;
char *cp;
/* Parse minutes. */
- if (!parse_int (i, &minute, SIZE_MAX))
- return false;
+ error = parse_int (i, &minute, SIZE_MAX);
+ if (error != NULL)
+ return error;
if (minute < 0 || minute > 59)
- {
- data_warning (i, _("Minute (%ld) must be between 0 and 59."), minute);
- return false;
- }
+ return xasprintf (_("Minute (%ld) must be between 0 and 59."), minute);
*time += 60. * minute;
/* Check for seconds. */
if (ss_ltrim (&i->input, ss_cstr (":" CC_SPACES)) == 0
|| !c_isdigit (ss_first (i->input)))
- return true;
+ return NULL;
/* Parse seconds. */
cp = buf;
*time += strtod (buf, NULL);
- return true;
+ return NULL;
}
/* Parses a weekday name from the beginning of I,
storing a value of 1=Sunday...7=Saturday into *WEEKDAY.
Returns true if successful, false if an error was found. */
-static bool
+static char *
parse_weekday (struct data_in *i, long *weekday)
{
static const char *const weekday_names[] =
struct substring token = parse_name_token (i);
bool ok = match_name (ss_head (token, 2), weekday_names, weekday);
if (!ok)
- data_warning (i, _("Unrecognized weekday name. At least the first two "
- "letters of an English weekday name must be "
- "specified."));
- return ok;
+ return xstrdup (_("Unrecognized weekday name. At least the first two "
+ "letters of an English weekday name must be "
+ "specified."));
+ return NULL;
}
\f
/* Date & time formats. */
-/* Helper function for passing to
- calendar_gregorian_to_offset. */
-static void
-calendar_error (void *i_, const char *format, ...)
-{
- struct data_in *i = i_;
- va_list args;
-
- va_start (args, format);
- vdata_warning (i, format, args);
- va_end (args);
-}
-
/* Parses WKDAY format. */
-static bool
+static char *
parse_WKDAY (struct data_in *i)
{
long weekday;
+ char *error;
if (trim_spaces_and_check_missing (i))
- return true;
+ return NULL;
- if (!parse_weekday (i, &weekday)
- || !parse_trailer (i))
- return false;
+ error = parse_weekday (i, &weekday);
+ if (error == NULL)
+ error = parse_trailer (i);
i->output->f = weekday;
- return true;
+ return error;
}
/* Parses MONTH format. */
-static bool
+static char *
parse_MONTH (struct data_in *i)
{
long month;
+ char *error;
if (trim_spaces_and_check_missing (i))
- return true;
+ return NULL;
- if (!parse_month (i, &month)
- || !parse_trailer (i))
- return false;
+ error = parse_month (i, &month);
+ if (error == NULL)
+ error = parse_trailer (i);
i->output->f = month;
- return true;
+ return error;
}
/* Parses DATE, ADATE, EDATE, JDATE, SDATE, QYR, MOYR, KWYR,
DATETIME, TIME and DTIME formats. */
-static bool
+static char *
parse_date (struct data_in *i)
{
long int year = INT_MIN;
const char *template = fmt_date_template (i->format);
size_t template_width = strlen (template);
+ char *error;
if (trim_spaces_and_check_missing (i))
- return true;
+ return NULL;
while (*template != '\0')
{
unsigned char ch = *template;
int count = 1;
- bool ok;
while (template[count] == ch)
count++;
template += count;
- ok = true;
switch (ch)
{
case 'd':
- ok = count < 3 ? parse_day (i, &day) : parse_yday (i, &yday);
+ error = count < 3 ? parse_day (i, &day) : parse_yday (i, &yday);
break;
case 'm':
- ok = parse_month (i, &month);
+ error = parse_month (i, &month);
break;
case 'y':
{
else
max_digits = 2;
}
- ok = parse_year (i, &year, max_digits);
+ error = parse_year (i, &year, max_digits);
}
break;
case 'q':
- ok = parse_quarter (i, &month);
+ error = parse_quarter (i, &month);
break;
case 'w':
- ok = parse_week (i, &yday);
+ error = parse_week (i, &yday);
break;
case 'D':
- ok = parse_time_units (i, 60. * 60. * 24., &time_sign, &time);
+ error = parse_time_units (i, 60. * 60. * 24., &time_sign, &time);
break;
case 'H':
- ok = parse_time_units (i, 60. * 60., &time_sign, &time);
+ error = parse_time_units (i, 60. * 60., &time_sign, &time);
break;
case 'M':
- ok = parse_minute_second (i, &time);
+ error = parse_minute_second (i, &time);
break;
case '-':
case '/':
case '.':
case 'X':
- ok = parse_date_delimiter (i);
+ error = parse_date_delimiter (i);
break;
case ':':
- ok = parse_time_delimiter (i);
+ error = parse_time_delimiter (i);
case ' ':
parse_spaces (i);
+ error = NULL;
break;
default:
assert (count == 1);
if (!ss_match_char (&i->input, c_toupper (ch))
&& !ss_match_char (&i->input, c_tolower (ch)))
- {
- data_warning (i, _("`%c' expected in date field."), ch);
- return false;
- }
+ error = xasprintf (_("`%c' expected in date field."), ch);
+ else
+ error = NULL;
break;
}
- if (!ok)
- return false;
+ if (error != NULL)
+ return error;
}
- if (!parse_trailer (i))
- return false;
+ error = parse_trailer (i);
+ if (error != NULL)
+ return error;
if (year != INT_MIN)
{
- double ofs = calendar_gregorian_to_offset (year, month, day,
- calendar_error, i);
+ char *error;
+ double ofs;
+
+ ofs = calendar_gregorian_to_offset (year, month, day, &error);
if (ofs == SYSMIS)
- return false;
+ return error;
date = (yday - 1 + ofs) * 60. * 60. * 24.;
}
else
date = 0.;
i->output->f = date + (time_sign == SIGN_NEGATIVE ? -time : time);
- return true;
+ return NULL;
}
\f
/* Utility functions. */
-/* Outputs FORMAT with the given ARGS as a warning for input
- I. */
-static void
-vdata_warning (const struct data_in *i, const char *format, va_list args)
-{
- struct msg m;
- struct string text;
-
- ds_init_empty (&text);
- ds_put_char (&text, '(');
- if (i->first_column != 0)
- {
- if (i->first_column == i->last_column - 1)
- ds_put_format (&text, _("column %d"), i->first_column);
- else
- ds_put_format (&text, _("columns %d-%d"),
- i->first_column, i->last_column - 1);
- ds_put_cstr (&text, ", ");
- }
- ds_put_format (&text, _("%s field) "), fmt_name (i->format));
- ds_put_vformat (&text, format, args);
-
- m.category = MSG_C_DATA;
- m.severity = MSG_S_WARNING;
- m.text = ds_cstr (&text);
- m.where.file_name = NULL;
- m.where.line_number = -1;
-
- msg_emit (&m);
-}
-
-/* Outputs FORMAT with the given ARGS as a warning for input
- I. */
-static void
-data_warning (const struct data_in *i, const char *format, ...)
-{
- va_list args;
-
- va_start (args, format);
- vdata_warning (i, format, args);
- va_end (args);
-}
-
-/* Apply implied decimal places to output. */
-static void
-apply_implied_decimals (struct data_in *i)
-{
- if (i->implied_decimals > 0)
- i->output->f /= pow (10., i->implied_decimals);
-}
-
/* Sets the default result for I.
For a numeric format, this is the value set on SET BLANKS
(typically system-missing); for a string format, it is all
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2006, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#define DATA_DATA_IN_H 1
#include <stdbool.h>
-#include <libpspp/legacy-encoding.h>
-#include <libpspp/float-format.h>
-#include <libpspp/integer-format.h>
-#include <libpspp/str.h>
-#include <data/format.h>
+#include "data/format.h"
+#include "libpspp/legacy-encoding.h"
+#include "libpspp/str.h"
-enum fmt_type;
union value;
struct dictionary;
-bool data_in (struct substring input, const char *encoding,
- enum fmt_type, int implied_decimals,
- int first_column, int last_column,
- const struct dictionary *dict,
- union value *output, int width);
+
+char *data_in (struct substring input, const char *input_encoding,
+ enum fmt_type,
+ union value *output, int width, const char *output_encoding);
+
+bool data_in_msg (struct substring input, const char *input_encoding,
+ enum fmt_type,
+ union value *output, int width, const char *output_encoding);
+
+void data_in_imply_decimals (struct substring input, const char *encoding,
+ enum fmt_type format, int d, union value *output);
#endif /* data/data-in.h */
char *handle_name;
struct file_handle *handle;
- handle_name = id != NULL ? xstrdup (id) : xasprintf ("\"%s\"", file_name);
+ handle_name = id != NULL ? xstrdup (id) : xasprintf ("`%s'", file_name);
handle = create_handle (id, handle_name, FH_REF_FILE);
handle->file_name = xstrdup (file_name);
handle->mode = properties->mode;
#include "gettext.h"
#define _(msgid) gettext (msgid)
-
+struct fmt_settings
+ {
+ struct fmt_number_style styles[FMT_NUMBER_OF_FORMATS];
+ };
bool is_fmt_type (enum fmt_type);
static int max_digits_for_bytes (int bytes);
-void fmt_number_style_init (struct fmt_number_style *style);
+static void fmt_number_style_init (struct fmt_number_style *);
+static void fmt_number_style_clone (struct fmt_number_style *,
+ const struct fmt_number_style *);
+static void fmt_number_style_destroy (struct fmt_number_style *);
+/* Creates and returns a new struct fmt_settings with default format styles. */
+struct fmt_settings *
+fmt_settings_create (void)
+{
+ struct fmt_settings *settings;
+ int t;
+
+ settings = xzalloc (sizeof *settings);
+ for (t = 0 ; t < FMT_NUMBER_OF_FORMATS ; ++t )
+ fmt_number_style_init (&settings->styles[t]);
+ fmt_settings_set_decimal (settings, '.');
-/* Initialize the format module. */
-struct fmt_number_style *
-fmt_create (void)
+ return settings;
+}
+
+/* Destroys SETTINGS. */
+void
+fmt_settings_destroy (struct fmt_settings *settings)
{
- struct fmt_number_style *styles =
- xcalloc (FMT_NUMBER_OF_FORMATS, sizeof (*styles));
+ if (settings != NULL)
+ {
+ int t;
+
+ for (t = 0 ; t < FMT_NUMBER_OF_FORMATS ; ++t )
+ fmt_number_style_destroy (&settings->styles[t]);
+ free (settings->styles);
+ }
+}
+
+/* Returns a copy of SETTINGS. */
+struct fmt_settings *
+fmt_settings_clone (const struct fmt_settings *old)
+{
+ struct fmt_settings *new;
int t;
+
+ new = xmalloc (sizeof *new);
for (t = 0 ; t < FMT_NUMBER_OF_FORMATS ; ++t )
- fmt_number_style_init (&styles[t]);
+ fmt_number_style_clone (&new->styles[t], &old->styles[t]);
+
+ return new;
+}
- fmt_set_decimal (styles, '.');
+/* Returns the number formatting style associated with the given
+ format TYPE. */
+const struct fmt_number_style *
+fmt_settings_get_style (const struct fmt_settings *settings,
+ enum fmt_type type)
+{
+ assert (is_fmt_type (type));
+ return &settings->styles[type];
+}
- return styles;
+void
+fmt_settings_set_style (struct fmt_settings *settings, enum fmt_type type,
+ const struct fmt_number_style *style)
+{
+ fmt_check_style (style);
+ fmt_number_style_destroy (&settings->styles[type]);
+ fmt_number_style_clone (&settings->styles[type], style);
}
+/* Sets the number style for TYPE to have the given standard
+ PREFIX and SUFFIX, "-" as prefix suffix, an empty negative
+ suffix, DECIMAL as the decimal point character, and GROUPING
+ as the grouping character. */
+static void
+set_style (struct fmt_settings *settings, enum fmt_type type,
+ const char *prefix, const char *suffix,
+ char decimal, char grouping)
+{
+ struct fmt_number_style *style;
+
+ assert (is_fmt_type (type));
-/* Deinitialize the format module. */
+ style = &settings->styles[type];
+
+ fmt_number_style_destroy (style);
+
+ ss_alloc_substring (&style->neg_prefix, ss_cstr ("-"));
+ ss_alloc_substring (&style->prefix, ss_cstr (prefix));
+ ss_alloc_substring (&style->suffix, ss_cstr (suffix));
+ style->decimal = decimal;
+ style->grouping = grouping;
+}
+
+/* Sets the decimal point character for SETTINGS to DECIMAL. */
void
-fmt_done (struct fmt_number_style *styles)
+fmt_settings_set_decimal (struct fmt_settings *settings, char decimal)
{
- int t;
- for (t = 0 ; t < FMT_NUMBER_OF_FORMATS ; ++t )
- fmt_number_style_destroy (&styles[t]);
+ int grouping = decimal == '.' ? ',' : '.';
+ assert (decimal == '.' || decimal == ',');
- free (styles);
+ set_style (settings, FMT_F, "", "", decimal, 0);
+ set_style (settings, FMT_E, "", "", decimal, 0);
+ set_style (settings, FMT_COMMA, "", "", decimal, grouping);
+ set_style (settings, FMT_DOT, "", "", grouping, decimal);
+ set_style (settings, FMT_DOLLAR, "$", "", decimal, grouping);
+ set_style (settings, FMT_PCT, "", "%", decimal, 0);
}
/* Returns an input format specification with type TYPE, width W,
return map[bytes - 1];
}
\f
-
-
-void
+static void
fmt_number_style_init (struct fmt_number_style *style)
{
style->neg_prefix = ss_empty ();
style->grouping = 0;
}
+static void
+fmt_number_style_clone (struct fmt_number_style *new,
+ const struct fmt_number_style *old)
+{
+ ss_alloc_substring (&new->neg_prefix, old->neg_prefix);
+ ss_alloc_substring (&new->prefix, old->prefix);
+ ss_alloc_substring (&new->suffix, old->suffix);
+ ss_alloc_substring (&new->neg_suffix, old->neg_suffix);
+ new->decimal = old->decimal;
+ new->grouping = old->grouping;
+}
/* Destroys a struct fmt_number_style. */
-void
+static void
fmt_number_style_destroy (struct fmt_number_style *style)
{
if (style != NULL)
}
}
-/* Returns the number formatting style associated with the given
- format TYPE. */
-const struct fmt_number_style *
-fmt_get_style (const struct fmt_number_style *styles, enum fmt_type type)
-{
- assert (is_fmt_type (type));
- return &styles[type];
-}
-
-
/* Checks that style is STYLE sane */
void
fmt_check_style (const struct fmt_number_style *style)
return ss_length (style->neg_prefix) + ss_length (style->neg_suffix);
}
-
-/* Sets the number style for TYPE to have the given standard
- PREFIX and SUFFIX, "-" as prefix suffix, an empty negative
- suffix, DECIMAL as the decimal point character, and GROUPING
- as the grouping character. */
-static void
-set_style (struct fmt_number_style *styles, enum fmt_type type,
- const char *prefix, const char *suffix,
- char decimal, char grouping)
-{
- struct fmt_number_style *style;
-
- assert (is_fmt_type (type));
-
- style = &styles[type] ;
-
- fmt_number_style_destroy (style);
-
- ss_alloc_substring (&style->neg_prefix, ss_cstr ("-"));
- ss_alloc_substring (&style->prefix, ss_cstr (prefix));
- ss_alloc_substring (&style->suffix, ss_cstr (suffix));
- style->decimal = decimal;
- style->grouping = grouping;
-}
-
-/* Sets the decimal point character to DECIMAL. */
-void
-fmt_set_decimal (struct fmt_number_style *styles, char decimal)
-{
- int grouping = decimal == '.' ? ',' : '.';
- assert (decimal == '.' || decimal == ',');
-
- set_style (styles, FMT_F, "", "", decimal, 0);
- set_style (styles, FMT_E, "", "", decimal, 0);
- set_style (styles, FMT_COMMA, "", "", decimal, grouping);
- set_style (styles, FMT_DOT, "", "", grouping, decimal);
- set_style (styles, FMT_DOLLAR, "$", "", decimal, grouping);
- set_style (styles, FMT_PCT, "", "%", decimal, 0);
-}
-\f
/* Returns the struct fmt_desc for the given format TYPE. */
static const struct fmt_desc *
get_fmt_desc (enum fmt_type type)
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2006, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
/* Maximum width of any numeric format. */
#define FMT_MAX_NUMERIC_WIDTH 40
-/* A numeric output style. */
-struct fmt_number_style
- {
- struct substring neg_prefix; /* Negative prefix. */
- struct substring prefix; /* Prefix. */
- struct substring suffix; /* Suffix. */
- struct substring neg_suffix; /* Negative suffix. */
- char decimal; /* Decimal point: '.' or ','. */
- char grouping; /* Grouping character: ',', '.', or 0. */
- };
-
-
-extern struct fmt_number_style *the_styles ;
-
-
-/* Initialization. */
-struct fmt_number_style * fmt_create (void);
-void fmt_done (struct fmt_number_style *);
-
/* Constructing formats. */
struct fmt_spec fmt_for_input (enum fmt_type, int w, int d) PURE_FUNCTION;
struct fmt_spec fmt_for_output (enum fmt_type, int w, int d) PURE_FUNCTION;
void fmt_fix_output (struct fmt_spec *);
/* Format types. */
+bool is_fmt_type (enum fmt_type);
+
const char *fmt_name (enum fmt_type) PURE_FUNCTION;
bool fmt_from_name (const char *name, enum fmt_type *);
const char *fmt_date_template (enum fmt_type) PURE_FUNCTION;
\f
+/* Format settings.
+
+ A fmt_settings is really just a collection of one "struct fmt_number_style"
+ for each format type. */
+struct fmt_settings *fmt_settings_create (void);
+void fmt_settings_destroy (struct fmt_settings *);
+struct fmt_settings *fmt_settings_clone (const struct fmt_settings *);
+
+void fmt_settings_set_decimal (struct fmt_settings *, char);
+
+const struct fmt_number_style *fmt_settings_get_style (
+ const struct fmt_settings *, enum fmt_type);
+void fmt_settings_set_style (struct fmt_settings *, enum fmt_type,
+ const struct fmt_number_style *);
+\f
+/* A numeric output style. */
+struct fmt_number_style
+ {
+ struct substring neg_prefix; /* Negative prefix. */
+ struct substring prefix; /* Prefix. */
+ struct substring suffix; /* Suffix. */
+ struct substring neg_suffix; /* Negative suffix. */
+ char decimal; /* Decimal point: '.' or ','. */
+ char grouping; /* Grouping character: ',', '.', or 0. */
+ };
+
/* Maximum length of prefix or suffix string in
struct fmt_number_style. */
#define FMT_STYLE_AFFIX_MAX 16
-
-struct fmt_number_style *fmt_number_style_create (void);
-void fmt_number_style_destroy (struct fmt_number_style *);
-
int fmt_affix_width (const struct fmt_number_style *);
int fmt_neg_affix_width (const struct fmt_number_style *);
-bool is_fmt_type (enum fmt_type);
-
-const struct fmt_number_style *fmt_get_style (const struct fmt_number_style *, enum fmt_type);
-
void fmt_check_style (const struct fmt_number_style *style);
-int fmt_grouping_char (const struct fmt_number_style *, enum fmt_type);
-
-void fmt_set_decimal (struct fmt_number_style *, char);
extern const struct fmt_spec F_8_0 ;
static void process_node (struct gnumeric_reader *r);
-#define _xml(X) (const xmlChar *)(X)
+#define _xml(X) (CHAR_CAST (const xmlChar *, X))
-#define _xmlchar_to_int(X) atoi((const char *)X)
+#define _xmlchar_to_int(X) (atoi(CHAR_CAST (const char *, X)))
static void
gnm_file_casereader_destroy (struct casereader *reader UNUSED, void *r_)
value_copy_str_rpad (v, var_get_width (var), xv, ' ');
else
{
- const char *text = (const char *) xv;
+ const char *text = CHAR_CAST (const char *, xv);
char *endptr;
errno = 0;
if ( NULL == gz)
{
- msg (ME, _("Error opening \"%s\" for reading as a Gnumeric file: %s."),
+ msg (ME, _("Error opening `%s' for reading as a Gnumeric file: %s."),
gri->file_name, strerror (errno));
goto error;
&r->start_col, &r->start_row,
&r->stop_col, &r->stop_row))
{
- msg (SE, _("Invalid cell range \"%s\""),
+ msg (SE, _("Invalid cell range `%s'"),
gri->cell_range);
goto error;
}
if ( r->node_type == XML_READER_TYPE_TEXT )
{
xmlChar *value = xmlTextReaderValue (r->xtr);
- const char *text = (const char *) value;
+ const char *text = CHAR_CAST (const char *, value);
if ( r->row < r->start_row)
{
/* Create the dictionary and populate it */
*dict = r->dict = dict_create ();
- dict_set_encoding (r->dict, (const char *) xmlTextReaderConstEncoding (r->xtr));
+ dict_set_encoding (r->dict, CHAR_CAST (const char *, xmlTextReaderConstEncoding (r->xtr)));
for (i = 0 ; i < n_var_specs ; ++i )
{
if ( n_var_specs == 0 )
{
- msg (MW, _("Selected sheet or range of spreadsheet \"%s\" is empty."),
+ msg (MW, _("Selected sheet or range of spreadsheet `%s' is empty."),
gri->file_name);
goto error;
}
m.severity = MSG_S_ERROR;
m.where.file_name = NULL;
m.where.line_number = 0;
+ m.where.first_column = 0;
+ m.where.last_column = 0;
m.text = ds_cstr (&text);
msg_emit (&m);
m.severity = MSG_S_WARNING;
m.where.file_name = NULL;
m.where.line_number = 0;
+ m.where.first_column = 0;
+ m.where.last_column = 0;
m.text = ds_cstr (&text);
msg_emit (&m);
{
if (fn_close (fh_get_file_name (r->fh), r->file) == EOF)
{
- msg (ME, _("Error closing portable file \"%s\": %s."),
+ msg (ME, _("Error closing portable file `%s': %s."),
fh_get_file_name (r->fh), strerror (errno));
r->ok = false;
}
r->file = fn_open (fh_get_file_name (r->fh), "rb");
if (r->file == NULL)
{
- msg (ME, _("An error occurred while opening \"%s\" for reading "
+ msg (ME, _("An error occurred while opening `%s' for reading "
"as a portable file: %s."),
fh_get_file_name (r->fh), strerror (errno));
goto error;
&w->file, NULL);
if (w->rf == NULL)
{
- msg (ME, _("Error opening \"%s\" for writing as a portable file: %s."),
+ msg (ME, _("Error opening `%s' for writing as a portable file: %s."),
fh_get_file_name (fh), strerror (errno));
goto error;
}
ok = false;
if (!ok)
- msg (ME, _("An I/O error occurred writing portable file \"%s\"."),
+ msg (ME, _("An I/O error occurred writing portable file `%s'."),
fh_get_file_name (w->fh));
if (ok ? !replace_file_commit (w->rf) : !replace_file_abort (w->rf))
/* PSPP - a program for statistical analysis.
- Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
}
}
- r->postgres_epoch =
- calendar_gregorian_to_offset (2000, 1, 1, NULL, NULL);
+ r->postgres_epoch = calendar_gregorian_to_offset (2000, 1, 1, NULL);
/* Create the dictionary and populate it */
case VARCHAROID:
case BPCHAROID:
case BYTEAOID:
- memcpy (value_str_rw (val, var_width), (char *) vptr,
+ memcpy (value_str_rw (val, var_width), vptr,
MIN (length, var_width));
break;
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#include "settings.h"
+
+#include "data/settings.h"
+
#include <assert.h>
#include <stdlib.h>
#include <time.h>
-#include "format.h"
-#include "value.h"
-#include "xalloc.h"
-#include <data/case.h>
-#include <libpspp/i18n.h>
-#include <libpspp/integer-format.h>
-#include <libpspp/message.h>
-#include "error.h"
-#include "minmax.h"
+#include "data/case.h"
+#include "data/format.h"
+#include "data/value.h"
+#include "libpspp/i18n.h"
+#include "libpspp/integer-format.h"
+#include "libpspp/message.h"
+
+#include "gl/error.h"
+#include "gl/minmax.h"
+#include "gl/xalloc.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
-static int global_algorithm = ENHANCED;
-
struct settings
{
/* Integer format used for IB and PIB input. */
/* Format of reals in output (SET WRB). */
enum float_format output_float_format;
- int *viewlength;
- int *viewwidth;
+ int viewlength;
+ int viewwidth;
bool safer_mode;
bool include;
int epoch;
bool testing_mode;
int cmd_algorithm;
- int *algorithm;
+ int global_algorithm;
int syntax;
- struct fmt_number_style *styles;
+ struct fmt_settings *styles;
enum settings_output_devices output_routing[SETTINGS_N_OUTPUT_TYPES];
};
static struct settings the_settings = {
- /* input_integer_format */
- INTEGER_NATIVE,
- /* input_float_format */
- FLOAT_NATIVE_DOUBLE,
- /* output_integer_format */
- INTEGER_NATIVE,
- /* output_float_format */
- FLOAT_NATIVE_DOUBLE,
- /* viewlength */
- NULL,
- /* viewwidth */
- NULL,
- /* safer_mode */
- false,
- /* include */
- true,
- /* epoch */
- -1,
- /* route_errors_to_terminal */
- true,
- /* route_errors_to_listing */
- true,
- /* scompress */
- true,
- /* undefined */
- true,
- /* blanks */
- SYSMIS,
- /* max_messages */
+ INTEGER_NATIVE, /* input_integer_format */
+ FLOAT_NATIVE_DOUBLE, /* input_float_format */
+ INTEGER_NATIVE, /* output_integer_format */
+ FLOAT_NATIVE_DOUBLE, /* output_float_format */
+ 24, /* viewlength */
+ 79, /* viewwidth */
+ false, /* safer_mode */
+ true, /* include */
+ -1, /* epoch */
+ true, /* route_errors_to_terminal */
+ true, /* route_errors_to_listing */
+ true, /* scompress */
+ true, /* undefined */
+ SYSMIS, /* blanks */
+
+ /* max_messages */
{
100, /* MSG_S_ERROR */
100, /* MSG_S_WARNING */
100 /* MSG_S_NOTE */
},
- /* printback */
- true,
- /* mprint */
- true,
- /* mxloops */
- 1,
- /* nulline */
- true,
- /* endcmd */
- '.',
- /* workspace */
- 64L * 1024 * 1024,
- /* default_format */
- {FMT_F, 8, 2},
- /* testing_mode */
- false,
- /* cmd_algorithm */
- ENHANCED,
- /* algorithm */
- &global_algorithm,
- /* syntax */
- ENHANCED,
- /* styles */
- NULL,
- /* output devices */
+
+ true, /* printback */
+ true, /* mprint */
+ 1, /* mxloops */
+ true, /* nulline */
+ '.', /* endcmd */
+ 64L * 1024 * 1024, /* workspace */
+ {FMT_F, 8, 2}, /* default_format */
+ false, /* testing_mode */
+ ENHANCED, /* cmd_algorithm */
+ ENHANCED, /* global_algorithm */
+ ENHANCED, /* syntax */
+ NULL, /* styles */
+
+ /* output_routing */
{SETTINGS_DEVICE_LISTING | SETTINGS_DEVICE_TERMINAL,
SETTINGS_DEVICE_LISTING | SETTINGS_DEVICE_TERMINAL,
0,
SETTINGS_DEVICE_LISTING | SETTINGS_DEVICE_TERMINAL}
};
-static void init_viewport ( int *, int *);
-
+/* Initializes the settings module. */
void
-settings_init (int *width, int *length)
+settings_init (void)
{
- init_viewport (width, length);
settings_set_epoch (-1);
- the_settings.styles = fmt_create ();
+ the_settings.styles = fmt_settings_create ();
settings_set_decimal_char (get_system_decimal ());
}
+/* Cleans up the settings module. */
void
settings_done (void)
{
- fmt_done (the_settings.styles);
+ settings_destroy (&the_settings);
+}
+
+static void
+settings_copy (struct settings *dst, const struct settings *src)
+{
+ *dst = *src;
+ dst->styles = fmt_settings_clone (src->styles);
+}
+
+/* Returns a copy of the current settings. */
+struct settings *
+settings_get (void)
+{
+ struct settings *s = xmalloc (sizeof *s);
+ settings_copy (s, &the_settings);
+ return s;
+}
+
+/* Replaces the current settings by those in S. The caller retains ownership
+ of S. */
+void
+settings_set (const struct settings *s)
+{
+ settings_destroy (&the_settings);
+ settings_copy (&the_settings, s);
+}
+
+/* Destroys S. */
+void
+settings_destroy (struct settings *s)
+{
+ if (s != NULL)
+ {
+ fmt_settings_destroy (s->styles);
+ if (s != &the_settings)
+ free (s);
+ }
}
/* Returns the floating-point format used for RB and RBHEX
int
settings_get_viewlength (void)
{
- return *the_settings.viewlength;
+ return the_settings.viewlength;
}
/* Sets the view length. */
void
settings_set_viewlength ( int viewlength_)
{
- *the_settings.viewlength = viewlength_;
+ the_settings.viewlength = viewlength_;
}
/* Screen width. */
int
settings_get_viewwidth(void)
{
- return *the_settings.viewwidth;
+ return the_settings.viewwidth;
}
/* Sets the screen width. */
void
settings_set_viewwidth ( int viewwidth_)
{
- *the_settings.viewwidth = viewwidth_;
-}
-
-static void
-init_viewport ( int *width, int *length)
-{
- the_settings.viewwidth = width;
- the_settings.viewlength = length;
+ the_settings.viewwidth = viewwidth_;
}
/* Whether PSPP can erase and overwrite files. */
enum behavior_mode
settings_get_algorithm (void)
{
- return *the_settings.algorithm;
+ return the_settings.cmd_algorithm;
}
/* Set the algorithm option globally. */
void
settings_set_algorithm (enum behavior_mode mode)
{
- global_algorithm = mode;
+ the_settings.global_algorithm = the_settings.cmd_algorithm = mode;
}
/* Set the algorithm option for this command only */
settings_set_cmd_algorithm ( enum behavior_mode mode)
{
the_settings.cmd_algorithm = mode;
- the_settings.algorithm = &the_settings.cmd_algorithm;
}
/* Unset the algorithm option for this command */
void
unset_cmd_algorithm (void)
{
- the_settings.algorithm = &global_algorithm;
+ the_settings.cmd_algorithm = the_settings.global_algorithm;
}
/* Get the current syntax setting */
return true;
}
-/* Extracts a token from IN into a newly allocated AFFIX. Tokens
- are delimited by GROUPING. The token is truncated to at most
- FMT_STYLE_AFFIX_MAX characters. Returns the first character
- following the token. */
+/* Extracts a token from IN into AFFIX, using BUFFER for storage. BUFFER must
+ have at least FMT_STYLE_AFFIX_MAX + 1 bytes of space. Tokens are delimited
+ by GROUPING. The token is truncated to at most FMT_STYLE_AFFIX_MAX bytes,
+ followed by a null terminator. Returns the first character following the
+ token. */
static const char *
-extract_cc_token (const char *in, int grouping, struct substring *affix)
+extract_cc_token (const char *in, int grouping, struct substring *affix,
+ char buffer[FMT_STYLE_AFFIX_MAX + 1])
{
size_t ofs = 0;
- ss_alloc_uninit (affix, FMT_STYLE_AFFIX_MAX);
+
for (; *in != '\0' && *in != grouping; in++)
{
if (*in == '\'' && in[1] == grouping)
in++;
if (ofs < FMT_STYLE_AFFIX_MAX)
- ss_data (*affix)[ofs++] = *in;
+ buffer[ofs++] = *in;
}
- affix->length = ofs;
+ *affix = ss_buffer (buffer, ofs);
if (*in == grouping)
in++;
return in;
}
-
/* Sets custom currency specifier CC having name CC_NAME ('A' through
'E') to correspond to the settings in CC_STRING. */
bool
settings_set_cc (const char *cc_string, enum fmt_type type)
{
- struct fmt_number_style *cc = &the_settings.styles[type];
+ char a[FMT_STYLE_AFFIX_MAX + 1];
+ char b[FMT_STYLE_AFFIX_MAX + 1];
+ char c[FMT_STYLE_AFFIX_MAX + 1];
+ char d[FMT_STYLE_AFFIX_MAX + 1];
+ struct fmt_number_style cc;
assert (fmt_get_category (type) == FMT_CAT_CUSTOM);
/* Determine separators. */
- if (!find_cc_separators (cc_string, cc))
+ if (!find_cc_separators (cc_string, &cc))
{
msg (SE, _("%s: Custom currency string `%s' does not contain "
"exactly three periods or commas (or it contains both)."),
return false;
}
- cc_string = extract_cc_token (cc_string, cc->grouping, &cc->neg_prefix);
- cc_string = extract_cc_token (cc_string, cc->grouping, &cc->prefix);
- cc_string = extract_cc_token (cc_string, cc->grouping, &cc->suffix);
- cc_string = extract_cc_token (cc_string, cc->grouping, &cc->neg_suffix);
+ cc_string = extract_cc_token (cc_string, cc.grouping, &cc.neg_prefix, a);
+ cc_string = extract_cc_token (cc_string, cc.grouping, &cc.prefix, b);
+ cc_string = extract_cc_token (cc_string, cc.grouping, &cc.suffix, c);
+ cc_string = extract_cc_token (cc_string, cc.grouping, &cc.neg_suffix, d);
- fmt_check_style (cc);
+ fmt_settings_set_style (the_settings.styles, type, &cc);
return true;
}
int
settings_get_decimal_char (enum fmt_type type)
{
- return fmt_get_style (the_settings.styles, type)->decimal;
+ return fmt_settings_get_style (the_settings.styles, type)->decimal;
}
void
settings_set_decimal_char (char decimal)
{
- fmt_set_decimal (the_settings.styles, decimal);
+ fmt_settings_set_decimal (the_settings.styles, decimal);
}
-
-
/* Returns the number formatting style associated with the given
format TYPE. */
const struct fmt_number_style *
settings_get_style (enum fmt_type type)
{
assert (is_fmt_type (type));
- return &the_settings.styles[type];
+ return fmt_settings_get_style (the_settings.styles, type);
}
-
/* Returns a string of the form "$#,###.##" according to FMT,
which must be of type FMT_DOLLAR. The caller must free the
string. */
char *
settings_dollar_template (const struct fmt_spec *fmt)
{
- const struct fmt_number_style *styles = the_settings.styles;
struct string str = DS_EMPTY_INITIALIZER;
int c;
const struct fmt_number_style *fns ;
assert (fmt->type == FMT_DOLLAR);
- fns = fmt_get_style (styles, fmt->type);
+ fns = fmt_settings_get_style (the_settings.styles, fmt->type);
ds_put_char (&str, '$');
for (c = MAX (fmt->w - fmt->d - 1, 0); c > 0; )
struct caseproto;
struct settings;
-void settings_init (int *, int *);
+void settings_init (void);
void settings_done (void);
+struct settings *settings_get (void);
+void settings_set (const struct settings *);
+void settings_destroy (struct settings *);
+
enum float_format settings_get_input_float_format (void);
void settings_set_input_float_format ( enum float_format);
r->file = fn_open (fh_get_file_name (fh), "rb");
if (r->file == NULL)
{
- msg (ME, _("Error opening \"%s\" for reading as a system file: %s."),
+ msg (ME, _("Error opening `%s' for reading as a system file: %s."),
fh_get_file_name (r->fh), strerror (errno));
goto error;
}
{
if (fn_close (fh_get_file_name (r->fh), r->file) == EOF)
{
- msg (ME, _("Error closing system file \"%s\": %s."),
+ msg (ME, _("Error closing system file `%s': %s."),
fh_get_file_name (r->fh), strerror (errno));
r->error = true;
}
/* Check variable name. */
if (name[0] == '$' || name[0] == '#')
- sys_error (r, "Variable name begins with invalid character `%c'.",
+ sys_error (r, _("Variable name begins with invalid character `%c'."),
name[0]);
if (!var_is_plausible_name (name, false))
sys_error (r, _("Invalid variable name `%s'."), name);
mrset->type = MRSET_MC;
if (!text_match (text, ' '))
{
- sys_warn (r, _("Missing space following 'C' at offset %zu "
- "in MRSETS record"), text_pos (text));
+ sys_warn (r, _("Missing space following `%c' at offset %zu "
+ "in MRSETS record"), 'C', text_pos (text));
break;
}
}
mrset->cat_source = MRSET_COUNTEDVALUES;
if (!text_match (text, ' '))
{
- sys_warn (r, _("Missing space following 'E' at offset %zu "
- "in MRSETS record"), text_pos (text));
+ sys_warn (r, _("Missing space following `%c' at offset %zu "
+ "in MRSETS record"), 'E', text_pos (text));
break;
}
if (!strcmp (number, "11"))
mrset->label_from_var_label = true;
else if (strcmp (number, "1"))
- sys_warn (r, _("Unexpected label source value \"%s\" "
- "following 'E' at offset %zu in MRSETS record"),
+ sys_warn (r, _("Unexpected label source value `%s' "
+ "following `E' at offset %zu in MRSETS record"),
number, text_pos (text));
}
else
{
- sys_warn (r, _("Missing 'C', 'D', or 'E' at offset %zu "
+ sys_warn (r, _("Missing `C', `D', or `E' at offset %zu "
"in MRSETS record."),
text_pos (text));
break;
sys_warn (r, _("Duplicate value label for %g on %s."),
label->value.f, var_get_name (v));
else
- sys_warn (r, _("Duplicate value label for \"%.*s\" on %s."),
+ sys_warn (r, _("Duplicate value label for `%.*s' on %s."),
max_width, value_str (&label->value, max_width),
var_get_name (v));
}
}
if (!skip && !var_add_value_label (v, &value, label))
- sys_warn (r, _("Duplicate value label for \"%.*s\" on %s."),
+ sys_warn (r, _("Duplicate value label for `%.*s' on %s."),
width, value_str (&value, width), var_get_name (v));
}
}
struct string text;
ds_init_empty (&text);
- ds_put_format (&text, "\"%s\" near offset 0x%llx: ",
+ ds_put_format (&text, "`%s' near offset 0x%llx: ",
fh_get_file_name (r->fh), (long long int) ftello (r->file));
ds_put_vformat (&text, format, args);
m.severity = msg_class_to_severity (class);
m.where.file_name = NULL;
m.where.line_number = 0;
+ m.where.first_column = 0;
+ m.where.last_column = 0;
m.text = ds_cstr (&text);
msg_emit (&m);
&w->file, NULL);
if (w->rf == NULL)
{
- msg (ME, _("Error opening \"%s\" for writing as a system file: %s."),
+ msg (ME, _("Error opening `%s' for writing as a system file: %s."),
fh_get_file_name (fh), strerror (errno));
goto error;
}
ok = false;
if (!ok)
- msg (ME, _("An I/O error occurred writing system file \"%s\"."),
+ msg (ME, _("An I/O error occurred writing system file `%s'."),
fh_get_file_name (w->fh));
if (ok ? !replace_file_commit (w->rf) : !replace_file_abort (w->rf))
}
/* Attempts to add a value label with the given VALUE and LABEL
- to V. Returns true if successful, false if VALUE has an
- existing label or if V is a long string variable. */
+ to V. Returns true if successful, false otherwise (probably
+ due to an existing label). */
bool
var_add_value_label (struct variable *v,
const union value *value, const char *label)
/* Adds or replaces a value label with the given VALUE and LABEL
to V.
- Has no effect if V is a long string variable. */
+*/
void
var_replace_value_label (struct variable *v,
const union value *value, const char *label)
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2009 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <config.h>
-#include <language/command.h>
+#include "language/command.h"
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <errno.h>
-#include <unistd.h>
-#if HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-#if HAVE_READLINE
-#include <readline/readline.h>
-#endif
-
-#include <data/casereader.h>
-#include <data/dictionary.h>
-#include <data/procedure.h>
-#include <data/settings.h>
-#include <data/variable.h>
-#include <language/lexer/lexer.h>
-#include <language/prompt.h>
-#include <libpspp/assertion.h>
-#include <libpspp/compiler.h>
-#include <libpspp/message.h>
-#include <libpspp/message.h>
-#include <libpspp/str.h>
-#include <libpspp/getl.h>
-#include <output/text-item.h>
+
+#include "data/casereader.h"
+#include "data/dictionary.h"
+#include "data/procedure.h"
+#include "data/settings.h"
+#include "data/variable.h"
+#include "language/lexer/lexer.h"
+#include "language/prompt.h"
+#include "libpspp/assertion.h"
+#include "libpspp/compiler.h"
+#include "libpspp/message.h"
+#include "libpspp/str.h"
+#include "libpspp/getl.h"
+#include "output/text-item.h"
#include "xalloc.h"
#include "xmalloca.h"
return CMD_SUCCESS;
}
-#if HAVE_FORK && HAVE_EXECL
-/* Spawn an interactive shell process. */
-static bool
-shell (void)
-{
- int pid;
-
- pid = fork ();
- switch (pid)
- {
- case 0:
- {
- const char *shell_fn;
- char *shell_process;
-
- {
- int i;
-
- for (i = 3; i < 20; i++)
- close (i);
- }
-
- shell_fn = getenv ("SHELL");
- if (shell_fn == NULL)
- shell_fn = "/bin/sh";
-
- {
- const char *cp = strrchr (shell_fn, '/');
- cp = cp ? &cp[1] : shell_fn;
- shell_process = xmalloca (strlen (cp) + 8);
- strcpy (shell_process, "-");
- strcat (shell_process, cp);
- if (strcmp (cp, "sh"))
- shell_process[0] = '+';
- }
-
- execl (shell_fn, shell_process, NULL);
-
- _exit (1);
- }
-
- case -1:
- msg (SE, _("Couldn't fork: %s."), strerror (errno));
- return false;
-
- default:
- assert (pid > 0);
- while (wait (NULL) != pid)
- ;
- return true;
- }
-}
-#else /* !(HAVE_FORK && HAVE_EXECL) */
-/* Don't know how to spawn an interactive shell. */
-static bool
-shell (void)
-{
- msg (SE, _("Interactive shell not supported on this platform."));
- return false;
-}
-#endif
-
-/* Executes the specified COMMAND in a subshell. Returns true if
- successful, false otherwise. */
-static bool
-run_command (const char *command)
-{
- if (system (NULL) == 0)
- {
- msg (SE, _("Command shell not supported on this platform."));
- return false;
- }
-
- /* Execute the command. */
- if (system (command) == -1)
- msg (SE, _("Error executing command: %s."), strerror (errno));
-
- return true;
-}
-
-/* Parses, performs the HOST command. */
-int
-cmd_host (struct lexer *lexer, struct dataset *ds UNUSED)
-{
- int look_ahead;
-
- if (settings_get_safer_mode ())
- {
- msg (SE, _("This command not allowed when the SAFER option is set."));
- return CMD_FAILURE;
- }
-
- look_ahead = lex_look_ahead (lexer);
- if (look_ahead == '.')
- {
- lex_get (lexer);
- return shell () ? CMD_SUCCESS : CMD_FAILURE;
- }
- else if (look_ahead == '\'' || look_ahead == '"')
- {
- bool ok;
-
- lex_get (lexer);
- if (!lex_force_string (lexer))
- NOT_REACHED ();
- ok = run_command (ds_cstr (lex_tokstr (lexer)));
-
- lex_get (lexer);
- return ok ? lex_end_of_command (lexer) : CMD_FAILURE;
- }
- else
- {
- bool ok = run_command (lex_rest_of_line (lexer));
- lex_discard_line (lexer);
- return ok ? CMD_SUCCESS : CMD_FAILURE;
- }
-}
-
/* Parses, performs the NEW FILE command. */
int
cmd_new_file (struct lexer *lexer, struct dataset *ds)
DEF_CMD (S_ANY, 0, "FILE HANDLE", cmd_file_handle)
DEF_CMD (S_ANY, F_KEEP_FINAL_TOKEN, "FILE LABEL", cmd_file_label)
DEF_CMD (S_ANY, 0, "FINISH", cmd_finish)
-DEF_CMD (S_ANY, F_KEEP_FINAL_TOKEN, "HOST", cmd_host)
+DEF_CMD (S_ANY, 0, "HOST", cmd_host)
DEF_CMD (S_ANY, 0, "INCLUDE", cmd_include)
DEF_CMD (S_ANY, 0, "INSERT", cmd_insert)
DEF_CMD (S_ANY, 0, "N OF CASES", cmd_n_of_cases)
DEF_CMD (S_ANY, F_ABBREV, "N", cmd_n_of_cases)
DEF_CMD (S_ANY, 0, "NEW FILE", cmd_new_file)
DEF_CMD (S_ANY, 0, "PERMISSIONS", cmd_permissions)
+DEF_CMD (S_ANY, 0, "PRESERVE", cmd_preserve)
DEF_CMD (S_ANY, F_ABBREV, "Q", cmd_finish)
DEF_CMD (S_ANY, 0, "QUIT", cmd_finish)
+DEF_CMD (S_ANY, 0, "RESTORE", cmd_restore)
DEF_CMD (S_ANY, 0, "SET", cmd_set)
DEF_CMD (S_ANY, 0, "SHOW", cmd_show)
DEF_CMD (S_ANY, F_KEEP_FINAL_TOKEN, "SUBTITLE", cmd_subtitle)
UNIMPL_CMD ("CSTABULATE", "Tabulate complex samples")
UNIMPL_CMD ("CTABLES", "Display complex samples")
UNIMPL_CMD ("CURVEFIT", "Fit curve to line plot")
-UNIMPL_CMD ("DATASET", "Alternate data set")
+UNIMPL_CMD ("DATASET ACTIVATE", "Switch to alternate data set")
+UNIMPL_CMD ("DATASET CLOSE", "Delete alternate data set")
+UNIMPL_CMD ("DATASET COPY", "Duplicate alternate data set")
+UNIMPL_CMD ("DATASET DECLARE", "Start alternate data set")
+UNIMPL_CMD ("DATASET DISPLAY", "List alternate data sets")
+UNIMPL_CMD ("DATASET NAME", "Give the current data set a name")
UNIMPL_CMD ("DATE", "Create time series data")
UNIMPL_CMD ("DEFINE", "Syntax macros")
UNIMPL_CMD ("DETECTANOMALY", "Find unusual cases")
UNIMPL_CMD ("HOMALS", "Homogeneity analysis")
UNIMPL_CMD ("IGRAPH", "Interactive graphs")
UNIMPL_CMD ("INFO", "Local Documentation")
-UNIMPL_CMD ("INSERT", "Insert file")
UNIMPL_CMD ("KEYED DATA LIST", "Read nonsequential data")
UNIMPL_CMD ("KM", "Kaplan-Meier")
UNIMPL_CMD ("LOGISTIC REGRESSION", "Regression Analysis")
UNIMPL_CMD ("MCONVERT", "Convert covariance/correlation matrices")
UNIMPL_CMD ("MEANS", cmd_means)
UNIMPL_CMD ("MIXED", "Mixed linear models")
-UNIMPL_CMD ("MODEL CLOSE ", "Close server connection")
+UNIMPL_CMD ("MODEL CLOSE", "Close server connection")
UNIMPL_CMD ("MODEL HANDLE", "Define server connection")
-UNIMPL_CMD ("MODEL LIST ", "Show existing models")
-UNIMPL_CMD ("MODEL NAME ", "Specify model label")
+UNIMPL_CMD ("MODEL LIST", "Show existing models")
+UNIMPL_CMD ("MODEL NAME", "Specify model label")
UNIMPL_CMD ("MULTIPLE CORRESPONDENCE", "Multiple correspondence analysis")
UNIMPL_CMD ("MULT RESPONSE", "Multiple reponse analysis")
UNIMPL_CMD ("MVA", "Missing value analysis")
UNIMPL_CMD ("PPLOT", "Plot time series variables")
UNIMPL_CMD ("PREDICT", "Specify forecast period")
UNIMPL_CMD ("PREFSCAL", "Multidimensional unfolding")
-UNIMPL_CMD ("PRESERVE", "Push settings")
UNIMPL_CMD ("PRINCALS", "PCA by alternating least squares")
UNIMPL_CMD ("PROBIT", "Probit analysis")
UNIMPL_CMD ("PROCEDURE OUTPUT", "Specify output file")
UNIMPL_CMD ("REFORMAT", "Read obsolete files")
UNIMPL_CMD ("REPEATING DATA", "Specify multiple cases per input record")
UNIMPL_CMD ("REPORT", "Pretty print working file")
-UNIMPL_CMD ("RESTORE", "Restore settings")
UNIMPL_CMD ("RMV", "Replace missing values")
UNIMPL_CMD ("SCRIPT", "Run script file")
UNIMPL_CMD ("SEASON", "Estimate seasonal factors")
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2007, 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
if (!lex_force_id (lexer))
return false;
if (dict_lookup_var (dict, lex_tokid (lexer)))
- msg (SW, _("Dummy variable name \"%s\" hides dictionary "
- "variable \"%s\"."),
+ msg (SW, _("Dummy variable name `%s' hides dictionary "
+ "variable `%s'."),
lex_tokid (lexer), lex_tokid (lexer));
if (find_macro (block, ss_cstr (lex_tokid (lexer))))
{
- msg (SE, _("Dummy variable name \"%s\" is given twice."),
+ msg (SE, _("Dummy variable name `%s' is given twice."),
lex_tokid (lexer));
return false;
}
count = parse_ids (lexer, dict, macro, block->pool);
else if (lex_is_number (lexer))
count = parse_numbers (lexer, macro, block->pool);
- else if (lex_token (lexer) == T_STRING)
+ else if (lex_is_string (lexer))
count = parse_strings (lexer, macro, block->pool);
else
{
}
else if (block->loop_cnt != count)
{
- msg (SE, _("Dummy variable \"%.*s\" had %d "
- "substitutions, so \"%.*s\" must also, but %d "
+ msg (SE, _("Dummy variable `%.*s' had %d "
+ "substitutions, so `%.*s' must also, but %d "
"were specified."),
(int) ss_length (first_name), ss_data (first_name),
block->loop_cnt,
/* Retrieve an input line and make a copy of it. */
if (!lex_get_line_raw (lexer))
- return false;
+ {
+ msg (SE, _("DO REPEAT without END REPEAT."));
+ return false;
+ }
ds_init_string (&text, lex_entire_line_ds (lexer));
/* Record file name. */
{
char *string;
- if (lex_token (lexer) != T_STRING)
+ if (!lex_force_string (lexer))
{
msg (SE, _("String expected."));
return 0;
}
/* Returns the line number in the source file from which the
- previous line was originally obtained, or -1 if none. */
+ previous line was originally obtained, or 0 if none. */
static int
do_repeat_location (const struct getl_interface *interface)
{
struct repeat_line *line = current_line (interface);
- return line ? line->line_number : -1;
+ return line ? line->line_number : 0;
}
if (lex_match_id (lexer, "TAB"))
delim = '\t';
- else if (lex_token (lexer) == T_STRING
+ else if (lex_is_string (lexer)
&& ds_length (lex_tokstr (lexer)) == 1)
{
delim = ds_first (lex_tokstr (lexer));
&& dfm_get_percent_read (reader) >= parser->percent_cases)
return false;
- dfm_push (reader);
if (parser->type == DP_DELIMITED)
{
if (parser->span)
}
else
retval = parse_fixed (parser, reader, c);
- dfm_pop (reader);
return retval;
}
return true;
}
+static void
+parse_error (const struct dfm_reader *reader, const struct field *field,
+ int first_column, int last_column, char *error)
+{
+ struct msg m;
+
+ m.category = MSG_C_DATA;
+ m.severity = MSG_S_WARNING;
+ m.where.file_name = CONST_CAST (char *, dfm_get_file_name (reader));
+ m.where.line_number = dfm_get_line_number (reader);
+ m.where.first_column = first_column;
+ m.where.last_column = last_column;
+ m.text = xasprintf (_("Data for variable %s is not valid as format %s: %s"),
+ field->name, fmt_name (field->format.type), error);
+ msg_emit (&m);
+
+ free (error);
+}
+
/* Reads a case from READER into C, parsing it according to
fixed-format syntax rules in PARSER.
Returns true if successful, false at end of file or on I/O error. */
parse_fixed (const struct data_parser *parser, struct dfm_reader *reader,
struct ccase *c)
{
- const char *encoding = dfm_reader_get_legacy_encoding (reader);
+ const char *input_encoding = dfm_reader_get_legacy_encoding (reader);
+ const char *output_encoding = dict_get_encoding (parser->dict);
struct field *f;
int row;
line = dfm_get_record (reader);
for (; f < &parser->fields[parser->field_cnt] && f->record == row; f++)
- data_in (ss_substr (line, f->first_column - 1,
- f->format.w),
- encoding, f->format.type, f->format.d,
- f->first_column, f->first_column + f->format.w,
- parser->dict,
- case_data_rw_idx (c, f->case_idx),
- fmt_var_width (&f->format));
+ {
+ struct substring s = ss_substr (line, f->first_column - 1,
+ f->format.w);
+ union value *value = case_data_rw_idx (c, f->case_idx);
+ char *error = data_in (s, input_encoding, f->format.type,
+ value, fmt_var_width (&f->format),
+ output_encoding);
+
+ if (error == NULL)
+ data_in_imply_decimals (s, input_encoding, f->format.type,
+ f->format.d, value);
+ else
+ parse_error (reader, f, f->first_column,
+ f->first_column + f->format.w, error);
+ }
dfm_forward_record (reader);
}
parse_delimited_span (const struct data_parser *parser,
struct dfm_reader *reader, struct ccase *c)
{
- const char *encoding = dfm_reader_get_legacy_encoding (reader);
+ const char *input_encoding = dfm_reader_get_legacy_encoding (reader);
+ const char *output_encoding = dict_get_encoding (parser->dict);
struct string tmp = DS_EMPTY_INITIALIZER;
struct field *f;
{
struct substring s;
int first_column, last_column;
+ char *error;
/* Cut out a field and read in a new record if necessary. */
while (!cut_field (parser, reader,
}
}
- data_in (s, encoding, f->format.type, 0,
- first_column, last_column,
- parser->dict,
- case_data_rw_idx (c, f->case_idx),
- fmt_var_width (&f->format));
+ error = data_in (s, input_encoding, f->format.type,
+ case_data_rw_idx (c, f->case_idx),
+ fmt_var_width (&f->format), output_encoding);
+ if (error != NULL)
+ parse_error (reader, f, first_column, last_column, error);
}
ds_destroy (&tmp);
return true;
parse_delimited_no_span (const struct data_parser *parser,
struct dfm_reader *reader, struct ccase *c)
{
- const char *encoding = dfm_reader_get_legacy_encoding (reader);
+ const char *input_encoding = dfm_reader_get_legacy_encoding (reader);
+ const char *output_encoding = dict_get_encoding (parser->dict);
struct string tmp = DS_EMPTY_INITIALIZER;
struct substring s;
struct field *f, *end;
for (f = parser->fields; f < end; f++)
{
int first_column, last_column;
+ char *error;
+
if (!cut_field (parser, reader, &first_column, &last_column, &tmp, &s))
{
if (f < end - 1 && settings_get_undefined ())
goto exit;
}
- data_in (s, encoding, f->format.type, 0,
- first_column, last_column,
- parser->dict,
- case_data_rw_idx (c, f->case_idx),
- fmt_var_width (&f->format));
+ error = data_in (s, input_encoding, f->format.type,
+ case_data_rw_idx (c, f->case_idx),
+ fmt_var_width (&f->format), output_encoding);
+ if (error != NULL)
+ parse_error (reader, f, first_column, last_column, error);
}
s = dfm_get_record (reader);
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-2004, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997-2004, 2006, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
r->file = fn_open (fh_get_file_name (fh), "rb");
if (r->file == NULL)
{
- msg (ME, _("Could not open \"%s\" for reading as a data file: %s."),
+ msg (ME, _("Could not open `%s' for reading as a data file: %s."),
fh_get_file_name (r->fh), strerror (errno));
fh_unlock (r->lock);
fh_unref (fh);
return ds_pointer_to_position (&r->line, p) + 1;
}
-/* Pushes the file name and line number on the fn/ln stack. */
-void
-dfm_push (struct dfm_reader *r)
+const char *
+dfm_get_file_name (const struct dfm_reader *r)
{
- if (r->fh != fh_inline_file ())
- msg_push_msg_locator (&r->where);
+ return fh_get_referent (r->fh) == FH_REF_FILE ? r->where.file_name : NULL;
}
-/* Pops the file name and line number from the fn/ln stack. */
-void
-dfm_pop (struct dfm_reader *r)
+int
+dfm_get_line_number (const struct dfm_reader *r)
{
- if (r->fh != fh_inline_file ())
- msg_pop_msg_locator (&r->where);
+ return fh_get_referent (r->fh) == FH_REF_FILE ? r->where.line_number : -1;
}
\f
/* BEGIN DATA...END DATA procedure. */
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
size_t dfm_columns_past_end (const struct dfm_reader *);
size_t dfm_get_column (const struct dfm_reader *, const char *);
-/* File stack. */
-void dfm_push (struct dfm_reader *);
-void dfm_pop (struct dfm_reader *);
+/* Information. */
+const char *dfm_get_file_name (const struct dfm_reader *);
+int dfm_get_line_number (const struct dfm_reader *);
#endif /* data-reader.h */
&w->file, NULL);
if (w->rf == NULL)
{
- msg (ME, _("An error occurred while opening \"%s\" for writing "
+ msg (ME, _("An error occurred while opening `%s' for writing "
"as a data file: %s."),
fh_get_file_name (w->fh), strerror (errno));
dfm_close_writer (w);
ok = !dfm_write_error (w) && !fn_close (file_name, w->file);
if (!ok)
- msg (ME, _("I/O error occurred writing data file \"%s\"."), file_name);
+ msg (ME, _("I/O error occurred writing data file `%s'."), file_name);
if (ok ? !replace_file_commit (w->rf) : !replace_file_abort (w->rf))
ok = false;
handle = fh_inline_file ();
else
{
- if (lex_token (lexer) != T_ID && lex_token (lexer) != T_STRING)
+ if (lex_token (lexer) != T_ID && !lex_is_string (lexer))
{
lex_error (lexer, _("expecting a file name or handle name"));
return NULL;
}
else
{
- printf ("Unknown data file type \"\%s\"\n", lex_tokid (lexer));
goto error;
}
lex_get (lexer);
break;
else
{
- lex_error (lexer, _("expecting VARIABLES"));
+ lex_error (lexer, _("expecting %s"), "VARIABLES");
goto error;
}
}
{
lex_match (lexer, '/');
- if (lex_match_id (lexer, "FILE") || lex_token (lexer) == T_STRING)
+ if (lex_match_id (lexer, "FILE") || lex_is_string (lexer))
{
lex_match (lexer, '=');
ok = proc_commit (ds) && ok;
subcase_destroy (&sc);
+ free (cmd.v_variables);
return ok ? CMD_SUCCESS : CMD_CASCADING_FAILURE;
}
{
if (!fmt_from_name (type, &f.type))
{
- msg (SE, _("Unknown format type \"%s\"."), type);
+ msg (SE, _("Unknown format type `%s'."), type);
return false;
}
if (!fmt_check (&f, for_input))
if (!parse_record_placement (lexer, &record, &column))
return false;
- if (lex_token (lexer) == T_STRING)
+ if (lex_is_string (lexer))
ok = parse_string_argument (lexer, trns, record, &column);
else
ok = parse_variable_argument (lexer, dict, trns, tmp_pool, &record, &column,
switch (spec->type)
{
case PRT_LITERAL:
- tab_text_format (t, 0, row, TAB_LEFT | TAB_FIX, "\"%.*s\"",
+ tab_text_format (t, 0, row, TAB_LEFT | TAB_FIX, "`%.*s'",
(int) ds_length (&spec->string),
ds_data (&spec->string));
width = ds_length (&spec->string);
}
else if (!replace && fn_exists (fh_get_file_name (handle)))
{
- msg (SE, _("Output file \"%s\" exists but REPLACE was not specified."),
+ msg (SE, _("Output file `%s' exists but REPLACE was not specified."),
fh_get_file_name (handle));
goto error;
}
msg (SE, _("Cannot rename %s as %s because there already exists "
"a variable named %s. To rename variables with "
"overlapping names, use a single RENAME subcommand "
- "such as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, "
- "\"/RENAME (A B C=B C A)\"."),
+ "such as `/RENAME (A=B)(B=C)(C=A)', or equivalently, "
+ "`/RENAME (A B C=B C A)'."),
var_get_name (v), lex_tokid (lexer), lex_tokid (lexer));
return 0;
}
command = DELETE;
else if (command == UNKNOWN)
{
- lex_error (lexer, _("expecting ATTRIBUTE= or DELETE="));
+ lex_error (lexer, _("expecting %s or %s"), "ATTRIBUTE=", "DELETE=");
return CMD_FAILURE;
}
if (!parse_variables (lexer, dataset_dict (ds), &v, &nv, PV_NONE))
goto done;
- if (!lex_match (lexer, '('))
- {
- lex_error (lexer, _("expecting `('"));
- goto done;
- }
+ if (!lex_force_match (lexer, '('))
+ goto done;
for (i = 0; i < nv; i++)
var_clear_missing_values (v[i]);
if (mrset->width == 0)
ds_put_format (&details, "%.0f\n", mrset->counted.f);
else
- ds_put_format (&details, "\"%.*s\"\n", mrset->width,
+ ds_put_format (&details, "`%.*s'\n", mrset->width,
value_str (&mrset->counted, mrset->width));
ds_put_format (&details, "%s: %s\n", _("Category label source"),
(mrset->cat_source == MRSET_VARLABELS
if (!parse_variables (lexer, dataset_dict (ds), &v, &nv, PV_NONE))
return CMD_FAILURE;
- if (lex_token (lexer) != T_STRING)
+ if (!lex_force_string (lexer))
{
- msg (SE, _("String expected for variable label."));
free (v);
return CMD_FAILURE;
}
if (lex_is_number (lexer))
width = 0;
- else if (lex_token (lexer) == T_STRING)
+ else if (lex_is_string (lexer))
width = ds_length (lex_tokstr (lexer));
else
{
/* PSPP - a program for statistical analysis.
- Copyright (C) 2008 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
const struct substring empty_string = {NULL, 0};
-static void
-expr_error (void *aux UNUSED, const char *format, ...)
-{
- struct msg m;
- va_list args;
-
- m.category = MSG_C_SYNTAX;
- m.severity = MSG_S_ERROR;
- va_start (args, format);
- m.text = xvasprintf (format, args);
- va_end (args);
-
- msg_emit (&m);
-}
-
double
expr_ymd_to_ofs (double year, double month, double day)
{
int y = year;
int m = month;
int d = day;
+ char *error;
+ double ofs;
if (y != year || m != month || d != day)
{
return SYSMIS;
}
- return calendar_gregorian_to_offset (y, m, d, expr_error, NULL);
+ ofs = calendar_gregorian_to_offset (y, m, d, &error);
+ if (error != NULL)
+ {
+ msg (SE, "%s", error);
+ free (error);
+ }
+ return ofs;
}
double
return true;
}
- msg (SE, _("Unrecognized date unit \"%.*s\". "
- "Valid date units are \"years\", \"quarters\", \"months\", "
- "\"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"."),
+ /* TRANSLATORS: Don't translate the the actual unit names `weeks', `days' etc
+ They must remain in their original English. */
+ msg (SE, _("Unrecognized date unit `%.*s'. "
+ "Valid date units are `years', `quarters', `months', "
+ "`weeks', `days', `hours', `minutes', and `seconds'."),
(int) ss_length (name), ss_data (name));
return false;
}
else
{
msg (SE, _("Invalid DATESUM method. "
- "Valid choices are \"closest\" and \"rollover\"."));
+ "Valid choices are `closest' and `rollover'."));
return false;
}
}
{
int y, m, d, yd;
double output;
+ char *error;
calendar_offset_to_gregorian (date / DAY_S, &y, &m, &d, &yd);
y += months / 12;
if (method == SUM_CLOSEST && d > calendar_days_in_month (y, m))
d = calendar_days_in_month (y, m);
- output = calendar_gregorian_to_offset (y, m, d, expr_error, NULL);
+ output = calendar_gregorian_to_offset (y, m, d, &error);
if (output != SYSMIS)
output = (output * DAY_S) + fmod (date, DAY_S);
+ else
+ {
+ msg (SE, "%s", error);
+ free (error);
+ }
return output;
}
}
int
-compare_string (const struct substring *a, const struct substring *b)
+compare_string_3way (const struct substring *a, const struct substring *b)
{
size_t i;
extern const struct substring empty_string;
-int compare_string (const struct substring *, const struct substring *);
+int compare_string_3way (const struct substring *, const struct substring *);
double expr_ymd_to_date (double year, double month, double day);
double expr_ymd_to_ofs (double year, double month, double day);
boolean operator NE (a, b) = a != b;
// String relational operators.
-boolean operator EQ_STRING (string a, string b) = compare_string (&a, &b) == 0;
-boolean operator GE_STRING (string a, string b) = compare_string (&a, &b) >= 0;
-boolean operator GT_STRING (string a, string b) = compare_string (&a, &b) > 0;
-boolean operator LE_STRING (string a, string b) = compare_string (&a, &b) <= 0;
-boolean operator LT_STRING (string a, string b) = compare_string (&a, &b) < 0;
-boolean operator NE_STRING (string a, string b) = compare_string (&a, &b) != 0;
+boolean operator EQ_STRING (string a, string b) = compare_string_3way (&a, &b) == 0;
+boolean operator GE_STRING (string a, string b) = compare_string_3way (&a, &b) >= 0;
+boolean operator GT_STRING (string a, string b) = compare_string_3way (&a, &b) > 0;
+boolean operator LE_STRING (string a, string b) = compare_string_3way (&a, &b) <= 0;
+boolean operator LT_STRING (string a, string b) = compare_string_3way (&a, &b) < 0;
+boolean operator NE_STRING (string a, string b) = compare_string_3way (&a, &b) != 0;
// Unary functions.
function ABS (x) = fabs (x);
size_t i;
for (i = 0; i < n; i++)
- if (!compare_string (&x, &a[i]))
+ if (!compare_string_3way (&x, &a[i]))
return 1.;
return 0.;
}
max = &a[0];
for (i = 1; i < n; i++)
- if (compare_string (&a[i], max) > 0)
+ if (compare_string_3way (&a[i], max) > 0)
max = &a[i];
return *max;
}
min = &a[0];
for (i = 1; i < n; i++)
- if (compare_string (&a[i], min) < 0)
+ if (compare_string_3way (&a[i], min) < 0)
min = &a[i];
return *min;
}
{
struct substring *w = &a[2 * i];
struct substring *y = &a[2 * i + 1];
- if (compare_string (w, &x) <= 0 && compare_string (&x, y) <= 0)
+ if (compare_string_3way (w, &x) <= 0 && compare_string_3way (&x, y) <= 0)
return 1.;
}
return 0.;
function NUMBER (string s, ni_format f)
{
union value out;
- data_in (ss_head (s, f->w), LEGACY_NATIVE, f->type, f->d, 0, 0, NULL, &out, 0);
+ char *error;
+
+ if (s.length > f->w)
+ s.length = f->w;
+ error = data_in (s, LEGACY_NATIVE, f->type, &out, 0, NULL);
+ if (error == NULL)
+ data_in_imply_decimals (s, LEGACY_NATIVE, f->type, f->d, &out);
+ else
+ {
+ msg (SE, "Cannot parse \"%.*s\" as format %s: %s",
+ (int) s.length, s.string, fmt_name (f->type), error);
+ free (error);
+ }
return out.f;
}
if (idx >= 1 && idx <= vector_get_var_cnt (v))
{
struct variable *var = vector_get_var (v, (size_t) idx - 1);
- return copy_string (e, case_str (c, var), var_get_width (var));
+ return copy_string (e, CHAR_CAST_BUG (char *, case_str (c, var)),
+ var_get_width (var));
}
else
{
{
const struct ccase *c = lagged_case (ds, n_before);
if (c != NULL)
- return copy_string (e, case_str (c, v), var_get_width (v));
+ return copy_string (e, CHAR_CAST_BUG (char *, case_str (c, v)),
+ var_get_width (v));
else
return empty_string;
}
{
const struct ccase *c = lagged_case (ds, 1);
if (c != NULL)
- return copy_string (e, case_str (c, v), var_get_width (v));
+ return copy_string (e, CHAR_CAST_BUG (char *, case_str (c, v)),
+ var_get_width (v));
else
return empty_string;
}
parse_or (struct lexer *lexer, struct expression *e)
{
static const struct operator op =
- { T_OR, OP_OR, "logical disjunction (\"OR\")" };
+ { T_OR, OP_OR, "logical disjunction (`OR')" };
return parse_binary_operators (lexer, e, parse_and (lexer, e), &op, 1, parse_and, NULL);
}
parse_and (struct lexer *lexer, struct expression *e)
{
static const struct operator op =
- { T_AND, OP_AND, "logical conjunction (\"AND\")" };
+ { T_AND, OP_AND, "logical conjunction (`AND')" };
return parse_binary_operators (lexer, e, parse_not (lexer, e),
&op, 1, parse_not, NULL);
parse_not (struct lexer *lexer, struct expression *e)
{
static const struct operator op
- = { T_NOT, OP_NOT, "logical negation (\"NOT\")" };
+ = { T_NOT, OP_NOT, "logical negation (`NOT')" };
return parse_inverting_unary_operator (lexer, e, &op, parse_rel);
}
parse_rel (struct lexer *lexer, struct expression *e)
{
const char *chain_warning =
- _("Chaining relational operators (e.g. \"a < b < c\") will "
+ _("Chaining relational operators (e.g. `a < b < c') will "
"not produce the mathematically expected result. "
"Use the AND logical operator to fix the problem "
- "(e.g. \"a < b AND b < c\"). "
+ "(e.g. `a < b AND b < c'). "
"If chaining is really intended, parentheses will disable "
- "this warning (e.g. \"(a < b) < c\".)");
+ "this warning (e.g. `(a < b) < c'.)");
union any_node *node = parse_add (lexer, e);
{
static const struct operator ops[] =
{
- { '=', OP_EQ, "numeric equality (\"=\")" },
- { T_EQ, OP_EQ, "numeric equality (\"EQ\")" },
- { T_GE, OP_GE, "numeric greater-than-or-equal-to (\">=\")" },
- { T_GT, OP_GT, "numeric greater than (\">\")" },
- { T_LE, OP_LE, "numeric less-than-or-equal-to (\"<=\")" },
- { T_LT, OP_LT, "numeric less than (\"<\")" },
- { T_NE, OP_NE, "numeric inequality (\"<>\")" },
+ { '=', OP_EQ, "numeric equality (`=')" },
+ { T_EQ, OP_EQ, "numeric equality (`EQ')" },
+ { T_GE, OP_GE, "numeric greater-than-or-equal-to (`>=')" },
+ { T_GT, OP_GT, "numeric greater than (`>')" },
+ { T_LE, OP_LE, "numeric less-than-or-equal-to (`<=')" },
+ { T_LT, OP_LT, "numeric less than (`<')" },
+ { T_NE, OP_NE, "numeric inequality (`<>')" },
};
return parse_binary_operators (lexer, e, node, ops,
{
static const struct operator ops[] =
{
- { '=', OP_EQ_STRING, "string equality (\"=\")" },
- { T_EQ, OP_EQ_STRING, "string equality (\"EQ\")" },
- { T_GE, OP_GE_STRING, "string greater-than-or-equal-to (\">=\")" },
- { T_GT, OP_GT_STRING, "string greater than (\">\")" },
- { T_LE, OP_LE_STRING, "string less-than-or-equal-to (\"<=\")" },
- { T_LT, OP_LT_STRING, "string less than (\"<\")" },
- { T_NE, OP_NE_STRING, "string inequality (\"<>\")" },
+ { '=', OP_EQ_STRING, "string equality (`=')" },
+ { T_EQ, OP_EQ_STRING, "string equality (`EQ')" },
+ { T_GE, OP_GE_STRING, "string greater-than-or-equal-to (`>=')" },
+ { T_GT, OP_GT_STRING, "string greater than (`>')" },
+ { T_LE, OP_LE_STRING, "string less-than-or-equal-to (`<=')" },
+ { T_LT, OP_LT_STRING, "string less than (`<')" },
+ { T_NE, OP_NE_STRING, "string inequality (`<>')" },
};
return parse_binary_operators (lexer, e, node, ops,
{
static const struct operator ops[] =
{
- { '+', OP_ADD, "addition (\"+\")" },
- { '-', OP_SUB, "subtraction (\"-\")" },
+ { '+', OP_ADD, "addition (`+')" },
+ { '-', OP_SUB, "subtraction (`-')" },
};
return parse_binary_operators (lexer, e, parse_mul (lexer, e),
{
static const struct operator ops[] =
{
- { '*', OP_MUL, "multiplication (\"*\")" },
- { '/', OP_DIV, "division (\"/\")" },
+ { '*', OP_MUL, "multiplication (`*')" },
+ { '/', OP_DIV, "division (`/')" },
};
return parse_binary_operators (lexer, e, parse_neg (lexer, e),
static union any_node *
parse_neg (struct lexer *lexer, struct expression *e)
{
- static const struct operator op = { '-', OP_NEG, "negation (\"-\")" };
+ static const struct operator op = { '-', OP_NEG, "negation (`-')" };
return parse_inverting_unary_operator (lexer, e, &op, parse_exp);
}
parse_exp (struct lexer *lexer, struct expression *e)
{
static const struct operator op =
- { T_EXP, OP_POW, "exponentiation (\"**\")" };
+ { T_EXP, OP_POW, "exponentiation (`**')" };
const char *chain_warning =
- _("The exponentiation operator (\"**\") is left-associative, "
+ _("The exponentiation operator (`**') is left-associative, "
"even though right-associative semantics are more useful. "
- "That is, \"a**b**c\" equals \"(a**b)**c\", not as \"a**(b**c)\". "
+ "That is, `a**b**c' equals `(a**b)**c', not as `a**(b**c)'. "
"To disable this warning, insert parentheses.");
return parse_binary_operators (lexer, e, parse_primary (lexer, e), &op, 1,
union any_node *node;
lex_get (lexer);
node = parse_or (lexer, e);
- if (node != NULL && !lex_match (lexer, ')'))
- {
- lex_error (lexer, _("expecting `)'"));
- return NULL;
- }
+ if (node != NULL && !lex_force_match (lexer, ')'))
+ return NULL;
return node;
}
default:
- lex_error (lexer, _("in expression"));
+ lex_error (lexer, NULL);
return NULL;
}
}
if (!fmt_from_name (type, &format->type))
{
- msg (SE, _("Unknown format type \"%s\"."), type);
+ msg (SE, _("Unknown format type `%s'."), type);
return false;
}
}
if (!fmt_from_name (ds_cstr (lex_tokstr (lexer)), type))
{
- msg (SE, _("Unknown format type \"%s\"."), ds_cstr (lex_tokstr (lexer)));
+ msg (SE, _("Unknown format type `%s'."), ds_cstr (lex_tokstr (lexer)));
return false;
}
lex_get (lexer);
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2006, 2009 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2006, 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#define _(msgid) gettext (msgid)
#define N_(msgid) msgid
-
-#define DUMP_TOKENS 0
-
-
-
struct lexer
{
struct string line_buffer;
};
static int parse_string (struct lexer *, enum string_type);
-
-#if DUMP_TOKENS
-static void dump_token (struct lexer *);
-#endif
\f
/* Initialization. */
if (lexer->put_token)
{
restore_token (lexer);
-#if DUMP_TOKENS
- dump_token (lexer);
-#endif
return;
}
{
lexer->dot = 0;
lexer->token = '.';
-#if DUMP_TOKENS
- dump_token (lexer);
-#endif
return;
}
else if (!lex_get_line (lexer))
{
lexer->prog = NULL;
lexer->token = T_STOP;
-#if DUMP_TOKENS
- dump_token (lexer);
-#endif
return;
}
if (lexer->put_token)
{
restore_token (lexer);
-#if DUMP_TOKENS
- dump_token (lexer);
-#endif
return;
}
}
}
break;
}
-
-#if DUMP_TOKENS
- dump_token (lexer);
-#endif
}
/* Parses an identifier at the current position into tokid and
void
lex_error (struct lexer *lexer, const char *message, ...)
{
- char *token_rep;
- char where[128];
+ struct string s;
+
+ ds_init_empty (&s);
- token_rep = lex_token_representation (lexer);
if (lexer->token == T_STOP)
- strcpy (where, "end of file");
+ ds_put_cstr (&s, _("Syntax error at end of file"));
else if (lexer->token == '.')
- strcpy (where, "end of command");
+ ds_put_cstr (&s, _("Syntax error at end of command"));
else
- snprintf (where, sizeof where, "`%s'", token_rep);
- free (token_rep);
+ {
+ char *token_rep = lex_token_representation (lexer);
+ ds_put_format (&s, _("Syntax error at `%s'"), token_rep);
+ free (token_rep);
+ }
if (message)
{
- char buf[1024];
va_list args;
+ ds_put_cstr (&s, ": ");
+
va_start (args, message);
- vsnprintf (buf, 1024, message, args);
+ ds_put_vformat (&s, message, args);
va_end (args);
-
- msg (SE, _("Syntax error %s at %s."), buf, where);
}
- else
- msg (SE, _("Syntax error at %s."), where);
+
+ msg (SE, "%s.", ds_cstr (&s));
+ ds_destroy (&s);
}
/* Checks that we're at end of command.
bool
lex_force_string (struct lexer *lexer)
{
- if (lexer->token == T_STRING)
+ if (lex_is_string (lexer))
return true;
else
{
const char *line = ds_cstr (&lexer->line_buffer);
text_item_submit (text_item_create (TEXT_ITEM_SYNTAX, line));
}
+ else
+ lexer->prog = NULL;
return ok;
}
bool line_starts_command;
if (!lex_get_line_raw (lexer))
- {
- lexer->prog = NULL;
- return false;
- }
+ return false;
lex_preprocess_line (&lexer->line_buffer,
lex_current_syntax_mode (lexer),
return T_STRING;
}
\f
-#if DUMP_TOKENS
-/* Reads one token from the lexer and writes a textual representation
- on stdout for debugging purposes. */
-static void
-dump_token (struct lexer *lexer)
-{
- {
- const char *curfn;
- int curln;
-
- curln = getl_source_location (lexer->ss);
- curfn = getl_source_name (lexer->ss);
- if (curfn)
- fprintf (stderr, "%s:%d\t", curfn, curln);
- }
-
- switch (lexer->token)
- {
- case T_ID:
- fprintf (stderr, "ID\t%s\n", lexer->tokid);
- break;
-
- case T_POS_NUM:
- case T_NEG_NUM:
- fprintf (stderr, "NUM\t%f\n", lexer->tokval);
- break;
-
- case T_STRING:
- fprintf (stderr, "STRING\t\"%s\"\n", ds_cstr (&lexer->tokstr));
- break;
-
- case T_STOP:
- fprintf (stderr, "STOP\n");
- break;
-
- case T_EXP:
- fprintf (stderr, "MISC\tEXP\"");
- break;
-
- case 0:
- fprintf (stderr, "MISC\tEOF\n");
- break;
-
- default:
- if (lex_is_keyword (lexer->token))
- fprintf (stderr, "KEYWORD\t%s\n", lex_token_name (lexer->token));
- else
- fprintf (stderr, "PUNCT\t%c\n", lexer->token);
- break;
- }
-}
-#endif /* DUMP_TOKENS */
-
-
/* Token Accessor Functions */
int
/* Returns the address of the first non-whitespace character in S, or
the address of the null terminator if none. */
static char *
-skip_ws (const char *s)
+skip_ws (char *s)
{
while (isspace ((unsigned char) *s))
s++;
- return (char *) s;
+ return s;
}
/* Read one line from the input file into buf. Lines having special
else if (s->value == VAL_STRING)
{
dump (1, "if (lex_token (lexer) != T_ID "
- "&& lex_token (lexer) != T_STRING)");
+ "&& !lex_is_string (lexer))");
dump (1, "{");
dump (0, "msg (SE, _(\"%s specifier of %s subcommand "
"requires a string argument.\"));",
/* PSPP - a program for statistical analysis.
- Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
+
#include "value-parser.h"
+
#include <stdbool.h>
-#include <data/data-in.h>
-#include <libpspp/message.h>
-#include "lexer.h"
-#include <libpspp/str.h>
-#include <data/value.h>
-#include <data/format.h>
+
+#include "data/data-in.h"
+#include "data/format.h"
+#include "data/value.h"
+#include "language/lexer/lexer.h"
+#include "libpspp/cast.h"
+#include "libpspp/message.h"
+#include "libpspp/str.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
lex_get (lexer);
return true;
}
- else if (lex_token (lexer) == T_STRING && format != NULL)
+ else if (lex_is_string (lexer) && format != NULL)
{
union value v;
- assert (! (fmt_get_category (*format) & ( FMT_CAT_STRING )));
- data_in (ds_ss (lex_tokstr (lexer)), LEGACY_NATIVE,
- *format, 0, 0, 0, NULL, &v, 0);
+
+ assert (fmt_get_category (*format) != FMT_CAT_STRING);
+
+ if (!data_in_msg (ds_ss (lex_tokstr (lexer)), LEGACY_NATIVE,
+ *format, &v, 0, NULL))
+ return false;
+
lex_get (lexer);
*x = v.f;
if (*x == SYSMIS)
return false;
v->f = lex_tokval (lexer);
}
- else
+ else if (lex_force_string (lexer))
{
- if (!lex_force_string (lexer))
- return false;
- value_copy_str_rpad (v, width, ds_cstr (lex_tokstr (lexer)), ' ');
+ const char *s = ds_cstr (lex_tokstr (lexer));
+ value_copy_str_rpad (v, width, CHAR_CAST_BUG (const uint8_t *, s), ' ');
}
+ else
+ return false;
lex_get (lexer);
crosstabs.c
examine.c
frequencies.c
-glm.c
-npar.c
rank.c
regression.c
t-test.c
lex_match (lexer, '=');
if (!lex_match_id (lexer, "COLUMNWISE"))
{
- lex_error (lexer, _("while expecting COLUMNWISE"));
+ lex_error (lexer, _("expecting %s"), "COLUMNWISE");
goto error;
}
agr.missing = COLUMNWISE;
copy_documents = true;
else if (lex_match_id (lexer, "PRESORTED"))
presorted = true;
- else if (lex_match_id (lexer, "BREAK"))
+ else if (lex_force_match_id (lexer, "BREAK"))
{
int i;
break;
}
else
- {
- lex_error (lexer, _("expecting BREAK"));
- goto error;
- }
+ goto error;
+
}
if (presorted && saw_direction)
msg (SW, _("When PRESORTED is specified, specifying sorting directions "
- if (lex_token (lexer) == T_STRING)
+ if (lex_is_string (lexer))
{
struct string label;
ds_init_string (&label, lex_tokstr (lexer));
goto error;
}
- exclude = MV_ANY;
-
ds_assign_string (&function_name, lex_tokstr (lexer));
-
- ds_chomp (&function_name, '.');
-
- if (lex_tokid(lexer)[strlen (lex_tokid (lexer)) - 1] == '.')
- exclude = MV_SYSTEM;
+ exclude = ds_chomp (&function_name, '.') ? MV_SYSTEM : MV_ANY;
for (function = agr_func_tab; function->name; function++)
if (!strcasecmp (function->name, ds_cstr (&function_name)))
{
if (function->src_vars == AGR_SV_YES)
{
- lex_error (lexer, _("expecting `('"));
+ lex_force_match (lexer, '(');
goto error;
}
}
int type;
lex_match (lexer, ',');
- if (lex_token (lexer) == T_STRING)
+ if (lex_is_string (lexer))
{
arg[i].c = ds_xstrdup (lex_tokstr (lexer));
type = VAL_STRING;
}
/* Trailing rparen. */
- if (!lex_match (lexer, ')'))
- {
- lex_error (lexer, _("expecting `)'"));
- goto error;
- }
+ if (!lex_force_match (lexer, ')'))
+ goto error;
/* Now check that the number of source variables match
the number of target variables. If we check earlier
src/language/stats/crosstabs.c \
src/language/stats/examine.c \
src/language/stats/frequencies.c \
- src/language/stats/glm.c \
- src/language/stats/npar.c \
src/language/stats/rank.c \
src/language/stats/regression.c \
src/language/stats/t-test.c
src/language/stats/chisquare.h \
src/language/stats/correlations.c \
src/language/stats/descriptives.c \
- src/language/stats/npar.h \
- src/language/stats/sort-cases.c \
- src/language/stats/sort-criteria.c \
- src/language/stats/sort-criteria.h \
src/language/stats/factor.c \
src/language/stats/flip.c \
src/language/stats/freq.c \
src/language/stats/freq.h \
+ src/language/stats/glm.c \
+ src/language/stats/kruskal-wallis.c \
+ src/language/stats/kruskal-wallis.h \
+ src/language/stats/npar.c \
+ src/language/stats/npar.h \
src/language/stats/npar-summary.c \
src/language/stats/npar-summary.h \
src/language/stats/oneway.c \
src/language/stats/roc.h \
src/language/stats/sign.c \
src/language/stats/sign.h \
+ src/language/stats/sort-cases.c \
+ src/language/stats/sort-criteria.c \
+ src/language/stats/sort-criteria.h \
src/language/stats/wilcoxon.c \
src/language/stats/wilcoxon.h
#include "language/lexer/lexer.h"
#include "language/lexer/variable-parser.h"
#include "libpspp/array.h"
+#include "libpspp/i18n.h"
#include "libpspp/compiler.h"
#include "libpspp/hash-functions.h"
#include "libpspp/hmap.h"
#include "libpspp/str.h"
#include "gl/xalloc.h"
+#include "gl/vasnprintf.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
{
struct hmap_node hmap_node; /* Element in "struct arc_spec" hash table. */
union value from; /* Original value. */
+ int width; /* Width of the original value */
+
double to; /* Recoded value. */
};
{
const struct variable *src; /* Source variable. */
struct variable *dst; /* Target variable. */
- struct hmap items; /* Hash table of "struct arc_item"s. */
+ struct hmap *items; /* Hash table of "struct arc_item"s. */
};
/* Descending or ascending sort order. */
/* AUTORECODE data. */
struct autorecode_pgm
- {
- struct arc_spec *specs;
- size_t n_specs;
- };
+{
+ struct arc_spec *specs;
+ size_t n_specs;
+
+ /* Hash table of "struct arc_item"s. */
+ struct hmap *global_items;
+};
static trns_proc_func autorecode_trns_proc;
static trns_free_func autorecode_trns_free;
-static int compare_arc_items (const void *, const void *, const void *width);
+static int compare_arc_items (const void *, const void *, const void *aux);
static void arc_free (struct autorecode_pgm *);
-static struct arc_item *find_arc_item (struct arc_spec *, const union value *,
+static struct arc_item *find_arc_item (const struct arc_spec *, const union value *,
size_t hash);
/* Performs the AUTORECODE procedure. */
cmd_autorecode (struct lexer *lexer, struct dataset *ds)
{
struct autorecode_pgm *arc = NULL;
+ struct dictionary *dict = dataset_dict (ds);
const struct variable **src_vars = NULL;
char **dst_names = NULL;
size_t n_srcs = 0;
size_t n_dsts = 0;
- enum arc_direction direction;
- bool print;
+ enum arc_direction direction = ASCENDING;
+ bool print = true;
struct casereader *input;
struct ccase *c;
size_t i;
bool ok;
+ /* Create procedure. */
+ arc = xzalloc (sizeof *arc);
+
/* Parse variable lists. */
lex_match_id (lexer, "VARIABLES");
lex_match (lexer, '=');
- if (!parse_variables_const (lexer, dataset_dict (ds), &src_vars, &n_srcs,
+ if (!parse_variables_const (lexer, dict, &src_vars, &n_srcs,
PV_NO_DUPLICATE))
goto error;
if (!lex_force_match_id (lexer, "INTO"))
{
const char *name = dst_names[i];
- if (dict_lookup_var (dataset_dict (ds), name) != NULL)
+ if (dict_lookup_var (dict, name) != NULL)
{
msg (SE, _("Target variable %s duplicates existing variable %s."),
name, name);
}
/* Parse options. */
- direction = ASCENDING;
- print = false;
while (lex_match (lexer, '/'))
- if (lex_match_id (lexer, "DESCENDING"))
- direction = DESCENDING;
- else if (lex_match_id (lexer, "PRINT"))
- print = true;
+ {
+ if (lex_match_id (lexer, "DESCENDING"))
+ direction = DESCENDING;
+ else if (lex_match_id (lexer, "PRINT"))
+ print = true;
+ else if (lex_match_id (lexer, "GROUP"))
+ {
+ arc->global_items = xmalloc (sizeof (*arc->global_items));
+ hmap_init (arc->global_items);
+ }
+ }
+
if (lex_token (lexer) != '.')
{
lex_error (lexer, _("expecting end of command"));
goto error;
}
- /* Create procedure. */
- arc = xmalloc (sizeof *arc);
arc->specs = xmalloc (n_dsts * sizeof *arc->specs);
arc->n_specs = n_dsts;
+
for (i = 0; i < n_dsts; i++)
{
struct arc_spec *spec = &arc->specs[i];
spec->src = src_vars[i];
- hmap_init (&spec->items);
+ if (arc->global_items)
+ {
+ spec->items = arc->global_items;
+ }
+ else
+ {
+ spec->items = xmalloc (sizeof (*spec->items));
+ hmap_init (spec->items);
+ }
}
+
/* Execute procedure. */
input = proc_open (ds);
for (; (c = casereader_read (input)) != NULL; case_unref (c))
if (item == NULL)
{
item = xmalloc (sizeof *item);
+ item->width = width;
value_clone (&item->from, value, width);
- hmap_insert (&spec->items, &item->hmap_node, hash);
+ hmap_insert (spec->items, &item->hmap_node, hash);
}
}
ok = casereader_destroy (input);
struct arc_item **items;
struct arc_item *item;
size_t n_items;
- int src_width;
size_t j;
/* Create destination variable. */
- spec->dst = dict_create_var_assert (dataset_dict (ds), dst_names[i], 0);
+ spec->dst = dict_create_var_assert (dict, dst_names[i], 0);
/* Create array of pointers to items. */
- n_items = hmap_count (&spec->items);
+ n_items = hmap_count (spec->items);
items = xmalloc (n_items * sizeof *items);
j = 0;
- HMAP_FOR_EACH (item, struct arc_item, hmap_node, &spec->items)
+ HMAP_FOR_EACH (item, struct arc_item, hmap_node, spec->items)
items[j++] = item;
+
assert (j == n_items);
/* Sort array by value. */
- src_width = var_get_width (spec->src);
- sort (items, n_items, sizeof *items, compare_arc_items, &src_width);
+ sort (items, n_items, sizeof *items, compare_arc_items, NULL);
/* Assign recoded values in sorted order. */
for (j = 0; j < n_items; j++)
- items[j]->to = direction == ASCENDING ? j + 1 : n_items - j;
+ {
+ const union value *from = &items[j]->from;
+ size_t len;
+ char *recoded_value = NULL;
+ char *c;
+ const int src_width = items[j]->width;
+ union value to_val;
+ value_init (&to_val, 0);
+
+ items[j]->to = direction == ASCENDING ? j + 1 : n_items - j;
+
+ to_val.f = items[j]->to;
+
+ /* Add value labels to the destination variable which indicate
+ the source value from whence the new value comes. */
+ if (src_width > 0)
+ {
+ const char *str = CHAR_CAST_BUG (const char*, value_str (from, src_width));
+
+ recoded_value = recode_string (UTF8, dict_get_encoding (dict), str, src_width);
+ }
+ else
+ recoded_value = asnprintf (NULL, &len, "%g", from->f);
+
+ /* Remove trailing whitespace */
+ for (c = recoded_value; *c != '\0'; c++)
+ if ( *c == ' ')
+ {
+ *c = '\0';
+ break;
+ }
+
+ var_add_value_label (spec->dst, &to_val, recoded_value);
+ value_destroy (&to_val, 0);
+ free (recoded_value);
+ }
/* Free array. */
free (items);
for (i = 0; i < arc->n_specs; i++)
{
struct arc_spec *spec = &arc->specs[i];
- int width = var_get_width (spec->src);
struct arc_item *item, *next;
- HMAP_FOR_EACH_SAFE (item, next, struct arc_item, hmap_node,
- &spec->items)
- {
- value_destroy (&item->from, width);
- hmap_delete (&spec->items, &item->hmap_node);
- free (item);
- }
- hmap_destroy (&spec->items);
+ HMAP_FOR_EACH_SAFE (item, next, struct arc_item, hmap_node,
+ spec->items)
+ {
+ value_destroy (&item->from, item->width);
+ hmap_delete (spec->items, &item->hmap_node);
+ free (item);
+ }
}
+
+ if (arc->global_items)
+ {
+ free (arc->global_items);
+ }
+ else
+ {
+ for (i = 0; i < arc->n_specs; i++)
+ {
+ struct arc_spec *spec = &arc->specs[i];
+ if (spec->items)
+ {
+ hmap_destroy (spec->items);
+ free (spec->items);
+ }
+ }
+ }
+
free (arc->specs);
free (arc);
}
}
static struct arc_item *
-find_arc_item (struct arc_spec *spec, const union value *value,
+find_arc_item (const struct arc_spec *spec, const union value *value,
size_t hash)
{
struct arc_item *item;
- HMAP_FOR_EACH_WITH_HASH (item, struct arc_item, hmap_node, hash,
- &spec->items)
+ HMAP_FOR_EACH_WITH_HASH (item, struct arc_item, hmap_node, hash, spec->items)
if (value_equal (value, &item->from, var_get_width (spec->src)))
return item;
return NULL;
}
static int
-compare_arc_items (const void *a_, const void *b_, const void *width_)
+compare_arc_items (const void *a_, const void *b_, const void *aux UNUSED)
{
const struct arc_item *const *a = a_;
const struct arc_item *const *b = b_;
- const int *width = width_;
+ int width_a = (*a)->width;
+ int width_b = (*b)->width;
+
+ if ( width_a == width_b)
+ return value_compare_3way (&(*a)->from, &(*b)->from, width_a);
+
+ if ( width_a == 0 && width_b != 0)
+ return -1;
- return value_compare_3way (&(*a)->from, &(*b)->from, *width);
+ if ( width_b == 0 && width_a != 0)
+ return +1;
+
+ return buf_compare_rpad (CHAR_CAST_BUG (const char *, value_str (&(*a)->from, width_a)), width_a,
+ CHAR_CAST_BUG (const char *, value_str (&(*b)->from, width_b)), width_b);
}
static int
*c = case_unshare (*c);
for (i = 0; i < arc->n_specs; i++)
{
- struct arc_spec *spec = &arc->specs[i];
+ const struct arc_spec *spec = &arc->specs[i];
int width = var_get_width (spec->src);
const union value *value = case_data (*c, spec->src);
struct arc_item *item;
static bool
do_binomial (const struct dictionary *dict,
struct casereader *input,
- const struct binomial_test *bst,
+ const struct one_sample_test *ost,
struct freq *cat1,
struct freq *cat2,
enum mv_class exclude
)
{
+ const struct binomial_test *bst = UP_CAST (ost, const struct binomial_test, parent);
bool warn = true;
- const struct one_sample_test *ost = (const struct one_sample_test *) bst;
struct ccase *c;
for (; (c = casereader_read (input)) != NULL; case_unref (c))
{
int v;
const struct dictionary *dict = dataset_dict (ds);
- const struct binomial_test *bst = (const struct binomial_test *) test;
- const struct one_sample_test *ost = (const struct one_sample_test*) test;
+ const struct one_sample_test *ost = UP_CAST (test, const struct one_sample_test, parent);
+ const struct binomial_test *bst = UP_CAST (ost, const struct binomial_test, parent);
struct freq *cat[2];
int i;
}
}
- if (do_binomial (dataset_dict (ds), input, bst, cat[0], cat[1], exclude))
+ if (do_binomial (dataset_dict (ds), input, ost, cat[0], cat[1], exclude))
{
const struct variable *wvar = dict_get_weight (dict);
const struct fmt_spec *wfmt = wvar ?
const gsl_matrix *cov_matrix;
gsl_matrix *corr_matrix;
struct covariance *cov = covariance_2pass_create (corr->n_vars_total, corr->vars,
- 0, NULL,
+ NULL,
opts->wv, opts->exclude);
struct casereader *rc = casereader_clone (r);
#include <libpspp/array.h>
#include <libpspp/assertion.h>
#include <libpspp/compiler.h>
-#include <libpspp/hash.h>
+#include <libpspp/hash-functions.h>
#include <libpspp/hmap.h>
#include <libpspp/hmapx.h>
#include <libpspp/message.h>
{
if (n_by < 2)
{
- lex_error (lexer, _("expecting BY"));
+ lex_force_match (lexer, T_BY);
goto done;
}
else
| PV_NO_DUPLICATE | PV_NO_SCRATCH)))
return 0;
- if (lex_token (lexer) != '(')
- {
- lex_error (lexer, "expecting `('");
+ if (!lex_force_match (lexer, '('))
goto lossage;
- }
- lex_get (lexer);
if (!lex_force_int (lexer))
goto lossage;
}
lex_get (lexer);
- if (lex_token (lexer) != ')')
- {
- lex_error (lexer, "expecting `)'");
- goto lossage;
- }
- lex_get (lexer);
+ if (!lex_force_match (lexer, ')'))
+ goto lossage;
for (i = orig_nv; i < proc->n_variables; i++)
{
tab_text (chisq, 2, 0, TAB_RIGHT | TAT_TITLE, _("df"));
tab_text (chisq, 3, 0, TAB_RIGHT | TAT_TITLE,
_("Asymp. Sig. (2-tailed)"));
- tab_text (chisq, 4, 0, TAB_RIGHT | TAT_TITLE,
- _("Exact Sig. (2-tailed)"));
- tab_text (chisq, 5, 0, TAB_RIGHT | TAT_TITLE,
- _("Exact Sig. (1-tailed)"));
+ tab_text_format (chisq, 4, 0, TAB_RIGHT | TAT_TITLE,
+ _("Exact Sig. (%d-tailed)"), 2);
+ tab_text_format (chisq, 5, 0, TAB_RIGHT | TAT_TITLE,
+ _("Exact Sig. (%d-tailed)"), 1);
tab_offset (chisq, 0, 1);
return chisq;
if (factor->print & PRINT_SIG)
{
const double y = heading_rows + y_pos_sig * factor->n_vars;
- tab_text (t, 0, y, TAT_TITLE, _("Sig. 1-tailed"));
+ tab_text (t, 0, y, TAT_TITLE, _("Sig. (1-tailed)"));
for (i = 0; i < factor->n_vars; ++i)
{
{
name = data_out_pool (value, dict_get_encoding (flip->dict), var_get_write_format (flip->new_names_var),
flip->pool);
-
}
var_names_add (flip->pool, &flip->new_names, name);
}
*cp = '_';
}
*cp = '\0';
- str_uppercase (name);
/* Use the mangled name, if it is available, or add numeric
extensions until we find one that is. */
flip_casereader_read (struct casereader *reader, void *flip_)
{
struct flip_pgm *flip = flip_;
+ const char *encoding;
struct ccase *c;
size_t i;
return false;
c = case_create (casereader_get_proto (reader));
- data_in (ss_cstr (flip->old_names.names[flip->cases_read]), dict_get_encoding (flip->dict),
- FMT_A, 0,
- 0, 0,
- flip->dict,
- case_data_rw_idx (c, 0), 8);
-
+ encoding = dict_get_encoding (flip->dict);
+ data_in (ss_cstr (flip->old_names.names[flip->cases_read]), encoding,
+ FMT_A, case_data_rw_idx (c, 0), 8, encoding);
+
for (i = 0; i < flip->n_cases; i++)
{
double in;
--- /dev/null
+/* PSPP - a program for statistical analysis.
+ Copyright (C) 2010 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <data/case.h>
+#include <data/casegrouper.h>
+#include <data/casereader.h>
+
+#include <math/covariance.h>
+#include <math/categoricals.h>
+#include <math/moments.h>
+#include <gsl/gsl_matrix.h>
+#include <linreg/sweep.h>
+
+#include <libpspp/ll.h>
+
+#include <language/lexer/lexer.h>
+#include <language/lexer/variable-parser.h>
+#include <language/lexer/value-parser.h>
+#include <language/command.h>
+
+#include <data/procedure.h>
+#include <data/value.h>
+#include <data/dictionary.h>
+
+#include <language/dictionary/split-file.h>
+#include <libpspp/taint.h>
+#include <libpspp/misc.h>
+
+#include <gsl/gsl_cdf.h>
+#include <math.h>
+#include <data/format.h>
+
+#include <libpspp/message.h>
+
+#include <output/tab.h>
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+struct glm_spec
+{
+ size_t n_dep_vars;
+ const struct variable **dep_vars;
+
+ size_t n_factor_vars;
+ const struct variable **factor_vars;
+
+ enum mv_class exclude;
+
+ /* The weight variable */
+ const struct variable *wv;
+
+ bool intercept;
+};
+
+struct glm_workspace
+{
+ double total_ssq;
+ struct moments *totals;
+};
+
+static void output_glm (const struct glm_spec *, const struct glm_workspace *ws);
+static void run_glm (const struct glm_spec *cmd, struct casereader *input, const struct dataset *ds);
+
+int
+cmd_glm (struct lexer *lexer, struct dataset *ds)
+{
+ const struct dictionary *dict = dataset_dict (ds);
+ struct glm_spec glm ;
+ glm.n_dep_vars = 0;
+ glm.n_factor_vars = 0;
+ glm.dep_vars = NULL;
+ glm.factor_vars = NULL;
+ glm.exclude = MV_ANY;
+ glm.intercept = true;
+ glm.wv = dict_get_weight (dict);
+
+
+ if (!parse_variables_const (lexer, dict,
+ &glm.dep_vars, &glm.n_dep_vars,
+ PV_NO_DUPLICATE | PV_NUMERIC))
+ goto error;
+
+ lex_force_match (lexer, T_BY);
+
+ if (!parse_variables_const (lexer, dict,
+ &glm.factor_vars, &glm.n_factor_vars,
+ PV_NO_DUPLICATE | PV_NUMERIC))
+ goto error;
+
+ if ( glm.n_dep_vars > 1)
+ {
+ msg (ME, _("Multivariate analysis is not yet implemented"));
+ return CMD_FAILURE;
+ }
+
+ struct const_var_set *factors = const_var_set_create_from_array (glm.factor_vars, glm.n_factor_vars);
+
+
+ while (lex_token (lexer) != '.')
+ {
+ lex_match (lexer, '/');
+
+ if (lex_match_id (lexer, "MISSING"))
+ {
+ lex_match (lexer, '=');
+ while (lex_token (lexer) != '.' && lex_token (lexer) != '/')
+ {
+ if (lex_match_id (lexer, "INCLUDE"))
+ {
+ glm.exclude = MV_SYSTEM;
+ }
+ else if (lex_match_id (lexer, "EXCLUDE"))
+ {
+ glm.exclude = MV_ANY;
+ }
+ else
+ {
+ lex_error (lexer, NULL);
+ goto error;
+ }
+ }
+ }
+ else if (lex_match_id (lexer, "INTERCEPT"))
+ {
+ lex_match (lexer, '=');
+ while (lex_token (lexer) != '.' && lex_token (lexer) != '/')
+ {
+ if (lex_match_id (lexer, "INCLUDE"))
+ {
+ glm.intercept = true;
+ }
+ else if (lex_match_id (lexer, "EXCLUDE"))
+ {
+ glm.intercept = false;
+ }
+ else
+ {
+ lex_error (lexer, NULL);
+ goto error;
+ }
+ }
+ }
+ else if (lex_match_id (lexer, "DESIGN"))
+ {
+ size_t n_des;
+ const struct variable **des;
+ lex_match (lexer, '=');
+
+ parse_const_var_set_vars (lexer, factors, &des, &n_des, 0);
+ }
+ else
+ {
+ lex_error (lexer, NULL);
+ goto error;
+ }
+ }
+
+
+ {
+ struct casegrouper *grouper;
+ struct casereader *group;
+ bool ok;
+
+ grouper = casegrouper_create_splits (proc_open (ds), dict);
+ while (casegrouper_get_next_group (grouper, &group))
+ run_glm (&glm, group, ds);
+ ok = casegrouper_destroy (grouper);
+ ok = proc_commit (ds) && ok;
+ }
+
+ return CMD_SUCCESS;
+
+ error:
+ return CMD_FAILURE;
+}
+
+static void dump_matrix (const gsl_matrix *m);
+
+static void
+run_glm (const struct glm_spec *cmd, struct casereader *input, const struct dataset *ds)
+{
+ int v;
+ struct taint *taint;
+ struct dictionary *dict = dataset_dict (ds);
+ struct casereader *reader;
+ struct ccase *c;
+
+ struct glm_workspace ws;
+
+ struct categoricals *cats = categoricals_create (cmd->factor_vars, cmd->n_factor_vars,
+ cmd->wv, cmd->exclude,
+ NULL, NULL,
+ NULL, NULL);
+
+ struct covariance *cov = covariance_2pass_create (cmd->n_dep_vars, cmd->dep_vars,
+ cats,
+ cmd->wv, cmd->exclude);
+
+
+ c = casereader_peek (input, 0);
+ if (c == NULL)
+ {
+ casereader_destroy (input);
+ return;
+ }
+ output_split_file_values (ds, c);
+ case_unref (c);
+
+ taint = taint_clone (casereader_get_taint (input));
+
+ ws.totals = moments_create (MOMENT_VARIANCE);
+
+ bool warn_bad_weight = true;
+ for (reader = casereader_clone (input);
+ (c = casereader_read (reader)) != NULL; case_unref (c))
+ {
+ double weight = dict_get_case_weight (dict, c, &warn_bad_weight);
+
+ for ( v = 0; v < cmd->n_dep_vars; ++v)
+ moments_pass_one (ws.totals, case_data (c, cmd->dep_vars[v])->f, weight);
+
+ covariance_accumulate_pass1 (cov, c);
+ }
+ casereader_destroy (reader);
+
+ categoricals_done (cats);
+
+ for (reader = casereader_clone (input);
+ (c = casereader_read (reader)) != NULL; case_unref (c))
+ {
+ double weight = dict_get_case_weight (dict, c, &warn_bad_weight);
+
+ for ( v = 0; v < cmd->n_dep_vars; ++v)
+ moments_pass_two (ws.totals, case_data (c, cmd->dep_vars[v])->f, weight);
+
+ covariance_accumulate_pass2 (cov, c);
+ }
+ casereader_destroy (reader);
+
+ {
+ gsl_matrix *cm = covariance_calculate_unnormalized (cov);
+
+ dump_matrix (cm);
+
+ ws.total_ssq = gsl_matrix_get (cm, 0, 0);
+
+ reg_sweep (cm, 0);
+
+ dump_matrix (cm);
+ }
+
+ if (!taint_has_tainted_successor (taint))
+ output_glm (cmd, &ws);
+
+ taint_destroy (taint);
+}
+
+static void
+output_glm (const struct glm_spec *cmd, const struct glm_workspace *ws)
+{
+ const struct fmt_spec *wfmt = cmd->wv ? var_get_print_format (cmd->wv) : &F_8_0;
+
+ int f;
+ int r;
+ const int heading_columns = 1;
+ const int heading_rows = 1;
+ struct tab_table *t ;
+
+ const int nc = 6;
+ int nr = heading_rows + 4 + cmd->n_factor_vars;
+ if (cmd->intercept)
+ nr++;
+
+ t = tab_create (nc, nr);
+ tab_title (t, _("Tests of Between-Subjects Effects"));
+
+ tab_headers (t, heading_columns, 0, heading_rows, 0);
+
+ tab_box (t,
+ TAL_2, TAL_2,
+ -1, TAL_1,
+ 0, 0,
+ nc - 1, nr - 1);
+
+ tab_hline (t, TAL_2, 0, nc - 1, heading_rows);
+ tab_vline (t, TAL_2, heading_columns, 0, nr - 1);
+
+ tab_text (t, 0, 0, TAB_CENTER | TAT_TITLE, _("Source"));
+
+ /* TRANSLATORS: The parameter is a roman numeral */
+ tab_text_format (t, 1, 0, TAB_CENTER | TAT_TITLE, _("Type %s Sum of Squares"), "III");
+ tab_text (t, 2, 0, TAB_CENTER | TAT_TITLE, _("df"));
+ tab_text (t, 3, 0, TAB_CENTER | TAT_TITLE, _("Mean Square"));
+ tab_text (t, 4, 0, TAB_CENTER | TAT_TITLE, _("F"));
+ tab_text (t, 5, 0, TAB_CENTER | TAT_TITLE, _("Sig."));
+
+ r = heading_rows;
+ tab_text (t, 0, r++, TAB_LEFT | TAT_TITLE, _("Corrected Model"));
+
+ double intercept, n_total;
+ if (cmd->intercept)
+ {
+ double mean;
+ moments_calculate (ws->totals, &n_total, &mean, NULL, NULL, NULL);
+ intercept = pow2 (mean * n_total) / n_total;
+
+ tab_text (t, 0, r, TAB_LEFT | TAT_TITLE, _("Intercept"));
+ tab_double (t, 1, r, 0, intercept, NULL);
+ tab_double (t, 2, r, 0, 1.00, wfmt);
+
+ tab_double (t, 3, r, 0, intercept / 1.0 , NULL);
+ r++;
+ }
+
+ for (f = 0; f < cmd->n_factor_vars; ++f)
+ {
+ tab_text (t, 0, r++, TAB_LEFT | TAT_TITLE,
+ var_to_string (cmd->factor_vars[f]));
+ }
+
+ tab_text (t, 0, r++, TAB_LEFT | TAT_TITLE, _("Error"));
+
+ if (cmd->intercept)
+ {
+ double ssq = intercept + ws->total_ssq;
+ double mse = ssq / n_total;
+ tab_text (t, 0, r, TAB_LEFT | TAT_TITLE, _("Total"));
+ tab_double (t, 1, r, 0, ssq, NULL);
+ tab_double (t, 2, r, 0, n_total, wfmt);
+
+ r++;
+ }
+
+ tab_text (t, 0, r, TAB_LEFT | TAT_TITLE, _("Corrected Total"));
+
+ tab_double (t, 1, r, 0, ws->total_ssq, NULL);
+ tab_double (t, 2, r, 0, n_total - 1.0, wfmt);
+
+ tab_submit (t);
+}
+
+static
+void dump_matrix (const gsl_matrix *m)
+{
+ size_t i, j;
+ for (i = 0; i < m->size1; ++i)
+ {
+ for (j = 0; j < m->size2; ++j)
+ {
+ double x = gsl_matrix_get (m, i, j);
+ printf ("%.3f ", x);
+ }
+ printf ("\n");
+ }
+ printf ("\n");
+}
+++ /dev/null
-/* PSPP - a program for statistical analysis.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-#include <gsl/gsl_cdf.h>
-#include <gsl/gsl_matrix.h>
-#include <gsl/gsl_vector.h>
-#include <math.h>
-#include <stdlib.h>
-
-#include <data/case.h>
-#include <data/casegrouper.h>
-#include <data/casereader.h>
-#include <data/dictionary.h>
-#include <data/missing-values.h>
-#include <data/procedure.h>
-#include <data/transformations.h>
-#include <data/value-labels.h>
-#include <data/variable.h>
-#include <language/command.h>
-#include <language/dictionary/split-file.h>
-#include <language/data-io/file-handle.h>
-#include <language/lexer/lexer.h>
-#include <libpspp/compiler.h>
-#include <libpspp/message.h>
-#include <math/covariance.h>
-#include <math/linreg.h>
-#include <math/moments.h>
-#include <output/tab.h>
-
-#include "xalloc.h"
-#include "gettext.h"
-
-/* (headers) */
-
-/* (specification)
- "GLM" (glm_):
- *dependent=custom;
- design=custom;
- by=varlist;
- with=varlist.
-*/
-/* (declarations) */
-/* (functions) */
-static struct cmd_glm cmd;
-
-
-/*
- Moments for each of the variables used.
- */
-struct moments_var
-{
- struct moments1 *m;
- double *weight;
- double *mean;
- double *variance;
- const struct variable *v;
-};
-
-
-/*
- Dependent variable used.
- */
-static const struct variable **v_dependent;
-
-/*
- Number of dependent variables.
- */
-static size_t n_dependent;
-
-size_t n_inter; /* Number of interactions. */
-size_t n_members; /* Number of memebr variables in an interaction. */
-
-struct interaction_variable **interactions;
-
-int cmd_glm (struct lexer *lexer, struct dataset *ds);
-
-static bool run_glm (struct casereader *,
- struct cmd_glm *,
- const struct dataset *);
-/*
- If the DESIGN subcommand was not specified, specify all possible
- two-way interactions.
- */
-static void
-check_interactions (struct dataset *ds, struct cmd_glm *cmd)
-{
- size_t i;
- size_t j;
- size_t k = 0;
- struct variable **interaction_vars;
-
- /*
- User did not specify the design matrix, so we
- specify it here.
- */
- n_inter = (cmd->n_by + cmd->n_with) * (cmd->n_by + cmd->n_with - 1) / 2;
- interactions = xnmalloc (n_inter, sizeof (*interactions));
- interaction_vars = xnmalloc (2, sizeof (*interaction_vars));
- for (i = 0; i < cmd->n_by; i++)
- {
- for (j = i + 1; j < cmd->n_by; j++)
- {
- interaction_vars[0] = cmd->v_by[i];
- interaction_vars[1] = cmd->v_by[j];
- interactions[k] = interaction_variable_create (interaction_vars, 2);
- k++;
- }
- for (j = 0; j < cmd->n_with; j++)
- {
- interaction_vars[0] = cmd->v_by[i];
- interaction_vars[1] = cmd->v_with[j];
- interactions[k] = interaction_variable_create (interaction_vars, 2);
- k++;
- }
- }
- for (i = 0; i < cmd->n_with; i++)
- {
- for (j = i + 1; j < cmd->n_with; j++)
- {
- interaction_vars[0] = cmd->v_with[i];
- interaction_vars[1] = cmd->v_with[j];
- interactions[k] = interaction_variable_create (interaction_vars, 2);
- k++;
- }
- }
-}
-int
-cmd_glm (struct lexer *lexer, struct dataset *ds)
-{
- struct casegrouper *grouper;
- struct casereader *group;
-
- bool ok;
-
- if (!parse_glm (lexer, ds, &cmd, NULL))
- return CMD_FAILURE;
-
- if (!lex_match_id (lexer, "DESIGN"))
- {
- check_interactions (ds, &cmd);
- }
- /* Data pass. */
- grouper = casegrouper_create_splits (proc_open (ds), dataset_dict (ds));
- while (casegrouper_get_next_group (grouper, &group))
- {
- run_glm (group, &cmd, ds);
- }
- ok = casegrouper_destroy (grouper);
- ok = proc_commit (ds) && ok;
-
- free (v_dependent);
- return ok ? CMD_SUCCESS : CMD_FAILURE;
-}
-
-static int
-parse_interactions (struct lexer *lexer, const struct variable **interaction_vars, int n_members,
- int max_members, struct dataset *ds)
-{
- if (lex_match (lexer, '*'))
- {
- if (n_members > max_members)
- {
- max_members *= 2;
- xnrealloc (interaction_vars, max_members, sizeof (*interaction_vars));
- }
- interaction_vars[n_members] = parse_variable (lexer, dataset_dict (ds));
- parse_interactions (lexer, interaction_vars, n_members++, max_members, ds);
- }
- return n_members;
-}
-/* Parser for the design subcommand. */
-static int
-glm_custom_design (struct lexer *lexer, struct dataset *ds,
- struct cmd_glm *cmd UNUSED, void *aux UNUSED)
-{
- size_t n_allocated = 2;
- size_t n_members;
- struct variable **interaction_vars;
- struct variable *this_var;
-
- interactions = xnmalloc (n_allocated, sizeof (*interactions));
- n_inter = 1;
- while (lex_token (lexer) != T_STOP && lex_token (lexer) != '.')
- {
- this_var = parse_variable (lexer, dataset_dict (ds));
- if (lex_match (lexer, '('))
- {
- lex_force_match (lexer, ')');
- }
- else if (lex_match (lexer, '*'))
- {
- interaction_vars = xnmalloc (2 * n_inter, sizeof (*interaction_vars));
- n_members = parse_interactions (lexer, interaction_vars, 1, 2 * n_inter, ds);
- if (n_allocated < n_inter)
- {
- n_allocated *= 2;
- xnrealloc (interactions, n_allocated, sizeof (*interactions));
- }
- interactions [n_inter - 1] =
- interaction_variable_create (interaction_vars, n_members);
- n_inter++;
- free (interaction_vars);
- }
- }
- return 1;
-}
-/* Parser for the dependent sub command */
-static int
-glm_custom_dependent (struct lexer *lexer, struct dataset *ds,
- struct cmd_glm *cmd UNUSED, void *aux UNUSED)
-{
- const struct dictionary *dict = dataset_dict (ds);
- size_t i;
-
- if ((lex_token (lexer) != T_ID
- || dict_lookup_var (dict, lex_tokid (lexer)) == NULL)
- && lex_token (lexer) != T_ALL)
- return 2;
-
- if (!parse_variables_const (lexer, dict, &v_dependent, &n_dependent, PV_NONE))
- {
- free (v_dependent);
- return 0;
- }
- for (i = 0; i < n_dependent; i++)
- {
- assert (var_is_numeric (v_dependent[i]));
- }
- assert (n_dependent);
- if (n_dependent > 1)
- msg (SE, _("Multivariate GLM not yet supported"));
- n_dependent = 1; /* Drop this line after adding support for multivariate GLM. */
-
- return 1;
-}
-
-static linreg *
-fit_model (const struct covariance *cov,
- const struct variable *dep_var,
- const struct variable ** indep_vars,
- size_t n_data, size_t n_indep)
-{
- linreg *result = NULL;
-
- return result;
-}
-
-static bool
-run_glm (struct casereader *input,
- struct cmd_glm *cmd,
- const struct dataset *ds)
-{
- casenumber row;
- const struct variable **numerics = NULL;
- const struct variable **categoricals = NULL;
- int n_indep = 0;
- linreg *model = NULL;
- pspp_linreg_opts lopts;
- struct ccase *c;
- size_t i;
- size_t n_data; /* Number of valid cases. */
- size_t n_categoricals = 0;
- size_t n_numerics;
- struct casereader *reader;
- struct covariance *cov;
-
- c = casereader_peek (input, 0);
- if (c == NULL)
- {
- casereader_destroy (input);
- return true;
- }
- output_split_file_values (ds, c);
- case_unref (c);
-
- if (!v_dependent)
- {
- dict_get_vars (dataset_dict (ds), &v_dependent, &n_dependent,
- 1u << DC_SYSTEM);
- }
-
- lopts.get_depvar_mean_std = 1;
-
- lopts.get_indep_mean_std = xnmalloc (n_dependent, sizeof (int));
-
-
- n_numerics = n_dependent;
- for (i = 0; i < cmd->n_with; i++)
- {
- if (var_is_alpha (cmd->v_with[i]))
- {
- n_categoricals++;
- }
- else
- {
- n_numerics++;
- }
- }
- for (i = 0; i < cmd->n_by; i++)
- {
- if (var_is_alpha (cmd->v_by[i]))
- {
- n_categoricals++;
- }
- else
- {
- n_numerics++;
- }
- }
- numerics = xnmalloc (n_numerics, sizeof *numerics);
- categoricals = xnmalloc (n_categoricals, sizeof (*categoricals));
- size_t j = 0;
- size_t k = 0;
- for (i = 0; i < cmd->n_by; i++)
- {
- if (var_is_alpha (cmd->v_by[i]))
- {
- categoricals[j] = cmd->v_by[i];
- j++;
- }
- else
- {
- numerics[k] = cmd->v_by[i];
- k++;
- }
- }
- for (i = 0; i < cmd->n_with; i++)
- {
- if (var_is_alpha (cmd->v_with[i]))
- {
- categoricals[j] = cmd->v_with[i];
- j++;
- }
- else
- {
- numerics[k] = cmd->v_with[i];
- k++;
- }
- }
- for (i = 0; i < n_dependent; i++)
- {
- numerics[k] = v_dependent[i];
- k++;
- }
-
- cov = covariance_2pass_create (n_numerics, numerics, n_categoricals, categoricals, NULL, MV_NEVER);
-
- reader = casereader_clone (input);
- reader = casereader_create_filter_missing (reader, numerics, n_numerics,
- MV_ANY, NULL, NULL);
- reader = casereader_create_filter_missing (reader, categoricals, n_categoricals,
- MV_ANY, NULL, NULL);
- struct casereader *r = casereader_clone (reader);
-
- reader = casereader_create_counter (reader, &row, -1);
-
- for (; (c = casereader_read (reader)) != NULL; case_unref (c))
- {
- covariance_accumulate_pass1 (cov, c);
- }
- for (; (c = casereader_read (r)) != NULL; case_unref (c))
- {
- covariance_accumulate_pass2 (cov, c);
- }
-
- covariance_destroy (cov);
- casereader_destroy (reader);
- casereader_destroy (r);
-
- free (numerics);
- free (categoricals);
- free (lopts.get_indep_mean_std);
- casereader_destroy (input);
-
- return true;
-}
-
-/*
- Local Variables:
- mode: c
- End:
-*/
--- /dev/null
+/* Pspp - a program for statistical analysis.
+ Copyright (C) 2010 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+
+#include <config.h>
+
+#include "kruskal-wallis.h"
+
+#include <gsl/gsl_cdf.h>
+#include <math.h>
+
+#include <data/casereader.h>
+#include <data/casewriter.h>
+#include <data/dictionary.h>
+#include <data/format.h>
+#include <data/procedure.h>
+#include <data/subcase.h>
+#include <data/variable.h>
+
+#include <libpspp/assertion.h>
+#include <libpspp/message.h>
+#include <libpspp/misc.h>
+#include <libpspp/hmap.h>
+#include <math/sort.h>
+
+
+#include "minmax.h"
+#include "xalloc.h"
+
+
+/* Returns true iff the independent variable lies in the range [nst->val1, nst->val2] */
+static bool
+include_func (const struct ccase *c, void *aux)
+{
+ const struct n_sample_test *nst = aux;
+
+ if (0 < value_compare_3way (&nst->val1, case_data (c, nst->indep_var), var_get_width (nst->indep_var)))
+ return false;
+
+ if (0 > value_compare_3way (&nst->val2, case_data (c, nst->indep_var), var_get_width (nst->indep_var)))
+ return false;
+
+ return true;
+}
+
+
+struct rank_entry
+{
+ struct hmap_node node;
+ union value group;
+
+ double sum_of_ranks;
+ double n;
+};
+
+/* Return the entry with the key GROUP or null if there is no such entry */
+static struct rank_entry *
+find_rank_entry (const struct hmap *map, const union value *group, size_t width)
+{
+ struct rank_entry *re = NULL;
+ size_t hash = value_hash (group, width, 0);
+
+ HMAP_FOR_EACH_WITH_HASH (re, struct rank_entry, node, hash, map)
+ {
+ if (0 == value_compare_3way (group, &re->group, width))
+ return re;
+ }
+
+ return re;
+}
+
+/* Calculates the adjustment necessary for tie compensation */
+static void
+distinct_callback (double v UNUSED, casenumber t, double w UNUSED, void *aux)
+{
+ double *tiebreaker = aux;
+
+ *tiebreaker += pow3 (t) - t;
+}
+
+
+struct kw
+{
+ struct hmap map;
+ double h;
+};
+
+static void show_ranks_box (const struct n_sample_test *nst, const struct kw *kw, int n_groups);
+static void show_sig_box (const struct n_sample_test *nst, const struct kw *kw);
+
+void
+kruskal_wallis_execute (const struct dataset *ds,
+ struct casereader *input,
+ enum mv_class exclude,
+ const struct npar_test *test,
+ bool exact UNUSED,
+ double timer UNUSED)
+{
+ int i;
+ struct ccase *c;
+ bool warn = true;
+ const struct dictionary *dict = dataset_dict (ds);
+ const struct n_sample_test *nst = UP_CAST (test, const struct n_sample_test, parent);
+ const struct caseproto *proto ;
+ size_t rank_idx ;
+
+ int total_n_groups = 0.0;
+
+ struct kw *kw = xcalloc (nst->n_vars, sizeof *kw);
+
+ /* If the independent variable is missing, then we ignore the case */
+ input = casereader_create_filter_missing (input,
+ &nst->indep_var, 1,
+ exclude,
+ NULL, NULL);
+
+ input = casereader_create_filter_weight (input, dict, &warn, NULL);
+
+ /* Remove all those cases which are outside the range (val1, val2) */
+ input = casereader_create_filter_func (input, include_func, NULL,
+ CONST_CAST (struct n_sample_test *, nst), NULL);
+
+ proto = casereader_get_proto (input);
+ rank_idx = caseproto_get_n_widths (proto);
+
+ /* Rank cases by the v value */
+ for (i = 0; i < nst->n_vars; ++i)
+ {
+ double tiebreaker = 0.0;
+ bool warn = true;
+ enum rank_error rerr = 0;
+ struct casereader *rr;
+ struct casereader *r = casereader_clone (input);
+
+ r = sort_execute_1var (r, nst->vars[i]);
+
+ /* Ignore missings in the test variable */
+ r = casereader_create_filter_missing (r, &nst->vars[i], 1,
+ exclude,
+ NULL, NULL);
+
+ rr = casereader_create_append_rank (r,
+ nst->vars[i],
+ dict_get_weight (dict),
+ &rerr,
+ distinct_callback, &tiebreaker);
+
+ hmap_init (&kw[i].map);
+ for (; (c = casereader_read (rr)); case_unref (c))
+ {
+ const union value *group = case_data (c, nst->indep_var);
+ const size_t group_var_width = var_get_width (nst->indep_var);
+ struct rank_entry *rank = find_rank_entry (&kw[i].map, group, group_var_width);
+
+ if ( NULL == rank)
+ {
+ rank = xzalloc (sizeof *rank);
+ value_clone (&rank->group, group, group_var_width);
+
+ hmap_insert (&kw[i].map, &rank->node,
+ value_hash (&rank->group, group_var_width, 0));
+ }
+
+ rank->sum_of_ranks += case_data_idx (c, rank_idx)->f;
+ rank->n += dict_get_case_weight (dict, c, &warn);
+
+ /* If this assertion fires, then either the data wasn't sorted or some other
+ problem occured */
+ assert (rerr == 0);
+ }
+
+ casereader_destroy (rr);
+
+ /* Calculate the value of h */
+ {
+ struct rank_entry *mre;
+ double n = 0.0;
+
+ HMAP_FOR_EACH (mre, struct rank_entry, node, &kw[i].map)
+ {
+ kw[i].h += pow2 (mre->sum_of_ranks) / mre->n;
+ n += mre->n;
+
+ total_n_groups ++;
+ }
+ kw[i].h *= 12 / (n * ( n + 1));
+ kw[i].h -= 3 * (n + 1) ;
+
+ kw[i].h /= 1 - tiebreaker/ (pow3 (n) - n);
+ }
+ }
+
+ casereader_destroy (input);
+
+ show_ranks_box (nst, kw, total_n_groups);
+ show_sig_box (nst, kw);
+
+ /* Cleanup allocated memory */
+ for (i = 0 ; i < nst->n_vars; ++i)
+ {
+ struct rank_entry *mre, *next;
+ HMAP_FOR_EACH_SAFE (mre, next, struct rank_entry, node, &kw[i].map)
+ {
+ hmap_delete (&kw[i].map, &mre->node);
+ free (mre);
+ }
+ hmap_destroy (&kw[i].map);
+ }
+
+ free (kw);
+}
+
+\f
+#include <output/tab.h>
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+
+static void
+show_ranks_box (const struct n_sample_test *nst, const struct kw *kw, int n_groups)
+{
+ int row;
+ int i;
+ const int row_headers = 2;
+ const int column_headers = 1;
+ struct tab_table *table =
+ tab_create (row_headers + 2, column_headers + n_groups + nst->n_vars);
+
+ tab_headers (table, row_headers, 0, column_headers, 0);
+
+ tab_title (table, _("Ranks"));
+
+ /* Vertical lines inside the box */
+ tab_box (table, 1, 0, -1, TAL_1,
+ row_headers, 0, tab_nc (table) - 1, tab_nr (table) - 1 );
+
+ /* Box around the table */
+ tab_box (table, TAL_2, TAL_2, -1, -1,
+ 0, 0, tab_nc (table) - 1, tab_nr (table) - 1 );
+
+ tab_text (table, 1, 0, TAT_TITLE,
+ var_to_string (nst->indep_var)
+ );
+
+ tab_text (table, 3, 0, 0, _("Mean Rank"));
+ tab_text (table, 2, 0, 0, _("N"));
+
+ tab_hline (table, TAL_2, 0, tab_nc (table) -1, column_headers);
+ tab_vline (table, TAL_2, row_headers, 0, tab_nr (table) - 1);
+
+
+ row = column_headers;
+ for (i = 0 ; i < nst->n_vars ; ++i)
+ {
+ int tot = 0;
+ const struct rank_entry *re;
+
+ if (i > 0)
+ tab_hline (table, TAL_1, 0, tab_nc (table) -1, row);
+
+ tab_text (table, 0, row,
+ TAT_TITLE, var_to_string (nst->vars[i]));
+
+ HMAP_FOR_EACH (re, const struct rank_entry, node, &kw[i].map)
+ {
+ struct string str;
+ ds_init_empty (&str);
+
+ var_append_value_name (nst->indep_var, &re->group, &str);
+
+ tab_text (table, 1, row, TAB_LEFT, ds_cstr (&str));
+ tab_double (table, 2, row, TAB_LEFT, re->n, &F_8_0);
+ tab_double (table, 3, row, TAB_LEFT, re->sum_of_ranks / re->n, 0);
+
+ tot += re->n;
+ row++;
+ ds_destroy (&str);
+ }
+ tab_double (table, 2, row, TAB_LEFT,
+ tot, &F_8_0);
+ tab_text (table, 1, row++, TAB_LEFT, _("Total"));
+ }
+
+ tab_submit (table);
+}
+
+
+static void
+show_sig_box (const struct n_sample_test *nst, const struct kw *kw)
+{
+ int i;
+ const int row_headers = 1;
+ const int column_headers = 1;
+ struct tab_table *table =
+ tab_create (row_headers + nst->n_vars * 2, column_headers + 3);
+
+ tab_headers (table, row_headers, 0, column_headers, 0);
+
+ tab_title (table, _("Test Statistics"));
+
+ tab_text (table, 0, column_headers,
+ TAT_TITLE | TAB_LEFT , _("Chi-Square"));
+
+ tab_text (table, 0, 1 + column_headers,
+ TAT_TITLE | TAB_LEFT, _("df"));
+
+ tab_text (table, 0, 2 + column_headers,
+ TAT_TITLE | TAB_LEFT, _("Asymp. Sig."));
+
+ /* Box around the table */
+ tab_box (table, TAL_2, TAL_2, -1, -1,
+ 0, 0, tab_nc (table) - 1, tab_nr (table) - 1 );
+
+
+ tab_hline (table, TAL_2, 0, tab_nc (table) -1, column_headers);
+ tab_vline (table, TAL_2, row_headers, 0, tab_nr (table) - 1);
+
+ for (i = 0 ; i < nst->n_vars; ++i)
+ {
+ const double df = hmap_count (&kw[i].map) - 1;
+ tab_text (table, column_headers + 1 + i, 0, TAT_TITLE,
+ var_to_string (nst->vars[i])
+ );
+
+ tab_double (table, column_headers + 1 + i, 1, 0,
+ kw[i].h, 0);
+
+ tab_double (table, column_headers + 1 + i, 2, 0,
+ df, &F_8_0);
+
+ tab_double (table, column_headers + 1 + i, 3, 0,
+ gsl_cdf_chisq_Q (kw[i].h, df),
+ 0);
+ }
+
+ tab_submit (table);
+}
--- /dev/null
+/* PSPP - a program for statistical analysis.
+ Copyright (C) 2010 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#if !kruskal_wallis_h
+#define kruskal_wallis_h 1
+
+#include <stddef.h>
+#include <stdbool.h>
+#include <language/stats/npar.h>
+#include <data/case.h>
+
+
+struct kruskal_wallis_test
+{
+ struct two_sample_test parent;
+};
+
+struct casereader;
+struct dataset;
+
+void kruskal_wallis_execute (const struct dataset *ds,
+ struct casereader *input,
+ enum mv_class exclude,
+ const struct npar_test *test,
+ bool exact,
+ double timer
+ );
+
+#endif
struct casereader *input,
const struct dictionary *dict,
const struct variable *const *vv,
- int n_vars UNUSED,
+ int n_vars,
enum mv_class filter)
{
int i = 0;
- while (*vv)
+ for (i = 0 ; i < n_vars; ++i)
{
double minimum = DBL_MAX;
double maximum = -DBL_MAX;
double var;
struct moments1 *moments = moments1_create (MOMENT_VARIANCE);
struct ccase *c;
- const struct variable *v = *vv++;
+ const struct variable *v = vv[i];
struct casereader *pass;
pass = casereader_clone (input);
desc[i].min = minimum;
desc[i].max = maximum;
-
- i++;
}
+
casereader_destroy (input);
}
--- /dev/null
+/* PSPP - a program for statistical analysis. -*-c-*-
+ Copyright (C) 2006, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <language/stats/npar.h>
+#include "npar-summary.h"
+
+#include <stdlib.h>
+#include <math.h>
+
+#include "xalloc.h"
+
+#include <data/case.h>
+#include <data/casegrouper.h>
+#include <data/casereader.h>
+#include <data/dictionary.h>
+#include <data/procedure.h>
+#include <data/settings.h>
+#include <data/variable.h>
+#include <libpspp/assertion.h>
+#include <libpspp/cast.h>
+#include <libpspp/hmapx.h>
+#include <libpspp/hash-functions.h>
+#include <libpspp/message.h>
+#include <libpspp/pool.h>
+#include <libpspp/str.h>
+#include <libpspp/taint.h>
+#include <language/command.h>
+#include <language/lexer/lexer.h>
+#include <language/lexer/variable-parser.h>
+#include <language/lexer/value-parser.h>
+#include <language/stats/binomial.h>
+#include <language/stats/chisquare.h>
+#include <language/stats/kruskal-wallis.h>
+#include <language/stats/wilcoxon.h>
+#include <language/stats/sign.h>
+#include <math/moments.h>
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+/* Settings for subcommand specifiers. */
+enum missing_type
+ {
+ MISS_ANALYSIS,
+ MISS_LISTWISE,
+ };
+
+/* Array indices for STATISTICS subcommand. */
+enum
+ {
+ NPAR_ST_DESCRIPTIVES = 0,
+ NPAR_ST_QUARTILES = 1,
+ NPAR_ST_ALL = 2,
+ NPAR_ST_count
+ };
+
+/* NPAR TESTS structure. */
+struct cmd_npar_tests
+ {
+ /* Count variables indicating how many
+ of the subcommands have been given. */
+ int chisquare;
+ int binomial;
+ int wilcoxon;
+ int sign;
+ int kruskal_wallis;
+ int missing;
+ int method;
+ int statistics;
+
+ /* How missing values should be treated */
+ long miss;
+
+ /* Which statistics have been requested */
+ int a_statistics[NPAR_ST_count];
+ };
+
+
+struct npar_specs
+{
+ struct pool *pool;
+ struct npar_test **test;
+ size_t n_tests;
+
+ const struct variable **vv; /* Compendium of all variables
+ (those mentioned on ANY subcommand */
+ int n_vars; /* Number of variables in vv */
+
+ enum mv_class filter; /* Missing values to filter. */
+
+ bool descriptives; /* Descriptive statistics should be calculated */
+ bool quartiles; /* Quartiles should be calculated */
+
+ bool exact; /* Whether exact calculations have been requested */
+ double timer; /* Maximum time (in minutes) to wait for exact calculations */
+};
+
+
+/* Prototype for custom subcommands of NPAR TESTS. */
+static int npar_chisquare (struct lexer *, struct dataset *, struct npar_specs *);
+static int npar_binomial (struct lexer *, struct dataset *, struct npar_specs *);
+static int npar_wilcoxon (struct lexer *, struct dataset *, struct npar_specs *);
+static int npar_sign (struct lexer *, struct dataset *, struct npar_specs *);
+static int npar_kruskal_wallis (struct lexer *, struct dataset *, struct npar_specs *);
+static int npar_method (struct lexer *, struct npar_specs *);
+
+/* Command parsing functions. */
+static int parse_npar_tests (struct lexer *lexer, struct dataset *ds, struct cmd_npar_tests *p,
+ struct npar_specs *npar_specs );
+
+static int
+parse_npar_tests (struct lexer *lexer, struct dataset *ds, struct cmd_npar_tests *npt,
+ struct npar_specs *nps)
+{
+ npt->chisquare = 0;
+ npt->binomial = 0;
+ npt->wilcoxon = 0;
+ npt->sign = 0;
+ npt->missing = 0;
+ npt->miss = MISS_ANALYSIS;
+ npt->method = 0;
+ npt->statistics = 0;
+ memset (npt->a_statistics, 0, sizeof npt->a_statistics);
+ for (;;)
+ {
+ if (lex_match_hyphenated_word (lexer, "CHISQUARE"))
+ {
+ lex_match (lexer, '=');
+ npt->chisquare++;
+ switch (npar_chisquare (lexer, ds, nps))
+ {
+ case 0:
+ goto lossage;
+ case 1:
+ break;
+ case 2:
+ lex_error (lexer, NULL);
+ goto lossage;
+ default:
+ NOT_REACHED ();
+ }
+ }
+ else if (lex_match_hyphenated_word (lexer, "BINOMIAL"))
+ {
+ lex_match (lexer, '=');
+ npt->binomial++;
+ switch (npar_binomial (lexer, ds, nps))
+ {
+ case 0:
+ goto lossage;
+ case 1:
+ break;
+ case 2:
+ lex_error (lexer, NULL);
+ goto lossage;
+ default:
+ NOT_REACHED ();
+ }
+ }
+ else if (lex_match_hyphenated_word (lexer, "K-W") ||
+ lex_match_hyphenated_word (lexer, "KRUSKAL-WALLIS"))
+ {
+ lex_match (lexer, '=');
+ npt->kruskal_wallis++;
+ switch (npar_kruskal_wallis (lexer, ds, nps))
+ {
+ case 0:
+ goto lossage;
+ case 1:
+ break;
+ case 2:
+ lex_error (lexer, NULL);
+ goto lossage;
+ default:
+ NOT_REACHED ();
+ }
+ }
+ else if (lex_match_hyphenated_word (lexer, "WILCOXON"))
+ {
+ lex_match (lexer, '=');
+ npt->wilcoxon++;
+ switch (npar_wilcoxon (lexer, ds, nps))
+ {
+ case 0:
+ goto lossage;
+ case 1:
+ break;
+ case 2:
+ lex_error (lexer, NULL);
+ goto lossage;
+ default:
+ NOT_REACHED ();
+ }
+ }
+ else if (lex_match_hyphenated_word (lexer, "SIGN"))
+ {
+ lex_match (lexer, '=');
+ npt->sign++;
+ switch (npar_sign (lexer, ds, nps))
+ {
+ case 0:
+ goto lossage;
+ case 1:
+ break;
+ case 2:
+ lex_error (lexer, NULL);
+ goto lossage;
+ default:
+ NOT_REACHED ();
+ }
+ }
+ else if (lex_match_hyphenated_word (lexer, "MISSING"))
+ {
+ lex_match (lexer, '=');
+ npt->missing++;
+ if (npt->missing > 1)
+ {
+ msg (SE, _("The %s subcommand may be given only once."), "MISSING");
+ goto lossage;
+ }
+ while (lex_token (lexer) != '/' && lex_token (lexer) != '.')
+ {
+ if (lex_match_hyphenated_word (lexer, "ANALYSIS"))
+ npt->miss = MISS_ANALYSIS;
+ else if (lex_match_hyphenated_word (lexer, "LISTWISE"))
+ npt->miss = MISS_LISTWISE;
+ else if (lex_match_hyphenated_word (lexer, "INCLUDE"))
+ nps->filter = MV_SYSTEM;
+ else if (lex_match_hyphenated_word (lexer, "EXCLUDE"))
+ nps->filter = MV_ANY;
+ else
+ {
+ lex_error (lexer, NULL);
+ goto lossage;
+ }
+ lex_match (lexer, ',');
+ }
+ }
+ else if (lex_match_hyphenated_word (lexer, "METHOD"))
+ {
+ lex_match (lexer, '=');
+ npt->method++;
+ if (npt->method > 1)
+ {
+ msg (SE, _("The %s subcommand may be given only once."), "METHOD");
+ goto lossage;
+ }
+ switch (npar_method (lexer, nps))
+ {
+ case 0:
+ goto lossage;
+ case 1:
+ break;
+ case 2:
+ lex_error (lexer, NULL);
+ goto lossage;
+ default:
+ NOT_REACHED ();
+ }
+ }
+ else if (lex_match_hyphenated_word (lexer, "STATISTICS"))
+ {
+ lex_match (lexer, '=');
+ npt->statistics++;
+ while (lex_token (lexer) != '/' && lex_token (lexer) != '.')
+ {
+ if (lex_match_hyphenated_word (lexer, "DESCRIPTIVES"))
+ npt->a_statistics[NPAR_ST_DESCRIPTIVES] = 1;
+ else if (lex_match_hyphenated_word (lexer, "QUARTILES"))
+ npt->a_statistics[NPAR_ST_QUARTILES] = 1;
+ else if (lex_match (lexer, T_ALL))
+ npt->a_statistics[NPAR_ST_ALL] = 1;
+ else
+ {
+ lex_error (lexer, NULL);
+ goto lossage;
+ }
+ lex_match (lexer, ',');
+ }
+ }
+ else if ( settings_get_syntax () != COMPATIBLE && lex_match_id (lexer, "ALGORITHM"))
+ {
+ lex_match (lexer, '=');
+ if (lex_match_id (lexer, "COMPATIBLE"))
+ settings_set_cmd_algorithm (COMPATIBLE);
+ else if (lex_match_id (lexer, "ENHANCED"))
+ settings_set_cmd_algorithm (ENHANCED);
+ }
+ if (!lex_match (lexer, '/'))
+ break;
+ }
+
+ if (lex_token (lexer) != '.')
+ {
+ lex_error (lexer, _("expecting end of command"));
+ goto lossage;
+ }
+
+ return true;
+
+lossage:
+ return false;
+}
+
+
+static void one_sample_insert_variables (const struct npar_test *test,
+ struct hmapx *);
+
+static void two_sample_insert_variables (const struct npar_test *test,
+ struct hmapx *);
+
+static void n_sample_insert_variables (const struct npar_test *test,
+ struct hmapx *);
+
+static void
+npar_execute (struct casereader *input,
+ const struct npar_specs *specs,
+ const struct dataset *ds)
+{
+ int t;
+ struct descriptives *summary_descriptives = NULL;
+
+ for ( t = 0 ; t < specs->n_tests; ++t )
+ {
+ const struct npar_test *test = specs->test[t];
+ if ( NULL == test->execute )
+ {
+ msg (SW, _("NPAR subcommand not currently implemented."));
+ continue;
+ }
+ test->execute (ds, casereader_clone (input), specs->filter, test, specs->exact, specs->timer);
+ }
+
+ if ( specs->descriptives )
+ {
+ summary_descriptives = xnmalloc (sizeof (*summary_descriptives),
+ specs->n_vars);
+
+ npar_summary_calc_descriptives (summary_descriptives,
+ casereader_clone (input),
+ dataset_dict (ds),
+ specs->vv, specs->n_vars,
+ specs->filter);
+ }
+
+ if ( (specs->descriptives || specs->quartiles)
+ && !taint_has_tainted_successor (casereader_get_taint (input)) )
+ do_summary_box (summary_descriptives, specs->vv, specs->n_vars );
+
+ free (summary_descriptives);
+ casereader_destroy (input);
+}
+
+int
+cmd_npar_tests (struct lexer *lexer, struct dataset *ds)
+{
+ struct cmd_npar_tests cmd;
+ bool ok;
+ int i;
+ struct npar_specs npar_specs = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+ struct casegrouper *grouper;
+ struct casereader *input, *group;
+ struct hmapx var_map = HMAPX_INITIALIZER (var_map);
+
+
+ npar_specs.pool = pool_create ();
+ npar_specs.filter = MV_ANY;
+ npar_specs.n_vars = -1;
+ npar_specs.vv = NULL;
+
+ if ( ! parse_npar_tests (lexer, ds, &cmd, &npar_specs) )
+ {
+ pool_destroy (npar_specs.pool);
+ return CMD_FAILURE;
+ }
+
+ for (i = 0; i < npar_specs.n_tests; ++i )
+ {
+ const struct npar_test *test = npar_specs.test[i];
+ test->insert_variables (test, &var_map);
+ }
+
+ {
+ struct hmapx_node *node;
+ struct variable *var;
+ npar_specs.n_vars = 0;
+
+ HMAPX_FOR_EACH (var, node, &var_map)
+ {
+ npar_specs.n_vars ++;
+ npar_specs.vv = pool_nrealloc (npar_specs.pool, npar_specs.vv, npar_specs.n_vars, sizeof (*npar_specs.vv));
+ npar_specs.vv[npar_specs.n_vars - 1] = var;
+ }
+ }
+
+ qsort (npar_specs.vv, npar_specs.n_vars, sizeof (*npar_specs.vv),
+ compare_var_ptrs_by_name);
+
+ if ( cmd.statistics )
+ {
+ int i;
+
+ for ( i = 0 ; i < NPAR_ST_count; ++i )
+ {
+ if ( cmd.a_statistics[i] )
+ {
+ switch ( i )
+ {
+ case NPAR_ST_DESCRIPTIVES:
+ npar_specs.descriptives = true;
+ break;
+ case NPAR_ST_QUARTILES:
+ npar_specs.quartiles = true;
+ break;
+ case NPAR_ST_ALL:
+ npar_specs.quartiles = true;
+ npar_specs.descriptives = true;
+ break;
+ default:
+ NOT_REACHED ();
+ };
+ }
+ }
+ }
+
+ input = proc_open (ds);
+ if ( cmd.miss == MISS_LISTWISE )
+ {
+ input = casereader_create_filter_missing (input,
+ npar_specs.vv,
+ npar_specs.n_vars,
+ npar_specs.filter,
+ NULL, NULL);
+ }
+
+
+ grouper = casegrouper_create_splits (input, dataset_dict (ds));
+ while (casegrouper_get_next_group (grouper, &group))
+ npar_execute (group, &npar_specs, ds);
+ ok = casegrouper_destroy (grouper);
+ ok = proc_commit (ds) && ok;
+
+ pool_destroy (npar_specs.pool);
+ hmapx_destroy (&var_map);
+
+ return ok ? CMD_SUCCESS : CMD_CASCADING_FAILURE;
+}
+
+static int
+npar_chisquare (struct lexer *lexer, struct dataset *ds,
+ struct npar_specs *specs)
+{
+ struct chisquare_test *cstp = pool_alloc (specs->pool, sizeof (*cstp));
+ struct one_sample_test *tp = &cstp->parent;
+ struct npar_test *nt = &tp->parent;
+
+ nt->execute = chisquare_execute;
+ nt->insert_variables = one_sample_insert_variables;
+
+ if (!parse_variables_const_pool (lexer, specs->pool, dataset_dict (ds),
+ &tp->vars, &tp->n_vars,
+ PV_NO_SCRATCH | PV_NO_DUPLICATE))
+ {
+ return 2;
+ }
+
+ cstp->ranged = false;
+
+ if ( lex_match (lexer, '('))
+ {
+ cstp->ranged = true;
+ if ( ! lex_force_num (lexer)) return 0;
+ cstp->lo = lex_integer (lexer);
+ lex_get (lexer);
+ lex_force_match (lexer, ',');
+ if (! lex_force_num (lexer) ) return 0;
+ cstp->hi = lex_integer (lexer);
+ if ( cstp->lo >= cstp->hi )
+ {
+ msg (ME,
+ _("The specified value of HI (%d) is "
+ "lower than the specified value of LO (%d)"),
+ cstp->hi, cstp->lo);
+ return 0;
+ }
+ lex_get (lexer);
+ if (! lex_force_match (lexer, ')')) return 0;
+ }
+
+ cstp->n_expected = 0;
+ cstp->expected = NULL;
+ if ( lex_match (lexer, '/') )
+ {
+ if ( lex_match_id (lexer, "EXPECTED") )
+ {
+ lex_force_match (lexer, '=');
+ if ( ! lex_match_id (lexer, "EQUAL") )
+ {
+ double f;
+ int n;
+ while ( lex_is_number (lexer) )
+ {
+ int i;
+ n = 1;
+ f = lex_number (lexer);
+ lex_get (lexer);
+ if ( lex_match (lexer, '*'))
+ {
+ n = f;
+ f = lex_number (lexer);
+ lex_get (lexer);
+ }
+ lex_match (lexer, ',');
+
+ cstp->n_expected += n;
+ cstp->expected = pool_realloc (specs->pool,
+ cstp->expected,
+ sizeof (double) *
+ cstp->n_expected);
+ for ( i = cstp->n_expected - n ;
+ i < cstp->n_expected;
+ ++i )
+ cstp->expected[i] = f;
+
+ }
+ }
+ }
+ else
+ lex_put_back (lexer, '/');
+ }
+
+ if ( cstp->ranged && cstp->n_expected > 0 &&
+ cstp->n_expected != cstp->hi - cstp->lo + 1 )
+ {
+ msg (ME,
+ _("%d expected values were given, but the specified "
+ "range (%d-%d) requires exactly %d values."),
+ cstp->n_expected, cstp->lo, cstp->hi,
+ cstp->hi - cstp->lo +1);
+ return 0;
+ }
+
+ specs->n_tests++;
+ specs->test = pool_realloc (specs->pool,
+ specs->test,
+ sizeof (*specs->test) * specs->n_tests);
+
+ specs->test[specs->n_tests - 1] = nt;
+
+ return 1;
+}
+
+
+static int
+npar_binomial (struct lexer *lexer, struct dataset *ds,
+ struct npar_specs *specs)
+{
+ struct binomial_test *btp = pool_alloc (specs->pool, sizeof (*btp));
+ struct one_sample_test *tp = &btp->parent;
+ struct npar_test *nt = &tp->parent;
+
+ nt->execute = binomial_execute;
+ nt->insert_variables = one_sample_insert_variables;
+
+ btp->category1 = btp->category2 = btp->cutpoint = SYSMIS;
+
+ btp->p = 0.5;
+
+ if ( lex_match (lexer, '(') )
+ {
+ if ( lex_force_num (lexer) )
+ {
+ btp->p = lex_number (lexer);
+ lex_get (lexer);
+ lex_force_match (lexer, ')');
+ }
+ else
+ return 0;
+ }
+ else
+ /* Kludge: q2c swallows the '=' so put it back here */
+ lex_put_back (lexer, '=');
+
+ if (lex_match (lexer, '=') )
+ {
+ if (parse_variables_const_pool (lexer, specs->pool, dataset_dict (ds),
+ &tp->vars, &tp->n_vars,
+ PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) )
+ {
+ if (lex_match (lexer, '('))
+ {
+ lex_force_num (lexer);
+ btp->category1 = lex_number (lexer);
+ lex_get (lexer);
+ if ( lex_match (lexer, ','))
+ {
+ if ( ! lex_force_num (lexer) ) return 2;
+ btp->category2 = lex_number (lexer);
+ lex_get (lexer);
+ }
+ else
+ {
+ btp->cutpoint = btp->category1;
+ }
+
+ lex_force_match (lexer, ')');
+ }
+ }
+ else
+ return 2;
+
+ }
+
+ specs->n_tests++;
+ specs->test = pool_realloc (specs->pool,
+ specs->test,
+ sizeof (*specs->test) * specs->n_tests);
+
+ specs->test[specs->n_tests - 1] = nt;
+
+ return 1;
+}
+
+
+static bool
+parse_two_sample_related_test (struct lexer *lexer,
+ const struct dictionary *dict,
+ struct two_sample_test *test_parameters,
+ struct pool *pool
+ );
+
+
+static bool
+parse_two_sample_related_test (struct lexer *lexer,
+ const struct dictionary *dict,
+ struct two_sample_test *test_parameters,
+ struct pool *pool
+ )
+{
+ int n = 0;
+ bool paired = false;
+ bool with = false;
+ const struct variable **vlist1;
+ size_t n_vlist1;
+
+ const struct variable **vlist2;
+ size_t n_vlist2;
+
+ test_parameters->parent.insert_variables = two_sample_insert_variables;
+
+ if (!parse_variables_const_pool (lexer, pool,
+ dict,
+ &vlist1, &n_vlist1,
+ PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) )
+ return false;
+
+ if ( lex_match (lexer, T_WITH))
+ {
+ with = true;
+ if ( !parse_variables_const_pool (lexer, pool, dict,
+ &vlist2, &n_vlist2,
+ PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) )
+ return false;
+
+ paired = (lex_match (lexer, '(') &&
+ lex_match_id (lexer, "PAIRED") && lex_match (lexer, ')'));
+ }
+
+
+ if ( with )
+ {
+ if (paired)
+ {
+ if ( n_vlist1 != n_vlist2)
+ msg (SE, _("PAIRED was specified but the number of variables "
+ "preceding WITH (%zu) did not match the number "
+ "following (%zu)."), n_vlist1, n_vlist2);
+
+ test_parameters->n_pairs = n_vlist1 ;
+ }
+ else
+ {
+ test_parameters->n_pairs = n_vlist1 * n_vlist2;
+ }
+ }
+ else
+ {
+ test_parameters->n_pairs = (n_vlist1 * (n_vlist1 - 1)) / 2 ;
+ }
+
+ test_parameters->pairs =
+ pool_alloc (pool, sizeof ( variable_pair) * test_parameters->n_pairs);
+
+ if ( with )
+ {
+ if (paired)
+ {
+ int i;
+ assert (n_vlist1 == n_vlist2);
+ for ( i = 0 ; i < n_vlist1; ++i )
+ {
+ test_parameters->pairs[n][1] = vlist1[i];
+ test_parameters->pairs[n][0] = vlist2[i];
+ n++;
+ }
+ }
+ else
+ {
+ int i,j;
+ for ( i = 0 ; i < n_vlist1; ++i )
+ {
+ for ( j = 0 ; j < n_vlist2; ++j )
+ {
+ test_parameters->pairs[n][1] = vlist1[i];
+ test_parameters->pairs[n][0] = vlist2[j];
+ n++;
+ }
+ }
+ }
+ }
+ else
+ {
+ int i,j;
+ for ( i = 0 ; i < n_vlist1 - 1; ++i )
+ {
+ for ( j = i + 1 ; j < n_vlist1; ++j )
+ {
+ assert ( n < test_parameters->n_pairs);
+ test_parameters->pairs[n][1] = vlist1[i];
+ test_parameters->pairs[n][0] = vlist1[j];
+ n++;
+ }
+ }
+ }
+
+ assert ( n == test_parameters->n_pairs);
+
+ return true;
+}
+
+
+static bool
+parse_n_sample_related_test (struct lexer *lexer,
+ const struct dictionary *dict,
+ struct n_sample_test *nst,
+ struct pool *pool
+ )
+{
+ if (!parse_variables_const_pool (lexer, pool,
+ dict,
+ &nst->vars, &nst->n_vars,
+ PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) )
+ return false;
+
+ if ( ! lex_force_match (lexer, T_BY))
+ return false;
+
+ nst->indep_var = parse_variable_const (lexer, dict);
+
+ if ( ! lex_force_match (lexer, '('))
+ return false;
+
+ value_init (&nst->val1, var_get_width (nst->indep_var));
+ if ( ! parse_value (lexer, &nst->val1, var_get_width (nst->indep_var)))
+ {
+ value_destroy (&nst->val1, var_get_width (nst->indep_var));
+ return false;
+ }
+
+ if ( ! lex_force_match (lexer, ','))
+ return false;
+
+ value_init (&nst->val2, var_get_width (nst->indep_var));
+ if ( ! parse_value (lexer, &nst->val2, var_get_width (nst->indep_var)))
+ {
+ value_destroy (&nst->val2, var_get_width (nst->indep_var));
+ return false;
+ }
+
+ if ( ! lex_force_match (lexer, ')'))
+ return false;
+
+ return true;
+}
+
+static int
+npar_wilcoxon (struct lexer *lexer,
+ struct dataset *ds,
+ struct npar_specs *specs )
+{
+
+
+ struct two_sample_test *tp = pool_alloc (specs->pool, sizeof (*tp));
+ struct npar_test *nt = &tp->parent;
+ nt->execute = wilcoxon_execute;
+
+ if (!parse_two_sample_related_test (lexer, dataset_dict (ds),
+ tp, specs->pool) )
+ return 0;
+
+ specs->n_tests++;
+ specs->test = pool_realloc (specs->pool,
+ specs->test,
+ sizeof (*specs->test) * specs->n_tests);
+ specs->test[specs->n_tests - 1] = nt;
+
+ return 1;
+}
+
+static int
+npar_sign (struct lexer *lexer, struct dataset *ds,
+ struct npar_specs *specs)
+{
+ struct two_sample_test *tp = pool_alloc (specs->pool, sizeof (*tp));
+ struct npar_test *nt = &tp->parent;
+
+ nt->execute = sign_execute;
+
+ if (!parse_two_sample_related_test (lexer, dataset_dict (ds),
+ tp, specs->pool) )
+ return 0;
+
+ specs->n_tests++;
+ specs->test = pool_realloc (specs->pool,
+ specs->test,
+ sizeof (*specs->test) * specs->n_tests);
+ specs->test[specs->n_tests - 1] = nt;
+
+ return 1;
+}
+
+static int
+npar_kruskal_wallis (struct lexer *lexer, struct dataset *ds,
+ struct npar_specs *specs)
+{
+ struct n_sample_test *tp = pool_alloc (specs->pool, sizeof (*tp));
+ struct npar_test *nt = &tp->parent;
+
+ nt->insert_variables = n_sample_insert_variables;
+
+ nt->execute = kruskal_wallis_execute;
+
+ if (!parse_n_sample_related_test (lexer, dataset_dict (ds),
+ tp, specs->pool) )
+ return 0;
+
+ specs->n_tests++;
+ specs->test = pool_realloc (specs->pool,
+ specs->test,
+ sizeof (*specs->test) * specs->n_tests);
+ specs->test[specs->n_tests - 1] = nt;
+
+ return 1;
+}
+
+static void
+insert_variable_into_map (struct hmapx *var_map, const struct variable *var)
+{
+ size_t hash = hash_pointer (var, 0);
+ struct hmapx_node *node;
+ const struct variable *v = NULL;
+
+ HMAPX_FOR_EACH_WITH_HASH (v, node, hash, var_map)
+ {
+ if ( v == var)
+ return ;
+ }
+
+ hmapx_insert (var_map, CONST_CAST (struct variable *, var), hash);
+}
+
+/* Insert the variables for TEST into VAR_MAP */
+static void
+one_sample_insert_variables (const struct npar_test *test,
+ struct hmapx *var_map)
+{
+ int i;
+ const struct one_sample_test *ost = UP_CAST (test, const struct one_sample_test, parent);
+
+ for ( i = 0 ; i < ost->n_vars ; ++i )
+ insert_variable_into_map (var_map, ost->vars[i]);
+}
+
+
+static void
+two_sample_insert_variables (const struct npar_test *test,
+ struct hmapx *var_map)
+{
+ int i;
+ const struct two_sample_test *tst = UP_CAST (test, const struct two_sample_test, parent);
+
+ for ( i = 0 ; i < tst->n_pairs ; ++i )
+ {
+ variable_pair *pair = &tst->pairs[i];
+
+ insert_variable_into_map (var_map, (*pair)[0]);
+ insert_variable_into_map (var_map, (*pair)[1]);
+ }
+}
+
+static void
+n_sample_insert_variables (const struct npar_test *test,
+ struct hmapx *var_map)
+{
+ int i;
+ const struct n_sample_test *tst = UP_CAST (test, const struct n_sample_test, parent);
+
+ for ( i = 0 ; i < tst->n_vars ; ++i )
+ insert_variable_into_map (var_map, tst->vars[i]);
+
+ insert_variable_into_map (var_map, tst->indep_var);
+}
+
+
+static int
+npar_method (struct lexer *lexer, struct npar_specs *specs)
+{
+ if ( lex_match_id (lexer, "EXACT") )
+ {
+ specs->exact = true;
+ specs->timer = 0.0;
+ if (lex_match_id (lexer, "TIMER"))
+ {
+ specs->timer = 5.0;
+
+ if ( lex_match (lexer, '('))
+ {
+ if ( lex_force_num (lexer) )
+ {
+ specs->timer = lex_number (lexer);
+ lex_get (lexer);
+ }
+ lex_force_match (lexer, ')');
+ }
+ }
+ }
+
+ return 1;
+}
#include <stddef.h>
#include <stdbool.h>
#include <data/missing-values.h>
-
-#include <stddef.h>
-#include <data/missing-values.h>
+#include <data/value.h>
typedef const struct variable *variable_pair[2];
-struct hsh_table;
-struct const_hsh_table;
+struct hmapx;
struct casefilter;
struct casereader;
struct dataset;
+
struct npar_test
{
void (*execute) (const struct dataset *,
double);
void (*insert_variables) (const struct npar_test *,
- struct const_hsh_table *);
+ struct hmapx *);
};
+
struct one_sample_test
{
struct npar_test parent;
};
+struct n_sample_test
+{
+ struct npar_test parent;
+ const struct variable **vars;
+ size_t n_vars;
+
+ union value val1, val2;
+ const struct variable *indep_var;
+};
+
#endif
+++ /dev/null
-/* PSPP - a program for statistical analysis. -*-c-*-
- Copyright (C) 2006, 2008, 2009 Free Software Foundation, Inc.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-
-#include <language/stats/npar.h>
-
-#include <math.h>
-
-#include <data/case.h>
-#include <data/casegrouper.h>
-#include <data/casereader.h>
-#include <data/dictionary.h>
-#include <data/procedure.h>
-#include <language/command.h>
-#include <language/lexer/lexer.h>
-#include <language/lexer/variable-parser.h>
-#include <language/stats/binomial.h>
-#include <language/stats/chisquare.h>
-#include <language/stats/wilcoxon.h>
-#include <language/stats/sign.h>
-#include <libpspp/cast.h>
-#include <libpspp/hash.h>
-#include <libpspp/pool.h>
-#include <libpspp/taint.h>
-#include <math/moments.h>
-
-#include "npar-summary.h"
-
-#include "gettext.h"
-#define _(msgid) gettext (msgid)
-
-/* (headers) */
-
-/* (specification)
- "NPAR TESTS" (npar_):
- +chisquare=custom;
- +binomial=custom;
- +wilcoxon=custom;
- +mcnemar=custom;
- +sign=custom;
- +cochran=varlist;
- +friedman=varlist;
- +kendall=varlist;
- missing=miss:!analysis/listwise,
- incl:include/!exclude;
- method=custom;
- +statistics[st_]=descriptives,quartiles,all.
-*/
-/* (declarations) */
-/* (functions) */
-
-
-static struct cmd_npar_tests cmd;
-
-
-struct npar_specs
-{
- struct pool *pool;
- struct npar_test **test;
- size_t n_tests;
-
- const struct variable ** vv; /* Compendium of all variables
- (those mentioned on ANY subcommand */
- int n_vars; /* Number of variables in vv */
-
- enum mv_class filter; /* Missing values to filter. */
-
- bool descriptives; /* Descriptive statistics should be calculated */
- bool quartiles; /* Quartiles should be calculated */
-
- bool exact; /* Whether exact calculations have been requested */
- double timer; /* Maximum time (in minutes) to wait for exact calculations */
-};
-
-static void one_sample_insert_variables (const struct npar_test *test,
- struct const_hsh_table *variables);
-
-static void two_sample_insert_variables (const struct npar_test *test,
- struct const_hsh_table *variables);
-
-
-
-static void
-npar_execute(struct casereader *input,
- const struct npar_specs *specs,
- const struct dataset *ds)
-{
- int t;
- struct descriptives *summary_descriptives = NULL;
-
- for ( t = 0 ; t < specs->n_tests; ++t )
- {
- const struct npar_test *test = specs->test[t];
- if ( NULL == test->execute )
- {
- msg (SW, _("NPAR subcommand not currently implemented."));
- continue;
- }
- test->execute (ds, casereader_clone (input), specs->filter, test, specs->exact, specs->timer);
- }
-
- if ( specs->descriptives )
- {
- summary_descriptives = xnmalloc (sizeof (*summary_descriptives),
- specs->n_vars);
-
- npar_summary_calc_descriptives (summary_descriptives,
- casereader_clone (input),
- dataset_dict (ds),
- specs->vv, specs->n_vars,
- specs->filter);
- }
-
- if ( (specs->descriptives || specs->quartiles)
- && !taint_has_tainted_successor (casereader_get_taint (input)) )
- do_summary_box (summary_descriptives, specs->vv, specs->n_vars );
-
- free (summary_descriptives);
- casereader_destroy (input);
-}
-
-
-int
-cmd_npar_tests (struct lexer *lexer, struct dataset *ds)
-{
- bool ok;
- int i;
- struct npar_specs npar_specs = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
- struct const_hsh_table *var_hash;
- struct casegrouper *grouper;
- struct casereader *input, *group;
-
- npar_specs.pool = pool_create ();
-
- var_hash = const_hsh_create_pool (npar_specs.pool, 0,
- compare_vars_by_name, hash_var_by_name,
- NULL, NULL);
-
- if ( ! parse_npar_tests (lexer, ds, &cmd, &npar_specs) )
- {
- pool_destroy (npar_specs.pool);
- return CMD_FAILURE;
- }
-
- for (i = 0; i < npar_specs.n_tests; ++i )
- {
- const struct npar_test *test = npar_specs.test[i];
- test->insert_variables (test, var_hash);
- }
-
- npar_specs.vv = (const struct variable **) const_hsh_sort (var_hash);
- npar_specs.n_vars = const_hsh_count (var_hash);
-
- if ( cmd.sbc_statistics )
- {
- int i;
-
- for ( i = 0 ; i < NPAR_ST_count; ++i )
- {
- if ( cmd.a_statistics[i] )
- {
- switch ( i )
- {
- case NPAR_ST_DESCRIPTIVES:
- npar_specs.descriptives = true;
- break;
- case NPAR_ST_QUARTILES:
- npar_specs.quartiles = true;
- break;
- case NPAR_ST_ALL:
- npar_specs.quartiles = true;
- npar_specs.descriptives = true;
- break;
- default:
- NOT_REACHED();
- };
- }
- }
- }
-
- npar_specs.filter = cmd.incl == NPAR_EXCLUDE ? MV_ANY : MV_SYSTEM;
-
- input = proc_open (ds);
- if ( cmd.miss == NPAR_LISTWISE )
- {
- input = casereader_create_filter_missing (input,
- npar_specs.vv,
- npar_specs.n_vars,
- npar_specs.filter,
- NULL, NULL);
- }
-
-
- grouper = casegrouper_create_splits (input, dataset_dict (ds));
- while (casegrouper_get_next_group (grouper, &group))
- npar_execute (group, &npar_specs, ds);
- ok = casegrouper_destroy (grouper);
- ok = proc_commit (ds) && ok;
-
- const_hsh_destroy (var_hash);
-
- pool_destroy (npar_specs.pool);
-
- return ok ? CMD_SUCCESS : CMD_CASCADING_FAILURE;
-}
-
-int
-npar_custom_chisquare (struct lexer *lexer, struct dataset *ds,
- struct cmd_npar_tests *cmd UNUSED, void *aux )
-{
- struct npar_specs *specs = aux;
-
- struct chisquare_test *cstp = pool_alloc(specs->pool, sizeof(*cstp));
- struct one_sample_test *tp = &cstp->parent;
- struct npar_test *nt = &tp->parent;
-
- nt->execute = chisquare_execute;
- nt->insert_variables = one_sample_insert_variables;
-
- if (!parse_variables_const_pool (lexer, specs->pool, dataset_dict (ds),
- &tp->vars, &tp->n_vars,
- PV_NO_SCRATCH | PV_NO_DUPLICATE))
- {
- return 2;
- }
-
- cstp->ranged = false;
-
- if ( lex_match (lexer, '('))
- {
- cstp->ranged = true;
- if ( ! lex_force_num (lexer)) return 0;
- cstp->lo = lex_integer (lexer);
- lex_get (lexer);
- lex_force_match (lexer, ',');
- if (! lex_force_num (lexer) ) return 0;
- cstp->hi = lex_integer (lexer);
- if ( cstp->lo >= cstp->hi )
- {
- msg(ME,
- _("The specified value of HI (%d) is "
- "lower than the specified value of LO (%d)"),
- cstp->hi, cstp->lo);
- return 0;
- }
- lex_get (lexer);
- if (! lex_force_match (lexer, ')')) return 0;
- }
-
- cstp->n_expected = 0;
- cstp->expected = NULL;
- if ( lex_match (lexer, '/') )
- {
- if ( lex_match_id (lexer, "EXPECTED") )
- {
- lex_force_match (lexer, '=');
- if ( ! lex_match_id (lexer, "EQUAL") )
- {
- double f;
- int n;
- while ( lex_is_number(lexer) )
- {
- int i;
- n = 1;
- f = lex_number (lexer);
- lex_get (lexer);
- if ( lex_match (lexer, '*'))
- {
- n = f;
- f = lex_number (lexer);
- lex_get (lexer);
- }
- lex_match (lexer, ',');
-
- cstp->n_expected += n;
- cstp->expected = pool_realloc (specs->pool,
- cstp->expected,
- sizeof(double) *
- cstp->n_expected);
- for ( i = cstp->n_expected - n ;
- i < cstp->n_expected;
- ++i )
- cstp->expected[i] = f;
-
- }
- }
- }
- else
- lex_put_back (lexer, '/');
- }
-
- if ( cstp->ranged && cstp->n_expected > 0 &&
- cstp->n_expected != cstp->hi - cstp->lo + 1 )
- {
- msg(ME,
- _("%d expected values were given, but the specified "
- "range (%d-%d) requires exactly %d values."),
- cstp->n_expected, cstp->lo, cstp->hi,
- cstp->hi - cstp->lo +1);
- return 0;
- }
-
- specs->n_tests++;
- specs->test = pool_realloc (specs->pool,
- specs->test,
- sizeof(*specs->test) * specs->n_tests);
-
- specs->test[specs->n_tests - 1] = nt;
-
- return 1;
-}
-
-
-int
-npar_custom_binomial (struct lexer *lexer, struct dataset *ds,
- struct cmd_npar_tests *cmd UNUSED, void *aux)
-{
- struct npar_specs *specs = aux;
- struct binomial_test *btp = pool_alloc(specs->pool, sizeof(*btp));
- struct one_sample_test *tp = &btp->parent;
- struct npar_test *nt = &tp->parent;
-
- nt->execute = binomial_execute;
- nt->insert_variables = one_sample_insert_variables;
-
- btp->category1 = btp->category2 = btp->cutpoint = SYSMIS;
-
- btp->p = 0.5;
-
- if ( lex_match (lexer, '(') )
- {
- if ( lex_force_num (lexer) )
- {
- btp->p = lex_number (lexer);
- lex_get (lexer);
- lex_force_match (lexer, ')');
- }
- else
- return 0;
- }
- else
- /* Kludge: q2c swallows the '=' so put it back here */
- lex_put_back (lexer, '=');
-
-
- if ( lex_match (lexer, '=') )
- {
- if (parse_variables_const_pool (lexer, specs->pool, dataset_dict (ds),
- &tp->vars, &tp->n_vars,
- PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) )
- {
- if ( lex_match (lexer, '('))
- {
- lex_force_num (lexer);
- btp->category1 = lex_number (lexer);
- lex_get (lexer);
- if ( lex_match (lexer, ','))
- {
- if ( ! lex_force_num (lexer) ) return 2;
- btp->category2 = lex_number (lexer);
- lex_get (lexer);
- }
- else
- {
- btp->cutpoint = btp->category1;
- }
-
- lex_force_match (lexer, ')');
- }
- }
- else
- return 2;
-
- }
-
- specs->n_tests++;
- specs->test = pool_realloc (specs->pool,
- specs->test,
- sizeof(*specs->test) * specs->n_tests);
-
- specs->test[specs->n_tests - 1] = nt;
-
- return 1;
-}
-
-
-bool parse_two_sample_related_test (struct lexer *lexer,
- const struct dictionary *dict,
- struct cmd_npar_tests *cmd,
- struct two_sample_test *test_parameters,
- struct pool *pool
- );
-
-
-bool
-parse_two_sample_related_test (struct lexer *lexer,
- const struct dictionary *dict,
- struct cmd_npar_tests *cmd UNUSED,
- struct two_sample_test *test_parameters,
- struct pool *pool
- )
-{
- int n = 0;
- bool paired = false;
- bool with = false;
- const struct variable **vlist1;
- size_t n_vlist1;
-
- const struct variable **vlist2;
- size_t n_vlist2;
-
- test_parameters->parent.insert_variables = two_sample_insert_variables;
-
- if (!parse_variables_const_pool (lexer, pool,
- dict,
- &vlist1, &n_vlist1,
- PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) )
- return false;
-
- if ( lex_match(lexer, T_WITH))
- {
- with = true;
- if ( !parse_variables_const_pool (lexer, pool, dict,
- &vlist2, &n_vlist2,
- PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) )
- return false;
-
- paired = (lex_match (lexer, '(') &&
- lex_match_id (lexer, "PAIRED") && lex_match (lexer, ')'));
- }
-
-
- if ( with )
- {
- if (paired)
- {
- if ( n_vlist1 != n_vlist2)
- msg (SE, _("PAIRED was specified but the number of variables "
- "preceding WITH (%zu) did not match the number "
- "following (%zu)."), n_vlist1, n_vlist2);
-
- test_parameters->n_pairs = n_vlist1 ;
- }
- else
- {
- test_parameters->n_pairs = n_vlist1 * n_vlist2;
- }
- }
- else
- {
- test_parameters->n_pairs = (n_vlist1 * (n_vlist1 - 1)) / 2 ;
- }
-
- test_parameters->pairs =
- pool_alloc (pool, sizeof ( variable_pair) * test_parameters->n_pairs);
-
- if ( with )
- {
- if (paired)
- {
- int i;
- assert (n_vlist1 == n_vlist2);
- for ( i = 0 ; i < n_vlist1; ++i )
- {
- test_parameters->pairs[n][1] = vlist1[i];
- test_parameters->pairs[n][0] = vlist2[i];
- n++;
- }
- }
- else
- {
- int i,j;
- for ( i = 0 ; i < n_vlist1; ++i )
- {
- for ( j = 0 ; j < n_vlist2; ++j )
- {
- test_parameters->pairs[n][1] = vlist1[i];
- test_parameters->pairs[n][0] = vlist2[j];
- n++;
- }
- }
- }
- }
- else
- {
- int i,j;
- for ( i = 0 ; i < n_vlist1 - 1; ++i )
- {
- for ( j = i + 1 ; j < n_vlist1; ++j )
- {
- assert ( n < test_parameters->n_pairs);
- test_parameters->pairs[n][1] = vlist1[i];
- test_parameters->pairs[n][0] = vlist1[j];
- n++;
- }
- }
- }
-
- assert ( n == test_parameters->n_pairs);
-
- return true;
-}
-
-int
-npar_custom_wilcoxon (struct lexer *lexer,
- struct dataset *ds,
- struct cmd_npar_tests *cmd, void *aux )
-{
- struct npar_specs *specs = aux;
-
- struct two_sample_test *tp = pool_alloc (specs->pool, sizeof(*tp));
- struct npar_test *nt = &tp->parent;
- nt->execute = wilcoxon_execute;
-
- if (!parse_two_sample_related_test (lexer, dataset_dict (ds), cmd,
- tp, specs->pool) )
- return 0;
-
- specs->n_tests++;
- specs->test = pool_realloc (specs->pool,
- specs->test,
- sizeof(*specs->test) * specs->n_tests);
- specs->test[specs->n_tests - 1] = nt;
-
- return 1;
-}
-
-int
-npar_custom_mcnemar (struct lexer *lexer,
- struct dataset *ds,
- struct cmd_npar_tests *cmd, void *aux )
-{
- struct npar_specs *specs = aux;
-
- struct two_sample_test *tp = pool_alloc(specs->pool, sizeof(*tp));
- struct npar_test *nt = &tp->parent;
- nt->execute = NULL;
-
-
- if (!parse_two_sample_related_test (lexer, dataset_dict (ds),
- cmd, tp, specs->pool) )
- return 0;
-
- specs->n_tests++;
- specs->test = pool_realloc (specs->pool,
- specs->test,
- sizeof(*specs->test) * specs->n_tests);
- specs->test[specs->n_tests - 1] = nt;
-
- return 1;
-}
-
-int
-npar_custom_sign (struct lexer *lexer, struct dataset *ds,
- struct cmd_npar_tests *cmd, void *aux )
-{
- struct npar_specs *specs = aux;
-
- struct two_sample_test *tp = pool_alloc(specs->pool, sizeof(*tp));
- struct npar_test *nt = &tp->parent;
-
- nt->execute = sign_execute;
-
- if (!parse_two_sample_related_test (lexer, dataset_dict (ds), cmd,
- tp, specs->pool) )
- return 0;
-
- specs->n_tests++;
- specs->test = pool_realloc (specs->pool,
- specs->test,
- sizeof(*specs->test) * specs->n_tests);
- specs->test[specs->n_tests - 1] = nt;
-
- return 1;
-}
-
-/* Insert the variables for TEST into VAR_HASH */
-static void
-one_sample_insert_variables (const struct npar_test *test,
- struct const_hsh_table *var_hash)
-{
- int i;
- struct one_sample_test *ost = UP_CAST (test, struct one_sample_test, parent);
-
- for ( i = 0 ; i < ost->n_vars ; ++i )
- const_hsh_insert (var_hash, ost->vars[i]);
-}
-
-static void
-two_sample_insert_variables (const struct npar_test *test,
- struct const_hsh_table *var_hash)
-{
- int i;
-
- const struct two_sample_test *tst = (const struct two_sample_test *) test;
-
- for ( i = 0 ; i < tst->n_pairs ; ++i )
- {
- variable_pair *pair = &tst->pairs[i];
-
- const_hsh_insert (var_hash, (*pair)[0]);
- const_hsh_insert (var_hash, (*pair)[1]);
- }
-
-}
-
-
-static int
-npar_custom_method (struct lexer *lexer, struct dataset *ds UNUSED,
- struct cmd_npar_tests *test UNUSED, void *aux)
-{
- struct npar_specs *specs = aux;
-
- if ( lex_match_id (lexer, "EXACT") )
- {
- specs->exact = true;
- specs->timer = 0.0;
- if (lex_match_id (lexer, "TIMER"))
- {
- specs->timer = 5.0;
-
- if ( lex_match (lexer, '('))
- {
- if ( lex_force_num (lexer) )
- {
- specs->timer = lex_number (lexer);
- lex_get (lexer);
- }
- lex_force_match (lexer, ')');
- }
- }
- }
-
- return 1;
-}
#include <data/case.h>
#include <data/casegrouper.h>
#include <data/casereader.h>
+#include <data/dictionary.h>
+#include <data/procedure.h>
+#include <data/value.h>
+
+
+#include <math/covariance.h>
+#include <math/categoricals.h>
+#include <math/levene.h>
+#include <math/moments.h>
+#include <gsl/gsl_matrix.h>
+#include <linreg/sweep.h>
#include <libpspp/ll.h>
#include <language/lexer/value-parser.h>
#include <language/command.h>
-#include <data/procedure.h>
-#include <data/dictionary.h>
-
#include <language/dictionary/split-file.h>
-#include <libpspp/hash.h>
#include <libpspp/taint.h>
-#include <math/group-proc.h>
-#include <math/levene.h>
#include <libpspp/misc.h>
#include <output/tab.h>
#include "gettext.h"
#define _(msgid) gettext (msgid)
+
enum missing_type
{
MISS_LISTWISE,
bool bad_count; /* True if the number of coefficients does not equal the number of groups */
};
-struct oneway
+struct oneway_spec
{
size_t n_vars;
const struct variable **vars;
enum missing_type missing_type;
enum mv_class exclude;
+ /* List of contrasts */
+ struct ll_list contrast_list;
+
+ /* The weight variable */
+ const struct variable *wv;
+
+};
+
+/* Per category data */
+struct descriptive_data
+{
+ const struct variable *var;
+ struct moments1 *mom;
+
+ double minimum;
+ double maximum;
+};
+
+/* Workspace variable for each dependent variable */
+struct per_var_ws
+{
+ struct categoricals *cat;
+ struct covariance *cov;
+
+ double sst;
+ double sse;
+ double ssa;
+
+ int n_groups;
+
+ double mse;
+ double levene_w;
+};
+
+struct oneway_workspace
+{
/* The number of distinct values of the independent variable, when all
missing values are disregarded */
int actual_number_of_groups;
- /* A hash table containing all the distinct values of the independent
- variable */
- struct hsh_table *group_hash;
+ struct per_var_ws *vws;
- /* List of contrasts */
- struct ll_list contrast_list;
+ /* An array of descriptive data. One for each dependent variable */
+ struct descriptive_data **dd_total;
};
/* Routines to show the output tables */
-static void show_anova_table (const struct oneway *);
-static void show_descriptives (const struct oneway *, const struct dictionary *dict);
-static void show_homogeneity (const struct oneway *);
+static void show_anova_table (const struct oneway_spec *, const struct oneway_workspace *);
+static void show_descriptives (const struct oneway_spec *, const struct oneway_workspace *);
+static void show_homogeneity (const struct oneway_spec *, const struct oneway_workspace *);
-static void output_oneway (const struct oneway *, const struct dictionary *dict);
-static void run_oneway (struct oneway *cmd, struct casereader *input, const struct dataset *ds);
+static void output_oneway (const struct oneway_spec *, struct oneway_workspace *ws);
+static void run_oneway (const struct oneway_spec *cmd, struct casereader *input, const struct dataset *ds);
int
cmd_oneway (struct lexer *lexer, struct dataset *ds)
{
- const struct dictionary *dict = dataset_dict (ds);
-
- struct oneway oneway ;
+ const struct dictionary *dict = dataset_dict (ds);
+ struct oneway_spec oneway ;
oneway.n_vars = 0;
oneway.vars = NULL;
oneway.indep_var = NULL;
oneway.stats = 0;
oneway.missing_type = MISS_ANALYSIS;
oneway.exclude = MV_ANY;
- oneway.actual_number_of_groups = 0;
- oneway.group_hash = NULL;
+ oneway.wv = dict_get_weight (dict);
ll_init (&oneway.contrast_list);
while (lex_token (lexer) != '.' && lex_token (lexer) != '/')
{
- union value val;
- if ( parse_value (lexer, &val, 0))
+ if ( lex_is_number (lexer))
{
struct coeff_node *cc = xmalloc (sizeof *cc);
- cc->coeff = val.f;
+ cc->coeff = lex_number (lexer);
ll_push_tail (coefficient_list, &cc->ll);
+ lex_get (lexer);
}
else
{
\f
-static int
-compare_double_3way (const void *a_, const void *b_, const void *aux UNUSED)
+
+static struct descriptive_data *
+dd_create (const struct variable *var)
{
- const double *a = a_;
- const double *b = b_;
- return *a < *b ? -1 : *a > *b;
+ struct descriptive_data *dd = xmalloc (sizeof *dd);
+
+ dd->mom = moments1_create (MOMENT_VARIANCE);
+ dd->minimum = DBL_MAX;
+ dd->maximum = -DBL_MAX;
+ dd->var = var;
+
+ return dd;
}
-static unsigned
-do_hash_double (const void *value_, const void *aux UNUSED)
+static void
+dd_destroy (struct descriptive_data *dd)
{
- const double *value = value_;
- return hash_double (*value, 0);
+ moments1_destroy (dd->mom);
+ free (dd);
}
-static void
-free_double (void *value_, const void *aux UNUSED)
+static void *
+makeit (void *aux1, void *aux2 UNUSED)
{
- double *value = value_;
- free (value);
+ const struct variable *var = aux1;
+
+ struct descriptive_data *dd = dd_create (var);
+
+ return dd;
}
-static void postcalc (const struct oneway *cmd);
-static void precalc (const struct oneway *cmd);
+static void
+updateit (void *user_data,
+ enum mv_class exclude,
+ const struct variable *wv,
+ const struct variable *catvar UNUSED,
+ const struct ccase *c,
+ void *aux1, void *aux2)
+{
+ struct descriptive_data *dd = user_data;
+
+ const struct variable *varp = aux1;
+
+ const union value *valx = case_data (c, varp);
+
+ struct descriptive_data *dd_total = aux2;
+
+ double weight;
+
+ if ( var_is_value_missing (varp, valx, exclude))
+ return;
+
+ weight = wv != NULL ? case_data (c, wv)->f : 1.0;
+ moments1_add (dd->mom, valx->f, weight);
+ if (valx->f < dd->minimum)
+ dd->minimum = valx->f;
+
+ if (valx->f > dd->maximum)
+ dd->maximum = valx->f;
+
+ {
+ const struct variable *var = dd_total->var;
+ const union value *val = case_data (c, var);
+
+ moments1_add (dd_total->mom,
+ val->f,
+ weight);
+
+ if (val->f < dd_total->minimum)
+ dd_total->minimum = val->f;
+
+ if (val->f > dd_total->maximum)
+ dd_total->maximum = val->f;
+ }
+}
static void
-run_oneway (struct oneway *cmd,
+run_oneway (const struct oneway_spec *cmd,
struct casereader *input,
const struct dataset *ds)
{
+ int v;
struct taint *taint;
struct dictionary *dict = dataset_dict (ds);
struct casereader *reader;
struct ccase *c;
+ struct oneway_workspace ws;
+
+ ws.actual_number_of_groups = 0;
+ ws.vws = xzalloc (cmd->n_vars * sizeof (*ws.vws));
+ ws.dd_total = xmalloc (sizeof (struct descriptive_data) * cmd->n_vars);
+
+ for (v = 0 ; v < cmd->n_vars; ++v)
+ ws.dd_total[v] = dd_create (cmd->vars[v]);
+
+ for (v = 0; v < cmd->n_vars; ++v)
+ {
+ ws.vws[v].cat = categoricals_create (&cmd->indep_var, 1,
+ cmd->wv, cmd->exclude,
+ makeit,
+ updateit,
+ cmd->vars[v], ws.dd_total[v]);
+
+ ws.vws[v].cov = covariance_2pass_create (1, &cmd->vars[v],
+ ws.vws[v].cat,
+ cmd->wv, cmd->exclude);
+ }
+
c = casereader_peek (input, 0);
if (c == NULL)
{
casereader_destroy (input);
- return;
+ goto finish;
}
output_split_file_values (ds, c);
case_unref (c);
taint = taint_clone (casereader_get_taint (input));
- cmd->group_hash = hsh_create (4,
- compare_double_3way,
- do_hash_double,
- free_double,
- cmd->indep_var);
-
- precalc (cmd);
-
input = casereader_create_filter_missing (input, &cmd->indep_var, 1,
cmd->exclude, NULL, NULL);
if (cmd->missing_type == MISS_LISTWISE)
cmd->exclude, NULL, NULL);
input = casereader_create_filter_weight (input, dict, NULL, NULL);
+
+ if (cmd->stats & STATS_HOMOGENEITY)
+ for (v = 0; v < cmd->n_vars; ++v)
+ {
+ struct per_var_ws *pvw = &ws.vws[v];
+
+ pvw->levene_w = levene (input, cmd->indep_var, cmd->vars[v], cmd->wv, cmd->exclude);
+ }
+
reader = casereader_clone (input);
+
for (; (c = casereader_read (reader)) != NULL; case_unref (c))
{
- size_t i;
-
- const double weight = dict_get_case_weight (dict, c, NULL);
-
- const union value *indep_val = case_data (c, cmd->indep_var);
- void **p = hsh_probe (cmd->group_hash, &indep_val->f);
- if (*p == NULL)
- {
- double *value = *p = xmalloc (sizeof *value);
- *value = indep_val->f;
- }
+ int i;
for (i = 0; i < cmd->n_vars; ++i)
{
+ struct per_var_ws *pvw = &ws.vws[i];
const struct variable *v = cmd->vars[i];
-
const union value *val = case_data (c, v);
- struct group_proc *gp = group_proc_get (cmd->vars[i]);
- struct hsh_table *group_hash = gp->group_hash;
-
- struct group_statistics *gs;
-
- gs = hsh_find (group_hash, indep_val );
-
- if ( ! gs )
+ if ( MISS_ANALYSIS == cmd->missing_type)
{
- gs = xmalloc (sizeof *gs);
- gs->id = *indep_val;
- gs->sum = 0;
- gs->n = 0;
- gs->ssq = 0;
- gs->sum_diff = 0;
- gs->minimum = DBL_MAX;
- gs->maximum = -DBL_MAX;
-
- hsh_insert ( group_hash, gs );
+ if ( var_is_value_missing (v, val, cmd->exclude))
+ continue;
}
- if (!var_is_value_missing (v, val, cmd->exclude))
- {
- struct group_statistics *totals = &gp->ugs;
-
- totals->n += weight;
- totals->sum += weight * val->f;
- totals->ssq += weight * pow2 (val->f);
-
- if ( val->f * weight < totals->minimum )
- totals->minimum = val->f * weight;
-
- if ( val->f * weight > totals->maximum )
- totals->maximum = val->f * weight;
-
- gs->n += weight;
- gs->sum += weight * val->f;
- gs->ssq += weight * pow2 (val->f);
-
- if ( val->f * weight < gs->minimum )
- gs->minimum = val->f * weight;
+ covariance_accumulate_pass1 (pvw->cov, c);
+ }
+ }
+ casereader_destroy (reader);
+ reader = casereader_clone (input);
+ for ( ; (c = casereader_read (reader) ); case_unref (c))
+ {
+ int i;
+ for (i = 0; i < cmd->n_vars; ++i)
+ {
+ struct per_var_ws *pvw = &ws.vws[i];
+ const struct variable *v = cmd->vars[i];
+ const union value *val = case_data (c, v);
- if ( val->f * weight > gs->maximum )
- gs->maximum = val->f * weight;
+ if ( MISS_ANALYSIS == cmd->missing_type)
+ {
+ if ( var_is_value_missing (v, val, cmd->exclude))
+ continue;
}
- gp->n_groups = hsh_count (group_hash );
+ covariance_accumulate_pass2 (pvw->cov, c);
}
-
}
casereader_destroy (reader);
- postcalc (cmd);
+ for (v = 0; v < cmd->n_vars; ++v)
+ {
+ struct per_var_ws *pvw = &ws.vws[v];
+ gsl_matrix *cm = covariance_calculate_unnormalized (pvw->cov);
+ const struct categoricals *cats = covariance_get_categoricals (pvw->cov);
- if ( cmd->stats & STATS_HOMOGENEITY )
- levene (dict, casereader_clone (input), cmd->indep_var,
- cmd->n_vars, cmd->vars, cmd->exclude);
+ double n;
+ moments1_calculate (ws.dd_total[v]->mom, &n, NULL, NULL, NULL, NULL);
- casereader_destroy (input);
+ pvw->sst = gsl_matrix_get (cm, 0, 0);
- cmd->actual_number_of_groups = hsh_count (cmd->group_hash);
+ // gsl_matrix_fprintf (stdout, cm, "%g ");
- if (!taint_has_tainted_successor (taint))
- output_oneway (cmd, dict);
+ reg_sweep (cm, 0);
- taint_destroy (taint);
-}
+ pvw->sse = gsl_matrix_get (cm, 0, 0);
-/* Pre calculations */
-static void
-precalc (const struct oneway *cmd)
-{
- size_t i = 0;
+ pvw->ssa = pvw->sst - pvw->sse;
- for (i = 0; i < cmd->n_vars; ++i)
- {
- struct group_proc *gp = group_proc_get (cmd->vars[i]);
- struct group_statistics *totals = &gp->ugs;
-
- /* Create a hash for each of the dependent variables.
- The hash contains a group_statistics structure,
- and is keyed by value of the independent variable */
-
- gp->group_hash = hsh_create (4, compare_group, hash_group,
- (hsh_free_func *) free_group,
- cmd->indep_var);
-
- totals->sum = 0;
- totals->n = 0;
- totals->ssq = 0;
- totals->sum_diff = 0;
- totals->maximum = -DBL_MAX;
- totals->minimum = DBL_MAX;
- }
-}
+ pvw->n_groups = categoricals_total (cats);
-/* Post calculations for the ONEWAY command */
-static void
-postcalc (const struct oneway *cmd)
-{
- size_t i = 0;
+ pvw->mse = (pvw->sst - pvw->ssa) / (n - pvw->n_groups);
+ }
- for (i = 0; i < cmd->n_vars; ++i)
+ for (v = 0; v < cmd->n_vars; ++v)
{
- struct group_proc *gp = group_proc_get (cmd->vars[i]);
- struct hsh_table *group_hash = gp->group_hash;
- struct group_statistics *totals = &gp->ugs;
-
- struct hsh_iterator g;
- struct group_statistics *gs;
+ struct categoricals *cats = covariance_get_categoricals (ws.vws[v].cov);
- for (gs = hsh_first (group_hash, &g);
- gs != 0;
- gs = hsh_next (group_hash, &g))
- {
- gs->mean = gs->sum / gs->n;
- gs->s_std_dev = sqrt (gs->ssq / gs->n - pow2 (gs->mean));
+ categoricals_done (cats);
+
+ if (categoricals_total (cats) > ws.actual_number_of_groups)
+ ws.actual_number_of_groups = categoricals_total (cats);
+ }
- gs->std_dev = sqrt (
- gs->n / (gs->n - 1) *
- ( gs->ssq / gs->n - pow2 (gs->mean))
- );
+ casereader_destroy (input);
- gs->se_mean = gs->std_dev / sqrt (gs->n);
- gs->mean_diff = gs->sum_diff / gs->n;
- }
+ if (!taint_has_tainted_successor (taint))
+ output_oneway (cmd, &ws);
- totals->mean = totals->sum / totals->n;
- totals->std_dev = sqrt (
- totals->n / (totals->n - 1) *
- (totals->ssq / totals->n - pow2 (totals->mean))
- );
+ taint_destroy (taint);
- totals->se_mean = totals->std_dev / sqrt (totals->n);
+ finish:
+ for (v = 0; v < cmd->n_vars; ++v)
+ {
+ covariance_destroy (ws.vws[v].cov);
+ dd_destroy (ws.dd_total[v]);
}
+ free (ws.vws);
+ free (ws.dd_total);
+
}
-static void show_contrast_coeffs (const struct oneway *cmd);
-static void show_contrast_tests (const struct oneway *cmd);
+static void show_contrast_coeffs (const struct oneway_spec *cmd, const struct oneway_workspace *ws);
+static void show_contrast_tests (const struct oneway_spec *cmd, const struct oneway_workspace *ws);
static void
-output_oneway (const struct oneway *cmd, const struct dictionary *dict)
+output_oneway (const struct oneway_spec *cmd, struct oneway_workspace *ws)
{
size_t i = 0;
struct ll_list *cl = &coeff_list->coefficient_list;
++i;
- if (ll_count (cl) != cmd->actual_number_of_groups)
+ if (ll_count (cl) != ws->actual_number_of_groups)
{
msg (SW,
_("Number of contrast coefficients must equal the number of groups"));
}
if (cmd->stats & STATS_DESCRIPTIVES)
- show_descriptives (cmd, dict);
+ show_descriptives (cmd, ws);
if (cmd->stats & STATS_HOMOGENEITY)
- show_homogeneity (cmd);
-
- show_anova_table (cmd);
+ show_homogeneity (cmd, ws);
+ show_anova_table (cmd, ws);
if (ll_count (&cmd->contrast_list) > 0)
{
- show_contrast_coeffs (cmd);
- show_contrast_tests (cmd);
+ show_contrast_coeffs (cmd, ws);
+ show_contrast_tests (cmd, ws);
}
-
-
- /* Clean up */
- for (i = 0; i < cmd->n_vars; ++i )
- {
- struct hsh_table *group_hash = group_proc_get (cmd->vars[i])->group_hash;
-
- hsh_destroy (group_hash);
- }
-
- hsh_destroy (cmd->group_hash);
}
/* Show the ANOVA table */
static void
-show_anova_table (const struct oneway *cmd)
+show_anova_table (const struct oneway_spec *cmd, const struct oneway_workspace *ws)
{
size_t i;
int n_cols =7;
for (i = 0; i < cmd->n_vars; ++i)
{
- struct group_statistics *totals = &group_proc_get (cmd->vars[i])->ugs;
- struct hsh_table *group_hash = group_proc_get (cmd->vars[i])->group_hash;
- struct hsh_iterator g;
- struct group_statistics *gs;
- double ssa = 0;
+ double n;
+ double df1, df2;
+ double msa;
const char *s = var_to_string (cmd->vars[i]);
+ const struct per_var_ws *pvw = &ws->vws[i];
- for (gs = hsh_first (group_hash, &g);
- gs != 0;
- gs = hsh_next (group_hash, &g))
- {
- ssa += pow2 (gs->sum) / gs->n;
- }
+ moments1_calculate (ws->dd_total[i]->mom, &n, NULL, NULL, NULL, NULL);
- ssa -= pow2 (totals->sum) / totals->n;
+ df1 = pvw->n_groups - 1;
+ df2 = n - pvw->n_groups;
+ msa = pvw->ssa / df1;
tab_text (t, 0, i * 3 + 1, TAB_LEFT | TAT_TITLE, s);
tab_text (t, 1, i * 3 + 1, TAB_LEFT | TAT_TITLE, _("Between Groups"));
if (i > 0)
tab_hline (t, TAL_1, 0, n_cols - 1, i * 3 + 1);
- {
- struct group_proc *gp = group_proc_get (cmd->vars[i]);
- const double sst = totals->ssq - pow2 (totals->sum) / totals->n;
- const double df1 = gp->n_groups - 1;
- const double df2 = totals->n - gp->n_groups;
- const double msa = ssa / df1;
- gp->mse = (sst - ssa) / df2;
+ /* Sums of Squares */
+ tab_double (t, 2, i * 3 + 1, 0, pvw->ssa, NULL);
+ tab_double (t, 2, i * 3 + 3, 0, pvw->sst, NULL);
+ tab_double (t, 2, i * 3 + 2, 0, pvw->sse, NULL);
- /* Sums of Squares */
- tab_double (t, 2, i * 3 + 1, 0, ssa, NULL);
- tab_double (t, 2, i * 3 + 3, 0, sst, NULL);
- tab_double (t, 2, i * 3 + 2, 0, sst - ssa, NULL);
+ /* Degrees of freedom */
+ tab_fixed (t, 3, i * 3 + 1, 0, df1, 4, 0);
+ tab_fixed (t, 3, i * 3 + 2, 0, df2, 4, 0);
+ tab_fixed (t, 3, i * 3 + 3, 0, n - 1, 4, 0);
+ /* Mean Squares */
+ tab_double (t, 4, i * 3 + 1, TAB_RIGHT, msa, NULL);
+ tab_double (t, 4, i * 3 + 2, TAB_RIGHT, pvw->mse, NULL);
- /* Degrees of freedom */
- tab_fixed (t, 3, i * 3 + 1, 0, df1, 4, 0);
- tab_fixed (t, 3, i * 3 + 2, 0, df2, 4, 0);
- tab_fixed (t, 3, i * 3 + 3, 0, totals->n - 1, 4, 0);
-
- /* Mean Squares */
- tab_double (t, 4, i * 3 + 1, TAB_RIGHT, msa, NULL);
- tab_double (t, 4, i * 3 + 2, TAB_RIGHT, gp->mse, NULL);
-
- {
- const double F = msa / gp->mse ;
+ {
+ const double F = msa / pvw->mse ;
- /* The F value */
- tab_double (t, 5, i * 3 + 1, 0, F, NULL);
+ /* The F value */
+ tab_double (t, 5, i * 3 + 1, 0, F, NULL);
- /* The significance */
- tab_double (t, 6, i * 3 + 1, 0, gsl_cdf_fdist_Q (F, df1, df2), NULL);
- }
+ /* The significance */
+ tab_double (t, 6, i * 3 + 1, 0, gsl_cdf_fdist_Q (F, df1, df2), NULL);
}
}
-
tab_title (t, _("ANOVA"));
tab_submit (t);
}
/* Show the descriptives table */
static void
-show_descriptives (const struct oneway *cmd, const struct dictionary *dict)
+show_descriptives (const struct oneway_spec *cmd, const struct oneway_workspace *ws)
{
size_t v;
int n_cols = 10;
const double confidence = 0.95;
const double q = (1.0 - confidence) / 2.0;
- const struct variable *wv = dict_get_weight (dict);
- const struct fmt_spec *wfmt = wv ? var_get_print_format (wv) : & F_8_0;
+ const struct fmt_spec *wfmt = cmd->wv ? var_get_print_format (cmd->wv) : &F_8_0;
int n_rows = 2;
- for ( v = 0; v < cmd->n_vars; ++v )
- n_rows += group_proc_get (cmd->vars[v])->n_groups + 1;
+ for (v = 0; v < cmd->n_vars; ++v)
+ n_rows += ws->actual_number_of_groups + 1;
t = tab_create (n_cols, n_rows);
tab_headers (t, 2, 0, 2, 0);
-
/* Put a frame around the entire box, and vertical lines inside */
tab_box (t,
TAL_2, TAL_2,
tab_text (t, 8, 1, TAB_CENTER | TAT_TITLE, _("Minimum"));
tab_text (t, 9, 1, TAB_CENTER | TAT_TITLE, _("Maximum"));
-
tab_title (t, _("Descriptives"));
-
row = 2;
for (v = 0; v < cmd->n_vars; ++v)
{
- double T;
- double std_error;
-
- struct group_proc *gp = group_proc_get (cmd->vars[v]);
-
- struct group_statistics *gs;
- struct group_statistics *totals = &gp->ugs;
-
const char *s = var_to_string (cmd->vars[v]);
const struct fmt_spec *fmt = var_get_print_format (cmd->vars[v]);
- struct group_statistics *const *gs_array =
- (struct group_statistics *const *) hsh_sort (gp->group_hash);
int count = 0;
+ struct per_var_ws *pvw = &ws->vws[v];
+ const struct categoricals *cats = covariance_get_categoricals (pvw->cov);
+
tab_text (t, 0, row, TAB_LEFT | TAT_TITLE, s);
if ( v > 0)
tab_hline (t, TAL_1, 0, n_cols - 1, row);
- for (count = 0; count < hsh_count (gp->group_hash); ++count)
+ for (count = 0; count < categoricals_total (cats); ++count)
{
+ double T;
+ double n, mean, variance;
+ double std_dev, std_error ;
+
struct string vstr;
+
+ const union value *gval = categoricals_get_value_by_subscript (cats, count);
+ const struct descriptive_data *dd = categoricals_get_user_data_by_subscript (cats, count);
+
+ moments1_calculate (dd->mom, &n, &mean, &variance, NULL, NULL);
+
+ std_dev = sqrt (variance);
+ std_error = std_dev / sqrt (n) ;
+
ds_init_empty (&vstr);
- gs = gs_array[count];
- var_append_value_name (cmd->indep_var, &gs->id, &vstr);
+ var_append_value_name (cmd->indep_var, gval, &vstr);
tab_text (t, 1, row + count,
TAB_LEFT | TAT_TITLE,
/* Now fill in the numbers ... */
- tab_fixed (t, 2, row + count, 0, gs->n, 8, 0);
+ tab_double (t, 2, row + count, 0, n, wfmt);
- tab_double (t, 3, row + count, 0, gs->mean, NULL);
+ tab_double (t, 3, row + count, 0, mean, NULL);
- tab_double (t, 4, row + count, 0, gs->std_dev, NULL);
+ tab_double (t, 4, row + count, 0, std_dev, NULL);
- std_error = gs->std_dev / sqrt (gs->n) ;
- tab_double (t, 5, row + count, 0,
- std_error, NULL);
+
+ tab_double (t, 5, row + count, 0, std_error, NULL);
/* Now the confidence interval */
- T = gsl_cdf_tdist_Qinv (q, gs->n - 1);
+ T = gsl_cdf_tdist_Qinv (q, n - 1);
tab_double (t, 6, row + count, 0,
- gs->mean - T * std_error, NULL);
+ mean - T * std_error, NULL);
tab_double (t, 7, row + count, 0,
- gs->mean + T * std_error, NULL);
+ mean + T * std_error, NULL);
/* Min and Max */
- tab_double (t, 8, row + count, 0, gs->minimum, fmt);
- tab_double (t, 9, row + count, 0, gs->maximum, fmt);
+ tab_double (t, 8, row + count, 0, dd->minimum, fmt);
+ tab_double (t, 9, row + count, 0, dd->maximum, fmt);
}
- tab_text (t, 1, row + count,
- TAB_LEFT | TAT_TITLE, _("Total"));
+ {
+ double T;
+ double n, mean, variance;
+ double std_dev;
+ double std_error;
- tab_double (t, 2, row + count, 0, totals->n, wfmt);
+ moments1_calculate (ws->dd_total[v]->mom, &n, &mean, &variance, NULL, NULL);
- tab_double (t, 3, row + count, 0, totals->mean, NULL);
+ std_dev = sqrt (variance);
+ std_error = std_dev / sqrt (n) ;
- tab_double (t, 4, row + count, 0, totals->std_dev, NULL);
+ tab_text (t, 1, row + count,
+ TAB_LEFT | TAT_TITLE, _("Total"));
- std_error = totals->std_dev / sqrt (totals->n) ;
+ tab_double (t, 2, row + count, 0, n, wfmt);
- tab_double (t, 5, row + count, 0, std_error, NULL);
+ tab_double (t, 3, row + count, 0, mean, NULL);
- /* Now the confidence interval */
+ tab_double (t, 4, row + count, 0, std_dev, NULL);
- T = gsl_cdf_tdist_Qinv (q, totals->n - 1);
+ tab_double (t, 5, row + count, 0, std_error, NULL);
- tab_double (t, 6, row + count, 0,
- totals->mean - T * std_error, NULL);
+ /* Now the confidence interval */
+ T = gsl_cdf_tdist_Qinv (q, n - 1);
- tab_double (t, 7, row + count, 0,
- totals->mean + T * std_error, NULL);
+ tab_double (t, 6, row + count, 0,
+ mean - T * std_error, NULL);
- /* Min and Max */
+ tab_double (t, 7, row + count, 0,
+ mean + T * std_error, NULL);
- tab_double (t, 8, row + count, 0, totals->minimum, fmt);
- tab_double (t, 9, row + count, 0, totals->maximum, fmt);
+ /* Min and Max */
+ tab_double (t, 8, row + count, 0, ws->dd_total[v]->minimum, fmt);
+ tab_double (t, 9, row + count, 0, ws->dd_total[v]->maximum, fmt);
+ }
- row += gp->n_groups + 1;
+ row += categoricals_total (cats) + 1;
}
tab_submit (t);
/* Show the homogeneity table */
static void
-show_homogeneity (const struct oneway *cmd)
+show_homogeneity (const struct oneway_spec *cmd, const struct oneway_workspace *ws)
{
size_t v;
int n_cols = 5;
size_t n_rows = cmd->n_vars + 1;
- struct tab_table *t;
-
-
- t = tab_create (n_cols, n_rows);
+ struct tab_table *t = tab_create (n_cols, n_rows);
tab_headers (t, 1, 0, 1, 0);
-
/* Put a frame around the entire box, and vertical lines inside */
tab_box (t,
TAL_2, TAL_2,
tab_hline (t, TAL_2, 0, n_cols - 1, 1);
tab_vline (t, TAL_2, 1, 0, n_rows - 1);
-
tab_text (t, 1, 0, TAB_CENTER | TAT_TITLE, _("Levene Statistic"));
tab_text (t, 2, 0, TAB_CENTER | TAT_TITLE, _("df1"));
tab_text (t, 3, 0, TAB_CENTER | TAT_TITLE, _("df2"));
for (v = 0; v < cmd->n_vars; ++v)
{
- double F;
+ double n;
+ const struct per_var_ws *pvw = &ws->vws[v];
+ double F = pvw->levene_w;
+
const struct variable *var = cmd->vars[v];
- const struct group_proc *gp = group_proc_get (cmd->vars[v]);
const char *s = var_to_string (var);
- const struct group_statistics *totals = &gp->ugs;
+ double df1, df2;
- const double df1 = gp->n_groups - 1;
- const double df2 = totals->n - gp->n_groups;
+ moments1_calculate (ws->dd_total[v]->mom, &n, NULL, NULL, NULL, NULL);
+
+ df1 = pvw->n_groups - 1;
+ df2 = n - pvw->n_groups;
tab_text (t, 0, v + 1, TAB_LEFT | TAT_TITLE, s);
- F = gp->levene;
tab_double (t, 1, v + 1, TAB_RIGHT, F, NULL);
tab_fixed (t, 2, v + 1, TAB_RIGHT, df1, 8, 0);
tab_fixed (t, 3, v + 1, TAB_RIGHT, df2, 8, 0);
/* Now the significance */
- tab_double (t, 4, v + 1, TAB_RIGHT,gsl_cdf_fdist_Q (F, df1, df2), NULL);
+ tab_double (t, 4, v + 1, TAB_RIGHT, gsl_cdf_fdist_Q (F, df1, df2), NULL);
}
tab_submit (t);
/* Show the contrast coefficients table */
static void
-show_contrast_coeffs (const struct oneway *cmd)
+show_contrast_coeffs (const struct oneway_spec *cmd, const struct oneway_workspace *ws)
{
int c_num = 0;
struct ll *cli;
int n_contrasts = ll_count (&cmd->contrast_list);
- int n_cols = 2 + cmd->actual_number_of_groups;
+ int n_cols = 2 + ws->actual_number_of_groups;
int n_rows = 2 + n_contrasts;
- void *const *group_values;
-
struct tab_table *t;
+ const struct covariance *cov = ws->vws[0].cov ;
+
t = tab_create (n_cols, n_rows);
tab_headers (t, 2, 0, 2, 0);
tab_joint_text (t, 2, 0, n_cols - 1, 0, TAB_CENTER | TAT_TITLE,
var_to_string (cmd->indep_var));
- group_values = hsh_sort (cmd->group_hash);
-
for ( cli = ll_head (&cmd->contrast_list);
cli != ll_null (&cmd->contrast_list);
cli = ll_next (cli))
{
int count = 0;
struct contrasts_node *cn = ll_data (cli, struct contrasts_node, ll);
- struct ll *coeffi = ll_head (&cn->coefficient_list);
+ struct ll *coeffi ;
tab_text_format (t, 1, c_num + 2, TAB_CENTER, "%d", c_num + 1);
- for (count = 0;
- count < hsh_count (cmd->group_hash) && coeffi != ll_null (&cn->coefficient_list);
- ++count)
+ for (coeffi = ll_head (&cn->coefficient_list);
+ coeffi != ll_null (&cn->coefficient_list);
+ ++count, coeffi = ll_next (coeffi))
{
- double *group_value_p;
- union value group_value;
+ const struct categoricals *cats = covariance_get_categoricals (cov);
+ const union value *val = categoricals_get_value_by_subscript (cats, count);
struct string vstr;
ds_init_empty (&vstr);
- group_value_p = group_values[count];
- group_value.f = *group_value_p;
- var_append_value_name (cmd->indep_var, &group_value, &vstr);
+ var_append_value_name (cmd->indep_var, val, &vstr);
- tab_text (t, count + 2, 1, TAB_CENTER | TAT_TITLE,
- ds_cstr (&vstr));
+ tab_text (t, count + 2, 1, TAB_CENTER | TAT_TITLE, ds_cstr (&vstr));
ds_destroy (&vstr);
tab_text_format (t, count + 2, c_num + 2, TAB_RIGHT, "%g", coeffn->coeff);
}
-
- coeffi = ll_next (coeffi);
}
++c_num;
}
/* Show the results of the contrast tests */
static void
-show_contrast_tests (const struct oneway *cmd)
+show_contrast_tests (const struct oneway_spec *cmd, const struct oneway_workspace *ws)
{
int n_contrasts = ll_count (&cmd->contrast_list);
size_t v;
tab_hline (t, TAL_2, 0, n_cols - 1, 1);
tab_vline (t, TAL_2, 3, 0, n_rows - 1);
-
tab_title (t, _("Contrast Tests"));
tab_text (t, 2, 0, TAB_CENTER | TAT_TITLE, _("Contrast"));
for (v = 0; v < cmd->n_vars; ++v)
{
+ const struct per_var_ws *pvw = &ws->vws[v];
+ const struct categoricals *cats = covariance_get_categoricals (pvw->cov);
struct ll *cli;
int i = 0;
int lines_per_variable = 2 * n_contrasts;
++i, cli = ll_next (cli))
{
struct contrasts_node *cn = ll_data (cli, struct contrasts_node, ll);
- struct ll *coeffi = ll_head (&cn->coefficient_list);
- int ci;
+ struct ll *coeffi ;
+ int ci = 0;
double contrast_value = 0.0;
double coef_msq = 0.0;
- struct group_proc *grp_data = group_proc_get (cmd->vars[v]);
- struct hsh_table *group_hash = grp_data->group_hash;
-
- void *const *group_stat_array;
double T;
double std_error_contrast;
double df_denominator = 0.0;
double df_numerator = 0.0;
+
+ double grand_n;
+ moments1_calculate (ws->dd_total[v]->mom, &grand_n, NULL, NULL, NULL, NULL);
+ df = grand_n - pvw->n_groups;
+
if ( i == 0 )
{
tab_text (t, 1, (v * lines_per_variable) + i + 1,
if (cn->bad_count)
continue;
- group_stat_array = hsh_sort (group_hash);
-
- for (ci = 0;
- coeffi != ll_null (&cn->coefficient_list) &&
- ci < hsh_count (group_hash);
+ for (coeffi = ll_head (&cn->coefficient_list);
+ coeffi != ll_null (&cn->coefficient_list);
++ci, coeffi = ll_next (coeffi))
{
+ double n, mean, variance;
+ const struct descriptive_data *dd = categoricals_get_user_data_by_subscript (cats, ci);
struct coeff_node *cn = ll_data (coeffi, struct coeff_node, ll);
const double coef = cn->coeff;
- struct group_statistics *gs = group_stat_array[ci];
+ double winv ;
+
+ moments1_calculate (dd->mom, &n, &mean, &variance, NULL, NULL);
- const double winv = pow2 (gs->std_dev) / gs->n;
+ winv = variance / n;
- contrast_value += coef * gs->mean;
+ contrast_value += coef * mean;
- coef_msq += (coef * coef) / gs->n;
+ coef_msq += (pow2 (coef)) / n;
- sec_vneq += (coef * coef) * pow2 (gs->std_dev) /gs->n;
+ sec_vneq += (pow2 (coef)) * variance / n;
- df_numerator += (coef * coef) * winv;
- df_denominator += pow2((coef * coef) * winv) / (gs->n - 1);
+ df_numerator += (pow2 (coef)) * winv;
+ df_denominator += pow2((pow2 (coef)) * winv) / (n - 1);
}
sec_vneq = sqrt (sec_vneq);
n_contrasts,
TAB_RIGHT, contrast_value, NULL);
- std_error_contrast = sqrt (grp_data->mse * coef_msq);
+ std_error_contrast = sqrt (pvw->mse * coef_msq);
/* Std. Error */
tab_double (t, 4, (v * lines_per_variable) + i + 1,
TAB_RIGHT, T,
NULL);
- df = grp_data->ugs.n - grp_data->n_groups;
/* Degrees of Freedom */
tab_fixed (t, 6, (v * lines_per_variable) + i + 1,
WEIGHT is the value of a single count.
*/
static struct casereader *
-accumulate_counts (struct casereader *cutpoint_rdr,
+accumulate_counts (struct casereader *input,
double result, double weight,
bool (*pos_cond) (double, double),
int true_index, int false_index)
{
- const struct caseproto *proto = casereader_get_proto (cutpoint_rdr);
+ const struct caseproto *proto = casereader_get_proto (input);
struct casewriter *w =
autopaging_writer_create (proto);
- struct casereader *r = casereader_clone (cutpoint_rdr);
struct ccase *cpc;
double prev_cp = SYSMIS;
- for ( ; (cpc = casereader_read (r) ); case_unref (cpc))
+ for ( ; (cpc = casereader_read (input) ); case_unref (cpc))
{
struct ccase *new_case;
const double cp = case_data_idx (cpc, ROC_CUTPOINT)->f;
casewriter_write (w, new_case);
}
- casereader_destroy (r);
+ casereader_destroy (input);
return casewriter_make_reader (w);
}
casereader_destroy (r2);
}
+
casereader_destroy (r1);
casereader_destroy (rclone);
+ caseproto_unref (proto);
+
return casewriter_make_reader (wtr);
}
int i;
struct casereader *r = casereader_clone (input);
struct ccase *c;
- struct caseproto *proto = caseproto_create ();
- struct subcase ordering;
- subcase_init (&ordering, ROC_CUTPOINT, 0, SC_ASCEND);
+ {
+ struct caseproto *proto = caseproto_create ();
+ struct subcase ordering;
+ subcase_init (&ordering, ROC_CUTPOINT, 0, SC_ASCEND);
- proto = caseproto_add_width (proto, 0); /* cutpoint */
- proto = caseproto_add_width (proto, 0); /* ROC_TP */
- proto = caseproto_add_width (proto, 0); /* ROC_FN */
- proto = caseproto_add_width (proto, 0); /* ROC_TN */
- proto = caseproto_add_width (proto, 0); /* ROC_FP */
+ proto = caseproto_add_width (proto, 0); /* cutpoint */
+ proto = caseproto_add_width (proto, 0); /* ROC_TP */
+ proto = caseproto_add_width (proto, 0); /* ROC_FN */
+ proto = caseproto_add_width (proto, 0); /* ROC_TN */
+ proto = caseproto_add_width (proto, 0); /* ROC_FP */
- for (i = 0 ; i < roc->n_vars; ++i)
- {
- rs[i].cutpoint_wtr = sort_create_writer (&ordering, proto);
- rs[i].prev_result = SYSMIS;
- rs[i].max = -DBL_MAX;
- rs[i].min = DBL_MAX;
- }
+ for (i = 0 ; i < roc->n_vars; ++i)
+ {
+ rs[i].cutpoint_wtr = sort_create_writer (&ordering, proto);
+ rs[i].prev_result = SYSMIS;
+ rs[i].max = -DBL_MAX;
+ rs[i].min = DBL_MAX;
+ }
+
+ caseproto_unref (proto);
+ subcase_destroy (&ordering);
+ }
for (; (c = casereader_read (r)) != NULL; case_unref (c))
{
struct casereader *negatives = NULL;
struct casereader *positives = NULL;
- struct caseproto *n_proto = caseproto_create ();
+ struct caseproto *n_proto = NULL;
struct subcase up_ordering;
struct subcase down_ordering;
struct ccase *c;
struct ccase *cpos;
- struct casereader *n_neg ;
+ struct casereader *n_neg_reader ;
const struct variable *var = roc->vars[i];
struct casereader *neg ;
struct casereader *pos = casereader_clone (positives);
-
- struct casereader *n_pos =
+ struct casereader *n_pos_reader =
process_positive_group (var, pos, dict, &rs[i]);
if ( negatives == NULL)
neg = casereader_clone (negatives);
- n_neg = process_negative_group (var, neg, dict, &rs[i]);
-
+ n_neg_reader = process_negative_group (var, neg, dict, &rs[i]);
/* Merge the n_pos and n_neg casereaders */
w = sort_create_writer (&up_ordering, n_proto);
- for ( ; (cpos = casereader_read (n_pos) ); case_unref (cpos))
+ for ( ; (cpos = casereader_read (n_pos_reader) ); case_unref (cpos))
{
struct ccase *pos_case = case_create (n_proto);
struct ccase *cneg;
const double jpos = case_data_idx (cpos, VALUE)->f;
- while ((cneg = casereader_read (n_neg)))
+ while ((cneg = casereader_read (n_neg_reader)))
{
struct ccase *nc = case_create (n_proto);
casewriter_write (w, pos_case);
}
+ casereader_destroy (n_pos_reader);
+ casereader_destroy (n_neg_reader);
+
/* These aren't used anymore */
#undef N_EQ
#undef N_PRED
prev_pos_gt = n_pos_gt;
}
+ casereader_destroy (r);
r = casewriter_make_reader (w);
}
prev_neg_lt = n_neg_lt;
}
+ casereader_destroy (r);
r = casewriter_make_reader (w);
}
struct ccase *prev_case = NULL;
for ( ; (c = casereader_read (r) ); case_unref (c))
{
- const struct ccase *next_case = casereader_peek (r, 0);
+ struct ccase *next_case = casereader_peek (r, 0);
const double j = case_data_idx (c, VALUE)->f;
double n_pos_eq = case_data_idx (c, N_POS_EQ)->f;
}
+ case_unref (next_case);
case_unref (prev_case);
prev_case = case_clone (c);
}
+ casereader_destroy (r);
+ case_unref (prev_case);
rs[i].auc /= rs[i].n1 * rs[i].n2;
if ( roc->invert )
casereader_destroy (positives);
casereader_destroy (negatives);
+ caseproto_unref (n_proto);
+ subcase_destroy (&up_ordering);
+ subcase_destroy (&down_ordering);
+
output_roc (rs, roc);
+
+ for (i = 0 ; i < roc->n_vars; ++i)
+ casereader_destroy (rs[i].cutpoint_rdr);
free (rs);
}
ds_put_cstr (&pair_name, " - ");
ds_put_cstr (&pair_name, var_to_string ((*vp)[1]));
+
tab_text (table, 0, 1 + i * 4, TAB_LEFT, ds_cstr (&pair_name));
ds_destroy (&pair_name);
int i;
bool warn = true;
const struct dictionary *dict = dataset_dict (ds);
- const struct two_sample_test *t2s = (const struct two_sample_test *) test;
+ const struct two_sample_test *t2s = UP_CAST (test, const struct two_sample_test, parent);
struct ccase *c;
struct sign_test_params *stp = xcalloc (sizeof *stp, t2s->n_pairs);
return 0;
}
+
+static bool
+is_criteria_value (const struct ccase *c, void *aux)
+{
+ const struct t_test_proc *proc = aux;
+ const union value *val = case_data (c, proc->indep_var);
+ int width = var_get_width (proc->indep_var);
+
+ if ( value_equal (val, &proc->g_value[0], width))
+ return true;
+
+ if ( value_equal (val, &proc->g_value[1], width))
+ return true;
+
+ return false;
+}
+
static void
calculate (struct t_test_proc *proc,
struct casereader *input, const struct dataset *ds)
struct trbox test_results_box;
struct taint *taint;
struct ccase *c;
-
+ int i;
c = casereader_peek (input, 0);
if (c == NULL)
{
break;
case T_IND_SAMPLES:
group_calc (dict, proc, casereader_clone (input));
- levene (dict, input, proc->indep_var, proc->n_vars, proc->vars,
- proc->exclude);
+
+ for (i = 0; i < proc->n_vars; ++i)
+ {
+ struct group_proc *grp_data = group_proc_get (proc->vars[i]);
+
+ if ( proc->criterion == CMP_EQ )
+ {
+ input = casereader_create_filter_func (input, is_criteria_value, NULL,
+ proc,
+ NULL);
+ }
+
+ grp_data->levene = levene ( input, proc->indep_var, proc->vars[i], dict_get_weight (dict), proc->exclude);
+ }
break;
default:
NOT_REACHED ();
#include <gsl/gsl_cdf.h>
#include <math.h>
-#include <signal.h>
-#include <unistd.h>
#include <data/casereader.h>
#include <data/casewriter.h>
#include <data/procedure.h>
#include <data/subcase.h>
#include <data/variable.h>
-#include <gsl/gsl_cdf.h>
#include <libpspp/assertion.h>
#include <libpspp/message.h>
#include <libpspp/misc.h>
#include <math/sort.h>
#include <math/wilcoxon-sig.h>
#include <output/tab.h>
-#include <signal.h>
-#include <unistd.h>
#include "minmax.h"
#include "xalloc.h"
int i;
bool warn = true;
const struct dictionary *dict = dataset_dict (ds);
- const struct two_sample_test *t2s = (struct two_sample_test *) test;
+ const struct two_sample_test *t2s = UP_CAST (test, const struct two_sample_test, parent);
struct wilcoxon_state *ws = xcalloc (sizeof (*ws), t2s->n_pairs);
const struct variable *weight = dict_get_weight (dict);
struct syntax_file_source *sfs = UP_CAST (s, struct syntax_file_source,
parent);
- /* Open file, if not yet opened. */
if (sfs->syntax_file == NULL)
- {
- sfs->syntax_file = fn_open (sfs->fn, "r");
-
- if (sfs->syntax_file == NULL)
- {
- msg (ME, _("Opening `%s': %s."), sfs->fn, strerror (errno));
- return false;
- }
- }
+ return false;
/* Read line from file and remove new-line.
Skip initial "#! /usr/bin/pspp" line. */
struct syntax_file_source *ss = xzalloc (sizeof (*ss));
ss->fn = xstrdup (fn);
+ ss->syntax_file = fn_open (ss->fn, "r");
+ if (ss->syntax_file == NULL)
+ msg (ME, _("Opening `%s': %s."), ss->fn, strerror (errno));
ss->parent.interactive = always_false;
ss->parent.read = read_syntax_file ;
/* PSPPIRE - a graphical interface for PSPP.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
static int
location (const struct getl_interface *i UNUSED)
{
- return -1;
+ return 0;
}
return true;
}
-struct getl_interface *
-create_syntax_string_source (const char *format, ...)
+static struct syntax_string_source *
+create_syntax_string_source__ (void)
{
- va_list args;
-
struct syntax_string_source *sss = xzalloc (sizeof *sss);
sss->posn = 0;
- ds_init_empty (&sss->buffer);
-
- va_start (args, format);
- ds_put_vformat (&sss->buffer, format, args);
- va_end (args);
-
sss->parent.interactive = always_false;
sss->parent.close = do_close;
sss->parent.read = read_single_line;
sss->parent.name = name;
sss->parent.location = location;
+ return sss;
+}
+
+struct getl_interface *
+create_syntax_string_source (const char *s)
+{
+ struct syntax_string_source *sss = create_syntax_string_source__ ();
+ ds_init_cstr (&sss->buffer, s);
+ return &sss->parent;
+}
+
+struct getl_interface *
+create_syntax_format_source (const char *format, ...)
+{
+ struct syntax_string_source *sss;
+ va_list args;
+
+ sss = create_syntax_string_source__ ();
+
+ ds_init_empty (&sss->buffer);
+
+ va_start (args, format);
+ ds_put_vformat (&sss->buffer, format, args);
+ va_end (args);
return &sss->parent;
}
/* PSPPIRE - a graphical interface for PSPP.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#ifndef SYNTAX_STRING_SOURCE_H
#define SYNTAX_STRING_SOURCE_H
+#include "libpspp/compiler.h"
+
struct getl_interface;
struct syntax_string_source;
-struct getl_interface * create_syntax_string_source (const char *fmt, ...);
+struct getl_interface *create_syntax_string_source (const char *);
+struct getl_interface *create_syntax_format_source (const char *, ...)
+ PRINTF_FORMAT (1, 2);
const char * syntax_string_source_get_syntax (const struct syntax_string_source *s);
msg (SE, _("Hexadecimal floating constant too long."));
return false;
}
- strncpy ((char *) fp->data, ds_cstr (lex_tokstr (lexer)), sizeof fp->data);
+ strncpy (CHAR_CAST_BUG (char *,fp->data), ds_cstr (lex_tokstr (lexer)), sizeof fp->data);
}
lex_get (lexer);
/* PSPP - a program for statistical analysis.
- Copyright (C) 2008 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
char format_string[FMT_STRING_LEN_MAX + 1];
g = fmt_guesser_create ();
- while (lex_token (lexer) == T_STRING)
+ while (lex_is_string (lexer))
{
fprintf (stderr, "\"%s\" ", ds_cstr (lex_tokstr (lexer)));
fmt_guesser_add (g, ds_ss (lex_tokstr (lexer)));
src/language/utilities/cd.c \
src/language/utilities/date.c \
src/language/utilities/echo.c \
+ src/language/utilities/host.c \
src/language/utilities/title.c \
src/language/utilities/include.c \
src/language/utilities/permissions.c
/* PSPP - a program for statistical analysis.
- Copyright (C) 2005, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
{
struct tab_table *tab;
- if (lex_token (lexer) != T_STRING)
+ if (!lex_force_string (lexer))
return CMD_FAILURE;
tab = tab_create(1, 1);
--- /dev/null
+/* PSPP - a program for statistical analysis.
+ Copyright (C) 1997-9, 2000, 2009, 2010 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <errno.h>
+#include <unistd.h>
+#if HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+
+#include "data/settings.h"
+#include "language/command.h"
+#include "language/lexer/lexer.h"
+#include "libpspp/assertion.h"
+#include "libpspp/compiler.h"
+#include "libpspp/message.h"
+#include "libpspp/str.h"
+
+#include "gl/xalloc.h"
+#include "gl/xmalloca.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+\f
+#if HAVE_FORK && HAVE_EXECL
+/* Spawn an interactive shell process. */
+static bool
+shell (void)
+{
+ int pid;
+
+ pid = fork ();
+ switch (pid)
+ {
+ case 0:
+ {
+ const char *shell_fn;
+ char *shell_process;
+
+ {
+ int i;
+
+ for (i = 3; i < 20; i++)
+ close (i);
+ }
+
+ shell_fn = getenv ("SHELL");
+ if (shell_fn == NULL)
+ shell_fn = "/bin/sh";
+
+ {
+ const char *cp = strrchr (shell_fn, '/');
+ cp = cp ? &cp[1] : shell_fn;
+ shell_process = xmalloca (strlen (cp) + 8);
+ strcpy (shell_process, "-");
+ strcat (shell_process, cp);
+ if (strcmp (cp, "sh"))
+ shell_process[0] = '+';
+ }
+
+ execl (shell_fn, shell_process, NULL);
+
+ _exit (1);
+ }
+
+ case -1:
+ msg (SE, _("Couldn't fork: %s."), strerror (errno));
+ return false;
+
+ default:
+ assert (pid > 0);
+ while (wait (NULL) != pid)
+ ;
+ return true;
+ }
+}
+#else /* !(HAVE_FORK && HAVE_EXECL) */
+/* Don't know how to spawn an interactive shell. */
+static bool
+shell (void)
+{
+ msg (SE, _("Interactive shell not supported on this platform."));
+ return false;
+}
+#endif
+
+/* Executes the specified COMMAND in a subshell. Returns true if
+ successful, false otherwise. */
+static bool
+run_command (const char *command)
+{
+ if (system (NULL) == 0)
+ {
+ msg (SE, _("Command shell not supported on this platform."));
+ return false;
+ }
+
+ /* Execute the command. */
+ if (system (command) == -1)
+ msg (SE, _("Error executing command: %s."), strerror (errno));
+
+ return true;
+}
+
+int
+cmd_host (struct lexer *lexer, struct dataset *ds UNUSED)
+{
+ if (settings_get_safer_mode ())
+ {
+ msg (SE, _("This command not allowed when the SAFER option is set."));
+ return CMD_FAILURE;
+ }
+
+ if (lex_token (lexer) == '.')
+ return shell () ? CMD_SUCCESS : CMD_FAILURE;
+ else if (lex_match_id (lexer, "COMMAND"))
+ {
+ struct string command;
+ bool ok;
+
+ lex_match (lexer, '=');
+ if (!lex_force_match (lexer, '['))
+ return CMD_FAILURE;
+
+ ds_init_empty (&command);
+ while (lex_is_string (lexer))
+ {
+ if (!ds_is_empty (&command))
+ ds_put_char (&command, '\n');
+ ds_put_substring (&command, ds_ss (lex_tokstr (lexer)));
+ lex_get (lexer);
+ }
+ if (!lex_force_match (lexer, ']'))
+ {
+ ds_destroy (&command);
+ return CMD_FAILURE;
+ }
+
+ ok = run_command (ds_cstr (&command));
+ ds_destroy (&command);
+
+ return ok ? lex_end_of_command (lexer) : CMD_FAILURE;
+ }
+ else
+ {
+ lex_error (lexer, NULL);
+ return CMD_FAILURE;
+ }
+}
syntax_mode = GETL_BATCH;
else
{
- lex_error(lexer,
- _("Expecting BATCH or INTERACTIVE after SYNTAX."));
+ lex_error (lexer, _("expecting %s or %s after %s"),
+ "BATCH", "INTERACTIVE", "SYNTAX");
return CMD_FAILURE;
}
}
}
else
{
- lex_error (lexer, _("Expecting YES or NO after CD."));
+ lex_error (lexer, _("expecting %s or %s after %s"),
+ "YES", "NO", "CD");
return CMD_FAILURE;
}
}
}
else
{
- lex_error (lexer, _("Expecting CONTINUE or STOP after ERROR."));
+ lex_error (lexer, _("expecting %s or %s after %s"),
+ "CONTINUE", "STOP", "ERROR");
return CMD_FAILURE;
}
}
lex_match (lexer, '=');
/* File name can be identifier or string. */
- if (lex_token (lexer) != T_ID && lex_token (lexer) != T_STRING)
+ if (lex_token (lexer) != T_ID && !lex_is_string (lexer))
{
lex_error (lexer, _("expecting file name"));
return CMD_FAILURE;
if (lex_match_id (lexer, "FILE"))
lex_match (lexer, '=');
+ if (!lex_force_string (lexer))
+ return CMD_FAILURE;
+
fn = ds_xstrdup (lex_tokstr (lexer));
lex_force_match (lexer, T_STRING);
journal_enable ();
else if (lex_match_id (lexer, "OFF") || lex_match_id (lexer, "NO"))
journal_disable ();
- else if (lex_token (lexer) == T_STRING || lex_token (lexer) == T_ID)
+ else if (lex_is_string (lexer) || lex_token (lexer) == T_ID)
{
journal_set_file_name (ds_cstr (lex_tokstr (lexer)));
lex_get (lexer);
static char *
show_decimals (const struct dataset *ds UNUSED)
{
- return xasprintf ("\"%c\"", settings_get_decimal_char (FMT_F));
+ return xasprintf ("`%c'", settings_get_decimal_char (FMT_F));
}
static char *
show_endcmd (const struct dataset *ds UNUSED)
{
- return xasprintf ("\"%c\"", settings_get_endcmd ());
+ return xasprintf ("`%c'", settings_get_endcmd ());
}
static char *
return CMD_SUCCESS;
}
+\f
+#define MAX_SAVED_SETTINGS 5
+
+static struct settings *saved_settings[MAX_SAVED_SETTINGS];
+static int n_saved_settings;
+
+int
+cmd_preserve (struct lexer *lexer, struct dataset *ds UNUSED)
+{
+ if (n_saved_settings < MAX_SAVED_SETTINGS)
+ {
+ saved_settings[n_saved_settings++] = settings_get ();
+ return lex_end_of_command (lexer);
+ }
+ else
+ {
+ msg (SE, _("Too many PRESERVE commands without a RESTORE: at most "
+ "%d levels of saved settings are allowed."),
+ MAX_SAVED_SETTINGS);
+ return CMD_CASCADING_FAILURE;
+ }
+}
+
+int
+cmd_restore (struct lexer *lexer, struct dataset *ds UNUSED)
+{
+ if (n_saved_settings > 0)
+ {
+ struct settings *s = saved_settings[--n_saved_settings];
+ settings_set (s);
+ settings_destroy (s);
+ return lex_end_of_command (lexer);
+ }
+ else
+ {
+ msg (SE, _("RESTORE without matching PRESERVE."));
+ return CMD_FAILURE;
+ }
+}
/*
Local Variables:
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2009 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
if (compute->test == NULL
|| expr_evaluate_num (compute->test, *c, case_num) == 1.0)
{
+ char *s;
+
*c = case_unshare (*c);
- expr_evaluate_str (compute->rvalue, *c, case_num,
- case_str_rw (*c, compute->variable),
- compute->width);
+ s = CHAR_CAST_BUG (char *, case_str_rw (*c, compute->variable));
+ expr_evaluate_str (compute->rvalue, *c, case_num, s, compute->width);
}
return TRNS_CONTINUE;
vr = vector_get_var (compute->vector, rindx - 1);
*c = case_unshare (*c);
expr_evaluate_str (compute->rvalue, *c, case_num,
- case_str_rw (*c, vr), var_get_width (vr));
+ CHAR_CAST_BUG (char *, case_str_rw (*c, vr)),
+ var_get_width (vr));
}
return TRNS_CONTINUE;
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2009 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <math.h>
#include <stdlib.h>
-#include <data/case.h>
-#include <data/data-in.h>
-#include <data/format.h>
-#include <data/dictionary.h>
-#include <data/procedure.h>
-#include <data/transformations.h>
-#include <data/variable.h>
-#include <language/command.h>
-#include <language/lexer/lexer.h>
-#include <language/lexer/value-parser.h>
-#include <language/lexer/variable-parser.h>
-#include <libpspp/assertion.h>
-#include <libpspp/compiler.h>
-#include <libpspp/message.h>
-#include <libpspp/pool.h>
-#include <libpspp/str.h>
-
-#include "xalloc.h"
+#include "data/case.h"
+#include "data/data-in.h"
+#include "data/dictionary.h"
+#include "data/format.h"
+#include "data/procedure.h"
+#include "data/transformations.h"
+#include "data/variable.h"
+#include "language/command.h"
+#include "language/lexer/lexer.h"
+#include "language/lexer/value-parser.h"
+#include "language/lexer/variable-parser.h"
+#include "libpspp/assertion.h"
+#include "libpspp/cast.h"
+#include "libpspp/compiler.h"
+#include "libpspp/message.h"
+#include "libpspp/pool.h"
+#include "libpspp/str.h"
+
+#include "gl/xalloc.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
/* Create destination variables, if needed.
This must be the final step; otherwise we'd have to
delete destination variables on failure. */
+ trns->dst_dict = dataset_dict (ds);
if (trns->src_vars != trns->dst_vars)
create_dst_vars (trns, dataset_dict (ds));
in->type = MAP_SINGLE;
value_init_pool (pool, &in->x, width);
value_copy_buf_rpad (&in->x, width,
- ds_data (string), ds_length (string), ' ');
+ CHAR_CAST_BUG (uint8_t *, ds_data (string)),
+ ds_length (string), ' ');
}
/* Parses a mapping output value into OUT, allocating memory from
}
else if (lex_match_id (lexer, "SYSMIS"))
set_map_out_num (out, SYSMIS);
- else if (lex_token (lexer) == T_STRING)
+ else if (lex_is_string (lexer))
{
set_map_out_str (out, pool, lex_tokstr (lexer));
lex_get (lexer);
{
size_t i;
- trns->dst_dict = dict;
-
for (i = 0; i < trns->var_cnt; i++)
{
const struct variable **var = &trns->dst_vars[i];
find_src_string (struct recode_trns *trns, const uint8_t *value,
const struct variable *src_var)
{
- struct mapping *m;
+ const char *encoding = dict_get_encoding (trns->dst_dict);
int width = var_get_width (src_var);
+ struct mapping *m;
for (m = trns->mappings; m < trns->mappings + trns->map_cnt; m++)
{
case MAP_CONVERT:
{
union value uv;
+ char *error;
+
+ error = data_in (ss_buffer (CHAR_CAST_BUG (char *, value), width),
+ LEGACY_NATIVE, FMT_F, &uv, 0, encoding);
+ match = error == NULL;
+ free (error);
- msg_disable ();
- match = data_in (ss_buffer (value, width), LEGACY_NATIVE,
- FMT_F, 0, 0, 0, trns->dst_dict, &uv, 0);
- msg_enable ();
out->value.f = uv.f;
break;
}
}
else
{
- char *dst = case_str_rw (*c, dst_var);
+ char *dst = CHAR_CAST_BUG (char *, case_str_rw (*c, dst_var));
if (out != NULL)
{
if (!out->copy_input)
/* PSPP - a program for statistical analysis.
- Copyright (C) 2009 Free Software Foundation, Inc.
+ Copyright (C) 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#define LIBPSPP_CAST_H 1
#include <stddef.h>
+#include "gl/verify.h"
/* Expands to a void expression that checks that POINTER is an
expression whose type is a qualified or unqualified version of
(CHECK_POINTER_HAS_TYPE (POINTER, TYPE), \
(TYPE) (POINTER))
+/* Casts POINTER to TYPE. Yields a compiler diagnostic if either TYPE or
+ POINTER is not a pointer to character type.
+
+ PSPP uses "unsigned char" (actually uint8_t) in "union value" and "char"
+ elsewhere to emphasize that data in union value usually requires reencoding
+ when transferred to and from other string types. These macros suppress the
+ warning when implicitly converting between pointers to different character
+ types, so their use normally marks a bug that should eventually be fixed.
+ However, until these bugs are fixed, suppressing the warnings is much less
+ annoying.
+
+ Use CHAR_CAST_BUG if you think there is a bug to be fixed, or if you have
+ not yet carefully examined the situation, or if you are not sure.
+ Use CHAR_CAST if you are convinced that this is actually a correct cast. */
+#define CHAR_CAST(TYPE, POINTER) \
+ ((void) verify_true (sizeof (*(POINTER)) == 1), \
+ (void) (sizeof (*(POINTER) + 1)), \
+ (void) verify_true (sizeof (*(TYPE) NULL) == 1), \
+ (void) (sizeof (*(TYPE) NULL + 1)), \
+ (TYPE) (POINTER))
+#define CHAR_CAST_BUG(TYPE, POINTER) CHAR_CAST(TYPE, POINTER)
+
/* Given POINTER, a pointer to the given MEMBER within structure
STRUCT, returns the address of the STRUCT. */
#define UP_CAST(POINTER, STRUCT, MEMBER) \
(CHECK_POINTER_COMPATIBILITY (&((STRUCT *) 0)->MEMBER, POINTER), \
(STRUCT *) ((char *) (POINTER) - offsetof (STRUCT, MEMBER)))
+/* A null pointer constant suitable for use in a varargs parameter list.
+
+ This is useful because a literal 0 may not have the same width as a null
+ pointer. NULL by itself is also insufficient because in C it may expand to
+ simply 0. */
+#define NULL_SENTINEL ((void *) NULL)
+
#endif /* libpspp/cast.h */
return s->interface->name (s->interface);
}
-/* Returns the location within the current source, or -1 if there is
- no current source */
+/* Returns the line number within the current source, or 0 if there is no
+ current source. */
int
getl_source_location (const struct source_stream *ss)
{
const struct getl_source *s = current_source (ss);
if ( ll_is_empty (&ss->sources) )
- return -1;
+ return 0;
if ( !s->interface->location )
- return -1;
+ return 0;
return s->interface->location (s->interface);
}
void **entry = h->entries;
int i;
- printf (_("hash table:"));
+ printf ("hash table:");
for (i = 0; i < h->size; i++)
printf (" %p", *entry++);
printf ("\n");
/* PSPP - a program for statistical analysis.
- Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#include <xalloc.h>
+
+#include "libpspp/i18n.h"
+
#include <assert.h>
+#include <errno.h>
+#include <iconv.h>
+#include <langinfo.h>
+#include <libintl.h>
#include <locale.h>
-#include <stdlib.h>
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
-#include <libintl.h>
-#include <iconv.h>
-#include <errno.h>
-#include <relocatable.h>
-#include "assertion.h"
-#include "hmapx.h"
-#include "hash-functions.h"
-#include "pool.h"
-
-#include "i18n.h"
-#include "version.h"
+#include "libpspp/assertion.h"
+#include "libpspp/hmapx.h"
+#include "libpspp/hash-functions.h"
+#include "libpspp/pool.h"
+#include "libpspp/str.h"
+#include "libpspp/version.h"
-#include <localcharset.h>
-#include "xstrndup.h"
-
-#if HAVE_NL_LANGINFO
-#include <langinfo.h>
-#endif
+#include "gl/localcharset.h"
+#include "gl/xalloc.h"
+#include "gl/relocatable.h"
+#include "gl/xstrndup.h"
struct converter
{
const int err = errno;
fprintf (stderr,
"Warning: "
- "cannot create a converter for \"%s\" to \"%s\": %s\n",
+ "cannot create a converter for `%s' to `%s': %s\n",
fromcode, tocode, strerror (err));
}
}
-/* Similar to recode_string_pool, but allocates the returned value on the heap instead of
- in a pool. It is the caller's responsibility to free the returned value. */
+/* Similar to recode_string_pool, but allocates the returned value on the heap
+ instead of in a pool. It is the caller's responsibility to free the
+ returned value. */
char *
recode_string (const char *to, const char *from,
const char *text, int length)
}
-/*
-Converts the string TEXT, which should be encoded in FROM-encoding, to a
-dynamically allocated string in TO-encoding. Any characters which cannot
-be converted will be represented by '?'.
+/* Uses CONV to convert the INBYTES starting at IP into the OUTBYTES starting
+ at OP, and appends a null terminator to the output.
+
+ Returns the output length if successful, -1 if the output buffer is too
+ small. */
+static ssize_t
+try_recode (iconv_t conv,
+ const char *ip, size_t inbytes,
+ char *op_, size_t outbytes)
+{
+ /* FIXME: Need to ensure that this char is valid in the target encoding */
+ const char fallbackchar = '?';
+ char *op = op_;
-LENGTH should be the length of the string or -1, if null terminated.
+ /* Put the converter into the initial shift state, in case there was any
+ state information left over from its last usage. */
+ iconv (conv, NULL, 0, NULL, 0);
-The returned string will be allocated on POOL.
+ while (iconv (conv, (ICONV_CONST char **) &ip, &inbytes,
+ &op, &outbytes) == -1)
+ switch (errno)
+ {
+ case EINVAL:
+ if (outbytes < 2)
+ return -1;
+ *op++ = fallbackchar;
+ *op = '\0';
+ return op - op_;
+
+ case EILSEQ:
+ if (outbytes == 0)
+ return -1;
+ *op++ = fallbackchar;
+ outbytes--;
+ ip++;
+ inbytes--;
+ break;
+
+ case E2BIG:
+ return -1;
+
+ default:
+ /* should never happen */
+ fprintf (stderr, "Character conversion error: %s\n", strerror (errno));
+ NOT_REACHED ();
+ break;
+ }
-This function's behaviour differs from that of g_convert_with_fallback provided
-by GLib. The GLib function will fail (returns NULL) if any part of the input
-string is not valid in the declared input encoding. This function however perseveres
-even in the presence of badly encoded input.
-*/
+ if (outbytes == 0)
+ return -1;
+
+ *op = '\0';
+ return op - op_;
+}
+
+/* Converts the string TEXT, which should be encoded in FROM-encoding, to a
+ dynamically allocated string in TO-encoding. Any characters which cannot be
+ converted will be represented by '?'.
+
+ LENGTH should be the length of the string or -1, if null terminated.
+
+ The returned string will be allocated on POOL.
+
+ This function's behaviour differs from that of g_convert_with_fallback
+ provided by GLib. The GLib function will fail (returns NULL) if any part of
+ the input string is not valid in the declared input encoding. This function
+ however perseveres even in the presence of badly encoded input. */
char *
recode_string_pool (const char *to, const char *from,
- const char *text, int length, struct pool *pool)
+ const char *text, int length, struct pool *pool)
{
- char *outbuf = 0;
- size_t outbufferlength;
- size_t result;
- char *op ;
- size_t inbytes = 0;
- size_t outbytes ;
- iconv_t conv ;
-
- /* FIXME: Need to ensure that this char is valid in the target encoding */
- const char fallbackchar = '?';
+ struct substring out;
if ( text == NULL )
return NULL;
if ( length == -1 )
- length = strlen(text);
+ length = strlen (text);
- if (to == NULL)
- to = default_encoding;
+ out = recode_substring_pool (to, from, ss_buffer (text, length), pool);
+ return out.string;
+}
- if (from == NULL)
- from = default_encoding;
+/* Converts the string TEXT, which should be encoded in FROM-encoding, to a
+ dynamically allocated string in TO-encoding. Any characters which cannot be
+ converted will be represented by '?'.
- for ( outbufferlength = 1 ; outbufferlength != 0; outbufferlength <<= 1 )
- if ( outbufferlength > length)
- break;
+ The returned string will be null-terminated and allocated on POOL.
- outbuf = pool_malloc (pool, outbufferlength);
- op = outbuf;
+ This function's behaviour differs from that of g_convert_with_fallback
+ provided by GLib. The GLib function will fail (returns NULL) if any part of
+ the input string is not valid in the declared input encoding. This function
+ however perseveres even in the presence of badly encoded input. */
+struct substring
+recode_substring_pool (const char *to, const char *from,
+ struct substring text, struct pool *pool)
+{
+ size_t outbufferlength;
+ iconv_t conv ;
- outbytes = outbufferlength;
- inbytes = length;
+ if (to == NULL)
+ to = default_encoding;
+ if (from == NULL)
+ from = default_encoding;
conv = create_iconv (to, from);
if ( (iconv_t) -1 == conv )
- return xstrdup (text);
-
- do {
- const char *ip = text;
- result = iconv (conv, (ICONV_CONST char **) &text, &inbytes,
- &op, &outbytes);
-
- if ( -1 == result )
- {
- int the_error = errno;
-
- switch (the_error)
- {
- case EILSEQ:
- case EINVAL:
- if ( outbytes > 0 )
- {
- *op++ = fallbackchar;
- outbytes--;
- text++;
- inbytes--;
- break;
- }
- /* Fall through */
- case E2BIG:
- pool_free (pool, outbuf);
- outbufferlength <<= 1;
- outbuf = pool_malloc (pool, outbufferlength);
- op = outbuf;
- outbytes = outbufferlength;
- inbytes = length;
- text = ip;
- break;
- default:
- /* should never happen */
- fprintf (stderr, "Character conversion error: %s\n", strerror (the_error));
- NOT_REACHED ();
- break;
- }
- }
- } while ( -1 == result );
-
- if (outbytes == 0 )
{
- char *const oldaddr = outbuf;
- outbuf = pool_realloc (pool, outbuf, outbufferlength + 1);
-
- op += (outbuf - oldaddr) ;
+ struct substring out;
+ ss_alloc_substring (&out, text);
+ return out;
}
- *op = '\0';
+ for ( outbufferlength = 1 ; outbufferlength != 0; outbufferlength <<= 1 )
+ if ( outbufferlength > text.length)
+ {
+ char *output = pool_malloc (pool, outbufferlength);
+ ssize_t output_len = try_recode (conv, text.string, text.length,
+ output, outbufferlength);
+ if (output_len >= 0)
+ return ss_buffer (output, output_len);
+ pool_free (pool, output);
+ }
- return outbuf;
+ NOT_REACHED ();
}
-
void
i18n_init (void)
{
bool
valid_encoding (const char *enc)
{
- iconv_t conv = iconv_open ("UTF8", enc);
+ iconv_t conv = iconv_open (UTF8, enc);
if ( conv == (iconv_t) -1)
return false;
/* PSPP - a program for statistical analysis.
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
struct pool;
-
-/*
-Converts the string TEXT, which should be encoded in FROM-encoding, to a
-dynamically allocated string in TO-encoding. Any characters which cannot
-be converted will be represented by '?'.
-
-LENGTH should be the length of the string or -1, if null terminated.
-
-The returned string will be allocated on POOL.
-
-This function's behaviour differs from that of g_convert_with_fallback provided
-by GLib. The GLib function will fail (returns NULL) if any part of the input
-string is not valid in the declared input encoding. This function however perseveres
-even in the presence of badly encoded input.
-*/
-char *recode_string_pool (const char *to, const char *from,
- const char *text, int length, struct pool *pool);
-
-
-
-/* Similar to recode_string_pool, but allocates the returned value on the heap instead of
- in a pool. It is the caller's responsibility to free the returned value. */
char *recode_string (const char *to, const char *from,
- const char *text, int len);
-
+ const char *text, int len);
+char *recode_string_pool (const char *to, const char *from,
+ const char *text, int length, struct pool *);
+struct substring recode_substring_pool (const char *to, const char *from,
+ struct substring text, struct pool *);
bool valid_encoding (const char *enc);
-/* Return the decimal separator according to the
- system locale */
char get_system_decimal (void);
const char * get_default_encoding (void);
m.severity = msg_class_to_severity (class);
va_start (args, format);
m.text = xvasprintf (format, args);
+ m.where.file_name = NULL;
+ m.where.line_number = 0;
+ m.where.first_column = 0;
+ m.where.last_column = 0;
va_end (args);
msg_emit (&m);
ds_init_empty (&s);
if (m->category != MSG_C_GENERAL
- && (m->where.file_name || m->where.line_number != -1))
+ && (m->where.file_name
+ || m->where.line_number > 0
+ || m->where.first_column > 0))
{
if (m->where.file_name)
- ds_put_format (&s, "%s:", m->where.file_name);
- if (m->where.line_number != -1)
- ds_put_format (&s, "%d:", m->where.line_number);
- ds_put_char (&s, ' ');
+ ds_put_format (&s, "%s", m->where.file_name);
+ if (m->where.line_number > 0)
+ {
+ if (!ds_is_empty (&s))
+ ds_put_char (&s, ':');
+ ds_put_format (&s, "%d", m->where.line_number);
+ }
+ if (m->where.first_column > 0)
+ {
+ ds_put_format (&s, ".%d", m->where.first_column);
+ if (m->where.last_column > m->where.first_column + 1)
+ ds_put_format (&s, "-%d", m->where.last_column - 1);
+ }
+ ds_put_cstr (&s, ": ");
}
switch (m->severity)
m.category = MSG_C_GENERAL;
m.severity = MSG_S_NOTE;
m.where.file_name = NULL;
- m.where.line_number = -1;
+ m.where.line_number = 0;
+ m.where.first_column = 0;
+ m.where.last_column = 0;
m.text = s;
msg_handler (&m);
free (s);
void
msg_emit (struct msg *m)
{
- if ( s_stream )
- get_msg_location (s_stream, &m->where);
+ if ( s_stream && m->where.file_name == NULL )
+ {
+ struct msg_locator loc;
+
+ get_msg_location (s_stream, &loc);
+ m->where.file_name = loc.file_name;
+ m->where.line_number = loc.line_number;
+ }
else
{
m->where.file_name = NULL;
- m->where.line_number = -1;
+ m->where.line_number = 0;
}
if (!messages_disabled)
/* Private functions. */
void
-request_bug_report_and_abort (const char *msg)
+request_bug_report (const char *msg)
{
fprintf (stderr, "******************************************************\n");
fprintf (stderr, "You have discovered a bug in PSPP. Please report this\n");
#endif
);
fprintf (stderr, "******************************************************\n");
-
- _exit (EXIT_FAILURE);
}
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2006, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
/* A file location. */
struct msg_locator
{
- char *file_name; /* File name. */
- int line_number; /* Line number. */
+ char *file_name; /* File name (NULL if none). */
+ int line_number; /* Line number (0 if none). */
+ int first_column; /* 1-based column number (0 if none). */
+ int last_column; /* 1-based exclusive last column (0 if none). */
};
/* A message. */
/* Used in panic situations only. */
-void request_bug_report_and_abort (const char *msg) NO_RETURN;
+void request_bug_report (const char *msg);
#endif /* message.h */
mc_options_set_strategy (options, MC_RANDOM);
else
error (1, 0,
- "strategy must be \"broad\", \"deep\", or \"random\"");
+ "strategy must be `broad', `deep', or `random'");
break;
case OPT_MAX_DEPTH:
else if (!strcmp (optarg, "random"))
mc_options_set_queue_limit_strategy (options, MC_DROP_RANDOM);
else
- error (1, 0, "--queue-drop argument must be \"newest\", "
- "\"oldest\", or \"random\"");
+ error (1, 0, "--queue-drop argument must be `newest' "
+ "`oldest' or `random'");
break;
case OPT_SEED:
#include <relocatable.h>
#include "minmax.h"
#include "xalloc.h"
+#include "xmemdup0.h"
#include "xsize.h"
\f
/* Reverses the order of NBYTES bytes at address P, thus converting
return ss;
}
-/* Makes a malloc()'d copy of the contents of OLD
+/* Makes a malloc()'d, null-terminated copy of the contents of OLD
and stores it in NEW. */
void
ss_alloc_substring (struct substring *new, struct substring old)
{
- new->string = xmalloc (old.length);
+ new->string = xmemdup0 (old.string, old.length);
new->length = old.length;
- memcpy (new->string, old.string, old.length);
}
/* Allocates room for a CNT-character string in NEW. */
{
ds_clear (st);
ds_put_cstr (st, rel);
- free ((char *) rel);
+ /* The documentation for relocate says that casting away const
+ and then freeing is appropriate ... */
+ free (CONST_CAST (char *, rel));
}
}
#include <data/value.h>
#include <libpspp/hmap.h>
#include <libpspp/pool.h>
+#include <libpspp/array.h>
#include <libpspp/str.h>
struct hmap_node node; /* Node in hash map. */
union value value; /* The value being labeled. */
double cc; /* The total of the weights of cases with this value */
+
+ void *user_data; /* A pointer to data which the caller can store stuff */
+
int subscript; /* A zero based integer, unique within the variable.
Can be used as an index into an array */
};
-
struct var_params
{
/* A map indexed by a union values */
};
+/* Comparison function to sort the reverse_value_map in ascending order */
+static int
+compare_value_node (const void *vn1_, const void *vn2_, const void *aux)
+{
+ const struct value_node * const *vn1 = vn1_;
+ const struct value_node * const *vn2 = vn2_;
+ const struct var_params *vp = aux;
+
+ return value_compare_3way (&(*vn1)->value, &(*vn2)->value, var_get_width (vp->var));
+}
+
+
struct categoricals
{
/* The weight variable */
/* Missing values to be excluded */
enum mv_class exclude;
+
+ /* Function to be called on each update */
+ update_func *update;
+
+ /* Function specified by the caller to create user_data */
+ user_data_create_func *user_data_create;
+
+ /* Auxilliary data to be passed to update and user_data_create_func*/
+ void *aux1;
+ void *aux2;
};
printf ("\nReverse variable map:\n");
- for (v = 0 ; v < cat->n_cats_total - cat->n_vars; ++v)
+ for (v = 0 ; v < cat->n_cats_total; ++v)
printf ("%d ", cat->reverse_variable_map[v]);
printf ("\n");
}
}
-
struct categoricals *
-categoricals_create (const struct variable **v, size_t n_vars,
- const struct variable *wv, enum mv_class exclude)
+categoricals_create (const struct variable *const *v, size_t n_vars,
+ const struct variable *wv, enum mv_class exclude,
+ user_data_create_func *udf,
+ update_func *update, void *aux1, void *aux2
+ )
{
size_t i;
struct categoricals *cat = xmalloc (sizeof *cat);
cat->reverse_variable_map = NULL;
cat->pool = pool_create ();
cat->exclude = exclude;
+ cat->update = update;
+ cat->user_data_create = udf;
+
+ cat->aux1 = aux1;
+ cat->aux2 = aux2;
+
cat->vp = pool_calloc (cat->pool, cat->n_vp, sizeof *cat->vp);
cat->n_vars++;
node->subscript = cat->vp[i].n_cats++ ;
+
+ if (cat->user_data_create)
+ node->user_data = cat->user_data_create (cat->aux1, cat->aux2);
}
node->cc += weight;
cat->vp[i].cc += weight;
+
+ if (cat->update)
+ cat->update (node->user_data, cat->exclude, cat->wv, var, c, cat->aux1, cat->aux2);
}
}
int v;
int idx = 0;
cat->reverse_variable_map = pool_calloc (cat->pool,
- cat->n_cats_total - cat->n_vars,
+ cat->n_cats_total,
sizeof *cat->reverse_variable_map);
for (v = 0 ; v < cat->n_vp; ++v)
vp->reverse_value_map[vn->subscript] = vn;
}
+ /* For some purposes (eg CONTRASTS in ONEWAY) the values need to be sorted */
+ sort (vp->reverse_value_map, vp->n_cats, sizeof (const struct value_node *),
+ compare_value_node, vp);
+
/* Populate the reverse variable map.
- This implementation considers the first value of each categorical variable
- as the basis. Therefore, this loop starts from 1 instead of 0 */
- for (i = 1; i < vp->n_cats; ++i)
+ */
+ for (i = 0; i < vp->n_cats; ++i)
cat->reverse_variable_map[idx++] = v;
}
assert (cat->n_vars <= cat->n_vp);
+
}
{
assert (cat->reverse_variable_map);
assert (subscript >= 0);
- assert (subscript < cat->n_cats_total - cat->n_vars);
+ assert (subscript < cat->n_cats_total);
return cat->reverse_variable_map[subscript];
}
{
return cat->n_vars;
}
+
+
+
+void *
+categoricals_get_user_data_by_subscript (const struct categoricals *cat, int subscript)
+{
+ int vindex = reverse_variable_lookup (cat, subscript);
+ const struct var_params *vp = &cat->vp[vindex];
+
+ const struct value_node *vn = vp->reverse_value_map [subscript - vp->base_subscript];
+ return vn->user_data;
+}
union value ;
-struct categoricals *categoricals_create (const struct variable **v, size_t n_vars,
- const struct variable *wv, enum mv_class exclude);
+typedef void update_func (void *user_data,
+ enum mv_class exclude,
+ const struct variable *wv,
+ const struct variable *catvar,
+ const struct ccase *c,
+ void *aux1, void *aux2);
+
+typedef void *user_data_create_func (void *aux1, void *aux2);
+
+struct categoricals *categoricals_create (const struct variable *const *v, size_t n_vars,
+ const struct variable *wv, enum mv_class exclude,
+ user_data_create_func *udf,
+ update_func *update, void *aux1, void *aux2);
void categoricals_destroy (struct categoricals *);
double categoricals_get_binary_by_subscript (const struct categoricals *cat, int subscript,
const struct ccase *c);
+void * categoricals_get_user_data_by_subscript (const struct categoricals *cat, int subscript);
+
{
/* The variables for which the covariance matrix is to be calculated. */
size_t n_vars;
- const struct variable **vars;
+ const struct variable *const *vars;
/* Categorical variables. */
struct categoricals *categoricals;
/* Create a covariance struct.
*/
struct covariance *
-covariance_1pass_create (size_t n_vars, const struct variable **vars,
+covariance_1pass_create (size_t n_vars, const struct variable *const *vars,
const struct variable *weight, enum mv_class exclude)
{
size_t i;
until then.
*/
struct covariance *
-covariance_2pass_create (size_t n_vars, const struct variable **vars,
- size_t n_catvars, const struct variable **catvars,
+covariance_2pass_create (size_t n_vars, const struct variable *const *vars,
+ struct categoricals *cats,
const struct variable *wv, enum mv_class exclude)
{
size_t i;
cov->n_cm = -1;
cov->cm = NULL;
- cov->categoricals = categoricals_create (catvars, n_catvars, wv, exclude);
+ cov->categoricals = cats;
return cov;
}
cov->state = 1;
}
- categoricals_update (cov->categoricals, c);
+ if (cov->categoricals)
+ categoricals_update (cov->categoricals, c);
for (i = 0 ; i < cov->dim; ++i)
{
assert (cov->state == 1);
cov->state = 2;
- cov->dim = cov->n_vars +
- categoricals_total (cov->categoricals) - categoricals_get_n_variables (cov->categoricals);
+ cov->dim = cov->n_vars;
+
+ if (cov->categoricals)
+ cov->dim += categoricals_total (cov->categoricals)
+ - categoricals_get_n_variables (cov->categoricals);
cov->n_cm = (cov->dim * (cov->dim - 1) ) / 2;
cov->cm = xcalloc (sizeof *cov->cm, cov->n_cm);
cov->moments[i] = resize_matrix (cov->moments[i], cov->dim);
}
- categoricals_done (cov->categoricals);
+ if (cov->categoricals)
+ categoricals_done (cov->categoricals);
/* Populate the moments matrices with the categorical value elements */
for (i = cov->n_vars; i < cov->dim; ++i)
}
}
+/* Function to access the categoricals used by COV
+ The return value is owned by the COV
+*/
+const struct categoricals *
+covariance_get_categoricals (const struct covariance *cov)
+{
+ return cov->categoricals;
+}
/* Destroy the COV object */
struct covariance;
struct variable;
struct ccase ;
+struct categoricals;
-struct covariance * covariance_1pass_create (size_t n_vars, const struct variable **vars,
+struct covariance * covariance_1pass_create (size_t n_vars, const struct variable *const *vars,
const struct variable *wv, enum mv_class excl);
struct covariance *
-covariance_2pass_create (size_t n_vars, const struct variable **vars,
- size_t n_catvars, const struct variable **catvars,
+covariance_2pass_create (size_t n_vars, const struct variable *const *vars,
+ struct categoricals *cats,
const struct variable *wv, enum mv_class excl);
void covariance_accumulate (struct covariance *, const struct ccase *);
const gsl_matrix *covariance_moments (const struct covariance *cov, int m);
+const struct categoricals * covariance_get_categoricals (const struct covariance *cov);
+
#endif
int n = ceil (max / (bin_width_2) ) ;
- assert (max > min);
+ assert (max >= min);
if ( ! (n % 2 ) ) n++;
upper_limit = n * bin_width_2;
/* PSPP - a program for statistical analysis.
- Copyright (C) 2004, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
+
#include "levene.h"
-#include <libpspp/message.h>
-#include <data/case.h>
-#include <data/casereader.h>
-#include <data/dictionary.h>
-#include "group-proc.h"
-#include <libpspp/hash.h>
-#include <libpspp/str.h>
-#include <data/variable.h>
-#include <data/procedure.h>
-#include <libpspp/misc.h>
-#include "group.h"
#include <math.h>
-#include <stdlib.h>
-
-#include "xalloc.h"
-
-
-/* This module calculates the Levene statistic for variables.
-
- Just for reference, the Levene Statistic is a defines as follows:
-
- W = \frac{ (n-k)\sum_{i=1}^k n_i(Z_{iL} - Z_{LL})^2}
- { (k-1)\sum_{i=1}^k \sum_{j=1}^{n_i} (Z_{ij} - Z_{iL})^2}
-
- where:
- k is the number of groups
- n is the total number of samples
- n_i is the number of samples in the ith group
- Z_{ij} is | Y_{ij} - Y_{iL} | where Y_{iL} is the mean of the ith group
- Z_{iL} is the mean of Z_{ij} over the ith group
- Z_{LL} is the grand mean of Z_{ij}
-
- Imagine calculating that with pencil and paper!
- */
-
-
-struct levene_info
-{
-
- /* Per group statistics */
- struct t_test_proc **group_stats;
-
- /* The independent variable */
- const struct variable *v_indep;
-
- /* Number of dependent variables */
- size_t n_dep;
-
- /* The dependent variables */
- const struct variable **v_dep;
-
- /* Filter for missing values */
- enum mv_class exclude;
+#include <libpspp/misc.h>
- /* An array of lz_stats for each variable */
- struct lz_stats *lz;
+#include <data/case.h>
+#include <data/casereader.h>
+#include <data/variable.h>
- /* The denominator for the expression for the Levene */
- double *lz_denominator;
-};
+#include <libpspp/hmap.h>
-/* Per variable statistics */
-struct lz_stats
+struct lev
{
- /* Total of all lz */
- double grand_total;
-
- /* Mean of all lz */
- double grand_mean;
+ struct hmap_node node;
+ union value group;
+ int width;
- /* The total number of cases */
- double total_n ;
-
- /* Number of groups */
- int n_groups;
+ double t_bar;
+ double z_mean;
+ double n;
};
-/* First pass */
-static void levene_precalc (const struct levene_info *l);
-static int levene_calc (const struct dictionary *dict, const struct ccase *,
- const struct levene_info *l);
-static void levene_postcalc (struct levene_info *);
-
-
-/* Second pass */
-static void levene2_precalc (struct levene_info *l);
-static int levene2_calc (const struct dictionary *, const struct ccase *,
- struct levene_info *l);
-static void levene2_postcalc (struct levene_info *);
-
-void
-levene(const struct dictionary *dict,
- struct casereader *reader,
- const struct variable *v_indep, size_t n_dep,
- const struct variable **v_dep,
- enum mv_class exclude)
-{
- struct casereader *pass1, *pass2;
- struct ccase *c;
- struct levene_info l;
-
- l.n_dep = n_dep;
- l.v_indep = v_indep;
- l.v_dep = v_dep;
- l.exclude = exclude;
- l.lz = xnmalloc (l.n_dep, sizeof *l.lz);
- l.lz_denominator = xnmalloc (l.n_dep, sizeof *l.lz_denominator);
-
- casereader_split (reader, &pass1, &pass2);
-
- levene_precalc (&l);
- for (; (c = casereader_read (pass1)) != NULL; case_unref (c))
- levene_calc (dict, c, &l);
- casereader_destroy (pass1);
- levene_postcalc (&l);
-
- levene2_precalc(&l);
- for (; (c = casereader_read (pass2)) != NULL; case_unref (c))
- levene2_calc (dict, c, &l);
- casereader_destroy (pass2);
- levene2_postcalc (&l);
-
- free (l.lz_denominator);
- free (l.lz);
-}
-
-static void
-levene_precalc (const struct levene_info *l)
+static struct lev *
+find_group (struct hmap *map, const union value *target, int width)
{
- size_t i;
-
- for(i = 0; i < l->n_dep ; ++i )
+ struct lev *l = NULL;
+ unsigned int hash = value_hash (target, width, 0);
+ HMAP_FOR_EACH_WITH_HASH (l, struct lev, node, hash, map)
{
- const struct variable *var = l->v_dep[i];
- struct group_proc *gp = group_proc_get (var);
- struct group_statistics *gs;
- struct hsh_iterator hi;
-
- l->lz[i].grand_total = 0;
- l->lz[i].total_n = 0;
- l->lz[i].n_groups = gp->n_groups ;
-
-
- for ( gs = hsh_first(gp->group_hash, &hi);
- gs != NULL;
- gs = hsh_next(gp->group_hash, &hi))
- {
- gs->lz_total = 0;
- }
-
+ if (value_equal (&l->group, target, width))
+ break;
+ l = NULL;
}
+ return l;
}
-static int
-levene_calc (const struct dictionary *dict, const struct ccase *c,
- const struct levene_info *l)
-{
- size_t i;
- bool warn = false;
- const union value *gv = case_data (c, l->v_indep);
- struct group_statistics key;
- double weight = dict_get_case_weight (dict, c, &warn);
-
- key.id = *gv;
-
- for (i = 0; i < l->n_dep; ++i)
- {
- const struct variable *var = l->v_dep[i];
- struct group_proc *gp = group_proc_get (var);
- double levene_z;
- const union value *v = case_data (c, var);
- struct group_statistics *gs;
-
- gs = hsh_find(gp->group_hash,(void *) &key );
- if ( gs == NULL )
- continue ;
-
- if ( !var_is_value_missing (var, v, l->exclude))
- {
- levene_z= fabs(v->f - gs->mean);
- l->lz[i].grand_total += levene_z * weight;
- l->lz[i].total_n += weight;
-
- gs->lz_total += levene_z * weight;
- }
- }
- return 0;
-}
-
-
-static void
-levene_postcalc (struct levene_info *l)
+double
+levene (struct casereader *rx, const struct variable *gvar,
+ const struct variable *var, const struct variable *wv,
+ enum mv_class exclude)
{
- size_t v;
-
- for (v = 0; v < l->n_dep; ++v)
- {
- /* This is Z_LL */
- l->lz[v].grand_mean = l->lz[v].grand_total / l->lz[v].total_n ;
- }
+ double numerator = 0.0;
+ double denominator = 0.0;
+ int n_groups = 0;
+ double z_grand_mean = 0.0;
+ double grand_n = 0.0;
+ struct hmap map = HMAP_INITIALIZER (map);
-}
-
-
-
-static void
-levene2_precalc (struct levene_info *l)
-{
- size_t v;
-
+ struct ccase *c;
+ struct casereader *r = casereader_clone (rx);
- /* This stuff could go in the first post calc . . . */
- for (v = 0;
- v < l->n_dep;
- ++v)
+ for (; (c = casereader_read (r)) != NULL; case_unref (c))
{
- struct hsh_iterator hi;
- struct group_statistics *g;
-
- const struct variable *var = l->v_dep[v] ;
- struct hsh_table *hash = group_proc_get (var)->group_hash;
-
+ struct lev *l = NULL;
+ const union value *target = case_data (c, gvar);
+ int width = var_get_width (gvar);
+ unsigned int hash = value_hash (target, width, 0);
+ const double x = case_data (c, var)->f;
+ const double weight = wv ? case_data (c, wv)->f : 1.0;
+
+ if (var_is_value_missing (var, case_data (c, var), exclude))
+ continue;
- for (g = hsh_first(hash,&hi); g != NULL; g = hsh_next(hash, &hi))
+ l = find_group (&map, target, width);
+
+ if (l == NULL)
{
- g->lz_mean = g->lz_total / g->n ;
+ l = xzalloc (sizeof *l);
+ value_clone (&l->group, target, width);
+ hmap_insert (&map, &l->node, hash);
}
- l->lz_denominator[v] = 0;
- }
-}
-static int
-levene2_calc (const struct dictionary *dict, const struct ccase *c,
- struct levene_info *l)
-{
- size_t i;
- bool warn = false;
-
- double weight = dict_get_case_weight (dict, c, &warn);
-
- const union value *gv = case_data (c, l->v_indep);
- struct group_statistics key;
+ l->n += weight;
+ l->t_bar += x * weight;
+ grand_n += weight;
+ }
+ casereader_destroy (r);
+
+ {
+ struct lev *l;
+ HMAP_FOR_EACH (l, struct lev, node, &map)
+ {
+ l->t_bar /= l->n;
+ }
+ }
- key.id = *gv;
+ n_groups = hmap_count (&map);
- for (i = 0; i < l->n_dep; ++i)
+ r = casereader_clone (rx);
+ for (; (c = casereader_read (r)) != NULL; case_unref (c))
{
- double levene_z;
- const struct variable *var = l->v_dep[i] ;
- const union value *v = case_data (c, var);
- struct group_statistics *gs;
-
- gs = hsh_find(group_proc_get (var)->group_hash,(void *) &key );
+ const union value *target = case_data (c, gvar);
+ int width = var_get_width (gvar);
+ const double x = case_data (c, var)->f;
+ const double weight = wv ? case_data (c, wv)->f : 1.0;
- if ( gs == NULL )
+ if (var_is_value_missing (var, case_data (c, var), exclude))
continue;
- if ( !var_is_value_missing (var, v, l->exclude))
- {
- levene_z = fabs(v->f - gs->mean);
- l->lz_denominator[i] += weight * pow2 (levene_z - gs->lz_mean);
- }
- }
-
- return 0;
-}
+ struct lev *l = find_group (&map, target, width);
+ assert (l);
+
+ l->z_mean += fabs (x - l->t_bar) * weight;
+ z_grand_mean += fabs (x - l->t_bar) * weight;
+ }
+ casereader_destroy (r);
+
+ {
+ struct lev *l;
+ HMAP_FOR_EACH (l, struct lev, node, &map)
+ {
+ l->z_mean /= l->n;
+ }
+ }
-static void
-levene2_postcalc (struct levene_info *l)
-{
- size_t v;
+ z_grand_mean /= grand_n;
- for (v = 0; v < l->n_dep; ++v)
+ r = casereader_clone (rx);
+ for (; (c = casereader_read (r)) != NULL; case_unref (c))
{
- double lz_numerator = 0;
- struct hsh_iterator hi;
- struct group_statistics *g;
+ double z;
+ const union value *target = case_data (c, gvar);
+ int width = var_get_width (gvar);
+ const double x = case_data (c, var)->f;
+ const double weight = wv ? case_data (c, wv)->f : 1.0;
- const struct variable *var = l->v_dep[v] ;
- struct group_proc *gp = group_proc_get (var);
- struct hsh_table *hash = gp->group_hash;
-
- for (g = hsh_first(hash, &hi); g != NULL; g = hsh_next(hash, &hi))
- {
- lz_numerator += g->n * pow2(g->lz_mean - l->lz[v].grand_mean );
- }
- lz_numerator *= ( gp->ugs.n - gp->n_groups );
-
- l->lz_denominator[v] *= (gp->n_groups - 1);
+ if (var_is_value_missing (var, case_data (c, var), exclude))
+ continue;
- gp->levene = lz_numerator / l->lz_denominator[v] ;
+ struct lev *l = find_group (&map, target, width);
+ assert (l);
+ z = fabs (x - l->t_bar);
+ denominator += pow2 (z - l->z_mean) * weight;
}
-}
+ casereader_destroy (r);
+
+ denominator *= n_groups - 1;
+
+ {
+ double grand_n = 0.0;
+ struct hmap_node *next;
+ struct lev *l;
+ HMAP_FOR_EACH_SAFE (l, next, struct lev, node, &map)
+ {
+ numerator += l->n * pow2 (l->z_mean - z_grand_mean);
+ grand_n += l->n;
+
+ /* We don't need these anymore */
+ free (l);
+ }
+ numerator *= grand_n - n_groups ;
+ hmap_destroy (&map);
+ }
+ return numerator/ denominator;
+}
#if !levene_h
#define levene_h 1
-#include <data/casereader.h>
-#include <data/missing-values.h>
-#include <data/variable.h>
+struct casereader;
+struct variable;
-/* Calculate the Levene statistic
-The independent variable : v_indep;
+enum mv_class;
-Number of dependent variables : n_dep;
+double
+levene (struct casereader *rx, const struct variable *gvar,
+ const struct variable *var, const struct variable *wv, enum mv_class exclude );
-The dependent variables : v_dep;
-*/
-
-
-struct dictionary ;
-struct casefilter ;
-
-void levene(const struct dictionary *dict, struct casereader *,
- const struct variable *v_indep, size_t n_dep,
- const struct variable **v_dep,
- enum mv_class exclude);
-
-
-
-#endif /* levene_h */
+#endif
/* PSPP - a program for statistical analysis.
- Copyright (C) 2005 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
{
return c->depvar_mean;
}
-static
-linreg_set_dependent_column (linreg *c, int column)
-{
- c->dependent_column = column;
-}
-
if ( var_is_value_missing (var, case_data (cx, var), exclude))
continue;
- case_unref (prev_cx);
-
if ( prev_value == -DBL_MAX || prev_value == this_value)
c_i += weight;
c_i = weight;
}
+ case_unref (prev_cx);
cc_i += weight;
prev_value = this_value;
prev_cx = case_ref (cx);
};
\f
/* Reads all the cases from INPUT. Sorts the cases according to
- ORDERING. Returns the sorted cases in a new casereader. */
+ ORDERING. Returns the sorted cases in a new casereader.
+ INPUT is destroyed by this function.
+ */
struct casereader *
sort_execute (struct casereader *input, const struct subcase *ordering)
{
/* Reads all the cases from INPUT. Sorts the cases in ascending
order according to VARIABLE. Returns the sorted cases in a
- new casereader. */
+ new casereader. INPUT is destroyed by this function. */
struct casereader *
sort_execute_1var (struct casereader *input, const struct variable *var)
{
#include <stdint.h>
#include <stdlib.h>
-#include <data/file-name.h>
-#include <data/settings.h>
-#include <libpspp/assertion.h>
-#include <libpspp/compiler.h>
-#include <libpspp/message.h>
-#include <libpspp/start-date.h>
-#include <libpspp/string-map.h>
-#include <libpspp/version.h>
-#include <output/cairo.h>
-#include <output/chart-item-provider.h>
-#include <output/message-item.h>
-#include <output/options.h>
-#include <output/tab.h>
-#include <output/text-item.h>
-#include <output/driver-provider.h>
-#include <output/render.h>
-#include <output/table-item.h>
-
-#include "error.h"
-#include "minmax.h"
-#include "xalloc.h"
+#include "data/file-name.h"
+#include "data/settings.h"
+#include "libpspp/assertion.h"
+#include "libpspp/cast.h"
+#include "libpspp/compiler.h"
+#include "libpspp/message.h"
+#include "libpspp/start-date.h"
+#include "libpspp/string-map.h"
+#include "libpspp/version.h"
+#include "output/cairo.h"
+#include "output/chart-item-provider.h"
+#include "output/driver-provider.h"
+#include "output/message-item.h"
+#include "output/options.h"
+#include "output/render.h"
+#include "output/tab.h"
+#include "output/table-item.h"
+#include "output/text-item.h"
+
+#include "gl/error.h"
+#include "gl/minmax.h"
+#include "gl/xalloc.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
"bold", EMPH_BOLD,
"underline", EMPH_UNDERLINE,
"none", EMPH_NONE,
- (char *) NULL);
+ NULL_SENTINEL);
a->chart_file_name = parse_chart_file_name (opt (d, o, "charts", file_name));
ascii_close_page (a);
if (fn_close (a->file_name, a->file) != 0)
- error (0, errno, _("ascii: closing output file \"%s\""),
+ error (0, errno, _("ascii: closing output file `%s'"),
a->file_name);
a->file = NULL;
}
}
else
{
- error (0, errno, _("ascii: opening output file \"%s\""),
+ error (0, errno, _("ascii: opening output file `%s'"),
a->file_name);
a->error = true;
return false;
desc = pango_font_description_from_string (string);
if (desc == NULL)
{
- error (0, 0, _("\"%s\": bad font specification"), string);
+ error (0, 0, _("`%s': bad font specification"), string);
/* Fall back to DEFAULT_VALUE, which had better be a valid font
description. */
status = cairo_surface_status (surface);
if (status != CAIRO_STATUS_SUCCESS)
{
- error (0, 0, _("error opening output file \"%s\": %s"),
+ error (0, 0, _("error opening output file `%s': %s"),
file_name, cairo_status_to_string (status));
cairo_surface_destroy (surface);
goto error;
status = cairo_surface_write_to_png (surface, file_name);
if (status != CAIRO_STATUS_SUCCESS)
- error (0, 0, _("error writing output file \"%s\": %s"),
+ error (0, 0, _("error writing output file `%s': %s"),
file_name, cairo_status_to_string (status));
cairo_destroy (cr);
if (csv->file == NULL)
{
- error (0, errno, _("error opening output file \"%s\""), csv->file_name);
+ error (0, errno, _("error opening output file `%s'"), csv->file_name);
output_driver_destroy (d);
return NULL;
}
device_type = SETTINGS_DEVICE_LISTING;
else
{
+ /* TRANSLATORS: Don't translate the words `terminal' or `listing'. */
error (0, 0, _("%s is not a valid device type (the choices are "
- "\"terminal\" and \"listing\")"), device_string);
+ "`terminal' and `listing')"), device_string);
device_type = default_device_type (file_name);
}
const char *key;
STRING_MAP_FOR_EACH_KEY (key, node, options)
- error (0, 0, _("%s: unknown option \"%s\""), file_name, key);
+ error (0, 0, _("%s: unknown option `%s'"), file_name, key);
}
string_map_clear (options);
html->file = fn_open (html->file_name, "w");
if (html->file == NULL)
{
- error (0, errno, _("error opening output file \"%s\""), html->file_name);
+ error (0, errno, _("error opening output file `%s'"), html->file_name);
goto error;
}
fputs ("<META http-equiv=\"Content-Style-Type\" content=\"text/css\">\n",
html->file);
fputs ("<META HTTP-EQUIV=\"Content-Type\" "
- "CONTENT=\"text/html; charset=ISO-8859-1\">\n", html->file);
- fputs ("<STYLE>\n"
+ "CONTENT=\"text/html; charset=utf-8\">\n", html->file);
+ fputs ("<STYLE TYPE=\"text/css\">\n"
"<!--\n"
"body {\n"
" background: white;\n"
html->chart_cnt++);
if (file_name != NULL)
{
- fprintf (html->file, "<IMG SRC=\"%s\"/>", file_name);
+ const char *title = chart_item_get_title (chart_item);
+ fprintf (html->file, "<IMG SRC=\"%s\" ALT=\"Chart: %s\">",
+ file_name, title ? title : _("No description"));
free (file_name);
}
}
alignment = cell.options & TAB_ALIGNMENT;
if (alignment != TAB_LEFT)
- fprintf (html->file, " ALIGN=%s",
+ fprintf (html->file, " ALIGN=\"%s\"",
alignment == TAB_RIGHT ? "RIGHT" : "CENTER");
colspan = table_cell_colspan (&cell);
if (colspan > 1)
- fprintf (html->file, " COLSPAN=%d", colspan);
+ fprintf (html->file, " COLSPAN=\"%d\"", colspan);
rowspan = table_cell_rowspan (&cell);
if (rowspan > 1)
- fprintf (html->file, " ROWSPAN=%d", rowspan);
+ fprintf (html->file, " ROWSPAN=\"%d\"", rowspan);
/* Cell borders. */
n_borders = 0;
if (journal != NULL && journal->file != NULL)
{
if (fwriteerror (journal->file))
- error (0, errno, _("error writing output file \"%s\""),
+ error (0, errno, _("error writing output file `%s'"),
journal_file_name);
journal->file = NULL;
}
j->file = fopen (journal_file_name, "a");
if (j->file == NULL)
{
- error (0, errno, _("error opening output file \"%s\""),
+ error (0, errno, _("error opening output file `%s'"),
journal_file_name);
output_driver_destroy (&j->driver);
return;
file = fopen (file_name, "r");
if (file == NULL)
{
- error (0, errno, _("error opening input file \"%s\""), file_name);
+ error (0, errno, _("error opening input file `%s'"), file_name);
return false;
}
if (!ds_read_config_line (&line, &line_number, file))
{
if (ferror (file))
- error (0, errno, _("error reading file \"%s\""), file_name);
+ error (0, errno, _("error reading file `%s'"), file_name);
break;
}
fclose (file);
ds_destroy (&line);
- error (0, 0, _("paper size file \"%s\" does not state a paper size"),
+ error (0, 0, _("paper size file `%s' does not state a paper size"),
file_name);
return false;
}
file = fn_open (file_name, "w");
if (file == NULL)
{
- error (0, errno, _("error opening output file \"%s\""), file_name);
+ error (0, errno, _("error opening output file `%s'"), file_name);
return NULL;
}
#include "gettext.h"
#define _(msgid) gettext (msgid)
-#define _xml(X) (const xmlChar *)(X)
+#define _xml(X) (CHAR_CAST (const xmlChar *, X))
struct odt_driver
{
return false;
else
{
- error (0, 0, _("%s: \"%s\" is \"%s\" but a Boolean value is required"),
+ error (0, 0, _("%s: `%s' is `%s' but a Boolean value is required"),
driver_name, value, key);
return -1;
}
O has no user-specified value, then O's default value is treated the same
way. If the default value still does not match, parse_enum() returns 0.
- Example: parse_enum (o, "a", 1, "b", 2, (char *) NULL) returns 1 if O's
+ Example: parse_enum (o, "a", 1, "b", 2, NULL_SENTINEL) returns 1 if O's
value if "a", 2 if O's value is "b".
Destroys O. */
ds_put_format (&choices, "`%s'", s);
}
- error (0, 0, _("%s: \"%s\" is \"%s\" but one of the following "
+ error (0, 0, _("%s: `%s' is `%s' but one of the following "
"is required: %s"),
o->driver_name, o->name, o->value, ds_cstr (&choices));
ds_destroy (&choices);
else if (max_value == INT_MAX)
{
if (min_value == 0)
- error (0, 0, _("%s: \"%s\" is \"%s\" but a nonnegative integer "
+ error (0, 0, _("%s: `%s' is `%s' but a nonnegative integer "
"is required"),
o->driver_name, o->name, o->value);
else if (min_value == 1)
- error (0, 0, _("%s: \"%s\" is \"%s\" but a positive integer is "
+ error (0, 0, _("%s: `%s' is `%s' but a positive integer is "
"required"), o->driver_name, o->name, o->value);
else if (min_value == INT_MIN)
- error (0, 0, _("%s: \"%s\" is \"%s\" but an integer is required"),
+ error (0, 0, _("%s: `%s' is `%s' but an integer is required"),
o->driver_name, o->name, o->value);
else
- error (0, 0, _("%s: \"%s\" is \"%s\" but an integer greater "
+ error (0, 0, _("%s: `%s' is `%s' but an integer greater "
"than %d is required"),
o->driver_name, o->name, o->value, min_value - 1);
}
else
- error (0, 0, _("%s: \"%s\" is \"%s\" but an integer between %d and "
+ error (0, 0, _("%s: `%s' is `%s' but an integer between %d and "
"%d is required"),
o->driver_name, o->name, o->value, min_value, max_value);
}
chart_file_name = xstrdup (o->value);
else
{
- error (0, 0, _("%s: \"%s\" is \"%s\" but a file name that contains "
- "\"#\" is required."),
+ error (0, 0, _("%s: `%s' is `%s' but a file name that contains "
+ "`#' is required."),
o->name, o->value, o->driver_name);
chart_file_name = default_chart_file_name (o->default_value);
}
{
if (page != NULL && --page->ref_cnt == 0)
{
+ int i;
struct render_overflow *overflow, *next;
HMAP_FOR_EACH_SAFE (overflow, next, struct render_overflow, node,
hmap_destroy (&page->overflows);
table_unref (page->table);
- free (page->cp[H]);
- free (page->cp[V]);
+
+ for (i = 0; i < TABLE_N_AXES; ++i)
+ {
+ free (page->join_crossing[i]);
+ free (page->cp[i]);
+ }
+
free (page);
}
}
if (z0 == page->h[a][0] && p0 == 0
&& z1 == page->n[a] - page->h[a][1] && p1 == 0)
{
- struct render_page *page_rw = (struct render_page *) page;
+ struct render_page *page_rw = CONST_CAST (struct render_page *, page);
page_rw->ref_cnt++;
return page_rw;
}
return of;
}
-
gtk_list_store_append (list, &iter);
gtk_list_store_set (list, &iter,
- COMBO_MODEL_COL_DESC, s,
+ COMBO_MODEL_COL_DESC, gettext (s),
COMBO_MODEL_COL_SYNTAX, af->name,
COMBO_MODEL_COL_SRC_VARS, af->src_vars,
COMBO_MODEL_COL_ARITY, af->n_args,
src/ui/gui/psppire.ui \
src/ui/gui/rank.ui \
src/ui/gui/sort.ui \
+ src/ui/gui/split-file.ui \
src/ui/gui/recode.ui \
src/ui/gui/regression.ui \
src/ui/gui/reliability.ui \
</row>
</data>
</object>
+ <object class="GtkLabel" id="bug-workaround1">
+ <property name="sensitive">False</property>
+ <property name="label" translatable="yes">Principal Components Analysis</property>
+ </object>
+ <object class="GtkLabel" id="bug-workaround2">
+ <property name="sensitive">False</property>
+ <property name="label" translatable="yes">Principal Axis Factoring</property>
+ </object>
<object class="PsppireDialog" id="factor-dialog">
<property name="title" translatable="yes">Factor Analysis</property>
<property name="modal">True</property>
}
value_init (val, width);
- msg_disable ();
- data_in (ss_cstr (text), UTF8, format->type, 0, 0, 0,
- dict->dict,
- val, width);
- msg_enable ();
+ free (data_in (ss_cstr (text), UTF8, format->type, val, width,
+ dict_get_encoding (dict->dict)));
return val;
}
o = gtk_builder_get_object (builder, name);
if ( !o )
- g_critical ("Object \"%s\" could not be found\n", name);
+ g_critical ("Object `%s' could not be found\n", name);
else if ( ! g_type_is_a (G_OBJECT_TYPE (o), type))
{
- g_critical ("Object \"%s\" was expected to have type %s, but in fact has type %s",
+ g_critical ("Object `%s' was expected to have type %s, but in fact has type %s",
name, g_type_name (type), G_OBJECT_TYPE_NAME (o));
}
#include "libpspp/argv-parser.h"
#include "libpspp/assertion.h"
+#include "libpspp/cast.h"
#include "libpspp/getl.h"
#include "libpspp/version.h"
#include "libpspp/copyleft.h"
case OPT_VERSION:
version_etc (stdout, "psppire", PACKAGE_NAME, PACKAGE_VERSION,
"Ben Pfaff", "John Darrington", "Jason Stover",
- (char *) NULL);
+ NULL_SENTINEL);
exit (EXIT_SUCCESS);
case OPT_NO_SPLASH:
/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2006, 2008, 2009 Free Software Foundation
+ Copyright (C) 2006, 2008, 2009, 2010 Free Software Foundation
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
g_return_val_if_fail (ds, FALSE);
g_return_val_if_fail (ds->datasheet, FALSE);
- case_ref (cc);
+ cc = case_ref (cc);
result = datasheet_insert_rows (ds->datasheet, posn, &cc, 1);
if ( result )
FALSE);
value_init (&value, width);
ok = (datasheet_get_value (ds->datasheet, casenum, idx, &value)
- && data_in (input, UTF8, fmt->type, 0, 0, 0,
- dict->dict, &value, width)
+ && data_in_msg (input, UTF8, fmt->type, &value, width,
+ dict_get_encoding (dict->dict))
&& datasheet_put_value (ds->datasheet, casenum, idx, &value));
value_destroy (&value, width);
g_free (native_file_name);
- sss = create_syntax_string_source ("GET FILE=%s.",
+ sss = create_syntax_format_source ("GET FILE=%s.",
ds_cstr (&filename));
ds_destroy (&filename);
if ( de->save_as_portable )
{
- sss = create_syntax_string_source ("EXPORT OUTFILE=%s.",
+ sss = create_syntax_format_source ("EXPORT OUTFILE=%s.",
ds_cstr (&filename));
}
else
{
- sss = create_syntax_string_source ("SAVE OUTFILE=%s.",
+ sss = create_syntax_format_source ("SAVE OUTFILE=%s.",
ds_cstr (&filename));
}
g_free (native_file_name);
- sss = create_syntax_string_source ("SYSFILE INFO %s.",
+ sss = create_syntax_format_source ("SYSFILE INFO %s.",
ds_cstr (&filename));
execute_syntax (sss);
}
psppire_data_window_new (void)
{
return GTK_WIDGET (g_object_new (psppire_data_window_get_type (),
+ /* TRANSLATORS: This will form a filename. Please avoid whitespace. */
+ "filename", _("PSPP-data"),
"description", _("Data Editor"),
NULL));
}
#include "ui/gui/psppire-marshal.h"
#include "ui/gui/psppire-var-ptr.h"
+#include <gettext.h>
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
enum {
BACKEND_CHANGED,
gint d = 0;
static gchar name[10];
- while (g_snprintf (name, 10, "VAR%05d",d++),
+ /* TRANSLATORS: This string must be a valid variable name. That means:
+ - The string must be at most 64 bytes (not characters) long.
+ - The string may not contain whitespace.
+ - The first character may not be '$'
+ - The first character may not be a digit
+ - The final charactor may not be '.' or '_'
+ */
+ while (g_snprintf (name, 10, _("VAR%05d"), d++),
psppire_dict_lookup_var (dict, name))
;
{
const struct variable *v = psppire_dict_get_variable (dict, i);
int di = var_get_dict_index (v);
- g_print ("\"%s\" idx=%d, fv=%d\n",
+ g_print ("`%s' idx=%d, fv=%d\n",
var_get_name(v),
di,
var_get_case_index(v));
viewer->items = NULL;
viewer->n_items = viewer->allocated_items = 0;
- g_object_unref (viewer->print_settings);
+ if (viewer->print_settings != NULL)
+ g_object_unref (viewer->print_settings);
/* Chain up to the parent class */
G_OBJECT_CLASS (parent_class)->dispose (obj);
psppire_output_window_new (void)
{
return GTK_WIDGET (g_object_new (psppire_output_window_get_type (),
- "filename", "Output",
+ /* TRANSLATORS: This will form a filename. Please avoid whitespace. */
+ "filename", _("Output"),
"description", _("Output Viewer"),
NULL));
}
}
+static void
+psppire_syntax_window_dispose (GObject *obj)
+{
+ PsppireSyntaxWindow *sw = (PsppireSyntaxWindow *)obj;
+
+ GtkClipboard *clip_selection;
+ GtkClipboard *clip_primary;
+
+ if (sw->dispose_has_run)
+ return;
+
+ clip_selection = gtk_widget_get_clipboard (GTK_WIDGET (sw), GDK_SELECTION_CLIPBOARD);
+ clip_primary = gtk_widget_get_clipboard (GTK_WIDGET (sw), GDK_SELECTION_PRIMARY);
+
+ g_signal_handler_disconnect (clip_primary, sw->sel_handler);
+
+ g_signal_handler_disconnect (clip_selection, sw->ps_handler);
+
+ /* Make sure dispose does not run twice. */
+ sw->dispose_has_run = TRUE;
+
+ /* Chain up to the parent class */
+ G_OBJECT_CLASS (parent_class)->dispose (obj);
+}
+
+
+
static void
psppire_syntax_window_class_init (PsppireSyntaxWindowClass *class)
{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (class);
+
GtkSourceLanguageManager *lm = gtk_source_language_manager_get_default ();
const gchar * const *existing_paths = gtk_source_language_manager_get_search_path (lm);
parent_class = g_type_class_peek_parent (class);
g_strfreev (new_paths);
+
+ parent_class = g_type_class_peek_parent (class);
+
+ gobject_class->dispose = psppire_syntax_window_dispose;
}
sw);
}
+
+/* Check to see if CLIP holds a target which we know how to paste,
+ and set the sensitivity of the Paste action accordingly.
+ */
static void
-on_owner_change (GtkClipboard *clip, GdkEventOwnerChange *event, gpointer data)
+set_paste_sensitivity (GtkClipboard *clip, GdkEventOwnerChange *event, gpointer data)
{
gint i;
gboolean compatible_target = FALSE;
if ( result )
{
char *fn = g_filename_display_name (filename);
- gchar *msg = g_strdup_printf (_("Saved file \"%s\""), fn);
+ gchar *msg = g_strdup_printf (_("Saved file `%s'"), fn);
g_free (fn);
gtk_statusbar_push (GTK_STATUSBAR (se->sb), se->text_context, msg);
gtk_text_buffer_set_modified (buffer, FALSE);
GtkClipboard *clip_selection = gtk_widget_get_clipboard (GTK_WIDGET (window), GDK_SELECTION_CLIPBOARD);
GtkClipboard *clip_primary = gtk_widget_get_clipboard (GTK_WIDGET (window), GDK_SELECTION_PRIMARY);
+
window->print_settings = NULL;
window->undo_menuitem = get_action_assert (xml, "edit_undo");
window->redo_menuitem = get_action_assert (xml, "edit_redo");
"highlight-current-line", TRUE,
NULL);
- g_signal_connect_swapped (clip_primary, "owner-change", G_CALLBACK (selection_changed), window);
-
- g_signal_connect (clip_selection, "owner-change", G_CALLBACK (on_owner_change), window);
-
window->cliptext = NULL;
+ window->dispose_has_run = FALSE;
window->edit_delete = get_action_assert (xml, "edit_delete");
window->edit_copy = get_action_assert (xml, "edit_copy");
window->sb = get_widget_assert (xml, "statusbar2");
window->text_context = gtk_statusbar_get_context_id (GTK_STATUSBAR (window->sb), "Text Context");
- g_signal_connect (window->buffer, "changed", G_CALLBACK (on_text_changed), window);
+ g_signal_connect (window->buffer, "changed",
+ G_CALLBACK (on_text_changed), window);
- g_signal_connect (window->buffer, "modified-changed",
+ g_signal_connect (window->buffer, "modified-changed",
G_CALLBACK (on_modified_changed), window);
g_signal_connect_swapped (get_action_assert (xml, "file_print"), "activate",
undo_redo_update (window);
+ window->sel_handler = g_signal_connect_swapped (clip_primary, "owner-change",
+ G_CALLBACK (selection_changed), window);
+
+ window->ps_handler = g_signal_connect (clip_selection, "owner-change",
+ G_CALLBACK (set_paste_sensitivity), window);
+
connect_help (xml);
gtk_container_add (GTK_CONTAINER (window), box);
g_object_ref (window->sb);
-
gtk_box_pack_start (GTK_BOX (box), menubar, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (box), sw, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (box), window->sb, FALSE, TRUE, 0);
psppire_syntax_window_new (void)
{
return GTK_WIDGET (g_object_new (psppire_syntax_window_get_type (),
- "filename", "Syntax",
+ /* TRANSLATORS: This will form a filename. Please avoid whitespace. */
+ "filename", _("Syntax"),
"description", _("Syntax Editor"),
NULL));
}
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
- _("Cannot load syntax file '%s'"),
+ _("Cannot load syntax file `%s'"),
fn);
g_free (fn);
iface->load = syntax_load;
}
+
\f
static void
GtkAction *edit_copy;
GtkAction *edit_delete;
GtkAction *edit_paste;
+
+ gulong ps_handler;
+ gulong sel_handler;
+
+ gboolean dispose_has_run;
};
struct _PsppireSyntaxWindowClass
psppire_var_store_init (PsppireVarStore *var_store)
{
if ( ! gdk_color_parse (DISABLED_COLOR, &var_store->disabled))
- g_critical ("Could not parse color \"%s\"", DISABLED_COLOR);
+ g_critical ("Could not parse color `%s'", DISABLED_COLOR);
var_store->dictionary = NULL;
var_store->format_type = PSPPIRE_VAR_STORE_OUTPUT_FORMATS;
default:
{
char str[FMT_STRING_LEN_MAX + 1];
- g_warning ("Unknown format: \"%s\"\n",
+ g_warning ("Unknown format: `%s'\n",
fmt_to_string (write_spec, str));
}
break;
{
gchar *const vstr = value_to_text (vl->value, dict, *write_spec);
- return g_strdup_printf ( "{%s,\"%s\"}_", vstr, val_lab_get_label (vl));
+ return g_strdup_printf (_("{%s,`%s'}_"), vstr, val_lab_get_label (vl));
}
}
}
if ( G_VALUE_TYPE (&value) == PSPPIRE_VAR_PTR_TYPE)
var = g_value_get_boxed (&value);
else
- g_critical ("Unsupported type \"%s\", in variable name treeview.",
+ g_critical ("Unsupported type `%s', in variable name treeview.",
G_VALUE_TYPE_NAME (&value));
g_value_unset (&value);
g_param_spec_string ("filename",
"File name",
"The name of the file associated with this window, if any",
- "Untitled",
+ /* TRANSLATORS: This will form a filename. Please avoid whitespace. */
+ _("Untitled"),
G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
g_unichar_to_utf8 (0x2014, mdash);
GTK_DIALOG_MODAL,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_NONE,
- _("Save the changes to \"%s\" before closing?"),
+ _("Save the changes to `%s' before closing?"),
fn);
g_free (fn);
preregister_widgets ();
gsl_set_error_handler_off ();
- settings_init (&viewer_width, &viewer_length);
+ settings_init ();
fh_init ();
the_dataset = create_dataset ();
utf8 = g_locale_to_utf8 (arg, -1, NULL, &written, &err);
if ( NULL == utf8)
{
- g_warning ("Cannot convert filename from local encoding \"%s\" to UTF-8: %s",
+ g_warning ("Cannot convert filename from local encoding `%s' to UTF-8: %s",
local_encoding,
err->message);
g_clear_error (&err);
</object>
</child>
</object>
- <object class="PsppireDialog" id="split-file-dialog">
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="title" translatable="yes">Split File</property>
- <property name="modal">True</property>
- <child internal-child="hbox">
- <object class="GtkHBox" id="dialog-hbox3">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="spacing">2</property>
- <child>
- <object class="GtkVBox" id="vbox6">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkHBox" id="hbox5">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <child>
- <object class="GtkFrame" id="frame5">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">in</property>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow4">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="hscrollbar_policy">never</property>
- <property name="vscrollbar_policy">automatic</property>
- <child>
- <object class="PsppireDictView" id="split-file-dict-treeview">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="headers_visible">False</property>
- <property name="fixed_height_mode">True</property>
- </object>
- </child>
- </object>
- </child>
- <child type="label_item">
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="vbox7">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkVButtonBox" id="vbuttonbox2">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="layout_style">spread</property>
- <child>
- <object class="GtkRadioButton" id="split-radiobutton0">
- <property name="label" translatable="yes">Analyze all cases. Do not create groups.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="split-radiobutton1">
- <property name="label" translatable="yes">Compare groups.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="draw_indicator">True</property>
- <property name="group">split-radiobutton0</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="split-radiobutton2">
- <property name="label" translatable="yes">Organize output by groups.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="draw_indicator">True</property>
- <property name="group">split-radiobutton0</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox6">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <child>
- <object class="GtkAlignment" id="alignment2">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="yscale">0.5</property>
- <child>
- <object class="PsppireSelector" id="split-file-selector">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="border_width">5</property>
- <property name="source_widget">split-file-dict-treeview</property>
- <property name="dest_widget">split-file-grouping-vars</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="padding">18</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="vbox8">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkLabel" id="label5">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Groups based on:</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkFrame" id="frame4">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="label_xalign">0</property>
- <property name="label_yalign">0</property>
- <property name="shadow_type">in</property>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow5">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="hscrollbar_policy">never</property>
- <property name="vscrollbar_policy">automatic</property>
- <child>
- <object class="PsppireVarView" id="split-file-grouping-vars">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="headers_visible">False</property>
- <property name="fixed_height_mode">True</property>
- </object>
- </child>
- </object>
- </child>
- <child type="label_item">
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkVButtonBox" id="vbuttonbox1">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="homogeneous">True</property>
- <property name="layout_style">spread</property>
- <child>
- <object class="GtkRadioButton" id="split-radiobutton3">
- <property name="label" translatable="yes">Sort the file by grouping variables.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="split-radiobutton4">
- <property name="label" translatable="yes">File is already sorted.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">split-radiobutton3</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="padding">5</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkHSeparator" id="hseparator1">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox7">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <child>
- <object class="GtkLabel" id="label6">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Current Status : </property>
- </object>
- <packing>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label7">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Analysis by groups is off</property>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="PsppireVButtonBox" id="psppire-buttonbox3">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="border_width">5</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="pack_type">end</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
<object class="PsppireDialog" id="comments-dialog">
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="title" translatable="yes">Data File Comments</property>
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Convert numeric strings to numbers ('5' -> 5)</property>
+ <property name="label" translatable="yes">Convert numeric strings to numbers (`5' -> 5)</property>
</object>
<packing>
<property name="left_attach">1</property>
"range-dialog-last");
- gtk_spin_button_set_range (GTK_SPIN_BUTTON (last), 1, n_cases);
-
- gtk_spin_button_set_range (GTK_SPIN_BUTTON (first), 1, n_cases);
+ gtk_spin_button_set_range (GTK_SPIN_BUTTON (last), 1, n_cases);
+ gtk_spin_button_set_range (GTK_SPIN_BUTTON (first), 1, n_cases);
gtk_window_set_transient_for (GTK_WINDOW (dialog),
GTK_WINDOW (parent_dialog));
static gchar *
-generate_syntax (const struct select_cases_dialog *scd)
+generate_syntax_filter (const struct select_cases_dialog *scd)
+{
+ gchar *text = NULL;
+ GString *string = g_string_new ("");
+
+ const gchar filter[]="filter_$";
+ const gchar key[]="case_$";
+
+ if ( gtk_toggle_button_get_active
+ (GTK_TOGGLE_BUTTON (get_widget_assert (scd->xml,
+ "radiobutton-range"))))
+ {
+ GtkSpinButton *first =
+ GTK_SPIN_BUTTON (get_widget_assert (scd->xml,
+ "range-dialog-first"));
+
+ GtkSpinButton *last =
+ GTK_SPIN_BUTTON (get_widget_assert (scd->xml,
+ "range-dialog-last"));
+
+ g_string_append_printf (string,
+ "COMPUTE filter_$ = ($CASENUM >= %ld "
+ "AND $CASENUM <= %ld).\n",
+ (long) gtk_spin_button_get_value (first),
+ (long) gtk_spin_button_get_value (last)
+ );
+
+ g_string_append (string, "EXECUTE.\n");
+ }
+ else if ( gtk_toggle_button_get_active
+ (GTK_TOGGLE_BUTTON (get_widget_assert (scd->xml,
+ "radiobutton-sample"))))
+ {
+ GtkWidget *random_sample =
+ get_widget_assert (scd->xml,
+ "radiobutton-sample-percent");
+
+ if ( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (random_sample)))
+ {
+ const double percentage =
+ gtk_spin_button_get_value (GTK_SPIN_BUTTON (scd->spinbutton));
+
+ g_string_append_printf (string,
+ "COMPUTE %s = RV.UNIFORM (0,1) < %g.\n",
+ filter,
+ percentage / 100.0 );
+ }
+ else
+ {
+ const gint n_cases =
+ gtk_spin_button_get_value (GTK_SPIN_BUTTON (scd->spinbutton1));
+ const gint from_n_cases =
+ gtk_spin_button_get_value (GTK_SPIN_BUTTON (scd->spinbutton2));
+
+
+ const gchar ranvar[]="rv_$";
+
+ g_string_append_printf (string,
+ "COMPUTE %s = $CASENUM.\n", key);
+
+ g_string_append_printf (string,
+ "COMPUTE %s = %s > %d.\n",
+ filter, key, from_n_cases);
+
+ g_string_append_printf (string,
+ "COMPUTE %s = RV.UNIFORM (0, 1).\n",
+ ranvar);
+
+ g_string_append_printf (string,
+ "SORT BY %s, %s.\n",
+ filter, ranvar);
+
+ g_string_append (string, "EXECUTE.\n");
+
+
+ g_string_append_printf (string,
+ "COMPUTE %s = $CASENUM.\n",
+ filter );
+
+ g_string_append_printf (string,
+ "COMPUTE %s = %s <= %d\n",
+ filter,
+ filter,
+ n_cases );
+
+ g_string_append (string, "EXECUTE.\n");
+
+
+ g_string_append_printf (string,
+ "SORT BY %s.\n",
+ key);
+
+ g_string_append_printf (string,
+ "DELETE VARIABLES %s, %s.\n",
+ key, ranvar);
+
+ }
+
+ g_string_append (string, "EXECUTE.\n");
+
+ }
+
+
+ g_string_append_printf (string, "FILTER BY %s.\n", filter);
+
+ text = string->str;
+ g_string_free (string, FALSE);
+ return text;
+}
+
+static gchar *
+generate_syntax_delete (const struct select_cases_dialog *scd)
{
gchar *text = NULL;
GString *string = NULL;
g_string_append (string, "\n");
+
+ text = string->str;
+ g_string_free (string, FALSE);
+ return text;
+}
+
+
+static gchar *
+generate_syntax (const struct select_cases_dialog *scd)
+{
+ /* In the simple case, all we need to do is cancel any existing filter */
+ if ( gtk_toggle_button_get_active
+ (GTK_TOGGLE_BUTTON (get_widget_assert (scd->xml,
+ "radiobutton-all"))))
+ {
+ return g_strdup ("FILTER OFF.\n");
+ }
+
+
/* Are we filtering or deleting ? */
if ( gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON (get_widget_assert (scd->xml,
"radiobutton-delete"))))
{
- g_string_append (string, "EXECUTE.\n");
-
- if ( gtk_toggle_button_get_active
- (GTK_TOGGLE_BUTTON (get_widget_assert (scd->xml,
- "radiobutton-range"))))
- {
- g_string_append (string, "DELETE VARIABLES filter_$.\n");
- }
+ return generate_syntax_delete (scd);
+ }
+ else
+ {
+ return generate_syntax_filter (scd);
}
-
- text = string->str;
- g_string_free (string, FALSE);
- return text;
}
+
+
+
/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2007 Free Software Foundation
+ Copyright (C) 2007, 2010 Free Software Foundation
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
upon which the file should be split */
GtkTreeView *tv;
-
PsppireSelector *selector;
};
gchar *text;
GtkWidget *off = get_widget_assert (sfd->xml, "split-radiobutton0");
- GtkWidget *vars =
- get_widget_assert (sfd->xml, "split-file-grouping-vars");
-
GString *string = g_string_new ("SPLIT FILE OFF.");
if ( ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (off)))
GString * varlist = g_string_sized_new (80);
GtkWidget *sort = get_widget_assert (sfd->xml, "split-radiobutton3");
GtkWidget *layered = get_widget_assert (sfd->xml, "split-radiobutton1");
- gint n_vars = psppire_var_view_append_names (PSPPIRE_VAR_VIEW (vars), 0, varlist);
+ gint n_vars = psppire_var_view_append_names (PSPPIRE_VAR_VIEW (sfd->tv), 0, varlist);
if ( n_vars > 0 )
{
gint n_vars = dict_get_split_cnt (d->dict->dict);
-
gtk_list_store_clear (GTK_LIST_STORE (liststore));
if ( n_vars == 0 )
for (i = 0 ; i < n_vars; ++i )
{
- gint idx = var_get_dict_index (vars[i]);
-
gtk_list_store_append (GTK_LIST_STORE (liststore), &iter);
- gtk_list_store_set (GTK_LIST_STORE (liststore), &iter, 0, idx, -1);
+
+ gtk_list_store_set (GTK_LIST_STORE (liststore), &iter,
+ 0, vars[i],
+ -1);
}
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(on), TRUE);
GtkWidget *dialog ;
GtkWidget *source ;
- GtkWidget *dest ;
GtkWidget *selector ;
GtkWidget *on_off ;
- sfd.xml = builder_new ("psppire.ui");
+ sfd.xml = builder_new ("split-file.ui");
dialog = get_widget_assert (sfd.xml, "split-file-dialog");
source = get_widget_assert (sfd.xml, "split-file-dict-treeview");
- dest = get_widget_assert (sfd.xml, "split-file-grouping-vars");
selector = get_widget_assert (sfd.xml, "split-file-selector");
on_off = get_widget_assert (sfd.xml, "split-radiobutton0");
+ sfd.tv = GTK_TREE_VIEW (get_widget_assert (sfd.xml, "split-file-grouping-vars"));
+
g_object_get (de->data_editor, "var-store", &vs, NULL);
g_object_get (vs, "dictionary", &sfd.dict, NULL);
- sfd.tv = GTK_TREE_VIEW (dest);
- sfd.selector = PSPPIRE_SELECTOR (
- get_widget_assert (sfd.xml, "split-file-selector"));
+
+ sfd.selector = PSPPIRE_SELECTOR (get_widget_assert (sfd.xml, "split-file-selector"));
g_object_set (source, "model", sfd.dict, NULL);
--- /dev/null
+<?xml version="1.0"?>
+<interface>
+ <requires lib="psppire" version="2054.17080"/>
+ <!-- interface-requires gtk+ 2.12 -->
+ <!-- interface-naming-policy project-wide -->
+ <object class="PsppireDialog" id="split-file-dialog">
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="title" translatable="yes">Split File</property>
+ <property name="modal">True</property>
+ <child internal-child="hbox">
+ <object class="GtkHBox" id="dialog-hbox3">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkVBox" id="vbox6">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkHBox" id="hbox5">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <object class="GtkFrame" id="frame5">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow4">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="hscrollbar_policy">never</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <child>
+ <object class="PsppireDictView" id="split-file-dict-treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="headers_visible">False</property>
+ <property name="fixed_height_mode">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox7">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkVButtonBox" id="vbuttonbox2">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="layout_style">spread</property>
+ <child>
+ <object class="GtkRadioButton" id="split-radiobutton0">
+ <property name="label" translatable="yes">Analyze all cases. Do not create groups.</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="split-radiobutton1">
+ <property name="label" translatable="yes">Compare groups.</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">split-radiobutton0</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="split-radiobutton2">
+ <property name="label" translatable="yes">Organize output by groups.</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">split-radiobutton0</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox6">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="yscale">0.5</property>
+ <child>
+ <object class="PsppireSelector" id="split-file-selector">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="border_width">5</property>
+ <property name="source_widget">split-file-dict-treeview</property>
+ <property name="dest_widget">split-file-grouping-vars</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">18</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox8">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Groups based on:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame4">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow5">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="hscrollbar_policy">never</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <child>
+ <object class="PsppireVarView" id="split-file-grouping-vars">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="headers_visible">False</property>
+ <property name="fixed_height_mode">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVButtonBox" id="vbuttonbox1">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="homogeneous">True</property>
+ <property name="layout_style">spread</property>
+ <child>
+ <object class="GtkRadioButton" id="split-radiobutton3">
+ <property name="label" translatable="yes">Sort the file by grouping variables.</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="split-radiobutton4">
+ <property name="label" translatable="yes">File is already sorted.</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">split-radiobutton3</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator1">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox7">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Current Status : </property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Analysis by groups is off</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="PsppireVButtonBox" id="psppire-buttonbox3">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="border_width">5</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
stream = fopen (file->file_name, "r");
if (stream == NULL)
{
- msg (ME, _("Could not open \"%s\": %s"),
+ msg (ME, _("Could not open `%s': %s"),
file->file_name, strerror (errno));
return false;
}
if (feof (stream))
break;
else if (ferror (stream))
- msg (ME, _("Error reading \"%s\": %s"),
+ msg (ME, _("Error reading `%s': %s"),
file->file_name, strerror (errno));
else
- msg (ME, _("Failed to read \"%s\", because it contains a line "
+ msg (ME, _("Failed to read `%s', because it contains a line "
"over %d bytes long and therefore appears not to be "
"a text file."),
file->file_name, MAX_LINE_LEN);
if (file->line_cnt == 0)
{
- msg (ME, _("\"%s\" is empty."), file->file_name);
+ msg (ME, _("`%s' is empty."), file->file_name);
fclose (stream);
destroy_file (ia);
return false;
tooltip = NULL;
if (field.string != NULL)
{
- msg_disable ();
+ char *error;
- if (!data_in (field, LEGACY_NATIVE, in->type, 0, 0, 0,
- ia->formats.dict,
- &val, var_get_width (var)))
+ error = data_in (field, LEGACY_NATIVE, in->type, &val,
+ var_get_width (var),
+ dict_get_encoding (ia->formats.dict));
+ if (error != NULL)
{
- char fmt_string[FMT_STRING_LEN_MAX + 1];
- fmt_to_string (in, fmt_string);
- tooltip = xasprintf (_("Field content \"%.*s\" cannot be parsed in "
- "format %s."),
+ tooltip = xasprintf (_("Cannot parse field content `%.*s' as "
+ "format %s: %s"),
(int) field.length, field.string,
- fmt_string);
+ fmt_name (in->type), error);
+ free (error);
}
- msg_enable ();
}
else
{
#include "psppire-var-store.h"
#include <libpspp/i18n.h>
+#include <gettext.h>
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
struct val_labs_dialog
{
GtkWidget *window;
value_to_text (vl->value, dialog->dict,
*var_get_write_format (dialog->pv));
- gchar *const text = g_strdup_printf ("%s = \"%s\"",
+ gchar *const text = g_strdup_printf (_("%s = `%s'"),
vstr, val_lab_get_label (vl));
gtk_list_store_append (list_store, &iter);
else if (!strcmp (optarg, "enhanced"))
settings_set_algorithm (ENHANCED);
else
+ /* TRANSLATORS: Leave the words `compatible' and `enhanced' in their
+ original English. */
error (1, 0,
- _("Algorithm must be either \"compatible\" or \"enhanced\"."));
+ _("Algorithm must be either `compatible' or `enhanced'."));
break;
case OPT_INCLUDE:
else if (!strcmp (optarg, "enhanced"))
settings_set_syntax (ENHANCED);
else
+ /* TRANSLATORS: Leave the words `compatible' and `enhanced' in their
+ original English. */
error (1, 0,
- _("Syntax must be either \"compatible\" or \"enhanced\"."));
+ _("Syntax must be either `compatible' or `enhanced'."));
break;
default:
/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2008 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <ctype.h>
#include <mbchar.h>
-#include <data/data-in.h>
-#include <data/data-out.h>
-#include <data/format.h>
-#include <data/value.h>
-#include <libpspp/assertion.h>
-#include <libpspp/message.h>
-#include <libpspp/str.h>
+#include "data/data-in.h"
+#include "data/data-out.h"
+#include "data/format.h"
+#include "data/value.h"
+#include "libpspp/assertion.h"
+#include "libpspp/cast.h"
+#include "libpspp/message.h"
+#include "libpspp/str.h"
/* Appends to OUTPUT a pair of hex digits for each byte in IN. */
static void
& (FMT_CAT_DATE | FMT_CAT_TIME | FMT_CAT_DATE_COMPONENT)))
{
union value v_in, v_out;
- char *s;
+ char *s, *error;
bool ok;
v_in.f = number;
s = data_out (&v_in, "FIXME", format);
- msg_disable ();
+
/* FIXME: UTF8 encoded strings will fail here */
- ok = data_in (ss_cstr (s), LEGACY_NATIVE,
- format->type, false, 0, 0, NULL, &v_out, 0);
- msg_enable ();
+ error = data_in (ss_cstr (s), LEGACY_NATIVE,
+ format->type, &v_out, 0, NULL);
+ ok = error == NULL;
+ free (error);
+
if (ok && v_out.f == number)
{
syntax_gen_string (output, ss_cstr (s));
if (width == 0)
syntax_gen_number (output, value->f, format);
else
- syntax_gen_string (output, ss_buffer (value_str (value, width), width));
+ {
+ char *s = CHAR_CAST_BUG (char *, value_str (value, width));
+ syntax_gen_string (output, ss_buffer (s, width));
+ }
}
/* Appends <low> THRU <high> to OUTPUT. If LOW is LOWEST, then
#if HAVE_IEEEFP_H
#include <ieeefp.h>
#endif
+#include <unistd.h>
#include "data/dictionary.h"
#include "data/file-handle-def.h"
#include "language/command.h"
#include "language/lexer/lexer.h"
#include "language/prompt.h"
+#include "language/syntax-file.h"
#include "libpspp/argv-parser.h"
#include "libpspp/compiler.h"
#include "libpspp/getl.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
-
-static void fpu_init (void);
-static void clean_up (void);
-
-/* If a segfault happens, issue a message to that effect and halt */
-void bug_handler(int sig);
-
-/* Handle quit/term/int signals */
-void interrupt_handler(int sig);
static struct dataset * the_dataset = NULL;
static struct lexer *the_lexer;
static struct source_stream *the_source_stream ;
+static void add_syntax_file (struct source_stream *, enum syntax_mode,
+ const char *file_name);
+static void bug_handler(int sig);
+static void fpu_init (void);
+
/* Program entry point. */
int
main (int argc, char **argv)
{
- int *view_width_p, *view_length_p;
struct terminal_opts *terminal_opts;
struct argv_parser *parser;
+ enum syntax_mode syntax_mode;
+ bool process_statrc;
set_program_name (argv[0]);
signal (SIGABRT, bug_handler);
signal (SIGSEGV, bug_handler);
signal (SIGFPE, bug_handler);
- at_fatal_signal (clean_up);
i18n_init ();
fpu_init ();
the_source_stream = create_source_stream ();
prompt_init ();
readln_initialize ();
- terminal_init (&view_width_p, &view_length_p);
- settings_init (view_width_p, view_length_p);
+ settings_init ();
+ terminal_check_size ();
random_init ();
the_dataset = create_dataset ();
parser = argv_parser_create ();
- terminal_opts = terminal_opts_init (parser, the_source_stream);
+ terminal_opts = terminal_opts_init (parser, &syntax_mode, &process_statrc);
source_init_register_argv_parser (parser, the_source_stream);
if (!argv_parser_run (parser, argc, argv))
exit (EXIT_FAILURE);
msg_ui_init (the_source_stream);
- the_lexer = lex_create (the_source_stream);
+ /* Add syntax files to source stream. */
+ if (process_statrc)
+ {
+ char *rc = fn_search_path ("rc", getl_include_path (the_source_stream));
+ if (rc != NULL)
+ {
+ add_syntax_file (the_source_stream, GETL_BATCH, rc);
+ free (rc);
+ }
+ }
+ if (optind < argc)
+ {
+ int i;
+ for (i = optind; i < argc; i++)
+ add_syntax_file (the_source_stream, syntax_mode, argv[i]);
+ }
+ else
+ add_syntax_file (the_source_stream, syntax_mode, "-");
+
+ /* Parse and execute syntax. */
+ the_lexer = lex_create (the_source_stream);
for (;;)
{
int result = cmd_parse (the_lexer, the_dataset);
}
- clean_up ();
+ destroy_dataset (the_dataset);
+
+ random_done ();
+ settings_done ();
+ fh_done ();
+ lex_destroy (the_lexer);
+ destroy_source_stream (the_source_stream);
+ prompt_done ();
+ readln_uninitialize ();
+ output_close ();
+ msg_ui_done ();
+ i18n_done ();
+
return msg_ui_any_errors ();
}
-\f
static void
fpu_init (void)
}
/* If a segfault happens, issue a message to that effect and halt */
-void
+static void
bug_handler(int sig)
{
+ /* Reset SIG to its default handling so that if it happens again we won't
+ recurse. */
+ signal (sig, SIG_DFL);
+
#if DEBUGGING
connect_debugger ();
#endif
switch (sig)
{
case SIGABRT:
- request_bug_report_and_abort("Assertion Failure/Abort");
+ request_bug_report("Assertion Failure/Abort");
+ break;
case SIGFPE:
- request_bug_report_and_abort("Floating Point Exception");
+ request_bug_report("Floating Point Exception");
+ break;
case SIGSEGV:
- request_bug_report_and_abort("Segmentation Violation");
+ request_bug_report("Segmentation Violation");
+ break;
default:
- request_bug_report_and_abort("Unknown");
+ request_bug_report("Unknown");
+ break;
}
+
+ /* Re-raise the signal so that we terminate with the correct status. */
+ raise (sig);
}
-/* Clean up PSPP in preparation for termination. */
static void
-clean_up (void)
+add_syntax_file (struct source_stream *ss, enum syntax_mode syntax_mode,
+ const char *file_name)
{
- static bool terminating = false;
- if (!terminating)
- {
- terminating = true;
-
- destroy_dataset (the_dataset);
-
- random_done ();
- settings_done ();
- fh_done ();
- lex_destroy (the_lexer);
- destroy_source_stream (the_source_stream);
- prompt_done ();
- readln_uninitialize ();
- output_close ();
- msg_ui_done ();
- i18n_done ();
- }
+ struct getl_interface *source;
+
+ source = (!strcmp (file_name, "-") && isatty (STDIN_FILENO)
+ ? create_readln_source ()
+ : create_syntax_file_source (file_name));
+ getl_append_source (ss, source, syntax_mode, ERRMODE_CONTINUE);
}
#include "terminal-opts.h"
#include <stdbool.h>
-#include <xalloc.h>
#include <stdlib.h>
-#include <unistd.h>
#include "data/settings.h"
#include "data/file-name.h"
#include "language/syntax-file.h"
#include "libpspp/argv-parser.h"
#include "libpspp/assertion.h"
+#include "libpspp/cast.h"
#include "libpspp/compiler.h"
#include "libpspp/getl.h"
#include "libpspp/llx.h"
#include "gl/progname.h"
#include "gl/version-etc.h"
#include "gl/xmemdup0.h"
+#include "gl/xalloc.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
struct terminal_opts
{
- struct source_stream *source_stream;
- enum syntax_mode syntax_mode;
+ enum syntax_mode *syntax_mode;
struct string_map options; /* Output driver options. */
bool has_output_driver;
bool has_terminal_driver;
bool has_error_file;
- bool process_statrc;
+ bool *process_statrc;
};
enum
break;
case OPT_INTERACTIVE:
- to->syntax_mode = GETL_INTERACTIVE;
+ *to->syntax_mode = GETL_INTERACTIVE;
break;
case OPT_NO_STATRC:
- to->process_statrc = false;
+ *to->process_statrc = false;
break;
case OPT_HELP:
case OPT_VERSION:
version_etc (stdout, "pspp", PACKAGE_NAME, PACKAGE_VERSION,
"Ben Pfaff", "John Darrington", "Jason Stover",
- (char *) NULL);
+ NULL_SENTINEL);
exit (EXIT_SUCCESS);
default:
}
struct terminal_opts *
-terminal_opts_init (struct argv_parser *ap, struct source_stream *ss)
+terminal_opts_init (struct argv_parser *ap,
+ enum syntax_mode *syntax_mode, bool *process_statrc)
{
struct terminal_opts *to;
+ *syntax_mode = GETL_BATCH;
+ *process_statrc = true;
+
to = xzalloc (sizeof *to);
- to->source_stream = ss;
- to->syntax_mode = GETL_BATCH;
+ to->syntax_mode = syntax_mode;
string_map_init (&to->options);
to->has_output_driver = false;
to->has_error_file = false;
- to->process_statrc = true;
+ to->process_statrc = process_statrc;
argv_parser_add_options (ap, terminal_argv_options, N_TERMINAL_OPTIONS,
terminal_option_callback, to);
return to;
}
-static void
-add_syntax_file (struct terminal_opts *to, const char *file_name)
-{
- if (!strcmp (file_name, "-") && isatty (STDIN_FILENO))
- getl_append_source (to->source_stream, create_readln_source (),
- GETL_INTERACTIVE, ERRMODE_CONTINUE);
- else
- getl_append_source (to->source_stream,
- create_syntax_file_source (file_name),
- to->syntax_mode, ERRMODE_CONTINUE);
-}
-
void
terminal_opts_done (struct terminal_opts *to, int argc, char *argv[])
{
- if (to->process_statrc)
- {
- char *rc = fn_search_path ("rc", getl_include_path (to->source_stream));
- if (rc != NULL)
- {
- getl_append_source (to->source_stream,
- create_syntax_file_source (rc), GETL_BATCH,
- ERRMODE_CONTINUE);
- free (rc);
- }
- }
-
- if (optind < argc)
- {
- int i;
-
- for (i = optind; i < argc; i++)
- add_syntax_file (to, argv[i]);
- }
- else
- add_syntax_file (to, "-");
-
register_output_driver (to);
if (!to->has_output_driver)
{
#ifndef UI_TERMINAL_TERMINAL_OPTS_H
#define UI_TERMINAL_TERMINAL_OPTS_H 1
+#include <stdbool.h>
+#include "libpspp/getl.h"
+
struct argv_parser;
-struct source_stream;
struct terminal_opts;
struct terminal_opts *terminal_opts_init (struct argv_parser *,
- struct source_stream *);
+ enum syntax_mode *,
+ bool *process_statrc);
void terminal_opts_done (struct terminal_opts *, int argc, char *argv[]);
#endif /* ui/terminal/terminal-opts.h */
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2006, 2007, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <config.h>
-#include <ui/terminal/terminal.h>
+#include "ui/terminal/terminal.h"
#include <stdbool.h>
#include <stdlib.h>
-#include <libpspp/compiler.h>
+#include "data/settings.h"
+#include "libpspp/compiler.h"
-#include "error.h"
+#include "gl/error.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
-static int view_width = -1;
-static int view_length = -1;
-
-/* Initializes the terminal interface by determining the size of
- the user's terminal. Stores a pointer to the size variables
- in *VIEW_WIDTH_P and *VIEW_LENGTH_P. */
-void
-terminal_init (int **view_width_p, int **view_length_p)
-{
- *view_width_p = &view_width;
- *view_length_p = &view_length;
- terminal_check_size ();
-}
-
/* Code that interfaces to ncurses. This must be at the very end
of this file because curses.h redefines "bool" on some systems
(e.g. OpenBSD), causing declaration mismatches with functions
void
terminal_check_size (void)
{
+ int view_width = 0;
+ int view_length = 0;
+
#if LIBNCURSES_USABLE
if (getenv ("TERM") != NULL)
{
}
#endif
- if (view_width <= 0)
- {
- if (getenv ("COLUMNS") != NULL)
- view_width = atoi (getenv ("COLUMNS"));
- if (view_width <= 0)
- view_width = 79;
- }
+ if (view_width <= 0 && getenv ("COLUMNS") != NULL)
+ view_width = atoi (getenv ("COLUMNS"));
+ if (view_width > 0)
+ settings_set_viewwidth (view_width);
- if (view_length <= 0)
- {
- if (getenv ("LINES") != NULL)
- view_length = atoi (getenv ("LINES"));
- if (view_length <= 0)
- view_length = 24;
- }
+ if (view_length <= 0 && getenv ("LINES") != NULL)
+ view_length = atoi (getenv ("LINES"));
+ if (view_length > 0)
+ settings_set_viewlength (view_length);
}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<gnm:Workbook xmlns:gnm="http://www.gnumeric.org/v10.dtd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gnumeric.org/v8.xsd">
- <gnm:Version Epoch="1" Major="6" Minor="3" Full="1.6.3"/>
- <gnm:Attributes>
- <gnm:Attribute>
- <gnm:type>4</gnm:type>
- <gnm:name>WorkbookView::show_horizontal_scrollbar</gnm:name>
- <gnm:value>TRUE</gnm:value>
- </gnm:Attribute>
- <gnm:Attribute>
- <gnm:type>4</gnm:type>
- <gnm:name>WorkbookView::show_vertical_scrollbar</gnm:name>
- <gnm:value>TRUE</gnm:value>
- </gnm:Attribute>
- <gnm:Attribute>
- <gnm:type>4</gnm:type>
- <gnm:name>WorkbookView::show_notebook_tabs</gnm:name>
- <gnm:value>TRUE</gnm:value>
- </gnm:Attribute>
- <gnm:Attribute>
- <gnm:type>4</gnm:type>
- <gnm:name>WorkbookView::do_auto_completion</gnm:name>
- <gnm:value>TRUE</gnm:value>
- </gnm:Attribute>
- <gnm:Attribute>
- <gnm:type>4</gnm:type>
- <gnm:name>WorkbookView::is_protected</gnm:name>
- <gnm:value>FALSE</gnm:value>
- </gnm:Attribute>
- </gnm:Attributes>
- <gnm:Summary>
- <gnm:Item>
- <gnm:name>application</gnm:name>
- <gnm:val-string>gnumeric</gnm:val-string>
- </gnm:Item>
- <gnm:Item>
- <gnm:name>author</gnm:name>
- <gnm:val-string>John Darrington</gnm:val-string>
- </gnm:Item>
- </gnm:Summary>
- <gnm:SheetNameIndex>
- <gnm:SheetName>This</gnm:SheetName>
- <gnm:SheetName>vars</gnm:SheetName>
- <gnm:SheetName>That</gnm:SheetName>
- <gnm:SheetName>Empty</gnm:SheetName>
- <gnm:SheetName>Blank</gnm:SheetName>
- </gnm:SheetNameIndex>
- <gnm:Geometry Width="1278" Height="633"/>
- <gnm:Sheets>
- <gnm:Sheet DisplayFormulas="0" HideZero="0" HideGrid="0" HideColHeader="0" HideRowHeader="0" DisplayOutlines="1" OutlineSymbolsBelow="1" OutlineSymbolsRight="1" Visibility="GNM_SHEET_VISIBILITY_VISIBLE">
- <gnm:Name>This</gnm:Name>
- <gnm:MaxCol>9</gnm:MaxCol>
- <gnm:MaxRow>17</gnm:MaxRow>
- <gnm:Zoom>1</gnm:Zoom>
- <gnm:PrintInformation>
- <gnm:Margins>
- <gnm:top Points="120" PrefUnit="cm"/>
- <gnm:bottom Points="120" PrefUnit="cm"/>
- </gnm:Margins>
- <gnm:Scale type="percentage" percentage="100"/>
- <gnm:vcenter value="0"/>
- <gnm:hcenter value="0"/>
- <gnm:grid value="0"/>
- <gnm:even_if_only_styles value="0"/>
- <gnm:monochrome value="0"/>
- <gnm:draft value="0"/>
- <gnm:titles value="0"/>
- <gnm:order>d_then_r</gnm:order>
- <gnm:orientation>portrait</gnm:orientation>
- <gnm:Header Left="" Middle="&[TAB]" Right=""/>
- <gnm:Footer Left="" Middle="Page &[PAGE]" Right=""/>
- </gnm:PrintInformation>
- <gnm:Styles>
- <gnm:StyleRegion startCol="0" startRow="0" endCol="255" endRow="65535">
- <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
- <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
- <gnm:StyleBorder>
- <gnm:Top Style="0"/>
- <gnm:Bottom Style="0"/>
- <gnm:Left Style="0"/>
- <gnm:Right Style="0"/>
- <gnm:Diagonal Style="0"/>
- <gnm:Rev-Diagonal Style="0"/>
- </gnm:StyleBorder>
- </gnm:Style>
- </gnm:StyleRegion>
- </gnm:Styles>
- <gnm:Cols DefaultSizePts="48">
- <gnm:ColInfo No="0" Unit="48" MarginA="2" MarginB="2" Count="10"/>
- </gnm:Cols>
- <gnm:Rows DefaultSizePts="12.75">
- <gnm:RowInfo No="0" Unit="12.75" MarginA="0" MarginB="0" Count="15"/>
- <gnm:RowInfo No="15" Unit="9.75" MarginA="0" MarginB="0" HardSize="1"/>
- <gnm:RowInfo No="17" Unit="12.75" MarginA="0" MarginB="0"/>
- </gnm:Rows>
- <gnm:Selections CursorCol="7" CursorRow="7">
- <gnm:Selection startCol="7" startRow="7" endCol="7" endRow="7"/>
- </gnm:Selections>
- <gnm:Cells>
- <gnm:Cell Col="0" Row="0" ValueType="60">numeral</gnm:Cell>
- <gnm:Cell Col="1" Row="0" ValueType="60">eng_name</gnm:Cell>
- <gnm:Cell Col="2" Row="0" ValueType="60">xxx</gnm:Cell>
- <gnm:Cell Col="0" Row="1" ValueType="30">1</gnm:Cell>
- <gnm:Cell Col="1" Row="1" ValueType="60">One</gnm:Cell>
- <gnm:Cell Col="2" Row="1" ValueType="60">Eins</gnm:Cell>
- <gnm:Cell Col="0" Row="2" ValueType="30">2</gnm:Cell>
- <gnm:Cell Col="1" Row="2" ValueType="60">Two</gnm:Cell>
- <gnm:Cell Col="2" Row="2" ValueType="60">Zwei</gnm:Cell>
- <gnm:Cell Col="0" Row="3" ValueType="30">3</gnm:Cell>
- <gnm:Cell Col="1" Row="3" ValueType="60">Three</gnm:Cell>
- <gnm:Cell Col="2" Row="3" ValueType="60">Drei</gnm:Cell>
- <gnm:Cell Col="2" Row="4" ValueType="60">Vier</gnm:Cell>
- <gnm:Cell Col="5" Row="6" ValueType="60">XY</gnm:Cell>
- <gnm:Cell Col="6" Row="6" ValueType="60">xxx</gnm:Cell>
- <gnm:Cell Col="7" Row="6" ValueType="60">xxxx</gnm:Cell>
- <gnm:Cell Col="8" Row="6" ValueType="60">xxxx</gnm:Cell>
- <gnm:Cell Col="5" Row="7" ValueType="60">yyy</gnm:Cell>
- <gnm:Cell Col="6" Row="7" ValueType="60">V1</gnm:Cell>
- <gnm:Cell Col="7" Row="7" ValueType="60">V2</gnm:Cell>
- <gnm:Cell Col="5" Row="8" ValueType="60">yyy</gnm:Cell>
- <gnm:Cell Col="6" Row="8" ValueType="30">0</gnm:Cell>
- <gnm:Cell Col="7" Row="8" ValueType="60">fred</gnm:Cell>
- <gnm:Cell Col="8" Row="8" ValueType="30">20</gnm:Cell>
- <gnm:Cell Col="9" Row="8" ValueType="60">$$$$</gnm:Cell>
- <gnm:Cell Col="5" Row="9" ValueType="60">yyy</gnm:Cell>
- <gnm:Cell Col="6" Row="9" ValueType="30">1</gnm:Cell>
- <gnm:Cell Col="7" Row="9" ValueType="30">11</gnm:Cell>
- <gnm:Cell Col="8" Row="9" ValueType="30">21</gnm:Cell>
- <gnm:Cell Col="9" Row="9" ValueType="60">$$$$</gnm:Cell>
- <gnm:Cell Col="5" Row="10" ValueType="60">yyyy</gnm:Cell>
- <gnm:Cell Col="6" Row="10" ValueType="30">2</gnm:Cell>
- <gnm:Cell Col="7" Row="10" ValueType="60">twelve</gnm:Cell>
- <gnm:Cell Col="8" Row="10" ValueType="30">22</gnm:Cell>
- <gnm:Cell Col="9" Row="10" ValueType="60">$$$$</gnm:Cell>
- <gnm:Cell Col="5" Row="11" ValueType="60">yyyy</gnm:Cell>
- <gnm:Cell Col="6" Row="11" ValueType="30">3</gnm:Cell>
- <gnm:Cell Col="7" Row="11" ValueType="30">13</gnm:Cell>
- <gnm:Cell Col="8" Row="11" ValueType="30">23</gnm:Cell>
- <gnm:Cell Col="9" Row="11" ValueType="60">$$$$</gnm:Cell>
- <gnm:Cell Col="1" Row="12" ValueType="60">Eleven</gnm:Cell>
- <gnm:Cell Col="5" Row="12" ValueType="60">yyyy</gnm:Cell>
- <gnm:Cell Col="6" Row="12" ValueType="30">4</gnm:Cell>
- <gnm:Cell Col="7" Row="12" ValueType="30">14</gnm:Cell>
- <gnm:Cell Col="8" Row="12" ValueType="30">24</gnm:Cell>
- <gnm:Cell Col="9" Row="12" ValueType="60">$$$$</gnm:Cell>
- <gnm:Cell Col="5" Row="13" ValueType="60">zzz</gnm:Cell>
- <gnm:Cell Col="6" Row="13" ValueType="60">zzz</gnm:Cell>
- <gnm:Cell Col="7" Row="13" ValueType="60">zzz</gnm:Cell>
- <gnm:Cell Col="8" Row="13" ValueType="60">zzz</gnm:Cell>
- <gnm:Cell Col="9" Row="13" ValueType="60">zzz</gnm:Cell>
- <gnm:Cell Col="1" Row="17" ValueType="60">Seventeen</gnm:Cell>
- </gnm:Cells>
- <gnm:SheetLayout TopLeft="A1"/>
- <gnm:Solver ProblemType="1" Inputs="" MaxTime="0" MaxIter="0" NonNeg="1" Discr="0" AutoScale="0" ShowIter="0" AnswerR="0" SensitivityR="0" LimitsR="0" PerformR="0" ProgramR="0"/>
- </gnm:Sheet>
- <gnm:Sheet DisplayFormulas="0" HideZero="0" HideGrid="0" HideColHeader="0" HideRowHeader="0" DisplayOutlines="1" OutlineSymbolsBelow="1" OutlineSymbolsRight="1" Visibility="GNM_SHEET_VISIBILITY_VISIBLE">
- <gnm:Name>vars</gnm:Name>
- <gnm:MaxCol>4</gnm:MaxCol>
- <gnm:MaxRow>8</gnm:MaxRow>
- <gnm:Zoom>1</gnm:Zoom>
- <gnm:PrintInformation>
- <gnm:Margins>
- <gnm:top Points="120" PrefUnit="cm"/>
- <gnm:bottom Points="120" PrefUnit="cm"/>
- </gnm:Margins>
- <gnm:Scale type="percentage" percentage="100"/>
- <gnm:vcenter value="0"/>
- <gnm:hcenter value="0"/>
- <gnm:grid value="0"/>
- <gnm:even_if_only_styles value="0"/>
- <gnm:monochrome value="0"/>
- <gnm:draft value="0"/>
- <gnm:titles value="0"/>
- <gnm:order>d_then_r</gnm:order>
- <gnm:orientation>portrait</gnm:orientation>
- <gnm:Header Left="" Middle="&[TAB]" Right=""/>
- <gnm:Footer Left="" Middle="Page &[PAGE]" Right=""/>
- </gnm:PrintInformation>
- <gnm:Styles>
- <gnm:StyleRegion startCol="0" startRow="0" endCol="255" endRow="65535">
- <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
- <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
- <gnm:StyleBorder>
- <gnm:Top Style="0"/>
- <gnm:Bottom Style="0"/>
- <gnm:Left Style="0"/>
- <gnm:Right Style="0"/>
- <gnm:Diagonal Style="0"/>
- <gnm:Rev-Diagonal Style="0"/>
- </gnm:StyleBorder>
- </gnm:Style>
- </gnm:StyleRegion>
- </gnm:Styles>
- <gnm:Cols DefaultSizePts="48">
- <gnm:ColInfo No="0" Unit="48" MarginA="2" MarginB="2" Count="5"/>
- </gnm:Cols>
- <gnm:Rows DefaultSizePts="12.75">
- <gnm:RowInfo No="0" Unit="12.75" MarginA="0" MarginB="0" Count="5"/>
- </gnm:Rows>
- <gnm:Selections CursorCol="0" CursorRow="0">
- <gnm:Selection startCol="0" startRow="0" endCol="0" endRow="0"/>
- </gnm:Selections>
- <gnm:Cells>
- <gnm:Cell Col="0" Row="0" ValueType="60">1v12</gnm:Cell>
- <gnm:Cell Col="1" Row="0" ValueType="60">var&x@</gnm:Cell>
- <gnm:Cell Col="2" Row="0" ValueType="60">a(43)</gnm:Cell>
- <gnm:Cell Col="3" Row="0" ValueType="60">varx</gnm:Cell>
- <gnm:Cell Col="4" Row="0" ValueType="60">varx</gnm:Cell>
- <gnm:Cell Col="0" Row="1" ValueType="30">1</gnm:Cell>
- <gnm:Cell Col="1" Row="1" ValueType="30">2</gnm:Cell>
- <gnm:Cell Col="2" Row="1" ValueType="30">23</gnm:Cell>
- <gnm:Cell Col="3" Row="1" ValueType="30">2</gnm:Cell>
- <gnm:Cell Col="4" Row="1" ValueType="30">4</gnm:Cell>
- <gnm:Cell Col="0" Row="2" ValueType="30">3</gnm:Cell>
- <gnm:Cell Col="1" Row="2" ValueType="30">4</gnm:Cell>
- <gnm:Cell Col="2" Row="2" ValueType="30">23</gnm:Cell>
- <gnm:Cell Col="3" Row="2" ValueType="30">3</gnm:Cell>
- <gnm:Cell Col="4" Row="2" ValueType="30">4</gnm:Cell>
- <gnm:Cell Col="1" Row="8" ValueType="10"></gnm:Cell>
- </gnm:Cells>
- <gnm:SheetLayout TopLeft="A1"/>
- <gnm:Solver ProblemType="1" Inputs="" MaxTime="0" MaxIter="0" NonNeg="1" Discr="0" AutoScale="0" ShowIter="0" AnswerR="0" SensitivityR="0" LimitsR="0" PerformR="0" ProgramR="0"/>
- </gnm:Sheet>
- <gnm:Sheet DisplayFormulas="0" HideZero="0" HideGrid="0" HideColHeader="0" HideRowHeader="0" DisplayOutlines="1" OutlineSymbolsBelow="1" OutlineSymbolsRight="1" Visibility="GNM_SHEET_VISIBILITY_VISIBLE">
- <gnm:Name>That</gnm:Name>
- <gnm:MaxCol>3</gnm:MaxCol>
- <gnm:MaxRow>4</gnm:MaxRow>
- <gnm:Zoom>1</gnm:Zoom>
- <gnm:PrintInformation>
- <gnm:Margins>
- <gnm:top Points="120" PrefUnit="cm"/>
- <gnm:bottom Points="120" PrefUnit="cm"/>
- </gnm:Margins>
- <gnm:Scale type="percentage" percentage="100"/>
- <gnm:vcenter value="0"/>
- <gnm:hcenter value="0"/>
- <gnm:grid value="0"/>
- <gnm:even_if_only_styles value="0"/>
- <gnm:monochrome value="0"/>
- <gnm:draft value="0"/>
- <gnm:titles value="0"/>
- <gnm:order>d_then_r</gnm:order>
- <gnm:orientation>portrait</gnm:orientation>
- <gnm:Header Left="" Middle="&[TAB]" Right=""/>
- <gnm:Footer Left="" Middle="Page &[PAGE]" Right=""/>
- </gnm:PrintInformation>
- <gnm:Styles>
- <gnm:StyleRegion startCol="0" startRow="4096" endCol="63" endRow="65535">
- <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
- <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
- <gnm:StyleBorder>
- <gnm:Top Style="0"/>
- <gnm:Bottom Style="0"/>
- <gnm:Left Style="0"/>
- <gnm:Right Style="0"/>
- <gnm:Diagonal Style="0"/>
- <gnm:Rev-Diagonal Style="0"/>
- </gnm:StyleBorder>
- </gnm:Style>
- </gnm:StyleRegion>
- <gnm:StyleRegion startCol="4" startRow="0" endCol="15" endRow="255">
- <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
- <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
- <gnm:StyleBorder>
- <gnm:Top Style="0"/>
- <gnm:Bottom Style="0"/>
- <gnm:Left Style="0"/>
- <gnm:Right Style="0"/>
- <gnm:Diagonal Style="0"/>
- <gnm:Rev-Diagonal Style="0"/>
- </gnm:StyleBorder>
- </gnm:Style>
- </gnm:StyleRegion>
- <gnm:StyleRegion startCol="0" startRow="16" endCol="3" endRow="255">
- <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
- <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
- <gnm:StyleBorder>
- <gnm:Top Style="0"/>
- <gnm:Bottom Style="0"/>
- <gnm:Left Style="0"/>
- <gnm:Right Style="0"/>
- <gnm:Diagonal Style="0"/>
- <gnm:Rev-Diagonal Style="0"/>
- </gnm:StyleBorder>
- </gnm:Style>
- </gnm:StyleRegion>
- <gnm:StyleRegion startCol="16" startRow="0" endCol="63" endRow="4095">
- <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
- <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
- <gnm:StyleBorder>
- <gnm:Top Style="0"/>
- <gnm:Bottom Style="0"/>
- <gnm:Left Style="0"/>
- <gnm:Right Style="0"/>
- <gnm:Diagonal Style="0"/>
- <gnm:Rev-Diagonal Style="0"/>
- </gnm:StyleBorder>
- </gnm:Style>
- </gnm:StyleRegion>
- <gnm:StyleRegion startCol="64" startRow="0" endCol="255" endRow="65535">
- <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
- <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
- <gnm:StyleBorder>
- <gnm:Top Style="0"/>
- <gnm:Bottom Style="0"/>
- <gnm:Left Style="0"/>
- <gnm:Right Style="0"/>
- <gnm:Diagonal Style="0"/>
- <gnm:Rev-Diagonal Style="0"/>
- </gnm:StyleBorder>
- </gnm:Style>
- </gnm:StyleRegion>
- <gnm:StyleRegion startCol="3" startRow="0" endCol="3" endRow="15">
- <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
- <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
- <gnm:StyleBorder>
- <gnm:Top Style="0"/>
- <gnm:Bottom Style="0"/>
- <gnm:Left Style="0"/>
- <gnm:Right Style="0"/>
- <gnm:Diagonal Style="0"/>
- <gnm:Rev-Diagonal Style="0"/>
- </gnm:StyleBorder>
- </gnm:Style>
- </gnm:StyleRegion>
- <gnm:StyleRegion startCol="2" startRow="5" endCol="2" endRow="15">
- <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
- <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
- <gnm:StyleBorder>
- <gnm:Top Style="0"/>
- <gnm:Bottom Style="0"/>
- <gnm:Left Style="0"/>
- <gnm:Right Style="0"/>
- <gnm:Diagonal Style="0"/>
- <gnm:Rev-Diagonal Style="0"/>
- </gnm:StyleBorder>
- </gnm:Style>
- </gnm:StyleRegion>
- <gnm:StyleRegion startCol="2" startRow="1" endCol="2" endRow="4">
- <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="0.00">
- <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
- <gnm:StyleBorder>
- <gnm:Top Style="0"/>
- <gnm:Bottom Style="0"/>
- <gnm:Left Style="0"/>
- <gnm:Right Style="0"/>
- <gnm:Diagonal Style="0"/>
- <gnm:Rev-Diagonal Style="0"/>
- </gnm:StyleBorder>
- </gnm:Style>
- </gnm:StyleRegion>
- <gnm:StyleRegion startCol="0" startRow="256" endCol="15" endRow="4095">
- <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
- <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
- <gnm:StyleBorder>
- <gnm:Top Style="0"/>
- <gnm:Bottom Style="0"/>
- <gnm:Left Style="0"/>
- <gnm:Right Style="0"/>
- <gnm:Diagonal Style="0"/>
- <gnm:Rev-Diagonal Style="0"/>
- </gnm:StyleBorder>
- </gnm:Style>
- </gnm:StyleRegion>
- <gnm:StyleRegion startCol="0" startRow="0" endCol="1" endRow="15">
- <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
- <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
- <gnm:StyleBorder>
- <gnm:Top Style="0"/>
- <gnm:Bottom Style="0"/>
- <gnm:Left Style="0"/>
- <gnm:Right Style="0"/>
- <gnm:Diagonal Style="0"/>
- <gnm:Rev-Diagonal Style="0"/>
- </gnm:StyleBorder>
- </gnm:Style>
- </gnm:StyleRegion>
- <gnm:StyleRegion startCol="2" startRow="0" endCol="2" endRow="0">
- <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
- <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
- <gnm:StyleBorder>
- <gnm:Top Style="0"/>
- <gnm:Bottom Style="0"/>
- <gnm:Left Style="0"/>
- <gnm:Right Style="0"/>
- <gnm:Diagonal Style="0"/>
- <gnm:Rev-Diagonal Style="0"/>
- </gnm:StyleBorder>
- </gnm:Style>
- </gnm:StyleRegion>
- </gnm:Styles>
- <gnm:Cols DefaultSizePts="48">
- <gnm:ColInfo No="0" Unit="48" MarginA="2" MarginB="2" Count="2"/>
- <gnm:ColInfo No="2" Unit="90.75" MarginA="2" MarginB="2" HardSize="1"/>
- <gnm:ColInfo No="3" Unit="81" MarginA="2" MarginB="2" HardSize="1"/>
- </gnm:Cols>
- <gnm:Rows DefaultSizePts="12.75">
- <gnm:RowInfo No="0" Unit="12.75" MarginA="0" MarginB="0" Count="5"/>
- </gnm:Rows>
- <gnm:Selections CursorCol="0" CursorRow="5">
- <gnm:Selection startCol="0" startRow="5" endCol="0" endRow="5"/>
- </gnm:Selections>
- <gnm:Cells>
- <gnm:Cell Col="0" Row="0" ValueType="60">name</gnm:Cell>
- <gnm:Cell Col="1" Row="0" ValueType="60">id</gnm:Cell>
- <gnm:Cell Col="2" Row="0" ValueType="60">height</gnm:Cell>
- <gnm:Cell Col="0" Row="1" ValueType="60">fred</gnm:Cell>
- <gnm:Cell Col="1" Row="1" ValueType="30">0</gnm:Cell>
- <gnm:Cell Col="2" Row="1" ValueType="40">23.4</gnm:Cell>
- <gnm:Cell Col="0" Row="2" ValueType="60">bert </gnm:Cell>
- <gnm:Cell Col="1" Row="2" ValueType="30">1</gnm:Cell>
- <gnm:Cell Col="2" Row="2" ValueType="40">0.56</gnm:Cell>
- <gnm:Cell Col="0" Row="3" ValueType="60">charlie</gnm:Cell>
- <gnm:Cell Col="1" Row="3" ValueType="30">2</gnm:Cell>
- <gnm:Cell Col="2" Row="3" ValueType="60">n/a</gnm:Cell>
- <gnm:Cell Col="0" Row="4" ValueType="60">dick</gnm:Cell>
- <gnm:Cell Col="1" Row="4" ValueType="30">3</gnm:Cell>
- <gnm:Cell Col="2" Row="4" ValueType="40" ValueFormat="0.00">-34.09</gnm:Cell>
- </gnm:Cells>
- <gnm:SheetLayout TopLeft="A1"/>
- <gnm:Solver ProblemType="1" Inputs="" MaxTime="0" MaxIter="0" NonNeg="1" Discr="0" AutoScale="0" ShowIter="0" AnswerR="0" SensitivityR="0" LimitsR="0" PerformR="0" ProgramR="0"/>
- </gnm:Sheet>
- <gnm:Sheet DisplayFormulas="0" HideZero="0" HideGrid="0" HideColHeader="0" HideRowHeader="0" DisplayOutlines="1" OutlineSymbolsBelow="1" OutlineSymbolsRight="1" Visibility="GNM_SHEET_VISIBILITY_VISIBLE">
- <gnm:Name>Empty</gnm:Name>
- <gnm:MaxCol>-1</gnm:MaxCol>
- <gnm:MaxRow>-1</gnm:MaxRow>
- <gnm:Zoom>1</gnm:Zoom>
- <gnm:PrintInformation>
- <gnm:Margins>
- <gnm:top Points="120" PrefUnit="cm"/>
- <gnm:bottom Points="120" PrefUnit="cm"/>
- </gnm:Margins>
- <gnm:Scale type="percentage" percentage="100"/>
- <gnm:vcenter value="0"/>
- <gnm:hcenter value="0"/>
- <gnm:grid value="0"/>
- <gnm:even_if_only_styles value="0"/>
- <gnm:monochrome value="0"/>
- <gnm:draft value="0"/>
- <gnm:titles value="0"/>
- <gnm:order>d_then_r</gnm:order>
- <gnm:orientation>portrait</gnm:orientation>
- <gnm:Header Left="" Middle="&[TAB]" Right=""/>
- <gnm:Footer Left="" Middle="Page &[PAGE]" Right=""/>
- </gnm:PrintInformation>
- <gnm:Styles>
- <gnm:StyleRegion startCol="0" startRow="0" endCol="255" endRow="65535">
- <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
- <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
- <gnm:StyleBorder>
- <gnm:Top Style="0"/>
- <gnm:Bottom Style="0"/>
- <gnm:Left Style="0"/>
- <gnm:Right Style="0"/>
- <gnm:Diagonal Style="0"/>
- <gnm:Rev-Diagonal Style="0"/>
- </gnm:StyleBorder>
- </gnm:Style>
- </gnm:StyleRegion>
- </gnm:Styles>
- <gnm:Cols DefaultSizePts="48"/>
- <gnm:Rows DefaultSizePts="12.75"/>
- <gnm:Selections CursorCol="0" CursorRow="0">
- <gnm:Selection startCol="0" startRow="0" endCol="0" endRow="0"/>
- </gnm:Selections>
- <gnm:Cells/>
- <gnm:SheetLayout TopLeft="A1"/>
- <gnm:Solver ProblemType="1" Inputs="" MaxTime="0" MaxIter="0" NonNeg="1" Discr="0" AutoScale="0" ShowIter="0" AnswerR="0" SensitivityR="0" LimitsR="0" PerformR="0" ProgramR="0"/>
- </gnm:Sheet>
- <gnm:Sheet DisplayFormulas="0" HideZero="0" HideGrid="0" HideColHeader="0" HideRowHeader="0" DisplayOutlines="1" OutlineSymbolsBelow="1" OutlineSymbolsRight="1" Visibility="GNM_SHEET_VISIBILITY_VISIBLE">
- <gnm:Name>Blank</gnm:Name>
- <gnm:MaxCol>3</gnm:MaxCol>
- <gnm:MaxRow>2</gnm:MaxRow>
- <gnm:Zoom>1</gnm:Zoom>
- <gnm:PrintInformation>
- <gnm:Margins>
- <gnm:top Points="120" PrefUnit="cm"/>
- <gnm:bottom Points="120" PrefUnit="cm"/>
- </gnm:Margins>
- <gnm:Scale type="percentage" percentage="100"/>
- <gnm:vcenter value="0"/>
- <gnm:hcenter value="0"/>
- <gnm:grid value="0"/>
- <gnm:even_if_only_styles value="0"/>
- <gnm:monochrome value="0"/>
- <gnm:draft value="0"/>
- <gnm:titles value="0"/>
- <gnm:order>d_then_r</gnm:order>
- <gnm:orientation>portrait</gnm:orientation>
- <gnm:Header Left="" Middle="&[TAB]" Right=""/>
- <gnm:Footer Left="" Middle="Page &[PAGE]" Right=""/>
- </gnm:PrintInformation>
- <gnm:Styles>
- <gnm:StyleRegion startCol="0" startRow="0" endCol="255" endRow="65535">
- <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
- <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
- <gnm:StyleBorder>
- <gnm:Top Style="0"/>
- <gnm:Bottom Style="0"/>
- <gnm:Left Style="0"/>
- <gnm:Right Style="0"/>
- <gnm:Diagonal Style="0"/>
- <gnm:Rev-Diagonal Style="0"/>
- </gnm:StyleBorder>
- </gnm:Style>
- </gnm:StyleRegion>
- </gnm:Styles>
- <gnm:Cols DefaultSizePts="48">
- <gnm:ColInfo No="0" Unit="48" MarginA="2" MarginB="2" Count="4"/>
- </gnm:Cols>
- <gnm:Rows DefaultSizePts="12.75">
- <gnm:RowInfo No="0" Unit="12.75" MarginA="0" MarginB="0" Count="3"/>
- </gnm:Rows>
- <gnm:Selections CursorCol="3" CursorRow="1">
- <gnm:Selection startCol="3" startRow="1" endCol="3" endRow="1"/>
- </gnm:Selections>
- <gnm:Cells>
- <gnm:Cell Col="0" Row="0" ValueType="60">vone</gnm:Cell>
- <gnm:Cell Col="1" Row="0" ValueType="60">vtwo</gnm:Cell>
- <gnm:Cell Col="2" Row="0" ValueType="60">vthree</gnm:Cell>
- <gnm:Cell Col="3" Row="0" ValueType="60">v4</gnm:Cell>
- <gnm:Cell Col="0" Row="1" ValueType="30">1</gnm:Cell>
- <gnm:Cell Col="1" Row="1" ValueType="30">3</gnm:Cell>
- <gnm:Cell Col="3" Row="1" ValueType="30">5</gnm:Cell>
- <gnm:Cell Col="0" Row="2" ValueType="30">2</gnm:Cell>
- <gnm:Cell Col="1" Row="2" ValueType="30">4</gnm:Cell>
- <gnm:Cell Col="3" Row="2" ValueType="30">6</gnm:Cell>
- </gnm:Cells>
- <gnm:SheetLayout TopLeft="A1"/>
- <gnm:Solver ProblemType="1" Inputs="" MaxTime="0" MaxIter="0" NonNeg="1" Discr="0" AutoScale="0" ShowIter="0" AnswerR="0" SensitivityR="0" LimitsR="0" PerformR="0" ProgramR="0"/>
- </gnm:Sheet>
- </gnm:Sheets>
- <gnm:UIData SelectedTab="4"/>
- <gnm:Calculation ManualRecalc="0" EnableIteration="1" MaxIterations="100" IterationTolerance="0.001"/>
-</gnm:Workbook>
# -*- shell-script -*-
+
+# Variables used internally by the testsuite.
+EXEEXT='@EXEEXT@'
+GNM_SUPPORT='@GNM_SUPPORT@'
PERL='@PERL@'
+WITH_PERL_MODULE='@WITH_PERL_MODULE@'
+host='@host@'
+
+PSQL_SUPPORT='@PSQL_SUPPORT@'
+if test "$PSQL_SUPPORT" = yes; then
+ : ${PG_CONFIG:='@PG_CONFIG@'}
+ : ${PG_DBASE:=pspptest}
+ : ${PG_PORT:=6543}
+ : ${PG_PATH:=`$PG_CONFIG --bindir`}
+fi
+
+# Variables used by programs invoked by the testsuite.
CHARSETALIASDIR="$abs_top_builddir/gl"
export CHARSETALIASDIR
-WITH_PERL_MODULE='@WITH_PERL_MODULE@'
+
+GZIP=
+export GZIP
+
+HOME=/nonexistent # Kluge to make PSPP ignore $HOME/.pspprc.
+export HOME
## Process this file with automake to produce Makefile.in -*- makefile -*-
-TESTS_ENVIRONMENT = top_srcdir='$(top_srcdir)' top_builddir='$(top_builddir)'
-TESTS_ENVIRONMENT += PERL='$(PERL)' PG_CONFIG='$(PG_CONFIG)'
-
-# Allow locale_charset to find charset.alias before running "make install".
-TESTS_ENVIRONMENT += CHARSETALIASDIR='$(abs_top_builddir)/gl'
-
-TESTS_ENVIRONMENT += LC_ALL=C
-TESTS_ENVIRONMENT += EXEEXT=$(EXEEXT)
-
-dist_TESTS = \
- tests/command/bignum.sh \
- tests/command/correlation.sh \
- tests/command/do-if.sh \
- tests/command/do-repeat.sh \
- tests/command/erase.sh \
- tests/command/examine.sh \
- tests/command/examine-extremes.sh \
- tests/command/examine-percentiles.sh \
- tests/command/file-label.sh \
- tests/command/file-handle.sh \
- tests/command/filter.sh \
- tests/command/get-data-txt.sh \
- tests/command/get-data-txt-examples.sh \
- tests/command/get-data-txt-importcases.sh \
- tests/command/import-export.sh \
- tests/command/insert.sh \
- tests/command/lag.sh \
- tests/command/line-ends.sh \
- tests/command/list.sh \
- tests/command/loop.sh \
- tests/command/longvars.sh \
- tests/command/match-files.sh \
- tests/command/missing-values.sh \
- tests/command/no_case_size.sh \
- tests/command/n_of_cases.sh \
- tests/command/npar-binomial.sh \
- tests/command/npar-chisquare.sh \
- tests/command/npar-wilcoxon.sh \
- tests/command/npar-sign.sh \
- tests/command/permissions.sh \
- tests/command/print.sh \
- tests/command/print-strings.sh \
- tests/command/rank.sh \
- tests/command/rename.sh \
- tests/command/regression.sh \
- tests/command/regression-qr.sh \
- tests/command/reliability.sh \
- tests/command/roc.sh \
- tests/command/roc2.sh \
- tests/command/sample.sh \
- tests/command/sort.sh \
- tests/command/sysfiles.sh \
- tests/command/sysfiles-old.sh \
- tests/command/sysfile-info.sh \
- tests/command/split-file.sh \
- tests/command/t-test-1-indep-val.sh \
- tests/command/t-test-1-sample-missing-anal.sh \
- tests/command/t-test-1-sample-missing-list.sh \
- tests/command/t-test-1s.sh \
- tests/command/t-test-groups.sh \
- tests/command/t-test-indep-missing-anal.sh \
- tests/command/t-test-indep-missing-list.sh \
- tests/command/t-test-paired-missing-anal.sh \
- tests/command/t-test-paired-missing-list.sh \
- tests/command/t-test-pairs.sh \
- tests/command/trimmed-mean.sh \
- tests/command/tabs.sh \
- tests/command/update.sh \
- tests/command/use.sh \
- tests/command/variable-display.sh \
- tests/command/vector.sh \
- tests/command/very-long-strings.sh \
- tests/command/weight.sh \
- tests/formats/bcd-in.sh \
- tests/formats/binhex-out.sh \
- tests/formats/date-in.sh \
- tests/formats/date-out.sh \
- tests/formats/float-format.sh \
- tests/formats/format-guesser.sh \
- tests/formats/ib-in.sh \
- tests/formats/legacy-in.sh \
- tests/formats/month-in.sh \
- tests/formats/month-out.sh \
- tests/formats/num-in.sh \
- tests/formats/num-out.sh \
- tests/formats/time-in.sh \
- tests/formats/time-out.sh \
- tests/formats/wkday-in.sh \
- tests/formats/wkday-out.sh \
- tests/formats/360.sh \
- tests/bugs/big-input.sh \
- tests/bugs/big-input-2.sh \
- tests/bugs/case-map.sh \
- tests/bugs/comment-at-eof.sh \
- tests/bugs/compression.sh \
- tests/bugs/curtailed.sh \
- tests/bugs/data-crash.sh \
- tests/bugs/empty-do-repeat.sh \
- tests/bugs/get.sh \
- tests/bugs/examine-crash.sh \
- tests/bugs/examine-crash2.sh \
- tests/bugs/examine-crash3.sh \
- tests/bugs/examine-1sample.sh \
- tests/bugs/examine-missing.sh \
- tests/bugs/examine-missing2.sh \
- tests/bugs/get-no-file.sh \
- tests/bugs/if_crash.sh \
- tests/bugs/input-crash.sh \
- tests/bugs/lag_crash.sh \
- tests/bugs/list-overflow.sh \
- tests/bugs/match-files-scratch.sh \
- tests/bugs/multipass.sh \
- tests/bugs/overwrite-input-file.sh \
- tests/bugs/overwrite-special-file.sh \
- tests/bugs/random.sh \
- tests/bugs/shbang.sh \
- tests/bugs/signals.sh \
- tests/bugs/t-test-with-temp.sh \
- tests/bugs/t-test.sh \
- tests/bugs/t-test-alpha.sh \
- tests/bugs/t-test-alpha2.sh \
- tests/bugs/t-test-alpha3.sh \
- tests/bugs/t-test-paired.sh \
- tests/bugs/temporary.sh \
- tests/bugs/unwritable-dir.sh \
- tests/bugs/val-labs.sh \
- tests/bugs/val-labs-trailing-slash.sh \
- tests/bugs/print-crash.sh \
- tests/bugs/keep-all.sh \
- tests/data/datasheet-test.sh \
- tests/libpspp/sparse-xarray-test.sh \
- tests/output/paper-size.sh \
- tests/expressions/randist.sh \
- tests/expressions/valuelabel.sh \
- tests/expressions/variables.sh \
- tests/expressions/vectors.sh
-
-if GNM_SUPPORT
-dist_TESTS += tests/command/get-data-gnm.sh
-endif
-
-if PSQL_SUPPORT
-dist_TESTS += tests/command/get-data-psql.sh
-endif
-
-nodist_TESTS = \
+check_PROGRAMS += \
+ tests/data/datasheet-test \
+ tests/data/inexactify \
tests/libpspp/abt-test \
tests/libpspp/bt-test \
tests/libpspp/heap-test \
tests/libpspp/hmap-test \
tests/libpspp/hmapx-test \
+ tests/libpspp/i18n-test \
tests/libpspp/ll-test \
tests/libpspp/llx-test \
tests/libpspp/range-map-test \
tests/libpspp/range-set-test \
tests/libpspp/sparse-array-test \
+ tests/libpspp/sparse-xarray-test \
tests/libpspp/str-test \
tests/libpspp/string-map-test \
tests/libpspp/stringi-map-test \
tests/libpspp/string-set-test \
tests/libpspp/stringi-set-test \
- tests/libpspp/tower-test
-
-TESTS = $(dist_TESTS) $(nodist_TESTS)
-
-check_PROGRAMS += \
- $(nodist_TESTS) \
- tests/data/datasheet-test \
- tests/formats/inexactify \
- tests/libpspp/sparse-xarray-test \
+ tests/libpspp/tower-test \
tests/output/render-test
tests_data_datasheet_test_SOURCES = \
tests_libpspp_ll_test_SOURCES = \
src/libpspp/ll.c \
- src/libpspp/ll.h \
tests/libpspp/ll-test.c
tests_libpspp_ll_test_LDADD = gl/libgl.la $(LIBINTL)
tests_libpspp_ll_test_CFLAGS = $(AM_CFLAGS)
tests_libpspp_llx_test_SOURCES = \
src/libpspp/ll.c \
- src/libpspp/ll.h \
src/libpspp/llx.c \
- src/libpspp/llx.h \
tests/libpspp/llx-test.c
tests_libpspp_llx_test_LDADD = gl/libgl.la $(LIBINTL)
tests_libpspp_llx_test_CFLAGS = $(AM_CFLAGS)
tests_libpspp_heap_test_SOURCES = \
src/libpspp/heap.c \
- src/libpspp/heap.h \
src/libpspp/pool.c \
- src/libpspp/pool.h \
src/libpspp/temp-file.c \
tests/libpspp/heap-test.c
tests_libpspp_heap_test_LDADD = gl/libgl.la $(LIBINTL)
tests_libpspp_hmap_test_SOURCES = \
src/libpspp/hmap.c \
- src/libpspp/hmap.h \
tests/libpspp/hmap-test.c
tests_libpspp_hmap_test_LDADD = gl/libgl.la $(LIBINTL)
tests_libpspp_hmap_test_CPPFLAGS = $(AM_CPPFLAGS) -DASSERT_LEVEL=10
tests_libpspp_hmapx_test_SOURCES = \
src/libpspp/hmap.c \
- src/libpspp/hmap.h \
src/libpspp/hmapx.c \
- src/libpspp/hmapx.h \
tests/libpspp/hmapx-test.c
tests_libpspp_hmapx_test_LDADD = gl/libgl.la $(LIBINTL)
tests_libpspp_hmapx_test_CPPFLAGS = $(AM_CPPFLAGS) -DASSERT_LEVEL=10
+tests_libpspp_i18n_test_SOURCES = tests/libpspp/i18n-test.c
+tests_libpspp_i18n_test_LDADD = src/libpspp/libpspp.la gl/libgl.la $(LIBINTL)
+
tests_libpspp_abt_test_SOURCES = \
src/libpspp/abt.c \
- src/libpspp/abt.h \
tests/libpspp/abt-test.c
tests_libpspp_abt_test_LDADD = gl/libgl.la $(LIBINTL)
tests_libpspp_abt_test_CPPFLAGS = $(AM_CPPFLAGS) -DASSERT_LEVEL=10
tests_libpspp_bt_test_SOURCES = \
src/libpspp/bt.c \
- src/libpspp/bt.h \
tests/libpspp/bt-test.c
tests_libpspp_bt_test_LDADD = gl/libgl.la
tests_libpspp_bt_test_CPPFLAGS = $(AM_CPPFLAGS) -DASSERT_LEVEL=10
tests_libpspp_range_map_test_SOURCES = \
src/libpspp/bt.c \
- src/libpspp/bt.h \
src/libpspp/range-map.c \
- src/libpspp/range-map.h \
tests/libpspp/range-map-test.c
tests_libpspp_range_map_test_LDADD = gl/libgl.la $(LIBINTL)
tests_libpspp_range_map_test_CPPFLAGS = $(AM_CPPFLAGS) -DASSERT_LEVEL=10
tests_libpspp_range_set_test_SOURCES = \
src/libpspp/bt.c \
- src/libpspp/bt.h \
src/libpspp/pool.c \
- src/libpspp/pool.h \
src/libpspp/range-set.c \
- src/libpspp/range-set.h \
src/libpspp/temp-file.c \
tests/libpspp/range-set-test.c
tests_libpspp_range_set_test_LDADD = gl/libgl.la $(LIBINTL)
tests_libpspp_tower_test_SOURCES = \
src/libpspp/abt.c \
- src/libpspp/abt.h \
src/libpspp/pool.c \
- src/libpspp/pool.h \
src/libpspp/temp-file.c \
src/libpspp/tower.c \
- src/libpspp/tower.h \
tests/libpspp/tower-test.c
tests_libpspp_tower_test_LDADD = gl/libgl.la $(LIBINTL)
tests_libpspp_tower_test_CPPFLAGS = $(AM_CPPFLAGS) -DASSERT_LEVEL=10
tests_libpspp_sparse_array_test_SOURCES = \
src/libpspp/sparse-array.c \
- src/libpspp/sparse-array.h \
src/libpspp/pool.c \
- src/libpspp/pool.h \
tests/libpspp/sparse-array-test.c \
src/libpspp/temp-file.c
tests_libpspp_sparse_array_test_LDADD = gl/libgl.la $(LIBINTL)
tests_libpspp_sparse_xarray_test_LDADD = gl/libgl.la $(LIBINTL)
tests_libpspp_sparse_xarray_test_CPPFLAGS = $(AM_CPPFLAGS) -DASSERT_LEVEL=10
-tests_formats_inexactify_SOURCES = tests/formats/inexactify.c
+tests_data_inexactify_SOURCES = tests/data/inexactify.c
noinst_PROGRAMS += tests/dissect-sysfile
tests_dissect_sysfile_SOURCES = \
$(LIBINTL)
EXTRA_DIST += \
- $(dist_TESTS) \
- tests/Book1.gnm.unzipped \
- tests/weighting.data tests/data-list.data tests/list.data \
- tests/no_case_size.sav \
- tests/coverage.sh tests/test_template \
- tests/v13.sav tests/v14.sav \
- tests/expressions/randist/beta.out \
- tests/expressions/randist/cauchy.out \
- tests/expressions/randist/chisq.out \
- tests/expressions/randist/exp.out \
- tests/expressions/randist/f.out \
- tests/expressions/randist/gamma.out \
- tests/expressions/randist/laplace.out \
- tests/expressions/randist/lnormal.out \
- tests/expressions/randist/logistic.out \
- tests/expressions/randist/normal.out \
- tests/expressions/randist/pareto.out \
- tests/expressions/randist/compare.pl \
- tests/expressions/randist/randist.pl \
- tests/expressions/randist/randist.txt \
- tests/expressions/randist/t.out \
- tests/expressions/randist/uniform.out \
- tests/expressions/randist/weibull.out \
- tests/formats/bcd-in.expected.cmp.gz \
- tests/formats/binhex-out.expected.gz \
- tests/formats/ib-in.expected.cmp.gz \
- tests/formats/legacy-in.expected.cmp.gz \
- tests/formats/num-in.expected.gz \
- tests/formats/num-out.expected.cmp.gz \
- tests/formats/num-out-cmp.pl \
- tests/formats/num-out-compare.pl \
- tests/formats/num-out-decmp.pl \
- tests/formats/num-out.pl
+ tests/coverage.sh \
+ tests/data/bcd-in.expected.cmp.gz \
+ tests/data/binhex-in.expected.cmp.gz \
+ tests/data/binhex-out.expected.gz \
+ tests/data/legacy-in.expected.cmp.gz \
+ tests/data/num-in.expected.gz \
+ tests/data/num-out-cmp.pl \
+ tests/data/num-out.expected.cmp.gz \
+ tests/data/v13.sav \
+ tests/data/v14.sav \
+ tests/language/data-io/Book1.gnm.unzipped
CLEANFILES += *.save pspp.* foo*
-check-for-export-var-val:
- @if grep -q 'export .*=' $(dist_TESTS) ; then \
- echo 'One or more tests contain non-portable "export VAR=val" syntax' ; \
- false ; \
- fi
-
-DIST_HOOKS += check-for-export-var-val
-
EXTRA_DIST += tests/OChangeLog
\f
# Autotest testsuite
EXTRA_DIST += \
+ tests/testsuite.in \
$(TESTSUITE_AT) \
$(TESTSUITE) \
tests/atlocal.in \
TESTSUITE_AT = \
tests/data/calendar.at \
+ tests/data/data-in.at \
+ tests/data/data-out.at \
+ tests/data/datasheet-test.at \
+ tests/data/format-guesser.at \
+ tests/data/por-file.at \
+ tests/data/sys-file.at \
+ tests/language/command.at \
+ tests/language/control/do-if.at \
+ tests/language/control/do-repeat.at \
+ tests/language/control/loop.at \
+ tests/language/control/temporary.at \
tests/language/data-io/add-files.at \
tests/language/data-io/data-list.at \
tests/language/data-io/data-reader.at \
+ tests/language/data-io/file-handle.at \
+ tests/language/data-io/get-data-gnm.at \
+ tests/language/data-io/get-data-psql.at \
+ tests/language/data-io/get-data-txt.at \
+ tests/language/data-io/get.at \
+ tests/language/data-io/inpt-pgm.at \
+ tests/language/data-io/list.at \
+ tests/language/data-io/match-files.at \
+ tests/language/data-io/print.at \
tests/language/data-io/save.at \
tests/language/data-io/save-translate.at \
+ tests/language/data-io/update.at \
tests/language/dictionary/attributes.at \
+ tests/language/dictionary/missing-values.at \
tests/language/dictionary/mrsets.at \
+ tests/language/dictionary/rename-variables.at \
+ tests/language/dictionary/split-file.at \
+ tests/language/dictionary/sys-file-info.at \
+ tests/language/dictionary/value-labels.at \
+ tests/language/dictionary/variable-display.at \
+ tests/language/dictionary/vector.at \
+ tests/language/dictionary/weight.at \
tests/language/expressions/evaluate.at \
+ tests/language/expressions/parse.at \
+ tests/language/lexer/lexer.at \
+ tests/language/lexer/q2c.at \
+ tests/language/lexer/variable-parser.at \
tests/language/stats/aggregate.at \
tests/language/stats/autorecode.at \
+ tests/language/stats/correlations.at \
tests/language/stats/crosstabs.at \
tests/language/stats/descriptives.at \
+ tests/language/stats/examine.at \
tests/language/stats/factor.at \
tests/language/stats/flip.at \
tests/language/stats/frequencies.at \
+ tests/language/stats/npar.at \
tests/language/stats/oneway.at \
+ tests/language/stats/rank.at \
+ tests/language/stats/regression.at \
+ tests/language/stats/reliability.at \
+ tests/language/stats/roc.at \
+ tests/language/stats/sort-cases.at \
+ tests/language/stats/t-test.at \
+ tests/language/utilities/date.at \
+ tests/language/utilities/insert.at \
+ tests/language/utilities/permissions.at \
tests/language/utilities/set.at \
+ tests/language/utilities/title.at \
tests/language/xforms/compute.at \
tests/language/xforms/count.at \
tests/language/xforms/recode.at \
+ tests/language/xforms/sample.at \
+ tests/language/xforms/select-if.at \
+ tests/libpspp/abt.at \
+ tests/libpspp/bt.at \
+ tests/libpspp/float-format.at \
+ tests/libpspp/heap.at \
+ tests/libpspp/hmap.at \
+ tests/libpspp/hmapx.at \
+ tests/libpspp/i18n.at \
+ tests/libpspp/ll.at \
+ tests/libpspp/llx.at \
+ tests/libpspp/range-map.at \
+ tests/libpspp/range-set.at \
+ tests/libpspp/sparse-array.at \
+ tests/libpspp/sparse-xarray-test.at \
+ tests/libpspp/str.at \
+ tests/libpspp/string-map.at \
+ tests/libpspp/stringi-map.at \
+ tests/libpspp/string-set.at \
+ tests/libpspp/stringi-set.at \
+ tests/libpspp/tower.at \
tests/math/moments.at \
- tests/output/render.at \
+ tests/math/randist.at \
tests/output/charts.at \
+ tests/output/output.at \
+ tests/output/paper-size.at \
+ tests/output/render.at \
+ tests/ui/terminal/main.at \
tests/perl-module.at
TESTSUITE = $(srcdir)/tests/testsuite
DISTCLEANFILES += tests/atconfig tests/atlocal $(TESTSUITE)
-$(srcdir)/tests/testsuite.at: tests/testsuite.in Makefile
+$(srcdir)/tests/testsuite.at: tests/testsuite.in tests/automake.mk
cp $< $@
for t in $(TESTSUITE_AT); do \
echo "m4_include([$$t])" >> $@ ;\
done
-
+EXTRA_DIST += tests/testsuite.at
CHECK_LOCAL += tests_check
-tests_check: tests/atconfig tests/atlocal $(TESTSUITE)
- $(SHELL) '$(TESTSUITE)' -C tests AUTOTEST_PATH=tests/output:src/ui/terminal $(TESTSUITEFLAGS)
+tests_check: tests/atconfig tests/atlocal $(TESTSUITE) $(check_PROGRAMS)
+ $(SHELL) '$(TESTSUITE)' -C tests AUTOTEST_PATH=tests/data:tests/libpspp:tests/output:src/ui/terminal $(TESTSUITEFLAGS)
CLEAN_LOCAL += tests_clean
tests_clean:
+++ /dev/null
-This directory contains some tests for bugs which have been
-experienced in the past and which are (hopefully) now fixed.
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which caused a crash when
-# very large files are presented.
-
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-TESTFILE=$TEMPDIR/`basename $0`.sps
-: ${PERL:=perl}
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="delete data"
-rm -f $TEMPDIR/large.dat
-if [ $? -ne 0 ] ; then no_result ; fi
-
-printf "Creating input data. Please wait"
-activity="create data"
-$PERL -e 'for ($i=0; $i<100000; $i++) { print "AB12\n" };
- for ($i=0; $i<100000; $i++) { print "AB04\n" };' > $TEMPDIR/large.dat
-if [ $? -ne 0 ] ; then no_result ; fi
-printf ".\n";
-
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST FILE='$TEMPDIR/large.dat' /S 1-2 (A) X 3 .
-
-
-AGGREGATE OUTFILE=* /BREAK=X /A=N.
-
-
-EXAMINE /A BY /X.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="appending to data"
-# Put another 50,000 cases into large.dat
-$PERL -e 'for ($i=0; $i<25000; $i++) { print "AB04\nAB12\n" };' >> $TEMPDIR/large.dat
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which caused a crash when
-# a large number of cases where presented.
-
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-INPUT PROGRAM.
- LOOP #I=1 TO 50000.
- COMPUTE X=NORMAL(10).
- END CASE.
- END LOOP.
- END FILE.
-END INPUT PROGRAM.
-
-
-EXAMINE /x
- /STATISTICS=DESCRIPTIVES.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which caused a crash when
-# a non-empty case_map was created in SAVE.
-
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-INPUT PROGRAM.
- COMPUTE #I = 1.
- COMPUTE X = #I.
- END CASE.
- END FILE.
-END INPUT PROGRAM.
-
-SAVE OUTFILE='tiny.sav'.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# Tests for a bug wherein a comment just before end-of-file caused an
-# infinite loop. Thus, this test passes as long as it completes.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-COMMENT this is a comment at end of file.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then fail; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that compressed system files can be read and written
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-cat > $TESTFILE <<EOF
-DATA LIST LIST /x * y (a200).
-BEGIN DATA.
-1.2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-. yyyyyyyyyyyyyyy
-0 ddddddddddddddddddddddddddddddd
-101 z
-END DATA.
-
-SAVE OUTFILE='$TEMPDIR/com.sav' /COMPRESS .
-
-GET FILE='$TEMPDIR/com.sav'.
-
-LIST.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-# Make sure the file really was compressed
-activity="inspect system file"
-dd if=$TEMPDIR/com.sav bs=1 skip=72 count=4 2> /dev/null | od > $TEMPDIR/file
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="check compression setting"
-# Big-endian?
-diff -b $TEMPDIR/file - > /dev/null <<EOF
-0000000 000000 000001
-0000004
-EOF
-if [ $? -ne 0 ] ; then pass ; fi
-# Little-endian?
-diff -b $TEMPDIR/file - > /dev/null <<EOF
-0000000 000001 000000
-0000004
-EOF
-if [ $? -ne 0 ] ; then pass ; fi
-# Otherwise error.
-cat $TEMPDIR/file
-fail
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which crashed pspp when given certain
-# invalid input
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST LIST /x *.
-BEGIN DATA.
-1
-2
-3
-END DATA.
-
-EXAMINE.
-ONEWAY.
-CROSSTABS.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-#This must fail
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TESTFILE
-if [ $? -ne 1 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which crashed pspp when given certain
-# invalid input
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TEMPDIR/ct.stat <<EOF
-DATA rubbish.
-EXECUTE.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-#This must fail
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TEMPDIR/ct.stat
-if [ $? -ne 1 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug that crashed PSPP given an empty DO
-# REPEAT...END REPEAT block. See bug #18407.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TEMPDIR/repeat.stat <<EOF
-DATA LIST NOTABLE /a 1.
-BEGIN DATA.
-0
-END DATA.
-
-DO REPEAT h = a.
-END REPEAT.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-# Must not crash.
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TEMPDIR/repeat.stat
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug in the EXAMINE command, where it
-# would crash if a data file with only one case was presented
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST LIST /quality * .
-BEGIN DATA
-3
-END DATA
-
-
-EXAMINE
- quality
- /STATISTICS descriptives
- .
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which crashed EXAMINE
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-cat <<EOF > $TESTFILE
-data list list /a * x * y *.
-begin data.
-3 1 3
-5 1 4
-7 2 3
-end data.
-
-examine a by x by y
- /statistics=DESCRIPTIVES
- .
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which crashed pspp
-# when two consecutive EXAMINE commands are run.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-cat <<EOF > $TESTFILE
-data list list /y * z *.
-begin data.
-6 4
-5 3
-7 6
-end data.
-
-EXAMINE /VARIABLES= z BY y.
-
-EXAMINE /VARIABLES= z.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which crashed pspp
-# when the /DESCRIPTIVES subcommand of EXAMINE
-# encountered missing values.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat <<EOF > $TESTFILE
-data list list /x * y *.
-begin data.
-1 0
-2 0
-. 0
-3 1
-4 1
-end data.
-examine x by y /statistics=descriptives.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which caused EXAMINE to
-# crash if all its values were SYSMIS
-
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST LIST /x *.
-BEGIN DATA.
-.
-.
-.
-.
-END DATA.
-
-EXAMINE /x PLOT=HISTOGRAM.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TESTFILE 2> /dev/null
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug in which examine didn't
-# count missing values.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program 1"
-cat > $TESTFILE << EOF
-DATA LIST LIST /x * y *.
-BEGIN DATA.
-1 1
-2 1
-3 1
-4 1
-5 2
-6 2
-. 2
-END DATA
-
-EXAMINE /x by y.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 1"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare results"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-x,F8.0
-y,F8.0
-
-Table: Case Processing Summary
-,Cases,,,,,
-,Valid,,Missing,,Total,
-,N,Percent,N,Percent,N,Percent
-x,6,85.7143%,1,14.2857%,7,100%
-
-Table: Case Processing Summary
-,,Cases,,,,,
-,,Valid,,Missing,,Total,
-,y,N,Percent,N,Percent,N,Percent
-x,1.00,4,100%,0,0%,4,100%
-,2.00,2,66.6667%,1,33.3333%,3,100%
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-#Make sure this doesn't interfere with percentiles operation.
-
-activity="create program 2"
-cat > $TESTFILE << EOF
-DATA LIST LIST /X *.
-BEGIN DATA.
-99
-99
-5.00
-END DATA.
-
-MISSING VALUE X (99).
-
-EXAMINE /x
- /PERCENTILES=HAVERAGE.
-
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 2"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which caused a crash when
-# GET specified a non-existent file
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-GET /FILE='$TEMPDIR/no-file.xx'.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-# The command should produce a warning. Not an error.
-# We use the stdinput here, because the bug seems to manifest itself only in
-# interactive mode.
-activity="run program"
-cat $TESTFILE | $SUPERVISOR $PSPP -o pspp.csv > /dev/null
-if [ $? -ne 1 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which caused
-# the second procedure after GET FILE to corrupt its output
-
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST LIST NOTABLE /LOCATION * EDITOR * SHELL * FREQ * .
-BEGIN DATA.
- 1.00 1.00 1.0 2.00
- 1.00 1.00 2.0 30.00
- 1.00 2.00 1.0 8.00
- 1.00 2.00 2.0 20.00
- 2.00 1.00 1.0 2.00
- 2.00 1.00 2.0 22.00
- 2.00 2.00 1.0 1.00
- 2.00 2.00 2.0 3.00
-END DATA.
-
-SAVE /OUTFILE='$TEMPDIR/foo.sav'.
-
-GET /FILE='$TEMPDIR/foo.sav'.
-
-* This one's ok
-LIST.
-
-* But this one get rubbish
-LIST.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-LOCATION,EDITOR,SHELL,FREQ
-1.00,1.00,1.00,2.00
-1.00,1.00,2.00,30.00
-1.00,2.00,1.00,8.00
-1.00,2.00,2.00,20.00
-2.00,1.00,1.00,2.00
-2.00,1.00,2.00,22.00
-2.00,2.00,1.00,1.00
-2.00,2.00,2.00,3.00
-
-Table: Data List
-LOCATION,EDITOR,SHELL,FREQ
-1.00,1.00,1.00,2.00
-1.00,1.00,2.00,30.00
-1.00,2.00,1.00,8.00
-1.00,2.00,2.00,20.00
-2.00,1.00,1.00,2.00
-2.00,1.00,2.00,22.00
-2.00,2.00,1.00,1.00
-2.00,2.00,2.00,3.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which crashed pspp when using an expression
-# comprising an unknown variable.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-INPUT PROGRAM.
-LOOP c=1 to 10.
-COMPUTE var1=NORMAL(100).
-END CASE.
-END LOOP.
-END FILE.
-END INPUT PROGRAM.
-
-
-IF ( y > 0 ) .
-COMPUTE x=y.
-END IF.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-# The above input is invalid.
-# So this will have a non zero error status.
-# But it shouldn't crash!
-activity="run_program"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TESTFILE
-if [ $? -ne 1 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which caused a crash when
-# reading invalid INPUT PROGRAM syntax.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-
-activity="create test program"
-cat > $TESTFILE <<EOF
-INPUT PROGRAM.
-DATA LIST /a 1-9.
-BEGIN DATA
-123456789
-END DATA.
-END INPUT PROGRAM.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-# The above syntax is invalid, so this program should fail to parse
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TESTFILE
-if [ $? -ne 1 ] ; then fail ; fi
-
-
-activity="create test program 2"
-cat > $TESTFILE <<EOF
-* From bug #21108.
-input program.
-data list list /x.
-end file.
-end input program.
-
-descriptives x.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-# The above syntax is invalid, so this program should fail to parse
-activity="run program 2"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TESTFILE
-if [ $? -ne 1 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for bug #15766 (/KEEP subcommand on SAVE doesn't
-# fully support ALL) and underlying problems.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.pspp
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-for mode in COMPRESSED UNCOMPRESSED; do
- activity="create program ($mode)"
- cat > $TESTFILE <<EOF
-DATA LIST LIST NOTABLE
- /a b c d e f g h i j k l m n o p q r s t u v w x y z (F2.0).
-BEGIN DATA.
-1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
-END DATA.
-LIST.
-SAVE OUTFILE='test.sav'/$mode.
-GET FILE='test.sav'/KEEP=x y z all.
-LIST.
-EOF
- if [ $? -ne 0 ] ; then no_result ; fi
-
- activity="run PSPP ($mode)"
- $SUPERVISOR $PSPP -o pspp.csv $TESTFILE
- if [ $? -ne 0 ] ; then no_result ; fi
-
-
- activity="compare output ($mode)"
- diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26
-
-Table: Data List
-x,y,z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w
-24,25,26,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
-EOF
- if [ $? -ne 0 ] ; then fail ; fi
-done
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which crashed pspp when using LAG
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE << EOF
-DATA LIST LIST /x.
-BEGIN DATA
-1
-2
-END DATA.
-
-DO IF (x <> LAG(x) ).
- ECHO 'hello'.
-END IF.
-
-EXECUTE.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run_program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which caused a buffer overflow
-# when the list command attempted to write very long strings.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-
-activity="create test program"
-cat > $TESTFILE <<EOF
-INPUT PROGRAM.
-STRING foo (a2000).
-+ COMPUTE foo=CONCAT(RPAD('A',1999, 'x'), 'Z').
-END CASE.
-END FILE.
-END INPUT PROGRAM.
-
-EXECUTE.
-
-DISPLAY VARIABLES.
-
-LIST.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which caused MATCH FILES to crash
-# when used with scratch variables.
-
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.pspp
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST LIST /w * x * y * .
-BEGIN DATA
-4 5 6
-1 2 3
-END DATA.
-
-COMPUTE j=0.
-LOOP #k = 1 to 10.
-COMPUTE j=#k + j.
-END LOOP.
-
-MATCH FILES FILE=* /DROP=w.
-LIST.
-FINISH.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-w,F8.0
-x,F8.0
-y,F8.0
-
-Table: Data List
-x,y,j
-5.00,6.00,55.00
-2.00,3.00,55.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which caused UNIFORM(x) to always return zero.
-
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-data list list /ID * ABC *.
-begin data.
-1 3.5
-2 2.0
-3 2.0
-4 3.5
-5 3.0
-6 4.0
-7 5.0
-end data.
-
-TEMPORARY.
-SELECT IF id < 7 .
-
-DESCRIPTIVES
- /VAR=abc.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-ID,F8.0
-ABC,F8.0
-
-Table: Valid cases = 6; cases with missing value(s) = 0.
-Variable,N,Mean,Std Dev,Minimum,Maximum
-ABC,6,3.00,.84,2.00,4.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that simultaneous input and output to a single
-# file properly coexist, with the output atomically replacing the
-# input if successful.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create data file"
-cat > foo.data <<EOF
-1
-2
-3
-4
-5
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create program 1"
-cat > $TESTFILE <<EOF
-DATA LIST FILE='foo.data' /X 1.
-SAVE OUTFILE='foo.sav'.
-EXPORT OUTFILE='foo.por'.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 1"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="check and save copy of output files"
-# Check that the files are nonzero length.
-test -s foo.data || fail
-test -s foo.sav || fail
-test -s foo.por || fail
-# Save copies of them.
-cp foo.data foo.data.backup || fail
-cp foo.sav foo.sav.backup || fail
-cp foo.por foo.por.backup || fail
-
-
-activity="create program 2"
-cat > $TESTFILE <<EOF
-GET 'foo.sav'.
-COMPUTE Y = X + 1.
-XSAVE OUTFILE='foo.sav'.
-XEXPORT OUTFILE='foo.por'.
-PRINT OUTFILE='foo.data'.
-HOST kill -TERM \$PPID
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 2"
-{ $SUPERVISOR $PSPP -o pspp.csv $TESTFILE -e /dev/null; } >/dev/null 2>&1
-# PSPP should have terminated with a signal. POSIX requires that the exit
-# status of a process terminated by a signal be greater than 128.
-if [ $? -le 128 ] ; then no_result ; fi
-
-activity="check for remaining temporary files"
-if test -e *.tmp*; then fail; fi
-
-activity="compare output 1"
-cmp foo.sav foo.sav.backup
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare output 2"
-cmp foo.por foo.por.backup
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare output 3"
-cmp foo.data foo.data.backup
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-activity="create program 3"
-cat > $TESTFILE <<EOF
-DATA LIST NOTABLE LIST FILE='foo.data'/X.
-COMPUTE Y = X + 1.
-PRINT OUTFILE='foo.data'/X Y.
-EXECUTE.
-
-GET 'foo.sav'.
-COMPUTE Y = X + 2.
-SAVE OUTFILE='foo.sav'.
-
-IMPORT 'foo.por'.
-COMPUTE Y = X + 3.
-EXPORT OUTFILE='foo.por'.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 3"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE -e /dev/null
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="check for remaining temporary files"
-if test -e *.tmp*; then fail; fi
-
-activity="create program 4"
-cat > $TESTFILE <<EOF
-DATA LIST LIST NOTABLE FILE='foo.data'/X Y.
-LIST.
-
-GET 'foo.sav'.
-LIST.
-
-IMPORT 'foo.por'.
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 4"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE -e /dev/null
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -c pspp.csv - << EOF
-Table: Data List
-X,Y
-1.00,2.00
-2.00,3.00
-3.00,4.00
-4.00,5.00
-5.00,6.00
-
-Table: Data List
-X,Y
-1,3.00
-2,4.00
-3,5.00
-4,6.00
-5,7.00
-
-Table: Data List
-X,Y
-1,4.00
-2,5.00
-3,6.00
-4,7.00
-5,8.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that simultaneous input and output to a single
-# file properly coexist, with the output atomically replacing the
-# input if successful.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-# This test only works on systems that have a /dev/null device...
-test -c /dev/null || no_result
-
-# ...and that are able to make a symbolic link to it...
-ln -s /dev/null foo.out || no_result
-
-# ...that is still /dev/null.
-test -c /dev/null || no_result
-
-activity="create program 1"
-cat > $TESTFILE <<EOF
-DATA LIST /x 1.
-BEGIN DATA.
-1
-2
-3
-4
-5
-END DATA.
-PRINT OUTFILE='foo.out'/x.
-PRINT OUTFILE='foo2.out'/x.
-EXECUTE.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 1"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="check that foo2.out was created"
-diff -b foo2.out - << EOF
- 1
- 2
- 3
- 4
- 5
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="check that foo.out is unchanged"
-test -c /dev/null || fail
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which crashed when deallocating after a bad
-# PRINT command.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-cat > $TESTFILE << EOF
-DATA LIST LIST /a * b *.
-BEGIN DATA.
-1 2
-3 4
-END DATA.
-
-PRINT F8.2
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TESTFILE
-if [ $? -ne 1 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which caused UNIFORM(x) to always return zero.
-
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-set seed=10.
-input program.
-+ loop #i = 1 to 20.
-+ do repeat response=R1.
-+ compute response = uniform(10).
-+ end repeat.
-+ end case.
-+ end loop.
-+ end file.
-end input program.
-
-list.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare output"
-perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.csv
-diff -b -w $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-R1
-7.71
-2.99
-.21
-4.95
-6.34
-4.43
-7.49
-8.32
-4.99
-5.83
-2.25
-.25
-1.98
-7.09
-7.61
-2.66
-1.69
-2.64
-.88
-1.50
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that PSPP ignores the first line of a PSPP syntax
-# file that begins with #!, without issuing an error (bug #26518).
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-cat > $TESTFILE << EOF
-#! $PSPP
-DATA LIST LIST NOTABLE /a.
-BEGIN DATA.
-1
-2
-END DATA.
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-activity="compare output"
-perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.csv
-diff -b -w $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-a
-1.00
-2.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that signals are properly caught and handled by PSPP
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="sending SIGINT to pspp"
-echo 'host kill -INT $PPID' | $PSPP -o pspp.csv > /dev/null 2> $TEMPDIR/stderr1
-if [ $? -ne 0 ] ; then no_result ; fi
-
-# SIGINT should have caused a clean shutdown
-activity="checking for absence of error messages 1"
-[ ! -s $TEMPDIR/stderr1 ]
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="sending SIGSEGV to pspp"
-echo 'host kill -SEGV $PPID' | $PSPP -o pspp.csv > /dev/null 2> $TEMPDIR/stderr2
-if [ $? -eq 0 ] ; then no_result ; fi
-
-# SIGSEGV should have caused an error message
-activity="checking for error messages from pspp 2"
-head -8 $TEMPDIR/stderr2 > $TEMPDIR/stderr-head
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="comparing error messages from pspp 2"
-diff $TEMPDIR/stderr-head - << EOF
-******************************************************
-You have discovered a bug in PSPP. Please report this
-to bug-gnu-pspp@gnu.org. Please include this entire
-message, *plus* several lines of output just above it.
-For the best chance at having the bug fixed, also
-include the syntax file that triggered it and a sample
-of any data file used for input.
-proximate cause: Segmentation Violation
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that the T-TEST works when the independent
-# variable is alpha
-# BUG #11227
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-data list list /ID * INDEP (a1) DEP1 * DEP2 *.
-begin data.
-1 'a' 1 3
-2 'a' 2 4
-3 'a' 2 4
-4 'a' 2 4
-5 'a' 3 5
-6 'b' 3 1
-7 'b' 4 2
-8 'b' 4 2
-9 'b' 4 2
-10 'b' 5 3
-11 'c' 2 2
-end data.
-
-
-t-test /GROUPS=indep('a','b') /var=dep1 dep2.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-ID,F8.0
-INDEP,A1
-DEP1,F8.0
-DEP2,F8.0
-
-Table: Group Statistics
-,INDEP,N,Mean,Std. Deviation,S.E. Mean
-DEP1,a,5,2.00,.71,.32
-,b,5,4.00,.71,.32
-DEP2,a,5,4.00,.71,.32
-,b,5,2.00,.71,.32
-
-Table: Independent Samples Test
-,,Levene's Test for Equality of Variances,,t-test for Equality of Means,,,,,,
-,,,,,,,,,95% Confidence Interval of the Difference,
-,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,Lower,Upper
-DEP1,Equal variances assumed,.00,1.00,-4.47,8.00,.00,-2.00,.45,-3.03,-.97
-,Equal variances not assumed,,,-4.47,8.00,.00,-2.00,.45,-3.03,-.97
-DEP2,Equal variances assumed,.00,1.00,4.47,8.00,.00,2.00,.45,.97,3.03
-,Equal variances not assumed,,,4.47,8.00,.00,2.00,.45,.97,3.03
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests that the T-TEST fails gracefully when
-# a single alpha variable is specified for the independent variable
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-data list list /id * indep (a1) dep1 * dep2 *.
-begin data.
-1 'a' 1 3
-2 'a' 2 4
-3 'a' 2 4
-4 'a' 2 4
-5 'a' 3 5
-6 'b' 3 1
-7 'b' 4 2
-8 'b' 4 2
-9 'b' 4 2
-10 'b' 5 3
-11 'c' 2 2
-end data.
-
-
-t-test /GROUPS=indep('a') /var=dep1 dep2.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE > /dev/null
-#invert v
-if [ $? -eq 0 ] ; then fail ; fi
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which didn't properly
-# compare string values.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-cat >> $TESTFILE <<EOF
-data list list /x * gv (a8).
-begin data.
-3 One
-2 One
-3 One
-2 One
-3 One
-4 Two
-3.5 Two
-3.0 Two
-end data.
-
-t-test group=gv('One', 'Two')
- /variables = x.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-x,F8.0
-gv,A8
-
-Table: Group Statistics
-,gv,N,Mean,Std. Deviation,S.E. Mean
-x,One ,5,2.60,.55,.24
-,Two ,3,3.50,.50,.29
-
-Table: Independent Samples Test
-,,Levene's Test for Equality of Variances,,t-test for Equality of Means,,,,,,
-,,,,,,,,,95% Confidence Interval of the Difference,
-,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,Lower,Upper
-x,Equal variances assumed,1.13,.33,-2.32,6.00,.06,-.90,.38,-1.83,.03
-,Equal variances not assumed,,,-2.38,4.70,.07,-.90,.38,-1.89,.09
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug in the paired samples T test.
-# Thanks to Mike Griffiths for reporting this problem.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-cat >> $TESTFILE <<EOF
-set format f8.3.
-data list list /A * B *.
-begin data.
-11 2
-1 1
-1 1
-end data.
-
-t-test pairs = a with b (paired).
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-A,F8.0
-B,F8.0
-
-Table: Paired Sample Statistics
-,,Mean,N,Std. Deviation,S.E. Mean
-Pair 0,A,4.333,3,5.774,3.333
-,B,1.333,3,.577,.333
-
-Table: Paired Samples Correlations
-,,N,Correlation,Sig.
-Pair 0,A & B,3,1.000,.000
-
-Table: Paired Samples Test
-,,Paired Differences,,,,,,,
-,,,,,95% Confidence Interval of the Difference,,,,
-,,Mean,Std. Deviation,Std. Error Mean,Lower,Upper,t,df,Sig. (2-tailed)
-Pair 0,A - B,3.000,5.196,3.000,-9.908,15.908,1.000,2,.423
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that the T-TEST
-# works ok with a TEMPORARY transformation
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-data list list /ind * x * .
-begin data.
-1 3.5
-1 2.0
-1 2.0
-2 3.5
-2 3.0
-2 4.0
-end data.
-
-t-test /groups=ind(1,2) /var x.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="copy output"
-cp $TEMPDIR/pspp.csv $TEMPDIR/first.csv
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create program 2"
-cat > $TESTFILE <<EOF
-data list list /ind * x * .
-begin data.
-1 3.5
-1 2.0
-1 2.0
-2 3.5
-2 3.0
-2 4.0
-2 9.0
-end data.
-
-TEMPORARY.
-SELECT IF ind < 7.
-
-t-test /groups=ind(1,2) /var x.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.csv $TEMPDIR/first.csv
-diff -b $TEMPDIR/pspp.csv $TEMPDIR/first.csv
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which caused T-TEST to
-# crash when given invalid syntax
-
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST LIST /id * a * .
-BEGIN DATA.
-1 3.5
-2 2.0
-3 2.0
-4 3.5
-5 3.0
-6 4.0
-END DATA.
-
-T-TEST /testval=2.0 .
-T-TEST /groups=id(3) .
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-#The syntax was invalid. Therefore pspp must return non zero.
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TESTFILE
-if [ $? -ne 1 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which caused UNIFORM(x) to always return zero.
-
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST LIST NOTABLE /X *.
-begin data.
-1
-2
-3
-4
-5
-6
-7
-8
-9
-end data.
-
-temporary.
-select if x > 5 .
-list.
-
-list.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-X
-6.00
-7.00
-8.00
-9.00
-
-Table: Data List
-X
-1.00
-2.00
-3.00
-4.00
-5.00
-6.00
-7.00
-8.00
-9.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which crashed pspp when output drivers
-# tried to create output files in an unwritable directory.
-
-TEMPDIR=/tmp/pspp-tst-$$
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- chmod u+w $TEMPDIR
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create test syntax"
-cat > test.pspp <<EOF
-* By including at least one command in the input, we can ensure that PSPP
- also doesn't crash trying to create pspp.jnl in an unwritable directory.
-
-* By outputting a chart, we can check that charts are safe too.
-
-data list /x 1.
-begin data.
-1
-2
-3
-end data.
-frequencies x/histogram.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-# Mark our directory unwritable.
-chmod u-w $TEMPDIR
-
-# Iterate over the various drivers we support. We could use all of these
-# on a single PSPP invocation, except that charts are only supported for
-# a single driver at a time, and we'd prefer to test chart support for
-# all of our driver types.
-for file in pspp.csv pspp.html pspp.odt pspp.pdf pspp.txt; do
- # PSPP will fail to create the output file. Currently this doesn't cause
- # PSPP's exit status to be nonzero, although this is arguably incorrect.
- # At any rate, PSPP should not crash.
- activity="run pspp with $file driver"
- $SUPERVISOR $PSPP -o $file test.pspp >/dev/null 2>&1
- if [ $? -ne 0 ] ; then fail ; fi
-done
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug in the VALUE LABELS command
-# which caused a crash if it had a trailing /
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST LIST /X * .
-BEGIN DATA.
-1
-2
-3
-4
-END DATA.
-
-
-VALUE LABELS X 1 'one' 2 'two' 3 'three'/
-
-
-LIST VARIABLES=X.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests for a bug which caused VALUE LABELS to
-# crash when given invalid syntax
-
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST LIST /a * pref * .
-BEGIN DATA.
- 1.00 1.00
- 1.00 2.00
- 2.00 1.00
- 2.00 2.00
-END DATA.
-
-VALUE LABELS /var=a 'label for a'.
-
-
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-#Invalid syntax --- return value is non zero.
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TESTFILE
-if [ $? -ne 1 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the use of big numbers
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create data file"
-cat > $TEMPDIR/bignum.data << wizzah
-0
-0.1
-0.5
-0.8
-0.9
-0.999
-1
-2
-3
-4
-5
-12
-123
-1234
-12345
-123456
-1234567
-12345678
-123456789
-1234567890
-19999999999
-199999999999
-1234567890123
-19999999999999
-199999999999999
-1234567890123456
-19999999999999999
-123456789012345678
-1999999999999999999
-12345678901234567890
-199999999999999999999
-1234567890123456789012
-19999999999999999999999
-123456789012345678901234
-1999999999999999999999999
-12345678901234567890123456
-199999999999999999999999999
-1234567890123456789012345678
-19999999999999999999999999999
-123456789012345678901234567890
-1999999999999999999999999999999
-12345678901234567890123456789012
-199999999999999999999999999999999
-1234567890123456789012345678901234
-19999999999999999999999999999999999
-123456789012345678901234567890123456
-1999999999999999999999999999999999999
-12345678901234567890123456789012345678
-199999999999999999999999999999999999999
-1234567890123456789012345678901234567890
-1999999999999999999999999999999999999999
-1e40
-1.1e40
-1.5e40
-1e41
-1e50
-1e100
-1e150
-1e200
-1e250
-1e300
-1.79641e308
-wizzah
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="create program"
-cat > $TESTFILE <<foobar
-title 'Test use of big numbers'.
-
-*** Do the portable output.
-data list file='$TEMPDIR/bignum.data'/BIGNUM 1-40.
-list.
-
-*** Do the nonportable output for fun.
-descriptives BIGNUM.
-foobar
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-# Like the above comments say ...
-# ... if we get here without crashing, then the test has passed.
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the CORRELATIONS command
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program 1"
-cat << EOF > $TESTFILE
-set format = F11.3.
-data list notable list /foo * bar * wiz * bang *.
-begin data.
-1 0 3 1
-3 9 -50 5
-3 4 3 203
-4 -9 0 -4
-98 78 104 2
-3 50 -49 200
-. 4 4 4
-5 3 0 .
-end data.
-
-correlations
- variables = foo bar wiz bang
- /print nosig
- /missing = listwise
- .
-
-correlations
- variables = bar wiz
- /print nosig
- /missing = listwise
- .
-
-correlations
- variables = foo bar wiz bang
- /print nosig
- /missing = pairwise
- .
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 1"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare results 1"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Correlations
-,,foo,bar,wiz,bang
-foo,Pearson Correlation,1.000,.802,.890,-.308
-,Sig. (2-tailed),,.055,.017,.553
-bar,Pearson Correlation,.802,1.000,.519,.118
-,Sig. (2-tailed),.055,,.291,.824
-wiz,Pearson Correlation,.890,.519,1.000,-.344
-,Sig. (2-tailed),.017,.291,,.505
-bang,Pearson Correlation,-.308,.118,-.344,1.000
-,Sig. (2-tailed),.553,.824,.505,
-
-Table: Correlations
-,,bar,wiz
-bar,Pearson Correlation,1.000,.497
-,Sig. (2-tailed),,.210
-wiz,Pearson Correlation,.497,1.000
-,Sig. (2-tailed),.210,
-
-Table: Correlations
-,,foo,bar,wiz,bang
-foo,Pearson Correlation,1.000,.805,.883,-.308
-,Sig. (2-tailed),,.029,.008,.553
-,N,7,7,7,6
-bar,Pearson Correlation,.805,1.000,.497,.164
-,Sig. (2-tailed),.029,,.210,.725
-,N,7,8,8,7
-wiz,Pearson Correlation,.883,.497,1.000,-.337
-,Sig. (2-tailed),.008,.210,,.460
-,N,7,8,8,7
-bang,Pearson Correlation,-.308,.164,-.337,1.000
-,Sig. (2-tailed),.553,.725,.460,
-,N,6,7,7,7
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-# Now test that weights are properly handled.
-
-activity="create program 2"
-cat << EOF > $TESTFILE
-set format = F11.3.
-data list notable list /foo * bar * wiz * bang * w *.
-begin data.
-1 0 3 1 1
-3 9 -50 5 2
-3 4 3 203 1
-4 -9 0 -4 1
-98 78 104 2 3
-3 50 -49 200 1
-end data.
-
-weight by w.
-
-correlations
- variables = foo bar wiz bang
- /statistics=descriptives xprod
- .
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 2"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="copy results"
-cp $TEMPDIR/pspp.csv $TEMPDIR/weighted
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create program 3"
-cat << EOF > $TESTFILE
-set format = F11.3.
-data list notable list /foo * bar * wiz * bang * w *.
-begin data.
-1 0 3 1 1
-3 9 -50 5 1
-3 9 -50 5 1
-3 4 3 203 1
-4 -9 0 -4 1
-98 78 104 2 1
-98 78 104 2 1
-98 78 104 2 1
-3 50 -49 200 1
-end data.
-
-weight by w.
-
-correlations
- variables = foo bar wiz bang
- /statistics=descriptives xprod
- .
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 3"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="Compare weighted and unweighted results"
-diff $TEMPDIR/pspp.csv $TEMPDIR/weighted
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the DO IF command.
-
-TEMPDIR=/tmp/pspp-tst-$$
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="generate input and expected output"
-(for a in 0 1 ' '; do
- for b in 0 1 ' '; do
- for c in 0 1 ' '; do
- for d in 0 1 ' '; do
- abcd=$a$b$c$d
- echo "$abcd" 1>&3
- if test "$a" = "1"; then
- echo " $abcd A"
- elif test "$a" = " "; then
- :
- elif test "$b" = "1"; then
- echo " $abcd B"
- elif test "$b" = " "; then
- :
- elif test "$c" = "1"; then
- echo " $abcd C"
- elif test "$c" = " "; then
- :
- elif test "$d" = "1"; then
- echo " $abcd D"
- elif test "$d" = " "; then
- :
- else
- echo " $abcd E"
- fi
- done
- done
- done
-done) >test1.expected 3>test1.data
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create test1.pspp"
-cat > test1.pspp <<EOF
-DATA LIST FILE="test1.data"/A B C D 1-4 ABCD 1-4 (A).
-DO IF A.
-PRINT OUTFILE="test1.out"/ABCD 'A'.
-ELSE IF B.
-PRINT OUTFILE="test1.out"/ABCD 'B'.
-ELSE IF C.
-PRINT OUTFILE="test1.out"/ABCD 'C'.
-ELSE IF D.
-PRINT OUTFILE="test1.out"/ABCD 'D'.
-ELSE.
-PRINT OUTFILE="test1.out"/ABCD 'E'.
-END IF.
-EXECUTE.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run test1"
-$SUPERVISOR $PSPP -o pspp.csv test1.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare test1 results"
-diff -u $TEMPDIR/test1.out $TEMPDIR/test1.expected
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests the DO REPEAT command.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-
-activity="create program"
-cat > $TESTFILE << EOF
-DATA LIST NOTABLE /a 1.
-BEGIN DATA.
-0
-END DATA.
-
-DO REPEAT h = h0 TO h3 / x = 0 TO 3 / y = 8, 7.5, 6, 5.
- COMPUTE h = x + y.
-END REPEAT.
-
-VECTOR v(6).
-COMPUTE #idx = 0.
-DO REPEAT i = 1 TO 2.
- DO REPEAT j = 3 TO 5.
- COMPUTE #x = i + j.
- COMPUTE #idx = #idx + 1.
- COMPUTE v(#idx) = #x.
- END REPEAT.
-END REPEAT.
-
-LIST.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare results"
-perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.csv
-diff -b $TEMPDIR/pspp.csv - <<EOF
-Table: Data List
-a,h0,h1,h2,h3,v1,v2,v3,v4,v5,v6
-0,8.00,8.50,8.00,8.00,4.00,5.00,6.00,5.00,6.00,7.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests the ERASE command.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create file"
-cat > $TEMPDIR/foobar <<EOF
-xyzzy
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="check for file 1"
-if [ ! -f $TEMPDIR/foobar ] ; then no_result ; fi
-
-
-activity="create program 1"
-cat > $TESTFILE <<EOF
-set safer on
-
-erase FILE='foobar'.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-# foobar must still exist
-activity="check for file 2"
-if [ ! -f $TEMPDIR/foobar ] ; then fail ; fi
-
-# This command must fail
-activity="run prog 1"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TESTFILE
-if [ $? -eq 0 ] ; then fail ; fi
-
-
-activity="create program 2"
-cat > $TESTFILE <<EOF
-
-erase FILE='foobar'.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run prog 2"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-# foobar should now be gone
-if [ -f $TEMPDIR/foobar ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the EXTREME subcommand of the EXAMINE command.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-data list free /V1 W
-begin data.
-1 1
-2 1
-3 2
-3 1
-4 1
-5 1
-6 1
-7 1
-8 1
-9 1
-10 1
-11 1
-12 1
-13 1
-14 1
-15 1
-16 1
-17 1
-18 2
-19 1
-20 1
-end data.
-
-weight by w.
-
-examine v1
- /statistics=extreme(6)
- .
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare results"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Case Processing Summary
-,Cases,,,,,
-,Valid,,Missing,,Total,
-,N,Percent,N,Percent,N,Percent
-V1,23.00,100%,.00,0%,23.00,100%
-
-Table: Extreme Values
-,,,Case Number,Value
-V1,Highest,1,21,20.00
-,,2,20,19.00
-,,3,19,18.00
-,,4,19,18.00
-,,5,18,17.00
-,,6,17,16.00
-,Lowest,1,1,1.00
-,,2,2,2.00
-,,3,3,3.00
-,,4,3,3.00
-,,5,4,3.00
-,,6,5,4.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests the PERCENTILES subcommand of the EXAMINE command.
-# In particular it tests that it behaves properly when there are only
-# a few cases
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST LIST /X *.
-BEGIN DATA.
-2.00
-8.00
-5.00
-END DATA.
-
-EXAMINE /x
- /PERCENTILES=HAVERAGE.
-
-EXAMINE /x
- /PERCENTILES=WAVERAGE.
-
-EXAMINE /x
- /PERCENTILES=ROUND.
-
-EXAMINE /x
- /PERCENTILES=EMPIRICAL.
-
-EXAMINE /x
- /PERCENTILES=AEMPIRICAL.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare results"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-X,F8.0
-
-Table: Case Processing Summary
-,Cases,,,,,
-,Valid,,Missing,,Total,
-,N,Percent,N,Percent,N,Percent
-X,3,100%,0,0%,3,100%
-
-Table: Percentiles
-,,Percentiles,,,,,,
-,,5,10,25,50,75,90,95
-X,HAverage,.40,.80,2.00,5.00,8.00,8.00,8.00
-,Tukey's Hinges,,,3.50,5.00,6.50,,
-
-Table: Case Processing Summary
-,Cases,,,,,
-,Valid,,Missing,,Total,
-,N,Percent,N,Percent,N,Percent
-X,3,100%,0,0%,3,100%
-
-Table: Percentiles
-,,Percentiles,,,,,,
-,,5,10,25,50,75,90,95
-X,Weighted Average,.30,.60,1.50,3.50,5.75,7.10,7.55
-,Tukey's Hinges,,,3.50,5.00,6.50,,
-
-Table: Case Processing Summary
-,Cases,,,,,
-,Valid,,Missing,,Total,
-,N,Percent,N,Percent,N,Percent
-X,3,100%,0,0%,3,100%
-
-Table: Percentiles
-,,Percentiles,,,,,,
-,,5,10,25,50,75,90,95
-X,Rounded,.00,.00,2.00,5.00,5.00,8.00,8.00
-,Tukey's Hinges,,,3.50,5.00,6.50,,
-
-Table: Case Processing Summary
-,Cases,,,,,
-,Valid,,Missing,,Total,
-,N,Percent,N,Percent,N,Percent
-X,3,100%,0,0%,3,100%
-
-Table: Percentiles
-,,Percentiles,,,,,,
-,,5,10,25,50,75,90,95
-X,Empirical,2.00,2.00,2.00,5.00,8.00,8.00,8.00
-,Tukey's Hinges,,,3.50,5.00,6.50,,
-
-Table: Case Processing Summary
-,Cases,,,,,
-,Valid,,Missing,,Total,
-,N,Percent,N,Percent,N,Percent
-X,3,100%,0,0%,3,100%
-
-Table: Percentiles
-,,Percentiles,,,,,,
-,,5,10,25,50,75,90,95
-X,Empirical with averaging,2.00,2.00,2.00,5.00,8.00,8.00,8.00
-,Tukey's Hinges,,,3.50,5.00,6.50,,
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests the EXAMINE command.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST LIST /QUALITY * W * BRAND * .
-BEGIN DATA
-3 1 1
-2 2 1
-1 2 1
-1 1 1
-4 1 1
-4 1 1
-5 1 2
-2 1 2
-4 4 2
-2 1 2
-3 1 2
-7 1 3
-4 2 3
-5 3 3
-3 1 3
-6 1 3
-END DATA
-
-WEIGHT BY w.
-
-VARIABLE LABELS brand 'Manufacturer'.
-VARIABLE LABELS quality 'Breaking Strain'.
-
-VALUE LABELS /brand 1 'Aspeger' 2 'Bloggs' 3 'Charlies'.
-
-LIST /FORMAT=NUMBERED.
-
-EXAMINE
- quality BY brand
- /STATISTICS descriptives extreme(3)
- .
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-# NOTE: In the following data: Only the extreme values have been checked
-# The descriptives have been blindly pasted.
-activity="compare results"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-QUALITY,F8.0
-W,F8.0
-BRAND,F8.0
-
-Table: Data List
-Case Number,QUALITY,W,BRAND
-1,3.00,1.00,1.00
-2,2.00,2.00,1.00
-3,1.00,2.00,1.00
-4,1.00,1.00,1.00
-5,4.00,1.00,1.00
-6,4.00,1.00,1.00
-7,5.00,1.00,2.00
-8,2.00,1.00,2.00
-9,4.00,4.00,2.00
-10,2.00,1.00,2.00
-11,3.00,1.00,2.00
-12,7.00,1.00,3.00
-13,4.00,2.00,3.00
-14,5.00,3.00,3.00
-15,3.00,1.00,3.00
-16,6.00,1.00,3.00
-
-Table: Case Processing Summary
-,Cases,,,,,
-,Valid,,Missing,,Total,
-,N,Percent,N,Percent,N,Percent
-Breaking Strain,24.00,100%,.00,0%,24.00,100%
-
-Table: Extreme Values
-,,,Case Number,Value
-Breaking Strain,Highest,1,12,7.00
-,,2,16,6.00
-,,3,7,5.00
-,Lowest,1,3,1.00
-,,2,3,1.00
-,,3,4,1.00
-
-Table: Descriptives
-,,,Statistic,Std. Error
-Breaking Strain,Mean,,3.54,.32
-,95% Confidence Interval for Mean,Lower Bound,2.87,
-,,Upper Bound,4.21,
-,5% Trimmed Mean,,3.50,
-,Median,,4.00,
-,Variance,,2.52,
-,Std. Deviation,,1.59,
-,Minimum,,1.00,
-,Maximum,,7.00,
-,Range,,6.00,
-,Interquartile Range,,2.75,
-,Skewness,,.06,.47
-,Kurtosis,,-.36,.92
-
-Table: Case Processing Summary
-,,Cases,,,,,
-,,Valid,,Missing,,Total,
-,Manufacturer,N,Percent,N,Percent,N,Percent
-Breaking Strain,Aspeger,8.00,100%,.00,0%,8.00,100%
-,Bloggs,8.00,100%,.00,0%,8.00,100%
-,Charlies,8.00,100%,.00,0%,8.00,100%
-
-Table: Extreme Values
-,Manufacturer,,,Case Number,Value
-Breaking Strain,Aspeger,Highest,1,5,4.00
-,,,2,6,4.00
-,,,3,1,3.00
-,,Lowest,1,3,1.00
-,,,2,3,1.00
-,,,3,4,1.00
-,Bloggs,Highest,1,7,5.00
-,,,2,9,4.00
-,,,3,9,4.00
-,,Lowest,1,8,2.00
-,,,2,10,2.00
-,,,3,11,3.00
-,Charlies,Highest,1,12,7.00
-,,,2,16,6.00
-,,,3,14,5.00
-,,Lowest,1,15,3.00
-,,,2,13,4.00
-,,,3,13,4.00
-
-Table: Descriptives
-,Manufacturer,,,Statistic,Std. Error
-Breaking Strain,Aspeger,Mean,,2.25,.45
-,,95% Confidence Interval for Mean,Lower Bound,1.18,
-,,,Upper Bound,3.32,
-,,5% Trimmed Mean,,2.22,
-,,Median,,2.00,
-,,Variance,,1.64,
-,,Std. Deviation,,1.28,
-,,Minimum,,1.00,
-,,Maximum,,4.00,
-,,Range,,3.00,
-,,Interquartile Range,,2.75,
-,,Skewness,,.47,.75
-,,Kurtosis,,-1.55,1.48
-,Bloggs,Mean,,3.50,.38
-,,95% Confidence Interval for Mean,Lower Bound,2.61,
-,,,Upper Bound,4.39,
-,,5% Trimmed Mean,,3.50,
-,,Median,,4.00,
-,,Variance,,1.14,
-,,Std. Deviation,,1.07,
-,,Minimum,,2.00,
-,,Maximum,,5.00,
-,,Range,,3.00,
-,,Interquartile Range,,1.75,
-,,Skewness,,-.47,.75
-,,Kurtosis,,-.83,1.48
-,Charlies,Mean,,4.88,.44
-,,95% Confidence Interval for Mean,Lower Bound,3.83,
-,,,Upper Bound,5.92,
-,,5% Trimmed Mean,,4.86,
-,,Median,,5.00,
-,,Variance,,1.55,
-,,Std. Deviation,,1.25,
-,,Minimum,,3.00,
-,,Maximum,,7.00,
-,,Range,,4.00,
-,,Interquartile Range,,1.75,
-,,Skewness,,.30,.75
-,,Kurtosis,,.15,1.48
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program's primary purpose is to test the FILE HANDLE command
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create file"
-cat > $TEMPDIR/wiggle.txt << EOF
-1
-2
-5
-109
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-
-activity="create program"
-cat > $TESTFILE << EOF
-FILE HANDLE myhandle /NAME='$TEMPDIR/wiggle.txt'.
-DATA LIST LIST FILE=myhandle /x *.
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Reading free-form data from myhandle.
-Variable,Format
-x,F8.0
-
-Table: Data List
-x
-1.00
-2.00
-5.00
-109.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the FILE LABEL and DOCUMENT, and ADD DOCUMENT commands
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE << EOF
-
-/* Set up a dummy active file in memory.
-data list /X 1 Y 2.
-begin data.
-16
-27
-38
-49
-50
-end data.
-
-/* Add value labels for some further testing of value labels.
-value labels x y 1 'first label' 2 'second label' 3 'third label'.
-add value labels x 1 'first label mark two'.
-
-/* Add a file label and a few documents.
-file label This is a test file label.
-document First line of a document
-Second line of a document
-The last line should end with a period: .
-
-
-/* Display the documents.
-display documents.
-display file label.
-
-ADD DOCUMENT 'Line one' 'Line two'.
-
-/* Save the active file then get it and display the documents again.
-save /OUTFILE='foo.save'.
-get /FILE='foo.save'.
-display documents.
-display file label.
-
-/* There is an interesting interaction that occurs if the 'execute'
-/* command below. What happens is that an error message is output
-/* at the next 'save' command that 'foo.save' is already open for
-/* input. This is because the 'get' hasn't been executed yet and
-/* therefore PSPP would be reading from and writing to the same
-/* file at once, which is obviously a Bad Thing. But 'execute'
-/* here clears up that potential problem.
-execute.
-
-/* Add another (shorter) document and try again.
-document There should be another document now.
-display documents.
-
-/* Save and get.
-save /OUTFILE='foo.save'.
-get /FILE='foo.save'.
-display documents.
-display file label.
-
-/* Done.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-# We need to filter out the dates/times
-activity="date filter"
-sed 's/(Entered [^)]*)/(Entered <date>)/' $TEMPDIR/pspp.csv > $TEMPDIR/pspp.filtered
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare results"
-diff -c $TEMPDIR/pspp.filtered - <<EOF
-Table: Reading 1 record from INLINE.
-Variable,Record,Columns,Format
-X,1,1- 1,F1.0
-Y,1,2- 2,F1.0
-
-Documents in the active file:
-
-document First line of a document
-
-Second line of a document
-
-The last line should end with a period: .
-
-(Entered <date>)
-
-File label:
-
-This is a test file label
-
-Documents in the active file:
-
-document First line of a document
-
-Second line of a document
-
-The last line should end with a period: .
-
-(Entered <date>)
-
-Line one
-
-Line two
-
-(Entered <date>)
-
-File label:
-
-This is a test file label
-
-Documents in the active file:
-
-document First line of a document
-
-Second line of a document
-
-The last line should end with a period: .
-
-(Entered <date>)
-
-Line one
-
-Line two
-
-(Entered <date>)
-
-document There should be another document now.
-
-(Entered <date>)
-
-Documents in the active file:
-
-document First line of a document
-
-Second line of a document
-
-The last line should end with a period: .
-
-(Entered <date>)
-
-Line one
-
-Line two
-
-(Entered <date>)
-
-document There should be another document now.
-
-(Entered <date>)
-
-File label:
-
-This is a test file label
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests ....
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE << EOF
-data list notable /X 1-2.
-begin data.
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-end data.
-compute FILTER_$ = mod(x,2).
-
-filter by filter_$.
-list.
-filter off.
-list.
-compute filter_$ = 1 - filter_$.
-filter by filter_$.
-list.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="check results"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-X,FILTER_$
-1,1.00
-3,1.00
-5,1.00
-7,1.00
-9,1.00
-
-Table: Data List
-X,FILTER_$
-1,1.00
-2,.00
-3,1.00
-4,.00
-5,1.00
-6,.00
-7,1.00
-8,.00
-9,1.00
-10,.00
-
-Table: Data List
-X,FILTER_$
-2,1.00
-4,1.00
-6,1.00
-8,1.00
-10,1.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that pspp can read Gnumeric files
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="zip the gnm file and place it in the test directory"
-gzip -c $top_srcdir/tests/Book1.gnm.unzipped > $TEMPDIR/Book1.gnumeric
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create program 1"
-cat > $TESTFILE <<EOF
-GET DATA /TYPE=gnm /FILE='$TEMPDIR/Book1.gnumeric' /READNAMES=off /SHEET=name 'This' /CELLRANGE=range 'g9:i13' .
-DISPLAY VARIABLES.
-LIST.
-
-
-GET DATA /TYPE=gnm /FILE='$TEMPDIR/Book1.gnumeric' /READNAMES=on /SHEET=name 'This' /CELLRANGE=range 'g8:i13' .
-DISPLAY VARIABLES.
-LIST.
-
-
-GET DATA /TYPE=gnm /FILE='$TEMPDIR/Book1.gnumeric' /SHEET=index 3.
-DISPLAY VARIABLES.
-LIST.
-
-* This sheet has no data in one of its variables
-GET DATA /TYPE=gnm /FILE='$TEMPDIR/Book1.gnumeric' /READNAMES=on /SHEET=index 5.
-DISPLAY VARIABLES.
-LIST.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 1"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare output 1"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Variable,Description,,Position
-VAR001,Format: F8.2,,1
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-VAR002,Format: A8,,2
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 8,,
-VAR003,Format: F8.2,,3
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-
-Table: Data List
-VAR001,VAR002,VAR003
-.00,fred ,20.00
-1.00,11 ,21.00
-2.00,twelve ,22.00
-3.00,13 ,23.00
-4.00,14 ,24.00
-
-Variable,Description,,Position
-V1,Format: F8.2,,1
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-V2,Format: A8,,2
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 8,,
-VAR001,Format: F8.2,,3
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-
-Table: Data List
-V1,V2,VAR001
-.00,fred ,20.00
-1.00,11 ,21.00
-2.00,twelve ,22.00
-3.00,13 ,23.00
-4.00,14 ,24.00
-
-Variable,Description,,Position
-name,Format: A8,,1
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 8,,
-id,Format: F8.2,,2
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-height,Format: F8.2,,3
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-
-Table: Data List
-name,id,height
-fred ,.00,23.40
-bert ,1.00,.56
-charlie ,2.00,.
-dick ,3.00,-34.09
-
-Variable,Description,,Position
-vone,Format: F8.2,,1
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-vtwo,Format: F8.2,,2
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-vthree,Format: A8,,3
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 8,,
-v4,Format: F8.2,,4
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-
-Table: Data List
-vone,vtwo,vthree,v4
-1.00,3.00,,5.00
-2.00,4.00,,6.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-activity="create program 2"
-cat > $TESTFILE <<EOF
-* This sheet is empty
-GET DATA /TYPE=gnm /FILE='$TEMPDIR/Book1.gnumeric' /SHEET=name 'Empty'.
-
-
-* This sheet doesnt exist
-GET DATA /TYPE=gnm /FILE='$TEMPDIR/Book1.gnumeric' /SHEET=name 'foobarxx'.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 2"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE > /dev/null
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare output 2"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-"warning: Selected sheet or range of spreadsheet ""$TEMPDIR/Book1.gnumeric"" is empty."
-
-"warning: Selected sheet or range of spreadsheet ""$TEMPDIR/Book1.gnumeric"" is empty."
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the psql import feature.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-port=6543
-dbase=pspptest
-PG_CONFIG=${PG_CONFIG:=pg_config}
-pgpath=`$PG_CONFIG --bindir`
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- PGHOST=$TEMPDIR $pgpath/pg_ctl -D $TEMPDIR/cluster stop -W -o "-k $TEMPDIR -h ''" > /dev/null 2>&1
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-if [ ! -x $pgpath/initdb ] ; then
- echo 'No Postgres server was found, so the postgres database interface cannot be tested.'
- cleanup;
- exit 77;
-fi
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create cluster"
-$pgpath/initdb -D $TEMPDIR/cluster -A trust > /dev/null
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run server"
-PGHOST=$TEMPDIR PGPORT=$port $pgpath/pg_ctl -D $TEMPDIR/cluster start -w -o "-k $TEMPDIR -h ''" > /dev/null
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="create database"
-$pgpath/createdb -h $TEMPDIR -p $port $dbase > /dev/null 2> /dev/null
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="populate database"
-$pgpath/psql -h $TEMPDIR -p $port $dbase > /dev/null << EOF
-
-CREATE TABLE empty (a int, b date, c numeric(23, 4));
-
--- a largeish table to check big queries work ok.
-CREATE TABLE large (x int);
-INSERT INTO large (select * from generate_series(1, 1000));
-
-
-CREATE TABLE thing (
- bool bool ,
- bytea bytea ,
- char char ,
- int8 int8 ,
- int2 int2 ,
- int4 int4 ,
- numeric numeric(50,6) ,
- text text ,
- oid oid ,
- float4 float4 ,
- float8 float8 ,
- money money ,
- pbchar bpchar ,
- varchar varchar ,
- date date ,
- time time ,
- timestamp timestamp ,
- timestamptz timestamptz ,
- interval interval ,
- timetz timetz
-);
-
-INSERT INTO thing VALUES (
- false,
- '0',
- 'a',
- '0',
- 0,
- 0,
- -256.098,
- 'this-long-text',
- 0,
- 0,
- 0,
- '0.01',
- 'a',
- 'A',
- '1-Jan-2000',
- '00:00',
- 'January 8 04:05:06 1999',
- 'January 8 04:05:06 1999 PST',
- '1 minutes',
- '10:09 UTC+4'
-);
-
-INSERT INTO thing VALUES (
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
-);
-
-INSERT INTO thing VALUES (
- true,
- '1',
- 'b',
- '1',
- 1,
- 1,
- 65535.00001,
- 'that-long-text',
- 1,
- 1,
- 1,
- '1.23',
- 'b',
- 'B',
- '10-Jan-1963',
- '01:05:02',
- '10-Jan-1963 23:58:00',
- '10-Jan-1963 23:58:00 CET',
- '2 year 1 month 12 days 1 hours 3 minutes 4 seconds',
- '01:05:02 UTC-7'
-);
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="create program 1"
-cat > $TESTFILE <<EOF
-GET DATA /TYPE=psql
- /CONNECT="host=$TEMPDIR port=$port dbname=$dbase"
- /UNENCRYPTED
- /SQL="select * from thing".
-
-DISPLAY DICTIONARY.
-
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 1"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output 1"
-diff -c $TEMPDIR/pspp.csv - << 'EOF'
-Variable,Description,,Position
-bool,Format: F8.2,,1
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-bytea,Format: AHEX2,,2
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 1,,
-char,Format: A8,,3
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 8,,
-int8,Format: F8.2,,4
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-int2,Format: F8.2,,5
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-int4,Format: F8.2,,6
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-numeric,Format: E40.6,,7
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-text,Format: A16,,8
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 16,,
-oid,Format: F8.2,,9
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-float4,Format: F8.2,,10
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-float8,Format: F8.2,,11
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-money,Format: DOLLAR8.2,,12
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-pbchar,Format: A8,,13
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 8,,
-varchar,Format: A8,,14
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 8,,
-date,Format: DATE11,,15
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-time,Format: TIME11.0,,16
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-timestamp,Format: DATETIME22.0,,17
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-timestamptz,Format: DATETIME22.0,,18
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-interval,Format: DTIME13.0,,19
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-interval_months,Format: F3.0,,20
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-timetz,Format: TIME11.0,,21
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-timetz_zone,Format: F8.2,,22
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-
-Table: Data List
-bool,bytea,char,int8,int2,int4,numeric,text,oid,float4,float8,money,pbchar,varchar,date,time,timestamp,timestamptz,interval,interval_months,timetz,timetz_zone
-.00,30,a ,.00,.00,.00,-2.560980E+002,this-long-text ,.00,.00,.00,$.01,a ,A ,01-JAN-2000,0:00:00,08-JAN-1999 04:05:06,08-JAN-1999 12:05:06,0 00:01:00,0,10:09:00,4.00
-. ,20,,. ,. ,. ,. ,,. ,. ,. ,. ,,,.,.,.,.,.,.,.,.
-1.00,31,b ,1.00,1.00,1.00,6.553500E+004,that-long-text ,.00,1.00,1.00,$1.23,b ,B ,10-JAN-1963,1:05:02,10-JAN-1963 23:58:00,10-JAN-1963 22:58:00,12 01:03:04,25,1:05:02,-7.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-activity="create program 2"
-cat > $TESTFILE <<EOF
-GET DATA /TYPE=psql
- /CONNECT="host=$TEMPDIR port=$port dbname=$dbase"
- /UNENCRYPTED
- /SQL="select * from empty".
-
-DISPLAY DICTIONARY.
-
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 2"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output 2"
-diff -c $TEMPDIR/pspp.csv - << 'EOF'
-Variable,Description,,Position
-a,Format: F8.2,,1
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-b,Format: DATE11,,2
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-c,Format: E40.2,,3
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="create program 3"
-cat > $TESTFILE <<EOF
-GET DATA /TYPE=psql
- /CONNECT="host=$TEMPDIR port=$port dbname=$dbase"
- /UNENCRYPTED
- /BSIZE = 27
- /SQL="select * from large".
-
-NUMERIC diff.
-COMPUTE diff = x - lag (x).
-
-TEMPORARY.
-SELECT IF (diff <> 1).
-LIST.
-
-TEMPORARY.
-N OF CASES 6.
-LIST.
-
-SORT CASES BY x (D).
-
-TEMPORARY.
-N OF CASES 6.
-LIST.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 3"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output 3"
-diff -c $TEMPDIR/pspp.csv - << 'EOF'
-Table: Data List
-x,diff
-1.00,.
-2.00,1.00
-3.00,1.00
-4.00,1.00
-5.00,1.00
-6.00,1.00
-
-Table: Data List
-x,diff
-1000.00,1.00
-999.00,1.00
-998.00,1.00
-997.00,1.00
-996.00,1.00
-995.00,1.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-
-# Check for a bug caused by having string variables in the database,
-# all of which are null.
-
-activity="populate database 4"
-$pgpath/psql -h $TEMPDIR -p $port $dbase > /dev/null << EOF
-
--- a table which has a text field containing only null, or zero
--- length entries.
-
-CREATE TABLE foo (int4 int4, text text);
-
-INSERT INTO foo VALUES ('12', '');
-
-INSERT INTO foo VALUES (null, '');
-
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-activity="create program 4"
-cat > $TESTFILE <<EOF
-GET DATA /TYPE=psql
- /CONNECT="host=$TEMPDIR port=$port dbname=$dbase"
- /UNENCRYPTED
- /SQL="select * from foo".
-
-DISPLAY DICTIONARY.
-
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 4"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the examples for GET DATA/TYPE=TXT given in the
-# PSPP manual.
-
-TEMPDIR=/tmp/pspp-tst-$$
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create passwd.data"
-cat > passwd.data <<'EOF'
-root:$1$nyeSP5gD$pDq/:0:0:,,,:/root:/bin/bash
-blp:$1$BrP/pFg4$g7OG:1000:1000:Ben Pfaff,,,:/home/blp:/bin/bash
-john:$1$JBuq/Fioq$g4A:1001:1001:John Darrington,,,:/home/john:/bin/bash
-jhs:$1$D3li4hPL$88X1:1002:1002:Jason Stover,,,:/home/jhs:/bin/csh
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create cars.data"
-cat > cars.data <<'EOF'
-model year mileage price type age
-Civic 2002 29883 15900 Si 2
-Civic 2003 13415 15900 EX 1
-Civic 1992 107000 3800 n/a 12
-Accord 2002 26613 17900 EX 1
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create pets.data"
-cat > pets.data <<'EOF'
-'Pet''s Name', "Age", "Color", "Date Received", "Price", "Height", "Type"
-, (Years), , , (Dollars), ,
-"Rover", 4.5, Brown, "12 Feb 2004", 80, '1''4"', "Dog"
-"Charlie", , Gold, "5 Apr 2007", 12.3, "3""", "Fish"
-"Molly", 2, Black, "12 Dec 2006", 25, '5"', "Cat"
-"Gilly", , White, "10 Apr 2007", 10, "3""", "Guinea Pig"
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create test.pspp"
-cat > test.pspp <<'EOF'
-GET DATA /TYPE=TXT /FILE='passwd.data' /DELIMITERS=':'
- /VARIABLES=username A20
- password A40
- uid F10
- gid F10
- gecos A40
- home A40
- shell A40.
-LIST.
-
-GET DATA /TYPE=TXT /FILE='cars.data' /DELIMITERS=' ' /FIRSTCASE=2
- /VARIABLES=model A8
- year F4
- mileage F6
- price F5
- type A4
- age F2.
-LIST.
-
-GET DATA /TYPE=TXT /FILE='cars.data' /ARRANGEMENT=FIXED /FIRSTCASE=2
- /VARIABLES=model 0-7 A
- year 8-15 F
- mileage 16-23 F
- price 24-31 F
- type 32-39 A
- age 40-47 F.
-LIST.
-
-GET DATA /TYPE=TXT /FILE='pets.data' /DELIMITERS=', ' /QUALIFIER='''"' /ESCAPE
- /FIRSTCASE=3
- /VARIABLES=name A10
- age F3.1
- color A5
- received EDATE10
- price F5.2
- height a5
- type a10.
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run test"
-$SUPERVISOR $PSPP -o pspp.csv test.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare test results"
-diff -c $TEMPDIR/pspp.csv - <<'EOF'
-Table: Data List
-username,password,uid,gid,gecos,home,shell
-root ,$1$nyeSP5gD$pDq/ ,0,0,",,, ",/root ,/bin/bash
-blp ,$1$BrP/pFg4$g7OG ,1000,1000,"Ben Pfaff,,, ",/home/blp ,/bin/bash
-john ,$1$JBuq/Fioq$g4A ,1001,1001,"John Darrington,,, ",/home/john ,/bin/bash
-jhs ,$1$D3li4hPL$88X1 ,1002,1002,"Jason Stover,,, ",/home/jhs ,/bin/csh
-
-Table: Data List
-model,year,mileage,price,type,age
-Civic ,2002,29883,15900,Si ,2
-Civic ,2003,13415,15900,EX ,1
-Civic ,1992,107000,3800,n/a ,12
-Accord ,2002,26613,17900,EX ,1
-
-Table: Data List
-model,year,mileage,price,type,age
-Civic ,2002,29883,15900,Si ,2
-Civic ,2003,13415,15900,EX ,1
-Civic ,1992,107000,3800,n/a ,12
-Accord ,2002,26613,17900,EX ,1
-
-Table: Data List
-name,age,color,received,price,height,type
-Rover ,4.5,Brown,12.02.2004,80.00,"1'4"" ",Dog
-Charlie ,. ,Gold ,05.04.2007,12.30,"3"" ",Fish
-Molly ,2.0,Black,12.12.2006,25.00,"5"" ",Cat
-Gilly ,. ,White,10.04.2007,10.00,"3"" ",Guinea Pig
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests the IMPORTCASES feature of GET DATA /TYPE=TXT.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-: ${PERL:=perl}
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create data file using Perl"
-$PERL > test.data <<'EOF'
-for ($i = 1; $i <= 100; $i++) {
- printf "%02d\n", $i;
-}
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-# Create command file.
-activity="create program"
-cat > $TESTFILE << EOF
-get data /type=txt /file='test.data' /importcases=first 10 /variables x f8.0.
-list.
-
-get data /type=txt /file='test.data' /importcases=percent 1 /variables x f8.0.
-list.
-
-get data /type=txt /file='test.data' /importcases=percent 35 /variables x f8.0.
-list.
-
-get data /type=txt /file='test.data' /importcases=percent 95 /variables x f8.0.
-list.
-
-get data /type=txt /file='test.data' /importcases=percent 100 /variables x f8.0.
-list.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-x
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-
-Table: Data List
-x
-1
-2
-
-Table: Data List
-x
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
-14
-15
-16
-17
-18
-19
-20
-21
-22
-23
-24
-25
-26
-27
-28
-29
-30
-31
-32
-33
-34
-35
-36
-
-Table: Data List
-x
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
-14
-15
-16
-17
-18
-19
-20
-21
-22
-23
-24
-25
-26
-27
-28
-29
-30
-31
-32
-33
-34
-35
-36
-37
-38
-39
-40
-41
-42
-43
-44
-45
-46
-47
-48
-49
-50
-51
-52
-53
-54
-55
-56
-57
-58
-59
-60
-61
-62
-63
-64
-65
-66
-67
-68
-69
-70
-71
-72
-73
-74
-75
-76
-77
-78
-79
-80
-81
-82
-83
-84
-85
-86
-87
-88
-89
-90
-91
-92
-93
-94
-95
-96
-
-Table: Data List
-x
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
-14
-15
-16
-17
-18
-19
-20
-21
-22
-23
-24
-25
-26
-27
-28
-29
-30
-31
-32
-33
-34
-35
-36
-37
-38
-39
-40
-41
-42
-43
-44
-45
-46
-47
-48
-49
-50
-51
-52
-53
-54
-55
-56
-57
-58
-59
-60
-61
-62
-63
-64
-65
-66
-67
-68
-69
-70
-71
-72
-73
-74
-75
-76
-77
-78
-79
-80
-81
-82
-83
-84
-85
-86
-87
-88
-89
-90
-91
-92
-93
-94
-95
-96
-97
-98
-99
-100
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests features of GET DATA /TYPE=TXT input program that
-# it has in common with DATA LIST, using tests drawn from
-# data-list.sh.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-# Create command file.
-activity="create program"
-cat > $TESTFILE << EOF
-get data /type=txt /file=inline /delimiters="|X"
- /variables=A f7.2 B f7.2 C f7.2 D f7.2.
-begin data.
-1|23X45|2.03
-2X22|34|23|
-3|34|34X34
-end data.
-
-list.
-
-get data /type=txt /file=inline /delimiters=', ' /delcase=variables 4
- /firstcase=2 /variables=A f7.2 B f7.2 C f7.2 D f7.2.
-begin data.
-# This record is ignored.
-,1,2,3
-,4,,5
-6
-7,
-8 9
-0,1,,,
-,,,,
-2
-
-3
-4
-5
-end data.
-list.
-
-get data /type=txt /file=inline /delimiters='\t' /delcase=variables 4
- /firstcase=3 /variables=A f7.2 B f7.2 C f7.2 D f7.2.
-begin data.
-# These records
-# are skipped.
-1 2 3 4
-1 2 3
-1 2 4
-1 2
-1 3 4
-1 3
-1 4
-1
- 2 3 4
- 2 3
- 2 4
- 2
- 3 4
- 3
- 4
-
-end data.
-list.
-
-get data /type=txt /file=inline /arrangement=fixed /fixcase=3 /variables=
- /1 start 0-19 adate
- /2 end 0-19 adate
- /3 count 0-2 f.
-begin data.
-07-22-2007
-10-06-2007
-321
-07-14-1789
-08-26-1789
-4
-01-01-1972
-12-31-1999
-682
-end data.
-list.
-
-get data /type=txt /file=inline /arrangement=fixed /fixcase=2 /variables=
- /1 x 0 f
- y 1 f.
-begin data.
-12
-
-34
-
-56
-
-78
-
-90
-
-end data.
-list.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare output"
-diff -b $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-A,B,C,D
-1.00,23.00,45.00,2.03
-2.00,22.00,34.00,23.00
-3.00,34.00,34.00,34.00
-
-Table: Data List
-A,B,C,D
-. ,1.00,2.00,3.00
-. ,4.00,. ,5.00
-6.00,7.00,. ,8.00
-9.00,.00,1.00,.
-. ,. ,. ,.
-. ,. ,. ,2.00
-. ,3.00,4.00,5.00
-
-Table: Data List
-A,B,C,D
-1.00,2.00,3.00,4.00
-1.00,2.00,3.00,.
-1.00,2.00,. ,4.00
-1.00,2.00,. ,.
-1.00,. ,3.00,4.00
-1.00,. ,3.00,.
-1.00,. ,. ,4.00
-1.00,. ,. ,.
-. ,2.00,3.00,4.00
-. ,2.00,3.00,.
-. ,2.00,. ,4.00
-. ,2.00,. ,.
-. ,. ,3.00,4.00
-. ,. ,3.00,.
-. ,. ,. ,4.00
-. ,. ,. ,.
-
-Table: Data List
-start,end,count
-07/22/2007,10/06/2007,321
-07/14/1789,08/26/1789,4
-01/01/1972,12/31/1999,682
-
-Table: Data List
-x,y
-1,2
-3,4
-5,6
-7,8
-9,0
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the IMPORT and EXPORT commands
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST LIST NOTABLE /X Y.
-BEGIN DATA.
-1 2
-3 .
-5 6
-END DATA.
-
-EXPORT /OUTFILE='wiz.por'.
-IMPORT /FILE='wiz.por'.
-
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-X,Y
-1.00,2.00
-3.00,.
-5.00,6.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the INPUT PROGRAM command, specifically all of
-# the examples given in the user manual.
-
-TEMPDIR=/tmp/pspp-tst-$$
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create a.data"
-cat > a.data <<EOF
-1
-2
-3
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create b.data"
-cat > b.data <<EOF
-4
-5
-6
-7
-8
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create test1.pspp"
-cat > test1.pspp <<EOF
-INPUT PROGRAM.
- DATA LIST NOTABLE FILE='a.data'/X 1-10.
- DATA LIST NOTABLE FILE='b.data'/Y 1-10.
-END INPUT PROGRAM.
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run test1"
-$SUPERVISOR $PSPP -o pspp.csv test1.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare test1 results"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-X,Y
-1,4
-2,5
-3,6
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="create test2.pspp"
-cat > test2.pspp <<EOF
-INPUT PROGRAM.
- NUMERIC #A #B.
-
- DO IF NOT #A.
- DATA LIST NOTABLE END=#A FILE='a.data'/X 1-10.
- END IF.
- DO IF NOT #B.
- DATA LIST NOTABLE END=#B FILE='b.data'/Y 1-10.
- END IF.
- DO IF #A AND #B.
- END FILE.
- END IF.
- END CASE.
-END INPUT PROGRAM.
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run test2"
-$SUPERVISOR $PSPP -o pspp.csv test2.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare test2 results"
-perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.csv
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-X,Y
-1,4
-2,5
-3,6
-.,7
-.,8
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="create test3.pspp"
-cat > test3.pspp <<EOF
-INPUT PROGRAM.
- NUMERIC #A #B.
-
- DO IF #A.
- DATA LIST NOTABLE END=#B FILE='b.data'/X 1-10.
- DO IF #B.
- END FILE.
- ELSE.
- END CASE.
- END IF.
- ELSE.
- DATA LIST NOTABLE END=#A FILE='a.data'/X 1-10.
- DO IF NOT #A.
- END CASE.
- END IF.
- END IF.
-END INPUT PROGRAM.
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run test3"
-$SUPERVISOR $PSPP -o pspp.csv test3.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare test3 results"
-perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.csv
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-X
-1
-2
-3
-4
-5
-6
-7
-8
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="create test4.pspp"
-cat > test4.pspp <<EOF
-INPUT PROGRAM.
- NUMERIC #EOF.
-
- LOOP IF NOT #EOF.
- DATA LIST NOTABLE END=#EOF FILE='a.data'/X 1-10.
- DO IF NOT #EOF.
- END CASE.
- END IF.
- END LOOP.
-
- COMPUTE #EOF = 0.
- LOOP IF NOT #EOF.
- DATA LIST NOTABLE END=#EOF FILE='b.data'/X 1-10.
- DO IF NOT #EOF.
- END CASE.
- END IF.
- END LOOP.
-
- END FILE.
-END INPUT PROGRAM.
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run test4"
-$SUPERVISOR $PSPP -o pspp.csv test4.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare test4 results"
-perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.csv
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-X
-1
-2
-3
-4
-5
-6
-7
-8
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-# This example differs slightly from the one in the manual in that
-# it doesn't generate random variates. There's already a test that
-# checks that random variates are predictable, so we don't need
-# another.
-activity="create test5.pspp"
-cat > test5.pspp <<EOF
-INPUT PROGRAM.
- LOOP #I=1 TO 50.
- COMPUTE X=#I * 3.
- END CASE.
- END LOOP.
- END FILE.
-END INPUT PROGRAM.
-LIST/FORMAT=NUMBERED.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run test5"
-$SUPERVISOR $PSPP -o pspp.csv test5.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare test5 results"
-perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.csv
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-Case Number,X
-1,3.00
-2,6.00
-3,9.00
-4,12.00
-5,15.00
-6,18.00
-7,21.00
-8,24.00
-9,27.00
-10,30.00
-11,33.00
-12,36.00
-13,39.00
-14,42.00
-15,45.00
-16,48.00
-17,51.00
-18,54.00
-19,57.00
-20,60.00
-21,63.00
-22,66.00
-23,69.00
-24,72.00
-25,75.00
-26,78.00
-27,81.00
-28,84.00
-29,87.00
-30,90.00
-31,93.00
-32,96.00
-33,99.00
-34,102.00
-35,105.00
-36,108.00
-37,111.00
-38,114.00
-39,117.00
-40,120.00
-41,123.00
-42,126.00
-43,129.00
-44,132.00
-45,135.00
-46,138.00
-47,141.00
-48,144.00
-49,147.00
-50,150.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests the INSERT command
-
-BASETEMPDIR=/tmp/pspp-tst-$$
-TEMPDIR=$BASETEMPDIR/link
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $BASETEMPDIR"
- return ;
- fi
- cd /
- rm -rf $BASETEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $BASETEMPDIR/target
-
-ln -s $BASETEMPDIR/target $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create wrapper 1"
-cat <<EOF > $TESTFILE
-INSERT
- FILE='$TEMPDIR/foo.sps'
- SYNTAX=INTERACTIVE
- .
-
-
-LIST.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-#The following syntax intentionally omits periods from some lines
-#It's an example of "batch" syntax
-activity="create insert"
-cat <<EOF > $TEMPDIR/foo.sps
-input program.
-+ loop #i = 1 to 100.
-+ compute z = #i
-+ end case.
-+ end loop
-end file.
-end input program.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-#This command should fail
-activity="run program 1"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE > /dev/null
-if [ $? -eq 0 ] ; then fail ; fi
-
-
-activity="create wrapper 2"
-cat <<EOF > $TESTFILE
-INSERT
- FILE='$TEMPDIR/foo.sps'
- SYNTAX=BATCH
- .
-
-
-LIST.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 2"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-# Now test the CD subcommand
-
-activity="mkdir 1"
-mkdir $TEMPDIR/Dir1
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create wrapper 3"
-cat <<EOF > $TESTFILE
-INSERT
- FILE='$TEMPDIR/Dir1/foo.sps'
- CD=NO
- .
-
-
-LIST.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create wrapper 4"
-cat <<EOF > $TEMPDIR/Dir1/foo.sps
-INSERT
- FILE='bar.sps'
- CD=NO
- .
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create wrapper 5"
-cat <<EOF > $TEMPDIR/Dir1/bar.sps
-DATA LIST LIST /x *.
-BEGIN DATA.
-1
-2
-3
-END DATA.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-# This command should fail
-activity="run program 3"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE > /dev/null
-if [ $? -eq 0 ] ; then fail ; fi
-
-activity="create wrapper 6"
-cat <<EOF > $TESTFILE
-INSERT
- FILE='$TEMPDIR/Dir1/foo.sps'
- CD=YES
- .
-
-LIST.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 4"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-# Now test the ERROR= feature
-
-activity="create wrapper 7"
-cat <<EOF > $TESTFILE
-INSERT
- FILE='$TEMPDIR/foo.sps'
- ERROR=STOP.
- .
-
-LIST.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="create included file"
-cat <<EOF > $TEMPDIR/foo.sps
-DATA LIST NOTABLE LIST /x *.
-BEGIN DATA.
-1
-2
-3
-END DATA.
-
-* The following line is erroneous
-
-DISPLAY AKSDJ.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 5"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE > /dev/null
-if [ $? -ne 1 ] ; then no_result ; fi
-
-activity="examine output 1"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-$TEMPDIR/foo.sps:10: error: DISPLAY: AKSDJ is not a variable name.
-
-warning: Error encountered while ERROR=STOP is effective.
-
-$TEMPDIR/foo.sps:10: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-activity="create wrapper 8"
-cat <<EOF > $TESTFILE
-INSERT
- FILE='$TEMPDIR/foo.sps'
- ERROR=CONTINUE.
- .
-
-LIST.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 6"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE > /dev/null
-if [ $? -ne 1 ] ; then no_result ; fi
-
-activity="examine output 2"
-diff $TEMPDIR/pspp.csv - <<EOF
-$TEMPDIR/foo.sps:10: error: DISPLAY: AKSDJ is not a variable name.
-
-Table: Data List
-x
-1.00
-2.00
-3.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-# Test for regression against bug #24569 in which PSPP crashed
-# upon attempt to insert a nonexistent file.
-activity="create wrapper 9"
-cat <<EOF > $TESTFILE
-INSERT
- FILE='$TEMPDIR/nonexistent'
- ERROR=CONTINUE.
- .
-
-LIST.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-#This command should fail
-activity="run program 7"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE > /dev/null
-if [ $? -eq 0 ] ; then no_result ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the LAG function
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TEMPDIR/lag.stat <<EOF
-data list /W 1.
-begin data.
-1
-2
-3
-4
-5
-end data.
-
-compute X=lag(w,1).
-compute Y=lag(x).
-compute Z=lag(w,2).
-list.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TEMPDIR/lag.stat
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare result"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Table: Reading 1 record from INLINE.
-Variable,Record,Columns,Format
-W,1,1- 1,F1.0
-
-Table: Data List
-W,X,Y,Z
-1,. ,. ,.
-2,1.00,. ,.
-3,2.00,1.00,1.00
-4,3.00,2.00,2.00
-5,4.00,3.00,3.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that DATA LIST can be used to read input files
-# with varying line ends (LF only, CR LF, CR only).
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-# Create command file.
-activity="create program"
-cat > $TESTFILE << EOF
-data list list notable file='input.txt'/a b c.
-list.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="create input.txt"
-printf '1 2 3\n4 5 6\r\n7\r8\r9\r\n10 11 12\n13 14 15 \r\n16\r\r17\r18\n' > input.txt
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-# Make sure that input.txt actually received the data that we expect.
-# It might not have, if we're running on a system that translates \n
-# into some other sequence.
-activity="check input.txt"
-cksum input.txt > input.cksum
-diff input.cksum - <<EOF
-1732021750 50 input.txt
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-a,b,c
-1.00,2.00,3.00
-4.00,5.00,6.00
-7.00,8.00,9.00
-10.00,11.00,12.00
-13.00,14.00,15.00
-16.00,17.00,18.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the LIST command.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-
-activity="create program"
-cat > $TESTFILE << EOF
-*** Single lines.
-data list file='$top_srcdir/tests/weighting.data'/AVAR 1-5 BVAR 6-10.
-weight by BVAR.
-list.
-*list /cases=from 5 to 20 by 2 /format numbered.
-list /format numbered.
-
-*** Multiple lines.
-data list file='$top_srcdir/tests/list.data' notable /X000 to X126 1-127.
-*list /cases=from 1 to 25 by 5 /format numbered.
-list x000 to x030.
-list /cases=from 1 to 25.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare results"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-"Table: Reading 1 record from ""$top_srcdir/tests/weighting.data""."
-Variable,Record,Columns,Format
-AVAR,1,1- 5,F5.0
-BVAR,1,6- 10,F5.0
-
-Table: Data List
-AVAR,BVAR
-18,1
-19,7
-20,26
-21,76
-22,57
-23,58
-24,38
-25,38
-26,30
-27,21
-28,23
-29,24
-30,23
-31,14
-32,21
-33,21
-34,14
-35,14
-36,17
-37,11
-38,16
-39,14
-40,15
-41,14
-42,14
-43,8
-44,15
-45,10
-46,12
-47,13
-48,13
-49,5
-50,5
-51,3
-52,7
-53,6
-54,2
-55,2
-56,2
-57,3
-58,1
-59,3
-61,1
-62,3
-63,1
-64,1
-65,2
-70,1
-78,1
-79,1
-80,1
-94,1
-
-Table: Data List
-Case Number,AVAR,BVAR
-1,18,1
-2,19,7
-3,20,26
-4,21,76
-5,22,57
-6,23,58
-7,24,38
-8,25,38
-9,26,30
-10,27,21
-11,28,23
-12,29,24
-13,30,23
-14,31,14
-15,32,21
-16,33,21
-17,34,14
-18,35,14
-19,36,17
-20,37,11
-21,38,16
-22,39,14
-23,40,15
-24,41,14
-25,42,14
-26,43,8
-27,44,15
-28,45,10
-29,46,12
-30,47,13
-31,48,13
-32,49,5
-33,50,5
-34,51,3
-35,52,7
-36,53,6
-37,54,2
-38,55,2
-39,56,2
-40,57,3
-41,58,1
-42,59,3
-43,61,1
-44,62,3
-45,63,1
-46,64,1
-47,65,2
-48,70,1
-49,78,1
-50,79,1
-51,80,1
-52,94,1
-
-Table: Data List
-X000,X001,X002,X003,X004,X005,X006,X007,X008,X009,X010,X011,X012,X013,X014,X015,X016,X017,X018,X019,X020,X021,X022,X023,X024,X025,X026,X027,X028,X029,X030
-7,6,7,5,3,2,4,6,6,3,4,8,5,1,3,7,8,9,0,7,3,4,8,3,1,0,6,4,0,9,1
-8,8,8,6,9,3,0,8,9,4,2,4,1,7,7,5,4,2,3,7,8,3,3,4,1,8,6,7,6,0,3
-4,9,2,6,1,1,5,0,7,9,0,9,1,8,7,1,5,2,7,2,6,4,2,7,8,5,2,2,4,2,4
-8,1,9,8,4,8,8,9,2,0,2,3,1,9,5,8,7,5,8,7,9,3,3,2,0,0,1,4,9,1,7
-4,5,2,7,7,7,8,9,8,7,0,9,5,6,3,7,2,9,8,4,5,5,4,1,5,1,6,6,5,0,6
-2,3,9,9,6,1,9,6,7,0,7,7,7,3,2,7,6,0,6,6,3,5,2,5,1,1,5,0,7,3,5
-1,6,6,7,7,9,9,6,9,1,2,6,6,4,7,6,9,9,4,4,0,4,7,4,3,9,8,9,2,3,7
-1,6,2,3,9,1,4,6,8,4,1,9,6,8,9,2,3,1,6,8,4,7,1,1,7,0,1,1,5,4,3
-3,6,8,1,3,9,3,2,3,3,7,6,0,1,2,9,4,8,9,1,1,3,1,2,1,8,2,9,5,9,9
-6,4,1,8,7,3,1,1,4,5,4,3,1,0,8,2,9,9,4,8,5,6,8,1,6,5,0,5,0,3,5
-2,2,8,4,5,3,4,0,8,3,7,4,9,5,0,7,7,1,6,6,5,1,0,8,6,4,2,9,0,7,1
-6,6,1,7,6,3,7,4,5,2,0,4,0,7,4,9,1,8,1,3,4,9,9,1,1,7,8,8,9,7,4
-9,8,6,5,7,1,3,5,8,2,6,8,6,6,1,2,0,0,7,2,2,2,0,1,0,7,8,2,6,8,2
-1,1,6,3,2,3,4,5,3,7,7,6,2,2,0,0,8,0,7,7,9,4,9,6,0,2,5,2,4,4,7
-9,9,8,1,6,6,3,6,3,7,5,6,3,8,3,3,3,0,0,0,3,5,4,2,6,1,3,6,7,0,2
-6,8,2,1,5,6,7,7,4,6,0,5,9,1,0,3,5,6,5,0,0,5,7,3,8,9,6,0,2,4,8
-0,9,5,2,7,7,4,9,5,2,6,7,5,2,6,1,5,4,5,9,5,5,2,8,0,8,0,5,3,4,0
-1,6,4,1,7,9,0,1,9,3,2,1,1,8,6,1,5,0,9,1,0,6,8,3,9,2,1,7,1,1,9
-3,7,6,3,1,8,2,8,7,1,5,8,0,1,7,4,7,8,9,3,2,8,8,3,7,1,9,4,9,6,8
-2,0,4,6,8,2,0,7,5,3,0,6,2,2,2,4,0,4,5,5,3,5,8,9,0,9,3,2,7,2,1
-7,9,7,0,6,2,0,0,9,1,9,4,0,3,8,5,9,2,8,7,6,2,6,3,2,7,6,4,6,1,8
-4,8,4,1,1,7,6,0,1,7,0,2,5,1,0,5,7,7,4,5,0,6,5,0,0,8,9,6,2,5,2
-6,9,4,9,9,7,3,7,9,7,9,9,0,9,5,6,2,9,1,0,7,2,1,5,8,1,2,3,8,8,7
-1,3,9,6,2,8,5,9,9,6,5,3,5,4,8,9,4,4,0,8,1,6,1,2,4,7,0,0,6,8,2
-0,7,0,0,4,8,9,5,2,4,3,5,8,2,0,8,3,5,8,6,9,7,3,4,9,4,5,0,0,3,6
-
-Table: Data List
-X000,X001,X002,X003,X004,X005,X006,X007,X008,X009,X010,X011,X012,X013,X014,X015,X016,X017,X018,X019,X020,X021,X022,X023,X024,X025,X026,X027,X028,X029,X030,X031,X032,X033,X034,X035,X036,X037,X038,X039,X040,X041,X042,X043,X044,X045,X046,X047,X048,X049,X050,X051,X052,X053,X054,X055,X056,X057,X058,X059,X060,X061,X062,X063,X064,X065,X066,X067,X068,X069,X070,X071,X072,X073,X074,X075,X076,X077,X078,X079,X080,X081,X082,X083,X084,X085,X086,X087,X088,X089,X090,X091,X092,X093,X094,X095,X096,X097,X098,X099,X100,X101,X102,X103,X104,X105,X106,X107,X108,X109,X110,X111,X112,X113,X114,X115,X116,X117,X118,X119,X120,X121,X122,X123,X124,X125,X126
-7,6,7,5,3,2,4,6,6,3,4,8,5,1,3,7,8,9,0,7,3,4,8,3,1,0,6,4,0,9,1,7,5,8,5,9,2,9,5,8,4,2,8,1,5,2,9,5,1,1,3,7,5,3,2,6,5,9,4,1,8,7,5,2,3,3,8,1,5,7,6,7,5,3,2,4,6,6,3,4,8,5,1,3,7,8,9,0,7,3,4,8,3,1,0,6,4,0,9,1,7,5,8,5,9,2,9,5,8,4,2,8,1,5,2,9,5,1,1,3,7,5,3,2,6,5,8
-8,8,8,6,9,3,0,8,9,4,2,4,1,7,7,5,4,2,3,7,8,3,3,4,1,8,6,7,6,0,3,6,8,1,4,7,5,5,8,6,9,0,0,2,7,9,7,3,1,0,2,2,6,6,8,7,4,1,6,8,4,5,5,5,0,6,7,1,4,8,8,8,6,9,3,0,8,9,4,2,4,1,7,7,5,4,2,3,7,8,3,3,4,1,8,6,7,6,0,3,6,8,1,4,7,5,5,8,6,9,0,0,2,7,9,7,3,1,0,2,2,6,6,8,7,4,6
-4,9,2,6,1,1,5,0,7,9,0,9,1,8,7,1,5,2,7,2,6,4,2,7,8,5,2,2,4,2,4,8,3,8,5,6,2,0,6,9,9,8,0,2,7,8,3,4,2,1,8,8,7,2,5,5,8,6,2,6,0,0,4,1,5,2,6,0,2,4,9,2,6,1,1,5,0,7,9,0,9,1,8,7,1,5,2,7,2,6,4,2,7,8,5,2,2,4,2,4,8,3,8,5,6,2,0,6,9,9,8,0,2,7,8,3,4,2,1,8,8,7,2,5,5,8,9
-8,1,9,8,4,8,8,9,2,0,2,3,1,9,5,8,7,5,8,7,9,3,3,2,0,0,1,4,9,1,7,7,3,6,8,9,6,8,8,0,1,3,3,2,2,1,0,1,6,0,8,8,4,4,0,6,4,0,2,3,6,2,6,5,7,2,7,0,0,8,1,9,8,4,8,8,9,2,0,2,3,1,9,5,8,7,5,8,7,9,3,3,2,0,0,1,4,9,1,7,7,3,6,8,9,6,8,8,0,1,3,3,2,2,1,0,1,6,0,8,8,4,4,0,6,4,1
-4,5,2,7,7,7,8,9,8,7,0,9,5,6,3,7,2,9,8,4,5,5,4,1,5,1,6,6,5,0,6,9,5,0,6,4,7,7,4,6,6,4,5,1,2,0,8,4,9,8,8,7,6,4,0,1,6,0,6,5,9,5,0,5,3,9,1,4,9,4,5,2,7,7,7,8,9,8,7,0,9,5,6,3,7,2,9,8,4,5,5,4,1,5,1,6,6,5,0,6,9,5,0,6,4,7,7,4,6,6,4,5,1,2,0,8,4,9,8,8,7,6,4,0,1,6,6
-2,3,9,9,6,1,9,6,7,0,7,7,7,3,2,7,6,0,6,6,3,5,2,5,1,1,5,0,7,3,5,1,8,6,0,5,9,1,1,8,1,8,6,9,1,0,8,8,0,4,6,5,1,9,0,3,2,8,1,9,6,2,4,6,8,9,6,7,5,2,3,9,9,6,1,9,6,7,0,7,7,7,3,2,7,6,0,6,6,3,5,2,5,1,1,5,0,7,3,5,1,8,6,0,5,9,1,1,8,1,8,6,9,1,0,8,8,0,4,6,5,1,9,0,3,2,5
-1,6,6,7,7,9,9,6,9,1,2,6,6,4,7,6,9,9,4,4,0,4,7,4,3,9,8,9,2,3,7,3,1,5,3,9,4,2,7,6,4,1,2,0,7,9,7,6,0,3,1,0,7,0,6,3,9,5,1,0,3,2,9,9,4,4,1,5,7,1,6,6,7,7,9,9,6,9,1,2,6,6,4,7,6,9,9,4,4,0,4,7,4,3,9,8,9,2,3,7,3,1,5,3,9,4,2,7,6,4,1,2,0,7,9,7,6,0,3,1,0,7,0,6,3,9,4
-1,6,2,3,9,1,4,6,8,4,1,9,6,8,9,2,3,1,6,8,4,7,1,1,7,0,1,1,5,4,3,6,2,7,1,1,9,5,9,7,9,0,8,5,9,9,7,4,0,5,2,5,2,4,6,1,6,4,1,9,1,5,0,8,0,1,3,2,0,1,6,2,3,9,1,4,6,8,4,1,9,6,8,9,2,3,1,6,8,4,7,1,1,7,0,1,1,5,4,3,6,2,7,1,1,9,5,9,7,9,0,8,5,9,9,7,4,0,5,2,5,2,4,6,1,6,8
-3,6,8,1,3,9,3,2,3,3,7,6,0,1,2,9,4,8,9,1,1,3,1,2,1,8,2,9,5,9,9,8,5,7,2,8,8,5,0,1,0,9,9,1,2,3,2,8,3,1,9,6,6,2,8,7,1,4,1,4,8,9,6,5,0,8,4,5,7,3,6,8,1,3,9,3,2,3,3,7,6,0,1,2,9,4,8,9,1,1,3,1,2,1,8,2,9,5,9,9,8,5,7,2,8,8,5,0,1,0,9,9,1,2,3,2,8,3,1,9,6,6,2,8,7,1,0
-6,4,1,8,7,3,1,1,4,5,4,3,1,0,8,2,9,9,4,8,5,6,8,1,6,5,0,5,0,3,5,9,9,7,9,8,2,0,9,6,7,3,2,1,5,0,3,5,9,7,5,4,5,4,7,2,9,9,6,1,8,4,8,7,8,8,5,3,0,6,4,1,8,7,3,1,1,4,5,4,3,1,0,8,2,9,9,4,8,5,6,8,1,6,5,0,5,0,3,5,9,9,7,9,8,2,0,9,6,7,3,2,1,5,0,3,5,9,7,5,4,5,4,7,2,9,7
-2,2,8,4,5,3,4,0,8,3,7,4,9,5,0,7,7,1,6,6,5,1,0,8,6,4,2,9,0,7,1,2,1,9,7,6,5,1,6,3,7,5,9,8,2,9,7,9,3,4,7,8,5,8,7,1,4,7,2,3,4,3,4,1,2,3,4,4,2,2,2,8,4,5,3,4,0,8,3,7,4,9,5,0,7,7,1,6,6,5,1,0,8,6,4,2,9,0,7,1,2,1,9,7,6,5,1,6,3,7,5,9,8,2,9,7,9,3,4,7,8,5,8,7,1,4,9
-6,6,1,7,6,3,7,4,5,2,0,4,0,7,4,9,1,8,1,3,4,9,9,1,1,7,8,8,9,7,4,7,5,7,5,2,2,4,6,9,6,6,4,8,3,8,8,6,7,9,0,1,0,1,4,1,8,2,4,8,6,6,9,7,5,7,2,9,5,6,6,1,7,6,3,7,4,5,2,0,4,0,7,4,9,1,8,1,3,4,9,9,1,1,7,8,8,9,7,4,7,5,7,5,2,2,4,6,9,6,6,4,8,3,8,8,6,7,9,0,1,0,1,4,1,8,5
-9,8,6,5,7,1,3,5,8,2,6,8,6,6,1,2,0,0,7,2,2,2,0,1,0,7,8,2,6,8,2,7,7,8,2,6,9,8,3,9,2,9,9,8,7,1,3,9,3,0,1,5,4,3,6,4,0,2,0,2,6,9,8,5,4,0,9,0,8,9,8,6,5,7,1,3,5,8,2,6,8,6,6,1,2,0,0,7,2,2,2,0,1,0,7,8,2,6,8,2,7,7,8,2,6,9,8,3,9,2,9,9,8,7,1,3,9,3,0,1,5,4,3,6,4,0,6
-1,1,6,3,2,3,4,5,3,7,7,6,2,2,0,0,8,0,7,7,9,4,9,6,0,2,5,2,4,4,7,7,7,3,0,9,8,4,4,3,3,4,0,7,6,2,8,4,4,7,3,4,3,5,0,3,7,8,7,5,0,4,4,0,9,0,2,9,5,1,1,6,3,2,3,4,5,3,7,7,6,2,2,0,0,8,0,7,7,9,4,9,6,0,2,5,2,4,4,7,7,7,3,0,9,8,4,4,3,3,4,0,7,6,2,8,4,4,7,3,4,3,5,0,3,7,7
-9,9,8,1,6,6,3,6,3,7,5,6,3,8,3,3,3,0,0,0,3,5,4,2,6,1,3,6,7,0,2,8,9,3,9,8,9,4,6,4,1,2,3,5,2,6,0,8,7,3,8,0,8,3,4,4,4,5,1,3,2,8,0,7,9,0,5,5,4,9,9,8,1,6,6,3,6,3,7,5,6,3,8,3,3,3,0,0,0,3,5,4,2,6,1,3,6,7,0,2,8,9,3,9,8,9,4,6,4,1,2,3,5,2,6,0,8,7,3,8,0,8,3,4,4,4,9
-6,8,2,1,5,6,7,7,4,6,0,5,9,1,0,3,5,6,5,0,0,5,7,3,8,9,6,0,2,4,8,8,4,2,1,9,8,9,9,5,5,9,0,6,0,2,2,8,8,7,0,0,4,7,6,2,8,2,3,0,7,1,1,0,2,9,1,6,8,6,8,2,1,5,6,7,7,4,6,0,5,9,1,0,3,5,6,5,0,0,5,7,3,8,9,6,0,2,4,8,8,4,2,1,9,8,9,9,5,5,9,0,6,0,2,2,8,8,7,0,0,4,7,6,2,8,4
-0,9,5,2,7,7,4,9,5,2,6,7,5,2,6,1,5,4,5,9,5,5,2,8,0,8,0,5,3,4,0,3,5,7,5,4,5,9,4,2,4,0,0,1,5,6,2,0,1,9,1,8,6,3,8,7,4,2,0,8,2,1,3,4,2,4,3,3,3,0,9,5,2,7,7,4,9,5,2,6,7,5,2,6,1,5,4,5,9,5,5,2,8,0,8,0,5,3,4,0,3,5,7,5,4,5,9,4,2,4,0,0,1,5,6,2,0,1,9,1,8,6,3,8,7,4,8
-1,6,4,1,7,9,0,1,9,3,2,1,1,8,6,1,5,0,9,1,0,6,8,3,9,2,1,7,1,1,9,4,9,6,8,6,5,8,7,7,1,1,8,4,0,6,5,7,9,6,1,9,4,9,2,6,1,4,7,4,4,1,1,4,8,6,9,0,2,1,6,4,1,7,9,0,1,9,3,2,1,1,8,6,1,5,0,9,1,0,6,8,3,9,2,1,7,1,1,9,4,9,6,8,6,5,8,7,7,1,1,8,4,0,6,5,7,9,6,1,9,4,9,2,6,1,5
-3,7,6,3,1,8,2,8,7,1,5,8,0,1,7,4,7,8,9,3,2,8,8,3,7,1,9,4,9,6,8,5,3,6,8,7,6,0,7,4,3,4,4,5,6,2,9,3,2,1,8,7,9,6,0,8,9,3,2,7,5,8,8,1,6,5,6,4,4,3,7,6,3,1,8,2,8,7,1,5,8,0,1,7,4,7,8,9,3,2,8,8,3,7,1,9,4,9,6,8,5,3,6,8,7,6,0,7,4,3,4,4,5,6,2,9,3,2,1,8,7,9,6,0,8,9,1
-2,0,4,6,8,2,0,7,5,3,0,6,2,2,2,4,0,4,5,5,3,5,8,9,0,9,3,2,7,2,1,1,3,7,8,1,9,8,0,7,3,3,3,7,5,7,1,7,1,9,2,6,4,2,5,4,4,2,9,7,3,4,3,9,4,2,6,7,9,2,0,4,6,8,2,0,7,5,3,0,6,2,2,2,4,0,4,5,5,3,5,8,9,0,9,3,2,7,2,1,1,3,7,8,1,9,8,0,7,3,3,3,7,5,7,1,7,1,9,2,6,4,2,5,4,4,1
-7,9,7,0,6,2,0,0,9,1,9,4,0,3,8,5,9,2,8,7,6,2,6,3,2,7,6,4,6,1,8,5,2,5,8,9,9,8,9,0,1,8,6,1,3,5,9,2,9,7,9,7,1,7,0,4,5,6,3,3,9,5,8,9,3,1,8,3,4,7,9,7,0,6,2,0,0,9,1,9,4,0,3,8,5,9,2,8,7,6,2,6,3,2,7,6,4,6,1,8,5,2,5,8,9,9,8,9,0,1,8,6,1,3,5,9,2,9,7,9,7,1,7,0,4,5,8
-4,8,4,1,1,7,6,0,1,7,0,2,5,1,0,5,7,7,4,5,0,6,5,0,0,8,9,6,2,5,2,7,5,7,0,7,6,6,9,0,3,9,2,0,3,4,6,0,1,2,8,3,8,3,4,0,4,8,3,0,8,8,4,3,6,3,2,6,4,4,8,4,1,1,7,6,0,1,7,0,2,5,1,0,5,7,7,4,5,0,6,5,0,0,8,9,6,2,5,2,7,5,7,0,7,6,6,9,0,3,9,2,0,3,4,6,0,1,2,8,3,8,3,4,0,4,5
-6,9,4,9,9,7,3,7,9,7,9,9,0,9,5,6,2,9,1,0,7,2,1,5,8,1,2,3,8,8,7,4,7,3,5,8,2,9,6,2,6,7,3,8,7,8,5,1,9,6,1,9,8,3,4,8,6,8,8,0,1,5,6,8,5,3,6,3,2,6,9,4,9,9,7,3,7,9,7,9,9,0,9,5,6,2,9,1,0,7,2,1,5,8,1,2,3,8,8,7,4,7,3,5,8,2,9,6,2,6,7,3,8,7,8,5,1,9,6,1,9,8,3,4,8,6,8
-1,3,9,6,2,8,5,9,9,6,5,3,5,4,8,9,4,4,0,8,1,6,1,2,4,7,0,0,6,8,2,9,3,3,8,7,4,3,6,5,1,2,8,7,8,6,8,2,3,8,2,4,7,5,8,1,3,3,4,6,1,1,5,6,6,4,9,7,2,1,3,9,6,2,8,5,9,9,6,5,3,5,4,8,9,4,4,0,8,1,6,1,2,4,7,0,0,6,8,2,9,3,3,8,7,4,3,6,5,1,2,8,7,8,6,8,2,3,8,2,4,7,5,8,1,3,8
-0,7,0,0,4,8,9,5,2,4,3,5,8,2,0,8,3,5,8,6,9,7,3,4,9,4,5,0,0,3,6,2,0,8,3,7,8,4,2,1,8,7,8,8,0,0,6,3,6,4,2,7,1,5,1,2,1,1,1,8,5,3,2,0,1,9,4,6,6,0,7,0,0,4,8,9,5,2,4,3,5,8,2,0,8,3,5,8,6,9,7,3,4,9,4,5,0,0,3,6,2,0,8,3,7,8,4,2,1,8,7,8,8,0,0,6,3,6,4,2,7,1,5,1,2,1,8
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests that both long and short variable names are parsed OK.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-# Use crosstabs, since its TABLES subcommand exercises the array var set
-# feature.
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST LIST /AlphaBetaGamma * B * X * Yabbadabbadoo * .
-BEGIN DATA.
-2 3 4 5
-END DATA.
-
-LIST.
-
-CROSSTABS
- VARIABLES X (1,7) Yabbadabbadoo (1,7)
- /TABLES X BY Yabbadabbadoo.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-AlphaBetaGamma,F8.0
-B,F8.0
-X,F8.0
-Yabbadabbadoo,F8.0
-
-Table: Data List
-AlphaBetaGamma,B,X,Yabbadabbadoo
-2.00,3.00,4.00,5.00
-
-Table: Summary.
-,Cases,,,,,
-,Valid,,Missing,,Total,
-,N,Percent,N,Percent,N,Percent
-X * Yabbadabbadoo,1,100.0%,0,0.0%,1,100.0%
-
-Table: X * Yabbadabbadoo [count].
-,Yabbadabbadoo,,,,,,,
-X,1.00,2.00,3.00,4.00,5.00,6.00,7.00,Total
-1.00,.0,.0,.0,.0,.0,.0,.0,.0
-2.00,.0,.0,.0,.0,.0,.0,.0,.0
-3.00,.0,.0,.0,.0,.0,.0,.0,.0
-4.00,.0,.0,.0,.0,1.0,.0,.0,1.0
-5.00,.0,.0,.0,.0,.0,.0,.0,.0
-6.00,.0,.0,.0,.0,.0,.0,.0,.0
-7.00,.0,.0,.0,.0,.0,.0,.0,.0
-Total,.0,.0,.0,.0,1.0,.0,.0,1.0
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests the LOOP command
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create prog"
-cat > $TEMPDIR/loop.stat <<EOF
-data list notable /x 1 y 2 z 3.
-begin data.
-121
-252
-393
-404
-end data.
-
-echo 'Loop with index'.
-loop #i=x to y by z.
-print /#i.
-end loop.
-print/'--------'.
-execute.
-
-echo 'Loop with IF condition'.
-compute #j=x.
-loop if #j <= y.
-print /#j.
-compute #j = #j + z.
-end loop.
-print/'--------'.
-execute.
-
-echo 'Loop with END IF condition'.
-compute #k=x.
-loop.
-print /#k.
-compute #k = #k + z.
-end loop if #k > y.
-print/'--------'.
-execute.
-
-echo 'Loop with index and IF condition based on index'.
-loop #m=x to y by z if #m < 4.
-print /#m.
-end loop.
-print/'--------'.
-execute.
-
-echo 'Loop with index and END IF condition based on index'.
-loop #n=x to y by z.
-print /#n.
-end loop if #n >= 4.
-print/'--------'.
-execute.
-
-echo 'Loop with index and IF and END IF condition based on index'.
-loop #o=x to y by z if mod(#o,2) = 0.
-print /#o.
-end loop if #o >= 4.
-print/'--------'.
-execute.
-
-echo 'Loop with no conditions'.
-set mxloops = 2.
-compute #p = x.
-loop.
-print /#p.
-compute #p = #p + z.
-do if #p >= y.
-break.
-end if.
-end loop.
-print/'--------'.
-execute.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv -e $TEMPDIR/stdout $TEMPDIR/loop.stat
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare stdout"
-perl -pi -e 's/^\s*$//g' $TEMPDIR/stdout
-diff -b $TEMPDIR/stdout - <<EOF
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare results"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Loop with index
-
-1.00
-
-2.00
-
---------
-
-2.00
-
-4.00
-
---------
-
-3.00
-
-6.00
-
-9.00
-
---------
-
---------
-
-Loop with IF condition
-
-1.00
-
-2.00
-
---------
-
-2.00
-
-4.00
-
---------
-
-3.00
-
-6.00
-
-9.00
-
---------
-
---------
-
-Loop with END IF condition
-
-1.00
-
-2.00
-
---------
-
-2.00
-
-4.00
-
---------
-
-3.00
-
-6.00
-
-9.00
-
---------
-
-4.00
-
---------
-
-Loop with index and IF condition based on index
-
-1.00
-
-2.00
-
---------
-
-2.00
-
---------
-
-3.00
-
---------
-
---------
-
-Loop with index and END IF condition based on index
-
-1.00
-
-2.00
-
---------
-
-2.00
-
-4.00
-
---------
-
-3.00
-
-6.00
-
---------
-
---------
-
-Loop with index and IF and END IF condition based on index
-
---------
-
-2.00
-
-4.00
-
---------
-
---------
-
---------
-
-Loop with no conditions
-
-1.00
-
---------
-
-2.00
-
-4.00
-
---------
-
-3.00
-
-6.00
-
---------
-
-4.00
-
---------
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the MATCH FILES procedure
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/match-files.pspp
-
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="data create"
-cat > a.data <<EOF
-1aB
-8aM
-3aE
-5aG
-0aA
-5aH
-6aI
-7aJ
-2aD
-7aK
-1aC
-7aL
-4aF
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-cat > b.data <<EOF
-1bN
-3bO
-4bP
-6bQ
-7bR
-9bS
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-cat > ff.out <<EOF
-Table: Data List
-A,B,C,D,INA,INB,FIRST,LAST
-0,a,A,,1,0,1,1
-1,a,B,N,1,1,1,0
-1,a,C,,1,0,0,1
-2,a,D,,1,0,1,1
-3,a,E,O,1,1,1,1
-4,a,F,P,1,1,1,1
-5,a,G,,1,0,1,0
-5,a,H,,1,0,0,1
-6,a,I,Q,1,1,1,1
-7,a,J,R,1,1,1,0
-7,a,K,,1,0,0,0
-7,a,L,,1,0,0,1
-8,a,M,,1,0,1,1
-9,b,,S,0,1,1,1
-EOF
-
-cat > ft.out <<EOF
-Table: Data List
-A,B,C,D,INA,INB,FIRST,LAST
-0,a,A,,1,0,1,1
-1,a,B,N,1,1,1,0
-1,a,C,N,1,1,0,1
-2,a,D,,1,0,1,1
-3,a,E,O,1,1,1,1
-4,a,F,P,1,1,1,1
-5,a,G,,1,0,1,0
-5,a,H,,1,0,0,1
-6,a,I,Q,1,1,1,1
-7,a,J,R,1,1,1,0
-7,a,K,R,1,1,0,0
-7,a,L,R,1,1,0,1
-8,a,M,,1,0,1,1
-EOF
-
-# Test nonparallel match and table lookup.
-dla="data list notable file='a.data' /A B C 1-3 (a)."
-sa="save outfile='a.sys'."
-dlb="data list notable file='b.data' /A B C 1-3 (a)."
-sb="save outfile='b.sys'."
-for types in ff ft; do
- type1=file
- if [ $types = ff ]; then
- type2=file
- else
- type2=table
- fi
- for sources in ss sa as; do
- name="$types-$sources"
- activity="create $name.pspp"
- {
- if [ $sources = ss ]; then
- cat <<EOF
-$dla
-$sa
-$dlb
-$sb
-match files $type1='a.sys' /in=INA /sort
- /$type2='b.sys' /in=INB /rename c=D
- /by a /first=FIRST /last=LAST.
-EOF
- elif [ $sources = sa ]; then
- cat <<EOF
-$dla
-$sa
-$dlb
-match files $type1='a.sys' /in=INA /sort
- /$type2=* /in=INB /rename c=D
- /by a /first=FIRST /last=LAST.
-EOF
- elif [ $sources = as ]; then
- cat <<EOF
-$dlb
-$sb
-$dla
-match files $type1=* /in=INA /sort
- /$type2='b.sys' /in=INB /rename c=D
- /by a /first=FIRST /last=LAST.
-EOF
- else
- activity="internal error"
- no_result
- fi
- echo 'list.'
- } > $name.pspp
- if [ $? -ne 0 ] ; then no_result ; fi
-
- activity="run $name.pspp"
- $SUPERVISOR $PSPP -o pspp.csv -e /dev/null $name.pspp
- if [ $? -ne 0 ] ; then no_result ; fi
-
- activity="check $name output"
- diff -c pspp.csv $types.out
- if [ $? -ne 0 ] ; then fail ; fi
- done
-done
-
-# Test parallel match.
-name="parallel"
-activity="create $name.pspp"
-cat > $name.pspp <<EOF
-$dla
-$sa
-$dlb
-$sb
-match files file='a.sys' /file='b.sys' /rename (a b c=D E F).
-list.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run $name.pspp"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $name.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="check $name output"
-diff -c - pspp.csv <<EOF
-Table: Data List
-A,B,C,D,E,F
-1,a,B,1,b,N
-8,a,M,3,b,O
-3,a,E,4,b,P
-5,a,G,6,b,Q
-0,a,A,7,b,R
-5,a,H,9,b,S
-6,a,I,,,
-7,a,J,,,
-2,a,D,,,
-7,a,K,,,
-1,a,C,,,
-7,a,L,,,
-4,a,F,,,
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-# Test bug handling TABLE from active file found by John Darrington.
-name="active-table"
-activity="create $name.pspp"
-cat > $name.pspp <<EOF
-DATA LIST LIST NOTABLE /x * y *.
-BEGIN DATA
-3 30
-2 21
-1 22
-END DATA.
-
-SAVE OUTFILE='bar.sav'.
-
-DATA LIST LIST NOTABLE /x * z *.
-BEGIN DATA
-3 8
-2 9
-END DATA.
-
-MATCH FILES TABLE=* /FILE='bar.sav' /BY=x.
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run $name.pspp"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $name.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="check $name output"
-diff -c - pspp.csv <<EOF
-Table: Data List
-x,z,y
-3.00,8.00,30.00
-2.00,. ,21.00
-1.00,. ,22.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests MISSING VALUES
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-# Copy this file --- it's shared with another test
-activity="create data"
-cp $top_srcdir/tests/data-list.data $TEMPDIR
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="create program"
-cat > $TEMPDIR/missing-values.stat << foobar
-DATA LIST NOTABLE/str1 1-5 (A) str2 6-8 (A) date1 9-19 (DATE) num1 20-25
- longstr 26-36 (A).
-
-/* Valid: numeric missing values.
-MISSING VALUES date1 num1 (1).
-MISSING VALUES date1 num1 (1, 2).
-MISSING VALUES date1 num1 (1, 2, 3).
-
-/* Valid: numeric missing values using the first variable's format.
-MISSING VALUES num1 date1 ('1').
-MISSING VALUES num1 date1 ('1', '2').
-MISSING VALUES num1 date1 ('1', '2', '3').
-MISSING VALUES date1 num1 ('06-AUG-05').
-MISSING VALUES date1 num1 ('06-AUG-05', '01-OCT-78').
-MISSING VALUES date1 num1 ('06-AUG-05', '01-OCT-78', '14-FEB-81').
-
-/* Valid: ranges of numeric missing values.
-MISSING VALUES num1 (1 THRU 2).
-MISSING VALUES num1 (LO THRU 2).
-MISSING VALUES num1 (LOWEST THRU 2).
-MISSING VALUES num1 (1 THRU HI).
-MISSING VALUES num1 (1 THRU HIGHEST).
-
-/* Valid: a range of numeric missing values, plus an individual value.
-MISSING VALUES num1 (1 THRU 2, 3).
-MISSING VALUES num1 (LO THRU 2, 3).
-MISSING VALUES num1 (LOWEST THRU 2, 3).
-MISSING VALUES num1 (1 THRU HI, -1).
-MISSING VALUES num1 (1 THRU HIGHEST, -1).
-
-/* Valid: string missing values.
-MISSING VALUES str1 str2 longstr ('abc ','def').
-
-/* Invalid: too long for str2.
-MISSING VALUES str1 str2 longstr ('abcde').
-
-/* Invalid: long string missing value longer than 8 bytes.
-MISSING VALUES longstr ('abcdefghijk').
-
-/* Invalid: no string ranges.
-MISSING VALUES str1 ('a' THRU 'z').
-
-/* Invalid: mixing string and numeric variables.
-MISSING VALUES str1 num1 ('123').
-
-/* Valid: may mix variable types when clearing missing values.
-MISSING VALUES ALL ().
-
-foobar
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv --error-file=$TEMPDIR/errs $TEMPDIR/missing-values.stat
-# Note vv --- there are errors in input. Therefore, the command must FAIL
-if [ $? -eq 0 ] ; then fail ; fi
-
-activity="compare error messages"
-diff -u -w $TEMPDIR/errs - <<EOF
-$TEMPDIR/missing-values.stat:35: error: MISSING VALUES: Missing values provided are too long to assign to variable of width 3.
-$TEMPDIR/missing-values.stat:38: error: MISSING VALUES: Truncating missing value to maximum acceptable length (8 bytes).
-$TEMPDIR/missing-values.stat:41: error: MISSING VALUES: Syntax error expecting string at \`THRU'.
-$TEMPDIR/missing-values.stat:41: error: MISSING VALUES: THRU is not a variable name.
-$TEMPDIR/missing-values.stat:44: error: MISSING VALUES: Cannot mix numeric variables (e.g. num1) and string variables (e.g. str1) within a single list.
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the N OF CASES command to make sure
-# that it actually works.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-cat > $TESTFILE <<EOF
-INPUT PROGRAM.
-LOOP #I = 1 TO 100.
-COMPUTE X=#I.
-END CASE.
-END LOOP.
-END FILE.
-END INPUT PROGRAM.
-
-N OF CASES 15.
-
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Table: Data List
-X
-1.00
-2.00
-3.00
-4.00
-5.00
-6.00
-7.00
-8.00
-9.00
-10.00
-11.00
-12.00
-13.00
-14.00
-15.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that system files can be read properly, even when the
-# case_size header value is -1 (Some 3rd party products do this)
-
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat <<EOF > $TESTFILE
-GET FILE='$top_srcdir/tests/no_case_size.sav'.
-DISPLAY DICTIONARY.
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -c pspp.csv - <<EOF
-Variable,Description,,Position
-cont,continents of the world,,1
-,Format: A32,,
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 8,,
-size,sq km,,2
-,Format: F8.2,,
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 8,,
-pop,population,,3
-,Format: F8.2,,
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 8,,
-count,number of countries,,4
-,Format: F8.2,,
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 8,,
-
-Table: Data List
-cont,size,pop,count
-Asia ,44579000,3.7E+009,44.00
-Africa ,30065000,7.8E+008,53.00
-North America ,24256000,4.8E+008,23.00
-South America ,17819000,3.4E+008,12.00
-Antarctica ,13209000,.00,.00
-Europe ,9938000,7.3E+008,46.00
-Australia/Oceania ,7687000,31000000,14.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the BINOMIAL subcommand of the NPAR TESTS command.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-
-# Tests for exact calculations
-activity="create file 1"
-cat <<EOF > $TESTFILE
-ECHO 'P < 0.5; N1/N2 < 1' .
-
-NEW FILE.
-
-DATA LIST LIST NOTABLE /x * w *.
-BEGIN DATA.
-1 6
-2 15
-END DATA.
-
-WEIGHT BY w.
-
-SET FORMAT F8.3.
-
-NPAR TESTS
- /BINOMIAL(0.3) = x
- .
-
-
-ECHO 'P < 0.5; N1/N2 > 1' .
-
-NEW FILE.
-
-
-
-DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
-BEGIN DATA.
-1 7
-2 6
-END DATA.
-
-WEIGHT BY w.
-
-NPAR TESTS
- /BINOMIAL(0.4) = x
- .
-
-
-
-ECHO 'P < 0.5; N1/N2 = 1' .
-
-NEW FILE.
-
-DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
-BEGIN DATA.
-1 8
-2 8
-END DATA.
-
-WEIGHT BY w.
-
-NPAR TESTS
- /BINOMIAL(0.4) = x
- .
-
-ECHO 'P > 0.5; N1/N2 < 1' .
-
-NEW FILE.
-
-DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
-BEGIN DATA.
-1 11
-2 12
-END DATA.
-
-WEIGHT BY w.
-
-NPAR TESTS
- /BINOMIAL(0.6) = x
- .
-
-
-ECHO 'P > 0.5; N1/N2 > 1' .
-
-NEW FILE.
-
-DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
-BEGIN DATA.
-1 11
-2 9
-END DATA.
-
-WEIGHT BY w.
-
-NPAR TESTS
- /BINOMIAL(0.6) = x
-
-ECHO 'P > 0.5; N1/N2 == 1' .
-
-NEW FILE.
-
-DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
-BEGIN DATA.
-1 11
-2 11
-END DATA.
-
-WEIGHT BY w.
-
-NPAR TESTS
- /BINOMIAL(0.6) = x
- .
-
-ECHO 'P == 0.5; N1/N2 < 1' .
-
-NEW FILE.
-
-DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
-BEGIN DATA.
-1 8
-2 15
-END DATA.
-
-WEIGHT BY w.
-
-NPAR TESTS
- /BINOMIAL = x
- .
-
-
-ECHO 'P == 0.5; N1/N2 > 1' .
-
-NEW FILE.
-
-DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
-BEGIN DATA.
-1 12
-2 6
-END DATA.
-
-WEIGHT BY w.
-
-NPAR TESTS
- /BINOMIAL(0.5) = x
-
-ECHO 'P == 0.5; N1/N2 == 1' .
-
-NEW FILE.
-
-DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
-BEGIN DATA.
-1 10
-2 10
-END DATA.
-
-WEIGHT BY w.
-
-NPAR TESTS
- /BINOMIAL(0.5) = x
- .
-
-ECHO 'P == 0.5; N1/N2 == 1 Cutpoint' .
-
-DATA LIST LIST NOTABLE /x * w *.
-BEGIN DATA.
-9 3
-10 7
-11 16
-END DATA.
-
-WEIGHT BY w.
-
-NPAR TESTS
- /BINOMIAL(0.5) = x (10)
- .
-
-ECHO 'P == 0.5; N1/N2 == 1 Named values' .
-
-DATA LIST LIST NOTABLE /x * w *.
-BEGIN DATA.
-10 10
-15 45
-20 13
-END DATA.
-
-WEIGHT BY w.
-
-NPAR TESTS
- /BINOMIAL(0.5) = x (10, 20)
- .
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 1"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output 1"
-diff -c $TEMPDIR/pspp.csv - << EOF
-P < 0.5; N1/N2 < 1
-
-Table: Binomial Test
-,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
-x,Group1,1.00,6.00,.286,.300,.551
-,Group2,2.00,15.00,.714,,
-,Total,,21.00,1.000,,
-
-P < 0.5; N1/N2 > 1
-
-Table: Binomial Test
-,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
-x,Group1,1,7,.538,.400,.229
-,Group2,2,6,.462,,
-,Total,,13,1.000,,
-
-P < 0.5; N1/N2 = 1
-
-Table: Binomial Test
-,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
-x,Group1,1,8,.500,.400,.284
-,Group2,2,8,.500,,
-,Total,,16,1.000,,
-
-P > 0.5; N1/N2 < 1
-
-Table: Binomial Test
-,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
-x,Group1,1,11,.478,.600,.164
-,Group2,2,12,.522,,
-,Total,,23,1.000,,
-
-P > 0.5; N1/N2 > 1
-
-Table: Binomial Test
-,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
-x,Group1,1,11,.550,.600,.404
-,Group2,2,9,.450,,
-,Total,,20,1.000,,
-
-P > 0.5; N1/N2 == 1
-
-Table: Binomial Test
-,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
-x,Group1,1,11,.500,.600,.228
-,Group2,2,11,.500,,
-,Total,,22,1.000,,
-
-P == 0.5; N1/N2 < 1
-
-Table: Binomial Test
-,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
-x,Group1,1,8,.348,.500,.210
-,Group2,2,15,.652,,
-,Total,,23,1.000,,
-
-P == 0.5; N1/N2 > 1
-
-Table: Binomial Test
-,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
-x,Group1,1,12,.667,.500,.238
-,Group2,2,6,.333,,
-,Total,,18,1.000,,
-
-P == 0.5; N1/N2 == 1
-
-Table: Binomial Test
-,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
-x,Group1,1,10,.500,.500,1.000
-,Group2,2,10,.500,,
-,Total,,20,1.000,,
-
-P == 0.5; N1/N2 == 1 Cutpoint
-
-Table: Binomial Test
-,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
-x,Group1,<= 10,10.000,.385,.500,.327
-,Group2,,16.000,.615,,
-,Total,,26.000,1.000,,
-
-P == 0.5; N1/N2 == 1 Named values
-
-Table: Binomial Test
-,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
-x,Group1,10.000,10.000,.435,.500,.678
-,Group2,20.000,13.000,.565,,
-,Total,,23.000,1.000,,
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the chisquare subcommand of the NPAR command.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create file 1"
-cat <<EOF > $TESTFILE
-DATA LIST NOTABLE LIST /x * y * w *.
-BEGIN DATA.
-1 2 1
-2 1 3
-3.1 1 4
-3.2 2 1
-4 2 2
-5 3 1
-1 4 2
-END DATA.
-
-WEIGHT BY w.
-
-NPAR TESTS
- CHISQUARE=x y
- .
-
-NPAR TESTS
- CHISQUARE=y
- /EXPECTED=3 4 5 4
- .
-
-NPAR TESTS
- CHISQUARE=x y(2, 4)
- /EXPECTED = 6 10 3
- .
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 1"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output 1"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: x
-,Observed N,Expected N,Residual
-1.00,3.00,2.33,.67
-2.00,3.00,2.33,.67
-3.10,4.00,2.33,1.67
-3.20,1.00,2.33,-1.33
-4.00,2.00,2.33,-.33
-5.00,1.00,2.33,-1.33
-Total,14.00,,
-
-Table: y
-,Observed N,Expected N,Residual
-1.00,7.00,3.50,3.50
-2.00,4.00,3.50,.50
-3.00,1.00,3.50,-2.50
-4.00,2.00,3.50,-1.50
-Total,14.00,,
-
-Table: Test Statistics
-,x,y
-Chi-Square,3.14,6.00
-df,5,3
-Asymp. Sig.,.68,.11
-
-Table: y
-,Observed N,Expected N,Residual
-1.00,7.00,2.63,4.38
-2.00,4.00,3.50,.50
-3.00,1.00,4.38,-3.38
-4.00,2.00,3.50,-1.50
-Total,14.00,,
-
-Table: Test Statistics
-,y
-Chi-Square,10.61
-df,3
-Asymp. Sig.,.01
-
-Table: Frequencies
-,x,,,,y,,,
-,Category,Observed N,Expected N,Residual,Category,Observed N,Expected N,Residual
-1,2.00,3.00,3.16,-.16,2.00,4.00,2.21,1.79
-2,3.00,5.00,5.26,-.26,3.00,1.00,3.68,-2.68
-3,4.00,2.00,1.58,.42,4.00,2.00,1.11,.89
-Total,,10.00,,,,7.00,,
-
-Table: Test Statistics
-,x,y
-Chi-Square,.13,4.13
-df,2,2
-Asymp. Sig.,.94,.13
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-activity="create file 2"
-cat <<EOF > $TESTFILE
-DATA LIST NOTABLE LIST /x * y * w *.
-BEGIN DATA.
-1 2 1
-2 1 3
-3.1 1 4
-3.2 2 1
-4 2 2
-5 3 1
-1 4 2
-END DATA.
-
-WEIGHT BY w.
-
-NPAR TESTS
- CHISQUARE=y
- /EXPECTED = 3 4 5 4 3 1
- .
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 2"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE -e $TEMPDIR/output
-if [ $? -eq 0 ] ; then no_result ; fi
-
-activity="compare errors 2"
-perl -pi -e 's/^\s*$//g' $TEMPDIR/output
-diff -b $TEMPDIR/output - << EOF
-error: CHISQUARE test specified 6 expected values, but 4 distinct values were encountered in variable y.
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-activity="create file 3"
-cat <<EOF > $TESTFILE
-DATA LIST NOTABLE LIST /x * y * w * .
-BEGIN DATA.
-1 2 1
-2 1 3
-3.1 1 4
-3.2 2 1
-4 2 2
-5 3 1
-1 4 2
-. 5 1
-END DATA.
-
-WEIGHT BY w.
-
-MISSING VALUES x (4).
-
-NPAR TESTS
- CHISQUARE=x y(-2,5)
- /MISSING=ANALYSIS
- /STATISTICS=DESCRIPTIVES
- .
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 3"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare output 3"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Table: Frequencies
-,x,,,,y,,,
-,Category,Observed N,Expected N,Residual,Category,Observed N,Expected N,Residual
-1,-2.00,.00,1.50,-1.50,-2.00,.00,1.88,-1.88
-2,-1.00,.00,1.50,-1.50,-1.00,.00,1.88,-1.88
-3,.00,.00,1.50,-1.50,.00,.00,1.88,-1.88
-4,1.00,3.00,1.50,1.50,1.00,7.00,1.88,5.13
-5,2.00,3.00,1.50,1.50,2.00,4.00,1.88,2.13
-6,3.00,5.00,1.50,3.50,3.00,1.00,1.88,-.88
-7,4.00,.00,1.50,-1.50,4.00,2.00,1.88,.13
-8,5.00,1.00,1.50,-.50,5.00,1.00,1.88,-.88
-Total,,12.00,,,,15.00,,
-
-Table: Test Statistics
-,x,y
-Chi-Square,17.33,22.87
-df,7,7
-Asymp. Sig.,.02,.00
-
-Table: Descriptive Statistics
-,N,Mean,Std. Deviation,Minimum,Maximum
-,,,,,
-x,12.00,2.47,1.19,1.00,5.00
-y,15.00,2.07,1.33,1.00,5.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-activity="create file 4"
-cat <<EOF > $TESTFILE
-DATA LIST NOTABLE LIST /x * y * w * .
-BEGIN DATA.
-1 2 1
-2 1 3
-3.1 1 4
-3.2 2 1
-4 2 2
-5 3 1
-1 4 2
-. 5 1
-END DATA.
-
-WEIGHT BY w.
-
-* MISSING VALUES x (4).
-
-NPAR TESTS
- CHISQUARE=x y(-2,5)
- /MISSING=LISTWISE
- /STATISTICS=DESCRIPTIVES
- .
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 4"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare output 4"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Table: Frequencies
-,x,,,,y,,,
-,Category,Observed N,Expected N,Residual,Category,Observed N,Expected N,Residual
-1,-2.00,.00,1.75,-1.75,-2.00,.00,1.75,-1.75
-2,-1.00,.00,1.75,-1.75,-1.00,.00,1.75,-1.75
-3,.00,.00,1.75,-1.75,.00,.00,1.75,-1.75
-4,1.00,3.00,1.75,1.25,1.00,7.00,1.75,5.25
-5,2.00,3.00,1.75,1.25,2.00,4.00,1.75,2.25
-6,3.00,5.00,1.75,3.25,3.00,1.00,1.75,-.75
-7,4.00,2.00,1.75,.25,4.00,2.00,1.75,.25
-8,5.00,1.00,1.75,-.75,5.00,.00,1.75,-1.75
-Total,,14.00,,,,14.00,,
-
-Table: Test Statistics
-,x,y
-Chi-Square,13.43,26.00
-df,7,7
-Asymp. Sig.,.06,.00
-
-Table: Descriptive Statistics
-,N,Mean,Std. Deviation,Minimum,Maximum
-,,,,,
-x,14.00,2.69,1.23,1.00,5.00
-y,14.00,1.86,1.10,1.00,4.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the SIGN subcommand of npar tests
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program 1"
-cat > $TESTFILE << EOF
-set format = F9.3.
-
-data list notable list /age * height rank *.
-begin data.
-10 12 11
-12 13 13
-13 14 12
-12 12 10
-9 9 10
-10.3 10.2 12
-end data.
-
-npar tests
- /sign=age height WITH height rank (PAIRED)
- /MISSING ANALYSIS
- /METHOD=EXACT
- .
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 1"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output 1"
-diff -b -c - $TEMPDIR/pspp.csv <<EOF
-Table: Frequencies
-,,N
-height - age,Negative Differences,1
-,Positive Differences,3
-,Ties,2
-,Total,6
-rank - height,Negative Differences,3
-,Positive Differences,2
-,Ties,1
-,Total,6
-
-Table: Test Statistics
-,height - age,rank - height
-Exact Sig. (2-tailed),.625,1.000
-Exact Sig. (1-tailed),.312,.500
-Point Probability,.250,.312
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the wilcoxon subcommand of npar tests
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program 1"
-cat > $TESTFILE << EOF
-data list notable list /foo * bar * w (f8.0).
-begin data.
-1.00 1.00 1
-1.00 2.00 1
-2.00 1.00 1
-1.00 4.00 1
-2.00 5.00 1
-1.00 19.00 1
-2.00 7.00 1
-4.00 5.00 1
-1.00 12.00 1
-2.00 13.00 1
-2.00 2.00 1
-12.00 .00 2
-12.00 1.00 1
-13.00 1.00 1
-end data
-
-variable labels foo "first" bar "second".
-
-weight by w.
-
-npar test
- /wilcoxon=foo with bar (paired)
- /missing analysis
- /method=exact.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 1"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="generate results"
-cat > $TEMPDIR/results.csv <<EOF
-Table: Ranks
-,,N,Mean Rank,Sum of Ranks
-second - first,Negative Ranks,5,8.60,43.00
-,Positive Ranks,8,6.00,48.00
-,Ties,2,,
-,Total,15,,
-
-Table: Test Statistics
-,second - first
-Z,-.18
-Asymp. Sig. (2-tailed),.86
-Exact Sig. (2-tailed),.89
-Exact Sig. (1-tailed),.45
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare output 1"
-diff -b -c pspp.csv $TEMPDIR/results.csv
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-
-# No weights this time. But some missing values
-activity="create program 2"
-cat > $TESTFILE << EOF
-data list notable list /foo * bar * dummy *.
-begin data.
-1.00 1.00 1
-1.00 2.00 1
-2.00 1.00 1
-1.00 4.00 .
-2.00 5.00 .
-1.00 19.00 .
-2.00 7.00 1
-4.00 5.00 1
-1.00 12.00 1
-2.00 13.00 1
-2.00 2.00 1
-12.00 .00 1
-12.00 .00 1
-34.2 . 1
-12.00 1.00 1
-13.00 1.00 1
-end data
-
-variable labels foo "first" bar "second".
-
-npar test
- /wilcoxon=foo with bar (paired)
- /missing analysis
- /method=exact.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 2"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output 2"
-diff -b pspp.csv $TEMPDIR/results.csv
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the PERMISSIONS command
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-
-activity="Create file"
-echo HEllo > foobar
-chmod 777 foobar
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="Create program"
-cat > per.sps <<EOF
-PERMISSIONS /FILE='foobar'
- PERMISSIONS = READONLY.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TEMPDIR/per.sps
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="Check Permissions"
-ls -l foobar | grep '^-r-xr-xr-x' > /dev/null
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-activity="Create program"
-cat > per.sps <<EOF
-PERMISSIONS /FILE='foobar'
- PERMISSIONS = WRITEABLE.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TEMPDIR/per.sps
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="Check Permissions"
-ls -l foobar | grep '^-rwxr-xr-x' > /dev/null
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that the PRINT command properly outputs string variables.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="Create File"
-cat > $TESTFILE <<EOF
-DATA LIST FREE /s8 (a8) s10 (a10) vl255 (a255) vl258 (a258).
-BEGIN DATA.
-12345678
-AaaaaaaaaZ
-AbbbbMaryHadALittleLambbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbZ
-AccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccZ
-87654321
-AnnnnnnnnZ
-AmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmZ
-AoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooWhyIsItSoZ
-END DATA.
-
-print
- outfile='foobar'
- /s10 * vl255 * vl258 *.
-
-EXECUTE.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-diff $TEMPDIR/foobar - <<EOF
- AaaaaaaaaZ AbbbbMaryHadALittleLambbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbZ AccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccZ
- AnnnnnnnnZ AmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmZ AoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooWhyIsItSoZ
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests unusual aspects of the PRINT and WRITE
-# transformations:
-#
-# - PRINT puts spaces between variables, unless a format
-# is specified explicitly.
-#
-# - WRITE doesn't put space between variables.
-#
-# - PRINT to an external file prefixes each line with a space.
-#
-# - PRINT EJECT to an external file indicates a formfeed by a "1"
-# in the first column.
-#
-# - WRITE writes out spaces for system-missing values, not a period.
-#
-# - When no output is specified, an empty record is output.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TEMPDIR/print.stat << foobar
-data list notable /x y 1-2.
-begin data.
-12
-34
- 6
-7
-90
-end data.
-
-print /x y.
-print eject /x y 1-2.
-print /x '-' y.
-print.
-
-print outfile='print.out' /x y.
-print eject outfile='print.out' /x y (f1,f1).
-print outfile='print.out' /x '-' y.
-print outfile='print.out'.
-
-write outfile='write.out' /x y.
-write outfile='write.out' /x y (2(f1)).
-write outfile='write.out' /x '-' y.
-write outfile='write.out'.
-
-execute.
-foobar
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv --error-file=$TEMPDIR/errs $TEMPDIR/print.stat
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare print.out"
-diff -b $TEMPDIR/print.out - <<EOF
- 1 2
-112
- 1 -2
-
- 3 4
-134
- 3 -4
-
- . 6
-1.6
- . -6
-
- 7 .
-17.
- 7 -.
-
- 9 0
-190
- 9 -0
-
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare write.out"
-diff -b $TEMPDIR/write.out - <<EOF
-12
-12
-1-2
-
-34
-34
-3-4
-
- 6
- 6
- -6
-
-7
-7
-7-
-
-90
-90
-9-0
-
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare output"
-diff -b $TEMPDIR/pspp.csv - << EOF
-1 2
-
-
-
-12
-
-1 -2
-
-
-
-3 4
-
-
-
-34
-
-3 -4
-
-
-
-. 6
-
-
-
-.6
-
-. -6
-
-
-
-7 .
-
-
-
-7.
-
-7 -.
-
-
-
-9 0
-
-
-
-90
-
-9 -0
-
-
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the RANK command.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-
-# Some tests for proper behaviour in the face of invalid input.
-activity="create file 1"
-cat > $TESTFILE <<EOF
-DATA LIST LIST NOTABLE /x * a (a2).
-BEGIN DATA.
--1 s
-0 s
-1 s
-2 s
-2 s
-4 s
-5 s
-END DATA.
-
-DEBUG XFORM FAIL.
-
-RANK x.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-# Check that it properly handles failed transformations.
-activity="run program 1"
-$SUPERVISOR $PSPP --testing-mode -o pspp.csv -e $TEMPDIR/err $TESTFILE
-if [ $? -ne 1 ] ; then fail ; fi
-
-activity="diff 1"
-perl -pi -e 's/^\s*$//g' $TEMPDIR/err
-diff -b $TEMPDIR/err - <<EOF
-$TEMPDIR/rank.sh.sps:14: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-#Now for some general error conditions.
-activity="create file 2"
-cat > $TESTFILE <<EOF
-DATA LIST LIST NOTABLE /x * a (a2).
-BEGIN DATA.
--1 s
-0 s
-1 s
-2 s
-2 s
-4 s
-5 s
-END DATA.
-
-* invalid NTILES (no parameter)
-RANK x
- /NTILES
-.
-
-* invalid NTILES (not an integer)
-RANK x
- /NTILES(d)
-.
-
-
-* destination variable already exists
-RANK x
- /RANK INTO x.
-
-
-* Too many variables in INTO
-RANK x
- /RANK INTO foo bar wiz.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program (syntax errors)"
-$SUPERVISOR $PSPP -o pspp.csv -e $TEMPDIR/errs $TESTFILE
-if [ $? -ne 1 ] ; then fail ; fi
-
-activity="compare errors"
-perl -pi -e 's/^\s*$//g' $TEMPDIR/errs
-diff -b $TEMPDIR/errs - << EOF
-$TEMPDIR/rank.sh.sps:15: error: RANK: Syntax error expecting \`(' at end of command.
-$TEMPDIR/rank.sh.sps:19: error: RANK: Syntax error expecting integer at \`d'.
-$TEMPDIR/rank.sh.sps:25: error: RANK: Variable x already exists.
-$TEMPDIR/rank.sh.sps:30: error: RANK: Too many variables in INTO clause.
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-# Now some real tests.
-
-activity="create file 3"
-cat > $TESTFILE <<EOF
-DATA LIST LIST NOTABLE /x (f8).
-BEGIN DATA.
--1
-0
-1
-2
-2
-4
-5
-END DATA.
-
-ECHO 'Simple example using defaults'.
-
-RANK x.
-
-LIST.
-
-NEW FILE.
-DATA LIST LIST NOTABLE /a * b *.
-BEGIN DATA.
-0 24
-1 32
-2 31
-2 32
-4 30
-5 29
-6 1
-7 43
-8 .
-9 45
-END DATA.
-
-RANK a b (D)
- /PRINT=YES
- /RANK
- /TIES=HIGH
- /RFRACTION
- /N INTO count
- .
-
-DISPLAY DICTIONARY.
-
-LIST.
-
-
-ECHO 'Test variable name fallback'.
-
-NEW FILE.
-DATA LIST LIST NOTABLE /foo * rfoo * ran003 *.
-BEGIN DATA.
-0 3 2
-1 3 2
-2 3 2
-2 3 2
-4 3 2
-5 3 2
-6 3 2
-7 3 2
-8 3 2
-9 3 2
-END DATA.
-
-RANK foo.
-
-
-DISPLAY DICTIONARY.
-
-
-NEW FILE.
-DATA LIST LIST NOTABLE /a * b *.
-BEGIN DATA.
-0 24
-1 32
-2 31
-2 32
-4 30
-5 29
-6 1
-7 43
-8 8
-9 45
-END DATA.
-
-RANK a
- /PRINT=YES
- /TIES=CONDENSE
- /SAVAGE
- /PERCENT
- /PROPORTION
- /NTILES(4)
- /NORMAL
-.
-
-LIST.
-
-NEW FILE.
-DATA LIST LIST NOTABLE /a * g1 g2 *.
-BEGIN DATA.
-2 1 2
-2 1 2
-3 1 2
-4 1 2
-5 1 2
-1 0 2
-2 0 2
-3 0 2
-4 0 2
-5 0 2
-6 0 2
-7 0 2
-8 0 2
-6 1 2
-7 1 2
-7 1 2
-8 1 2
-9 1 1
-END DATA.
-
-RANK a (D) BY g2 g1
- /PRINT=YES
- /TIES=LOW
- /MISSING=INCLUDE
- /FRACTION=RANKIT
- /RANK
- /NORMAL
- .
-
-SPLIT FILE BY g1.
-
-RANK a (D) BY g2
- /PRINT=YES
- /TIES=LOW
- /MISSING=INCLUDE
- /FRACTION=RANKIT
- /RANK
- /NORMAL
- .
-
-SPLIT FILE OFF.
-
-LIST.
-
-
-ECHO 'fractional ranks ( including small ones for special case of SAVAGE ranks)'
-NEW FILE.
-DATA LIST LIST NOTABLE /a * w * .
-BEGIN DATA.
-1 1.5
-2 0.2
-3 0.1
-4 1
-5 1
-6 1
-7 1
-8 1
-END DATA.
-
-WEIGHT BY w.
-
-RANK a
- /FRACTION=TUKEY
- /PROPORTION
- /SAVAGE
-.
-
-LIST.
-
-
-ECHO 'test all the ties cases with low caseweight values'.
-
-NEW FILE.
-DATA LIST LIST NOTABLE /x * w *.
-BEGIN DATA.
-1 0.1
-2 0.1
-3 0.1
-4 0.2
-5 0.1
-6 0.1
-7 0.1
-8 0.1
-END DATA.
-
-WEIGHT BY w.
-
-RANK x
- /TIES=low
- /RANK into xl.
-
-
-RANK x
- /TIES=high
- /RANK into xh.
-
-RANK x
- /TIES=condense
- /RANK into xc.
-
-
-* Test VW fraction
-
-RANK x
- /FRACTION=VW
- /NORMAL.
-
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 3"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare output 3"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Simple example using defaults
-
-Variables Created By RANK
-
-
-
-x into Rx(RANK of x)
-
-Table: Data List
-x,Rx
--1,1.000
-0,2.000
-1,3.000
-2,4.500
-2,4.500
-4,6.000
-5,7.000
-
-Variables Created By RANK
-
-
-
-a into Ra(RANK of a)
-
-b into Rb(RANK of b)
-
-a into RFR001(RFRACTION of a)
-
-b into RFR002(RFRACTION of b)
-
-a into count(N of a)
-
-b into Nb(N of b)
-
-Variable,Description,,Position
-a,Format: F8.2,,1
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-b,Format: F8.2,,2
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-count,N of a,,3
-,Format: F6.0,,
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-Ra,RANK of a,,4
-,Format: F9.3,,
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-Rb,RANK of b,,5
-,Format: F9.3,,
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-RFR001,RFRACTION of a,,6
-,Format: F6.4,,
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-RFR002,RFRACTION of b,,7
-,Format: F6.4,,
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-Nb,N of b,,8
-,Format: F6.0,,
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-
-Table: Data List
-a,b,count,Ra,Rb,RFR001,RFR002,Nb
-.00,24.00,10,10.000,8.000,1.0000,.8889,9
-1.00,32.00,10,9.000,4.000,.9000,.4444,9
-2.00,31.00,10,8.000,5.000,.8000,.5556,9
-2.00,32.00,10,8.000,4.000,.8000,.4444,9
-4.00,30.00,10,6.000,6.000,.6000,.6667,9
-5.00,29.00,10,5.000,7.000,.5000,.7778,9
-6.00,1.00,10,4.000,9.000,.4000,1.0000,9
-7.00,43.00,10,3.000,2.000,.3000,.2222,9
-8.00,. ,10,2.000,. ,.2000,. ,.
-9.00,45.00,10,1.000,1.000,.1000,.1111,9
-
-Test variable name fallback
-
-Variables Created By RANK
-
-
-
-foo into RAN001(RANK of foo)
-
-Variable,Description,,Position
-foo,Format: F8.2,,1
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-rfoo,Format: F8.2,,2
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-ran003,Format: F8.2,,3
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-RAN001,RANK of foo,,4
-,Format: F9.3,,
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-
-Variables Created By RANK
-
-
-
-a into Sa(SAVAGE of a)
-
-a into Pa(PERCENT of a)
-
-a into PRO001(PROPORTION of a using BLOM)
-
-a into Na(NTILES of a)
-
-a into NOR001(NORMAL of a using BLOM)
-
-Table: Data List
-a,b,Sa,Pa,PRO001,Na,NOR001
-.00,24.00,-.9000,10.00,.0610,1,-1.547
-1.00,32.00,-.7889,20.00,.1585,1,-1.000
-2.00,31.00,-.5925,30.00,.2561,2,-.6554
-2.00,32.00,-.5925,30.00,.2561,2,-.6554
-4.00,30.00,-.3544,40.00,.3537,2,-.3755
-5.00,29.00,-.1544,50.00,.4512,2,-.1226
-6.00,1.00,.0956,60.00,.5488,3,.1226
-7.00,43.00,.4290,70.00,.6463,3,.3755
-8.00,8.00,.9290,80.00,.7439,3,.6554
-9.00,45.00,1.9290,90.00,.8415,4,1.0005
-
-Variables Created By RANK
-
-
-
-a into Ra(RANK of a BY g2 g1)
-
-a into Na(NORMAL of a using RANKIT BY g2 g1)
-
-Variables Created By RANK
-
-
-
-a into RAN001(RANK of a BY g2)
-
-a into NOR001(NORMAL of a using RANKIT BY g2)
-
-Table: Data List
-a,g1,g2,Ra,Na,RAN001,NOR001
-2.00,1.00,2.00,8.000,.9674,4.000,.5244
-2.00,1.00,2.00,8.000,.9674,4.000,.5244
-3.00,1.00,2.00,7.000,.5895,3.000,.0000
-4.00,1.00,2.00,6.000,.2822,2.000,-.5244
-5.00,1.00,2.00,5.000,.0000,1.000,-1.282
-1.00,.00,2.00,8.000,1.5341,8.000,1.5341
-2.00,.00,2.00,7.000,.8871,7.000,.8871
-3.00,.00,2.00,6.000,.4888,6.000,.4888
-4.00,.00,2.00,5.000,.1573,5.000,.1573
-5.00,.00,2.00,4.000,-.1573,4.000,-.1573
-6.00,.00,2.00,3.000,-.4888,3.000,-.4888
-7.00,.00,2.00,2.000,-.8871,2.000,-.8871
-8.00,.00,2.00,1.000,-1.534,1.000,-1.534
-6.00,1.00,2.00,4.000,-.2822,4.000,1.1503
-7.00,1.00,2.00,2.000,-.9674,2.000,-.3186
-7.00,1.00,2.00,2.000,-.9674,2.000,-.3186
-8.00,1.00,2.00,1.000,-1.593,1.000,-1.150
-9.00,1.00,1.00,1.000,.0000,1.000,.0000
-
-fractional ranks ( including small ones for special case of SAVAGE ranks)
-
-Variables Created By RANK
-
-
-
-a into Pa(PROPORTION of a using TUKEY)
-
-a into Sa(SAVAGE of a)
-
-Table: Data List
-a,w,Pa,Sa
-1.00,1.50,.1285,-.8016
-2.00,.20,.1776,-.6905
-3.00,.10,.1986,-.6905
-4.00,1.00,.3458,-.5305
-5.00,1.00,.4860,-.2905
-6.00,1.00,.6262,.0262
-7.00,1.00,.7664,.4929
-8.00,1.00,.9065,1.3929
-
-test all the ties cases with low caseweight values
-
-Variables Created By RANK
-
-
-
-x into xl(RANK of x)
-
-Variables Created By RANK
-
-
-
-x into xh(RANK of x)
-
-Variables Created By RANK
-
-
-
-x into xc(RANK of x)
-
-Variables Created By RANK
-
-
-
-x into Nx(NORMAL of x using VW)
-
-Table: Data List
-x,w,xl,xh,xc,Nx
-1.00,.10,.000,.100,1.000,-1.938
-2.00,.10,.100,.200,2.000,-1.412
-3.00,.10,.200,.300,3.000,-1.119
-4.00,.20,.300,.500,4.000,-.8046
-5.00,.10,.500,.600,5.000,-.5549
-6.00,.10,.600,.700,6.000,-.4067
-7.00,.10,.700,.800,7.000,-.2670
-8.00,.10,.800,.900,8.000,-.1323
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-
-# A test to make sure that variable name creation is really robust
-activity="create file 4"
-cat > $TESTFILE <<EOF
-DATA LIST LIST notable /x * rx * ran001 TO ran999.
-BEGIN DATA.
-1
-2
-3
-4
-5
-6
-7
-END DATA.
-
-RANK x.
-
-DELETE VAR ran001 TO ran999.
-
-LIST.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 4"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-activity="compare output 4"
-diff -c $TEMPDIR/pspp.csv - << EOF
-"$TEMPDIR/rank.sh.sps:3: warning: BEGIN DATA: Missing value(s) for all variables from rx onward. These will be filled with the system-missing value or blanks, as appropriate."
-
-"$TEMPDIR/rank.sh.sps:4: warning: BEGIN DATA: Missing value(s) for all variables from rx onward. These will be filled with the system-missing value or blanks, as appropriate."
-
-"$TEMPDIR/rank.sh.sps:5: warning: BEGIN DATA: Missing value(s) for all variables from rx onward. These will be filled with the system-missing value or blanks, as appropriate."
-
-"$TEMPDIR/rank.sh.sps:6: warning: BEGIN DATA: Missing value(s) for all variables from rx onward. These will be filled with the system-missing value or blanks, as appropriate."
-
-"$TEMPDIR/rank.sh.sps:7: warning: BEGIN DATA: Missing value(s) for all variables from rx onward. These will be filled with the system-missing value or blanks, as appropriate."
-
-"$TEMPDIR/rank.sh.sps:8: warning: BEGIN DATA: Missing value(s) for all variables from rx onward. These will be filled with the system-missing value or blanks, as appropriate."
-
-"$TEMPDIR/rank.sh.sps:9: warning: BEGIN DATA: Missing value(s) for all variables from rx onward. These will be filled with the system-missing value or blanks, as appropriate."
-
-Variables Created By RANK
-
-
-
-x into RNKRA01(RANK of x)
-
-Table: Data List
-x,rx,RNKRA01
-1.00,. ,1.000
-2.00,. ,2.000
-3.00,. ,3.000
-4.00,. ,4.000
-5.00,. ,5.000
-6.00,. ,6.000
-7.00,. ,7.000
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that the QR decomposition used by the REGRESSION command works.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo Not cleaning $TEMPDIR;
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-data list list / v0 to v1.
-begin data
--12.84099361 0.873270778
- 16.64932538 0.371315664
- -1.88061907 0.505503722
- -6.20952354 0.734698282
- 0.33272576 0.891224610
- -5.54912717 0.052318165
- 6.11832417 0.448853404
- 11.78124974 0.470447593
- 0.75960353 0.565082303
- 6.06432768 0.149316743
- -2.64919436 0.752532411
--10.32250712 0.798263603
- 2.06355038 0.469129797
- -9.71851742 0.927162270
- 4.65582553 0.250629262
- 9.54574474 0.847032310
- 7.35544368 0.197028541
- -2.09609740 0.400584261
- 10.30101161 0.671546480
- -5.24501039 0.929962876
- 1.73412473 0.758161354
- -3.12732732 0.569785505
- 12.66261501 0.630640223
- -2.90956805 0.576067804
- 4.89649177 0.624483995
- 13.64613114 0.591089881
- 14.03198397 0.544587572
- 2.23566810 0.967898139
- 5.37367760 0.916246929
- 9.01346888 0.451702743
- 0.75378683 0.235544137
- -3.47470624 0.742668194
- -1.02063266 0.860311687
- -2.67132813 0.082460702
- 23.67661680 0.932553932
- 7.95061359 0.430161125
- 2.05300558 0.066331375
- -2.01332644 0.163705417
- 20.00663784 0.587292630
- 3.06099417 0.161411889
- -3.46115358 0.216684625
- -6.85287183 0.548714855
- -4.27923809 0.630997663
- -0.94863395 0.880612945
- 4.47481747 0.359885215
--12.80962955 0.886070341
- 9.35753086 0.187176558
- 2.81002235 0.063035095
- 0.01532424 0.964327101
- 0.29867732 0.866408063
- -2.89035649 0.812135868
- 4.17352811 0.608884061
- 18.15502183 0.920568258
- -2.92662792 0.550792959
- -6.08090449 0.965036595
- -1.09135397 0.862548019
- 7.02816784 0.042277017
--21.20245068 0.430673493
- -8.83397584 0.724976162
- -0.89055843 0.017934904
- 7.03871587 0.308829557
- 3.84286316 0.685105924
- 4.50280692 0.447635420
- 11.39207346 0.875177896
- 10.86673874 0.518530912
- 7.09853081 0.588367569
--12.82864915 0.184667098
- 13.74888760 0.610891139
- 0.37379146 0.557720134
- -9.79020267 0.942839981
- 0.71574466 0.564570338
--17.56040637 0.182061777
- 2.52620466 0.306875011
- 5.37718673 0.366807049
- -1.83964300 0.465772898
- 6.04848363 0.644501799
- 4.57402403 0.121419591
- 8.55606848 0.373011464
- -8.46827907 0.491176571
- -1.77989798 0.734722847
- -0.68661121 0.540984182
- 1.55798880 0.822587656
- 5.22810831 0.333747878
- 9.50280477 0.068100934
- -3.74521465 0.248537644
- 1.36045068 0.851827791
- 4.41604088 0.197207162
- -3.72568327 0.726916693
- -5.36123334 0.906513529
- 3.61594583 0.414340595
--10.01952852 0.140372658
- 25.48681482 0.354309660
- -3.34529093 0.090075388
--18.00437582 0.461438059
- -5.29782460 0.004362856
- 2.79608522 0.861294398
- -1.64076209 0.345775481
- 6.82802334 0.137933862
- -0.45416818 0.404379208
- -1.66868582 0.797685201
--10.02820292 0.075876582
- 5.68232031 0.404815042
- 8.25113850 0.769173748
- -2.83544237 0.076583474
- 0.87659945 0.092751009
- 6.60270870 0.530444351
--12.63924989 0.362099960
- -6.24451253 0.641993458
- 3.53339015 0.461991892
- -0.74012232 0.437409755
- 15.37311996 0.974913038
- -8.09464797 0.543308711
- -9.61320222 0.221564578
- 0.21843662 0.856512540
- -1.56958954 0.610709221
- 6.44977372 0.200382138
--13.29136274 0.093222309
- 6.46257214 0.024135196
- -3.82727990 0.601335801
- 0.43081953 0.268230667
- 19.06654416 0.219972815
- 17.02906651 0.996849502
--10.18073139 0.012543080
- 12.72088788 0.910600764
- 10.45328185 0.331285901
- 7.14370922 0.896312020
- -2.81754334 0.048741266
- 6.40217095 0.075796756
- -3.18030478 0.666325307
- 8.64585957 0.120549153
- 1.37952764 0.899991932
--11.81143886 0.601949630
- 0.03899706 0.363808260
--10.63828243 0.031092967
- -6.66940972 0.246204205
- -5.07374962 0.951272057
- 4.82281566 0.063928187
--21.93693564 0.050972680
- -4.54569883 0.225839693
- -0.92422779 0.437796785
- -1.11683029 0.740215139
- 16.77765554 0.851072372
- 9.73614597 0.388180586
- 14.05345168 0.063760129
- 1.20512012 0.665964184
- 8.00307080 0.102447114
- 8.01252623 0.580929209
--13.54924183 0.438420739
- 9.87164361 0.970859344
- 17.63437095 0.250501797
- -3.42503574 0.873290220
- -2.45873197 0.847756049
- 17.29212092 0.411683187
- 1.15496098 0.530658504
- -2.14438907 0.592255367
- -1.79942021 0.517773009
- -1.30677990 0.830860762
- 1.70233874 0.291826660
- -3.05532536 0.801767829
- -4.06732625 0.092294501
- 6.34665476 0.270426235
- 9.46946411 0.196915311
- 14.50919907 0.480357167
- 8.93767237 0.778228613
- 1.90298854 0.903146151
- 18.50500507 0.598561307
- 4.45123027 0.555898218
- 11.37344114 0.616557707
--12.14693218 0.409187285
- 18.27198688 0.141619222
- -5.75939569 0.056989619
- -4.05515382 0.369281201
- 16.69882098 0.946885257
- 6.39050536 0.679704228
- 4.04213339 0.662792380
- 6.89608366 0.419877433
- 1.56496633 0.358227958
- 5.16679947 0.095144366
- -3.06280456 0.883265975
- 2.76279175 0.866571973
- 1.84969249 0.264869828
- 21.79840498 0.702650979
- 1.42450528 0.719308635
- 0.96797046 0.111937435
- 18.26840323 0.075621738
- 13.38288377 0.573399086
- 2.41101500 0.766238677
- 3.83866337 0.499888953
- -1.56577367 0.695244089
- -0.90342790 0.671654151
- 10.83775583 0.026041124
- -9.89767935 0.745297991
- 11.74840150 0.309144074
- 1.73069359 0.814063985
- -5.27966183 0.591005828
- 3.33030043 0.559401806
- 1.31427975 0.520950237
--10.04588558 0.507008362
- 10.41228345 0.425867272
- 1.71961097 0.595783108
--17.54904427 0.328788939
- -2.23545419 0.223377350
- -8.68774333 0.980964240
- -3.48048220 0.008877675
- -3.69635326 0.090236718
- 9.76114237 0.769375983
--10.25662038 0.508137553
- 0.11155446 0.468504431
- -8.06824580 0.414098962
- 3.10031660 0.327130207
- -3.33393146 0.756896774
- -3.96276749 0.530956360
- 14.53610268 0.846474699
- 1.70505918 0.754662464
- -1.93495001 0.656650411
- 5.01974522 0.745337633
- 13.41249973 0.489362476
- 11.49288744 0.335924476
- 12.59019763 0.155560469
--10.17947298 0.677318449
- 0.05556115 0.655090105
- 3.82092860 0.051838719
- 8.23041456 0.918272190
- -0.50314649 0.772015826
- 20.05162157 0.880265258
- 8.98816884 0.666646668
- -6.28312120 0.138534416
- 3.68589909 0.274559458
- 0.59699510 0.253180863
- -2.74783135 0.983525221
- 0.32515065 0.839969577
- -3.60606166 0.330646732
- -0.82037740 0.129591173
- 6.12444860 0.098536516
- 10.95671074 0.033546728
- -2.84911174 0.720288722
- 6.04597572 0.577061422
- -0.60147150 0.674096868
- -5.30458364 0.291468008
- 2.68044943 0.379853840
- 0.85986585 0.984214339
--12.77906359 0.882390290
- 7.21420144 0.550884826
- 2.31817022 0.231021556
- 11.60161950 0.888496654
- -0.19346228 0.242609713
- 5.07478120 0.759161318
- 14.54155003 0.040387654
- 3.81039636 0.874572741
- 2.23233049 0.448317248
- 0.19481869 0.201906051
- 2.81530451 0.132131690
- 12.39893259 0.674693704
- 0.47054642 0.632959494
- 2.16152913 0.734480632
- 0.33398836 0.315024718
- 7.35509037 0.304570986
- -2.92336559 0.539062343
- 5.79622573 0.392393310
- -2.37607425 0.403380474
- 0.04498550 0.756875541
- -1.63674414 0.613789514
- 11.80310547 0.832651469
- 6.30630243 0.850689403
- 1.48394652 0.096243229
- 4.03361865 0.799660045
- 3.54707273 0.408520520
- 2.00327040 0.702944912
- 17.30761707 0.380542812
- 5.72738968 0.105447516
--13.64604891 0.328506659
- 8.35976334 0.702173924
- -7.41197443 0.134396488
--15.95683040 0.618526462
- 8.76889573 0.950243069
- -1.13482624 0.113477080
- -0.60311407 0.090444247
- 4.95508365 0.612511543
- 5.36934491 0.979213258
- -0.03554882 0.807185690
--11.58131144 0.183341373
- 4.46809041 0.796330582
- 12.49741067 0.346860912
- 8.63824488 0.073684997
- 0.49990913 0.732519306
- 12.82688360 0.109400213
- 13.20375065 0.850369092
- -8.41110869 0.177717087
- 16.31959963 0.727704840
- 17.59203613 0.235311681
- 0.32148420 0.842195936
- 5.43148331 0.670904647
- 7.14649727 0.028190029
- 0.25410683 0.421535783
--12.41047826 0.086404379
--10.64180909 0.229659236
- -6.40185653 0.876365242
- 15.63063324 0.667672536
- 1.94280423 0.799266628
- -5.76507450 0.367344192
- 8.60895533 0.154109357
- 9.38306751 0.788742770
- 3.43573528 0.284535277
- 4.81848966 0.872283177
- 11.65839314 0.234109111
- -5.57884822 0.030363060
- -3.94238060 0.325320686
- 9.38133340 0.201141788
- -7.65003459 0.647734396
- 11.23091019 0.084927159
- -6.07705432 0.037273791
- 7.46380750 0.506897136
- 7.42034855 0.869351148
- -4.43031973 0.231191152
- -1.07351537 0.480234836
- -1.40653281 0.690620421
- -3.82710168 0.990191328
- 5.04583490 0.543427375
--11.54265099 0.270542185
- 0.49059479 0.991447248
- -1.40871469 0.555998766
- 3.64241437 0.743840673
--18.30031589 0.357478210
- 4.27487959 0.770619738
- 1.28805821 0.654787106
- -3.19542768 0.218110139
- 12.53375654 0.011857644
- 11.78889419 0.054127726
- -5.38392310 0.839309080
- 16.38024181 0.228801038
- -0.59622631 0.134381782
- -0.74107258 0.258146632
--12.31429450 0.020524447
- -0.79785028 0.968028764
- 6.39899711 0.038162566
- 7.42024044 0.716163692
- -3.62470664 0.018201813
- -2.55049724 0.162446610
--10.79888854 0.683070478
- 10.18490144 0.546461234
- -2.76979044 0.198830067
- 4.85164813 0.094100357
- 0.96477200 0.381801756
- 8.13344336 0.639730450
- 9.04684412 0.786084368
- 10.41746272 0.828304181
- 0.94334368 0.798419831
- 10.13116556 0.191715972
- -4.12728628 0.575178239
- -9.59222379 0.876405375
- 1.64680258 0.391003085
- -4.58897613 0.039176486
- 0.38394379 0.511577564
- -4.80428215 0.222785463
- 0.35363661 0.681658725
- -9.63685708 0.183035382
- 3.54363414 0.766127414
- 6.89610808 0.967514568
- -2.03781105 0.464416752
- 8.67956196 0.421424078
- -1.09959038 0.061231448
- 7.12587456 0.028601318
- -6.93064672 0.402561175
- 8.57989199 0.925089270
- -9.55071810 0.454993099
- -8.11914736 0.509644286
- -5.41909698 0.077813151
--17.03336572 0.875713545
- -1.27438609 0.602163625
- 3.09834374 0.105599007
- -1.59865741 0.439939102
- 11.82272089 0.754984309
- 4.30969696 0.483834579
--10.76886192 0.222486992
- 7.05419803 0.903020271
- 7.36096847 0.440357053
- -2.05864869 0.581170147
- -9.08366913 0.318677911
- 8.57119930 0.605668919
- 7.87702340 0.570206991
- 5.22035786 0.542344385
- 2.37238850 0.595969470
- -4.29809941 0.634313781
- 4.51647479 0.796663089
- -0.62478780 0.562099444
- 8.50866078 0.490014249
- 3.46694991 0.122890089
- -7.31956453 0.885170890
- 2.20259268 0.167180856
- -1.81003626 0.702563515
- 8.44526939 0.973495019
- 8.19767069 0.881261264
- -5.92422578 0.686557351
- -0.11826129 0.712798344
- 5.66132869 0.922826429
- -5.40845018 0.642183516
- 6.67839036 0.680978989
- 11.88962825 0.487904896
- 3.32266332 0.931709581
- 0.24234019 0.405641313
--12.79023339 0.361005489
--13.57875491 0.266289733
- 1.81304596 0.775093821
- 0.36755600 0.400225605
- -9.15574205 0.518040748
- -3.90436548 0.396869908
- 9.24764042 0.669374848
- 0.74869385 0.609881390
- -3.62958907 0.928867495
- -0.02527232 0.557679930
- 0.04433418 0.152565816
- 11.76152632 0.865663501
- -4.62181124 0.007000650
- 5.82271403 0.389678502
- 0.33289002 0.532940826
- -7.65647076 0.681574524
- 11.81023732 0.107165912
- 11.42121999 0.989580324
- -5.47120641 0.762285550
- 3.82311561 0.388755074
- 16.91059711 0.461236022
- 4.14012105 0.802420151
- -1.35278659 0.036646959
--12.81733350 0.179096148
- -0.94395134 0.450959878
- -5.39002376 0.264783062
- 4.16227017 0.780743762
- 7.26179625 0.821382454
- 15.10062276 0.469253936
- 1.45877225 0.685434405
- -9.87966760 0.767201511
- 7.03156071 0.195142483
--11.71327419 0.774014869
- -4.55518706 0.973103604
- -1.75221406 0.175172193
- 10.35631400 0.080670414
- 4.97650495 0.597478189
- 2.25703939 0.585949751
- 10.72500409 0.339720931
- -5.02901029 0.997874377
- 6.24398637 0.655067479
- -5.83880059 0.184948259
- 2.17256077 0.746741866
- -5.59809380 0.277523381
- 8.19384177 0.334565607
- 3.35250431 0.952057263
- 16.20874892 0.901400446
- 1.63205839 0.235388475
- -1.07921163 0.608376332
- 0.24315118 0.862639830
- 15.61923078 0.050955422
- 1.99639207 0.358905687
- 8.14825538 0.190069662
- 4.55210835 0.784025901
- 13.51582298 0.973572910
- 15.42415796 0.969080992
- 2.23978124 0.551857514
- 1.00858991 0.919566804
- -2.77293574 0.906998180
- 7.10750420 0.934792213
- -8.01377290 0.682306063
- 9.67873875 0.239576806
- 7.54867950 0.065860266
- 13.85701962 0.733823443
- 8.48212853 0.285731085
- 3.55278843 0.998255904
- 21.94592206 0.205463912
- -2.07957143 0.948665109
- 1.54169997 0.200109744
--11.36934275 0.447122472
- 3.07094572 0.815147945
- 6.45818709 0.007849948
- 1.85594578 0.818796540
- -2.43799564 0.962013689
--17.96539549 0.654190963
- -0.93433746 0.454930236
--11.06904368 0.898560975
- 14.89733742 0.479152492
- -5.72390675 0.136197255
- 9.46781102 0.669006610
- 5.35954546 0.259381138
- 3.78388994 0.933778797
- 1.95373423 0.517555994
- 10.96772341 0.666138826
- 9.40585102 0.779906833
- 0.75347502 0.142656741
- 7.64803672 0.734297119
- -0.40051164 0.362230232
- 10.00747057 0.660820381
--12.86024975 0.072988046
- 1.43515528 0.229672223
- -6.75981709 0.658534537
- -5.61355474 0.795897133
- -4.40596595 0.038787666
- -1.37033650 0.371835229
- 6.66666573 0.560963737
- 8.18430044 0.284787698
- -0.55742330 0.622783662
- -0.39757686 0.673551753
--12.68628005 0.373038561
- 4.06416215 0.760546238
- 4.65859855 0.516761886
- 3.55304076 0.266856843
- -7.35294817 0.615783196
- 1.01222898 0.158266779
- 9.91052610 0.285619547
- -6.42966726 0.573689954
- 10.97425098 0.985095061
- 5.79394599 0.404333309
- 10.09106608 0.441037857
- -1.47295537 0.577661077
- -2.07959719 0.547176133
- -8.76910940 0.498979558
--11.15658312 0.135862745
- -0.88456783 0.326480064
- 9.71607440 0.998076370
- -8.76072622 0.386244511
--19.26823092 0.461833959
- -0.11280313 0.064155908
- 0.64625887 0.172078148
- -5.35323428 0.331153163
- -1.71034509 0.330955888
- 4.27104744 0.590544244
- 7.33843789 0.263171531
- -5.38121637 0.539675802
- -6.87566548 0.127313096
- -2.50161298 0.269417630
- 10.99076986 0.097362729
- 6.34017269 0.318528587
- -4.63672382 0.451038055
--11.55122495 0.987073278
- 4.78618612 0.297342215
- 2.97547390 0.197312152
- -5.54495280 0.499701114
- 17.67606173 0.810316588
- 16.01578815 0.643667608
- -0.16258467 0.228284761
- 7.92123340 0.784289369
- -2.26303900 0.270764770
- 5.84136933 0.437763291
- 4.96955217 0.389720490
- -8.09516710 0.829068548
- 14.59207207 0.513593803
- 2.80954688 0.650799867
- 4.53653552 0.672326278
- 4.49116737 0.807447691
- 18.87549709 0.647303378
- 9.80118464 0.932576117
--13.02124969 0.038651904
- -6.15189291 0.697593318
- 15.81920283 0.249825051
- 10.81503188 0.152372300
--23.58738366 0.593560367
- 8.15716338 0.411680007
- 3.45349379 0.351061414
- -6.39345334 0.374926213
- 8.72924585 0.165759028
- 22.17948804 0.003736780
- -4.73053410 0.582425257
- 16.88289626 0.484899167
- -1.78826142 0.663273340
- -0.78106025 0.337039969
- -2.92461669 0.810174719
--13.89224399 0.177428986
- 4.56809819 0.025010350
- -1.07452825 0.649632933
- 0.58148751 0.829606422
- 12.13329525 0.354819526
- 17.35605568 0.284862590
--12.43678107 0.827661083
- -1.89492796 0.574929572
- 2.18520382 0.846299917
- 18.11449649 0.603173531
- 4.34508582 0.484049042
- 17.49394569 0.094811656
- 10.67752350 0.166176400
- 17.13374502 0.547208197
- 4.42138123 0.768691494
- 5.38445574 0.788597361
- 0.79946671 0.851883720
- -4.67547904 0.995621191
- -5.61496422 0.523793593
--20.52093126 0.881207308
- -8.95996814 0.851078124
- -7.63483710 0.739657373
- 11.02131097 0.678060014
--10.56228517 0.202393048
- 6.48841788 0.143946271
- 3.44853632 0.913249620
- -0.02080024 0.070765134
- 2.08654297 0.032468089
- 8.13415912 0.439470874
- 11.19028936 0.944954026
- 0.26670866 0.492724593
- -9.33692734 0.982611921
- 17.23967092 0.313428994
- 0.36906670 0.660669528
- 7.89735684 0.977628886
- -4.00171487 0.379327632
- 5.01615432 0.735627296
- 0.42214214 0.092461754
- 13.60634772 0.218359635
- 6.57431413 0.067653525
- -1.77668341 0.717799276
- 5.16227422 0.325502093
--15.29091550 0.332815338
- 3.33602480 0.594168551
- 13.80131443 0.817724470
- 5.92111679 0.947854666
- 3.59747624 0.330860216
- -6.79722403 0.093518715
- -1.86606213 0.824179728
- 17.05226458 0.466573672
- 10.39712467 0.409067778
- -4.78536386 0.891470739
- 11.92963128 0.719633060
- -1.44230992 0.232628002
--12.31860616 0.834134222
- 2.93439660 0.957842480
- 14.27963295 0.546264646
- 2.17488820 0.701170328
- 10.78772417 0.612332448
- -0.47049341 0.378564293
- -0.35140634 0.034337429
- 5.04887868 0.211697132
- -3.51562580 0.663243607
- -0.82013387 0.602497174
- 2.78954743 0.325294790
- 8.67905777 0.820296625
--12.70343389 0.315467361
- -2.59373236 0.015571904
- -4.60369241 0.293737716
- 1.58669084 0.671091860
--10.44245103 0.501340276
- 4.85215578 0.141572007
- 10.46303284 0.801814632
- 1.27898298 0.236929983
- -1.72225479 0.608500539
- 20.18685735 0.827124630
- 3.27308817 0.542065179
- 1.01596956 0.254672115
- -8.88872881 0.460876757
--11.31397349 0.636168639
- 0.85294367 0.816417328
- 3.54262337 0.944147626
--10.53603202 0.675775741
- 4.34832198 0.121988381
- 11.56451662 0.283063133
- -7.36454369 0.500596540
- -8.23701113 0.379483261
- -8.36081323 0.219730782
- -6.39158860 0.739171315
- -1.40518544 0.478709398
- -4.01314821 0.460476388
- -7.34814047 0.406242873
- -7.80836711 0.730648091
- -0.57729135 0.152336258
- 4.98352832 0.026424939
- -3.78181635 0.453598432
- 20.16821827 0.845273124
- 5.20758271 0.573569671
- -3.05534245 0.286828574
- -5.31306254 0.961990401
- 1.09307567 0.006478724
- -3.75412572 0.598277695
- -2.38444245 0.777900122
- 2.46837742 0.280363751
- 9.72195519 0.041094463
- 3.96271247 0.604775284
- 2.14105354 0.400315328
- 7.88645912 0.404573389
- -4.03565076 0.798377309
- 10.80180959 0.932152434
--10.89359212 0.446813857
- 1.43144578 0.310194540
- 4.79825196 0.504826858
- 10.73201365 0.384306369
- -4.07526187 0.893893643
- -2.84330198 0.390202663
- 5.81825057 0.830581384
- -2.77842745 0.382966910
- -7.70333673 0.157692966
- -3.25753058 0.726303603
- 8.50032387 0.556524444
- 2.35027236 0.857076526
- -1.70740565 0.194760923
- -3.40693880 0.696420946
- -8.03983352 0.514393263
- -1.85105344 0.609459979
- -9.01148029 0.526019631
- 18.37344635 0.690793045
- 16.46079416 0.811535334
- 4.10224315 0.043403618
- 7.06657672 0.831274577
- 15.31421824 0.434558881
--12.36760970 0.004215634
- 1.95473415 0.277788662
- -0.93207006 0.368433415
- 15.39919341 0.843189783
- 5.23452387 0.626226925
- 11.40805770 0.002417288
- -1.30282837 0.072493756
- 3.92130690 0.675355182
- 2.53148399 0.027222295
- 4.92705318 0.934429364
- 5.54978818 0.042268708
- -2.19608977 0.246743834
- -0.62565550 0.858214200
- -8.98329365 0.646827226
- 12.78468146 0.533966352
- 2.01061290 0.418710227
- 1.03689579 0.019241741
- 8.01166696 0.992268130
- -4.49786437 0.694127903
- -8.15387184 0.066275002
- 2.22256207 0.083301613
--12.27145086 0.535369809
- 9.95709112 0.227692557
- 14.58198717 0.667298058
- 5.98046083 0.922503625
- 1.25640725 0.632933575
- 9.77623752 0.136171032
- 5.57068426 0.374916651
--10.07048336 0.470411379
- 3.69267954 0.897278365
- 2.22185354 0.212539549
- 7.96155623 0.720525208
- -6.21272358 0.771491819
- 2.63054735 0.474989115
- -2.81488890 0.675381020
- 4.52747191 0.118615879
- -3.22975936 0.783991133
- 11.42834761 0.423344824
- 0.26512464 0.617515445
- -5.84322807 0.210915613
- 9.61073028 0.988117333
- -6.11878012 0.492318959
- 5.30581443 0.339379499
- -6.40132703 0.903540026
- 1.22921808 0.122161655
- 8.08547837 0.197296588
- -0.77943801 0.935963718
- 11.43194858 0.828270943
- -5.41689395 0.556863468
- 15.14667847 0.565186375
- -5.15327419 0.542802437
- -3.95903082 0.643379366
- 5.78847793 0.391369361
- 11.54430873 0.158789330
- 1.90340148 0.841316129
- 14.69680285 0.532022770
- 0.68552840 0.367073827
- -8.72287967 0.250127491
- 9.35401445 0.836083158
- 5.32139524 0.996712598
--14.53387897 0.825434481
- -2.93925146 0.513153861
- 12.54386493 0.713306793
- 2.04842442 0.993893406
- 2.87461954 0.049843312
- 4.89765230 0.376710062
- -6.23945314 0.321108142
- -3.45840168 0.854710947
- 9.05807160 0.199992188
- 3.33815006 0.787302467
- 4.22244242 0.351841910
- 15.75879160 0.268699469
- 2.78549859 0.920299974
- -4.46643118 0.727283862
- 0.48021298 0.428672083
- 2.55814938 0.130915212
- 5.00692968 0.062266047
- 4.78801127 0.325124688
- 6.39524485 0.693406744
--10.46792584 0.458128441
- 10.14111908 0.353412759
--10.56424183 0.821588957
- 7.60967746 0.267669137
- -2.34956688 0.434855697
- 23.82269027 0.802311880
- 8.37170447 0.445185000
- 10.05024769 0.778687843
- -9.15753018 0.957292819
- 12.17438228 0.774769426
- 1.57960028 0.783591989
- 0.06719501 0.849073924
- 16.21114558 0.243444943
- -3.79808298 0.842994720
- 8.98927715 0.020537113
- 7.72362992 0.984168340
- 11.25158442 0.152385348
--21.23936903 0.909204114
- 7.34995949 0.987249305
- -7.99435203 0.335456401
- -2.78218185 0.768517548
- 11.59547596 0.466617637
- 15.90870706 0.071892573
- 5.58160897 0.554485703
- 16.05253351 0.815206562
- -3.23103465 0.280495460
- -4.61108636 0.035757819
- 5.41596511 0.746146856
- 2.92445613 0.136743821
- 11.23628254 0.681316365
--12.93714705 0.838791576
- 9.94668264 0.084457395
- -4.56061529 0.983605894
- -4.24795688 0.601732731
- -2.83740044 0.375102341
- -0.43078317 0.403870303
- 15.19689584 0.114826374
--10.29920266 0.731582141
- 6.01686515 0.641655876
- 6.69431335 0.496723697
- 4.62223602 0.328118236
- -1.74309026 0.072604771
- 14.31971261 0.827101483
- -1.86629155 0.613346722
- 8.30971428 0.274948560
- 8.50080711 0.059822908
- -7.94061422 0.121069240
- -2.72096492 0.710791774
- 3.33259421 0.398621625
- 1.73248470 0.488581205
- 9.56008489 0.011104565
- 12.71499762 0.038568985
- 4.11512127 0.219846314
- -0.96707584 0.822646857
- 4.98621667 0.633779997
- 4.69384821 0.295708955
- 10.16008645 0.778287787
- -7.72973800 0.097096969
- 2.87264210 0.796538177
- 4.56095440 0.862952770
- 5.02621658 0.934628629
- 3.18138681 0.805600816
- -1.02245780 0.317640678
- 18.16001652 0.992503640
- 4.13729026 0.941910149
- 1.61211303 0.377271914
- 1.71520009 0.735196094
- 3.26325421 0.514432564
- 12.94663819 0.591190711
- 10.53239931 0.005877708
- 8.06705056 0.340779884
- -5.09007267 0.332516161
- 12.31973355 0.323119296
- -2.69957650 0.633232996
- 12.51207803 0.377641090
- 8.02081444 0.859293157
- -0.13098726 0.099370804
- -0.97757546 0.852873609
- 16.73605399 0.595854575
- 3.63219184 0.329310613
- -4.79105630 0.247760146
- -4.77209495 0.708235587
- 0.92107647 0.924567254
- 12.12724271 0.433550712
- -5.07731478 0.200109463
- 9.16019579 0.897456586
- 18.33260560 0.649877409
- 1.93596773 0.584401505
- 8.51254631 0.283154523
- 11.41092928 0.698703314
- 10.85035748 0.351078210
- 12.62749979 0.570101319
- -2.32028296 0.313842122
- -2.45778301 0.007943144
- 6.93102526 0.108737491
- -0.67304654 0.245399613
- 9.27294774 0.204010286
- 14.29292826 0.396294626
- 14.05843185 0.864613328
- -3.73515954 0.305862948
- 0.36606339 0.116802407
- -5.79235478 0.457308058
- 8.70346900 0.858244380
- -8.91321043 0.077001581
- 0.58499566 0.503209780
- 0.39160153 0.324883353
- 7.46715326 0.343451039
- 12.36256009 0.679483638
- 8.84283689 0.687359177
- -6.39396909 0.113065562
- -3.67844896 0.667335667
- 9.36904962 0.009815419
- -3.25244888 0.213105120
- 19.09389976 0.593130536
- 7.28826611 0.829483570
- -5.44565944 0.956490203
- 7.96993416 0.770961635
- 0.20683778 0.006497153
- -3.73273760 0.037042812
--10.64745846 0.813594448
- 5.70578906 0.157678242
- 4.05282218 0.224663656
- 14.77711159 0.577586777
- 0.89685942 0.297213941
- 3.92600687 0.672347849
--12.29347477 0.367072171
- -9.33603480 0.456544225
- -0.86683190 0.088696811
- 4.65685745 0.779783359
- 1.24438030 0.712958633
- 11.43533814 0.920345548
--10.18380242 0.044456697
- -1.20684029 0.992051648
- -9.78059038 0.611477837
- 3.05588762 0.581933667
- 3.47419279 0.769325101
- 0.87528245 0.455214184
- -3.13185655 0.805887381
- -0.82283965 0.707668384
- -1.86717272 0.984060013
- 16.56357048 0.217369677
- -2.11052646 0.474156371
- -1.39795364 0.958554209
- 4.87468692 0.328779186
- 2.69163553 0.401633221
- 6.08640626 0.599963560
- 7.41420081 0.240202007
- 5.73729928 0.696034193
- 7.31747120 0.569520861
- -6.20465547 0.214005920
- 17.52477873 0.667125450
- 12.97855692 0.796977778
- -3.35883428 0.379721403
- -2.90306972 0.552454626
- 5.31617371 0.401625473
- -3.86414389 0.830986352
--14.94107832 0.702705123
- -5.74060402 0.833328045
- -8.10116203 0.078855027
- 23.48247017 0.568666620
- 20.22005082 0.357069809
- -2.53387193 0.637455425
- 15.72048831 0.845354124
- -4.41494567 0.934471473
- -8.02254420 0.378467959
- -0.13398716 0.489382793
- 0.95967155 0.813667919
- 0.14835664 0.215786848
- 14.31875579 0.675145039
- -6.36589196 0.822037848
- 8.25942906 0.156787526
- -7.33597529 0.051076292
- 12.58936771 0.666507807
- 2.34653798 0.626196518
- -0.69351398 0.050664564
- 7.08738260 0.808776877
- 5.19653521 0.779008623
- 3.20900427 0.197212774
- 7.81171331 0.744975548
- 6.49008186 0.991318119
- 7.27471854 0.839642650
- -7.68367290 0.880500743
- 12.04846713 0.797754890
- 14.93435279 0.190527791
- -3.83641079 0.075995951
- 2.15090497 0.426560973
- -3.61166623 0.777188818
- 8.49333248 0.891445999
- -7.46936100 0.148607446
- 13.85406193 0.983656455
- 12.20477754 0.499345090
- 10.09415710 0.638127733
- 5.37134772 0.110929011
- 8.17660840 0.879411588
- -4.38804367 0.608933700
--11.78145902 0.265134740
- 6.18940186 0.970982743
--16.24831477 0.844983635
- 9.52790402 0.578152651
- 16.44372225 0.264144422
- -2.48286428 0.893865621
- 5.33297280 0.512990215
- -2.68912507 0.851636020
- 9.94607707 0.644483197
- -1.93526852 0.550759844
- 2.34310539 0.787853650
- 11.79131608 0.983668283
- 3.16689104 0.605394987
- 10.47759320 0.919442774
- 2.86973133 0.557835916
- 10.30674302 0.442504870
- 10.92820575 0.976183635
- 7.98050212 0.139334994
- -0.64719705 0.981199028
- -2.63625596 0.341524563
- 11.38799583 0.858987904
- 1.37321916 0.202373294
- 12.66698520 0.142127091
- 5.83599540 0.864497670
- 4.88659560 0.472598564
- 13.00108599 0.961629827
- 5.79514791 0.408377170
- -1.47807631 0.536772872
- -3.38142805 0.288956265
- 6.25154986 0.828695103
- 2.40919373 0.478123848
- 3.72990486 0.056539500
- -9.90915815 0.603356617
- 0.21737084 0.737251896
- 5.36929388 0.026920178
- -1.05027354 0.034992509
- -4.97887624 0.506301429
- -6.40058435 0.014061876
- -0.14610837 0.619699963
- 3.78483619 0.653952701
- 3.84143365 0.162122572
- 2.66030676 0.196542503
--10.56809462 0.386200215
- -5.01140125 0.711703654
- -3.09809005 0.118120179
- -2.76110171 0.118809515
- 2.85825107 0.129646974
- 2.75993661 0.171779333
- 11.55931169 0.372165133
- 9.21211486 0.969079819
- 6.02207148 0.498965865
- -3.52883224 0.954619249
- -2.60190803 0.069405278
- 1.34183694 0.569402487
--11.35155228 0.766344735
- 1.04661568 0.023673810
- -1.90461932 0.179728300
- 13.72465582 0.467775796
- 19.14882438 0.476924297
- -1.07480326 0.944407858
- -8.44289331 0.059804028
- 1.89732882 0.743225795
- -7.87832463 0.672539050
--12.24163608 0.916803014
--12.77212790 0.648129714
- 6.39197262 0.622954436
- 5.26261666 0.494421400
--10.65239640 0.695527931
- 4.63841458 0.499519163
- -2.94276544 0.429201572
- 4.68788953 0.639613685
- -1.03031400 0.349342009
- -2.69946354 0.221796918
--15.32237714 0.631289988
- -8.31962698 0.925363812
- -5.80897714 0.833536878
- 7.16070989 0.832098478
--10.99679727 0.794048223
- 0.84514458 0.748014415
- 2.23308495 0.111176288
- 3.56351018 0.599805508
- 0.88336430 0.746908710
--14.63461670 0.314391808
- 4.39039715 0.079604833
- -7.07001439 0.633705345
- 2.11252583 0.461468123
- 7.60219364 0.497389476
- -4.87713428 0.039952736
- 2.17515292 0.421830084
- 0.64302362 0.267982804
--22.29371533 0.646257366
- 0.31652779 0.060548371
- 7.93445046 0.343570449
- 0.28292029 0.651909785
- 2.77775640 0.637679287
- 6.22941586 0.291132945
- 23.68567532 0.708513840
- 9.49503014 0.645200206
- 0.87405420 0.063154289
- -4.04931224 0.110797498
- 8.91607239 0.732917195
- -5.77728018 0.635435595
--16.37296319 0.343727613
- 9.87409940 0.774177478
- -8.11360210 0.377765616
- 14.54242540 0.204343527
- 0.36239636 0.115528352
- 19.51009176 0.181365423
- 1.23592729 0.011676577
--15.81877035 0.767155028
- -0.05911251 0.737944231
- -6.55395965 0.214062137
- -7.85591487 0.539865054
- -9.73010882 0.730924287
- 11.79433862 0.267116856
- -8.84308360 0.088069165
- -5.56689174 0.405987947
- 7.59010135 0.655631611
- 10.07629305 0.031106157
- -6.19331485 0.052350502
- -4.58626710 0.326901540
- -5.19431549 0.125740555
- -2.08129025 0.034657174
--10.48798034 0.153632237
- 13.04657686 0.317295703
- 1.94142067 0.731437668
- -1.62470735 0.701070475
--12.27046912 0.505781742
- -2.96095228 0.122808075
- -2.91847765 0.372668438
--14.83230131 0.100749725
- 16.57350659 0.707854947
- 10.05473238 0.244046174
- 5.50858969 0.070691273
- 7.65309196 0.245393047
- 7.16359996 0.056261015
- 4.33026356 0.318855549
- -4.65721575 0.271249938
- 2.85909691 0.309377566
- 3.02736080 0.553944209
- 6.22796768 0.763945813
- -4.47036396 0.197721195
- 2.78901176 0.441166128
- -9.94574794 0.964660659
- 1.86451969 0.704635530
--10.38926659 0.772304221
- -5.36565800 0.029527218
- 1.99230152 0.578448308
- 13.65547415 0.936050102
- -2.05229879 0.851521142
- 0.99504588 0.974891334
- -1.46027404 0.320227281
- -8.45614275 0.727910071
- -0.95201934 0.199101032
- -2.46642929 0.462252060
- -6.44060430 0.703637604
- -2.58115910 0.084948525
- 0.76248197 0.125769097
- 12.00603845 0.675927328
- 1.97538215 0.782502470
- 2.23331320 0.870228155
- -3.10226060 0.485056198
- 12.59337170 0.584729095
- -2.42247402 0.387588168
- 9.41981063 0.374604221
- 6.26806243 0.727453335
- -5.30630356 0.427294265
- 13.81542647 0.394246994
- 1.05647858 0.646684666
--12.25005208 0.010531726
- -4.58162076 0.077133994
- 0.58094190 0.400275636
- 5.79443858 0.641731247
- 8.87635216 0.913593476
- 9.71048520 0.955285711
- 13.10563373 0.908471848
- 4.99194220 0.967014095
- 15.88178853 0.041518216
- 9.35962068 0.864770023
- -7.53095731 0.300106124
- 12.18427585 0.248876997
- 9.22034502 0.450149366
- -1.02861237 0.684246939
- -2.98140404 0.326901490
- -4.64316598 0.425381055
- 15.35233259 0.630774937
- -1.85655250 0.226889991
- 15.43748330 0.584219351
- 10.39060893 0.387854461
- 2.80705696 0.564024865
- 3.48201221 0.787103673
- 7.03787977 0.112019552
- 8.41853061 0.798376796
- 15.63925527 0.873984550
- -4.05742183 0.699131238
- 6.56954685 0.720018710
- 2.44007265 0.232697343
- 3.75597926 0.975133449
- 2.92362149 0.290975435
- -4.74372257 0.003738451
- 1.28365940 0.987536495
- 15.65288265 0.179629701
--11.76385004 0.850614822
- 1.56331228 0.592017435
- -9.64774741 0.024951969
- -9.44879860 0.993960270
- 29.33340056 0.913358233
- 7.97233120 0.021820585
--12.10837953 0.401535846
- -1.20729618 0.984977268
- 3.63219301 0.491142613
- 2.79853507 0.663823888
- 3.19584583 0.612511282
- -0.81790885 0.908769330
- -1.67795944 0.611690031
- 2.55137163 0.109447998
- 4.36572889 0.382049700
- -6.35667866 0.162787163
- -0.76239101 0.892383562
- -3.99558996 0.466572017
- -0.47513018 0.457760464
--10.69568261 0.544872910
- 4.30943512 0.982456072
- 2.91825703 0.823403368
- 0.10753188 0.945676881
- -8.38623073 0.923085521
- 4.95690232 0.188128654
- 5.39956649 0.331692462
- -1.47421789 0.327711090
- -1.81689665 0.713285385
- 5.15137860 0.414906436
- 5.68897151 0.110799415
- 0.78825159 0.396824099
- -1.78376652 0.929264595
- 0.76991060 0.950124414
- 15.81469073 0.951245195
- -4.33820920 0.009896093
- 1.67174323 0.821983745
- 0.38997945 0.928857784
- 1.97848484 0.175680230
- -5.81067801 0.772580245
--10.45208478 0.418845035
- 13.34024524 0.905645046
- -8.79585122 0.906516178
- 2.89093397 0.113010960
- 2.22324289 0.799940482
- 8.95497981 0.984663669
- 0.93288527 0.277914575
--17.35306978 0.455587022
- -3.26914604 0.406757639
- 8.75871227 0.067059659
- 1.79914932 0.784879863
- -0.67305388 0.006393497
- 1.66805704 0.039614073
- 9.03868439 0.601066847
- 4.29458670 0.015772820
- -8.15564320 0.939633197
- 12.50538902 0.766347628
- -0.45547258 0.464314122
- -9.47180656 0.640114882
--13.25567198 0.125841930
- 2.87660101 0.381931128
- 7.37834152 0.648958712
- -0.45874073 0.303139498
- 4.87941450 0.500090729
- 4.50344891 0.311329309
- -6.14257896 0.061368838
- 5.98243271 0.873804882
- -2.64694079 0.080493398
--17.79727796 0.188420116
--13.52552336 0.798403568
- 2.29086373 0.518700767
- 5.21493652 0.788828533
- -8.09641615 0.775041349
- 5.87005782 0.079447757
- 10.74795720 0.955691540
- -8.01115709 0.004508053
- -7.53735064 0.054195934
- -6.79130165 0.877193354
- -1.26419539 0.837772170
- 8.31082852 0.967509866
- 21.83090247 0.261529880
- 11.20453234 0.913858875
- 7.19128396 0.541942489
- -2.93623595 0.860095891
- -3.61446403 0.022418065
- -6.59997709 0.532998307
- 3.71486934 0.522669434
- 18.03420874 0.295064126
- -8.75452291 0.390175021
- -7.83680812 0.263760724
- -1.10263921 0.501819826
- 2.05633484 0.338684642
- 5.25636848 0.558667384
- -7.33260497 0.457327559
- 3.86721296 0.612182242
--15.94331373 0.478329365
- 3.71501899 0.264241588
- 18.26175822 0.023212661
- -5.21093378 0.184378036
- -2.44074986 0.297114134
--11.88339919 0.875956945
- 7.52127093 0.927322099
- 5.31597834 0.416344968
- 11.42012314 0.952491078
- 13.64950955 0.794183413
- 12.50861255 0.390723282
- -3.48142207 0.538708662
- 14.32910902 0.085221990
- 5.76196699 0.313860477
- 2.63751452 0.917424732
- 2.99975231 0.208662214
- 7.09852825 0.798246964
- -1.95742636 0.352166210
- 7.80534904 0.386523123
- -4.47229047 0.290188493
- -4.35535158 0.761527294
- 1.47083860 0.447897289
- 3.09504296 0.048513534
- 3.50446804 0.925072429
- 12.00487617 0.574499971
- 10.35171466 0.934193962
- -5.63256003 0.968833982
- 7.15625220 0.467160468
- -7.81378393 0.790220187
- 4.52101003 0.014459969
- 12.90773453 0.990835752
- 7.70737851 0.785329264
- -3.37196794 0.066025357
- -5.12793918 0.347459322
- -7.96083724 0.216608294
- 12.81247279 0.287880308
- 4.63872463 0.426881173
- -3.85439309 0.336532356
- 4.55633320 0.108001536
- -2.40824634 0.135247519
- 1.65932541 0.005108006
- 3.26129578 0.093163961
- -3.52114597 0.544041275
- -9.08479260 0.111212700
- 7.75150456 0.942726234
- 7.44829768 0.396996218
- 14.44430576 0.525470762
- -2.13457508 0.207577358
- 9.74871681 0.537177845
- -4.53338693 0.625854028
- 16.15962824 0.947933141
- -0.17711664 0.480940902
- -7.21470818 0.006952612
- -6.27644212 0.737909602
- -0.81648165 0.230003567
- -2.10429152 0.209671398
- 7.69291241 0.987903443
- -0.32284504 0.183904658
- -0.90833921 0.782169770
- 10.35542238 0.201758865
- 10.40788689 0.540802365
- 10.80011849 0.298263948
- 7.39943598 0.785716539
--12.71674257 0.154135834
- 16.67139866 0.116794235
- 12.47832985 0.998179468
- 3.24041348 0.653080096
- -5.50381593 0.995396942
--10.41952811 0.576472768
- 4.33514092 0.146434686
- 4.41294276 0.507165968
- -0.14746982 0.698144836
- -1.33323051 0.466481571
- -7.01201350 0.797150114
- 6.58669848 0.942287809
- 7.19444974 0.053569397
- -5.66046997 0.435728340
- -5.07828702 0.497727572
- 13.72045272 0.324222944
- 9.99111984 0.355713969
- -4.42363728 0.071790181
- -2.34300923 0.618434528
- 4.98594041 0.605667438
- -2.45307721 0.894546647
- -3.52276424 0.760086779
- -3.69489441 0.960758209
- 13.04792817 0.511273320
- 21.61433486 0.236270637
- -9.57303968 0.964235539
- 11.70400744 0.391045695
- 4.25170422 0.411577090
- 7.87516537 0.952858161
- 9.89202673 0.971106687
- 7.51554467 0.505791978
- 2.17944879 0.893835908
- 0.82420351 0.213912155
- 2.47121932 0.688019842
--14.88503628 0.640950883
- 8.16032283 0.277742858
- -4.65776244 0.129415853
- 7.48274838 0.074213153
- 7.70537066 0.476778957
- 5.88202944 0.351838898
- 1.95618325 0.106331699
- 7.22064623 0.511434587
--18.64632081 0.009314188
- -6.16794611 0.526204245
- 2.14042033 0.675800465
- -1.89535048 0.916845690
- -7.77156605 0.069742819
- -6.84078801 0.865082345
- 8.17539904 0.095895629
- 10.75170309 0.821383078
- 14.31498805 0.117893208
- -2.82264467 0.809086411
- 0.11117380 0.400587471
- 6.43898314 0.333163663
- 9.48110784 0.465173316
- 5.39395511 0.695273081
- -2.05636570 0.508060862
- 0.68666117 0.647109494
- -6.41880322 0.267530762
- -0.12096589 0.986901165
- 6.46062643 0.588580914
- -4.20926136 0.550783675
- 4.07354300 0.907963701
- 10.84045143 0.900920521
- 2.64504664 0.767700269
- 10.34578229 0.197810342
- -0.19222273 0.281932395
- 3.47400952 0.977555902
- 11.04549389 0.694010579
- 6.79729856 0.056652433
- 9.28300628 0.598930531
- -3.53453282 0.183412212
- 8.04028248 0.250746943
- 5.75964045 0.424692336
- -4.98252741 0.867446071
- 12.00352175 0.289615080
- 7.53497791 0.350915526
- 2.54579776 0.655113837
- -9.29572208 0.900136667
- 6.41659249 0.100570650
- 7.37095646 0.907179211
--12.78417775 0.262214556
- 0.87962107 0.624657444
- -5.96939907 0.296725805
- -2.56857339 0.604065931
- 4.27131811 0.962952479
- 21.72603838 0.442485270
- 6.10056565 0.418383130
- 10.48099521 0.333593221
- 19.28363092 0.382408442
- 2.12080726 0.601206970
- -6.82450704 0.740158518
- 11.32395692 0.627015570
- 5.00040701 0.476274658
--11.64750733 0.105099095
- 5.77442654 0.576560214
- 0.31340364 0.516479036
- -2.09881449 0.146089191
- 5.12411327 0.368130477
- 1.70530391 0.621828438
--12.95649749 0.355726301
- 8.43735652 0.275383759
--15.56161079 0.413160084
- 5.28942694 0.069125495
- 5.96040877 0.438716686
- -2.59318107 0.571116303
- 6.95988992 0.650760909
- 14.00074797 0.623645969
- 1.66101456 0.558763985
- -2.57968349 0.648185379
- -5.47584253 0.716901151
- 6.37222581 0.060563130
- 2.83664864 0.842419730
- 1.48926558 0.620280308
- 0.33471689 0.170312461
- 5.21648412 0.317639631
- 0.51733642 0.843867329
- 9.86005834 0.306036746
- -5.81145791 0.975655452
- -5.43219061 0.303385368
- 5.87157118 0.677369776
- 2.08889926 0.310200439
- -2.53433085 0.194730908
- 7.01359575 0.674259533
- -2.00936260 0.682056466
- -2.98240739 0.787899917
- -7.43289210 0.357483044
--12.58905988 0.981387385
- 5.78095517 0.533526274
- -1.23065889 0.687266774
- -6.82309960 0.293249774
- 8.47000829 0.842056399
- -5.81624772 0.303700280
--14.83571031 0.311387926
- 4.66808472 0.091222946
- -2.90144463 0.438301785
- 10.62458662 0.828335698
- 7.88002491 0.990156110
- 10.27680283 0.251087079
- -9.42498970 0.292462244
- 6.73027640 0.213065205
- 1.28169895 0.353152789
--14.29203733 0.264563048
- 20.35772711 0.265208837
- 3.55095071 0.242905653
--17.97067670 0.373951756
- 10.53141139 0.247520698
- 0.05293205 0.579940423
- 12.79674707 0.288031751
- -5.44235185 0.075899079
- 14.29464811 0.960707538
- -1.36753291 0.124265178
- -4.25946974 0.521720352
--12.46519252 0.385503339
- -6.65343143 0.540942219
- 5.55949184 0.143194404
- -1.20480594 0.515905644
- -4.13839908 0.164461445
- -2.21345425 0.812969725
- 3.94223380 0.229238952
--10.78661097 0.395049514
- 3.06997341 0.791234255
- 24.82205477 0.110859039
- 6.28791249 0.867125744
- -2.80296119 0.703583849
- 13.24274039 0.425951975
- -0.19577471 0.361568727
- -2.34894781 0.954814545
- 19.76339577 0.635462177
- -1.87591480 0.149121567
- -7.70962391 0.711708342
- -2.46291902 0.390902746
-end data
-regression /variables=v0 v1 /statistics defaults /dependent=v0 /method=enter.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-v0,F8.0
-v1,F8.0
-
-Table: Model Summary
-,R,R Square,Adjusted R Square,Std. Error of the Estimate
-,.05,.00,.00,8.11
-
-Table: ANOVA
-,,Sum of Squares,df,Mean Square,F,Significance
-,Regression,235.23,1,235.23,3.58,.06
-,Residual,98438.40,1498,65.71,,
-,Total,98673.63,1499,,,
-
-Table: Coefficients
-,,B,Std. Error,Beta,t,Significance
-,(Constant),1.24,.42,.00,2.95,.21
-,v1,1.37,.72,.05,1.89,.06
-,,,,,,
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests that the REGRESSION command works.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo Not cleaning $TEMPDIR;
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-data list list / v0 to v2.
-begin data
- 0.65377128 7.735648 -23.97588
--0.13087553 6.142625 -19.63854
- 0.34880368 7.651430 -25.26557
- 0.69249021 6.125125 -16.57090
--0.07368178 8.245789 -25.80001
--0.34404919 6.031540 -17.56743
- 0.75981559 9.832291 -28.35977
--0.46958313 5.343832 -16.79548
--0.06108490 8.838262 -29.25689
- 0.56154863 6.200189 -18.58219
-end data
-regression /variables=v0 v1 v2 /statistics defaults /dependent=v2 /method=enter /save=pred resid.
-list.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-v0,F8.0
-v1,F8.0
-v2,F8.0
-
-Table: Model Summary
-,R,R Square,Adjusted R Square,Std. Error of the Estimate
-,.97,.94,.93,1.34
-
-Table: ANOVA
-,,Sum of Squares,df,Mean Square,F,Significance
-,Regression,202.75,2,101.38,56.75,.00
-,Residual,12.50,7,1.79,,
-,Total,215.26,9,,,
-
-Table: Coefficients
-,,B,Std. Error,Beta,t,Significance
-,(Constant),2.19,2.36,.00,.93,.52
-,v0,1.81,1.05,.17,1.72,.12
-,v1,-3.43,.33,-1.03,-10.33,.00
-,,,,,,
-
-Table: Data List
-v0,v1,v2,RES1,PRED1
-.65,7.74,-23.98,-.84,-23.13
--.13,6.14,-19.64,-.54,-19.10
-.35,7.65,-25.27,-1.87,-23.40
-.69,6.13,-16.57,.97,-17.54
--.07,8.25,-25.80,.40,-26.20
--.34,6.03,-17.57,1.53,-19.10
-.76,9.83,-28.36,1.77,-30.13
--.47,5.34,-16.80,.18,-16.97
--.06,8.84,-29.26,-1.05,-28.21
-.56,6.20,-18.58,-.54,-18.04
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests the reliability command.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-
-activity="create program"
-cat > $TESTFILE <<EOF
-
-data list notable list /var1 *
- var2 *
- var6 *
- var7 *
- var8 *
- var9 *
- var11 *
- var12 *
- var15 *
- var16 *
- var17 *
- var19 *
- .
-
-begin data.
-6 7 7 5 7 7 7 7 7 7 6 6
-6 7 7 6 7 6 7 5 6 5 7 7
-6 6 7 6 5 3 6 4 5 6 4 5
-4 6 5 6 6 5 4 3 5 6 5 6
-5 6 5 5 6 5 4 4 6 6 5 5
-6 6 7 6 6 5 6 5 6 6 5 6
-5 6 6 5 6 5 5 4 6 5 5 5
-5 7 7 7 7 7 6 5 7 7 7 7
-6 6 6 5 5 7 6 5 6 6 5 6
-. . . . . . . . . . . .
-6 6 5 5 5 6 6 4 6 5 5 5
-7 7 7 6 7 6 7 6 6 6 7 6
-4 7 6 6 6 5 5 4 4 5 5 6
-5 6 3 5 4 1 4 6 2 3 3 2
-3 6 6 5 6 2 4 2 2 4 4 5
-6 6 7 5 6 5 7 6 5 6 6 5
-6 5 6 6 5 6 6 6 6 4 5 5
-5 7 7 . 6 6 6 5 6 6 6 6
-5 7 5 5 4 6 7 6 5 4 6 5
-7 7 7 6 7 7 7 6 7 7 7 6
-3 6 5 6 5 7 7 3 4 7 5 7
-6 7 7 6 5 6 5 5 6 6 6 6
-5 5 6 5 5 5 5 4 5 5 5 6
-6 6 7 4 5 6 6 6 6 5 5 6
-6 5 6 6 4 4 5 4 5 6 4 5
-5 6 7 6 6 7 7 5 6 6 6 5
-5 6 5 7 4 6 6 5 7 7 5 6
-. . . . . . . . . . . .
-7 6 6 5 6 6 7 6 6 5 5 6
-6 6 7 7 7 7 7 6 7 6 6 7
-7 5 5 . 5 . 7 3 5 4 5 3
-7 6 7 5 4 5 7 5 7 5 5 6
-6 5 6 6 6 5 5 5 5 6 5 6
-7 7 7 7 7 7 7 7 5 6 7 7
-. . . . . . . . . . . .
-5 5 6 7 5 6 6 4 6 6 6 5
-6 6 5 7 5 6 7 5 6 5 4 6
-7 6 7 6 7 5 6 7 7 6 6 6
-5 6 5 6 5 6 7 2 5 7 3 7
-6 6 5 6 5 6 6 6 6 6 5 6
-7 6 7 6 6 6 6 6 6 7 6 7
-7 7 6 5 6 6 7 7 7 4 6 5
-3 7 7 6 6 7 7 7 6 6 6 4
-3 5 3 4 3 3 3 3 3 3 3 5
-5 7 7 7 5 7 6 2 6 7 6 7
-7 7 7 7 7 7 7 6 7 7 7 6
-6 5 7 4 4 4 5 6 5 5 4 5
-4 7 7 4 4 3 6 3 5 3 4 5
-7 7 7 7 7 7 7 7 7 7 7 5
-3 6 5 5 4 5 4 4 5 5 3 5
-6 7 6 6 6 7 7 6 6 6 7 6
-2 5 4 6 3 2 2 2 2 7 2 2
-4 6 6 5 5 5 6 5 5 6 6 5
-5 7 4 5 6 6 6 5 6 6 5 6
-5 7 7 5 6 5 6 5 5 4 5 4
-4 5 6 5 6 4 5 5 5 4 5 5
-7 6 6 5 5 6 7 5 6 5 7 6
-5 6 6 5 4 5 5 3 4 5 5 5
-5 7 6 4 4 5 6 5 6 4 4 6
-6 6 6 6 5 7 7 6 5 5 6 6
-6 6 7 6 7 6 6 5 6 7 6 5
-7 6 7 6 7 6 7 7 5 5 6 6
-5 6 6 5 5 5 6 5 6 7 7 5
-5 6 6 5 6 5 6 6 6 6 6 6
-5 5 5 5 6 4 5 3 4 7 6 5
-5 7 7 6 6 6 6 5 6 7 6 7
-6 6 7 7 7 5 6 5 5 5 5 4
-2 7 5 4 6 5 5 2 5 6 4 6
-6 7 7 5 6 6 7 6 6 7 5 7
-5 6 7 6 6 3 5 7 6 6 5 6
-6 6 6 3 5 5 5 6 6 6 4 5
-4 7 7 4 7 4 5 5 5 7 4 4
-. . . . . . . . . . . .
-6 6 7 6 7 6 7 7 6 7 7 6
-. . . . . . . . . . . .
-5 6 5 7 6 5 6 6 5 6 4 6
-5 5 5 5 4 5 5 5 7 5 5 5
-6 6 6 4 5 4 6 6 6 4 5 4
-6 5 7 4 6 4 6 5 6 6 6 3
-5 7 6 5 5 5 5 5 6 7 6 6
-5 5 7 7 5 5 6 6 5 5 5 7
-5 6 7 6 7 5 6 4 6 7 6 7
-4 5 5 5 6 5 6 5 6 6 5 6
-6 5 5 5 6 3 4 5 5 4 5 3
-6 6 6 5 5 5 4 3 4 5 5 5
-6 7 7 6 2 3 6 6 6 5 7 7
-6 7 5 5 6 6 6 5 6 6 6 6
-6 7 7 6 7 7 7 5 5 6 6 6
-6 6 6 6 7 6 6 7 6 6 6 6
-5 6 6 6 3 5 6 6 5 5 4 6
-4 6 5 6 6 5 6 5 6 6 5 5
-6 4 6 5 4 6 7 4 5 6 5 5
-6 7 6 4 6 5 7 6 7 7 6 5
-6 7 7 6 7 6 7 7 7 6 6 6
-6 6 6 4 5 6 7 7 5 6 4 4
-3 3 5 3 3 1 5 6 3 2 3 3
-7 7 5 6 6 7 7 6 7 7 7 7
-5 6 6 6 7 5 4 5 4 7 6 7
-3 6 5 4 3 3 3 5 5 6 3 4
-5 7 6 4 6 5 5 6 6 7 5 6
-5 7 6 6 6 6 6 5 6 7 7 6
-7 7 5 6 7 7 7 7 6 5 7 7
-6 7 6 6 5 6 7 7 6 5 6 6
-6 7 7 7 7 6 6 7 6 7 7 7
-4 6 4 7 3 6 5 5 4 3 5 6
-5 5 7 5 4 6 7 5 4 6 6 5
-5 5 6 4 6 5 7 6 5 5 5 6
-. . . . . . . . . . . .
-. . . . . . . . . . . .
-5 7 7 5 6 6 7 7 6 6 6 7
-6 7 7 1 2 1 7 7 5 5 5 2
-. . . . . . . . . . . .
-3 7 4 6 4 7 4 6 4 7 4 7
-5 7 3 5 5 6 7 5 4 7 7 4
-4 7 7 5 4 6 7 7 6 5 4 4
-6 6 2 2 6 4 6 5 5 1 5 2
-5 5 6 4 5 4 6 5 5 6 5 5
-. . . . . . . . . . . .
-5 7 6 6 6 6 6 6 5 6 6 6
-6 6 6 5 6 6 6 6 7 5 6 7
-3 6 3 3 5 3 3 5 3 5 7 4
-4 4 6 3 3 3 4 3 4 2 3 6
-5 7 7 6 5 4 7 5 7 7 3 7
-4 5 4 4 4 4 3 3 3 4 3 3
-6 7 7 5 6 6 7 5 4 5 5 5
-3 5 3 3 1 3 4 3 4 7 6 7
-4 5 4 4 4 3 4 5 6 6 4 5
-5 6 3 4 5 3 5 3 4 5 6 4
-5 5 5 6 6 6 6 4 5 6 6 5
-6 7 7 2 2 6 7 7 7 7 5 7
-5 7 7 4 6 5 7 5 5 5 6 6
-6 6 7 7 5 5 5 7 6 7 7 7
-6 5 7 3 6 5 6 5 5 6 5 4
-5 7 6 5 6 6 6 5 6 5 5 6
-4 5 5 5 6 3 5 3 3 6 5 5
-. . . . . . . . . . . .
-5 6 6 4 4 4 5 3 5 5 2 6
-5 6 7 5 5 6 6 5 5 6 6 6
-6 7 7 6 4 7 7 6 7 5 6 7
-6 6 5 4 5 2 7 6 6 5 6 6
-2 2 2 2 2 2 3 2 3 1 1 2
-end data.
-
-RELIABILITY
- /VARIABLES=var2 var8 var15 var17 var6
- /SCALE('Everything') var6 var8 var15 var17
- /MODEL=ALPHA.
-
-RELIABILITY
- /VARIABLES=var6 var8 var15 var17
- /SCALE('Nothing') ALL
- /MODEL=SPLIT(2)
- .
-
-RELIABILITY
- /VARIABLES=var2 var6 var8 var15 var17 var19
- /SCALE('Totals') var6 var8 var15 var17
- /SUMMARY = total
- .
-
-
-RELIABILITY
- /VARIABLES=var6 var8 var15 var17
- .
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -c -b pspp.csv - << EOF
-Scale: Everything
-
-Table: Case Processing Summary
-,,N,%
-Cases,Valid,131,92.91
-,Excluded,10,7.09
-,Total,141,100.00
-
-Table: Reliability Statistics
-Cronbach's Alpha,N of Items
-.75,4
-
-Scale: Nothing
-
-Table: Case Processing Summary
-,,N,%
-Cases,Valid,131,92.91
-,Excluded,10,7.09
-,Total,141,100.00
-
-Table: Reliability Statistics
-Cronbach's Alpha,Part 1,Value,.55
-,,N of Items,2
-,Part 2,Value,.63
-,,N of Items,2
-,Total N of Items,,4
-Correlation Between Forms,,,.61
-Spearman-Brown Coefficient,Equal Length,,.75
-,Unequal Length,,.75
-Guttman Split-Half Coefficient,,,.75
-
-Scale: Totals
-
-Table: Case Processing Summary
-,,N,%
-Cases,Valid,131,92.91
-,Excluded,10,7.09
-,Total,141,100.00
-
-Table: Reliability Statistics
-Cronbach's Alpha,N of Items
-.75,4
-
-Table: Item-Total Statistics
-,Scale Mean if Item Deleted,Scale Variance if Item Deleted,Corrected Item-Total Correlation,Cronbach's Alpha if Item Deleted
-var6,15.97,8.43,.51,.71
-var8,16.56,7.86,.53,.70
-var15,16.47,8.45,.56,.68
-var17,16.60,8.00,.57,.67
-
-Scale: ANY
-
-Table: Case Processing Summary
-,,N,%
-Cases,Valid,131,92.91
-,Excluded,10,7.09
-,Total,141,100.00
-
-Table: Reliability Statistics
-Cronbach's Alpha,N of Items
-.75,4
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that the rename command works properly
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST LIST /brakeFluid * y * .
-BEGIN DATA.
-1 3
-2 3
-3 3
-4 3
-END DATA.
-
-LIST.
-
-RENAME VARIABLES (brakeFluid=applecarts).
-
-LIST.
-
-SAVE /OUTFILE='$TEMPDIR/rename.sav'.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="check sysfile"
-grep -i Brake $TEMPDIR/rename.sav
-if [ $? -eq 0 ] ; then fail ; fi
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-brakeFluid,F8.0
-y,F8.0
-
-Table: Data List
-brakeFluid,y
-1.00,3.00
-2.00,3.00
-3.00,3.00
-4.00,3.00
-
-Table: Data List
-applecarts,y
-1.00,3.00
-2.00,3.00
-3.00,3.00
-4.00,3.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests the ROC command.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-set format F10.3.
-data list notable list /x * y * w * a *.
-begin data.
-1 1 2 1
-1 2 28 0
-2 3 4 1
-2 4 14 0
-3 5 10 1
-. . 1 0
-3 1 5 0
-4 2 14 1
-4 3 2 0
-5 4 20 1
-5 4 20 .
-5 5 1 0
-end data.
-
-weight by w.
-
-roc x by a (1)
- /plot = none
- /print = se coordinates
- /criteria = testpos(large) distribution(free) ci(99)
- /missing = exclude .
-
-roc x y by a (1)
- /plot = curve(reference)
- /print = se coordinates
- /criteria = testpos(large) distribution(negexpo) ci(95)
- /missing = exclude .
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare results"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Case Summary
-,Valid N (listwise),
-a,Unweighted,Weighted
-Positive,5,50.000
-Negative,5,50.000
-
-Table: Area Under the Curve (x)
-,,,Asymp. 99% Confidence Interval,
-Area,Std. Error,Asymptotic Sig.,Lower Bound,Upper Bound
-.910,.030,.000,.839,.981
-
-Table: Coordinates of the Curve (x)
-Positive if greater than or equal to,Sensitivity,1 - Specificity
-.000,1.000,1.000
-1.500,.960,.440
-2.500,.880,.160
-3.500,.680,.060
-4.500,.400,.020
-6.000,.000,.000
-
-Table: Case Summary
-,Valid N (listwise),
-a,Unweighted,Weighted
-Positive,5,50.000
-Negative,5,50.000
-
-Table: Area Under the Curve
-,,,,Asymp. 95% Confidence Interval,
-Variable under test,Area,Std. Error,Asymptotic Sig.,Lower Bound,Upper Bound
-x,.910,.030,.000,.860,.960
-y,.697,.052,.001,.611,.783
-
-Table: Coordinates of the Curve
-Test variable,Positive if greater than or equal to,Sensitivity,1 - Specificity
-x,.000,1.000,1.000
-,1.500,.960,.440
-,2.500,.880,.160
-,3.500,.680,.060
-,4.500,.400,.020
-,6.000,.000,.000
-y,.000,1.000,1.000
-,1.500,.960,.900
-,2.500,.680,.340
-,3.000,.600,.340
-,3.500,.600,.300
-,4.500,.200,.020
-,6.000,.000,.000
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests the ROC command.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-set format F10.3.
-data list notable list /x * a * comment (a20).
-begin data.
-0 1 ""
-0 0 ""
-1 1 ""
-1 0 ""
-2 1 ""
-2 0 ""
-5 1 ""
-5 0 ""
-10 1 ""
-10 0 ""
-15 1 ""
-15 0 ""
-20 1 ""
-20 1 ""
-22 0 "here and"
-22 0 "here is the anomoly"
-25 1 ""
-25 0 ""
-30 1 ""
-30 0 ""
-35 1 ""
-35 0 ""
-38 1 ""
-38 0 ""
-39 1 ""
-39 0 ""
-40 1 ""
-40 0 ""
-end data.
-
-roc x by a (1)
- /plot = none
- print = se
- .
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare results"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Case Summary
-,Valid N (listwise),
-a,Unweighted,Weighted
-Positive,14,14.000
-Negative,14,14.000
-
-Table: Area Under the Curve (x)
-,,,Asymp. 95% Confidence Interval,
-Area,Std. Error,Asymptotic Sig.,Lower Bound,Upper Bound
-.490,.111,.927,.307,.673
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests the SAMPLE function
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-
-activity="create program"
-cat > $TEMPDIR/sample.stat <<EOF
-set seed=3
-
-data list notable /A 1-2.
-begin data.
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-end data.
-sample .5.
-list.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TEMPDIR/sample.stat
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create head"
-grep -v '^[ \r]*$' $TEMPDIR/pspp.csv | head -1 > $TEMPDIR/head
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="extract data"
-grep '[0-9][0-9]*' $TEMPDIR/pspp.csv > $TEMPDIR/data
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare head"
-diff -b $TEMPDIR/head - << EOF
-Table: Data List
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare data"
-diff -w $TEMPDIR/data - << EOF > $TEMPDIR/diffs
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-EOF
-# note vv
-if [ $? -eq 0 ] ; then fail ; fi
-
-# Check that there was nothing added
-grep '^<' $TEMPDIR/diffs
-# note vv
-if [ $? -eq 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the sort command
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-: ${PERL:=perl}
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="write perl program for generating data"
-cat > gen-data.pl <<'EOF'
-use strict;
-use warnings;
-
-# Generate shuffled data.
-my (@data);
-for my $i (0...$ARGV[0] - 1) {
- push (@data, $i) foreach 1...$ARGV[1];
-}
-fisher_yates_shuffle (\@data);
-
-# Output shuffled data.
-my (@shuffled) = map ([$data[$_], $_], 0...$#data);
-open (SHUFFLED, ">sort.in");
-print SHUFFLED "$data[$_] $_\n" foreach 0...$#data;
-
-# Output sorted data.
-my (@sorted) = sort { $a->[0] <=> $b->[0] || $a->[1] <=> $b->[1] } @shuffled;
-open (SORTED, ">sort.exp");
-print SORTED "$_->[0] $_->[1]\n" foreach @sorted;
-
-# From perlfaq4.
-sub fisher_yates_shuffle {
- my $deck = shift; # $deck is a reference to an array
- my $i = @$deck;
- while ($i--) {
- my $j = int rand ($i+1);
- @$deck[$i,$j] = @$deck[$j,$i];
- }
-}
-EOF
-
-for count_repeat_buffers in \
- "100 5 2" "100 5 3" "100 5 4" "100 5 5" "100 5 10" "100 5 50" "100 5 100" "100 5" \
- "100 10 2" "100 10 3" "100 10 5" "100 10" \
- "1000 5 5" "1000 5 50" "1000 5" \
- "100 100 3" "100 100 5" "100 100" \
- "10000 5 500" \
- "50000 1"; do
- set $count_repeat_buffers
- count=$1
- repeat=$2
- buffers=$3
-
- printf .
-
- activity="generate data for $count_repeat_buffers run"
- $PERL gen-data.pl $count $repeat > sort.data
- if [ $? -ne 0 ] ; then no_result ; fi
-
- activity="generate test program for $count_repeat_buffers run"
- {
- echo "data list list file='sort.in'/x y (f8)."
- if test "$buffers" != ""; then
- echo "sort by x/buffers=$buffers."
- else
- echo "sort by x."
- fi
- echo "print outfile='sort.out'/x y."
- echo "execute."
- } > sort.pspp || no_result
-
- activity="run program"
- $SUPERVISOR $PSPP --testing-mode -o pspp.csv sort.pspp
- if [ $? -ne 0 ] ; then no_result ; fi
-
- perl -pi -e 's/^\s*$//g' sort.exp sort.out
- diff -w sort.exp sort.out
- if [ $? -ne 0 ] ; then fail ; fi
-done
-echo
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the split file command
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TEMPDIR/split.stat <<EOF
-title 'Test SPLIT FILE utility'.
-
-data list notable /X 1 Y 2.
-begin data.
-12
-16
-17
-19
-15
-14
-27
-20
-26
-25
-28
-29
-24
-end data.
-split file by x.
-list.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TEMPDIR/split.stat
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare results"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Title: Test SPLIT FILE utility
-
-Variable,Value,Label
-X,1,
-
-Table: Data List
-X,Y
-1,2
-1,6
-1,7
-1,9
-1,5
-1,4
-
-Variable,Value,Label
-X,2,
-
-Table: Data List
-X,Y
-2,7
-2,0
-2,6
-2,5
-2,8
-2,9
-2,4
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that SYSFILE INFO works.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="Create test file"
-cat > $TESTFILE << EOF
-DATA LIST LIST /x * name (a10) .
-BEGIN DATA
-1 one
-2 two
-3 three
-END DATA.
-SAVE OUTFILE='pro.sav'.
-
-sysfile info file='pro.sav'.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="filter output"
-egrep -v '^(Created|Endian|Integer Format|Real Format):,' $TEMPDIR/pspp.csv > $TEMPDIR/out-filtered
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -c $TEMPDIR/out-filtered - << EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-x,F8.0
-name,A10
-
-File:,pro.sav
-Label:,No label.
-Variables:,2
-Cases:,3
-Type:,System File
-Weight:,Not weighted.
-Mode:,Compression on.
-Charset:,Unknown
-
-Variable,Description,,Position
-x,Format: F8.2,,1
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-name,Format: A10,,2
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 10,,
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that system files can be read and written
-# without the long name tables.
-
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST LIST NOTABLE / X * variable001 * variable002 * variable003 * .
-BEGIN DATA.
- 1.00 1.00 1.0 2.00
- 1.00 1.00 2.0 30.00
- 1.00 2.00 1.0 8.00
- 1.00 2.00 2.0 20.00
- 2.00 1.00 1.0 2.00
- 2.00 1.00 2.0 22.00
- 2.00 2.00 1.0 1.00
- 2.00 2.00 2.0 3.00
-END DATA.
-
-SAVE /OUTFILE='$TEMPDIR/foo.sav'
- /VERSION=2
- .
-
-GET /FILE='$TEMPDIR/foo.sav'.
-
-LIST.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="check file exists"
-ls -l $TEMPDIR/foo.sav > /dev/null
-if [ $? -ne 0 ] ; then no_result ; fi
-
-# Ensure that the written file has no long name table
-activity="check sysfile type"
-grep 'X=X' $TEMPDIR/foo.sav
-if [ $? -eq 0 ] ; then fail ; fi
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-x,variable,variab_a,variab_b
-1.00,1.00,1.00,2.00
-1.00,1.00,2.00,30.00
-1.00,2.00,1.00,8.00
-1.00,2.00,2.00,20.00
-2.00,1.00,1.00,2.00
-2.00,1.00,2.00,22.00
-2.00,2.00,1.00,1.00
-2.00,2.00,2.00,3.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that system files can be read and written
-# including the long variable names.
-
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST LIST NOTABLE / variable001 * variable002 * variable003 * variable004 * .
-BEGIN DATA.
- 1.00 1.00 1.0 2.00
- 1.00 1.00 2.0 30.00
- 1.00 2.00 1.0 8.00
- 1.00 2.00 2.0 20.00
- 2.00 1.00 1.0 2.00
- 2.00 1.00 2.0 22.00
- 2.00 2.00 1.0 1.00
- 2.00 2.00 2.0 3.00
-END DATA.
-
-SAVE /OUTFILE='$TEMPDIR/foo.sav'.
-
-GET /FILE='$TEMPDIR/foo.sav'.
-
-LIST.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-variable001,variable002,variable003,variable004
-1.00,1.00,1.00,2.00
-1.00,1.00,2.00,30.00
-1.00,2.00,1.00,8.00
-1.00,2.00,2.00,20.00
-2.00,1.00,1.00,2.00
-2.00,1.00,2.00,22.00
-2.00,2.00,1.00,1.00
-2.00,2.00,2.00,3.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that the T-TEST /GROUPS command works properly
-# when a single value in the independent variable is given.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-data list list /INDEP * DEP *.
-begin data.
- 1 6
- 1 6
- 1 7
- 1 6
- 1 13
- 1 4
- 1 7
- 1 9
- 1 7
- 1 12
- 1 11
- 2 11
- 2 9
- 2 8
- 2 4
- 2 16
- 2 9
- 2 9
- 2 5
- 2 4
- 2 10
- 2 14
-end data.
-t-test /groups=indep(1.514) /var=dep.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-INDEP,F8.0
-DEP,F8.0
-
-Table: Group Statistics
-,INDEP,N,Mean,Std. Deviation,S.E. Mean
-DEP,>=1.514,11,9.00,3.82,1.15
-,<1.514,11,8.00,2.86,.86
-
-Table: Independent Samples Test
-,,Levene's Test for Equality of Variances,,t-test for Equality of Means,,,,,,
-,,,,,,,,,95% Confidence Interval of the Difference,
-,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,Lower,Upper
-DEP,Equal variances assumed,.17,.68,-.69,20.00,.50,-1.00,1.44,-4.00,2.00
-,Equal variances not assumed,,,-.69,18.54,.50,-1.00,1.44,-4.02,2.02
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests that the T-TEST /TESTVAL command works OK
-# when there are per analysis missing values involved.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program 1"
-cat > $TESTFILE <<EOF
-data list list /id * x1 * x2.
-begin data.
-1 3.5 34
-2 2.0 10
-3 2.0 23
-4 3.5 98
-5 3.0 23
-67 4.0 8
-end data.
-
-t-test /testval=3.0 /var=x1 x2.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 1"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="copy output"
-cp $TEMPDIR/pspp.csv $TEMPDIR/ref.csv
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="create program 2"
-cat > $TESTFILE <<EOF
-data list list /id * x1 * x2.
-begin data.
-1 3.5 34
-2 2.0 10
-3 2.0 23
-4 3.5 98
-5 3.0 23
-6 4.0 .
-7 . 8
-end data.
-
-t-test /missing=analysis /testval=3.0 /var=x1 x2.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 2"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare outputs"
-diff $TEMPDIR/ref.csv $TEMPDIR/pspp.csv
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests that the T-TEST /TESTVAL command works OK
-# when there are listwise missing values involved.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program 1"
-cat > $TESTFILE <<EOF
-data list list /id * x1 * x2.
-begin data.
-1 3.5 34
-2 2.0 10
-3 2.0 23
-4 3.5 98
-5 3.0 23
-end data.
-
-t-test /testval=3.0 /var=x1 x2.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 1"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="copy output"
-cp $TEMPDIR/pspp.csv $TEMPDIR/ref.csv
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="create program 2"
-cat > $TESTFILE <<EOF
-data list list /id * x1 * x2.
-begin data.
-1 3.5 34
-2 2.0 10
-3 2.0 23
-4 3.5 98
-5 3.0 23
-6 4.0 99
-end data.
-
-MISSING VALUES x2(99).
-
-t-test /missing=listwise /testval=3.0 /var=x1 x2.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 2"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare outputs"
-diff $TEMPDIR/ref.csv $TEMPDIR/pspp.csv
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests that the T-TEST /TESTVAL command works OK
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-data list list /ID * ABC *.
-begin data.
-1 3.5
-2 2.0
-3 2.0
-4 3.5
-5 3.0
-6 4.0
-end data.
-
-t-test /testval=2.0 /var=abc.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-ID,F8.0
-ABC,F8.0
-
-Table: One-Sample Statistics
-,N,Mean,Std. Deviation,S.E. Mean
-ABC,6,3.00,.84,.34
-
-Table: One-Sample Test
-,Test Value = 2.000000,,,,,
-,,,,,95% Confidence Interval of the Difference,
-,t,df,Sig. (2-tailed),Mean Difference,Lower,Upper
-ABC,2.93,5,.03,1.00,.12,1.88
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests that the T-TEST /GROUPS command works
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-data list list /ID * INDEP * DEP1 * DEP2 *.
-begin data.
-1 1.1 1 3
-2 1.1 2 4
-3 1.1 2 4
-4 1.1 2 4
-5 1.1 3 5
-6 2.1 3 1
-7 2.1 4 2
-8 2.1 4 2
-9 2.1 4 2
-10 2.1 5 3
-11 3.1 2 2
-end data.
-
-* Note that this last case should be IGNORED since it doesn't have a dependent variable of either 1 or 2
-
-t-test /GROUPS=indep(1.1,2.1) /var=dep1 dep2.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-ID,F8.0
-INDEP,F8.0
-DEP1,F8.0
-DEP2,F8.0
-
-Table: Group Statistics
-,INDEP,N,Mean,Std. Deviation,S.E. Mean
-DEP1,1.1,5,2.00,.71,.32
-,2.1,5,4.00,.71,.32
-DEP2,1.1,5,4.00,.71,.32
-,2.1,5,2.00,.71,.32
-
-Table: Independent Samples Test
-,,Levene's Test for Equality of Variances,,t-test for Equality of Means,,,,,,
-,,,,,,,,,95% Confidence Interval of the Difference,
-,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,Lower,Upper
-DEP1,Equal variances assumed,.00,1.00,-4.47,8.00,.00,-2.00,.45,-3.03,-.97
-,Equal variances not assumed,,,-4.47,8.00,.00,-2.00,.45,-3.03,-.97
-DEP2,Equal variances assumed,.00,1.00,4.47,8.00,.00,2.00,.45,.97,3.03
-,Equal variances not assumed,,,4.47,8.00,.00,2.00,.45,.97,3.03
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests that the T-TEST /GROUPS command works OK
-# when ANALYSIS missing values are involved
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program 1"
-cat > $TESTFILE <<EOF
-data list list /id * indep * dep1 * dep2 *.
-begin data.
-1 1.0 3.5 6
-2 1.0 2.0 5
-3 1.0 2.0 4
-4 2.0 3.5 3
-56 2.0 3.0 1
-end data.
-
-t-test /group=indep /var=dep1, dep2.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 1"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="copy output"
-cp $TEMPDIR/pspp.csv $TEMPDIR/ref.csv
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create program 2"
-cat > $TESTFILE <<EOF
-data list list /id * indep * dep1 * dep2.
-begin data.
-1 1.0 3.5 6
-2 1.0 2.0 5
-3 1.0 2.0 4
-4 2.0 3.5 3
-5 2.0 3.0 .
-6 2.0 . 1
-7 . 3.1 5
-end data.
-
-* Note that if the independent variable is missing, then it's implicitly
-* listwise missing.
-
-t-test /missing=analysis /group=indep /var=dep1 dep2.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 2"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare outputs"
-diff $TEMPDIR/ref.csv $TEMPDIR/pspp.csv
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests that the T-TEST /GROUPS command works OK
-# when LISTWISE missing values are involved
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program 1"
-cat > $TESTFILE <<EOF
-data list list /id * indep * dep1 * dep2.
-begin data.
-1 1.0 3.5 6
-2 1.0 2.0 5
-3 1.0 2.0 4
-4 2.0 3.5 3
-5 2.0 3.0 2
-6 2.0 4.0 1
-end data.
-
-t-test /group=indep /var=dep1 dep2.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 1"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="copy output"
-cp $TEMPDIR/pspp.csv $TEMPDIR/ref.csv
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create program 2"
-cat > $TESTFILE <<EOF
-data list list /id * indep * dep1 * dep2 *.
-begin data.
-1 1.0 3.5 6
-2 1.0 2.0 5
-3 1.0 2.0 4
-4 2.0 3.5 3
-5 2.0 3.0 2
-6 2.0 4.0 1
-7 2.0 . 0
-end data.
-
-t-test /missing=listwise,exclude /group=indep /var=dep1, dep2.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 2"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare outputs"
-diff $TEMPDIR/ref.csv $TEMPDIR/pspp.csv
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests that the T-TEST /PAIRS command works OK
-# when there is per ANALYSIS missing data involved.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program 1"
-cat > $TESTFILE <<EOF
-data list list /id * a * b * c * d *.
-begin data.
-1 2.0 3.0 4.0 4.0
-2 1.0 2.0 5.1 3.9
-3 2.0 4.5 5.2 3.8
-4 2.0 4.5 5.3 3.7
-56 3.0 6.0 5.9 3.6
-end data.
-
-t-test /PAIRS a c with b d (PAIRED).
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 1"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="copy output"
-mv $TEMPDIR/pspp.csv $TEMPDIR/ref.csv
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create program 2"
-cat > $TESTFILE <<EOF
-data list list /id * a * b * c * d *.
-begin data.
-1 2.0 3.0 4.0 4.0
-2 1.0 2.0 5.1 3.9
-3 2.0 4.5 5.2 3.8
-4 2.0 4.5 5.3 3.7
-5 3.0 6.0 5.9 .
-6 3.0 . 5.9 3.6
-end data.
-
-
-t-test /MISSING=analysis /PAIRS a c with b d (PAIRED).
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 2"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare outputs"
-diff $TEMPDIR/ref.csv $TEMPDIR/pspp.csv
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests that the T-TEST /PAIRS command works OK
-# when there is listwise missing data involved.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program 1"
-cat > $TESTFILE <<EOF
-data list list /id * a * b * c * d *.
-begin data.
-1 2.0 3.0 4.0 4.0
-2 1.0 2.0 5.1 3.9
-3 2.0 4.5 5.2 3.8
-4 2.0 4.5 5.3 3.7
-5 3.0 6.0 5.9 3.6
-end data.
-
-t-test /PAIRS a b with c d (PAIRED).
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 1"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="copy output"
-mv $TEMPDIR/pspp.csv $TEMPDIR/ref.csv
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create program 2"
-cat > $TESTFILE <<EOF
-data list list /id * a * b * c * d *.
-begin data.
-1 2.0 3.0 4.0 4.0
-2 1.0 2.0 5.1 3.9
-3 2.0 4.5 5.2 3.8
-4 2.0 4.5 5.3 3.7
-5 3.0 6.0 5.9 3.6
-6 3.0 6.0 5.9 .
-end data.
-
-
-t-test /MISSING=listwise /PAIRS a b with c d (PAIRED).
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program 2"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare outputs"
-diff $TEMPDIR/ref.csv $TEMPDIR/pspp.csv
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests that the T-TEST /PAIRS command works OK
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE <<EOF
-data list list /ID * A * B *.
-begin data.
-1 2.0 3.0
-2 1.0 2.0
-3 2.0 4.5
-4 2.0 4.5
-5 3.0 6.0
-end data.
-
-t-test /PAIRS a with b (PAIRED).
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-ID,F8.0
-A,F8.0
-B,F8.0
-
-Table: Paired Sample Statistics
-,,Mean,N,Std. Deviation,S.E. Mean
-Pair 0,A,2.00,5,.71,.32
-,B,4.00,5,1.54,.69
-
-Table: Paired Samples Correlations
-,,N,Correlation,Sig.
-Pair 0,A & B,5,.92,.03
-
-Table: Paired Samples Test
-,,Paired Differences,,,,,,,
-,,,,,95% Confidence Interval of the Difference,,,,
-,,Mean,Std. Deviation,Std. Error Mean,Lower,Upper,t,df,Sig. (2-tailed)
-Pair 0,A - B,-2.00,.94,.42,-3.16,-.84,-4.78,4,.01
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests that tab characters can be used in string input
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program 1"
-cat > $TEMPDIR/tabs.stat <<EOF
-data list /X 1-80 (a).
-begin data.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create program 2"
-printf "\t1\t12\t123\t1234\t12345\n" >> $TEMPDIR/tabs.stat
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="create program 3"
-cat >> $TEMPDIR/tabs.stat <<EOF
-end data.
-print /x.
-execute.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TEMPDIR/tabs.stat
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-diff -c $TEMPDIR/pspp.csv - << EOF | perl -e 's/^\s*$//g'
-Table: Reading 1 record from INLINE.
-Variable,Record,Columns,Format
-X,1,1- 80,A80
-
- 1 12 123 1234 12345
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the Trimmed Mean calculation, in the case
-# where the data is weighted towards the centre
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-
-activity="create program"
-cat > $TESTFILE <<EOF
-DATA LIST LIST /X * C *.
-BEGIN DATA.
-1 1
-2 49
-3 2
-END DATA.
-
-WEIGHT BY c.
-
-EXAMINE
- x
- /STATISTICS=DESCRIPTIVES
- .
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="compare results"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Reading free-form data from INLINE.
-Variable,Format
-X,F8.0
-C,F8.0
-
-Table: Case Processing Summary
-,Cases,,,,,
-,Valid,,Missing,,Total,
-,N,Percent,N,Percent,N,Percent
-X,52.00,100%,.00,0%,52.00,100%
-
-Table: Descriptives
-,,,Statistic,Std. Error
-X,Mean,,2.02,.03
-,95% Confidence Interval for Mean,Lower Bound,1.95,
-,,Upper Bound,2.09,
-,5% Trimmed Mean,,2.00,
-,Median,,2.00,
-,Variance,,.06,
-,Std. Deviation,,.24,
-,Minimum,,1.00,
-,Maximum,,3.00,
-,Range,,2.00,
-,Interquartile Range,,.00,
-,Skewness,,1.19,.33
-,Kurtosis,,15.73,.65
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#!/bin/sh
-
-# This program tests the UPDATE procedure
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/update.pspp
-
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="data create"
-cat > a.data <<EOF
-1aB
-8aM
-3aE
-5aG
-0aA
-5aH
-6aI
-7aJ
-2aD
-7aK
-1aC
-7aL
-4aF
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-cat > b.data <<EOF
-1bN
-3bO
-4bP
-6bQ
-7bR
-9bS
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-cat > update.csv <<EOF
-Table: Data List
-A,B,C,D,INA,INB
-0,a,A,,1,0
-1,b,B,N,1,1
-1,a,C,,1,0
-2,a,D,,1,0
-3,b,E,O,1,1
-4,b,F,P,1,1
-5,a,G,,1,0
-5,a,H,,1,0
-6,b,I,Q,1,1
-7,b,J,R,1,1
-7,a,K,,1,0
-7,a,L,,1,0
-8,a,M,,1,0
-9,b,,S,0,1
-EOF
-
-# Test UPDATE.
-dla="data list notable file='a.data' /A B C 1-3 (a)."
-sa="save outfile='a.sys'."
-dlb="data list notable file='b.data' /A B C 1-3 (a)."
-sb="save outfile='b.sys'."
-for sources in ss sa as; do
- name="$sources"
- activity="create $name.pspp"
- {
- if [ $sources = ss ]; then
- cat <<EOF
-set errors=terminal.
-$dla
-$sa
-$dlb
-$sb
-update file='a.sys' /in=INA /sort
- /file='b.sys' /in=INB /rename c=D
- /by a.
-EOF
- elif [ $sources = sa ]; then
- cat <<EOF
-set errors=terminal.
-$dla
-$sa
-$dlb
-
-update file='a.sys' /in=INA /sort
- /file=* /in=INB /rename c=D
- /by a.
-EOF
- elif [ $sources = as ]; then
- cat <<EOF
-set errors=terminal.
-$dlb
-$sb
-$dla
-
-update file=* /in=INA /sort
- /file='b.sys' /in=INB /rename c=D
- /by a.
-EOF
- else
- activity="internal error"
- no_result
- fi
- echo 'list.'
- } > $name.pspp
- if [ $? -ne 0 ] ; then no_result ; fi
-
- activity="run $name.pspp"
- rm -f errors
- $SUPERVISOR $PSPP -o pspp.csv --error-file=errors $name.pspp
- if [ $? -ne 0 ] ; then no_result ; fi
-
- activity="check $name output"
- perl -pi -e 's/^\s*$//g' pspp.csv
- diff -c pspp.csv update.csv
- if [ $? -ne 0 ] ; then fail ; fi
- diff -c -b -w - errors <<EOF
-$name.pspp:8: warning: UPDATE: Encountered 3 sets of duplicate cases in the master file.
-EOF
- if [ $? -ne 0 ] ; then fail ; fi
-done
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests USE, just to make sure that USE ALL is accepted silently.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TEMPDIR/filter.stat << EOF
-data list notable /X 1-2.
-begin data.
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-end data.
-use all.
-list.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TEMPDIR/filter.stat
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="check results"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-X
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests variable display attribute commands: VARIABLE
-# ALIGNMENT, VARIABLE WIDTH, VARIABLE LEVEL.
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-# Create command file.
-activity="create program"
-cat > $TESTFILE << EOF
-data list free /x y z.
-variable alignment x (left)/y (right)/z (center).
-variable width x (10)/y (12)/z (14).
-variable level x (scale)/y (ordinal)/z (nominal).
-display dictionary.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare output"
-diff -c $TEMPDIR/pspp.csv - << EOF
-Variable,Description,,Position
-x,Format: F8.2,,1
-,Measure: Scale,,
-,Display Alignment: Left,,
-,Display Width: 10,,
-y,Format: F8.2,,2
-,Measure: Ordinal,,
-,Display Alignment: Right,,
-,Display Width: 12,,
-z,Format: F8.2,,3
-,Measure: Nominal,,
-,Display Alignment: Center,,
-,Display Width: 14,,
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the VECTOR command
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create prog"
-cat > $TEMPDIR/vector.stat <<EOF
-data list notable/x 1.
-vector v(4).
-display vector.
-
-data list notable/x 1.
-vector #vec(4, comma10.2).
-display vector.
-
-input program.
-vector x(5).
-data list/x5 x2 x3 x1 x4 1-5.
-end input program.
-display vector.
-
-data list notable/u w x y z 1-5.
-vector a=u to y.
-vector b=x to z.
-vector c=all.
-display vector.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv -e $TEMPDIR/stdout $TEMPDIR/vector.stat
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare stdout"
-perl -pi -e 's/^\s*$//g' $TEMPDIR/stdout
-diff -b $TEMPDIR/stdout - <<EOF
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare results"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Vector,Position,Variable,Print Format
-v,1,v1,F8.2
-,2,v2,F8.2
-,3,v3,F8.2
-,4,v4,F8.2
-
-Vector,Position,Variable,Print Format
-#vec,1,#vec1,COMMA10.2
-,2,#vec2,COMMA10.2
-,3,#vec3,COMMA10.2
-,4,#vec4,COMMA10.2
-
-Table: Reading 1 record from INLINE.
-Variable,Record,Columns,Format
-x5,1,1- 1,F1.0
-x2,1,2- 2,F1.0
-x3,1,3- 3,F1.0
-x1,1,4- 4,F1.0
-x4,1,5- 5,F1.0
-
-Vector,Position,Variable,Print Format
-x,1,x1,F8.2
-,2,x2,F8.2
-,3,x3,F8.2
-,4,x4,F8.2
-,5,x5,F8.2
-
-Vector,Position,Variable,Print Format
-a,1,u,F1.0
-,2,w,F1.0
-,3,x,F1.0
-,4,y,F1.0
-b,1,x,F1.0
-,2,y,F1.0
-,3,z,F1.0
-c,1,u,F1.0
-,2,w,F1.0
-,3,x,F1.0
-,4,y,F1.0
-,5,z,F1.0
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests that very long strings (up to 32767 bytes) can be
-# read and written, a la spss v13/v14
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-# First check that we can read files created with spss versions 13/14
-
-activity="Create file 0"
-cat > $TESTFILE <<EOF
-GET FILE='$top_srcdir/tests/v13.sav'.
-DISPLAY VARIABLES.
-LIST.
-
-NEW FILE.
-
-GET FILE='$top_srcdir/tests/v14.sav'.
-DISPLAY VARIABLES.
-LIST.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program 0"
-$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TESTFILE
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare variable display 0"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Variable,Description,,Position
-N,Format: F8.2,,1
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 10,,
-A255,Format: A255,,2
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 32,,
-A258,Format: A258,,3
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 32,,
-A2000,Format: A2000,,4
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 32,,
-
-Table: Data List
-N,A255,A258,A2000
-1.00,a1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA,b1BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB,c1CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
-2.00,a2XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,b2YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY,c2ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
-
-Variable,Description,,Position
-vl255,Format: A255,,1
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 26,,
-vl256,Format: A256,,2
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 26,,
-vl1335,Format: A1335,,3
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 26,,
-vl2000,Format: A2000,,4
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 26,,
-
-Table: Data List
-vl255,vl256,vl1335,vl2000
-MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM,MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM,MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM,MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-# Now check that we can write files with Very Long Strings
-
-activity="Create data file"
-cat > $TEMPDIR/data <<EOF
- 1xxxxxxxx2aXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbcYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYdeZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZf
- 1xxxxxxxx2aXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbcYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYdeZZMaryHadAlittleLambZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZf
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-for options in uncompressed compressed; do
- activity="Create file1 ($options)"
- cat > $TESTFILE <<EOF
-DATA LIST FIXED FILE='$TEMPDIR/data' /a 2-11 (a)
- b (a256)
- c (a200)
- d (a32767)
- .
-
-
-SAVE OUTFILE='$TEMPDIR/foo.sav' /$options.
-
-EOF
- if [ $? -ne 0 ] ; then no_result ; fi
-
-
- activity="run program 1 ($options)"
- $SUPERVISOR $PSPP -o pspp.csv $TESTFILE
- if [ $? -ne 0 ] ; then no_result ; fi
-
- activity="Create file2 ($options)"
- cat > $TESTFILE <<EOF
-
-GET FILE='$TEMPDIR/foo.sav'.
-
-DISPLAY VARIABLES.
-
-PRINT OUTFILE='$TEMPDIR/out.txt'
- /a (a10) b (a256) c (a200)
- d (a32767)
- .
-
-EXECUTE.
-
-EOF
- if [ $? -ne 0 ] ; then no_result ; fi
-
- activity="run program 2 ($options)"
- $SUPERVISOR $PSPP -o pspp.csv $TESTFILE
- if [ $? -ne 0 ] ; then no_result ; fi
-
-
-# Check that the file read back in has the same data as what we wrote.
-
- activity="compare print ($options)"
- diff -b $TEMPDIR/out.txt $TEMPDIR/data
- if [ $? -ne 0 ] ; then fail ; fi
-
-
- activity="compare variable display ($options)"
- diff -c $TEMPDIR/pspp.csv - <<EOF
-Variable,Description,,Position
-a,Format: A10,,1
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 10,,
-b,Format: A256,,2
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 32,,
-c,Format: A200,,3
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 32,,
-d,Format: A32767,,4
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 32,,
-EOF
- if [ $? -ne 0 ] ; then fail ; fi
-done
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests the WEIGHT command
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TESTFILE << EOF
-SET FORMAT F8.3.
-data list file='$top_srcdir/tests/weighting.data'/AVAR 1-5 BVAR 6-10.
-weight by BVAR.
-
-descriptives AVAR /statistics all /format serial.
-frequencies AVAR /statistics all.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare results"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-"Table: Reading 1 record from ""$top_srcdir/tests/weighting.data""."
-Variable,Record,Columns,Format
-AVAR,1,1- 5,F5.0
-BVAR,1,6- 10,F5.0
-
-Table: Valid cases = 730; cases with missing value(s) = 0.
-Variable,Valid N,Missing N,Mean,S.E. Mean,Std Dev,Variance,Kurtosis,S.E. Kurt,Skewness,S.E. Skew,Range,Minimum,Maximum,Sum
-AVAR,730,0,31.515,.405,10.937,119.608,2.411,.181,1.345,.090,76.000,18.000,94.000,23006.00
-
-Table: AVAR
-Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
-,18,1,.137,.137,.137
-,19,7,.959,.959,1.096
-,20,26,3.562,3.562,4.658
-,21,76,10.411,10.411,15.068
-,22,57,7.808,7.808,22.877
-,23,58,7.945,7.945,30.822
-,24,38,5.205,5.205,36.027
-,25,38,5.205,5.205,41.233
-,26,30,4.110,4.110,45.342
-,27,21,2.877,2.877,48.219
-,28,23,3.151,3.151,51.370
-,29,24,3.288,3.288,54.658
-,30,23,3.151,3.151,57.808
-,31,14,1.918,1.918,59.726
-,32,21,2.877,2.877,62.603
-,33,21,2.877,2.877,65.479
-,34,14,1.918,1.918,67.397
-,35,14,1.918,1.918,69.315
-,36,17,2.329,2.329,71.644
-,37,11,1.507,1.507,73.151
-,38,16,2.192,2.192,75.342
-,39,14,1.918,1.918,77.260
-,40,15,2.055,2.055,79.315
-,41,14,1.918,1.918,81.233
-,42,14,1.918,1.918,83.151
-,43,8,1.096,1.096,84.247
-,44,15,2.055,2.055,86.301
-,45,10,1.370,1.370,87.671
-,46,12,1.644,1.644,89.315
-,47,13,1.781,1.781,91.096
-,48,13,1.781,1.781,92.877
-,49,5,.685,.685,93.562
-,50,5,.685,.685,94.247
-,51,3,.411,.411,94.658
-,52,7,.959,.959,95.616
-,53,6,.822,.822,96.438
-,54,2,.274,.274,96.712
-,55,2,.274,.274,96.986
-,56,2,.274,.274,97.260
-,57,3,.411,.411,97.671
-,58,1,.137,.137,97.808
-,59,3,.411,.411,98.219
-,61,1,.137,.137,98.356
-,62,3,.411,.411,98.767
-,63,1,.137,.137,98.904
-,64,1,.137,.137,99.041
-,65,2,.274,.274,99.315
-,70,1,.137,.137,99.452
-,78,1,.137,.137,99.589
-,79,1,.137,.137,99.726
-,80,1,.137,.137,99.863
-,94,1,.137,.137,100.000
-Total,,730,100.0,100.0,
-
-Table: AVAR
-N,Valid,730
-,Missing,0
-Mean,,31.515
-S.E. Mean,,.405
-Mode,,21.000
-Std Dev,,10.937
-Variance,,119.608
-Kurtosis,,2.411
-S.E. Kurt,,.181
-Skewness,,1.345
-S.E. Skew,,.090
-Range,,76.000
-Minimum,,18.000
-Maximum,,94.000
-Sum,,23006.00
-Percentiles,50 (Median),29
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
+++ /dev/null
-SHORT 2 3 4
-RIGHTLEN 6
-7
-8 TOOLONGLEN
-10 11
-12
--- /dev/null
+AT_BANNER([data input (data-in)])
+
+m4_divert_push([PREPARE_TESTS])
+[data_in_prng () {
+ cat > my-rand.pl <<'EOF'
+# This random number generator and the test for it below are drawn
+# from Park and Miller, "Random Number Generators: Good Ones are Hard
+# to Come By", Communications of the ACM 31:10 (October 1988). It is
+# documented to function properly on systems with a 46-bit or longer
+# real significand, which includes systems that have 64-bit IEEE reals
+# (with 53-bit significand). The test should catch any systems for
+# which this is not true, in any case.
+
+our ($seed) = 1;
+sub my_rand {
+ my ($modulo) = @_;
+ my ($a) = 16807;
+ my ($m) = 2147483647;
+ my ($tmp) = $a * $seed;
+ $seed = $tmp - $m * int ($tmp / $m);
+ return $seed % $modulo;
+}
+EOF
+ cat > test-my-rand.pl <<'EOF'
+#! /usr/bin/perl
+use strict;
+use warnings;
+do 'my-rand.pl';
+my_rand (1) foreach 1...10000;
+our $seed;
+die $seed if $seed != 1043618065;
+EOF
+}
+date_in () {
+ data_in_prng
+ cat > date-in.pl << 'EOF'
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+do 'my-rand.pl';
+
+my ($fmt_name, @templates) = @ARGV;
+
+my @dates = (#yyyy mm dd jjj HH MM SS
+ [1648, 6, 10, 162, 0, 0, 0],
+ [1680, 6, 30, 182, 4, 50, 38],
+ [1716, 7, 24, 206, 12, 31, 35],
+ [1768, 6, 19, 171, 12, 47, 53],
+ [1819, 8, 2, 214, 1, 26, 0],
+ [1839, 3, 27, 86, 20, 58, 11],
+ [1903, 4, 19, 109, 7, 36, 5],
+ [1929, 8, 25, 237, 15, 43, 49],
+ [1941, 9, 29, 272, 4, 25, 9],
+ [1943, 4, 19, 109, 6, 49, 27],
+ [1943, 10, 7, 280, 2, 57, 52],
+ [1992, 3, 17, 77, 16, 45, 44],
+ [1996, 2, 25, 56, 21, 30, 57],
+ [1941, 9, 29, 272, 4, 25, 9],
+ [1943, 4, 19, 109, 6, 49, 27],
+ [1943, 10, 7, 280, 2, 57, 52],
+ [1992, 3, 17, 77, 16, 45, 44],
+ [1996, 2, 25, 56, 21, 30, 57],
+ [2038, 11, 10, 314, 22, 30, 4],
+ [2094, 7, 18, 199, 1, 56, 51]);
+
+open (SYNTAX, '>', "$fmt_name.sps") or die "$fmt_name.sps: create: $!\n";
+print SYNTAX "SET EPOCH 1930.\n";
+print SYNTAX "DATA LIST NOTABLE FILE='$fmt_name.in'/$fmt_name 1-40 ($fmt_name).\n";
+print SYNTAX "PRINT OUTFILE='$fmt_name.out'/$fmt_name (F16.2).\n";
+print SYNTAX "EXECUTE.\n";
+close (SYNTAX);
+
+my ($fn) = "$fmt_name.in";
+open (DATA, '>', $fn) or die "$fn: create: $!\n";
+select DATA;
+for my $template (@templates) {
+ for my $date (@dates) {
+ print_date_with_template ($date, $template) for 1...10;
+ }
+}
+close (DATA);
+
+sub print_date_with_template {
+ my ($date, $template) = @_;
+ my ($year, $month, $day, $julian, $hour, $minute, $second) = @$date;
+ my ($quarter) = int (($month - 1) / 3) + 1;
+ my ($week) = int (($julian - 1) / 7) + 1;
+ my (@year_types) = ('full');
+ push (@year_types, '2digit') if $year >= 1930 && $year < 2030;
+ for my $c (split ('', $template)) {
+ if ($c eq 'd') {
+ printf (+pick ('%d', '%02d'), $day);
+ } elsif ($c eq 'm') {
+ my ($type) = pick ('arabic', 'roman', 'abbrev', 'full');
+ if ($type eq 'arabic') {
+ printf (+pick ('%d', '%02d'), $month);
+ } elsif ($type eq 'roman') {
+ my ($mmm) = ('i', 'ii', 'iii',
+ 'iv', 'v', 'vi',
+ 'vii', 'viii', 'ix',
+ 'x', 'xi', 'xii')[$month - 1];
+ print_rand_case ($mmm);
+ } elsif ($type eq 'abbrev') {
+ my ($mmm) = qw (jan feb mar apr may jun
+ jul aug sep oct nov dec)[$month - 1];
+ print_rand_case ($mmm);
+ } elsif ($type eq 'full') {
+ my ($mmm) = qw (january february march
+ april may june
+ july august september
+ october november december)[$month - 1];
+ print_rand_case ($mmm);
+ } else {
+ die;
+ }
+ } elsif ($c eq 'y') {
+ my ($type) = pick (@year_types);
+ if ($type eq '2digit') {
+ printf (+pick ('%d', '%02d'), $year % 100);
+ } elsif ($type eq 'full') {
+ print $year;
+ } else {
+ die;
+ }
+ } elsif ($c eq 'j') {
+ my ($type) = pick (@year_types);
+ if ($type eq '2digit') {
+ printf ("%02d%03d", $year % 100, $julian);
+ } elsif ($type eq 'full') {
+ printf ("%04d%03d", $year, $julian);
+ } else {
+ die;
+ }
+ } elsif ($c eq 'q') {
+ print $quarter;
+ } elsif ($c eq 'w') {
+ print $week;
+ } elsif ($c eq 'H') {
+ printf (+pick ('%d', '%02d'), $hour);
+ } elsif ($c eq 'M') {
+ printf (+pick ('%d', '%02d'), $minute);
+ } elsif ($c eq 'S') {
+ printf (+pick ('%d', '%02d'), $second);
+ } elsif ($c eq '-') {
+ print +pick (' ', '-', '.', ',', '/');
+ } elsif ($c eq ':') {
+ print +pick (' ', ':');
+ } elsif ($c eq ' ') {
+ print ' ';
+ } elsif ($c eq 'Q') {
+ maybe_print_space ();
+ print_rand_case ('q');
+ maybe_print_space ();
+ } elsif ($c eq 'W') {
+ maybe_print_space ();
+ print_rand_case ('wk');
+ maybe_print_space ();
+ } elsif ($c eq '+') {
+ print +pick ('', '-', '+');
+ } else {
+ die;
+ }
+ }
+ print "\n";
+}
+
+sub print_rand_case {
+ my ($s) = @_;
+ my ($case) = pick (qw (uc lc tc));
+ if ($case eq 'uc') {
+ print uc ($s);
+ } elsif ($case eq 'lc') {
+ print lc ($s);
+ } elsif ($case eq 'tc') {
+ print ucfirst ($s);
+ } else {
+ die;
+ }
+}
+
+sub maybe_print_space {
+ print +pick ('', ' ');
+}
+
+sub pick {
+ return $_[int (my_rand ($#_
+ + 1))];
+}
+EOF
+}
+time_in () {
+ data_in_prng
+ cat > time-in.pl << 'EOF'
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+do 'my-rand.pl';
+
+my ($skip, $fmt_name, @templates) = @ARGV;
+
+my_rand (1) foreach 1...$skip;
+
+my @times = (# D HH MM SS
+ [ 0, 0, 0, 0.00],
+ [ 1, 4, 50, 38.68],
+ [ 5, 12, 31, 35.82],
+ [ 0, 12, 47, 53.41],
+ [ 3, 1, 26, 0.69],
+ [ 1, 20, 58, 11.19],
+ [ 12, 7, 36, 5.98],
+ [ 52, 15, 43, 49.27],
+ [ 7, 4, 25, 9.24],
+ [ 0, 6, 49, 27.89],
+ [ 20, 2, 57, 52.56],
+ [555, 16, 45, 44.12],
+ [120, 21, 30, 57.27],
+ [ 0, 4, 25, 9.98],
+ [ 3, 6, 49, 27.24],
+ [ 5, 2, 57, 52.13],
+ [ 0, 16, 45, 44.35],
+ [ 1, 21, 30, 57.32],
+ [ 10, 22, 30, 4.27],
+ [ 22, 1, 56, 51.18]);
+
+open (SYNTAX, '>', "$fmt_name.sps") or die "$fmt_name.sps: create: $!\n";
+print SYNTAX "DATA LIST NOTABLE FILE='$fmt_name.data'/$fmt_name 1-40 ($fmt_name).\n";
+print SYNTAX "PRINT OUTFILE='$fmt_name.out'/$fmt_name (F16.2).\n";
+print SYNTAX "EXECUTE.\n";
+close (SYNTAX);
+
+my ($fn) = "$fmt_name.data";
+open (DATA, '>', $fn) or die "$fn: create: $!\n";
+select DATA;
+for my $template (@templates) {
+ for my $time (@times) {
+ print_time_with_template ($time, $template) for 1...10;
+ }
+}
+close (DATA);
+
+sub print_time_with_template {
+ my ($time, $template) = @_;
+ my ($day, $hour, $minute, $second) = @$time;
+ for my $c (split ('', $template)) {
+ if ($c eq '+') {
+ print +pick ('', '-', '+');
+ } elsif ($c eq 'D') {
+ printf (+pick ('%d', '%02d'), $day);
+ $day = 0;
+ } elsif ($c eq 'H') {
+ printf (+pick ('%d', '%02d'), $hour + 24 * $day);
+ } elsif ($c eq 'M') {
+ printf (+pick ('%d', '%02d'), $minute);
+ } elsif ($c eq 'S') {
+ printf (+pick ('%.0f', '%02.0f', '%.1f', '%.2f'), $second);
+ } elsif ($c eq ':') {
+ print +pick (' ', ':');
+ } elsif ($c eq ' ') {
+ print ' ';
+ } else {
+ die;
+ }
+ }
+ print "\n";
+}
+
+sub pick {
+ return $_[int (my_rand ($#_
+ + 1)) ];
+}
+EOF
+}]
+m4_divert_pop([PREPARE_TESTS])
+
+AT_SETUP([numeric input formats])
+AT_KEYWORDS([data-in])
+data_in_prng
+AT_CHECK([$PERL test-my-rand.pl])
+AT_DATA([num-in.pl],
+[[#! /usr/bin/perl
+
+use POSIX;
+use strict;
+use warnings;
+
+do 'my-rand.pl';
+
+for my $number (0, 1, .5, .015625, 123) {
+ my ($base_exp) = floor ($number ? log10 ($number) : 0);
+ for my $offset (-3...3) {
+ my ($exponent) = $base_exp + $offset;
+ my ($fraction) = $number / 10**$offset;
+
+ permute_zeros ($fraction, $exponent);
+ }
+}
+
+sub permute_zeros {
+ my ($fraction, $exponent) = @_;
+
+ my ($frac_rep) = sprintf ("%f", $fraction);
+ my ($leading_zeros) = length (($frac_rep =~ /^(0*)/)[0]);
+ my ($trailing_zeros) = length (($frac_rep =~ /(\.?0*)$/)[0]);
+ for my $i (0...$leading_zeros) {
+ for my $j (0...$trailing_zeros) {
+ my ($trimmed) = substr ($frac_rep, $i,
+ length ($frac_rep) - $i - $j);
+ next if $trimmed eq '.' || $trimmed eq '';
+
+ permute_commas ($trimmed, $exponent);
+ }
+ }
+}
+
+sub permute_commas {
+ my ($frac_rep, $exponent) = @_;
+ permute_dot_comma ($frac_rep, $exponent);
+ my ($pos) = int (my_rand (length ($frac_rep) + 1));
+ $frac_rep = substr ($frac_rep, 0, $pos) . "," . substr ($frac_rep, $pos);
+ permute_dot_comma ($frac_rep, $exponent);
+}
+
+sub permute_dot_comma {
+ my ($frac_rep, $exponent) = @_;
+ permute_exponent_syntax ($frac_rep, $exponent);
+ if ($frac_rep =~ /[,.]/) {
+ $frac_rep =~ tr/.,/,./;
+ permute_exponent_syntax ($frac_rep, $exponent);
+ }
+}
+
+sub permute_exponent_syntax {
+ my ($frac_rep, $exponent) = @_;
+ my (@exp_reps);
+ if ($exponent == 0) {
+ @exp_reps = pick ('', 'e0', 'e-0', 'e+0', '-0', '+0');
+ } elsif ($exponent > 0) {
+ @exp_reps = pick ("e$exponent", "e+$exponent", "+$exponent");
+ } else {
+ my ($abs_exp) = -$exponent;
+ @exp_reps = pick ("e-$abs_exp", , "e-$abs_exp", "-$abs_exp");
+ }
+ permute_sign_and_affix ($frac_rep, $_) foreach @exp_reps;
+}
+
+sub permute_sign_and_affix {
+ my ($frac_rep, $exp_rep) = @_;
+ for my $prefix (pick ('', '$'),
+ pick ('-', '-$', '$-', '$-$'),
+ pick ('+', '+$', '$+', '$+$')) {
+ for my $suffix ('', '%') {
+ permute_spaces ("$prefix$frac_rep$exp_rep$suffix");
+ }
+ }
+}
+
+sub permute_spaces {
+ my ($s) = @_;
+ $s =~ s/([-+\$e%])/ $1 /g;
+ my (@fields) = split (' ', $s);
+ print join ('', @fields), "\n";
+
+ if ($#fields > 0) {
+ my ($pos) = int (my_rand ($#fields)) + 1;
+ print join ('', @fields[0...$pos - 1]);
+ print " ";
+ print join ('', @fields[$pos...$#fields]);
+ print "\n";
+ }
+}
+
+sub pick {
+ return $_[int (my_rand ($#_ + 1))];
+}
+]])
+AT_CHECK([$PERL num-in.pl > num-in.data])
+AT_DATA([num-in.sps], [dnl
+SET ERRORS=NONE.
+SET MXERRS=10000000.
+SET MXWARNS=10000000.
+DATA LIST FILE='num-in.data' NOTABLE/
+ f 1-40 (f)
+ comma 1-40 (comma)
+ dot 1-40 (dot)
+ dollar 1-40 (dollar)
+ pct 1-40 (pct)
+ e 1-40 (e).
+PRINT OUTFILE='num-in.out'/all (6f10.4).
+EXECUTE.
+])
+AT_CHECK([pspp -O format=csv num-in.sps])
+AT_CHECK([gzip -cd < $top_srcdir/tests/data/num-in.expected.gz > expout])
+AT_CHECK([cat num-in.out], [0], [expout])
+AT_CLEANUP
+
+dnl Some very old version of PSPP crashed reading big numbers,
+dnl so this checks for regressions.
+AT_SETUP([reading big numbers])
+AT_KEYWORDS([data-in])
+AT_DATA([bignum.txt], [dnl
+0
+0.1
+0.5
+0.8
+0.9
+0.999
+1
+2
+3
+4
+5
+12
+123
+1234
+12345
+123456
+1234567
+12345678
+123456789
+1234567890
+19999999999
+199999999999
+1234567890123
+19999999999999
+199999999999999
+1234567890123456
+19999999999999999
+123456789012345678
+1999999999999999999
+12345678901234567890
+199999999999999999999
+1234567890123456789012
+19999999999999999999999
+123456789012345678901234
+1999999999999999999999999
+12345678901234567890123456
+199999999999999999999999999
+1234567890123456789012345678
+19999999999999999999999999999
+123456789012345678901234567890
+1999999999999999999999999999999
+12345678901234567890123456789012
+199999999999999999999999999999999
+1234567890123456789012345678901234
+19999999999999999999999999999999999
+123456789012345678901234567890123456
+1999999999999999999999999999999999999
+12345678901234567890123456789012345678
+199999999999999999999999999999999999999
+1234567890123456789012345678901234567890
+1999999999999999999999999999999999999999
+1e40
+1.1e40
+1.5e40
+1e41
+1e50
+1e100
+1e150
+1e200
+1e250
+1e300
+1.79641e308
+wizzah
+])
+AT_DATA([bignum.sps], [dnl
+title 'Test use of big numbers'.
+
+*** Do the portable output.
+data list file='bignum.txt'/BIGNUM 1-40.
+list.
+
+*** Do the nonportable output for fun.
+descriptives BIGNUM.
+])
+AT_CHECK([pspp -o pspp.csv bignum.sps], [0], [ignore])
+AT_CLEANUP
+
+AT_SETUP([DATE input format])
+AT_KEYWORDS([data-in])
+date_in
+AT_CHECK([$PERL test-my-rand.pl])
+AT_CHECK([$PERL date-in.pl date d-m-y])
+AT_CHECK([test -s date.sps])
+AT_CHECK([test -s date.in])
+AT_CHECK([pspp -O format=csv date.sps])
+AT_CHECK([cat date.out], [0], [dnl
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+])
+AT_CLEANUP
+
+AT_SETUP([ADATE input format])
+AT_KEYWORDS([data-in])
+date_in
+AT_CHECK([$PERL test-my-rand.pl])
+AT_CHECK([$PERL date-in.pl adate m-d-y])
+AT_CHECK([test -s adate.sps])
+AT_CHECK([test -s adate.in])
+AT_CHECK([pspp -O format=csv adate.sps])
+AT_CHECK([cat adate.out], [0], [dnl
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+])
+AT_CLEANUP
+
+AT_SETUP([EDATE input format])
+AT_KEYWORDS([data-in])
+date_in
+AT_CHECK([$PERL test-my-rand.pl])
+AT_CHECK([$PERL date-in.pl edate d-m-y])
+AT_CHECK([test -s edate.sps])
+AT_CHECK([test -s edate.in])
+AT_CHECK([pspp -O format=csv edate.sps])
+AT_CHECK([cat edate.out], [0], [dnl
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+])
+AT_CLEANUP
+
+AT_SETUP([JDATE input format])
+AT_KEYWORDS([data-in])
+date_in
+AT_CHECK([$PERL test-my-rand.pl])
+AT_CHECK([$PERL date-in.pl jdate j])
+AT_CHECK([test -s jdate.sps])
+AT_CHECK([test -s jdate.in])
+AT_CHECK([pspp -O format=csv jdate.sps])
+AT_CHECK([cat jdate.out], [0], [dnl
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+])
+AT_CLEANUP
+
+AT_SETUP([SDATE input format])
+AT_KEYWORDS([data-in])
+date_in
+AT_CHECK([$PERL test-my-rand.pl])
+AT_CHECK([$PERL date-in.pl sdate y-m-d])
+AT_CHECK([test -s sdate.sps])
+AT_CHECK([test -s sdate.in])
+AT_CHECK([pspp -O format=csv sdate.sps])
+AT_CHECK([cat sdate.out], [0], [dnl
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 3083529600.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 4221590400.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 5859561600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 7472649600.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 8092742400.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10114329600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 10945929600.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11327644800.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11376633600.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 11391408000.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 12920169600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 13044585600.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 14392339200.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+ 16149628800.00
+])
+AT_CLEANUP
+
+AT_SETUP([QYR input format])
+AT_KEYWORDS([data-in])
+date_in
+AT_CHECK([$PERL test-my-rand.pl])
+AT_CHECK([$PERL date-in.pl qyr qQy])
+AT_CHECK([test -s qyr.sps])
+AT_CHECK([test -s qyr.in])
+AT_CHECK([pspp -O format=csv qyr.sps])
+AT_CHECK([cat qyr.out], [0], [dnl
+ 2065910400.00
+ 2065910400.00
+ 2065910400.00
+ 2065910400.00
+ 2065910400.00
+ 2065910400.00
+ 2065910400.00
+ 2065910400.00
+ 2065910400.00
+ 2065910400.00
+ 3075753600.00
+ 3075753600.00
+ 3075753600.00
+ 3075753600.00
+ 3075753600.00
+ 3075753600.00
+ 3075753600.00
+ 3075753600.00
+ 3075753600.00
+ 3075753600.00
+ 4219603200.00
+ 4219603200.00
+ 4219603200.00
+ 4219603200.00
+ 4219603200.00
+ 4219603200.00
+ 4219603200.00
+ 4219603200.00
+ 4219603200.00
+ 4219603200.00
+ 5852736000.00
+ 5852736000.00
+ 5852736000.00
+ 5852736000.00
+ 5852736000.00
+ 5852736000.00
+ 5852736000.00
+ 5852736000.00
+ 5852736000.00
+ 5852736000.00
+ 7469884800.00
+ 7469884800.00
+ 7469884800.00
+ 7469884800.00
+ 7469884800.00
+ 7469884800.00
+ 7469884800.00
+ 7469884800.00
+ 7469884800.00
+ 7469884800.00
+ 8085398400.00
+ 8085398400.00
+ 8085398400.00
+ 8085398400.00
+ 8085398400.00
+ 8085398400.00
+ 8085398400.00
+ 8085398400.00
+ 8085398400.00
+ 8085398400.00
+ 10112774400.00
+ 10112774400.00
+ 10112774400.00
+ 10112774400.00
+ 10112774400.00
+ 10112774400.00
+ 10112774400.00
+ 10112774400.00
+ 10112774400.00
+ 10112774400.00
+ 10941177600.00
+ 10941177600.00
+ 10941177600.00
+ 10941177600.00
+ 10941177600.00
+ 10941177600.00
+ 10941177600.00
+ 10941177600.00
+ 10941177600.00
+ 10941177600.00
+ 11319868800.00
+ 11319868800.00
+ 11319868800.00
+ 11319868800.00
+ 11319868800.00
+ 11319868800.00
+ 11319868800.00
+ 11319868800.00
+ 11319868800.00
+ 11319868800.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 12913603200.00
+ 12913603200.00
+ 12913603200.00
+ 12913603200.00
+ 12913603200.00
+ 12913603200.00
+ 12913603200.00
+ 12913603200.00
+ 12913603200.00
+ 12913603200.00
+ 13039833600.00
+ 13039833600.00
+ 13039833600.00
+ 13039833600.00
+ 13039833600.00
+ 13039833600.00
+ 13039833600.00
+ 13039833600.00
+ 13039833600.00
+ 13039833600.00
+ 11319868800.00
+ 11319868800.00
+ 11319868800.00
+ 11319868800.00
+ 11319868800.00
+ 11319868800.00
+ 11319868800.00
+ 11319868800.00
+ 11319868800.00
+ 11319868800.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 12913603200.00
+ 12913603200.00
+ 12913603200.00
+ 12913603200.00
+ 12913603200.00
+ 12913603200.00
+ 12913603200.00
+ 12913603200.00
+ 12913603200.00
+ 12913603200.00
+ 13039833600.00
+ 13039833600.00
+ 13039833600.00
+ 13039833600.00
+ 13039833600.00
+ 13039833600.00
+ 13039833600.00
+ 13039833600.00
+ 13039833600.00
+ 13039833600.00
+ 14388883200.00
+ 14388883200.00
+ 14388883200.00
+ 14388883200.00
+ 14388883200.00
+ 14388883200.00
+ 14388883200.00
+ 14388883200.00
+ 14388883200.00
+ 14388883200.00
+ 16148160000.00
+ 16148160000.00
+ 16148160000.00
+ 16148160000.00
+ 16148160000.00
+ 16148160000.00
+ 16148160000.00
+ 16148160000.00
+ 16148160000.00
+ 16148160000.00
+])
+AT_CLEANUP
+
+AT_SETUP([MOYR input format])
+AT_KEYWORDS([data-in])
+date_in
+AT_CHECK([$PERL test-my-rand.pl])
+AT_CHECK([$PERL date-in.pl moyr m-y])
+AT_CHECK([test -s moyr.sps])
+AT_CHECK([test -s moyr.in])
+AT_CHECK([pspp -O format=csv moyr.sps])
+AT_CHECK([cat moyr.out], [0], [dnl
+ 2071180800.00
+ 2071180800.00
+ 2071180800.00
+ 2071180800.00
+ 2071180800.00
+ 2071180800.00
+ 2071180800.00
+ 2071180800.00
+ 2071180800.00
+ 2071180800.00
+ 3081024000.00
+ 3081024000.00
+ 3081024000.00
+ 3081024000.00
+ 3081024000.00
+ 3081024000.00
+ 3081024000.00
+ 3081024000.00
+ 3081024000.00
+ 3081024000.00
+ 4219603200.00
+ 4219603200.00
+ 4219603200.00
+ 4219603200.00
+ 4219603200.00
+ 4219603200.00
+ 4219603200.00
+ 4219603200.00
+ 4219603200.00
+ 4219603200.00
+ 5858006400.00
+ 5858006400.00
+ 5858006400.00
+ 5858006400.00
+ 5858006400.00
+ 5858006400.00
+ 5858006400.00
+ 5858006400.00
+ 5858006400.00
+ 5858006400.00
+ 7472563200.00
+ 7472563200.00
+ 7472563200.00
+ 7472563200.00
+ 7472563200.00
+ 7472563200.00
+ 7472563200.00
+ 7472563200.00
+ 7472563200.00
+ 7472563200.00
+ 8090496000.00
+ 8090496000.00
+ 8090496000.00
+ 8090496000.00
+ 8090496000.00
+ 8090496000.00
+ 8090496000.00
+ 8090496000.00
+ 8090496000.00
+ 8090496000.00
+ 10112774400.00
+ 10112774400.00
+ 10112774400.00
+ 10112774400.00
+ 10112774400.00
+ 10112774400.00
+ 10112774400.00
+ 10112774400.00
+ 10112774400.00
+ 10112774400.00
+ 10943856000.00
+ 10943856000.00
+ 10943856000.00
+ 10943856000.00
+ 10943856000.00
+ 10943856000.00
+ 10943856000.00
+ 10943856000.00
+ 10943856000.00
+ 10943856000.00
+ 11325225600.00
+ 11325225600.00
+ 11325225600.00
+ 11325225600.00
+ 11325225600.00
+ 11325225600.00
+ 11325225600.00
+ 11325225600.00
+ 11325225600.00
+ 11325225600.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 12918787200.00
+ 12918787200.00
+ 12918787200.00
+ 12918787200.00
+ 12918787200.00
+ 12918787200.00
+ 12918787200.00
+ 12918787200.00
+ 12918787200.00
+ 12918787200.00
+ 13042512000.00
+ 13042512000.00
+ 13042512000.00
+ 13042512000.00
+ 13042512000.00
+ 13042512000.00
+ 13042512000.00
+ 13042512000.00
+ 13042512000.00
+ 13042512000.00
+ 11325225600.00
+ 11325225600.00
+ 11325225600.00
+ 11325225600.00
+ 11325225600.00
+ 11325225600.00
+ 11325225600.00
+ 11325225600.00
+ 11325225600.00
+ 11325225600.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11375078400.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 12918787200.00
+ 12918787200.00
+ 12918787200.00
+ 12918787200.00
+ 12918787200.00
+ 12918787200.00
+ 12918787200.00
+ 12918787200.00
+ 12918787200.00
+ 12918787200.00
+ 13042512000.00
+ 13042512000.00
+ 13042512000.00
+ 13042512000.00
+ 13042512000.00
+ 13042512000.00
+ 13042512000.00
+ 13042512000.00
+ 13042512000.00
+ 13042512000.00
+ 14391561600.00
+ 14391561600.00
+ 14391561600.00
+ 14391561600.00
+ 14391561600.00
+ 14391561600.00
+ 14391561600.00
+ 14391561600.00
+ 14391561600.00
+ 14391561600.00
+ 16148160000.00
+ 16148160000.00
+ 16148160000.00
+ 16148160000.00
+ 16148160000.00
+ 16148160000.00
+ 16148160000.00
+ 16148160000.00
+ 16148160000.00
+ 16148160000.00
+])
+AT_CLEANUP
+
+AT_SETUP([WKYR input format])
+AT_KEYWORDS([data-in])
+date_in
+AT_CHECK([$PERL test-my-rand.pl])
+AT_CHECK([$PERL date-in.pl wkyr wWy])
+AT_CHECK([test -s wkyr.sps])
+AT_CHECK([test -s wkyr.in])
+AT_CHECK([pspp -O format=csv wkyr.sps])
+AT_CHECK([cat wkyr.out], [0], [dnl
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 3083011200.00
+ 3083011200.00
+ 3083011200.00
+ 3083011200.00
+ 3083011200.00
+ 3083011200.00
+ 3083011200.00
+ 3083011200.00
+ 3083011200.00
+ 3083011200.00
+ 4221417600.00
+ 4221417600.00
+ 4221417600.00
+ 4221417600.00
+ 4221417600.00
+ 4221417600.00
+ 4221417600.00
+ 4221417600.00
+ 4221417600.00
+ 4221417600.00
+ 5859388800.00
+ 5859388800.00
+ 5859388800.00
+ 5859388800.00
+ 5859388800.00
+ 5859388800.00
+ 5859388800.00
+ 5859388800.00
+ 5859388800.00
+ 5859388800.00
+ 7472390400.00
+ 7472390400.00
+ 7472390400.00
+ 7472390400.00
+ 7472390400.00
+ 7472390400.00
+ 7472390400.00
+ 7472390400.00
+ 7472390400.00
+ 7472390400.00
+ 8092656000.00
+ 8092656000.00
+ 8092656000.00
+ 8092656000.00
+ 8092656000.00
+ 8092656000.00
+ 8092656000.00
+ 8092656000.00
+ 8092656000.00
+ 8092656000.00
+ 10114070400.00
+ 10114070400.00
+ 10114070400.00
+ 10114070400.00
+ 10114070400.00
+ 10114070400.00
+ 10114070400.00
+ 10114070400.00
+ 10114070400.00
+ 10114070400.00
+ 10945497600.00
+ 10945497600.00
+ 10945497600.00
+ 10945497600.00
+ 10945497600.00
+ 10945497600.00
+ 10945497600.00
+ 10945497600.00
+ 10945497600.00
+ 10945497600.00
+ 11327212800.00
+ 11327212800.00
+ 11327212800.00
+ 11327212800.00
+ 11327212800.00
+ 11327212800.00
+ 11327212800.00
+ 11327212800.00
+ 11327212800.00
+ 11327212800.00
+ 11376374400.00
+ 11376374400.00
+ 11376374400.00
+ 11376374400.00
+ 11376374400.00
+ 11376374400.00
+ 11376374400.00
+ 11376374400.00
+ 11376374400.00
+ 11376374400.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 12919651200.00
+ 12919651200.00
+ 12919651200.00
+ 12919651200.00
+ 12919651200.00
+ 12919651200.00
+ 12919651200.00
+ 12919651200.00
+ 12919651200.00
+ 12919651200.00
+ 13044067200.00
+ 13044067200.00
+ 13044067200.00
+ 13044067200.00
+ 13044067200.00
+ 13044067200.00
+ 13044067200.00
+ 13044067200.00
+ 13044067200.00
+ 13044067200.00
+ 11327212800.00
+ 11327212800.00
+ 11327212800.00
+ 11327212800.00
+ 11327212800.00
+ 11327212800.00
+ 11327212800.00
+ 11327212800.00
+ 11327212800.00
+ 11327212800.00
+ 11376374400.00
+ 11376374400.00
+ 11376374400.00
+ 11376374400.00
+ 11376374400.00
+ 11376374400.00
+ 11376374400.00
+ 11376374400.00
+ 11376374400.00
+ 11376374400.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 11390889600.00
+ 12919651200.00
+ 12919651200.00
+ 12919651200.00
+ 12919651200.00
+ 12919651200.00
+ 12919651200.00
+ 12919651200.00
+ 12919651200.00
+ 12919651200.00
+ 12919651200.00
+ 13044067200.00
+ 13044067200.00
+ 13044067200.00
+ 13044067200.00
+ 13044067200.00
+ 13044067200.00
+ 13044067200.00
+ 13044067200.00
+ 13044067200.00
+ 13044067200.00
+ 14391907200.00
+ 14391907200.00
+ 14391907200.00
+ 14391907200.00
+ 14391907200.00
+ 14391907200.00
+ 14391907200.00
+ 14391907200.00
+ 14391907200.00
+ 14391907200.00
+ 16149456000.00
+ 16149456000.00
+ 16149456000.00
+ 16149456000.00
+ 16149456000.00
+ 16149456000.00
+ 16149456000.00
+ 16149456000.00
+ 16149456000.00
+ 16149456000.00
+])
+AT_CLEANUP
+
+AT_SETUP([DATETIME input format])
+AT_KEYWORDS([data-in])
+date_in
+AT_CHECK([$PERL test-my-rand.pl])
+AT_CHECK([$PERL date-in.pl datetime "d-m-y +H:M" "d-m-y +H:M:S"])
+AT_CHECK([test -s datetime.sps])
+AT_CHECK([test -s datetime.in])
+AT_CHECK([pspp -O format=csv datetime.sps])
+AT_CHECK([cat datetime.out], [0], [dnl
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 3083512200.00
+ 3083512200.00
+ 3083547000.00
+ 3083547000.00
+ 3083547000.00
+ 3083512200.00
+ 3083547000.00
+ 3083547000.00
+ 3083512200.00
+ 3083512200.00
+ 4221545340.00
+ 4221635460.00
+ 4221545340.00
+ 4221545340.00
+ 4221635460.00
+ 4221635460.00
+ 4221545340.00
+ 4221635460.00
+ 4221545340.00
+ 4221635460.00
+ 5859607620.00
+ 5859607620.00
+ 5859515580.00
+ 5859515580.00
+ 5859607620.00
+ 5859607620.00
+ 5859607620.00
+ 5859607620.00
+ 5859515580.00
+ 5859607620.00
+ 7472644440.00
+ 7472654760.00
+ 7472654760.00
+ 7472654760.00
+ 7472654760.00
+ 7472654760.00
+ 7472654760.00
+ 7472654760.00
+ 7472644440.00
+ 7472654760.00
+ 8092817880.00
+ 8092666920.00
+ 8092817880.00
+ 8092666920.00
+ 8092817880.00
+ 8092817880.00
+ 8092666920.00
+ 8092817880.00
+ 8092666920.00
+ 8092817880.00
+ 10114302240.00
+ 10114356960.00
+ 10114302240.00
+ 10114302240.00
+ 10114302240.00
+ 10114356960.00
+ 10114302240.00
+ 10114302240.00
+ 10114302240.00
+ 10114356960.00
+ 10945873020.00
+ 10945986180.00
+ 10945986180.00
+ 10945986180.00
+ 10945873020.00
+ 10945986180.00
+ 10945986180.00
+ 10945873020.00
+ 10945986180.00
+ 10945873020.00
+ 11327628900.00
+ 11327660700.00
+ 11327660700.00
+ 11327660700.00
+ 11327660700.00
+ 11327628900.00
+ 11327628900.00
+ 11327660700.00
+ 11327660700.00
+ 11327660700.00
+ 11376658140.00
+ 11376609060.00
+ 11376658140.00
+ 11376658140.00
+ 11376609060.00
+ 11376658140.00
+ 11376609060.00
+ 11376658140.00
+ 11376658140.00
+ 11376658140.00
+ 11391418620.00
+ 11391418620.00
+ 11391397380.00
+ 11391397380.00
+ 11391418620.00
+ 11391418620.00
+ 11391397380.00
+ 11391418620.00
+ 11391418620.00
+ 11391418620.00
+ 12920229900.00
+ 12920229900.00
+ 12920229900.00
+ 12920229900.00
+ 12920229900.00
+ 12920109300.00
+ 12920229900.00
+ 12920109300.00
+ 12920229900.00
+ 12920229900.00
+ 13044508200.00
+ 13044663000.00
+ 13044508200.00
+ 13044663000.00
+ 13044508200.00
+ 13044508200.00
+ 13044663000.00
+ 13044663000.00
+ 13044663000.00
+ 13044663000.00
+ 11327660700.00
+ 11327628900.00
+ 11327628900.00
+ 11327660700.00
+ 11327628900.00
+ 11327628900.00
+ 11327628900.00
+ 11327628900.00
+ 11327628900.00
+ 11327628900.00
+ 11376609060.00
+ 11376658140.00
+ 11376658140.00
+ 11376609060.00
+ 11376658140.00
+ 11376609060.00
+ 11376658140.00
+ 11376609060.00
+ 11376658140.00
+ 11376658140.00
+ 11391397380.00
+ 11391397380.00
+ 11391418620.00
+ 11391397380.00
+ 11391418620.00
+ 11391418620.00
+ 11391418620.00
+ 11391418620.00
+ 11391418620.00
+ 11391397380.00
+ 12920229900.00
+ 12920229900.00
+ 12920229900.00
+ 12920229900.00
+ 12920229900.00
+ 12920229900.00
+ 12920109300.00
+ 12920229900.00
+ 12920229900.00
+ 12920229900.00
+ 13044508200.00
+ 13044663000.00
+ 13044508200.00
+ 13044508200.00
+ 13044508200.00
+ 13044663000.00
+ 13044663000.00
+ 13044663000.00
+ 13044508200.00
+ 13044508200.00
+ 14392420200.00
+ 14392258200.00
+ 14392420200.00
+ 14392420200.00
+ 14392420200.00
+ 14392420200.00
+ 14392258200.00
+ 14392420200.00
+ 14392420200.00
+ 14392420200.00
+ 16149635760.00
+ 16149635760.00
+ 16149635760.00
+ 16149635760.00
+ 16149635760.00
+ 16149635760.00
+ 16149635760.00
+ 16149635760.00
+ 16149621840.00
+ 16149635760.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 2071958400.00
+ 3083512162.00
+ 3083512162.00
+ 3083512162.00
+ 3083547038.00
+ 3083512162.00
+ 3083512162.00
+ 3083547038.00
+ 3083512162.00
+ 3083547038.00
+ 3083547038.00
+ 4221635495.00
+ 4221545305.00
+ 4221635495.00
+ 4221635495.00
+ 4221635495.00
+ 4221545305.00
+ 4221635495.00
+ 4221635495.00
+ 4221635495.00
+ 4221635495.00
+ 5859607673.00
+ 5859515527.00
+ 5859607673.00
+ 5859607673.00
+ 5859607673.00
+ 5859607673.00
+ 5859515527.00
+ 5859607673.00
+ 5859607673.00
+ 5859607673.00
+ 7472654760.00
+ 7472644440.00
+ 7472654760.00
+ 7472654760.00
+ 7472654760.00
+ 7472644440.00
+ 7472654760.00
+ 7472654760.00
+ 7472644440.00
+ 7472654760.00
+ 8092817891.00
+ 8092817891.00
+ 8092666909.00
+ 8092817891.00
+ 8092817891.00
+ 8092817891.00
+ 8092817891.00
+ 8092817891.00
+ 8092817891.00
+ 8092817891.00
+ 10114302235.00
+ 10114302235.00
+ 10114302235.00
+ 10114356965.00
+ 10114356965.00
+ 10114356965.00
+ 10114356965.00
+ 10114356965.00
+ 10114356965.00
+ 10114302235.00
+ 10945986229.00
+ 10945986229.00
+ 10945872971.00
+ 10945872971.00
+ 10945986229.00
+ 10945986229.00
+ 10945872971.00
+ 10945986229.00
+ 10945986229.00
+ 10945986229.00
+ 11327660709.00
+ 11327660709.00
+ 11327660709.00
+ 11327660709.00
+ 11327660709.00
+ 11327660709.00
+ 11327660709.00
+ 11327660709.00
+ 11327660709.00
+ 11327660709.00
+ 11376658167.00
+ 11376658167.00
+ 11376658167.00
+ 11376658167.00
+ 11376658167.00
+ 11376658167.00
+ 11376658167.00
+ 11376658167.00
+ 11376658167.00
+ 11376658167.00
+ 11391397328.00
+ 11391418672.00
+ 11391418672.00
+ 11391418672.00
+ 11391397328.00
+ 11391418672.00
+ 11391397328.00
+ 11391418672.00
+ 11391418672.00
+ 11391418672.00
+ 12920229944.00
+ 12920229944.00
+ 12920109256.00
+ 12920229944.00
+ 12920229944.00
+ 12920109256.00
+ 12920109256.00
+ 12920109256.00
+ 12920229944.00
+ 12920109256.00
+ 13044663057.00
+ 13044663057.00
+ 13044663057.00
+ 13044508143.00
+ 13044663057.00
+ 13044663057.00
+ 13044663057.00
+ 13044508143.00
+ 13044663057.00
+ 13044663057.00
+ 11327628891.00
+ 11327628891.00
+ 11327660709.00
+ 11327660709.00
+ 11327660709.00
+ 11327628891.00
+ 11327628891.00
+ 11327660709.00
+ 11327660709.00
+ 11327628891.00
+ 11376658167.00
+ 11376658167.00
+ 11376658167.00
+ 11376658167.00
+ 11376658167.00
+ 11376609033.00
+ 11376658167.00
+ 11376609033.00
+ 11376658167.00
+ 11376658167.00
+ 11391418672.00
+ 11391397328.00
+ 11391418672.00
+ 11391397328.00
+ 11391397328.00
+ 11391397328.00
+ 11391397328.00
+ 11391397328.00
+ 11391397328.00
+ 11391397328.00
+ 12920229944.00
+ 12920229944.00
+ 12920229944.00
+ 12920109256.00
+ 12920229944.00
+ 12920229944.00
+ 12920229944.00
+ 12920229944.00
+ 12920229944.00
+ 12920229944.00
+ 13044663057.00
+ 13044663057.00
+ 13044663057.00
+ 13044663057.00
+ 13044508143.00
+ 13044663057.00
+ 13044508143.00
+ 13044508143.00
+ 13044663057.00
+ 13044663057.00
+ 14392258196.00
+ 14392420204.00
+ 14392420204.00
+ 14392420204.00
+ 14392258196.00
+ 14392420204.00
+ 14392420204.00
+ 14392258196.00
+ 14392420204.00
+ 14392420204.00
+ 16149635811.00
+ 16149635811.00
+ 16149635811.00
+ 16149635811.00
+ 16149635811.00
+ 16149621789.00
+ 16149621789.00
+ 16149621789.00
+ 16149635811.00
+ 16149635811.00
+])
+AT_CLEANUP
+
+AT_SETUP([TIME input format])
+AT_KEYWORDS([data-in])
+time_in
+AT_CHECK([$PERL test-my-rand.pl])
+AT_CHECK([$PERL time-in.pl 0 time +H:M +H:M:S])
+AT_CHECK([test -s time.sps])
+AT_CHECK([test -s time.data])
+AT_CHECK([pspp -O format=csv time.sps])
+AT_CHECK([cat time.out], [0], [dnl
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ -103800.00
+ 103800.00
+ 103800.00
+ -103800.00
+ 103800.00
+ -103800.00
+ 103800.00
+ 103800.00
+ -103800.00
+ 103800.00
+ 477060.00
+ 477060.00
+ 477060.00
+ 477060.00
+ -477060.00
+ 477060.00
+ 477060.00
+ 477060.00
+ 477060.00
+ -477060.00
+ 46020.00
+ -46020.00
+ -46020.00
+ -46020.00
+ 46020.00
+ 46020.00
+ -46020.00
+ 46020.00
+ 46020.00
+ -46020.00
+ 264360.00
+ 264360.00
+ -264360.00
+ -264360.00
+ 264360.00
+ -264360.00
+ 264360.00
+ -264360.00
+ -264360.00
+ -264360.00
+ 161880.00
+ 161880.00
+ 161880.00
+ 161880.00
+ 161880.00
+ -161880.00
+ 161880.00
+ 161880.00
+ 161880.00
+ -161880.00
+ 1064160.00
+ 1064160.00
+ 1064160.00
+ 1064160.00
+ 1064160.00
+ 1064160.00
+ -1064160.00
+ 1064160.00
+ 1064160.00
+ 1064160.00
+ -4549380.00
+ 4549380.00
+ 4549380.00
+ 4549380.00
+ 4549380.00
+ 4549380.00
+ 4549380.00
+ -4549380.00
+ 4549380.00
+ 4549380.00
+ 620700.00
+ -620700.00
+ 620700.00
+ 620700.00
+ -620700.00
+ 620700.00
+ -620700.00
+ -620700.00
+ 620700.00
+ 620700.00
+ 24540.00
+ -24540.00
+ 24540.00
+ 24540.00
+ 24540.00
+ 24540.00
+ 24540.00
+ 24540.00
+ 24540.00
+ 24540.00
+ -1738620.00
+ 1738620.00
+ 1738620.00
+ 1738620.00
+ 1738620.00
+ 1738620.00
+ 1738620.00
+ 1738620.00
+ 1738620.00
+ 1738620.00
+ 48012300.00
+ -48012300.00
+ -48012300.00
+ 48012300.00
+ 48012300.00
+ 48012300.00
+ 48012300.00
+ 48012300.00
+ 48012300.00
+ 48012300.00
+ 10445400.00
+ -10445400.00
+ -10445400.00
+ 10445400.00
+ 10445400.00
+ 10445400.00
+ -10445400.00
+ 10445400.00
+ 10445400.00
+ -10445400.00
+ 15900.00
+ 15900.00
+ -15900.00
+ 15900.00
+ -15900.00
+ -15900.00
+ 15900.00
+ 15900.00
+ 15900.00
+ 15900.00
+ 283740.00
+ -283740.00
+ 283740.00
+ 283740.00
+ 283740.00
+ -283740.00
+ 283740.00
+ 283740.00
+ -283740.00
+ 283740.00
+ 442620.00
+ 442620.00
+ 442620.00
+ 442620.00
+ 442620.00
+ 442620.00
+ 442620.00
+ 442620.00
+ 442620.00
+ -442620.00
+ 60300.00
+ 60300.00
+ 60300.00
+ 60300.00
+ 60300.00
+ -60300.00
+ -60300.00
+ 60300.00
+ -60300.00
+ -60300.00
+ 163800.00
+ -163800.00
+ -163800.00
+ -163800.00
+ 163800.00
+ 163800.00
+ 163800.00
+ 163800.00
+ -163800.00
+ 163800.00
+ 945000.00
+ -945000.00
+ -945000.00
+ -945000.00
+ 945000.00
+ 945000.00
+ 945000.00
+ -945000.00
+ 945000.00
+ 945000.00
+ -1907760.00
+ 1907760.00
+ -1907760.00
+ 1907760.00
+ -1907760.00
+ 1907760.00
+ 1907760.00
+ 1907760.00
+ 1907760.00
+ -1907760.00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ 103839.00
+ 103838.68
+ -103838.70
+ -103838.68
+ 103838.70
+ 103838.68
+ -103839.00
+ 103838.68
+ 103838.70
+ -103839.00
+ 477095.82
+ 477096.00
+ 477096.00
+ 477095.82
+ 477095.82
+ 477095.82
+ 477095.80
+ -477095.80
+ 477095.82
+ -477095.82
+ -46073.00
+ -46073.40
+ 46073.00
+ 46073.40
+ 46073.40
+ 46073.00
+ -46073.00
+ 46073.00
+ 46073.00
+ 46073.00
+ 264360.69
+ -264360.70
+ 264361.00
+ 264360.70
+ 264360.69
+ 264360.70
+ 264361.00
+ 264360.70
+ -264361.00
+ 264361.00
+ 161891.00
+ -161891.20
+ -161891.00
+ 161891.00
+ -161891.00
+ 161891.20
+ -161891.20
+ -161891.20
+ 161891.20
+ -161891.19
+ -1064166.00
+ 1064165.98
+ -1064166.00
+ -1064166.00
+ -1064165.98
+ 1064166.00
+ 1064166.00
+ -1064166.00
+ -1064165.98
+ 1064166.00
+ 4549429.00
+ 4549429.27
+ 4549429.27
+ -4549429.30
+ 4549429.00
+ -4549429.00
+ 4549429.00
+ 4549429.27
+ 4549429.00
+ 4549429.30
+ 620709.00
+ -620709.24
+ 620709.24
+ 620709.24
+ 620709.24
+ 620709.20
+ -620709.24
+ 620709.20
+ 620709.24
+ 620709.24
+ 24567.90
+ 24567.89
+ 24567.90
+ 24568.00
+ 24567.90
+ 24568.00
+ 24568.00
+ -24567.90
+ 24567.90
+ 24568.00
+ 1738672.56
+ 1738673.00
+ -1738672.60
+ -1738672.56
+ 1738673.00
+ 1738673.00
+ 1738673.00
+ 1738672.60
+ -1738672.56
+ 1738672.60
+ -48012344.10
+ 48012344.12
+ -48012344.10
+ -48012344.00
+ -48012344.00
+ 48012344.00
+ -48012344.00
+ -48012344.00
+ -48012344.00
+ 48012344.00
+ 10445457.27
+ 10445457.00
+ 10445457.30
+ 10445457.00
+ 10445457.27
+ 10445457.00
+ 10445457.27
+ 10445457.00
+ 10445457.00
+ -10445457.30
+ -15909.98
+ 15910.00
+ -15910.00
+ 15910.00
+ -15909.98
+ 15910.00
+ -15909.98
+ 15909.98
+ 15910.00
+ 15909.98
+ -283767.00
+ 283767.20
+ 283767.20
+ 283767.00
+ -283767.00
+ 283767.00
+ 283767.24
+ 283767.00
+ 283767.24
+ 283767.00
+ -442672.00
+ 442672.13
+ 442672.00
+ 442672.13
+ 442672.00
+ 442672.00
+ 442672.00
+ 442672.00
+ -442672.00
+ 442672.13
+ -60344.40
+ -60344.00
+ 60344.00
+ 60344.35
+ 60344.00
+ 60344.40
+ 60344.40
+ -60344.00
+ 60344.00
+ 60344.40
+ 163857.00
+ 163857.00
+ 163857.00
+ 163857.00
+ 163857.30
+ -163857.30
+ 163857.30
+ -163857.00
+ -163857.00
+ 163857.30
+ 945004.30
+ 945004.00
+ 945004.27
+ 945004.30
+ 945004.30
+ 945004.00
+ 945004.30
+ 945004.00
+ 945004.00
+ 945004.00
+ 1907811.00
+ 1907811.00
+ -1907811.00
+ 1907811.18
+ 1907811.20
+ 1907811.00
+ -1907811.00
+ 1907811.18
+ -1907811.00
+ -1907811.00
+])
+AT_CLEANUP
+
+AT_SETUP([DTIME input format])
+AT_KEYWORDS([data-in])
+time_in
+AT_CHECK([$PERL test-my-rand.pl])
+AT_CHECK([$PERL time-in.pl 2000 dtime '+D H:M' '+D H:M:S'])
+AT_CHECK([test -s dtime.sps])
+AT_CHECK([test -s dtime.data])
+AT_CHECK([pspp -O format=csv dtime.sps])
+AT_CHECK([cat dtime.out], [0], [dnl
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ 103800.00
+ 103800.00
+ -103800.00
+ 103800.00
+ 103800.00
+ -103800.00
+ 103800.00
+ -103800.00
+ 103800.00
+ -103800.00
+ 477060.00
+ 477060.00
+ 477060.00
+ 477060.00
+ 477060.00
+ 477060.00
+ -477060.00
+ -477060.00
+ -477060.00
+ 477060.00
+ 46020.00
+ 46020.00
+ 46020.00
+ 46020.00
+ -46020.00
+ -46020.00
+ -46020.00
+ 46020.00
+ 46020.00
+ 46020.00
+ 264360.00
+ 264360.00
+ -264360.00
+ 264360.00
+ 264360.00
+ 264360.00
+ 264360.00
+ -264360.00
+ -264360.00
+ -264360.00
+ -161880.00
+ -161880.00
+ 161880.00
+ 161880.00
+ 161880.00
+ -161880.00
+ 161880.00
+ -161880.00
+ 161880.00
+ -161880.00
+ 1064160.00
+ 1064160.00
+ 1064160.00
+ 1064160.00
+ 1064160.00
+ 1064160.00
+ -1064160.00
+ 1064160.00
+ 1064160.00
+ 1064160.00
+ -4549380.00
+ 4549380.00
+ -4549380.00
+ -4549380.00
+ -4549380.00
+ 4549380.00
+ 4549380.00
+ 4549380.00
+ 4549380.00
+ 4549380.00
+ -620700.00
+ 620700.00
+ 620700.00
+ -620700.00
+ 620700.00
+ 620700.00
+ 620700.00
+ -620700.00
+ 620700.00
+ 620700.00
+ -24540.00
+ 24540.00
+ 24540.00
+ 24540.00
+ -24540.00
+ 24540.00
+ 24540.00
+ -24540.00
+ 24540.00
+ -24540.00
+ 1738620.00
+ 1738620.00
+ 1738620.00
+ -1738620.00
+ -1738620.00
+ -1738620.00
+ 1738620.00
+ 1738620.00
+ 1738620.00
+ 1738620.00
+ 48012300.00
+ 48012300.00
+ 48012300.00
+ 48012300.00
+ 48012300.00
+ -48012300.00
+ -48012300.00
+ 48012300.00
+ -48012300.00
+ -48012300.00
+ -10445400.00
+ 10445400.00
+ -10445400.00
+ 10445400.00
+ 10445400.00
+ 10445400.00
+ 10445400.00
+ 10445400.00
+ 10445400.00
+ 10445400.00
+ 15900.00
+ 15900.00
+ 15900.00
+ 15900.00
+ 15900.00
+ -15900.00
+ 15900.00
+ 15900.00
+ 15900.00
+ 15900.00
+ -283740.00
+ 283740.00
+ -283740.00
+ -283740.00
+ 283740.00
+ 283740.00
+ 283740.00
+ 283740.00
+ 283740.00
+ -283740.00
+ 442620.00
+ -442620.00
+ -442620.00
+ 442620.00
+ 442620.00
+ -442620.00
+ -442620.00
+ -442620.00
+ 442620.00
+ 442620.00
+ 60300.00
+ -60300.00
+ 60300.00
+ 60300.00
+ 60300.00
+ 60300.00
+ 60300.00
+ 60300.00
+ 60300.00
+ 60300.00
+ 163800.00
+ 163800.00
+ -163800.00
+ 163800.00
+ -163800.00
+ -163800.00
+ -163800.00
+ 163800.00
+ 163800.00
+ -163800.00
+ 945000.00
+ 945000.00
+ 945000.00
+ 945000.00
+ -945000.00
+ 945000.00
+ 945000.00
+ 945000.00
+ 945000.00
+ -945000.00
+ -1907760.00
+ 1907760.00
+ 1907760.00
+ 1907760.00
+ -1907760.00
+ -1907760.00
+ -1907760.00
+ 1907760.00
+ -1907760.00
+ -1907760.00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ .00
+ 103838.70
+ 103838.70
+ 103839.00
+ 103838.68
+ 103838.70
+ 103839.00
+ 103838.70
+ -103839.00
+ 103839.00
+ 103839.00
+ 477095.80
+ 477095.80
+ -477095.80
+ 477095.82
+ 477095.82
+ 477095.82
+ -477095.82
+ 477095.82
+ 477096.00
+ -477096.00
+ -46073.00
+ 46073.00
+ -46073.00
+ 46073.41
+ 46073.00
+ 46073.40
+ 46073.00
+ 46073.41
+ 46073.41
+ -46073.00
+ 264360.70
+ 264360.70
+ 264360.69
+ 264361.00
+ -264360.70
+ 264360.69
+ -264360.70
+ 264360.69
+ -264361.00
+ 264360.69
+ 161891.00
+ -161891.20
+ -161891.19
+ 161891.19
+ 161891.00
+ 161891.20
+ 161891.20
+ 161891.00
+ 161891.00
+ 161891.20
+ -1064165.98
+ 1064166.00
+ 1064166.00
+ 1064166.00
+ 1064165.98
+ 1064166.00
+ 1064166.00
+ -1064165.98
+ 1064165.98
+ -1064166.00
+ 4549429.27
+ 4549429.27
+ 4549429.27
+ 4549429.27
+ 4549429.00
+ 4549429.27
+ -4549429.27
+ 4549429.00
+ 4549429.27
+ 4549429.27
+ -620709.00
+ 620709.20
+ 620709.00
+ -620709.20
+ -620709.24
+ -620709.00
+ 620709.00
+ 620709.24
+ -620709.24
+ 620709.00
+ -24567.89
+ 24567.90
+ 24568.00
+ 24567.89
+ 24568.00
+ 24568.00
+ 24567.90
+ -24568.00
+ -24567.89
+ -24568.00
+ 1738672.56
+ -1738672.56
+ 1738672.56
+ -1738672.60
+ -1738673.00
+ 1738672.56
+ 1738673.00
+ -1738672.60
+ 1738672.60
+ 1738672.56
+ 48012344.00
+ -48012344.12
+ -48012344.00
+ 48012344.12
+ -48012344.12
+ -48012344.00
+ 48012344.12
+ -48012344.00
+ -48012344.00
+ -48012344.00
+ -10445457.00
+ 10445457.00
+ 10445457.00
+ 10445457.00
+ -10445457.00
+ -10445457.00
+ 10445457.00
+ 10445457.00
+ 10445457.00
+ -10445457.30
+ -15909.98
+ 15910.00
+ -15909.98
+ 15910.00
+ 15910.00
+ -15910.00
+ -15910.00
+ -15910.00
+ -15910.00
+ 15909.98
+ -283767.24
+ 283767.20
+ 283767.24
+ 283767.24
+ 283767.00
+ 283767.20
+ 283767.20
+ 283767.24
+ -283767.00
+ 283767.24
+ 442672.13
+ -442672.13
+ 442672.00
+ 442672.13
+ 442672.10
+ 442672.00
+ 442672.00
+ -442672.10
+ 442672.00
+ -442672.10
+ -60344.35
+ 60344.00
+ 60344.00
+ -60344.00
+ 60344.00
+ 60344.35
+ 60344.00
+ 60344.35
+ 60344.00
+ 60344.00
+ -163857.00
+ -163857.00
+ 163857.32
+ 163857.00
+ -163857.30
+ -163857.00
+ 163857.30
+ 163857.00
+ 163857.00
+ -163857.00
+ -945004.00
+ -945004.30
+ 945004.27
+ 945004.27
+ -945004.27
+ -945004.27
+ -945004.00
+ -945004.27
+ -945004.00
+ 945004.30
+ 1907811.00
+ 1907811.00
+ 1907811.00
+ 1907811.00
+ 1907811.20
+ 1907811.18
+ 1907811.18
+ 1907811.18
+ 1907811.18
+ 1907811.00
+])
+AT_CLEANUP
+
+AT_SETUP([binary and hexadecimal input (IB, PIB, and PIBHEX formats)])
+AT_CHECK([$PERL -e 'print pack "n", $_ foreach 0...65535' > binhex-in.data])
+AT_CHECK([wc -c < binhex-in.data], [0], [131072
+])
+AT_DATA([binhex-in.sps], [dnl
+SET RIB=MSBFIRST.
+SET ERRORS=NONE.
+SET MXWARNS=10000000.
+SET MXERRS=10000000.
+FILE HANDLE data/NAME='binhex-in.data'/MODE=IMAGE/LRECL=2.
+DATA LIST FILE=data NOTABLE/ib 1-2 (IB) pib 1-2 (PIB) pibhex 1-2 (PIBHEX).
+COMPUTE x=$CASENUM - 1.
+PRINT OUTFILE='binhex-in.out'/x (PIBHEX4) ' ' ib pib pibhex.
+EXECUTE.
+])
+AT_CHECK([gzip -cd < $top_srcdir/tests/data/binhex-in.expected.cmp.gz | \
+ $PERL -pe "printf ' %04X ', $.-1" > expout])
+AT_CHECK([pspp -O format=csv binhex-in.sps], [0])
+AT_CHECK([cat binhex-in.out], [0], [expout])
+AT_CLEANUP
+
+AT_SETUP([BCD input (P and PK formats)])
+AT_CHECK([$PERL -e 'print pack "n", $_ foreach 0...65535' > bcd-in.data])
+AT_CHECK([wc -c < bcd-in.data], [0], [131072
+])
+AT_DATA([bcd-in.sps], [dnl
+SET ERRORS=NONE.
+SET MXWARNS=10000000.
+SET MXERRS=10000000.
+FILE HANDLE data/NAME='bcd-in.data'/MODE=IMAGE/LRECL=2.
+DATA LIST FILE=data NOTABLE/p 1-2 (P) pk 1-2 (PK).
+COMPUTE x=$CASENUM - 1.
+PRINT OUTFILE='bcd-in.out'/x (PIBHEX4) ' ' P PK.
+EXECUTE.
+])
+AT_CHECK([gzip -cd < $top_srcdir/tests/data/bcd-in.expected.cmp.gz | \
+ $PERL -pe "printf ' %04X ', $.-1" > expout])
+AT_CHECK([pspp -O format=csv bcd-in.sps])
+AT_CHECK([cat bcd-in.out], [0], [expout])
+AT_CLEANUP
+
+AT_SETUP([legacy input (N and Z formats)])
+AT_CHECK([$PERL -e 'print pack "n", $_ foreach 0...65535' > legacy-in.data])
+AT_CHECK([wc -c < legacy-in.data], [0], [131072
+])
+AT_DATA([legacy-in.sps], [dnl
+SET ERRORS=NONE.
+SET MXWARNS=10000000.
+SET MXERRS=10000000.
+FILE HANDLE data/NAME='legacy-in.data'/MODE=IMAGE/LRECL=2.
+DATA LIST NOTABLE FILE=data/n 1-2 (N) z 1-2 (z).
+COMPUTE x=$CASENUM - 1.
+PRINT OUTFILE='legacy-in.out'/x (PIBHEX4) ' ' N Z.
+EXECUTE.
+])
+AT_CHECK([gzip -cd < $top_srcdir/tests/data/legacy-in.expected.cmp.gz | \
+ $PERL -pe "printf ' %04X ', $.-1" > expout])
+AT_CHECK([pspp -O format=csv legacy-in.sps])
+AT_CHECK([cat legacy-in.out], [0], [expout])
+AT_CLEANUP
+
+AT_SETUP([WKDAY input format])
+AT_DATA([wkday.sps], [dnl
+DATA LIST NOTABLE /wkday2 1-2 (wkday)
+ wkday3 1-3 (wkday)
+ wkday4 1-4 (wkday)
+ wkday5 1-5 (wkday)
+ wkday6 1-6 (wkday)
+ wkday7 1-7 (wkday)
+ wkday8 1-8 (wkday)
+ wkday9 1-9 (wkday)
+ wkday10 1-10 (wkday).
+BEGIN DATA.
+
+.
+monady
+tuseday
+WEDENSDAY
+Thurdsay
+fRidya
+SAturady
+sudnay
+sturday
+END DATA.
+FORMATS ALL (WKDAY2).
+PRINT OUTFILE='wkday.out'/ALL.
+EXECUTE.
+])
+AT_CHECK([pspp -O format=csv wkday.sps], [0], [dnl
+wkday.sps:20.1-2: warning: Data for variable wkday2 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
+
+wkday.sps:20.1-3: warning: Data for variable wkday3 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
+
+wkday.sps:20.1-4: warning: Data for variable wkday4 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
+
+wkday.sps:20.1-5: warning: Data for variable wkday5 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
+
+wkday.sps:20.1-6: warning: Data for variable wkday6 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
+
+wkday.sps:20.1-7: warning: Data for variable wkday7 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
+
+wkday.sps:20.1-8: warning: Data for variable wkday8 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
+
+wkday.sps:20.1-9: warning: Data for variable wkday9 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
+
+wkday.sps:20.1-10: warning: Data for variable wkday10 is not valid as format WKDAY: Unrecognized weekday name. At least the first two letters of an English weekday name must be specified.
+])
+AT_CHECK([cat wkday.out], [0], [dnl
+ . . . . . . . . . @&t@
+ . . . . . . . . . @&t@
+ MO MO MO MO MO MO MO MO MO @&t@
+ TU TU TU TU TU TU TU TU TU @&t@
+ WE WE WE WE WE WE WE WE WE @&t@
+ TH TH TH TH TH TH TH TH TH @&t@
+ FR FR FR FR FR FR FR FR FR @&t@
+ SA SA SA SA SA SA SA SA SA @&t@
+ SU SU SU SU SU SU SU SU SU @&t@
+ . . . . . . . . . @&t@
+])
+AT_CLEANUP
+
+AT_SETUP([MONTH input format])
+AT_DATA([month.sps], [dnl
+DATA LIST NOTABLE /month3 1-3 (MONTH)
+ month4 1-4 (MONTH)
+ month5 1-5 (MONTH)
+ month6 1-6 (MONTH)
+ month7 1-7 (MONTH)
+ month8 1-8 (MONTH)
+ month9 1-9 (MONTH)
+ month10 1-10 (MONTH).
+BEGIN DATA.
+
+.
+i
+ii
+iii
+iiii
+iv
+v
+vi
+vii
+viii
+ix
+viiii
+x
+xi
+xii
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+january
+JANAURY
+February
+fEbraury
+MArch
+marhc
+apRIL
+may
+june
+july
+august
+september
+october
+november
+decmeber
+december
+END DATA.
+FORMATS ALL (MONTH3).
+PRINT OUTFILE='month.out'/ALL.
+EXECUTE.
+])
+AT_CHECK([pspp -O format=csv month.sps], [0], [dnl
+month.sps:15.1-4: warning: Data for variable month4 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:15.1-5: warning: Data for variable month5 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:15.1-6: warning: Data for variable month6 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:15.1-7: warning: Data for variable month7 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:15.1-8: warning: Data for variable month8 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:15.1-9: warning: Data for variable month9 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:15.1-10: warning: Data for variable month10 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:26.1-3: warning: Data for variable month3 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:26.1-4: warning: Data for variable month4 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:26.1-5: warning: Data for variable month5 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:26.1-6: warning: Data for variable month6 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:26.1-7: warning: Data for variable month7 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:26.1-8: warning: Data for variable month8 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:26.1-9: warning: Data for variable month9 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:26.1-10: warning: Data for variable month10 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:39.1-3: warning: Data for variable month3 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:39.1-4: warning: Data for variable month4 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:39.1-5: warning: Data for variable month5 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:39.1-6: warning: Data for variable month6 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:39.1-7: warning: Data for variable month7 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:39.1-8: warning: Data for variable month8 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:39.1-9: warning: Data for variable month9 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+
+month.sps:39.1-10: warning: Data for variable month10 is not valid as format MONTH: Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names.
+])
+AT_CHECK([cat month.out], [0], [dnl
+ . . . . . . . . @&t@
+ . . . . . . . . @&t@
+ JAN JAN JAN JAN JAN JAN JAN JAN @&t@
+ FEB FEB FEB FEB FEB FEB FEB FEB @&t@
+ MAR MAR MAR MAR MAR MAR MAR MAR @&t@
+ MAR . . . . . . . @&t@
+ APR APR APR APR APR APR APR APR @&t@
+ MAY MAY MAY MAY MAY MAY MAY MAY @&t@
+ JUN JUN JUN JUN JUN JUN JUN JUN @&t@
+ JUL JUL JUL JUL JUL JUL JUL JUL @&t@
+ JUL AUG AUG AUG AUG AUG AUG AUG @&t@
+ SEP SEP SEP SEP SEP SEP SEP SEP @&t@
+ JUL AUG AUG AUG AUG AUG AUG AUG @&t@
+ OCT OCT OCT OCT OCT OCT OCT OCT @&t@
+ NOV NOV NOV NOV NOV NOV NOV NOV @&t@
+ DEC DEC DEC DEC DEC DEC DEC DEC @&t@
+ . . . . . . . . @&t@
+ JAN JAN JAN JAN JAN JAN JAN JAN @&t@
+ FEB FEB FEB FEB FEB FEB FEB FEB @&t@
+ MAR MAR MAR MAR MAR MAR MAR MAR @&t@
+ APR APR APR APR APR APR APR APR @&t@
+ MAY MAY MAY MAY MAY MAY MAY MAY @&t@
+ JUN JUN JUN JUN JUN JUN JUN JUN @&t@
+ JUL JUL JUL JUL JUL JUL JUL JUL @&t@
+ AUG AUG AUG AUG AUG AUG AUG AUG @&t@
+ SEP SEP SEP SEP SEP SEP SEP SEP @&t@
+ OCT OCT OCT OCT OCT OCT OCT OCT @&t@
+ NOV NOV NOV NOV NOV NOV NOV NOV @&t@
+ DEC DEC DEC DEC DEC DEC DEC DEC @&t@
+ . . . . . . . . @&t@
+ JAN JAN JAN JAN JAN JAN JAN JAN @&t@
+ JAN JAN JAN JAN JAN JAN JAN JAN @&t@
+ FEB FEB FEB FEB FEB FEB FEB FEB @&t@
+ FEB FEB FEB FEB FEB FEB FEB FEB @&t@
+ MAR MAR MAR MAR MAR MAR MAR MAR @&t@
+ MAR MAR MAR MAR MAR MAR MAR MAR @&t@
+ APR APR APR APR APR APR APR APR @&t@
+ MAY MAY MAY MAY MAY MAY MAY MAY @&t@
+ JUN JUN JUN JUN JUN JUN JUN JUN @&t@
+ JUL JUL JUL JUL JUL JUL JUL JUL @&t@
+ AUG AUG AUG AUG AUG AUG AUG AUG @&t@
+ SEP SEP SEP SEP SEP SEP SEP SEP @&t@
+ OCT OCT OCT OCT OCT OCT OCT OCT @&t@
+ NOV NOV NOV NOV NOV NOV NOV NOV @&t@
+ DEC DEC DEC DEC DEC DEC DEC DEC @&t@
+ DEC DEC DEC DEC DEC DEC DEC DEC @&t@
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([data output (data-out)])
+
+AT_SETUP([numeric format output])
+AT_DATA([num-out.pl],
+[[use strict;
+use warnings 'all';
+
+my @values = qw(0 2 9.5 27 271 999.95 2718 9999.995 27182 271828
+2718281 2**39 2**333 2**-21 -2 -9.5 -27 -271 -999.95 -2718 -9999.995
+-27182 -271828 -2718281 -2**39 -2**333 -2**-21 -0 3.125 31.25 314.125
+3141.5 31415.875 314159.25 3141592.625 31415926.5 271828182.25
+3214567890.5 31415926535.875 -3.125 -31.375 -314.125 -3141.5
+-31415.875 -314159.25 -3141592.625 -31415926.5 -271828182.25
+-3214567890.5 -31415926535.875);
+
+print "SET CCA=',,,'.\n";
+print "SET CCB='-,[[[,]]],-'.\n";
+print "SET CCC='((,[,],))'.\n";
+print "SET CCD=',XXX,,-'.\n";
+print "SET CCE=',,YYY,-'.\n";
+print "INPUT PROGRAM.\n";
+print "STRING EXPR(A16).\n";
+print map ("COMPUTE NUM=$_.\nCOMPUTE EXPR='$_'.\nEND CASE.\n", @values);
+print "END FILE.\n";
+print "END INPUT PROGRAM.\n";
+
+print "PRINT OUTFILE='output.txt'/EXPR.\n";
+for my $format qw (F COMMA DOT DOLLAR PCT E CCA CCB CCC CCD CCE N Z) {
+ for my $d (0...16) {
+ my ($min_w);
+ if ($format ne 'E') {
+ $min_w = $d + 1;
+ $min_w++ if $format eq 'DOLLAR' || $format eq 'PCT';
+ $min_w = 2 if $min_w == 1 && ($format =~ /^CC/);
+ } else {
+ $min_w = $d + 7;
+ }
+ for my $w ($min_w...40) {
+ my ($f) = "$format$w.$d";
+ print "PRINT OUTFILE='output.txt'/'$f: \"' NUM($f) '\"'.\n";
+ }
+ }
+ print "PRINT SPACE OUTFILE='output.txt'.\n";
+}
+print "EXECUTE.\n";
+]])
+AT_CHECK([$PERL num-out.pl > num-out.sps])
+AT_CHECK([pspp -O format=csv num-out.sps])
+AT_CHECK([inexactify$EXEEXT < output.txt > output.inexact])
+AT_CHECK([gzip -cd < $top_srcdir/tests/data/num-out.expected.cmp.gz > expout.cmp])
+AT_DATA([num-out-decmp.pl],
+[[use strict;
+use warnings 'all';
+
+my (@line);
+while (<>) {
+ if (my ($n) = /^\*(\d+)$/) {
+ for (1...$n) {
+ $line[1]++;
+ $line[3] = " $line[3]";
+ print ' ', join ('', @line), "\n";
+ }
+ } elsif (my ($suffix) = /^\$(.*)$/) {
+ for my $c (split ('', $suffix)) {
+ $line[1]++;
+ $line[4] .= $c;
+ print ' ', join ('', @line), "\n";
+ }
+ } elsif (my ($prefix) = /^\^(.*)$/) {
+ for my $c (split ('', $prefix)) {
+ $line[1]++;
+ $line[4] = "$c$line[4]";
+ print ' ', join ('', @line), "\n";
+ }
+ } else {
+ @line = /^([A-Z]+)(\d+)([^"]+")( *)([^%"]*)(%?")$/;
+ print " $_";
+ }
+}
+]])
+AT_CHECK([$PERL num-out-decmp.pl < expout.cmp > expout.exact])
+AT_CHECK([[inexactify < expout.exact > expout.inexact]])
+AT_DATA([num-out-compare.pl],
+[[#! /usr/bin/perl -w
+
+use strict;
+use warnings 'all';
+use Getopt::Long;
+
+my $exact = 0;
+my $spss = 0;
+my $verbose = 0;
+Getopt::Long::Configure ("bundling");
+GetOptions ("e|exact!" => \$exact,
+ "s|spss!" => \$spss,
+ "v|verbose+" => \$verbose,
+ "h|help" => sub { usage (0) })
+ or usage (1);
+
+sub usage {
+ print "$0: compare expected and actual numeric formatting output\n";
+ print "usage: $0 [OPTION...] EXPECTED ACTUAL\n";
+ print "where EXPECTED is the file containing expected output\n";
+ print "and ACTUAL is the file containing actual output.\n";
+ print "Options:\n";
+ print " -e, --exact: Require numbers to be exactly equal.\n";
+ print " (By default, small differences are permitted.)\n";
+ print " -s, --spss: Ignore most SPSS formatting bugs in EXPECTED.\n";
+ print " (A few differences are not compensated)\n";
+ print " -v, --verbose: Use once to summarize errors and differences.\n";
+ print " Use twice for details of differences.\n";
+ exit (@_);
+}
+
+open (EXPECTED, '<', $ARGV[0]) or die "$ARGV[0]: open: $!\n";
+open (ACTUAL, '<', $ARGV[1]) or die "$ARGV[1]: open: $!\n";
+my ($expr);
+my ($bad_round) = 0;
+my ($approximate) = 0;
+my ($spss_wtf1) = 0;
+my ($spss_wtf2) = 0;
+my ($lost_sign) = 0;
+my ($errors) = 0;
+while (defined (my $a = <EXPECTED>) && defined (my $b = <ACTUAL>)) {
+ chomp $a;
+ chomp $b;
+ if ($a eq $b) {
+ if ($a !~ /^\s*$/ && $a !~ /:/) {
+ $expr = $a;
+ $expr =~ s/\s*$//;
+ $expr =~ s/^\s*//;
+ }
+ } else {
+ my ($fmt, $a_out) = $a =~ /^ (.*): "(.*)"$/ or die;
+ my ($b_fmt, $b_out) = $b =~ /^ (.*): "(.*)"$/ or die;
+ die if $fmt ne $b_fmt;
+ die if $a_out eq $b_out;
+
+ if (!$exact) {
+ if (increment ($a_out) eq $b_out || increment ($b_out) eq $a_out) {
+ $approximate++;
+ next;
+ }
+ }
+ if ($spss) {
+ if ($a_out =~ /0.*0/ && $a_out !~ /[1-9]/) {
+ $bad_round++;
+ next;
+ } elsif ($a_out =~ /\*/ && $a_out !~ /^\*+$/) {
+ $spss_wtf1++;
+ next;
+ } elsif ($expr =~ /^-/
+ && $a_out =~ /^\*+$/
+ && $b_out =~ /-\d(\.\d*#*)?E[-+]\d\d\d/
+ && $fmt =~ /^E/) {
+ $spss_wtf2++;
+ next;
+ } elsif ($expr =~ /^-/
+ && (($a_out !~ /-/ && $a_out =~ /[1-9]/ && $b_out =~ /-/)
+ || ($a_out =~ /^[0-9]+$/ && $b_out =~ /^\*+$/))) {
+ $lost_sign++;
+ next;
+ }
+ }
+ print "$.: $expr in $fmt: expected \"$a_out\", got \"$b_out\"\n"
+ if $verbose > 1;
+ $errors++;
+ }
+}
+while (<EXPECTED>) {
+ print "Extra lines in $ARGV[0]\n";
+ $errors++;
+ last;
+}
+while (<ACTUAL>) {
+ print "Extra lines in $ARGV[1]\n";
+ $errors++;
+ last;
+}
+if ($verbose) {
+ print "$errors errors\n";
+ if (!$exact) {
+ print "$approximate approximate matches\n";
+ }
+ if ($spss) {
+ print "$bad_round bad rounds\n";
+ print "$spss_wtf1 SPSS WTF 1\n";
+ print "$spss_wtf2 SPSS WTF 2\n";
+ print "$lost_sign lost signs\n";
+ }
+}
+exit ($errors > 0);
+
+# Returns the argument value incremented by one unit in its final
+# decimal place.
+sub increment {
+ local ($_) = @_;
+ my ($last_digit, $i);
+ for ($i = 0; $i < length $_; $i++) {
+ my ($c) = substr ($_, $i, 1);
+ last if ($c eq 'E');
+ $last_digit = $i if $c =~ /[0-9]/;
+ }
+ return $_ if !defined $last_digit;
+ for ($i = $last_digit; $i >= 0; $i--) {
+ my ($c) = substr ($_, $i, 1);
+ if ($c eq '9') {
+ substr ($_, $i, 1) = '0';
+ } elsif ($c =~ /[0-8]/) {
+ substr ($_, $i, 1) = chr (ord ($c) + 1);
+ last;
+ }
+ }
+ $_ = "1$_" if $i < 0;
+ return $_;
+}
+]])
+AT_CHECK([$PERL num-out-compare.pl $PSPP_NUM_OUT_COMPARE_FLAGS expout.inexact output.inexact])
+AT_CLEANUP
+
+AT_SETUP([binary and hexadecimal output])
+AT_DATA([binhex-out.sps], [dnl
+SET ERRORS=NONE.
+SET MXWARNS=10000000.
+SET WIB=MSBFIRST.
+DATA LIST NOTABLE/x 1-10.
+BEGIN DATA.
+
+2
+11
+123
+1234
+913
+3.14159
+777
+82
+690
+-2
+-11
+-123
+-1234
+-913
+-3.14159
+-777
+-82
+-690
+-.1
+-.5
+-.9
+9999.1
+9999.5
+9999.9
+10000
+18231237
+-9999.1
+-9999.5
+-9999.9
+-10000
+-8231237
+999.1
+999.5
+999.9
+1000
+8231237
+-999.1
+-999.5
+-999.9
+-1000
+-8231237
+99.1
+99.5
+99.9
+100
+821237
+-99.1
+-99.5
+-99.9
+-100
+-831237
+9.1
+9.5
+9.9
+10
+81237
+-9.1
+-9.5
+-9.9
+-10
+-81237
+1.1
+-1.1
+1.5
+-1.5
+1.9
+-1.9
+END DATA.
+FILE HANDLE output/NAME='binhex.out'/MODE=IMAGE/LRECL=256.
+WRITE OUTFILE=output/
+ x(p1.0) x(p2.0) x(p3.0) x(p4.0) /* 000
+ x(p2.1) x(p3.1) x(p4.1) /* 00a
+ x(p3.2) x(p4.2) /* 013
+ x(p4.3) /* 01a
+ x(pk1.0) x(pk2.0) x(pk3.0) x(pk4.0) /* 01e
+ x(pk2.1) x(pk3.1) x(pk4.1) /* 028
+ x(pk3.2) x(pk4.2) /* 031
+ x(pk4.3) /* 038
+ x(ib1.0) x(ib2.0) x(ib3.0) x(ib4.0) /* 03c
+ x(ib1.1) x(ib2.1) x(ib3.1) x(ib4.1) /* 046
+ x(ib1.2) x(ib2.2) x(ib3.2) x(ib4.2) /* 050
+ x(ib1.3) x(ib2.3) x(ib3.3) x(ib4.3) /* 05a
+ x(ib2.4) x(ib3.4) x(ib4.4) /* 064
+ x(ib2.5) x(ib3.5) x(ib4.5) /* 06d
+ x(ib3.6) x(ib4.6) /* 076
+ x(ib3.7) x(ib4.7) /* 07d
+ x(ib3.8) x(ib4.8) /* 084
+ x(ib4.9) /* 08b
+ x(ib4.10) /* 08f
+ x(pib1.0) x(pib2.0) x(pib3.0) x(pib4.0) /* 093
+ x(pib1.1) x(pib2.1) x(pib3.1) x(pib4.1) /* 09d
+ x(pib1.2) x(pib2.2) x(pib3.2) x(pib4.2) /* 0a7
+ x(pib1.3) x(pib2.3) x(pib3.3) x(pib4.3) /* 0b1
+ x(pib2.4) x(pib3.4) x(pib4.4) /* 0bb
+ x(pib2.5) x(pib3.5) x(pib4.5) /* 0c4
+ x(pib3.6) x(pib4.6) /* 0cd
+ x(pib3.7) x(pib4.7) /* 0d4
+ x(pib3.8) x(pib4.8) /* 0db
+ x(pib4.9) /* 0e2
+ x(pib4.10) /* 0e6
+ x(pibhex2) x(pibhex4) /* 0ea
+ x(pibhex6) x(pibhex8). /* 0f0
+ /* 0fe
+EXECUTE.
+])
+AT_CHECK([pspp -O format=csv binhex-out.sps])
+AT_CHECK([gzip -cd < $top_srcdir/tests/data/binhex-out.expected.gz > expout])
+AT_CHECK([cat binhex.out], [0], [expout])
+AT_CLEANUP
+
+AT_SETUP([output valid dates])
+AT_DATA([date-out.sps], [dnl
+set epoch=1930.
+data list notable /x 1-30 (datetime).
+begin data.
+10-6-1648 0:0:0
+30-6-1680 4:50:38.12301
+24-7-1716 12:31:35.23453
+19-6-1768 12:47:53.34505
+2-8-1819 1:26:0.45615
+27-3-1839 20:58:11.56677
+19-4-1903 7:36:5.18964
+25-8-1929 15:43:49.83132
+29-9-1941 4:25:9.01293
+19-4-1943 6:49:27.52375
+7-10-1943 2:57:52.01565
+17-3-1992 16:45:44.86529
+25-2-1996 21:30:57.82047
+29-9-41 4:25:9.15395
+19-4-43 6:49:27.10533
+7-10-43 2:57:52.48229
+17-3-92 16:45:44.65827
+25-2-96 21:30:57.58219
+10-11-2038 22:30:4.18347
+18-7-2094 1:56:51.59319
+end data.
+print outfile='date-out.out'/x(date9) ' | ' x(date11).
+print outfile='date-out.out'/x(adate8) ' | ' x(adate10).
+print outfile='date-out.out'/x(edate8) ' | ' x(edate10).
+print outfile='date-out.out'/x(jdate5) ' | ' x(jdate7).
+print outfile='date-out.out'/x(sdate8) ' | ' x(sdate10).
+print outfile='date-out.out'/x(qyr6) ' | ' x(qyr8).
+print outfile='date-out.out'/x(moyr6) ' | ' x(moyr8).
+print outfile='date-out.out'/x(wkyr8) ' | ' x(wkyr10).
+print outfile='date-out.out'/x(datetime17).
+print outfile='date-out.out'/x(datetime18).
+print outfile='date-out.out'/x(datetime19).
+print outfile='date-out.out'/x(datetime20).
+print outfile='date-out.out'/x(datetime21).
+print outfile='date-out.out'/x(datetime22).
+print outfile='date-out.out'/x(datetime22.1).
+print outfile='date-out.out'/x(datetime23.2).
+print outfile='date-out.out'/x(datetime24.3).
+print outfile='date-out.out'/x(datetime25.4).
+print outfile='date-out.out'/x(datetime26.5).
+execute.
+])
+AT_CHECK([pspp -O format=csv date-out.sps])
+AT_CHECK([cat date-out.out], [0], [dnl
+ ********* | 10-JUN-1648
+ ******** | 06/10/1648
+ ******** | 10.06.1648
+ ***** | 1648162
+ ******** | 1648/06/10
+ ****** | 2 Q 1648
+ ****** | JUN 1648
+ ******** | 24 WK 1648
+ 10-JUN-1648 00:00
+ 10-JUN-1648 00:00
+ 10-JUN-1648 00:00
+ 10-JUN-1648 00:00:00
+ 10-JUN-1648 00:00:00
+ 10-JUN-1648 00:00:00
+ 10-JUN-1648 00:00:00.0
+ 10-JUN-1648 00:00:00.00
+ 10-JUN-1648 00:00:00.000
+ 10-JUN-1648 00:00:00.0000
+ 10-JUN-1648 00:00:00.00000
+ ********* | 30-JUN-1680
+ ******** | 06/30/1680
+ ******** | 30.06.1680
+ ***** | 1680182
+ ******** | 1680/06/30
+ ****** | 2 Q 1680
+ ****** | JUN 1680
+ ******** | 26 WK 1680
+ 30-JUN-1680 04:50
+ 30-JUN-1680 04:50
+ 30-JUN-1680 04:50
+ 30-JUN-1680 04:50:38
+ 30-JUN-1680 04:50:38
+ 30-JUN-1680 04:50:38
+ 30-JUN-1680 04:50:38.1
+ 30-JUN-1680 04:50:38.12
+ 30-JUN-1680 04:50:38.123
+ 30-JUN-1680 04:50:38.1230
+ 30-JUN-1680 04:50:38.12301
+ ********* | 24-JUL-1716
+ ******** | 07/24/1716
+ ******** | 24.07.1716
+ ***** | 1716206
+ ******** | 1716/07/24
+ ****** | 3 Q 1716
+ ****** | JUL 1716
+ ******** | 30 WK 1716
+ 24-JUL-1716 12:31
+ 24-JUL-1716 12:31
+ 24-JUL-1716 12:31
+ 24-JUL-1716 12:31:35
+ 24-JUL-1716 12:31:35
+ 24-JUL-1716 12:31:35
+ 24-JUL-1716 12:31:35.2
+ 24-JUL-1716 12:31:35.23
+ 24-JUL-1716 12:31:35.235
+ 24-JUL-1716 12:31:35.2345
+ 24-JUL-1716 12:31:35.23453
+ ********* | 19-JUN-1768
+ ******** | 06/19/1768
+ ******** | 19.06.1768
+ ***** | 1768171
+ ******** | 1768/06/19
+ ****** | 2 Q 1768
+ ****** | JUN 1768
+ ******** | 25 WK 1768
+ 19-JUN-1768 12:47
+ 19-JUN-1768 12:47
+ 19-JUN-1768 12:47
+ 19-JUN-1768 12:47:53
+ 19-JUN-1768 12:47:53
+ 19-JUN-1768 12:47:53
+ 19-JUN-1768 12:47:53.3
+ 19-JUN-1768 12:47:53.35
+ 19-JUN-1768 12:47:53.345
+ 19-JUN-1768 12:47:53.3450
+ 19-JUN-1768 12:47:53.34505
+ ********* | 02-AUG-1819
+ ******** | 08/02/1819
+ ******** | 02.08.1819
+ ***** | 1819214
+ ******** | 1819/08/02
+ ****** | 3 Q 1819
+ ****** | AUG 1819
+ ******** | 31 WK 1819
+ 02-AUG-1819 01:26
+ 02-AUG-1819 01:26
+ 02-AUG-1819 01:26
+ 02-AUG-1819 01:26:00
+ 02-AUG-1819 01:26:00
+ 02-AUG-1819 01:26:00
+ 02-AUG-1819 01:26:00.5
+ 02-AUG-1819 01:26:00.46
+ 02-AUG-1819 01:26:00.456
+ 02-AUG-1819 01:26:00.4562
+ 02-AUG-1819 01:26:00.45615
+ ********* | 27-MAR-1839
+ ******** | 03/27/1839
+ ******** | 27.03.1839
+ ***** | 1839086
+ ******** | 1839/03/27
+ ****** | 1 Q 1839
+ ****** | MAR 1839
+ ******** | 13 WK 1839
+ 27-MAR-1839 20:58
+ 27-MAR-1839 20:58
+ 27-MAR-1839 20:58
+ 27-MAR-1839 20:58:11
+ 27-MAR-1839 20:58:11
+ 27-MAR-1839 20:58:11
+ 27-MAR-1839 20:58:11.6
+ 27-MAR-1839 20:58:11.57
+ 27-MAR-1839 20:58:11.567
+ 27-MAR-1839 20:58:11.5668
+ 27-MAR-1839 20:58:11.56677
+ ********* | 19-APR-1903
+ ******** | 04/19/1903
+ ******** | 19.04.1903
+ ***** | 1903109
+ ******** | 1903/04/19
+ ****** | 2 Q 1903
+ ****** | APR 1903
+ ******** | 16 WK 1903
+ 19-APR-1903 07:36
+ 19-APR-1903 07:36
+ 19-APR-1903 07:36
+ 19-APR-1903 07:36:05
+ 19-APR-1903 07:36:05
+ 19-APR-1903 07:36:05
+ 19-APR-1903 07:36:05.2
+ 19-APR-1903 07:36:05.19
+ 19-APR-1903 07:36:05.190
+ 19-APR-1903 07:36:05.1896
+ 19-APR-1903 07:36:05.18964
+ ********* | 25-AUG-1929
+ ******** | 08/25/1929
+ ******** | 25.08.1929
+ ***** | 1929237
+ ******** | 1929/08/25
+ ****** | 3 Q 1929
+ ****** | AUG 1929
+ ******** | 34 WK 1929
+ 25-AUG-1929 15:43
+ 25-AUG-1929 15:43
+ 25-AUG-1929 15:43
+ 25-AUG-1929 15:43:49
+ 25-AUG-1929 15:43:49
+ 25-AUG-1929 15:43:49
+ 25-AUG-1929 15:43:49.8
+ 25-AUG-1929 15:43:49.83
+ 25-AUG-1929 15:43:49.831
+ 25-AUG-1929 15:43:49.8313
+ 25-AUG-1929 15:43:49.83132
+ 29-SEP-41 | 29-SEP-1941
+ 09/29/41 | 09/29/1941
+ 29.09.41 | 29.09.1941
+ 41272 | 1941272
+ 41/09/29 | 1941/09/29
+ 3 Q 41 | 3 Q 1941
+ SEP 41 | SEP 1941
+ 39 WK 41 | 39 WK 1941
+ 29-SEP-1941 04:25
+ 29-SEP-1941 04:25
+ 29-SEP-1941 04:25
+ 29-SEP-1941 04:25:09
+ 29-SEP-1941 04:25:09
+ 29-SEP-1941 04:25:09
+ 29-SEP-1941 04:25:09.0
+ 29-SEP-1941 04:25:09.01
+ 29-SEP-1941 04:25:09.013
+ 29-SEP-1941 04:25:09.0129
+ 29-SEP-1941 04:25:09.01293
+ 19-APR-43 | 19-APR-1943
+ 04/19/43 | 04/19/1943
+ 19.04.43 | 19.04.1943
+ 43109 | 1943109
+ 43/04/19 | 1943/04/19
+ 2 Q 43 | 2 Q 1943
+ APR 43 | APR 1943
+ 16 WK 43 | 16 WK 1943
+ 19-APR-1943 06:49
+ 19-APR-1943 06:49
+ 19-APR-1943 06:49
+ 19-APR-1943 06:49:27
+ 19-APR-1943 06:49:27
+ 19-APR-1943 06:49:27
+ 19-APR-1943 06:49:27.5
+ 19-APR-1943 06:49:27.52
+ 19-APR-1943 06:49:27.524
+ 19-APR-1943 06:49:27.5238
+ 19-APR-1943 06:49:27.52375
+ 07-OCT-43 | 07-OCT-1943
+ 10/07/43 | 10/07/1943
+ 07.10.43 | 07.10.1943
+ 43280 | 1943280
+ 43/10/07 | 1943/10/07
+ 4 Q 43 | 4 Q 1943
+ OCT 43 | OCT 1943
+ 40 WK 43 | 40 WK 1943
+ 07-OCT-1943 02:57
+ 07-OCT-1943 02:57
+ 07-OCT-1943 02:57
+ 07-OCT-1943 02:57:52
+ 07-OCT-1943 02:57:52
+ 07-OCT-1943 02:57:52
+ 07-OCT-1943 02:57:52.0
+ 07-OCT-1943 02:57:52.02
+ 07-OCT-1943 02:57:52.016
+ 07-OCT-1943 02:57:52.0156
+ 07-OCT-1943 02:57:52.01565
+ 17-MAR-92 | 17-MAR-1992
+ 03/17/92 | 03/17/1992
+ 17.03.92 | 17.03.1992
+ 92077 | 1992077
+ 92/03/17 | 1992/03/17
+ 1 Q 92 | 1 Q 1992
+ MAR 92 | MAR 1992
+ 11 WK 92 | 11 WK 1992
+ 17-MAR-1992 16:45
+ 17-MAR-1992 16:45
+ 17-MAR-1992 16:45
+ 17-MAR-1992 16:45:44
+ 17-MAR-1992 16:45:44
+ 17-MAR-1992 16:45:44
+ 17-MAR-1992 16:45:44.9
+ 17-MAR-1992 16:45:44.87
+ 17-MAR-1992 16:45:44.865
+ 17-MAR-1992 16:45:44.8653
+ 17-MAR-1992 16:45:44.86529
+ 25-FEB-96 | 25-FEB-1996
+ 02/25/96 | 02/25/1996
+ 25.02.96 | 25.02.1996
+ 96056 | 1996056
+ 96/02/25 | 1996/02/25
+ 1 Q 96 | 1 Q 1996
+ FEB 96 | FEB 1996
+ 8 WK 96 | 8 WK 1996
+ 25-FEB-1996 21:30
+ 25-FEB-1996 21:30
+ 25-FEB-1996 21:30
+ 25-FEB-1996 21:30:57
+ 25-FEB-1996 21:30:57
+ 25-FEB-1996 21:30:57
+ 25-FEB-1996 21:30:57.8
+ 25-FEB-1996 21:30:57.82
+ 25-FEB-1996 21:30:57.820
+ 25-FEB-1996 21:30:57.8205
+ 25-FEB-1996 21:30:57.82047
+ 29-SEP-41 | 29-SEP-1941
+ 09/29/41 | 09/29/1941
+ 29.09.41 | 29.09.1941
+ 41272 | 1941272
+ 41/09/29 | 1941/09/29
+ 3 Q 41 | 3 Q 1941
+ SEP 41 | SEP 1941
+ 39 WK 41 | 39 WK 1941
+ 29-SEP-1941 04:25
+ 29-SEP-1941 04:25
+ 29-SEP-1941 04:25
+ 29-SEP-1941 04:25:09
+ 29-SEP-1941 04:25:09
+ 29-SEP-1941 04:25:09
+ 29-SEP-1941 04:25:09.2
+ 29-SEP-1941 04:25:09.15
+ 29-SEP-1941 04:25:09.154
+ 29-SEP-1941 04:25:09.1539
+ 29-SEP-1941 04:25:09.15395
+ 19-APR-43 | 19-APR-1943
+ 04/19/43 | 04/19/1943
+ 19.04.43 | 19.04.1943
+ 43109 | 1943109
+ 43/04/19 | 1943/04/19
+ 2 Q 43 | 2 Q 1943
+ APR 43 | APR 1943
+ 16 WK 43 | 16 WK 1943
+ 19-APR-1943 06:49
+ 19-APR-1943 06:49
+ 19-APR-1943 06:49
+ 19-APR-1943 06:49:27
+ 19-APR-1943 06:49:27
+ 19-APR-1943 06:49:27
+ 19-APR-1943 06:49:27.1
+ 19-APR-1943 06:49:27.11
+ 19-APR-1943 06:49:27.105
+ 19-APR-1943 06:49:27.1053
+ 19-APR-1943 06:49:27.10533
+ 07-OCT-43 | 07-OCT-1943
+ 10/07/43 | 10/07/1943
+ 07.10.43 | 07.10.1943
+ 43280 | 1943280
+ 43/10/07 | 1943/10/07
+ 4 Q 43 | 4 Q 1943
+ OCT 43 | OCT 1943
+ 40 WK 43 | 40 WK 1943
+ 07-OCT-1943 02:57
+ 07-OCT-1943 02:57
+ 07-OCT-1943 02:57
+ 07-OCT-1943 02:57:52
+ 07-OCT-1943 02:57:52
+ 07-OCT-1943 02:57:52
+ 07-OCT-1943 02:57:52.5
+ 07-OCT-1943 02:57:52.48
+ 07-OCT-1943 02:57:52.482
+ 07-OCT-1943 02:57:52.4823
+ 07-OCT-1943 02:57:52.48229
+ 17-MAR-92 | 17-MAR-1992
+ 03/17/92 | 03/17/1992
+ 17.03.92 | 17.03.1992
+ 92077 | 1992077
+ 92/03/17 | 1992/03/17
+ 1 Q 92 | 1 Q 1992
+ MAR 92 | MAR 1992
+ 11 WK 92 | 11 WK 1992
+ 17-MAR-1992 16:45
+ 17-MAR-1992 16:45
+ 17-MAR-1992 16:45
+ 17-MAR-1992 16:45:44
+ 17-MAR-1992 16:45:44
+ 17-MAR-1992 16:45:44
+ 17-MAR-1992 16:45:44.7
+ 17-MAR-1992 16:45:44.66
+ 17-MAR-1992 16:45:44.658
+ 17-MAR-1992 16:45:44.6583
+ 17-MAR-1992 16:45:44.65827
+ 25-FEB-96 | 25-FEB-1996
+ 02/25/96 | 02/25/1996
+ 25.02.96 | 25.02.1996
+ 96056 | 1996056
+ 96/02/25 | 1996/02/25
+ 1 Q 96 | 1 Q 1996
+ FEB 96 | FEB 1996
+ 8 WK 96 | 8 WK 1996
+ 25-FEB-1996 21:30
+ 25-FEB-1996 21:30
+ 25-FEB-1996 21:30
+ 25-FEB-1996 21:30:57
+ 25-FEB-1996 21:30:57
+ 25-FEB-1996 21:30:57
+ 25-FEB-1996 21:30:57.6
+ 25-FEB-1996 21:30:57.58
+ 25-FEB-1996 21:30:57.582
+ 25-FEB-1996 21:30:57.5822
+ 25-FEB-1996 21:30:57.58219
+ ********* | 10-NOV-2038
+ ******** | 11/10/2038
+ ******** | 10.11.2038
+ ***** | 2038314
+ ******** | 2038/11/10
+ ****** | 4 Q 2038
+ ****** | NOV 2038
+ ******** | 45 WK 2038
+ 10-NOV-2038 22:30
+ 10-NOV-2038 22:30
+ 10-NOV-2038 22:30
+ 10-NOV-2038 22:30:04
+ 10-NOV-2038 22:30:04
+ 10-NOV-2038 22:30:04
+ 10-NOV-2038 22:30:04.2
+ 10-NOV-2038 22:30:04.18
+ 10-NOV-2038 22:30:04.183
+ 10-NOV-2038 22:30:04.1835
+ 10-NOV-2038 22:30:04.18347
+ ********* | 18-JUL-2094
+ ******** | 07/18/2094
+ ******** | 18.07.2094
+ ***** | 2094199
+ ******** | 2094/07/18
+ ****** | 3 Q 2094
+ ****** | JUL 2094
+ ******** | 29 WK 2094
+ 18-JUL-2094 01:56
+ 18-JUL-2094 01:56
+ 18-JUL-2094 01:56
+ 18-JUL-2094 01:56:51
+ 18-JUL-2094 01:56:51
+ 18-JUL-2094 01:56:51
+ 18-JUL-2094 01:56:51.6
+ 18-JUL-2094 01:56:51.59
+ 18-JUL-2094 01:56:51.593
+ 18-JUL-2094 01:56:51.5932
+ 18-JUL-2094 01:56:51.59319
+])
+AT_CLEANUP
+
+AT_SETUP([output invalid dates])
+AT_DATA([bad-date.sps], [dnl
+set epoch=1930.
+set errors=none.
+data list list notable/x.
+begin data.
+0
+-1
+3e11
+end data.
+print outfile='bad-date.out'/x(date9) ' | ' x(date11).
+print outfile='bad-date.out'/x(adate8) ' | ' x(adate10).
+print outfile='bad-date.out'/x(edate8) ' | ' x(edate10).
+print outfile='bad-date.out'/x(jdate5) ' | ' x(jdate7).
+print outfile='bad-date.out'/x(sdate8) ' | ' x(sdate10).
+print outfile='bad-date.out'/x(qyr6) ' | ' x(qyr8).
+print outfile='bad-date.out'/x(moyr6) ' | ' x(moyr8).
+print outfile='bad-date.out'/x(wkyr8) ' | ' x(wkyr10).
+print outfile='bad-date.out'/x(datetime17).
+print outfile='bad-date.out'/x(datetime18).
+print outfile='bad-date.out'/x(datetime19).
+print outfile='bad-date.out'/x(datetime20).
+print outfile='bad-date.out'/x(datetime21).
+print outfile='bad-date.out'/x(datetime22).
+print outfile='bad-date.out'/x(datetime22.1).
+print outfile='bad-date.out'/x(datetime23.2).
+print outfile='bad-date.out'/x(datetime24.3).
+print outfile='bad-date.out'/x(datetime25.4).
+print outfile='bad-date.out'/x(datetime26.5).
+execute.
+])
+AT_CHECK([pspp -O format=csv bad-date.sps])
+AT_CHECK([cat bad-date.out], [0], [dnl
+ . | .
+ . | .
+ . | .
+ . | .
+ . | .
+ . | .
+ . | .
+ . | .
+ .
+ .
+ .
+ .
+ .
+ .
+ . @&t@
+ . @&t@
+ . @&t@
+ . @&t@
+ . @&t@
+ . | .
+ . | .
+ . | .
+ . | .
+ . | .
+ . | .
+ . | .
+ . | .
+ .
+ .
+ .
+ .
+ .
+ .
+ . @&t@
+ . @&t@
+ . @&t@
+ . @&t@
+ . @&t@
+ ********* | ***********
+ ******** | **********
+ ******** | **********
+ ***** | *******
+ ******** | **********
+ ****** | ********
+ ****** | ********
+ ******** | **********
+ 28-MAY-**** 05:20
+ 28-MAY-**** 05:20
+ 28-MAY-**** 05:20
+ 28-MAY-**** 05:20:00
+ 28-MAY-**** 05:20:00
+ 28-MAY-**** 05:20:00
+ 28-MAY-**** 05:20:00.0
+ 28-MAY-**** 05:20:00.00
+ 28-MAY-**** 05:20:00.000
+ 28-MAY-**** 05:20:00.0000
+ 28-MAY-**** 05:20:00.00000
+])
+AT_CLEANUP
+
+AT_SETUP([time output])
+AT_DATA([time-out.sps], [dnl
+set epoch=1930.
+data list notable /x 1-30 (dtime).
+begin data.
+0 0:0:0
+0 4:50:38.12301
+0 12:31:35.23453
+0 12:47:53.34505
+0 1:26:0.45615
+0 20:58:11.56677
+0 7:36:5.18964
+0 15:43:49.83132
+0 4:25:9.01293
+0 6:49:27.52375
+0 2:57:52.01565
+0 16:45:44.86529
+0 21:30:57.82047
+0 4:25:9.15395
+0 6:49:27.10533
+0 2:57:52.48229
+0 16:45:44.65827
+0 21:30:57.58219
+0 22:30:4.18347
+0 1:56:51.59319
+1 0:0:0
+1 4:50:38.12301
+1 12:31:35.23453
+1 12:47:53.34505
+1 1:26:0.45615
+1 20:58:11.56677
+1 7:36:5.18964
+1 15:43:49.83132
+1 4:25:9.01293
+1 6:49:27.52375
+1 2:57:52.01565
+1 16:45:44.86529
+1 21:30:57.82047
+1 4:25:9.15395
+1 6:49:27.10533
+1 2:57:52.48229
+1 16:45:44.65827
+1 21:30:57.58219
+1 22:30:4.18347
+1 1:56:51.59319
+2 0:0:0
+2 4:50:38.12301
+2 12:31:35.23453
+2 12:47:53.34505
+2 1:26:0.45615
+2 20:58:11.56677
+2 7:36:5.18964
+2 15:43:49.83132
+2 4:25:9.01293
+2 6:49:27.52375
+2 2:57:52.01565
+2 16:45:44.86529
+2 21:30:57.82047
+2 4:25:9.15395
+2 6:49:27.10533
+2 2:57:52.48229
+2 16:45:44.65827
+2 21:30:57.58219
+2 22:30:4.18347
+2 1:56:51.59319
+54 0:0:0
+54 4:50:38.12301
+54 12:31:35.23453
+54 12:47:53.34505
+54 1:26:0.45615
+54 20:58:11.56677
+54 7:36:5.18964
+54 15:43:49.83132
+54 4:25:9.01293
+54 6:49:27.52375
+54 2:57:52.01565
+54 16:45:44.86529
+54 21:30:57.82047
+54 4:25:9.15395
+54 6:49:27.10533
+54 2:57:52.48229
+54 16:45:44.65827
+54 21:30:57.58219
+54 22:30:4.18347
+54 1:56:51.59319
+681 0:0:0
+681 4:50:38.12301
+681 12:31:35.23453
+681 12:47:53.34505
+681 1:26:0.45615
+681 20:58:11.56677
+681 7:36:5.18964
+681 15:43:49.83132
+681 4:25:9.01293
+681 6:49:27.52375
+681 2:57:52.01565
+681 16:45:44.86529
+681 21:30:57.82047
+681 4:25:9.15395
+681 6:49:27.10533
+681 2:57:52.48229
+681 16:45:44.65827
+681 21:30:57.58219
+681 22:30:4.18347
+681 1:56:51.59319
+-0 0:0:0
+-0 4:50:38.12301
+-0 12:31:35.23453
+-0 12:47:53.34505
+-0 1:26:0.45615
+-0 20:58:11.56677
+-0 7:36:5.18964
+-0 15:43:49.83132
+-0 4:25:9.01293
+-0 6:49:27.52375
+-0 2:57:52.01565
+-0 16:45:44.86529
+-0 21:30:57.82047
+-0 4:25:9.15395
+-0 6:49:27.10533
+-0 2:57:52.48229
+-0 16:45:44.65827
+-0 21:30:57.58219
+-0 22:30:4.18347
+-0 1:56:51.59319
+-1 0:0:0
+-1 4:50:38.12301
+-1 12:31:35.23453
+-1 12:47:53.34505
+-1 1:26:0.45615
+-1 20:58:11.56677
+-1 7:36:5.18964
+-1 15:43:49.83132
+-1 4:25:9.01293
+-1 6:49:27.52375
+-1 2:57:52.01565
+-1 16:45:44.86529
+-1 21:30:57.82047
+-1 4:25:9.15395
+-1 6:49:27.10533
+-1 2:57:52.48229
+-1 16:45:44.65827
+-1 21:30:57.58219
+-1 22:30:4.18347
+-1 1:56:51.59319
+-2 0:0:0
+-2 4:50:38.12301
+-2 12:31:35.23453
+-2 12:47:53.34505
+-2 1:26:0.45615
+-2 20:58:11.56677
+-2 7:36:5.18964
+-2 15:43:49.83132
+-2 4:25:9.01293
+-2 6:49:27.52375
+-2 2:57:52.01565
+-2 16:45:44.86529
+-2 21:30:57.82047
+-2 4:25:9.15395
+-2 6:49:27.10533
+-2 2:57:52.48229
+-2 16:45:44.65827
+-2 21:30:57.58219
+-2 22:30:4.18347
+-2 1:56:51.59319
+-54 0:0:0
+-54 4:50:38.12301
+-54 12:31:35.23453
+-54 12:47:53.34505
+-54 1:26:0.45615
+-54 20:58:11.56677
+-54 7:36:5.18964
+-54 15:43:49.83132
+-54 4:25:9.01293
+-54 6:49:27.52375
+-54 2:57:52.01565
+-54 16:45:44.86529
+-54 21:30:57.82047
+-54 4:25:9.15395
+-54 6:49:27.10533
+-54 2:57:52.48229
+-54 16:45:44.65827
+-54 21:30:57.58219
+-54 22:30:4.18347
+-54 1:56:51.59319
+-681 0:0:0
+-681 4:50:38.12301
+-681 12:31:35.23453
+-681 12:47:53.34505
+-681 1:26:0.45615
+-681 20:58:11.56677
+-681 7:36:5.18964
+-681 15:43:49.83132
+-681 4:25:9.01293
+-681 6:49:27.52375
+-681 2:57:52.01565
+-681 16:45:44.86529
+-681 21:30:57.82047
+-681 4:25:9.15395
+-681 6:49:27.10533
+-681 2:57:52.48229
+-681 16:45:44.65827
+-681 21:30:57.58219
+-681 22:30:4.18347
+-681 1:56:51.59319
+end data.
+print outfile='time-out.out'/x(time5).
+print outfile='time-out.out'/x(time6).
+print outfile='time-out.out'/x(time7).
+print outfile='time-out.out'/x(time8).
+print outfile='time-out.out'/x(time9).
+print outfile='time-out.out'/x(time10).
+print outfile='time-out.out'/x(time10.1).
+print outfile='time-out.out'/x(time11).
+print outfile='time-out.out'/x(time11.1).
+print outfile='time-out.out'/x(time11.2).
+print outfile='time-out.out'/x(time12).
+print outfile='time-out.out'/x(time12.1).
+print outfile='time-out.out'/x(time12.2).
+print outfile='time-out.out'/x(time12.3).
+print outfile='time-out.out'/x(time13).
+print outfile='time-out.out'/x(time13.1).
+print outfile='time-out.out'/x(time13.2).
+print outfile='time-out.out'/x(time13.3).
+print outfile='time-out.out'/x(time13.4).
+print outfile='time-out.out'/x(time14).
+print outfile='time-out.out'/x(time14.1).
+print outfile='time-out.out'/x(time14.2).
+print outfile='time-out.out'/x(time14.3).
+print outfile='time-out.out'/x(time14.4).
+print outfile='time-out.out'/x(time14.5).
+print outfile='time-out.out'/x(time15).
+print outfile='time-out.out'/x(time15.1).
+print outfile='time-out.out'/x(time15.2).
+print outfile='time-out.out'/x(time15.3).
+print outfile='time-out.out'/x(time15.4).
+print outfile='time-out.out'/x(time15.5).
+print outfile='time-out.out'/x(time15.6).
+print outfile='time-out.out'/x(dtime8).
+print outfile='time-out.out'/x(dtime9).
+print outfile='time-out.out'/x(dtime10).
+print outfile='time-out.out'/x(dtime11).
+print outfile='time-out.out'/x(dtime12).
+print outfile='time-out.out'/x(dtime13).
+print outfile='time-out.out'/x(dtime13.1).
+print outfile='time-out.out'/x(dtime14).
+print outfile='time-out.out'/x(dtime14.1).
+print outfile='time-out.out'/x(dtime14.2).
+print outfile='time-out.out'/x(dtime15).
+print outfile='time-out.out'/x(dtime15.1).
+print outfile='time-out.out'/x(dtime15.2).
+print outfile='time-out.out'/x(dtime15.3).
+print outfile='time-out.out'/x(dtime16).
+print outfile='time-out.out'/x(dtime16.1).
+print outfile='time-out.out'/x(dtime16.2).
+print outfile='time-out.out'/x(dtime16.3).
+print outfile='time-out.out'/x(dtime16.4).
+print outfile='time-out.out'/x(dtime17).
+print outfile='time-out.out'/x(dtime17.1).
+print outfile='time-out.out'/x(dtime17.2).
+print outfile='time-out.out'/x(dtime17.3).
+print outfile='time-out.out'/x(dtime17.4).
+print outfile='time-out.out'/x(dtime17.5).
+print outfile='time-out.out'/x(dtime18).
+print outfile='time-out.out'/x(dtime18.1).
+print outfile='time-out.out'/x(dtime18.2).
+print outfile='time-out.out'/x(dtime18.3).
+print outfile='time-out.out'/x(dtime18.4).
+print outfile='time-out.out'/x(dtime18.5).
+print outfile='time-out.out'/x(dtime18.6).
+execute.
+])
+AT_CHECK([pspp -O format=csv time-out.sps])
+AT_CHECK([cat time-out.out], [0], [dnl
+ 0:00
+ 0:00
+ 0:00:00
+ 0:00:00
+ 0:00:00
+ 0:00:00
+ 0:00:00.0
+ 0:00:00
+ 0:00:00.0
+ 0:00:00.00
+ 0:00:00
+ 0:00:00.0
+ 0:00:00.00
+ 0:00:00.000
+ 0:00:00
+ 0:00:00.0
+ 0:00:00.00
+ 0:00:00.000
+ 0:00:00.0000
+ 0:00:00
+ 0:00:00.0
+ 0:00:00.00
+ 0:00:00.000
+ 0:00:00.0000
+ 0:00:00.00000
+ 0:00:00
+ 0:00:00.0
+ 0:00:00.00
+ 0:00:00.000
+ 0:00:00.0000
+ 0:00:00.00000
+ 0:00:00.000000
+ 0 00:00
+ 0 00:00
+ 0 00:00:00
+ 0 00:00:00
+ 0 00:00:00
+ 0 00:00:00
+ 0 00:00:00.0
+ 0 00:00:00
+ 0 00:00:00.0
+ 0 00:00:00.00
+ 0 00:00:00
+ 0 00:00:00.0
+ 0 00:00:00.00
+ 0 00:00:00.000
+ 0 00:00:00
+ 0 00:00:00.0
+ 0 00:00:00.00
+ 0 00:00:00.000
+ 0 00:00:00.0000
+ 0 00:00:00
+ 0 00:00:00.0
+ 0 00:00:00.00
+ 0 00:00:00.000
+ 0 00:00:00.0000
+ 0 00:00:00.00000
+ 0 00:00:00
+ 0 00:00:00.0
+ 0 00:00:00.00
+ 0 00:00:00.000
+ 0 00:00:00.0000
+ 0 00:00:00.00000
+ 0 00:00:00.000000
+ 4:50
+ 4:50
+ 4:50:38
+ 4:50:38
+ 4:50:38
+ 4:50:38
+ 4:50:38.1
+ 4:50:38
+ 4:50:38.1
+ 4:50:38.12
+ 4:50:38
+ 4:50:38.1
+ 4:50:38.12
+ 4:50:38.123
+ 4:50:38
+ 4:50:38.1
+ 4:50:38.12
+ 4:50:38.123
+ 4:50:38.1230
+ 4:50:38
+ 4:50:38.1
+ 4:50:38.12
+ 4:50:38.123
+ 4:50:38.1230
+ 4:50:38.12301
+ 4:50:38
+ 4:50:38.1
+ 4:50:38.12
+ 4:50:38.123
+ 4:50:38.1230
+ 4:50:38.12301
+ 4:50:38.123010
+ 0 04:50
+ 0 04:50
+ 0 04:50:38
+ 0 04:50:38
+ 0 04:50:38
+ 0 04:50:38
+ 0 04:50:38.1
+ 0 04:50:38
+ 0 04:50:38.1
+ 0 04:50:38.12
+ 0 04:50:38
+ 0 04:50:38.1
+ 0 04:50:38.12
+ 0 04:50:38.123
+ 0 04:50:38
+ 0 04:50:38.1
+ 0 04:50:38.12
+ 0 04:50:38.123
+ 0 04:50:38.1230
+ 0 04:50:38
+ 0 04:50:38.1
+ 0 04:50:38.12
+ 0 04:50:38.123
+ 0 04:50:38.1230
+ 0 04:50:38.12301
+ 0 04:50:38
+ 0 04:50:38.1
+ 0 04:50:38.12
+ 0 04:50:38.123
+ 0 04:50:38.1230
+ 0 04:50:38.12301
+ 0 04:50:38.123010
+ 12:31
+ 12:31
+ 12:31
+ 12:31:35
+ 12:31:35
+ 12:31:35
+ 12:31:35.2
+ 12:31:35
+ 12:31:35.2
+ 12:31:35.23
+ 12:31:35
+ 12:31:35.2
+ 12:31:35.23
+ 12:31:35.235
+ 12:31:35
+ 12:31:35.2
+ 12:31:35.23
+ 12:31:35.235
+ 12:31:35.2345
+ 12:31:35
+ 12:31:35.2
+ 12:31:35.23
+ 12:31:35.235
+ 12:31:35.2345
+ 12:31:35.23453
+ 12:31:35
+ 12:31:35.2
+ 12:31:35.23
+ 12:31:35.235
+ 12:31:35.2345
+ 12:31:35.23453
+ 12:31:35.234530
+ 0 12:31
+ 0 12:31
+ 0 12:31:35
+ 0 12:31:35
+ 0 12:31:35
+ 0 12:31:35
+ 0 12:31:35.2
+ 0 12:31:35
+ 0 12:31:35.2
+ 0 12:31:35.23
+ 0 12:31:35
+ 0 12:31:35.2
+ 0 12:31:35.23
+ 0 12:31:35.235
+ 0 12:31:35
+ 0 12:31:35.2
+ 0 12:31:35.23
+ 0 12:31:35.235
+ 0 12:31:35.2345
+ 0 12:31:35
+ 0 12:31:35.2
+ 0 12:31:35.23
+ 0 12:31:35.235
+ 0 12:31:35.2345
+ 0 12:31:35.23453
+ 0 12:31:35
+ 0 12:31:35.2
+ 0 12:31:35.23
+ 0 12:31:35.235
+ 0 12:31:35.2345
+ 0 12:31:35.23453
+ 0 12:31:35.234530
+ 12:47
+ 12:47
+ 12:47
+ 12:47:53
+ 12:47:53
+ 12:47:53
+ 12:47:53.3
+ 12:47:53
+ 12:47:53.3
+ 12:47:53.35
+ 12:47:53
+ 12:47:53.3
+ 12:47:53.35
+ 12:47:53.345
+ 12:47:53
+ 12:47:53.3
+ 12:47:53.35
+ 12:47:53.345
+ 12:47:53.3451
+ 12:47:53
+ 12:47:53.3
+ 12:47:53.35
+ 12:47:53.345
+ 12:47:53.3451
+ 12:47:53.34505
+ 12:47:53
+ 12:47:53.3
+ 12:47:53.35
+ 12:47:53.345
+ 12:47:53.3451
+ 12:47:53.34505
+ 12:47:53.345050
+ 0 12:47
+ 0 12:47
+ 0 12:47:53
+ 0 12:47:53
+ 0 12:47:53
+ 0 12:47:53
+ 0 12:47:53.3
+ 0 12:47:53
+ 0 12:47:53.3
+ 0 12:47:53.35
+ 0 12:47:53
+ 0 12:47:53.3
+ 0 12:47:53.35
+ 0 12:47:53.345
+ 0 12:47:53
+ 0 12:47:53.3
+ 0 12:47:53.35
+ 0 12:47:53.345
+ 0 12:47:53.3451
+ 0 12:47:53
+ 0 12:47:53.3
+ 0 12:47:53.35
+ 0 12:47:53.345
+ 0 12:47:53.3451
+ 0 12:47:53.34505
+ 0 12:47:53
+ 0 12:47:53.3
+ 0 12:47:53.35
+ 0 12:47:53.345
+ 0 12:47:53.3451
+ 0 12:47:53.34505
+ 0 12:47:53.345050
+ 1:26
+ 1:26
+ 1:26:00
+ 1:26:00
+ 1:26:00
+ 1:26:00
+ 1:26:00.5
+ 1:26:00
+ 1:26:00.5
+ 1:26:00.46
+ 1:26:00
+ 1:26:00.5
+ 1:26:00.46
+ 1:26:00.456
+ 1:26:00
+ 1:26:00.5
+ 1:26:00.46
+ 1:26:00.456
+ 1:26:00.4561
+ 1:26:00
+ 1:26:00.5
+ 1:26:00.46
+ 1:26:00.456
+ 1:26:00.4561
+ 1:26:00.45615
+ 1:26:00
+ 1:26:00.5
+ 1:26:00.46
+ 1:26:00.456
+ 1:26:00.4561
+ 1:26:00.45615
+ 1:26:00.456150
+ 0 01:26
+ 0 01:26
+ 0 01:26:00
+ 0 01:26:00
+ 0 01:26:00
+ 0 01:26:00
+ 0 01:26:00.5
+ 0 01:26:00
+ 0 01:26:00.5
+ 0 01:26:00.46
+ 0 01:26:00
+ 0 01:26:00.5
+ 0 01:26:00.46
+ 0 01:26:00.456
+ 0 01:26:00
+ 0 01:26:00.5
+ 0 01:26:00.46
+ 0 01:26:00.456
+ 0 01:26:00.4561
+ 0 01:26:00
+ 0 01:26:00.5
+ 0 01:26:00.46
+ 0 01:26:00.456
+ 0 01:26:00.4561
+ 0 01:26:00.45615
+ 0 01:26:00
+ 0 01:26:00.5
+ 0 01:26:00.46
+ 0 01:26:00.456
+ 0 01:26:00.4561
+ 0 01:26:00.45615
+ 0 01:26:00.456150
+ 20:58
+ 20:58
+ 20:58
+ 20:58:11
+ 20:58:11
+ 20:58:11
+ 20:58:11.6
+ 20:58:11
+ 20:58:11.6
+ 20:58:11.57
+ 20:58:11
+ 20:58:11.6
+ 20:58:11.57
+ 20:58:11.567
+ 20:58:11
+ 20:58:11.6
+ 20:58:11.57
+ 20:58:11.567
+ 20:58:11.5668
+ 20:58:11
+ 20:58:11.6
+ 20:58:11.57
+ 20:58:11.567
+ 20:58:11.5668
+ 20:58:11.56677
+ 20:58:11
+ 20:58:11.6
+ 20:58:11.57
+ 20:58:11.567
+ 20:58:11.5668
+ 20:58:11.56677
+ 20:58:11.566770
+ 0 20:58
+ 0 20:58
+ 0 20:58:11
+ 0 20:58:11
+ 0 20:58:11
+ 0 20:58:11
+ 0 20:58:11.6
+ 0 20:58:11
+ 0 20:58:11.6
+ 0 20:58:11.57
+ 0 20:58:11
+ 0 20:58:11.6
+ 0 20:58:11.57
+ 0 20:58:11.567
+ 0 20:58:11
+ 0 20:58:11.6
+ 0 20:58:11.57
+ 0 20:58:11.567
+ 0 20:58:11.5668
+ 0 20:58:11
+ 0 20:58:11.6
+ 0 20:58:11.57
+ 0 20:58:11.567
+ 0 20:58:11.5668
+ 0 20:58:11.56677
+ 0 20:58:11
+ 0 20:58:11.6
+ 0 20:58:11.57
+ 0 20:58:11.567
+ 0 20:58:11.5668
+ 0 20:58:11.56677
+ 0 20:58:11.566770
+ 7:36
+ 7:36
+ 7:36:05
+ 7:36:05
+ 7:36:05
+ 7:36:05
+ 7:36:05.2
+ 7:36:05
+ 7:36:05.2
+ 7:36:05.19
+ 7:36:05
+ 7:36:05.2
+ 7:36:05.19
+ 7:36:05.190
+ 7:36:05
+ 7:36:05.2
+ 7:36:05.19
+ 7:36:05.190
+ 7:36:05.1896
+ 7:36:05
+ 7:36:05.2
+ 7:36:05.19
+ 7:36:05.190
+ 7:36:05.1896
+ 7:36:05.18964
+ 7:36:05
+ 7:36:05.2
+ 7:36:05.19
+ 7:36:05.190
+ 7:36:05.1896
+ 7:36:05.18964
+ 7:36:05.189640
+ 0 07:36
+ 0 07:36
+ 0 07:36:05
+ 0 07:36:05
+ 0 07:36:05
+ 0 07:36:05
+ 0 07:36:05.2
+ 0 07:36:05
+ 0 07:36:05.2
+ 0 07:36:05.19
+ 0 07:36:05
+ 0 07:36:05.2
+ 0 07:36:05.19
+ 0 07:36:05.190
+ 0 07:36:05
+ 0 07:36:05.2
+ 0 07:36:05.19
+ 0 07:36:05.190
+ 0 07:36:05.1896
+ 0 07:36:05
+ 0 07:36:05.2
+ 0 07:36:05.19
+ 0 07:36:05.190
+ 0 07:36:05.1896
+ 0 07:36:05.18964
+ 0 07:36:05
+ 0 07:36:05.2
+ 0 07:36:05.19
+ 0 07:36:05.190
+ 0 07:36:05.1896
+ 0 07:36:05.18964
+ 0 07:36:05.189640
+ 15:43
+ 15:43
+ 15:43
+ 15:43:49
+ 15:43:49
+ 15:43:49
+ 15:43:49.8
+ 15:43:49
+ 15:43:49.8
+ 15:43:49.83
+ 15:43:49
+ 15:43:49.8
+ 15:43:49.83
+ 15:43:49.831
+ 15:43:49
+ 15:43:49.8
+ 15:43:49.83
+ 15:43:49.831
+ 15:43:49.8313
+ 15:43:49
+ 15:43:49.8
+ 15:43:49.83
+ 15:43:49.831
+ 15:43:49.8313
+ 15:43:49.83132
+ 15:43:49
+ 15:43:49.8
+ 15:43:49.83
+ 15:43:49.831
+ 15:43:49.8313
+ 15:43:49.83132
+ 15:43:49.831320
+ 0 15:43
+ 0 15:43
+ 0 15:43:49
+ 0 15:43:49
+ 0 15:43:49
+ 0 15:43:49
+ 0 15:43:49.8
+ 0 15:43:49
+ 0 15:43:49.8
+ 0 15:43:49.83
+ 0 15:43:49
+ 0 15:43:49.8
+ 0 15:43:49.83
+ 0 15:43:49.831
+ 0 15:43:49
+ 0 15:43:49.8
+ 0 15:43:49.83
+ 0 15:43:49.831
+ 0 15:43:49.8313
+ 0 15:43:49
+ 0 15:43:49.8
+ 0 15:43:49.83
+ 0 15:43:49.831
+ 0 15:43:49.8313
+ 0 15:43:49.83132
+ 0 15:43:49
+ 0 15:43:49.8
+ 0 15:43:49.83
+ 0 15:43:49.831
+ 0 15:43:49.8313
+ 0 15:43:49.83132
+ 0 15:43:49.831320
+ 4:25
+ 4:25
+ 4:25:09
+ 4:25:09
+ 4:25:09
+ 4:25:09
+ 4:25:09.0
+ 4:25:09
+ 4:25:09.0
+ 4:25:09.01
+ 4:25:09
+ 4:25:09.0
+ 4:25:09.01
+ 4:25:09.013
+ 4:25:09
+ 4:25:09.0
+ 4:25:09.01
+ 4:25:09.013
+ 4:25:09.0129
+ 4:25:09
+ 4:25:09.0
+ 4:25:09.01
+ 4:25:09.013
+ 4:25:09.0129
+ 4:25:09.01293
+ 4:25:09
+ 4:25:09.0
+ 4:25:09.01
+ 4:25:09.013
+ 4:25:09.0129
+ 4:25:09.01293
+ 4:25:09.012930
+ 0 04:25
+ 0 04:25
+ 0 04:25:09
+ 0 04:25:09
+ 0 04:25:09
+ 0 04:25:09
+ 0 04:25:09.0
+ 0 04:25:09
+ 0 04:25:09.0
+ 0 04:25:09.01
+ 0 04:25:09
+ 0 04:25:09.0
+ 0 04:25:09.01
+ 0 04:25:09.013
+ 0 04:25:09
+ 0 04:25:09.0
+ 0 04:25:09.01
+ 0 04:25:09.013
+ 0 04:25:09.0129
+ 0 04:25:09
+ 0 04:25:09.0
+ 0 04:25:09.01
+ 0 04:25:09.013
+ 0 04:25:09.0129
+ 0 04:25:09.01293
+ 0 04:25:09
+ 0 04:25:09.0
+ 0 04:25:09.01
+ 0 04:25:09.013
+ 0 04:25:09.0129
+ 0 04:25:09.01293
+ 0 04:25:09.012930
+ 6:49
+ 6:49
+ 6:49:27
+ 6:49:27
+ 6:49:27
+ 6:49:27
+ 6:49:27.5
+ 6:49:27
+ 6:49:27.5
+ 6:49:27.52
+ 6:49:27
+ 6:49:27.5
+ 6:49:27.52
+ 6:49:27.524
+ 6:49:27
+ 6:49:27.5
+ 6:49:27.52
+ 6:49:27.524
+ 6:49:27.5238
+ 6:49:27
+ 6:49:27.5
+ 6:49:27.52
+ 6:49:27.524
+ 6:49:27.5238
+ 6:49:27.52375
+ 6:49:27
+ 6:49:27.5
+ 6:49:27.52
+ 6:49:27.524
+ 6:49:27.5238
+ 6:49:27.52375
+ 6:49:27.523750
+ 0 06:49
+ 0 06:49
+ 0 06:49:27
+ 0 06:49:27
+ 0 06:49:27
+ 0 06:49:27
+ 0 06:49:27.5
+ 0 06:49:27
+ 0 06:49:27.5
+ 0 06:49:27.52
+ 0 06:49:27
+ 0 06:49:27.5
+ 0 06:49:27.52
+ 0 06:49:27.524
+ 0 06:49:27
+ 0 06:49:27.5
+ 0 06:49:27.52
+ 0 06:49:27.524
+ 0 06:49:27.5238
+ 0 06:49:27
+ 0 06:49:27.5
+ 0 06:49:27.52
+ 0 06:49:27.524
+ 0 06:49:27.5238
+ 0 06:49:27.52375
+ 0 06:49:27
+ 0 06:49:27.5
+ 0 06:49:27.52
+ 0 06:49:27.524
+ 0 06:49:27.5238
+ 0 06:49:27.52375
+ 0 06:49:27.523750
+ 2:57
+ 2:57
+ 2:57:52
+ 2:57:52
+ 2:57:52
+ 2:57:52
+ 2:57:52.0
+ 2:57:52
+ 2:57:52.0
+ 2:57:52.02
+ 2:57:52
+ 2:57:52.0
+ 2:57:52.02
+ 2:57:52.016
+ 2:57:52
+ 2:57:52.0
+ 2:57:52.02
+ 2:57:52.016
+ 2:57:52.0156
+ 2:57:52
+ 2:57:52.0
+ 2:57:52.02
+ 2:57:52.016
+ 2:57:52.0156
+ 2:57:52.01565
+ 2:57:52
+ 2:57:52.0
+ 2:57:52.02
+ 2:57:52.016
+ 2:57:52.0156
+ 2:57:52.01565
+ 2:57:52.015650
+ 0 02:57
+ 0 02:57
+ 0 02:57:52
+ 0 02:57:52
+ 0 02:57:52
+ 0 02:57:52
+ 0 02:57:52.0
+ 0 02:57:52
+ 0 02:57:52.0
+ 0 02:57:52.02
+ 0 02:57:52
+ 0 02:57:52.0
+ 0 02:57:52.02
+ 0 02:57:52.016
+ 0 02:57:52
+ 0 02:57:52.0
+ 0 02:57:52.02
+ 0 02:57:52.016
+ 0 02:57:52.0156
+ 0 02:57:52
+ 0 02:57:52.0
+ 0 02:57:52.02
+ 0 02:57:52.016
+ 0 02:57:52.0156
+ 0 02:57:52.01565
+ 0 02:57:52
+ 0 02:57:52.0
+ 0 02:57:52.02
+ 0 02:57:52.016
+ 0 02:57:52.0156
+ 0 02:57:52.01565
+ 0 02:57:52.015650
+ 16:45
+ 16:45
+ 16:45
+ 16:45:44
+ 16:45:44
+ 16:45:44
+ 16:45:44.9
+ 16:45:44
+ 16:45:44.9
+ 16:45:44.87
+ 16:45:44
+ 16:45:44.9
+ 16:45:44.87
+ 16:45:44.865
+ 16:45:44
+ 16:45:44.9
+ 16:45:44.87
+ 16:45:44.865
+ 16:45:44.8653
+ 16:45:44
+ 16:45:44.9
+ 16:45:44.87
+ 16:45:44.865
+ 16:45:44.8653
+ 16:45:44.86529
+ 16:45:44
+ 16:45:44.9
+ 16:45:44.87
+ 16:45:44.865
+ 16:45:44.8653
+ 16:45:44.86529
+ 16:45:44.865290
+ 0 16:45
+ 0 16:45
+ 0 16:45:44
+ 0 16:45:44
+ 0 16:45:44
+ 0 16:45:44
+ 0 16:45:44.9
+ 0 16:45:44
+ 0 16:45:44.9
+ 0 16:45:44.87
+ 0 16:45:44
+ 0 16:45:44.9
+ 0 16:45:44.87
+ 0 16:45:44.865
+ 0 16:45:44
+ 0 16:45:44.9
+ 0 16:45:44.87
+ 0 16:45:44.865
+ 0 16:45:44.8653
+ 0 16:45:44
+ 0 16:45:44.9
+ 0 16:45:44.87
+ 0 16:45:44.865
+ 0 16:45:44.8653
+ 0 16:45:44.86529
+ 0 16:45:44
+ 0 16:45:44.9
+ 0 16:45:44.87
+ 0 16:45:44.865
+ 0 16:45:44.8653
+ 0 16:45:44.86529
+ 0 16:45:44.865290
+ 21:30
+ 21:30
+ 21:30
+ 21:30:57
+ 21:30:57
+ 21:30:57
+ 21:30:57.8
+ 21:30:57
+ 21:30:57.8
+ 21:30:57.82
+ 21:30:57
+ 21:30:57.8
+ 21:30:57.82
+ 21:30:57.820
+ 21:30:57
+ 21:30:57.8
+ 21:30:57.82
+ 21:30:57.820
+ 21:30:57.8205
+ 21:30:57
+ 21:30:57.8
+ 21:30:57.82
+ 21:30:57.820
+ 21:30:57.8205
+ 21:30:57.82047
+ 21:30:57
+ 21:30:57.8
+ 21:30:57.82
+ 21:30:57.820
+ 21:30:57.8205
+ 21:30:57.82047
+ 21:30:57.820470
+ 0 21:30
+ 0 21:30
+ 0 21:30:57
+ 0 21:30:57
+ 0 21:30:57
+ 0 21:30:57
+ 0 21:30:57.8
+ 0 21:30:57
+ 0 21:30:57.8
+ 0 21:30:57.82
+ 0 21:30:57
+ 0 21:30:57.8
+ 0 21:30:57.82
+ 0 21:30:57.820
+ 0 21:30:57
+ 0 21:30:57.8
+ 0 21:30:57.82
+ 0 21:30:57.820
+ 0 21:30:57.8205
+ 0 21:30:57
+ 0 21:30:57.8
+ 0 21:30:57.82
+ 0 21:30:57.820
+ 0 21:30:57.8205
+ 0 21:30:57.82047
+ 0 21:30:57
+ 0 21:30:57.8
+ 0 21:30:57.82
+ 0 21:30:57.820
+ 0 21:30:57.8205
+ 0 21:30:57.82047
+ 0 21:30:57.820470
+ 4:25
+ 4:25
+ 4:25:09
+ 4:25:09
+ 4:25:09
+ 4:25:09
+ 4:25:09.2
+ 4:25:09
+ 4:25:09.2
+ 4:25:09.15
+ 4:25:09
+ 4:25:09.2
+ 4:25:09.15
+ 4:25:09.154
+ 4:25:09
+ 4:25:09.2
+ 4:25:09.15
+ 4:25:09.154
+ 4:25:09.1539
+ 4:25:09
+ 4:25:09.2
+ 4:25:09.15
+ 4:25:09.154
+ 4:25:09.1539
+ 4:25:09.15395
+ 4:25:09
+ 4:25:09.2
+ 4:25:09.15
+ 4:25:09.154
+ 4:25:09.1539
+ 4:25:09.15395
+ 4:25:09.153950
+ 0 04:25
+ 0 04:25
+ 0 04:25:09
+ 0 04:25:09
+ 0 04:25:09
+ 0 04:25:09
+ 0 04:25:09.2
+ 0 04:25:09
+ 0 04:25:09.2
+ 0 04:25:09.15
+ 0 04:25:09
+ 0 04:25:09.2
+ 0 04:25:09.15
+ 0 04:25:09.154
+ 0 04:25:09
+ 0 04:25:09.2
+ 0 04:25:09.15
+ 0 04:25:09.154
+ 0 04:25:09.1539
+ 0 04:25:09
+ 0 04:25:09.2
+ 0 04:25:09.15
+ 0 04:25:09.154
+ 0 04:25:09.1539
+ 0 04:25:09.15395
+ 0 04:25:09
+ 0 04:25:09.2
+ 0 04:25:09.15
+ 0 04:25:09.154
+ 0 04:25:09.1539
+ 0 04:25:09.15395
+ 0 04:25:09.153950
+ 6:49
+ 6:49
+ 6:49:27
+ 6:49:27
+ 6:49:27
+ 6:49:27
+ 6:49:27.1
+ 6:49:27
+ 6:49:27.1
+ 6:49:27.11
+ 6:49:27
+ 6:49:27.1
+ 6:49:27.11
+ 6:49:27.105
+ 6:49:27
+ 6:49:27.1
+ 6:49:27.11
+ 6:49:27.105
+ 6:49:27.1053
+ 6:49:27
+ 6:49:27.1
+ 6:49:27.11
+ 6:49:27.105
+ 6:49:27.1053
+ 6:49:27.10533
+ 6:49:27
+ 6:49:27.1
+ 6:49:27.11
+ 6:49:27.105
+ 6:49:27.1053
+ 6:49:27.10533
+ 6:49:27.105330
+ 0 06:49
+ 0 06:49
+ 0 06:49:27
+ 0 06:49:27
+ 0 06:49:27
+ 0 06:49:27
+ 0 06:49:27.1
+ 0 06:49:27
+ 0 06:49:27.1
+ 0 06:49:27.11
+ 0 06:49:27
+ 0 06:49:27.1
+ 0 06:49:27.11
+ 0 06:49:27.105
+ 0 06:49:27
+ 0 06:49:27.1
+ 0 06:49:27.11
+ 0 06:49:27.105
+ 0 06:49:27.1053
+ 0 06:49:27
+ 0 06:49:27.1
+ 0 06:49:27.11
+ 0 06:49:27.105
+ 0 06:49:27.1053
+ 0 06:49:27.10533
+ 0 06:49:27
+ 0 06:49:27.1
+ 0 06:49:27.11
+ 0 06:49:27.105
+ 0 06:49:27.1053
+ 0 06:49:27.10533
+ 0 06:49:27.105330
+ 2:57
+ 2:57
+ 2:57:52
+ 2:57:52
+ 2:57:52
+ 2:57:52
+ 2:57:52.5
+ 2:57:52
+ 2:57:52.5
+ 2:57:52.48
+ 2:57:52
+ 2:57:52.5
+ 2:57:52.48
+ 2:57:52.482
+ 2:57:52
+ 2:57:52.5
+ 2:57:52.48
+ 2:57:52.482
+ 2:57:52.4823
+ 2:57:52
+ 2:57:52.5
+ 2:57:52.48
+ 2:57:52.482
+ 2:57:52.4823
+ 2:57:52.48229
+ 2:57:52
+ 2:57:52.5
+ 2:57:52.48
+ 2:57:52.482
+ 2:57:52.4823
+ 2:57:52.48229
+ 2:57:52.482290
+ 0 02:57
+ 0 02:57
+ 0 02:57:52
+ 0 02:57:52
+ 0 02:57:52
+ 0 02:57:52
+ 0 02:57:52.5
+ 0 02:57:52
+ 0 02:57:52.5
+ 0 02:57:52.48
+ 0 02:57:52
+ 0 02:57:52.5
+ 0 02:57:52.48
+ 0 02:57:52.482
+ 0 02:57:52
+ 0 02:57:52.5
+ 0 02:57:52.48
+ 0 02:57:52.482
+ 0 02:57:52.4823
+ 0 02:57:52
+ 0 02:57:52.5
+ 0 02:57:52.48
+ 0 02:57:52.482
+ 0 02:57:52.4823
+ 0 02:57:52.48229
+ 0 02:57:52
+ 0 02:57:52.5
+ 0 02:57:52.48
+ 0 02:57:52.482
+ 0 02:57:52.4823
+ 0 02:57:52.48229
+ 0 02:57:52.482290
+ 16:45
+ 16:45
+ 16:45
+ 16:45:44
+ 16:45:44
+ 16:45:44
+ 16:45:44.7
+ 16:45:44
+ 16:45:44.7
+ 16:45:44.66
+ 16:45:44
+ 16:45:44.7
+ 16:45:44.66
+ 16:45:44.658
+ 16:45:44
+ 16:45:44.7
+ 16:45:44.66
+ 16:45:44.658
+ 16:45:44.6583
+ 16:45:44
+ 16:45:44.7
+ 16:45:44.66
+ 16:45:44.658
+ 16:45:44.6583
+ 16:45:44.65827
+ 16:45:44
+ 16:45:44.7
+ 16:45:44.66
+ 16:45:44.658
+ 16:45:44.6583
+ 16:45:44.65827
+ 16:45:44.658270
+ 0 16:45
+ 0 16:45
+ 0 16:45:44
+ 0 16:45:44
+ 0 16:45:44
+ 0 16:45:44
+ 0 16:45:44.7
+ 0 16:45:44
+ 0 16:45:44.7
+ 0 16:45:44.66
+ 0 16:45:44
+ 0 16:45:44.7
+ 0 16:45:44.66
+ 0 16:45:44.658
+ 0 16:45:44
+ 0 16:45:44.7
+ 0 16:45:44.66
+ 0 16:45:44.658
+ 0 16:45:44.6583
+ 0 16:45:44
+ 0 16:45:44.7
+ 0 16:45:44.66
+ 0 16:45:44.658
+ 0 16:45:44.6583
+ 0 16:45:44.65827
+ 0 16:45:44
+ 0 16:45:44.7
+ 0 16:45:44.66
+ 0 16:45:44.658
+ 0 16:45:44.6583
+ 0 16:45:44.65827
+ 0 16:45:44.658270
+ 21:30
+ 21:30
+ 21:30
+ 21:30:57
+ 21:30:57
+ 21:30:57
+ 21:30:57.6
+ 21:30:57
+ 21:30:57.6
+ 21:30:57.58
+ 21:30:57
+ 21:30:57.6
+ 21:30:57.58
+ 21:30:57.582
+ 21:30:57
+ 21:30:57.6
+ 21:30:57.58
+ 21:30:57.582
+ 21:30:57.5822
+ 21:30:57
+ 21:30:57.6
+ 21:30:57.58
+ 21:30:57.582
+ 21:30:57.5822
+ 21:30:57.58219
+ 21:30:57
+ 21:30:57.6
+ 21:30:57.58
+ 21:30:57.582
+ 21:30:57.5822
+ 21:30:57.58219
+ 21:30:57.582190
+ 0 21:30
+ 0 21:30
+ 0 21:30:57
+ 0 21:30:57
+ 0 21:30:57
+ 0 21:30:57
+ 0 21:30:57.6
+ 0 21:30:57
+ 0 21:30:57.6
+ 0 21:30:57.58
+ 0 21:30:57
+ 0 21:30:57.6
+ 0 21:30:57.58
+ 0 21:30:57.582
+ 0 21:30:57
+ 0 21:30:57.6
+ 0 21:30:57.58
+ 0 21:30:57.582
+ 0 21:30:57.5822
+ 0 21:30:57
+ 0 21:30:57.6
+ 0 21:30:57.58
+ 0 21:30:57.582
+ 0 21:30:57.5822
+ 0 21:30:57.58219
+ 0 21:30:57
+ 0 21:30:57.6
+ 0 21:30:57.58
+ 0 21:30:57.582
+ 0 21:30:57.5822
+ 0 21:30:57.58219
+ 0 21:30:57.582190
+ 22:30
+ 22:30
+ 22:30
+ 22:30:04
+ 22:30:04
+ 22:30:04
+ 22:30:04.2
+ 22:30:04
+ 22:30:04.2
+ 22:30:04.18
+ 22:30:04
+ 22:30:04.2
+ 22:30:04.18
+ 22:30:04.183
+ 22:30:04
+ 22:30:04.2
+ 22:30:04.18
+ 22:30:04.183
+ 22:30:04.1835
+ 22:30:04
+ 22:30:04.2
+ 22:30:04.18
+ 22:30:04.183
+ 22:30:04.1835
+ 22:30:04.18347
+ 22:30:04
+ 22:30:04.2
+ 22:30:04.18
+ 22:30:04.183
+ 22:30:04.1835
+ 22:30:04.18347
+ 22:30:04.183470
+ 0 22:30
+ 0 22:30
+ 0 22:30:04
+ 0 22:30:04
+ 0 22:30:04
+ 0 22:30:04
+ 0 22:30:04.2
+ 0 22:30:04
+ 0 22:30:04.2
+ 0 22:30:04.18
+ 0 22:30:04
+ 0 22:30:04.2
+ 0 22:30:04.18
+ 0 22:30:04.183
+ 0 22:30:04
+ 0 22:30:04.2
+ 0 22:30:04.18
+ 0 22:30:04.183
+ 0 22:30:04.1835
+ 0 22:30:04
+ 0 22:30:04.2
+ 0 22:30:04.18
+ 0 22:30:04.183
+ 0 22:30:04.1835
+ 0 22:30:04.18347
+ 0 22:30:04
+ 0 22:30:04.2
+ 0 22:30:04.18
+ 0 22:30:04.183
+ 0 22:30:04.1835
+ 0 22:30:04.18347
+ 0 22:30:04.183470
+ 1:56
+ 1:56
+ 1:56:51
+ 1:56:51
+ 1:56:51
+ 1:56:51
+ 1:56:51.6
+ 1:56:51
+ 1:56:51.6
+ 1:56:51.59
+ 1:56:51
+ 1:56:51.6
+ 1:56:51.59
+ 1:56:51.593
+ 1:56:51
+ 1:56:51.6
+ 1:56:51.59
+ 1:56:51.593
+ 1:56:51.5932
+ 1:56:51
+ 1:56:51.6
+ 1:56:51.59
+ 1:56:51.593
+ 1:56:51.5932
+ 1:56:51.59319
+ 1:56:51
+ 1:56:51.6
+ 1:56:51.59
+ 1:56:51.593
+ 1:56:51.5932
+ 1:56:51.59319
+ 1:56:51.593190
+ 0 01:56
+ 0 01:56
+ 0 01:56:51
+ 0 01:56:51
+ 0 01:56:51
+ 0 01:56:51
+ 0 01:56:51.6
+ 0 01:56:51
+ 0 01:56:51.6
+ 0 01:56:51.59
+ 0 01:56:51
+ 0 01:56:51.6
+ 0 01:56:51.59
+ 0 01:56:51.593
+ 0 01:56:51
+ 0 01:56:51.6
+ 0 01:56:51.59
+ 0 01:56:51.593
+ 0 01:56:51.5932
+ 0 01:56:51
+ 0 01:56:51.6
+ 0 01:56:51.59
+ 0 01:56:51.593
+ 0 01:56:51.5932
+ 0 01:56:51.59319
+ 0 01:56:51
+ 0 01:56:51.6
+ 0 01:56:51.59
+ 0 01:56:51.593
+ 0 01:56:51.5932
+ 0 01:56:51.59319
+ 0 01:56:51.593190
+ 24:00
+ 24:00
+ 24:00
+ 24:00:00
+ 24:00:00
+ 24:00:00
+ 24:00:00.0
+ 24:00:00
+ 24:00:00.0
+ 24:00:00.00
+ 24:00:00
+ 24:00:00.0
+ 24:00:00.00
+ 24:00:00.000
+ 24:00:00
+ 24:00:00.0
+ 24:00:00.00
+ 24:00:00.000
+ 24:00:00.0000
+ 24:00:00
+ 24:00:00.0
+ 24:00:00.00
+ 24:00:00.000
+ 24:00:00.0000
+ 24:00:00.00000
+ 24:00:00
+ 24:00:00.0
+ 24:00:00.00
+ 24:00:00.000
+ 24:00:00.0000
+ 24:00:00.00000
+ 24:00:00.000000
+ 1 00:00
+ 1 00:00
+ 1 00:00:00
+ 1 00:00:00
+ 1 00:00:00
+ 1 00:00:00
+ 1 00:00:00.0
+ 1 00:00:00
+ 1 00:00:00.0
+ 1 00:00:00.00
+ 1 00:00:00
+ 1 00:00:00.0
+ 1 00:00:00.00
+ 1 00:00:00.000
+ 1 00:00:00
+ 1 00:00:00.0
+ 1 00:00:00.00
+ 1 00:00:00.000
+ 1 00:00:00.0000
+ 1 00:00:00
+ 1 00:00:00.0
+ 1 00:00:00.00
+ 1 00:00:00.000
+ 1 00:00:00.0000
+ 1 00:00:00.00000
+ 1 00:00:00
+ 1 00:00:00.0
+ 1 00:00:00.00
+ 1 00:00:00.000
+ 1 00:00:00.0000
+ 1 00:00:00.00000
+ 1 00:00:00.000000
+ 28:50
+ 28:50
+ 28:50
+ 28:50:38
+ 28:50:38
+ 28:50:38
+ 28:50:38.1
+ 28:50:38
+ 28:50:38.1
+ 28:50:38.12
+ 28:50:38
+ 28:50:38.1
+ 28:50:38.12
+ 28:50:38.123
+ 28:50:38
+ 28:50:38.1
+ 28:50:38.12
+ 28:50:38.123
+ 28:50:38.1230
+ 28:50:38
+ 28:50:38.1
+ 28:50:38.12
+ 28:50:38.123
+ 28:50:38.1230
+ 28:50:38.12301
+ 28:50:38
+ 28:50:38.1
+ 28:50:38.12
+ 28:50:38.123
+ 28:50:38.1230
+ 28:50:38.12301
+ 28:50:38.123010
+ 1 04:50
+ 1 04:50
+ 1 04:50:38
+ 1 04:50:38
+ 1 04:50:38
+ 1 04:50:38
+ 1 04:50:38.1
+ 1 04:50:38
+ 1 04:50:38.1
+ 1 04:50:38.12
+ 1 04:50:38
+ 1 04:50:38.1
+ 1 04:50:38.12
+ 1 04:50:38.123
+ 1 04:50:38
+ 1 04:50:38.1
+ 1 04:50:38.12
+ 1 04:50:38.123
+ 1 04:50:38.1230
+ 1 04:50:38
+ 1 04:50:38.1
+ 1 04:50:38.12
+ 1 04:50:38.123
+ 1 04:50:38.1230
+ 1 04:50:38.12301
+ 1 04:50:38
+ 1 04:50:38.1
+ 1 04:50:38.12
+ 1 04:50:38.123
+ 1 04:50:38.1230
+ 1 04:50:38.12301
+ 1 04:50:38.123010
+ 36:31
+ 36:31
+ 36:31
+ 36:31:35
+ 36:31:35
+ 36:31:35
+ 36:31:35.2
+ 36:31:35
+ 36:31:35.2
+ 36:31:35.23
+ 36:31:35
+ 36:31:35.2
+ 36:31:35.23
+ 36:31:35.235
+ 36:31:35
+ 36:31:35.2
+ 36:31:35.23
+ 36:31:35.235
+ 36:31:35.2345
+ 36:31:35
+ 36:31:35.2
+ 36:31:35.23
+ 36:31:35.235
+ 36:31:35.2345
+ 36:31:35.23453
+ 36:31:35
+ 36:31:35.2
+ 36:31:35.23
+ 36:31:35.235
+ 36:31:35.2345
+ 36:31:35.23453
+ 36:31:35.234530
+ 1 12:31
+ 1 12:31
+ 1 12:31:35
+ 1 12:31:35
+ 1 12:31:35
+ 1 12:31:35
+ 1 12:31:35.2
+ 1 12:31:35
+ 1 12:31:35.2
+ 1 12:31:35.23
+ 1 12:31:35
+ 1 12:31:35.2
+ 1 12:31:35.23
+ 1 12:31:35.235
+ 1 12:31:35
+ 1 12:31:35.2
+ 1 12:31:35.23
+ 1 12:31:35.235
+ 1 12:31:35.2345
+ 1 12:31:35
+ 1 12:31:35.2
+ 1 12:31:35.23
+ 1 12:31:35.235
+ 1 12:31:35.2345
+ 1 12:31:35.23453
+ 1 12:31:35
+ 1 12:31:35.2
+ 1 12:31:35.23
+ 1 12:31:35.235
+ 1 12:31:35.2345
+ 1 12:31:35.23453
+ 1 12:31:35.234530
+ 36:47
+ 36:47
+ 36:47
+ 36:47:53
+ 36:47:53
+ 36:47:53
+ 36:47:53.3
+ 36:47:53
+ 36:47:53.3
+ 36:47:53.35
+ 36:47:53
+ 36:47:53.3
+ 36:47:53.35
+ 36:47:53.345
+ 36:47:53
+ 36:47:53.3
+ 36:47:53.35
+ 36:47:53.345
+ 36:47:53.3451
+ 36:47:53
+ 36:47:53.3
+ 36:47:53.35
+ 36:47:53.345
+ 36:47:53.3451
+ 36:47:53.34505
+ 36:47:53
+ 36:47:53.3
+ 36:47:53.35
+ 36:47:53.345
+ 36:47:53.3451
+ 36:47:53.34505
+ 36:47:53.345050
+ 1 12:47
+ 1 12:47
+ 1 12:47:53
+ 1 12:47:53
+ 1 12:47:53
+ 1 12:47:53
+ 1 12:47:53.3
+ 1 12:47:53
+ 1 12:47:53.3
+ 1 12:47:53.35
+ 1 12:47:53
+ 1 12:47:53.3
+ 1 12:47:53.35
+ 1 12:47:53.345
+ 1 12:47:53
+ 1 12:47:53.3
+ 1 12:47:53.35
+ 1 12:47:53.345
+ 1 12:47:53.3451
+ 1 12:47:53
+ 1 12:47:53.3
+ 1 12:47:53.35
+ 1 12:47:53.345
+ 1 12:47:53.3451
+ 1 12:47:53.34505
+ 1 12:47:53
+ 1 12:47:53.3
+ 1 12:47:53.35
+ 1 12:47:53.345
+ 1 12:47:53.3451
+ 1 12:47:53.34505
+ 1 12:47:53.345050
+ 25:26
+ 25:26
+ 25:26
+ 25:26:00
+ 25:26:00
+ 25:26:00
+ 25:26:00.5
+ 25:26:00
+ 25:26:00.5
+ 25:26:00.46
+ 25:26:00
+ 25:26:00.5
+ 25:26:00.46
+ 25:26:00.456
+ 25:26:00
+ 25:26:00.5
+ 25:26:00.46
+ 25:26:00.456
+ 25:26:00.4561
+ 25:26:00
+ 25:26:00.5
+ 25:26:00.46
+ 25:26:00.456
+ 25:26:00.4561
+ 25:26:00.45615
+ 25:26:00
+ 25:26:00.5
+ 25:26:00.46
+ 25:26:00.456
+ 25:26:00.4561
+ 25:26:00.45615
+ 25:26:00.456150
+ 1 01:26
+ 1 01:26
+ 1 01:26:00
+ 1 01:26:00
+ 1 01:26:00
+ 1 01:26:00
+ 1 01:26:00.5
+ 1 01:26:00
+ 1 01:26:00.5
+ 1 01:26:00.46
+ 1 01:26:00
+ 1 01:26:00.5
+ 1 01:26:00.46
+ 1 01:26:00.456
+ 1 01:26:00
+ 1 01:26:00.5
+ 1 01:26:00.46
+ 1 01:26:00.456
+ 1 01:26:00.4561
+ 1 01:26:00
+ 1 01:26:00.5
+ 1 01:26:00.46
+ 1 01:26:00.456
+ 1 01:26:00.4561
+ 1 01:26:00.45615
+ 1 01:26:00
+ 1 01:26:00.5
+ 1 01:26:00.46
+ 1 01:26:00.456
+ 1 01:26:00.4561
+ 1 01:26:00.45615
+ 1 01:26:00.456150
+ 44:58
+ 44:58
+ 44:58
+ 44:58:11
+ 44:58:11
+ 44:58:11
+ 44:58:11.6
+ 44:58:11
+ 44:58:11.6
+ 44:58:11.57
+ 44:58:11
+ 44:58:11.6
+ 44:58:11.57
+ 44:58:11.567
+ 44:58:11
+ 44:58:11.6
+ 44:58:11.57
+ 44:58:11.567
+ 44:58:11.5668
+ 44:58:11
+ 44:58:11.6
+ 44:58:11.57
+ 44:58:11.567
+ 44:58:11.5668
+ 44:58:11.56677
+ 44:58:11
+ 44:58:11.6
+ 44:58:11.57
+ 44:58:11.567
+ 44:58:11.5668
+ 44:58:11.56677
+ 44:58:11.566770
+ 1 20:58
+ 1 20:58
+ 1 20:58:11
+ 1 20:58:11
+ 1 20:58:11
+ 1 20:58:11
+ 1 20:58:11.6
+ 1 20:58:11
+ 1 20:58:11.6
+ 1 20:58:11.57
+ 1 20:58:11
+ 1 20:58:11.6
+ 1 20:58:11.57
+ 1 20:58:11.567
+ 1 20:58:11
+ 1 20:58:11.6
+ 1 20:58:11.57
+ 1 20:58:11.567
+ 1 20:58:11.5668
+ 1 20:58:11
+ 1 20:58:11.6
+ 1 20:58:11.57
+ 1 20:58:11.567
+ 1 20:58:11.5668
+ 1 20:58:11.56677
+ 1 20:58:11
+ 1 20:58:11.6
+ 1 20:58:11.57
+ 1 20:58:11.567
+ 1 20:58:11.5668
+ 1 20:58:11.56677
+ 1 20:58:11.566770
+ 31:36
+ 31:36
+ 31:36
+ 31:36:05
+ 31:36:05
+ 31:36:05
+ 31:36:05.2
+ 31:36:05
+ 31:36:05.2
+ 31:36:05.19
+ 31:36:05
+ 31:36:05.2
+ 31:36:05.19
+ 31:36:05.190
+ 31:36:05
+ 31:36:05.2
+ 31:36:05.19
+ 31:36:05.190
+ 31:36:05.1896
+ 31:36:05
+ 31:36:05.2
+ 31:36:05.19
+ 31:36:05.190
+ 31:36:05.1896
+ 31:36:05.18964
+ 31:36:05
+ 31:36:05.2
+ 31:36:05.19
+ 31:36:05.190
+ 31:36:05.1896
+ 31:36:05.18964
+ 31:36:05.189640
+ 1 07:36
+ 1 07:36
+ 1 07:36:05
+ 1 07:36:05
+ 1 07:36:05
+ 1 07:36:05
+ 1 07:36:05.2
+ 1 07:36:05
+ 1 07:36:05.2
+ 1 07:36:05.19
+ 1 07:36:05
+ 1 07:36:05.2
+ 1 07:36:05.19
+ 1 07:36:05.190
+ 1 07:36:05
+ 1 07:36:05.2
+ 1 07:36:05.19
+ 1 07:36:05.190
+ 1 07:36:05.1896
+ 1 07:36:05
+ 1 07:36:05.2
+ 1 07:36:05.19
+ 1 07:36:05.190
+ 1 07:36:05.1896
+ 1 07:36:05.18964
+ 1 07:36:05
+ 1 07:36:05.2
+ 1 07:36:05.19
+ 1 07:36:05.190
+ 1 07:36:05.1896
+ 1 07:36:05.18964
+ 1 07:36:05.189640
+ 39:43
+ 39:43
+ 39:43
+ 39:43:49
+ 39:43:49
+ 39:43:49
+ 39:43:49.8
+ 39:43:49
+ 39:43:49.8
+ 39:43:49.83
+ 39:43:49
+ 39:43:49.8
+ 39:43:49.83
+ 39:43:49.831
+ 39:43:49
+ 39:43:49.8
+ 39:43:49.83
+ 39:43:49.831
+ 39:43:49.8313
+ 39:43:49
+ 39:43:49.8
+ 39:43:49.83
+ 39:43:49.831
+ 39:43:49.8313
+ 39:43:49.83132
+ 39:43:49
+ 39:43:49.8
+ 39:43:49.83
+ 39:43:49.831
+ 39:43:49.8313
+ 39:43:49.83132
+ 39:43:49.831320
+ 1 15:43
+ 1 15:43
+ 1 15:43:49
+ 1 15:43:49
+ 1 15:43:49
+ 1 15:43:49
+ 1 15:43:49.8
+ 1 15:43:49
+ 1 15:43:49.8
+ 1 15:43:49.83
+ 1 15:43:49
+ 1 15:43:49.8
+ 1 15:43:49.83
+ 1 15:43:49.831
+ 1 15:43:49
+ 1 15:43:49.8
+ 1 15:43:49.83
+ 1 15:43:49.831
+ 1 15:43:49.8313
+ 1 15:43:49
+ 1 15:43:49.8
+ 1 15:43:49.83
+ 1 15:43:49.831
+ 1 15:43:49.8313
+ 1 15:43:49.83132
+ 1 15:43:49
+ 1 15:43:49.8
+ 1 15:43:49.83
+ 1 15:43:49.831
+ 1 15:43:49.8313
+ 1 15:43:49.83132
+ 1 15:43:49.831320
+ 28:25
+ 28:25
+ 28:25
+ 28:25:09
+ 28:25:09
+ 28:25:09
+ 28:25:09.0
+ 28:25:09
+ 28:25:09.0
+ 28:25:09.01
+ 28:25:09
+ 28:25:09.0
+ 28:25:09.01
+ 28:25:09.013
+ 28:25:09
+ 28:25:09.0
+ 28:25:09.01
+ 28:25:09.013
+ 28:25:09.0129
+ 28:25:09
+ 28:25:09.0
+ 28:25:09.01
+ 28:25:09.013
+ 28:25:09.0129
+ 28:25:09.01293
+ 28:25:09
+ 28:25:09.0
+ 28:25:09.01
+ 28:25:09.013
+ 28:25:09.0129
+ 28:25:09.01293
+ 28:25:09.012930
+ 1 04:25
+ 1 04:25
+ 1 04:25:09
+ 1 04:25:09
+ 1 04:25:09
+ 1 04:25:09
+ 1 04:25:09.0
+ 1 04:25:09
+ 1 04:25:09.0
+ 1 04:25:09.01
+ 1 04:25:09
+ 1 04:25:09.0
+ 1 04:25:09.01
+ 1 04:25:09.013
+ 1 04:25:09
+ 1 04:25:09.0
+ 1 04:25:09.01
+ 1 04:25:09.013
+ 1 04:25:09.0129
+ 1 04:25:09
+ 1 04:25:09.0
+ 1 04:25:09.01
+ 1 04:25:09.013
+ 1 04:25:09.0129
+ 1 04:25:09.01293
+ 1 04:25:09
+ 1 04:25:09.0
+ 1 04:25:09.01
+ 1 04:25:09.013
+ 1 04:25:09.0129
+ 1 04:25:09.01293
+ 1 04:25:09.012930
+ 30:49
+ 30:49
+ 30:49
+ 30:49:27
+ 30:49:27
+ 30:49:27
+ 30:49:27.5
+ 30:49:27
+ 30:49:27.5
+ 30:49:27.52
+ 30:49:27
+ 30:49:27.5
+ 30:49:27.52
+ 30:49:27.524
+ 30:49:27
+ 30:49:27.5
+ 30:49:27.52
+ 30:49:27.524
+ 30:49:27.5237
+ 30:49:27
+ 30:49:27.5
+ 30:49:27.52
+ 30:49:27.524
+ 30:49:27.5237
+ 30:49:27.52375
+ 30:49:27
+ 30:49:27.5
+ 30:49:27.52
+ 30:49:27.524
+ 30:49:27.5237
+ 30:49:27.52375
+ 30:49:27.523750
+ 1 06:49
+ 1 06:49
+ 1 06:49:27
+ 1 06:49:27
+ 1 06:49:27
+ 1 06:49:27
+ 1 06:49:27.5
+ 1 06:49:27
+ 1 06:49:27.5
+ 1 06:49:27.52
+ 1 06:49:27
+ 1 06:49:27.5
+ 1 06:49:27.52
+ 1 06:49:27.524
+ 1 06:49:27
+ 1 06:49:27.5
+ 1 06:49:27.52
+ 1 06:49:27.524
+ 1 06:49:27.5237
+ 1 06:49:27
+ 1 06:49:27.5
+ 1 06:49:27.52
+ 1 06:49:27.524
+ 1 06:49:27.5237
+ 1 06:49:27.52375
+ 1 06:49:27
+ 1 06:49:27.5
+ 1 06:49:27.52
+ 1 06:49:27.524
+ 1 06:49:27.5237
+ 1 06:49:27.52375
+ 1 06:49:27.523750
+ 26:57
+ 26:57
+ 26:57
+ 26:57:52
+ 26:57:52
+ 26:57:52
+ 26:57:52.0
+ 26:57:52
+ 26:57:52.0
+ 26:57:52.02
+ 26:57:52
+ 26:57:52.0
+ 26:57:52.02
+ 26:57:52.016
+ 26:57:52
+ 26:57:52.0
+ 26:57:52.02
+ 26:57:52.016
+ 26:57:52.0157
+ 26:57:52
+ 26:57:52.0
+ 26:57:52.02
+ 26:57:52.016
+ 26:57:52.0157
+ 26:57:52.01565
+ 26:57:52
+ 26:57:52.0
+ 26:57:52.02
+ 26:57:52.016
+ 26:57:52.0157
+ 26:57:52.01565
+ 26:57:52.015650
+ 1 02:57
+ 1 02:57
+ 1 02:57:52
+ 1 02:57:52
+ 1 02:57:52
+ 1 02:57:52
+ 1 02:57:52.0
+ 1 02:57:52
+ 1 02:57:52.0
+ 1 02:57:52.02
+ 1 02:57:52
+ 1 02:57:52.0
+ 1 02:57:52.02
+ 1 02:57:52.016
+ 1 02:57:52
+ 1 02:57:52.0
+ 1 02:57:52.02
+ 1 02:57:52.016
+ 1 02:57:52.0157
+ 1 02:57:52
+ 1 02:57:52.0
+ 1 02:57:52.02
+ 1 02:57:52.016
+ 1 02:57:52.0157
+ 1 02:57:52.01565
+ 1 02:57:52
+ 1 02:57:52.0
+ 1 02:57:52.02
+ 1 02:57:52.016
+ 1 02:57:52.0157
+ 1 02:57:52.01565
+ 1 02:57:52.015650
+ 40:45
+ 40:45
+ 40:45
+ 40:45:44
+ 40:45:44
+ 40:45:44
+ 40:45:44.9
+ 40:45:44
+ 40:45:44.9
+ 40:45:44.87
+ 40:45:44
+ 40:45:44.9
+ 40:45:44.87
+ 40:45:44.865
+ 40:45:44
+ 40:45:44.9
+ 40:45:44.87
+ 40:45:44.865
+ 40:45:44.8653
+ 40:45:44
+ 40:45:44.9
+ 40:45:44.87
+ 40:45:44.865
+ 40:45:44.8653
+ 40:45:44.86529
+ 40:45:44
+ 40:45:44.9
+ 40:45:44.87
+ 40:45:44.865
+ 40:45:44.8653
+ 40:45:44.86529
+ 40:45:44.865290
+ 1 16:45
+ 1 16:45
+ 1 16:45:44
+ 1 16:45:44
+ 1 16:45:44
+ 1 16:45:44
+ 1 16:45:44.9
+ 1 16:45:44
+ 1 16:45:44.9
+ 1 16:45:44.87
+ 1 16:45:44
+ 1 16:45:44.9
+ 1 16:45:44.87
+ 1 16:45:44.865
+ 1 16:45:44
+ 1 16:45:44.9
+ 1 16:45:44.87
+ 1 16:45:44.865
+ 1 16:45:44.8653
+ 1 16:45:44
+ 1 16:45:44.9
+ 1 16:45:44.87
+ 1 16:45:44.865
+ 1 16:45:44.8653
+ 1 16:45:44.86529
+ 1 16:45:44
+ 1 16:45:44.9
+ 1 16:45:44.87
+ 1 16:45:44.865
+ 1 16:45:44.8653
+ 1 16:45:44.86529
+ 1 16:45:44.865290
+ 45:30
+ 45:30
+ 45:30
+ 45:30:57
+ 45:30:57
+ 45:30:57
+ 45:30:57.8
+ 45:30:57
+ 45:30:57.8
+ 45:30:57.82
+ 45:30:57
+ 45:30:57.8
+ 45:30:57.82
+ 45:30:57.820
+ 45:30:57
+ 45:30:57.8
+ 45:30:57.82
+ 45:30:57.820
+ 45:30:57.8205
+ 45:30:57
+ 45:30:57.8
+ 45:30:57.82
+ 45:30:57.820
+ 45:30:57.8205
+ 45:30:57.82047
+ 45:30:57
+ 45:30:57.8
+ 45:30:57.82
+ 45:30:57.820
+ 45:30:57.8205
+ 45:30:57.82047
+ 45:30:57.820470
+ 1 21:30
+ 1 21:30
+ 1 21:30:57
+ 1 21:30:57
+ 1 21:30:57
+ 1 21:30:57
+ 1 21:30:57.8
+ 1 21:30:57
+ 1 21:30:57.8
+ 1 21:30:57.82
+ 1 21:30:57
+ 1 21:30:57.8
+ 1 21:30:57.82
+ 1 21:30:57.820
+ 1 21:30:57
+ 1 21:30:57.8
+ 1 21:30:57.82
+ 1 21:30:57.820
+ 1 21:30:57.8205
+ 1 21:30:57
+ 1 21:30:57.8
+ 1 21:30:57.82
+ 1 21:30:57.820
+ 1 21:30:57.8205
+ 1 21:30:57.82047
+ 1 21:30:57
+ 1 21:30:57.8
+ 1 21:30:57.82
+ 1 21:30:57.820
+ 1 21:30:57.8205
+ 1 21:30:57.82047
+ 1 21:30:57.820470
+ 28:25
+ 28:25
+ 28:25
+ 28:25:09
+ 28:25:09
+ 28:25:09
+ 28:25:09.2
+ 28:25:09
+ 28:25:09.2
+ 28:25:09.15
+ 28:25:09
+ 28:25:09.2
+ 28:25:09.15
+ 28:25:09.154
+ 28:25:09
+ 28:25:09.2
+ 28:25:09.15
+ 28:25:09.154
+ 28:25:09.1540
+ 28:25:09
+ 28:25:09.2
+ 28:25:09.15
+ 28:25:09.154
+ 28:25:09.1540
+ 28:25:09.15395
+ 28:25:09
+ 28:25:09.2
+ 28:25:09.15
+ 28:25:09.154
+ 28:25:09.1540
+ 28:25:09.15395
+ 28:25:09.153950
+ 1 04:25
+ 1 04:25
+ 1 04:25:09
+ 1 04:25:09
+ 1 04:25:09
+ 1 04:25:09
+ 1 04:25:09.2
+ 1 04:25:09
+ 1 04:25:09.2
+ 1 04:25:09.15
+ 1 04:25:09
+ 1 04:25:09.2
+ 1 04:25:09.15
+ 1 04:25:09.154
+ 1 04:25:09
+ 1 04:25:09.2
+ 1 04:25:09.15
+ 1 04:25:09.154
+ 1 04:25:09.1540
+ 1 04:25:09
+ 1 04:25:09.2
+ 1 04:25:09.15
+ 1 04:25:09.154
+ 1 04:25:09.1540
+ 1 04:25:09.15395
+ 1 04:25:09
+ 1 04:25:09.2
+ 1 04:25:09.15
+ 1 04:25:09.154
+ 1 04:25:09.1540
+ 1 04:25:09.15395
+ 1 04:25:09.153950
+ 30:49
+ 30:49
+ 30:49
+ 30:49:27
+ 30:49:27
+ 30:49:27
+ 30:49:27.1
+ 30:49:27
+ 30:49:27.1
+ 30:49:27.11
+ 30:49:27
+ 30:49:27.1
+ 30:49:27.11
+ 30:49:27.105
+ 30:49:27
+ 30:49:27.1
+ 30:49:27.11
+ 30:49:27.105
+ 30:49:27.1053
+ 30:49:27
+ 30:49:27.1
+ 30:49:27.11
+ 30:49:27.105
+ 30:49:27.1053
+ 30:49:27.10533
+ 30:49:27
+ 30:49:27.1
+ 30:49:27.11
+ 30:49:27.105
+ 30:49:27.1053
+ 30:49:27.10533
+ 30:49:27.105330
+ 1 06:49
+ 1 06:49
+ 1 06:49:27
+ 1 06:49:27
+ 1 06:49:27
+ 1 06:49:27
+ 1 06:49:27.1
+ 1 06:49:27
+ 1 06:49:27.1
+ 1 06:49:27.11
+ 1 06:49:27
+ 1 06:49:27.1
+ 1 06:49:27.11
+ 1 06:49:27.105
+ 1 06:49:27
+ 1 06:49:27.1
+ 1 06:49:27.11
+ 1 06:49:27.105
+ 1 06:49:27.1053
+ 1 06:49:27
+ 1 06:49:27.1
+ 1 06:49:27.11
+ 1 06:49:27.105
+ 1 06:49:27.1053
+ 1 06:49:27.10533
+ 1 06:49:27
+ 1 06:49:27.1
+ 1 06:49:27.11
+ 1 06:49:27.105
+ 1 06:49:27.1053
+ 1 06:49:27.10533
+ 1 06:49:27.105330
+ 26:57
+ 26:57
+ 26:57
+ 26:57:52
+ 26:57:52
+ 26:57:52
+ 26:57:52.5
+ 26:57:52
+ 26:57:52.5
+ 26:57:52.48
+ 26:57:52
+ 26:57:52.5
+ 26:57:52.48
+ 26:57:52.482
+ 26:57:52
+ 26:57:52.5
+ 26:57:52.48
+ 26:57:52.482
+ 26:57:52.4823
+ 26:57:52
+ 26:57:52.5
+ 26:57:52.48
+ 26:57:52.482
+ 26:57:52.4823
+ 26:57:52.48229
+ 26:57:52
+ 26:57:52.5
+ 26:57:52.48
+ 26:57:52.482
+ 26:57:52.4823
+ 26:57:52.48229
+ 26:57:52.482290
+ 1 02:57
+ 1 02:57
+ 1 02:57:52
+ 1 02:57:52
+ 1 02:57:52
+ 1 02:57:52
+ 1 02:57:52.5
+ 1 02:57:52
+ 1 02:57:52.5
+ 1 02:57:52.48
+ 1 02:57:52
+ 1 02:57:52.5
+ 1 02:57:52.48
+ 1 02:57:52.482
+ 1 02:57:52
+ 1 02:57:52.5
+ 1 02:57:52.48
+ 1 02:57:52.482
+ 1 02:57:52.4823
+ 1 02:57:52
+ 1 02:57:52.5
+ 1 02:57:52.48
+ 1 02:57:52.482
+ 1 02:57:52.4823
+ 1 02:57:52.48229
+ 1 02:57:52
+ 1 02:57:52.5
+ 1 02:57:52.48
+ 1 02:57:52.482
+ 1 02:57:52.4823
+ 1 02:57:52.48229
+ 1 02:57:52.482290
+ 40:45
+ 40:45
+ 40:45
+ 40:45:44
+ 40:45:44
+ 40:45:44
+ 40:45:44.7
+ 40:45:44
+ 40:45:44.7
+ 40:45:44.66
+ 40:45:44
+ 40:45:44.7
+ 40:45:44.66
+ 40:45:44.658
+ 40:45:44
+ 40:45:44.7
+ 40:45:44.66
+ 40:45:44.658
+ 40:45:44.6583
+ 40:45:44
+ 40:45:44.7
+ 40:45:44.66
+ 40:45:44.658
+ 40:45:44.6583
+ 40:45:44.65827
+ 40:45:44
+ 40:45:44.7
+ 40:45:44.66
+ 40:45:44.658
+ 40:45:44.6583
+ 40:45:44.65827
+ 40:45:44.658270
+ 1 16:45
+ 1 16:45
+ 1 16:45:44
+ 1 16:45:44
+ 1 16:45:44
+ 1 16:45:44
+ 1 16:45:44.7
+ 1 16:45:44
+ 1 16:45:44.7
+ 1 16:45:44.66
+ 1 16:45:44
+ 1 16:45:44.7
+ 1 16:45:44.66
+ 1 16:45:44.658
+ 1 16:45:44
+ 1 16:45:44.7
+ 1 16:45:44.66
+ 1 16:45:44.658
+ 1 16:45:44.6583
+ 1 16:45:44
+ 1 16:45:44.7
+ 1 16:45:44.66
+ 1 16:45:44.658
+ 1 16:45:44.6583
+ 1 16:45:44.65827
+ 1 16:45:44
+ 1 16:45:44.7
+ 1 16:45:44.66
+ 1 16:45:44.658
+ 1 16:45:44.6583
+ 1 16:45:44.65827
+ 1 16:45:44.658270
+ 45:30
+ 45:30
+ 45:30
+ 45:30:57
+ 45:30:57
+ 45:30:57
+ 45:30:57.6
+ 45:30:57
+ 45:30:57.6
+ 45:30:57.58
+ 45:30:57
+ 45:30:57.6
+ 45:30:57.58
+ 45:30:57.582
+ 45:30:57
+ 45:30:57.6
+ 45:30:57.58
+ 45:30:57.582
+ 45:30:57.5822
+ 45:30:57
+ 45:30:57.6
+ 45:30:57.58
+ 45:30:57.582
+ 45:30:57.5822
+ 45:30:57.58219
+ 45:30:57
+ 45:30:57.6
+ 45:30:57.58
+ 45:30:57.582
+ 45:30:57.5822
+ 45:30:57.58219
+ 45:30:57.582190
+ 1 21:30
+ 1 21:30
+ 1 21:30:57
+ 1 21:30:57
+ 1 21:30:57
+ 1 21:30:57
+ 1 21:30:57.6
+ 1 21:30:57
+ 1 21:30:57.6
+ 1 21:30:57.58
+ 1 21:30:57
+ 1 21:30:57.6
+ 1 21:30:57.58
+ 1 21:30:57.582
+ 1 21:30:57
+ 1 21:30:57.6
+ 1 21:30:57.58
+ 1 21:30:57.582
+ 1 21:30:57.5822
+ 1 21:30:57
+ 1 21:30:57.6
+ 1 21:30:57.58
+ 1 21:30:57.582
+ 1 21:30:57.5822
+ 1 21:30:57.58219
+ 1 21:30:57
+ 1 21:30:57.6
+ 1 21:30:57.58
+ 1 21:30:57.582
+ 1 21:30:57.5822
+ 1 21:30:57.58219
+ 1 21:30:57.582190
+ 46:30
+ 46:30
+ 46:30
+ 46:30:04
+ 46:30:04
+ 46:30:04
+ 46:30:04.2
+ 46:30:04
+ 46:30:04.2
+ 46:30:04.18
+ 46:30:04
+ 46:30:04.2
+ 46:30:04.18
+ 46:30:04.183
+ 46:30:04
+ 46:30:04.2
+ 46:30:04.18
+ 46:30:04.183
+ 46:30:04.1835
+ 46:30:04
+ 46:30:04.2
+ 46:30:04.18
+ 46:30:04.183
+ 46:30:04.1835
+ 46:30:04.18347
+ 46:30:04
+ 46:30:04.2
+ 46:30:04.18
+ 46:30:04.183
+ 46:30:04.1835
+ 46:30:04.18347
+ 46:30:04.183470
+ 1 22:30
+ 1 22:30
+ 1 22:30:04
+ 1 22:30:04
+ 1 22:30:04
+ 1 22:30:04
+ 1 22:30:04.2
+ 1 22:30:04
+ 1 22:30:04.2
+ 1 22:30:04.18
+ 1 22:30:04
+ 1 22:30:04.2
+ 1 22:30:04.18
+ 1 22:30:04.183
+ 1 22:30:04
+ 1 22:30:04.2
+ 1 22:30:04.18
+ 1 22:30:04.183
+ 1 22:30:04.1835
+ 1 22:30:04
+ 1 22:30:04.2
+ 1 22:30:04.18
+ 1 22:30:04.183
+ 1 22:30:04.1835
+ 1 22:30:04.18347
+ 1 22:30:04
+ 1 22:30:04.2
+ 1 22:30:04.18
+ 1 22:30:04.183
+ 1 22:30:04.1835
+ 1 22:30:04.18347
+ 1 22:30:04.183470
+ 25:56
+ 25:56
+ 25:56
+ 25:56:51
+ 25:56:51
+ 25:56:51
+ 25:56:51.6
+ 25:56:51
+ 25:56:51.6
+ 25:56:51.59
+ 25:56:51
+ 25:56:51.6
+ 25:56:51.59
+ 25:56:51.593
+ 25:56:51
+ 25:56:51.6
+ 25:56:51.59
+ 25:56:51.593
+ 25:56:51.5932
+ 25:56:51
+ 25:56:51.6
+ 25:56:51.59
+ 25:56:51.593
+ 25:56:51.5932
+ 25:56:51.59319
+ 25:56:51
+ 25:56:51.6
+ 25:56:51.59
+ 25:56:51.593
+ 25:56:51.5932
+ 25:56:51.59319
+ 25:56:51.593190
+ 1 01:56
+ 1 01:56
+ 1 01:56:51
+ 1 01:56:51
+ 1 01:56:51
+ 1 01:56:51
+ 1 01:56:51.6
+ 1 01:56:51
+ 1 01:56:51.6
+ 1 01:56:51.59
+ 1 01:56:51
+ 1 01:56:51.6
+ 1 01:56:51.59
+ 1 01:56:51.593
+ 1 01:56:51
+ 1 01:56:51.6
+ 1 01:56:51.59
+ 1 01:56:51.593
+ 1 01:56:51.5932
+ 1 01:56:51
+ 1 01:56:51.6
+ 1 01:56:51.59
+ 1 01:56:51.593
+ 1 01:56:51.5932
+ 1 01:56:51.59319
+ 1 01:56:51
+ 1 01:56:51.6
+ 1 01:56:51.59
+ 1 01:56:51.593
+ 1 01:56:51.5932
+ 1 01:56:51.59319
+ 1 01:56:51.593190
+ 48:00
+ 48:00
+ 48:00
+ 48:00:00
+ 48:00:00
+ 48:00:00
+ 48:00:00.0
+ 48:00:00
+ 48:00:00.0
+ 48:00:00.00
+ 48:00:00
+ 48:00:00.0
+ 48:00:00.00
+ 48:00:00.000
+ 48:00:00
+ 48:00:00.0
+ 48:00:00.00
+ 48:00:00.000
+ 48:00:00.0000
+ 48:00:00
+ 48:00:00.0
+ 48:00:00.00
+ 48:00:00.000
+ 48:00:00.0000
+ 48:00:00.00000
+ 48:00:00
+ 48:00:00.0
+ 48:00:00.00
+ 48:00:00.000
+ 48:00:00.0000
+ 48:00:00.00000
+ 48:00:00.000000
+ 2 00:00
+ 2 00:00
+ 2 00:00:00
+ 2 00:00:00
+ 2 00:00:00
+ 2 00:00:00
+ 2 00:00:00.0
+ 2 00:00:00
+ 2 00:00:00.0
+ 2 00:00:00.00
+ 2 00:00:00
+ 2 00:00:00.0
+ 2 00:00:00.00
+ 2 00:00:00.000
+ 2 00:00:00
+ 2 00:00:00.0
+ 2 00:00:00.00
+ 2 00:00:00.000
+ 2 00:00:00.0000
+ 2 00:00:00
+ 2 00:00:00.0
+ 2 00:00:00.00
+ 2 00:00:00.000
+ 2 00:00:00.0000
+ 2 00:00:00.00000
+ 2 00:00:00
+ 2 00:00:00.0
+ 2 00:00:00.00
+ 2 00:00:00.000
+ 2 00:00:00.0000
+ 2 00:00:00.00000
+ 2 00:00:00.000000
+ 52:50
+ 52:50
+ 52:50
+ 52:50:38
+ 52:50:38
+ 52:50:38
+ 52:50:38.1
+ 52:50:38
+ 52:50:38.1
+ 52:50:38.12
+ 52:50:38
+ 52:50:38.1
+ 52:50:38.12
+ 52:50:38.123
+ 52:50:38
+ 52:50:38.1
+ 52:50:38.12
+ 52:50:38.123
+ 52:50:38.1230
+ 52:50:38
+ 52:50:38.1
+ 52:50:38.12
+ 52:50:38.123
+ 52:50:38.1230
+ 52:50:38.12301
+ 52:50:38
+ 52:50:38.1
+ 52:50:38.12
+ 52:50:38.123
+ 52:50:38.1230
+ 52:50:38.12301
+ 52:50:38.123010
+ 2 04:50
+ 2 04:50
+ 2 04:50:38
+ 2 04:50:38
+ 2 04:50:38
+ 2 04:50:38
+ 2 04:50:38.1
+ 2 04:50:38
+ 2 04:50:38.1
+ 2 04:50:38.12
+ 2 04:50:38
+ 2 04:50:38.1
+ 2 04:50:38.12
+ 2 04:50:38.123
+ 2 04:50:38
+ 2 04:50:38.1
+ 2 04:50:38.12
+ 2 04:50:38.123
+ 2 04:50:38.1230
+ 2 04:50:38
+ 2 04:50:38.1
+ 2 04:50:38.12
+ 2 04:50:38.123
+ 2 04:50:38.1230
+ 2 04:50:38.12301
+ 2 04:50:38
+ 2 04:50:38.1
+ 2 04:50:38.12
+ 2 04:50:38.123
+ 2 04:50:38.1230
+ 2 04:50:38.12301
+ 2 04:50:38.123010
+ 60:31
+ 60:31
+ 60:31
+ 60:31:35
+ 60:31:35
+ 60:31:35
+ 60:31:35.2
+ 60:31:35
+ 60:31:35.2
+ 60:31:35.23
+ 60:31:35
+ 60:31:35.2
+ 60:31:35.23
+ 60:31:35.235
+ 60:31:35
+ 60:31:35.2
+ 60:31:35.23
+ 60:31:35.235
+ 60:31:35.2345
+ 60:31:35
+ 60:31:35.2
+ 60:31:35.23
+ 60:31:35.235
+ 60:31:35.2345
+ 60:31:35.23453
+ 60:31:35
+ 60:31:35.2
+ 60:31:35.23
+ 60:31:35.235
+ 60:31:35.2345
+ 60:31:35.23453
+ 60:31:35.234530
+ 2 12:31
+ 2 12:31
+ 2 12:31:35
+ 2 12:31:35
+ 2 12:31:35
+ 2 12:31:35
+ 2 12:31:35.2
+ 2 12:31:35
+ 2 12:31:35.2
+ 2 12:31:35.23
+ 2 12:31:35
+ 2 12:31:35.2
+ 2 12:31:35.23
+ 2 12:31:35.235
+ 2 12:31:35
+ 2 12:31:35.2
+ 2 12:31:35.23
+ 2 12:31:35.235
+ 2 12:31:35.2345
+ 2 12:31:35
+ 2 12:31:35.2
+ 2 12:31:35.23
+ 2 12:31:35.235
+ 2 12:31:35.2345
+ 2 12:31:35.23453
+ 2 12:31:35
+ 2 12:31:35.2
+ 2 12:31:35.23
+ 2 12:31:35.235
+ 2 12:31:35.2345
+ 2 12:31:35.23453
+ 2 12:31:35.234530
+ 60:47
+ 60:47
+ 60:47
+ 60:47:53
+ 60:47:53
+ 60:47:53
+ 60:47:53.3
+ 60:47:53
+ 60:47:53.3
+ 60:47:53.35
+ 60:47:53
+ 60:47:53.3
+ 60:47:53.35
+ 60:47:53.345
+ 60:47:53
+ 60:47:53.3
+ 60:47:53.35
+ 60:47:53.345
+ 60:47:53.3451
+ 60:47:53
+ 60:47:53.3
+ 60:47:53.35
+ 60:47:53.345
+ 60:47:53.3451
+ 60:47:53.34505
+ 60:47:53
+ 60:47:53.3
+ 60:47:53.35
+ 60:47:53.345
+ 60:47:53.3451
+ 60:47:53.34505
+ 60:47:53.345050
+ 2 12:47
+ 2 12:47
+ 2 12:47:53
+ 2 12:47:53
+ 2 12:47:53
+ 2 12:47:53
+ 2 12:47:53.3
+ 2 12:47:53
+ 2 12:47:53.3
+ 2 12:47:53.35
+ 2 12:47:53
+ 2 12:47:53.3
+ 2 12:47:53.35
+ 2 12:47:53.345
+ 2 12:47:53
+ 2 12:47:53.3
+ 2 12:47:53.35
+ 2 12:47:53.345
+ 2 12:47:53.3451
+ 2 12:47:53
+ 2 12:47:53.3
+ 2 12:47:53.35
+ 2 12:47:53.345
+ 2 12:47:53.3451
+ 2 12:47:53.34505
+ 2 12:47:53
+ 2 12:47:53.3
+ 2 12:47:53.35
+ 2 12:47:53.345
+ 2 12:47:53.3451
+ 2 12:47:53.34505
+ 2 12:47:53.345050
+ 49:26
+ 49:26
+ 49:26
+ 49:26:00
+ 49:26:00
+ 49:26:00
+ 49:26:00.5
+ 49:26:00
+ 49:26:00.5
+ 49:26:00.46
+ 49:26:00
+ 49:26:00.5
+ 49:26:00.46
+ 49:26:00.456
+ 49:26:00
+ 49:26:00.5
+ 49:26:00.46
+ 49:26:00.456
+ 49:26:00.4562
+ 49:26:00
+ 49:26:00.5
+ 49:26:00.46
+ 49:26:00.456
+ 49:26:00.4562
+ 49:26:00.45615
+ 49:26:00
+ 49:26:00.5
+ 49:26:00.46
+ 49:26:00.456
+ 49:26:00.4562
+ 49:26:00.45615
+ 49:26:00.456150
+ 2 01:26
+ 2 01:26
+ 2 01:26:00
+ 2 01:26:00
+ 2 01:26:00
+ 2 01:26:00
+ 2 01:26:00.5
+ 2 01:26:00
+ 2 01:26:00.5
+ 2 01:26:00.46
+ 2 01:26:00
+ 2 01:26:00.5
+ 2 01:26:00.46
+ 2 01:26:00.456
+ 2 01:26:00
+ 2 01:26:00.5
+ 2 01:26:00.46
+ 2 01:26:00.456
+ 2 01:26:00.4562
+ 2 01:26:00
+ 2 01:26:00.5
+ 2 01:26:00.46
+ 2 01:26:00.456
+ 2 01:26:00.4562
+ 2 01:26:00.45615
+ 2 01:26:00
+ 2 01:26:00.5
+ 2 01:26:00.46
+ 2 01:26:00.456
+ 2 01:26:00.4562
+ 2 01:26:00.45615
+ 2 01:26:00.456150
+ 68:58
+ 68:58
+ 68:58
+ 68:58:11
+ 68:58:11
+ 68:58:11
+ 68:58:11.6
+ 68:58:11
+ 68:58:11.6
+ 68:58:11.57
+ 68:58:11
+ 68:58:11.6
+ 68:58:11.57
+ 68:58:11.567
+ 68:58:11
+ 68:58:11.6
+ 68:58:11.57
+ 68:58:11.567
+ 68:58:11.5668
+ 68:58:11
+ 68:58:11.6
+ 68:58:11.57
+ 68:58:11.567
+ 68:58:11.5668
+ 68:58:11.56677
+ 68:58:11
+ 68:58:11.6
+ 68:58:11.57
+ 68:58:11.567
+ 68:58:11.5668
+ 68:58:11.56677
+ 68:58:11.566770
+ 2 20:58
+ 2 20:58
+ 2 20:58:11
+ 2 20:58:11
+ 2 20:58:11
+ 2 20:58:11
+ 2 20:58:11.6
+ 2 20:58:11
+ 2 20:58:11.6
+ 2 20:58:11.57
+ 2 20:58:11
+ 2 20:58:11.6
+ 2 20:58:11.57
+ 2 20:58:11.567
+ 2 20:58:11
+ 2 20:58:11.6
+ 2 20:58:11.57
+ 2 20:58:11.567
+ 2 20:58:11.5668
+ 2 20:58:11
+ 2 20:58:11.6
+ 2 20:58:11.57
+ 2 20:58:11.567
+ 2 20:58:11.5668
+ 2 20:58:11.56677
+ 2 20:58:11
+ 2 20:58:11.6
+ 2 20:58:11.57
+ 2 20:58:11.567
+ 2 20:58:11.5668
+ 2 20:58:11.56677
+ 2 20:58:11.566770
+ 55:36
+ 55:36
+ 55:36
+ 55:36:05
+ 55:36:05
+ 55:36:05
+ 55:36:05.2
+ 55:36:05
+ 55:36:05.2
+ 55:36:05.19
+ 55:36:05
+ 55:36:05.2
+ 55:36:05.19
+ 55:36:05.190
+ 55:36:05
+ 55:36:05.2
+ 55:36:05.19
+ 55:36:05.190
+ 55:36:05.1896
+ 55:36:05
+ 55:36:05.2
+ 55:36:05.19
+ 55:36:05.190
+ 55:36:05.1896
+ 55:36:05.18964
+ 55:36:05
+ 55:36:05.2
+ 55:36:05.19
+ 55:36:05.190
+ 55:36:05.1896
+ 55:36:05.18964
+ 55:36:05.189640
+ 2 07:36
+ 2 07:36
+ 2 07:36:05
+ 2 07:36:05
+ 2 07:36:05
+ 2 07:36:05
+ 2 07:36:05.2
+ 2 07:36:05
+ 2 07:36:05.2
+ 2 07:36:05.19
+ 2 07:36:05
+ 2 07:36:05.2
+ 2 07:36:05.19
+ 2 07:36:05.190
+ 2 07:36:05
+ 2 07:36:05.2
+ 2 07:36:05.19
+ 2 07:36:05.190
+ 2 07:36:05.1896
+ 2 07:36:05
+ 2 07:36:05.2
+ 2 07:36:05.19
+ 2 07:36:05.190
+ 2 07:36:05.1896
+ 2 07:36:05.18964
+ 2 07:36:05
+ 2 07:36:05.2
+ 2 07:36:05.19
+ 2 07:36:05.190
+ 2 07:36:05.1896
+ 2 07:36:05.18964
+ 2 07:36:05.189640
+ 63:43
+ 63:43
+ 63:43
+ 63:43:49
+ 63:43:49
+ 63:43:49
+ 63:43:49.8
+ 63:43:49
+ 63:43:49.8
+ 63:43:49.83
+ 63:43:49
+ 63:43:49.8
+ 63:43:49.83
+ 63:43:49.831
+ 63:43:49
+ 63:43:49.8
+ 63:43:49.83
+ 63:43:49.831
+ 63:43:49.8313
+ 63:43:49
+ 63:43:49.8
+ 63:43:49.83
+ 63:43:49.831
+ 63:43:49.8313
+ 63:43:49.83132
+ 63:43:49
+ 63:43:49.8
+ 63:43:49.83
+ 63:43:49.831
+ 63:43:49.8313
+ 63:43:49.83132
+ 63:43:49.831320
+ 2 15:43
+ 2 15:43
+ 2 15:43:49
+ 2 15:43:49
+ 2 15:43:49
+ 2 15:43:49
+ 2 15:43:49.8
+ 2 15:43:49
+ 2 15:43:49.8
+ 2 15:43:49.83
+ 2 15:43:49
+ 2 15:43:49.8
+ 2 15:43:49.83
+ 2 15:43:49.831
+ 2 15:43:49
+ 2 15:43:49.8
+ 2 15:43:49.83
+ 2 15:43:49.831
+ 2 15:43:49.8313
+ 2 15:43:49
+ 2 15:43:49.8
+ 2 15:43:49.83
+ 2 15:43:49.831
+ 2 15:43:49.8313
+ 2 15:43:49.83132
+ 2 15:43:49
+ 2 15:43:49.8
+ 2 15:43:49.83
+ 2 15:43:49.831
+ 2 15:43:49.8313
+ 2 15:43:49.83132
+ 2 15:43:49.831320
+ 52:25
+ 52:25
+ 52:25
+ 52:25:09
+ 52:25:09
+ 52:25:09
+ 52:25:09.0
+ 52:25:09
+ 52:25:09.0
+ 52:25:09.01
+ 52:25:09
+ 52:25:09.0
+ 52:25:09.01
+ 52:25:09.013
+ 52:25:09
+ 52:25:09.0
+ 52:25:09.01
+ 52:25:09.013
+ 52:25:09.0129
+ 52:25:09
+ 52:25:09.0
+ 52:25:09.01
+ 52:25:09.013
+ 52:25:09.0129
+ 52:25:09.01293
+ 52:25:09
+ 52:25:09.0
+ 52:25:09.01
+ 52:25:09.013
+ 52:25:09.0129
+ 52:25:09.01293
+ 52:25:09.012930
+ 2 04:25
+ 2 04:25
+ 2 04:25:09
+ 2 04:25:09
+ 2 04:25:09
+ 2 04:25:09
+ 2 04:25:09.0
+ 2 04:25:09
+ 2 04:25:09.0
+ 2 04:25:09.01
+ 2 04:25:09
+ 2 04:25:09.0
+ 2 04:25:09.01
+ 2 04:25:09.013
+ 2 04:25:09
+ 2 04:25:09.0
+ 2 04:25:09.01
+ 2 04:25:09.013
+ 2 04:25:09.0129
+ 2 04:25:09
+ 2 04:25:09.0
+ 2 04:25:09.01
+ 2 04:25:09.013
+ 2 04:25:09.0129
+ 2 04:25:09.01293
+ 2 04:25:09
+ 2 04:25:09.0
+ 2 04:25:09.01
+ 2 04:25:09.013
+ 2 04:25:09.0129
+ 2 04:25:09.01293
+ 2 04:25:09.012930
+ 54:49
+ 54:49
+ 54:49
+ 54:49:27
+ 54:49:27
+ 54:49:27
+ 54:49:27.5
+ 54:49:27
+ 54:49:27.5
+ 54:49:27.52
+ 54:49:27
+ 54:49:27.5
+ 54:49:27.52
+ 54:49:27.524
+ 54:49:27
+ 54:49:27.5
+ 54:49:27.52
+ 54:49:27.524
+ 54:49:27.5237
+ 54:49:27
+ 54:49:27.5
+ 54:49:27.52
+ 54:49:27.524
+ 54:49:27.5237
+ 54:49:27.52375
+ 54:49:27
+ 54:49:27.5
+ 54:49:27.52
+ 54:49:27.524
+ 54:49:27.5237
+ 54:49:27.52375
+ 54:49:27.523750
+ 2 06:49
+ 2 06:49
+ 2 06:49:27
+ 2 06:49:27
+ 2 06:49:27
+ 2 06:49:27
+ 2 06:49:27.5
+ 2 06:49:27
+ 2 06:49:27.5
+ 2 06:49:27.52
+ 2 06:49:27
+ 2 06:49:27.5
+ 2 06:49:27.52
+ 2 06:49:27.524
+ 2 06:49:27
+ 2 06:49:27.5
+ 2 06:49:27.52
+ 2 06:49:27.524
+ 2 06:49:27.5237
+ 2 06:49:27
+ 2 06:49:27.5
+ 2 06:49:27.52
+ 2 06:49:27.524
+ 2 06:49:27.5237
+ 2 06:49:27.52375
+ 2 06:49:27
+ 2 06:49:27.5
+ 2 06:49:27.52
+ 2 06:49:27.524
+ 2 06:49:27.5237
+ 2 06:49:27.52375
+ 2 06:49:27.523750
+ 50:57
+ 50:57
+ 50:57
+ 50:57:52
+ 50:57:52
+ 50:57:52
+ 50:57:52.0
+ 50:57:52
+ 50:57:52.0
+ 50:57:52.02
+ 50:57:52
+ 50:57:52.0
+ 50:57:52.02
+ 50:57:52.016
+ 50:57:52
+ 50:57:52.0
+ 50:57:52.02
+ 50:57:52.016
+ 50:57:52.0156
+ 50:57:52
+ 50:57:52.0
+ 50:57:52.02
+ 50:57:52.016
+ 50:57:52.0156
+ 50:57:52.01565
+ 50:57:52
+ 50:57:52.0
+ 50:57:52.02
+ 50:57:52.016
+ 50:57:52.0156
+ 50:57:52.01565
+ 50:57:52.015650
+ 2 02:57
+ 2 02:57
+ 2 02:57:52
+ 2 02:57:52
+ 2 02:57:52
+ 2 02:57:52
+ 2 02:57:52.0
+ 2 02:57:52
+ 2 02:57:52.0
+ 2 02:57:52.02
+ 2 02:57:52
+ 2 02:57:52.0
+ 2 02:57:52.02
+ 2 02:57:52.016
+ 2 02:57:52
+ 2 02:57:52.0
+ 2 02:57:52.02
+ 2 02:57:52.016
+ 2 02:57:52.0156
+ 2 02:57:52
+ 2 02:57:52.0
+ 2 02:57:52.02
+ 2 02:57:52.016
+ 2 02:57:52.0156
+ 2 02:57:52.01565
+ 2 02:57:52
+ 2 02:57:52.0
+ 2 02:57:52.02
+ 2 02:57:52.016
+ 2 02:57:52.0156
+ 2 02:57:52.01565
+ 2 02:57:52.015650
+ 64:45
+ 64:45
+ 64:45
+ 64:45:44
+ 64:45:44
+ 64:45:44
+ 64:45:44.9
+ 64:45:44
+ 64:45:44.9
+ 64:45:44.87
+ 64:45:44
+ 64:45:44.9
+ 64:45:44.87
+ 64:45:44.865
+ 64:45:44
+ 64:45:44.9
+ 64:45:44.87
+ 64:45:44.865
+ 64:45:44.8653
+ 64:45:44
+ 64:45:44.9
+ 64:45:44.87
+ 64:45:44.865
+ 64:45:44.8653
+ 64:45:44.86529
+ 64:45:44
+ 64:45:44.9
+ 64:45:44.87
+ 64:45:44.865
+ 64:45:44.8653
+ 64:45:44.86529
+ 64:45:44.865290
+ 2 16:45
+ 2 16:45
+ 2 16:45:44
+ 2 16:45:44
+ 2 16:45:44
+ 2 16:45:44
+ 2 16:45:44.9
+ 2 16:45:44
+ 2 16:45:44.9
+ 2 16:45:44.87
+ 2 16:45:44
+ 2 16:45:44.9
+ 2 16:45:44.87
+ 2 16:45:44.865
+ 2 16:45:44
+ 2 16:45:44.9
+ 2 16:45:44.87
+ 2 16:45:44.865
+ 2 16:45:44.8653
+ 2 16:45:44
+ 2 16:45:44.9
+ 2 16:45:44.87
+ 2 16:45:44.865
+ 2 16:45:44.8653
+ 2 16:45:44.86529
+ 2 16:45:44
+ 2 16:45:44.9
+ 2 16:45:44.87
+ 2 16:45:44.865
+ 2 16:45:44.8653
+ 2 16:45:44.86529
+ 2 16:45:44.865290
+ 69:30
+ 69:30
+ 69:30
+ 69:30:57
+ 69:30:57
+ 69:30:57
+ 69:30:57.8
+ 69:30:57
+ 69:30:57.8
+ 69:30:57.82
+ 69:30:57
+ 69:30:57.8
+ 69:30:57.82
+ 69:30:57.820
+ 69:30:57
+ 69:30:57.8
+ 69:30:57.82
+ 69:30:57.820
+ 69:30:57.8205
+ 69:30:57
+ 69:30:57.8
+ 69:30:57.82
+ 69:30:57.820
+ 69:30:57.8205
+ 69:30:57.82047
+ 69:30:57
+ 69:30:57.8
+ 69:30:57.82
+ 69:30:57.820
+ 69:30:57.8205
+ 69:30:57.82047
+ 69:30:57.820470
+ 2 21:30
+ 2 21:30
+ 2 21:30:57
+ 2 21:30:57
+ 2 21:30:57
+ 2 21:30:57
+ 2 21:30:57.8
+ 2 21:30:57
+ 2 21:30:57.8
+ 2 21:30:57.82
+ 2 21:30:57
+ 2 21:30:57.8
+ 2 21:30:57.82
+ 2 21:30:57.820
+ 2 21:30:57
+ 2 21:30:57.8
+ 2 21:30:57.82
+ 2 21:30:57.820
+ 2 21:30:57.8205
+ 2 21:30:57
+ 2 21:30:57.8
+ 2 21:30:57.82
+ 2 21:30:57.820
+ 2 21:30:57.8205
+ 2 21:30:57.82047
+ 2 21:30:57
+ 2 21:30:57.8
+ 2 21:30:57.82
+ 2 21:30:57.820
+ 2 21:30:57.8205
+ 2 21:30:57.82047
+ 2 21:30:57.820470
+ 52:25
+ 52:25
+ 52:25
+ 52:25:09
+ 52:25:09
+ 52:25:09
+ 52:25:09.2
+ 52:25:09
+ 52:25:09.2
+ 52:25:09.15
+ 52:25:09
+ 52:25:09.2
+ 52:25:09.15
+ 52:25:09.154
+ 52:25:09
+ 52:25:09.2
+ 52:25:09.15
+ 52:25:09.154
+ 52:25:09.1540
+ 52:25:09
+ 52:25:09.2
+ 52:25:09.15
+ 52:25:09.154
+ 52:25:09.1540
+ 52:25:09.15395
+ 52:25:09
+ 52:25:09.2
+ 52:25:09.15
+ 52:25:09.154
+ 52:25:09.1540
+ 52:25:09.15395
+ 52:25:09.153950
+ 2 04:25
+ 2 04:25
+ 2 04:25:09
+ 2 04:25:09
+ 2 04:25:09
+ 2 04:25:09
+ 2 04:25:09.2
+ 2 04:25:09
+ 2 04:25:09.2
+ 2 04:25:09.15
+ 2 04:25:09
+ 2 04:25:09.2
+ 2 04:25:09.15
+ 2 04:25:09.154
+ 2 04:25:09
+ 2 04:25:09.2
+ 2 04:25:09.15
+ 2 04:25:09.154
+ 2 04:25:09.1540
+ 2 04:25:09
+ 2 04:25:09.2
+ 2 04:25:09.15
+ 2 04:25:09.154
+ 2 04:25:09.1540
+ 2 04:25:09.15395
+ 2 04:25:09
+ 2 04:25:09.2
+ 2 04:25:09.15
+ 2 04:25:09.154
+ 2 04:25:09.1540
+ 2 04:25:09.15395
+ 2 04:25:09.153950
+ 54:49
+ 54:49
+ 54:49
+ 54:49:27
+ 54:49:27
+ 54:49:27
+ 54:49:27.1
+ 54:49:27
+ 54:49:27.1
+ 54:49:27.11
+ 54:49:27
+ 54:49:27.1
+ 54:49:27.11
+ 54:49:27.105
+ 54:49:27
+ 54:49:27.1
+ 54:49:27.11
+ 54:49:27.105
+ 54:49:27.1053
+ 54:49:27
+ 54:49:27.1
+ 54:49:27.11
+ 54:49:27.105
+ 54:49:27.1053
+ 54:49:27.10533
+ 54:49:27
+ 54:49:27.1
+ 54:49:27.11
+ 54:49:27.105
+ 54:49:27.1053
+ 54:49:27.10533
+ 54:49:27.105330
+ 2 06:49
+ 2 06:49
+ 2 06:49:27
+ 2 06:49:27
+ 2 06:49:27
+ 2 06:49:27
+ 2 06:49:27.1
+ 2 06:49:27
+ 2 06:49:27.1
+ 2 06:49:27.11
+ 2 06:49:27
+ 2 06:49:27.1
+ 2 06:49:27.11
+ 2 06:49:27.105
+ 2 06:49:27
+ 2 06:49:27.1
+ 2 06:49:27.11
+ 2 06:49:27.105
+ 2 06:49:27.1053
+ 2 06:49:27
+ 2 06:49:27.1
+ 2 06:49:27.11
+ 2 06:49:27.105
+ 2 06:49:27.1053
+ 2 06:49:27.10533
+ 2 06:49:27
+ 2 06:49:27.1
+ 2 06:49:27.11
+ 2 06:49:27.105
+ 2 06:49:27.1053
+ 2 06:49:27.10533
+ 2 06:49:27.105330
+ 50:57
+ 50:57
+ 50:57
+ 50:57:52
+ 50:57:52
+ 50:57:52
+ 50:57:52.5
+ 50:57:52
+ 50:57:52.5
+ 50:57:52.48
+ 50:57:52
+ 50:57:52.5
+ 50:57:52.48
+ 50:57:52.482
+ 50:57:52
+ 50:57:52.5
+ 50:57:52.48
+ 50:57:52.482
+ 50:57:52.4823
+ 50:57:52
+ 50:57:52.5
+ 50:57:52.48
+ 50:57:52.482
+ 50:57:52.4823
+ 50:57:52.48229
+ 50:57:52
+ 50:57:52.5
+ 50:57:52.48
+ 50:57:52.482
+ 50:57:52.4823
+ 50:57:52.48229
+ 50:57:52.482290
+ 2 02:57
+ 2 02:57
+ 2 02:57:52
+ 2 02:57:52
+ 2 02:57:52
+ 2 02:57:52
+ 2 02:57:52.5
+ 2 02:57:52
+ 2 02:57:52.5
+ 2 02:57:52.48
+ 2 02:57:52
+ 2 02:57:52.5
+ 2 02:57:52.48
+ 2 02:57:52.482
+ 2 02:57:52
+ 2 02:57:52.5
+ 2 02:57:52.48
+ 2 02:57:52.482
+ 2 02:57:52.4823
+ 2 02:57:52
+ 2 02:57:52.5
+ 2 02:57:52.48
+ 2 02:57:52.482
+ 2 02:57:52.4823
+ 2 02:57:52.48229
+ 2 02:57:52
+ 2 02:57:52.5
+ 2 02:57:52.48
+ 2 02:57:52.482
+ 2 02:57:52.4823
+ 2 02:57:52.48229
+ 2 02:57:52.482290
+ 64:45
+ 64:45
+ 64:45
+ 64:45:44
+ 64:45:44
+ 64:45:44
+ 64:45:44.7
+ 64:45:44
+ 64:45:44.7
+ 64:45:44.66
+ 64:45:44
+ 64:45:44.7
+ 64:45:44.66
+ 64:45:44.658
+ 64:45:44
+ 64:45:44.7
+ 64:45:44.66
+ 64:45:44.658
+ 64:45:44.6583
+ 64:45:44
+ 64:45:44.7
+ 64:45:44.66
+ 64:45:44.658
+ 64:45:44.6583
+ 64:45:44.65827
+ 64:45:44
+ 64:45:44.7
+ 64:45:44.66
+ 64:45:44.658
+ 64:45:44.6583
+ 64:45:44.65827
+ 64:45:44.658270
+ 2 16:45
+ 2 16:45
+ 2 16:45:44
+ 2 16:45:44
+ 2 16:45:44
+ 2 16:45:44
+ 2 16:45:44.7
+ 2 16:45:44
+ 2 16:45:44.7
+ 2 16:45:44.66
+ 2 16:45:44
+ 2 16:45:44.7
+ 2 16:45:44.66
+ 2 16:45:44.658
+ 2 16:45:44
+ 2 16:45:44.7
+ 2 16:45:44.66
+ 2 16:45:44.658
+ 2 16:45:44.6583
+ 2 16:45:44
+ 2 16:45:44.7
+ 2 16:45:44.66
+ 2 16:45:44.658
+ 2 16:45:44.6583
+ 2 16:45:44.65827
+ 2 16:45:44
+ 2 16:45:44.7
+ 2 16:45:44.66
+ 2 16:45:44.658
+ 2 16:45:44.6583
+ 2 16:45:44.65827
+ 2 16:45:44.658270
+ 69:30
+ 69:30
+ 69:30
+ 69:30:57
+ 69:30:57
+ 69:30:57
+ 69:30:57.6
+ 69:30:57
+ 69:30:57.6
+ 69:30:57.58
+ 69:30:57
+ 69:30:57.6
+ 69:30:57.58
+ 69:30:57.582
+ 69:30:57
+ 69:30:57.6
+ 69:30:57.58
+ 69:30:57.582
+ 69:30:57.5822
+ 69:30:57
+ 69:30:57.6
+ 69:30:57.58
+ 69:30:57.582
+ 69:30:57.5822
+ 69:30:57.58219
+ 69:30:57
+ 69:30:57.6
+ 69:30:57.58
+ 69:30:57.582
+ 69:30:57.5822
+ 69:30:57.58219
+ 69:30:57.582190
+ 2 21:30
+ 2 21:30
+ 2 21:30:57
+ 2 21:30:57
+ 2 21:30:57
+ 2 21:30:57
+ 2 21:30:57.6
+ 2 21:30:57
+ 2 21:30:57.6
+ 2 21:30:57.58
+ 2 21:30:57
+ 2 21:30:57.6
+ 2 21:30:57.58
+ 2 21:30:57.582
+ 2 21:30:57
+ 2 21:30:57.6
+ 2 21:30:57.58
+ 2 21:30:57.582
+ 2 21:30:57.5822
+ 2 21:30:57
+ 2 21:30:57.6
+ 2 21:30:57.58
+ 2 21:30:57.582
+ 2 21:30:57.5822
+ 2 21:30:57.58219
+ 2 21:30:57
+ 2 21:30:57.6
+ 2 21:30:57.58
+ 2 21:30:57.582
+ 2 21:30:57.5822
+ 2 21:30:57.58219
+ 2 21:30:57.582190
+ 70:30
+ 70:30
+ 70:30
+ 70:30:04
+ 70:30:04
+ 70:30:04
+ 70:30:04.2
+ 70:30:04
+ 70:30:04.2
+ 70:30:04.18
+ 70:30:04
+ 70:30:04.2
+ 70:30:04.18
+ 70:30:04.183
+ 70:30:04
+ 70:30:04.2
+ 70:30:04.18
+ 70:30:04.183
+ 70:30:04.1835
+ 70:30:04
+ 70:30:04.2
+ 70:30:04.18
+ 70:30:04.183
+ 70:30:04.1835
+ 70:30:04.18347
+ 70:30:04
+ 70:30:04.2
+ 70:30:04.18
+ 70:30:04.183
+ 70:30:04.1835
+ 70:30:04.18347
+ 70:30:04.183470
+ 2 22:30
+ 2 22:30
+ 2 22:30:04
+ 2 22:30:04
+ 2 22:30:04
+ 2 22:30:04
+ 2 22:30:04.2
+ 2 22:30:04
+ 2 22:30:04.2
+ 2 22:30:04.18
+ 2 22:30:04
+ 2 22:30:04.2
+ 2 22:30:04.18
+ 2 22:30:04.183
+ 2 22:30:04
+ 2 22:30:04.2
+ 2 22:30:04.18
+ 2 22:30:04.183
+ 2 22:30:04.1835
+ 2 22:30:04
+ 2 22:30:04.2
+ 2 22:30:04.18
+ 2 22:30:04.183
+ 2 22:30:04.1835
+ 2 22:30:04.18347
+ 2 22:30:04
+ 2 22:30:04.2
+ 2 22:30:04.18
+ 2 22:30:04.183
+ 2 22:30:04.1835
+ 2 22:30:04.18347
+ 2 22:30:04.183470
+ 49:56
+ 49:56
+ 49:56
+ 49:56:51
+ 49:56:51
+ 49:56:51
+ 49:56:51.6
+ 49:56:51
+ 49:56:51.6
+ 49:56:51.59
+ 49:56:51
+ 49:56:51.6
+ 49:56:51.59
+ 49:56:51.593
+ 49:56:51
+ 49:56:51.6
+ 49:56:51.59
+ 49:56:51.593
+ 49:56:51.5932
+ 49:56:51
+ 49:56:51.6
+ 49:56:51.59
+ 49:56:51.593
+ 49:56:51.5932
+ 49:56:51.59319
+ 49:56:51
+ 49:56:51.6
+ 49:56:51.59
+ 49:56:51.593
+ 49:56:51.5932
+ 49:56:51.59319
+ 49:56:51.593190
+ 2 01:56
+ 2 01:56
+ 2 01:56:51
+ 2 01:56:51
+ 2 01:56:51
+ 2 01:56:51
+ 2 01:56:51.6
+ 2 01:56:51
+ 2 01:56:51.6
+ 2 01:56:51.59
+ 2 01:56:51
+ 2 01:56:51.6
+ 2 01:56:51.59
+ 2 01:56:51.593
+ 2 01:56:51
+ 2 01:56:51.6
+ 2 01:56:51.59
+ 2 01:56:51.593
+ 2 01:56:51.5932
+ 2 01:56:51
+ 2 01:56:51.6
+ 2 01:56:51.59
+ 2 01:56:51.593
+ 2 01:56:51.5932
+ 2 01:56:51.59319
+ 2 01:56:51
+ 2 01:56:51.6
+ 2 01:56:51.59
+ 2 01:56:51.593
+ 2 01:56:51.5932
+ 2 01:56:51.59319
+ 2 01:56:51.593190
+ *****
+ ******
+ 1296:00
+ 1296:00
+ 1296:00
+ 1296:00:00
+ 1296:00:00
+ 1296:00:00
+ 1296:00:00
+ 1296:00:00
+ 1296:00:00
+ 1296:00:00.0
+ 1296:00:00.0
+ 1296:00:00.0
+ 1296:00:00
+ 1296:00:00.0
+ 1296:00:00.00
+ 1296:00:00.00
+ 1296:00:00.00
+ 1296:00:00
+ 1296:00:00.0
+ 1296:00:00.00
+ 1296:00:00.000
+ 1296:00:00.000
+ 1296:00:00.000
+ 1296:00:00
+ 1296:00:00.0
+ 1296:00:00.00
+ 1296:00:00.000
+ 1296:00:00.0000
+ 1296:00:00.0000
+ 1296:00:00.0000
+ 54 00:00
+ 54 00:00
+ 54 00:00
+ 54 00:00:00
+ 54 00:00:00
+ 54 00:00:00
+ 54 00:00:00.0
+ 54 00:00:00
+ 54 00:00:00.0
+ 54 00:00:00.00
+ 54 00:00:00
+ 54 00:00:00.0
+ 54 00:00:00.00
+ 54 00:00:00.000
+ 54 00:00:00
+ 54 00:00:00.0
+ 54 00:00:00.00
+ 54 00:00:00.000
+ 54 00:00:00.0000
+ 54 00:00:00
+ 54 00:00:00.0
+ 54 00:00:00.00
+ 54 00:00:00.000
+ 54 00:00:00.0000
+ 54 00:00:00.00000
+ 54 00:00:00
+ 54 00:00:00.0
+ 54 00:00:00.00
+ 54 00:00:00.000
+ 54 00:00:00.0000
+ 54 00:00:00.00000
+ 54 00:00:00.000000
+ *****
+ ******
+ 1300:50
+ 1300:50
+ 1300:50
+ 1300:50:38
+ 1300:50:38
+ 1300:50:38
+ 1300:50:38
+ 1300:50:38
+ 1300:50:38
+ 1300:50:38.1
+ 1300:50:38.1
+ 1300:50:38.1
+ 1300:50:38
+ 1300:50:38.1
+ 1300:50:38.12
+ 1300:50:38.12
+ 1300:50:38.12
+ 1300:50:38
+ 1300:50:38.1
+ 1300:50:38.12
+ 1300:50:38.123
+ 1300:50:38.123
+ 1300:50:38.123
+ 1300:50:38
+ 1300:50:38.1
+ 1300:50:38.12
+ 1300:50:38.123
+ 1300:50:38.1230
+ 1300:50:38.1230
+ 1300:50:38.1230
+ 54 04:50
+ 54 04:50
+ 54 04:50
+ 54 04:50:38
+ 54 04:50:38
+ 54 04:50:38
+ 54 04:50:38.1
+ 54 04:50:38
+ 54 04:50:38.1
+ 54 04:50:38.12
+ 54 04:50:38
+ 54 04:50:38.1
+ 54 04:50:38.12
+ 54 04:50:38.123
+ 54 04:50:38
+ 54 04:50:38.1
+ 54 04:50:38.12
+ 54 04:50:38.123
+ 54 04:50:38.1230
+ 54 04:50:38
+ 54 04:50:38.1
+ 54 04:50:38.12
+ 54 04:50:38.123
+ 54 04:50:38.1230
+ 54 04:50:38.12301
+ 54 04:50:38
+ 54 04:50:38.1
+ 54 04:50:38.12
+ 54 04:50:38.123
+ 54 04:50:38.1230
+ 54 04:50:38.12301
+ 54 04:50:38.123010
+ *****
+ ******
+ 1308:31
+ 1308:31
+ 1308:31
+ 1308:31:35
+ 1308:31:35
+ 1308:31:35
+ 1308:31:35
+ 1308:31:35
+ 1308:31:35
+ 1308:31:35.2
+ 1308:31:35.2
+ 1308:31:35.2
+ 1308:31:35
+ 1308:31:35.2
+ 1308:31:35.23
+ 1308:31:35.23
+ 1308:31:35.23
+ 1308:31:35
+ 1308:31:35.2
+ 1308:31:35.23
+ 1308:31:35.235
+ 1308:31:35.235
+ 1308:31:35.235
+ 1308:31:35
+ 1308:31:35.2
+ 1308:31:35.23
+ 1308:31:35.235
+ 1308:31:35.2345
+ 1308:31:35.2345
+ 1308:31:35.2345
+ 54 12:31
+ 54 12:31
+ 54 12:31
+ 54 12:31:35
+ 54 12:31:35
+ 54 12:31:35
+ 54 12:31:35.2
+ 54 12:31:35
+ 54 12:31:35.2
+ 54 12:31:35.23
+ 54 12:31:35
+ 54 12:31:35.2
+ 54 12:31:35.23
+ 54 12:31:35.235
+ 54 12:31:35
+ 54 12:31:35.2
+ 54 12:31:35.23
+ 54 12:31:35.235
+ 54 12:31:35.2345
+ 54 12:31:35
+ 54 12:31:35.2
+ 54 12:31:35.23
+ 54 12:31:35.235
+ 54 12:31:35.2345
+ 54 12:31:35.23453
+ 54 12:31:35
+ 54 12:31:35.2
+ 54 12:31:35.23
+ 54 12:31:35.235
+ 54 12:31:35.2345
+ 54 12:31:35.23453
+ 54 12:31:35.234530
+ *****
+ ******
+ 1308:47
+ 1308:47
+ 1308:47
+ 1308:47:53
+ 1308:47:53
+ 1308:47:53
+ 1308:47:53
+ 1308:47:53
+ 1308:47:53
+ 1308:47:53.3
+ 1308:47:53.3
+ 1308:47:53.3
+ 1308:47:53
+ 1308:47:53.3
+ 1308:47:53.35
+ 1308:47:53.35
+ 1308:47:53.35
+ 1308:47:53
+ 1308:47:53.3
+ 1308:47:53.35
+ 1308:47:53.345
+ 1308:47:53.345
+ 1308:47:53.345
+ 1308:47:53
+ 1308:47:53.3
+ 1308:47:53.35
+ 1308:47:53.345
+ 1308:47:53.3450
+ 1308:47:53.3450
+ 1308:47:53.3450
+ 54 12:47
+ 54 12:47
+ 54 12:47
+ 54 12:47:53
+ 54 12:47:53
+ 54 12:47:53
+ 54 12:47:53.3
+ 54 12:47:53
+ 54 12:47:53.3
+ 54 12:47:53.35
+ 54 12:47:53
+ 54 12:47:53.3
+ 54 12:47:53.35
+ 54 12:47:53.345
+ 54 12:47:53
+ 54 12:47:53.3
+ 54 12:47:53.35
+ 54 12:47:53.345
+ 54 12:47:53.3450
+ 54 12:47:53
+ 54 12:47:53.3
+ 54 12:47:53.35
+ 54 12:47:53.345
+ 54 12:47:53.3450
+ 54 12:47:53.34505
+ 54 12:47:53
+ 54 12:47:53.3
+ 54 12:47:53.35
+ 54 12:47:53.345
+ 54 12:47:53.3450
+ 54 12:47:53.34505
+ 54 12:47:53.345050
+ *****
+ ******
+ 1297:26
+ 1297:26
+ 1297:26
+ 1297:26:00
+ 1297:26:00
+ 1297:26:00
+ 1297:26:00
+ 1297:26:00
+ 1297:26:00
+ 1297:26:00.5
+ 1297:26:00.5
+ 1297:26:00.5
+ 1297:26:00
+ 1297:26:00.5
+ 1297:26:00.46
+ 1297:26:00.46
+ 1297:26:00.46
+ 1297:26:00
+ 1297:26:00.5
+ 1297:26:00.46
+ 1297:26:00.456
+ 1297:26:00.456
+ 1297:26:00.456
+ 1297:26:00
+ 1297:26:00.5
+ 1297:26:00.46
+ 1297:26:00.456
+ 1297:26:00.4561
+ 1297:26:00.4561
+ 1297:26:00.4561
+ 54 01:26
+ 54 01:26
+ 54 01:26
+ 54 01:26:00
+ 54 01:26:00
+ 54 01:26:00
+ 54 01:26:00.5
+ 54 01:26:00
+ 54 01:26:00.5
+ 54 01:26:00.46
+ 54 01:26:00
+ 54 01:26:00.5
+ 54 01:26:00.46
+ 54 01:26:00.456
+ 54 01:26:00
+ 54 01:26:00.5
+ 54 01:26:00.46
+ 54 01:26:00.456
+ 54 01:26:00.4561
+ 54 01:26:00
+ 54 01:26:00.5
+ 54 01:26:00.46
+ 54 01:26:00.456
+ 54 01:26:00.4561
+ 54 01:26:00.45615
+ 54 01:26:00
+ 54 01:26:00.5
+ 54 01:26:00.46
+ 54 01:26:00.456
+ 54 01:26:00.4561
+ 54 01:26:00.45615
+ 54 01:26:00.456150
+ *****
+ ******
+ 1316:58
+ 1316:58
+ 1316:58
+ 1316:58:11
+ 1316:58:11
+ 1316:58:11
+ 1316:58:11
+ 1316:58:11
+ 1316:58:11
+ 1316:58:11.6
+ 1316:58:11.6
+ 1316:58:11.6
+ 1316:58:11
+ 1316:58:11.6
+ 1316:58:11.57
+ 1316:58:11.57
+ 1316:58:11.57
+ 1316:58:11
+ 1316:58:11.6
+ 1316:58:11.57
+ 1316:58:11.567
+ 1316:58:11.567
+ 1316:58:11.567
+ 1316:58:11
+ 1316:58:11.6
+ 1316:58:11.57
+ 1316:58:11.567
+ 1316:58:11.5668
+ 1316:58:11.5668
+ 1316:58:11.5668
+ 54 20:58
+ 54 20:58
+ 54 20:58
+ 54 20:58:11
+ 54 20:58:11
+ 54 20:58:11
+ 54 20:58:11.6
+ 54 20:58:11
+ 54 20:58:11.6
+ 54 20:58:11.57
+ 54 20:58:11
+ 54 20:58:11.6
+ 54 20:58:11.57
+ 54 20:58:11.567
+ 54 20:58:11
+ 54 20:58:11.6
+ 54 20:58:11.57
+ 54 20:58:11.567
+ 54 20:58:11.5668
+ 54 20:58:11
+ 54 20:58:11.6
+ 54 20:58:11.57
+ 54 20:58:11.567
+ 54 20:58:11.5668
+ 54 20:58:11.56677
+ 54 20:58:11
+ 54 20:58:11.6
+ 54 20:58:11.57
+ 54 20:58:11.567
+ 54 20:58:11.5668
+ 54 20:58:11.56677
+ 54 20:58:11.566770
+ *****
+ ******
+ 1303:36
+ 1303:36
+ 1303:36
+ 1303:36:05
+ 1303:36:05
+ 1303:36:05
+ 1303:36:05
+ 1303:36:05
+ 1303:36:05
+ 1303:36:05.2
+ 1303:36:05.2
+ 1303:36:05.2
+ 1303:36:05
+ 1303:36:05.2
+ 1303:36:05.19
+ 1303:36:05.19
+ 1303:36:05.19
+ 1303:36:05
+ 1303:36:05.2
+ 1303:36:05.19
+ 1303:36:05.190
+ 1303:36:05.190
+ 1303:36:05.190
+ 1303:36:05
+ 1303:36:05.2
+ 1303:36:05.19
+ 1303:36:05.190
+ 1303:36:05.1896
+ 1303:36:05.1896
+ 1303:36:05.1896
+ 54 07:36
+ 54 07:36
+ 54 07:36
+ 54 07:36:05
+ 54 07:36:05
+ 54 07:36:05
+ 54 07:36:05.2
+ 54 07:36:05
+ 54 07:36:05.2
+ 54 07:36:05.19
+ 54 07:36:05
+ 54 07:36:05.2
+ 54 07:36:05.19
+ 54 07:36:05.190
+ 54 07:36:05
+ 54 07:36:05.2
+ 54 07:36:05.19
+ 54 07:36:05.190
+ 54 07:36:05.1896
+ 54 07:36:05
+ 54 07:36:05.2
+ 54 07:36:05.19
+ 54 07:36:05.190
+ 54 07:36:05.1896
+ 54 07:36:05.18964
+ 54 07:36:05
+ 54 07:36:05.2
+ 54 07:36:05.19
+ 54 07:36:05.190
+ 54 07:36:05.1896
+ 54 07:36:05.18964
+ 54 07:36:05.189640
+ *****
+ ******
+ 1311:43
+ 1311:43
+ 1311:43
+ 1311:43:49
+ 1311:43:49
+ 1311:43:49
+ 1311:43:49
+ 1311:43:49
+ 1311:43:49
+ 1311:43:49.8
+ 1311:43:49.8
+ 1311:43:49.8
+ 1311:43:49
+ 1311:43:49.8
+ 1311:43:49.83
+ 1311:43:49.83
+ 1311:43:49.83
+ 1311:43:49
+ 1311:43:49.8
+ 1311:43:49.83
+ 1311:43:49.831
+ 1311:43:49.831
+ 1311:43:49.831
+ 1311:43:49
+ 1311:43:49.8
+ 1311:43:49.83
+ 1311:43:49.831
+ 1311:43:49.8313
+ 1311:43:49.8313
+ 1311:43:49.8313
+ 54 15:43
+ 54 15:43
+ 54 15:43
+ 54 15:43:49
+ 54 15:43:49
+ 54 15:43:49
+ 54 15:43:49.8
+ 54 15:43:49
+ 54 15:43:49.8
+ 54 15:43:49.83
+ 54 15:43:49
+ 54 15:43:49.8
+ 54 15:43:49.83
+ 54 15:43:49.831
+ 54 15:43:49
+ 54 15:43:49.8
+ 54 15:43:49.83
+ 54 15:43:49.831
+ 54 15:43:49.8313
+ 54 15:43:49
+ 54 15:43:49.8
+ 54 15:43:49.83
+ 54 15:43:49.831
+ 54 15:43:49.8313
+ 54 15:43:49.83132
+ 54 15:43:49
+ 54 15:43:49.8
+ 54 15:43:49.83
+ 54 15:43:49.831
+ 54 15:43:49.8313
+ 54 15:43:49.83132
+ 54 15:43:49.831320
+ *****
+ ******
+ 1300:25
+ 1300:25
+ 1300:25
+ 1300:25:09
+ 1300:25:09
+ 1300:25:09
+ 1300:25:09
+ 1300:25:09
+ 1300:25:09
+ 1300:25:09.0
+ 1300:25:09.0
+ 1300:25:09.0
+ 1300:25:09
+ 1300:25:09.0
+ 1300:25:09.01
+ 1300:25:09.01
+ 1300:25:09.01
+ 1300:25:09
+ 1300:25:09.0
+ 1300:25:09.01
+ 1300:25:09.013
+ 1300:25:09.013
+ 1300:25:09.013
+ 1300:25:09
+ 1300:25:09.0
+ 1300:25:09.01
+ 1300:25:09.013
+ 1300:25:09.0129
+ 1300:25:09.0129
+ 1300:25:09.0129
+ 54 04:25
+ 54 04:25
+ 54 04:25
+ 54 04:25:09
+ 54 04:25:09
+ 54 04:25:09
+ 54 04:25:09.0
+ 54 04:25:09
+ 54 04:25:09.0
+ 54 04:25:09.01
+ 54 04:25:09
+ 54 04:25:09.0
+ 54 04:25:09.01
+ 54 04:25:09.013
+ 54 04:25:09
+ 54 04:25:09.0
+ 54 04:25:09.01
+ 54 04:25:09.013
+ 54 04:25:09.0129
+ 54 04:25:09
+ 54 04:25:09.0
+ 54 04:25:09.01
+ 54 04:25:09.013
+ 54 04:25:09.0129
+ 54 04:25:09.01293
+ 54 04:25:09
+ 54 04:25:09.0
+ 54 04:25:09.01
+ 54 04:25:09.013
+ 54 04:25:09.0129
+ 54 04:25:09.01293
+ 54 04:25:09.012930
+ *****
+ ******
+ 1302:49
+ 1302:49
+ 1302:49
+ 1302:49:27
+ 1302:49:27
+ 1302:49:27
+ 1302:49:27
+ 1302:49:27
+ 1302:49:27
+ 1302:49:27.5
+ 1302:49:27.5
+ 1302:49:27.5
+ 1302:49:27
+ 1302:49:27.5
+ 1302:49:27.52
+ 1302:49:27.52
+ 1302:49:27.52
+ 1302:49:27
+ 1302:49:27.5
+ 1302:49:27.52
+ 1302:49:27.524
+ 1302:49:27.524
+ 1302:49:27.524
+ 1302:49:27
+ 1302:49:27.5
+ 1302:49:27.52
+ 1302:49:27.524
+ 1302:49:27.5237
+ 1302:49:27.5237
+ 1302:49:27.5237
+ 54 06:49
+ 54 06:49
+ 54 06:49
+ 54 06:49:27
+ 54 06:49:27
+ 54 06:49:27
+ 54 06:49:27.5
+ 54 06:49:27
+ 54 06:49:27.5
+ 54 06:49:27.52
+ 54 06:49:27
+ 54 06:49:27.5
+ 54 06:49:27.52
+ 54 06:49:27.524
+ 54 06:49:27
+ 54 06:49:27.5
+ 54 06:49:27.52
+ 54 06:49:27.524
+ 54 06:49:27.5237
+ 54 06:49:27
+ 54 06:49:27.5
+ 54 06:49:27.52
+ 54 06:49:27.524
+ 54 06:49:27.5237
+ 54 06:49:27.52375
+ 54 06:49:27
+ 54 06:49:27.5
+ 54 06:49:27.52
+ 54 06:49:27.524
+ 54 06:49:27.5237
+ 54 06:49:27.52375
+ 54 06:49:27.523750
+ *****
+ ******
+ 1298:57
+ 1298:57
+ 1298:57
+ 1298:57:52
+ 1298:57:52
+ 1298:57:52
+ 1298:57:52
+ 1298:57:52
+ 1298:57:52
+ 1298:57:52.0
+ 1298:57:52.0
+ 1298:57:52.0
+ 1298:57:52
+ 1298:57:52.0
+ 1298:57:52.02
+ 1298:57:52.02
+ 1298:57:52.02
+ 1298:57:52
+ 1298:57:52.0
+ 1298:57:52.02
+ 1298:57:52.016
+ 1298:57:52.016
+ 1298:57:52.016
+ 1298:57:52
+ 1298:57:52.0
+ 1298:57:52.02
+ 1298:57:52.016
+ 1298:57:52.0157
+ 1298:57:52.0157
+ 1298:57:52.0157
+ 54 02:57
+ 54 02:57
+ 54 02:57
+ 54 02:57:52
+ 54 02:57:52
+ 54 02:57:52
+ 54 02:57:52.0
+ 54 02:57:52
+ 54 02:57:52.0
+ 54 02:57:52.02
+ 54 02:57:52
+ 54 02:57:52.0
+ 54 02:57:52.02
+ 54 02:57:52.016
+ 54 02:57:52
+ 54 02:57:52.0
+ 54 02:57:52.02
+ 54 02:57:52.016
+ 54 02:57:52.0157
+ 54 02:57:52
+ 54 02:57:52.0
+ 54 02:57:52.02
+ 54 02:57:52.016
+ 54 02:57:52.0157
+ 54 02:57:52.01565
+ 54 02:57:52
+ 54 02:57:52.0
+ 54 02:57:52.02
+ 54 02:57:52.016
+ 54 02:57:52.0157
+ 54 02:57:52.01565
+ 54 02:57:52.015650
+ *****
+ ******
+ 1312:45
+ 1312:45
+ 1312:45
+ 1312:45:44
+ 1312:45:44
+ 1312:45:44
+ 1312:45:44
+ 1312:45:44
+ 1312:45:44
+ 1312:45:44.9
+ 1312:45:44.9
+ 1312:45:44.9
+ 1312:45:44
+ 1312:45:44.9
+ 1312:45:44.87
+ 1312:45:44.87
+ 1312:45:44.87
+ 1312:45:44
+ 1312:45:44.9
+ 1312:45:44.87
+ 1312:45:44.865
+ 1312:45:44.865
+ 1312:45:44.865
+ 1312:45:44
+ 1312:45:44.9
+ 1312:45:44.87
+ 1312:45:44.865
+ 1312:45:44.8653
+ 1312:45:44.8653
+ 1312:45:44.8653
+ 54 16:45
+ 54 16:45
+ 54 16:45
+ 54 16:45:44
+ 54 16:45:44
+ 54 16:45:44
+ 54 16:45:44.9
+ 54 16:45:44
+ 54 16:45:44.9
+ 54 16:45:44.87
+ 54 16:45:44
+ 54 16:45:44.9
+ 54 16:45:44.87
+ 54 16:45:44.865
+ 54 16:45:44
+ 54 16:45:44.9
+ 54 16:45:44.87
+ 54 16:45:44.865
+ 54 16:45:44.8653
+ 54 16:45:44
+ 54 16:45:44.9
+ 54 16:45:44.87
+ 54 16:45:44.865
+ 54 16:45:44.8653
+ 54 16:45:44.86529
+ 54 16:45:44
+ 54 16:45:44.9
+ 54 16:45:44.87
+ 54 16:45:44.865
+ 54 16:45:44.8653
+ 54 16:45:44.86529
+ 54 16:45:44.865290
+ *****
+ ******
+ 1317:30
+ 1317:30
+ 1317:30
+ 1317:30:57
+ 1317:30:57
+ 1317:30:57
+ 1317:30:57
+ 1317:30:57
+ 1317:30:57
+ 1317:30:57.8
+ 1317:30:57.8
+ 1317:30:57.8
+ 1317:30:57
+ 1317:30:57.8
+ 1317:30:57.82
+ 1317:30:57.82
+ 1317:30:57.82
+ 1317:30:57
+ 1317:30:57.8
+ 1317:30:57.82
+ 1317:30:57.820
+ 1317:30:57.820
+ 1317:30:57.820
+ 1317:30:57
+ 1317:30:57.8
+ 1317:30:57.82
+ 1317:30:57.820
+ 1317:30:57.8205
+ 1317:30:57.8205
+ 1317:30:57.8205
+ 54 21:30
+ 54 21:30
+ 54 21:30
+ 54 21:30:57
+ 54 21:30:57
+ 54 21:30:57
+ 54 21:30:57.8
+ 54 21:30:57
+ 54 21:30:57.8
+ 54 21:30:57.82
+ 54 21:30:57
+ 54 21:30:57.8
+ 54 21:30:57.82
+ 54 21:30:57.820
+ 54 21:30:57
+ 54 21:30:57.8
+ 54 21:30:57.82
+ 54 21:30:57.820
+ 54 21:30:57.8205
+ 54 21:30:57
+ 54 21:30:57.8
+ 54 21:30:57.82
+ 54 21:30:57.820
+ 54 21:30:57.8205
+ 54 21:30:57.82047
+ 54 21:30:57
+ 54 21:30:57.8
+ 54 21:30:57.82
+ 54 21:30:57.820
+ 54 21:30:57.8205
+ 54 21:30:57.82047
+ 54 21:30:57.820470
+ *****
+ ******
+ 1300:25
+ 1300:25
+ 1300:25
+ 1300:25:09
+ 1300:25:09
+ 1300:25:09
+ 1300:25:09
+ 1300:25:09
+ 1300:25:09
+ 1300:25:09.2
+ 1300:25:09.2
+ 1300:25:09.2
+ 1300:25:09
+ 1300:25:09.2
+ 1300:25:09.15
+ 1300:25:09.15
+ 1300:25:09.15
+ 1300:25:09
+ 1300:25:09.2
+ 1300:25:09.15
+ 1300:25:09.154
+ 1300:25:09.154
+ 1300:25:09.154
+ 1300:25:09
+ 1300:25:09.2
+ 1300:25:09.15
+ 1300:25:09.154
+ 1300:25:09.1540
+ 1300:25:09.1540
+ 1300:25:09.1540
+ 54 04:25
+ 54 04:25
+ 54 04:25
+ 54 04:25:09
+ 54 04:25:09
+ 54 04:25:09
+ 54 04:25:09.2
+ 54 04:25:09
+ 54 04:25:09.2
+ 54 04:25:09.15
+ 54 04:25:09
+ 54 04:25:09.2
+ 54 04:25:09.15
+ 54 04:25:09.154
+ 54 04:25:09
+ 54 04:25:09.2
+ 54 04:25:09.15
+ 54 04:25:09.154
+ 54 04:25:09.1540
+ 54 04:25:09
+ 54 04:25:09.2
+ 54 04:25:09.15
+ 54 04:25:09.154
+ 54 04:25:09.1540
+ 54 04:25:09.15395
+ 54 04:25:09
+ 54 04:25:09.2
+ 54 04:25:09.15
+ 54 04:25:09.154
+ 54 04:25:09.1540
+ 54 04:25:09.15395
+ 54 04:25:09.153950
+ *****
+ ******
+ 1302:49
+ 1302:49
+ 1302:49
+ 1302:49:27
+ 1302:49:27
+ 1302:49:27
+ 1302:49:27
+ 1302:49:27
+ 1302:49:27
+ 1302:49:27.1
+ 1302:49:27.1
+ 1302:49:27.1
+ 1302:49:27
+ 1302:49:27.1
+ 1302:49:27.11
+ 1302:49:27.11
+ 1302:49:27.11
+ 1302:49:27
+ 1302:49:27.1
+ 1302:49:27.11
+ 1302:49:27.105
+ 1302:49:27.105
+ 1302:49:27.105
+ 1302:49:27
+ 1302:49:27.1
+ 1302:49:27.11
+ 1302:49:27.105
+ 1302:49:27.1053
+ 1302:49:27.1053
+ 1302:49:27.1053
+ 54 06:49
+ 54 06:49
+ 54 06:49
+ 54 06:49:27
+ 54 06:49:27
+ 54 06:49:27
+ 54 06:49:27.1
+ 54 06:49:27
+ 54 06:49:27.1
+ 54 06:49:27.11
+ 54 06:49:27
+ 54 06:49:27.1
+ 54 06:49:27.11
+ 54 06:49:27.105
+ 54 06:49:27
+ 54 06:49:27.1
+ 54 06:49:27.11
+ 54 06:49:27.105
+ 54 06:49:27.1053
+ 54 06:49:27
+ 54 06:49:27.1
+ 54 06:49:27.11
+ 54 06:49:27.105
+ 54 06:49:27.1053
+ 54 06:49:27.10533
+ 54 06:49:27
+ 54 06:49:27.1
+ 54 06:49:27.11
+ 54 06:49:27.105
+ 54 06:49:27.1053
+ 54 06:49:27.10533
+ 54 06:49:27.105330
+ *****
+ ******
+ 1298:57
+ 1298:57
+ 1298:57
+ 1298:57:52
+ 1298:57:52
+ 1298:57:52
+ 1298:57:52
+ 1298:57:52
+ 1298:57:52
+ 1298:57:52.5
+ 1298:57:52.5
+ 1298:57:52.5
+ 1298:57:52
+ 1298:57:52.5
+ 1298:57:52.48
+ 1298:57:52.48
+ 1298:57:52.48
+ 1298:57:52
+ 1298:57:52.5
+ 1298:57:52.48
+ 1298:57:52.482
+ 1298:57:52.482
+ 1298:57:52.482
+ 1298:57:52
+ 1298:57:52.5
+ 1298:57:52.48
+ 1298:57:52.482
+ 1298:57:52.4823
+ 1298:57:52.4823
+ 1298:57:52.4823
+ 54 02:57
+ 54 02:57
+ 54 02:57
+ 54 02:57:52
+ 54 02:57:52
+ 54 02:57:52
+ 54 02:57:52.5
+ 54 02:57:52
+ 54 02:57:52.5
+ 54 02:57:52.48
+ 54 02:57:52
+ 54 02:57:52.5
+ 54 02:57:52.48
+ 54 02:57:52.482
+ 54 02:57:52
+ 54 02:57:52.5
+ 54 02:57:52.48
+ 54 02:57:52.482
+ 54 02:57:52.4823
+ 54 02:57:52
+ 54 02:57:52.5
+ 54 02:57:52.48
+ 54 02:57:52.482
+ 54 02:57:52.4823
+ 54 02:57:52.48229
+ 54 02:57:52
+ 54 02:57:52.5
+ 54 02:57:52.48
+ 54 02:57:52.482
+ 54 02:57:52.4823
+ 54 02:57:52.48229
+ 54 02:57:52.482290
+ *****
+ ******
+ 1312:45
+ 1312:45
+ 1312:45
+ 1312:45:44
+ 1312:45:44
+ 1312:45:44
+ 1312:45:44
+ 1312:45:44
+ 1312:45:44
+ 1312:45:44.7
+ 1312:45:44.7
+ 1312:45:44.7
+ 1312:45:44
+ 1312:45:44.7
+ 1312:45:44.66
+ 1312:45:44.66
+ 1312:45:44.66
+ 1312:45:44
+ 1312:45:44.7
+ 1312:45:44.66
+ 1312:45:44.658
+ 1312:45:44.658
+ 1312:45:44.658
+ 1312:45:44
+ 1312:45:44.7
+ 1312:45:44.66
+ 1312:45:44.658
+ 1312:45:44.6583
+ 1312:45:44.6583
+ 1312:45:44.6583
+ 54 16:45
+ 54 16:45
+ 54 16:45
+ 54 16:45:44
+ 54 16:45:44
+ 54 16:45:44
+ 54 16:45:44.7
+ 54 16:45:44
+ 54 16:45:44.7
+ 54 16:45:44.66
+ 54 16:45:44
+ 54 16:45:44.7
+ 54 16:45:44.66
+ 54 16:45:44.658
+ 54 16:45:44
+ 54 16:45:44.7
+ 54 16:45:44.66
+ 54 16:45:44.658
+ 54 16:45:44.6583
+ 54 16:45:44
+ 54 16:45:44.7
+ 54 16:45:44.66
+ 54 16:45:44.658
+ 54 16:45:44.6583
+ 54 16:45:44.65827
+ 54 16:45:44
+ 54 16:45:44.7
+ 54 16:45:44.66
+ 54 16:45:44.658
+ 54 16:45:44.6583
+ 54 16:45:44.65827
+ 54 16:45:44.658270
+ *****
+ ******
+ 1317:30
+ 1317:30
+ 1317:30
+ 1317:30:57
+ 1317:30:57
+ 1317:30:57
+ 1317:30:57
+ 1317:30:57
+ 1317:30:57
+ 1317:30:57.6
+ 1317:30:57.6
+ 1317:30:57.6
+ 1317:30:57
+ 1317:30:57.6
+ 1317:30:57.58
+ 1317:30:57.58
+ 1317:30:57.58
+ 1317:30:57
+ 1317:30:57.6
+ 1317:30:57.58
+ 1317:30:57.582
+ 1317:30:57.582
+ 1317:30:57.582
+ 1317:30:57
+ 1317:30:57.6
+ 1317:30:57.58
+ 1317:30:57.582
+ 1317:30:57.5822
+ 1317:30:57.5822
+ 1317:30:57.5822
+ 54 21:30
+ 54 21:30
+ 54 21:30
+ 54 21:30:57
+ 54 21:30:57
+ 54 21:30:57
+ 54 21:30:57.6
+ 54 21:30:57
+ 54 21:30:57.6
+ 54 21:30:57.58
+ 54 21:30:57
+ 54 21:30:57.6
+ 54 21:30:57.58
+ 54 21:30:57.582
+ 54 21:30:57
+ 54 21:30:57.6
+ 54 21:30:57.58
+ 54 21:30:57.582
+ 54 21:30:57.5822
+ 54 21:30:57
+ 54 21:30:57.6
+ 54 21:30:57.58
+ 54 21:30:57.582
+ 54 21:30:57.5822
+ 54 21:30:57.58219
+ 54 21:30:57
+ 54 21:30:57.6
+ 54 21:30:57.58
+ 54 21:30:57.582
+ 54 21:30:57.5822
+ 54 21:30:57.58219
+ 54 21:30:57.582190
+ *****
+ ******
+ 1318:30
+ 1318:30
+ 1318:30
+ 1318:30:04
+ 1318:30:04
+ 1318:30:04
+ 1318:30:04
+ 1318:30:04
+ 1318:30:04
+ 1318:30:04.2
+ 1318:30:04.2
+ 1318:30:04.2
+ 1318:30:04
+ 1318:30:04.2
+ 1318:30:04.18
+ 1318:30:04.18
+ 1318:30:04.18
+ 1318:30:04
+ 1318:30:04.2
+ 1318:30:04.18
+ 1318:30:04.183
+ 1318:30:04.183
+ 1318:30:04.183
+ 1318:30:04
+ 1318:30:04.2
+ 1318:30:04.18
+ 1318:30:04.183
+ 1318:30:04.1835
+ 1318:30:04.1835
+ 1318:30:04.1835
+ 54 22:30
+ 54 22:30
+ 54 22:30
+ 54 22:30:04
+ 54 22:30:04
+ 54 22:30:04
+ 54 22:30:04.2
+ 54 22:30:04
+ 54 22:30:04.2
+ 54 22:30:04.18
+ 54 22:30:04
+ 54 22:30:04.2
+ 54 22:30:04.18
+ 54 22:30:04.183
+ 54 22:30:04
+ 54 22:30:04.2
+ 54 22:30:04.18
+ 54 22:30:04.183
+ 54 22:30:04.1835
+ 54 22:30:04
+ 54 22:30:04.2
+ 54 22:30:04.18
+ 54 22:30:04.183
+ 54 22:30:04.1835
+ 54 22:30:04.18347
+ 54 22:30:04
+ 54 22:30:04.2
+ 54 22:30:04.18
+ 54 22:30:04.183
+ 54 22:30:04.1835
+ 54 22:30:04.18347
+ 54 22:30:04.183470
+ *****
+ ******
+ 1297:56
+ 1297:56
+ 1297:56
+ 1297:56:51
+ 1297:56:51
+ 1297:56:51
+ 1297:56:51
+ 1297:56:51
+ 1297:56:51
+ 1297:56:51.6
+ 1297:56:51.6
+ 1297:56:51.6
+ 1297:56:51
+ 1297:56:51.6
+ 1297:56:51.59
+ 1297:56:51.59
+ 1297:56:51.59
+ 1297:56:51
+ 1297:56:51.6
+ 1297:56:51.59
+ 1297:56:51.593
+ 1297:56:51.593
+ 1297:56:51.593
+ 1297:56:51
+ 1297:56:51.6
+ 1297:56:51.59
+ 1297:56:51.593
+ 1297:56:51.5932
+ 1297:56:51.5932
+ 1297:56:51.5932
+ 54 01:56
+ 54 01:56
+ 54 01:56
+ 54 01:56:51
+ 54 01:56:51
+ 54 01:56:51
+ 54 01:56:51.6
+ 54 01:56:51
+ 54 01:56:51.6
+ 54 01:56:51.59
+ 54 01:56:51
+ 54 01:56:51.6
+ 54 01:56:51.59
+ 54 01:56:51.593
+ 54 01:56:51
+ 54 01:56:51.6
+ 54 01:56:51.59
+ 54 01:56:51.593
+ 54 01:56:51.5932
+ 54 01:56:51
+ 54 01:56:51.6
+ 54 01:56:51.59
+ 54 01:56:51.593
+ 54 01:56:51.5932
+ 54 01:56:51.59319
+ 54 01:56:51
+ 54 01:56:51.6
+ 54 01:56:51.59
+ 54 01:56:51.593
+ 54 01:56:51.5932
+ 54 01:56:51.59319
+ 54 01:56:51.593190
+ *****
+ ******
+ *******
+ 16344:00
+ 16344:00
+ 16344:00
+ 16344:00
+ 16344:00:00
+ 16344:00:00
+ 16344:00:00
+ 16344:00:00
+ 16344:00:00
+ 16344:00:00
+ 16344:00:00
+ 16344:00:00
+ 16344:00:00.0
+ 16344:00:00.0
+ 16344:00:00.0
+ 16344:00:00.0
+ 16344:00:00
+ 16344:00:00.0
+ 16344:00:00.00
+ 16344:00:00.00
+ 16344:00:00.00
+ 16344:00:00.00
+ 16344:00:00
+ 16344:00:00.0
+ 16344:00:00.00
+ 16344:00:00.000
+ 16344:00:00.000
+ 16344:00:00.000
+ 16344:00:00.000
+ ********
+ 681 00:00
+ 681 00:00
+ 681 00:00
+ 681 00:00:00
+ 681 00:00:00
+ 681 00:00:00
+ 681 00:00:00
+ 681 00:00:00.0
+ 681 00:00:00.0
+ 681 00:00:00
+ 681 00:00:00.0
+ 681 00:00:00.00
+ 681 00:00:00.00
+ 681 00:00:00
+ 681 00:00:00.0
+ 681 00:00:00.00
+ 681 00:00:00.000
+ 681 00:00:00.000
+ 681 00:00:00
+ 681 00:00:00.0
+ 681 00:00:00.00
+ 681 00:00:00.000
+ 681 00:00:00.0000
+ 681 00:00:00.0000
+ 681 00:00:00
+ 681 00:00:00.0
+ 681 00:00:00.00
+ 681 00:00:00.000
+ 681 00:00:00.0000
+ 681 00:00:00.00000
+ 681 00:00:00.00000
+ *****
+ ******
+ *******
+ 16348:50
+ 16348:50
+ 16348:50
+ 16348:50
+ 16348:50:38
+ 16348:50:38
+ 16348:50:38
+ 16348:50:38
+ 16348:50:38
+ 16348:50:38
+ 16348:50:38
+ 16348:50:38
+ 16348:50:38.1
+ 16348:50:38.1
+ 16348:50:38.1
+ 16348:50:38.1
+ 16348:50:38
+ 16348:50:38.1
+ 16348:50:38.12
+ 16348:50:38.12
+ 16348:50:38.12
+ 16348:50:38.12
+ 16348:50:38
+ 16348:50:38.1
+ 16348:50:38.12
+ 16348:50:38.123
+ 16348:50:38.123
+ 16348:50:38.123
+ 16348:50:38.123
+ ********
+ 681 04:50
+ 681 04:50
+ 681 04:50
+ 681 04:50:38
+ 681 04:50:38
+ 681 04:50:38
+ 681 04:50:38
+ 681 04:50:38.1
+ 681 04:50:38.1
+ 681 04:50:38
+ 681 04:50:38.1
+ 681 04:50:38.12
+ 681 04:50:38.12
+ 681 04:50:38
+ 681 04:50:38.1
+ 681 04:50:38.12
+ 681 04:50:38.123
+ 681 04:50:38.123
+ 681 04:50:38
+ 681 04:50:38.1
+ 681 04:50:38.12
+ 681 04:50:38.123
+ 681 04:50:38.1230
+ 681 04:50:38.1230
+ 681 04:50:38
+ 681 04:50:38.1
+ 681 04:50:38.12
+ 681 04:50:38.123
+ 681 04:50:38.1230
+ 681 04:50:38.12301
+ 681 04:50:38.12301
+ *****
+ ******
+ *******
+ 16356:31
+ 16356:31
+ 16356:31
+ 16356:31
+ 16356:31:35
+ 16356:31:35
+ 16356:31:35
+ 16356:31:35
+ 16356:31:35
+ 16356:31:35
+ 16356:31:35
+ 16356:31:35
+ 16356:31:35.2
+ 16356:31:35.2
+ 16356:31:35.2
+ 16356:31:35.2
+ 16356:31:35
+ 16356:31:35.2
+ 16356:31:35.23
+ 16356:31:35.23
+ 16356:31:35.23
+ 16356:31:35.23
+ 16356:31:35
+ 16356:31:35.2
+ 16356:31:35.23
+ 16356:31:35.235
+ 16356:31:35.235
+ 16356:31:35.235
+ 16356:31:35.235
+ ********
+ 681 12:31
+ 681 12:31
+ 681 12:31
+ 681 12:31:35
+ 681 12:31:35
+ 681 12:31:35
+ 681 12:31:35
+ 681 12:31:35.2
+ 681 12:31:35.2
+ 681 12:31:35
+ 681 12:31:35.2
+ 681 12:31:35.23
+ 681 12:31:35.23
+ 681 12:31:35
+ 681 12:31:35.2
+ 681 12:31:35.23
+ 681 12:31:35.235
+ 681 12:31:35.235
+ 681 12:31:35
+ 681 12:31:35.2
+ 681 12:31:35.23
+ 681 12:31:35.235
+ 681 12:31:35.2345
+ 681 12:31:35.2345
+ 681 12:31:35
+ 681 12:31:35.2
+ 681 12:31:35.23
+ 681 12:31:35.235
+ 681 12:31:35.2345
+ 681 12:31:35.23453
+ 681 12:31:35.23453
+ *****
+ ******
+ *******
+ 16356:47
+ 16356:47
+ 16356:47
+ 16356:47
+ 16356:47:53
+ 16356:47:53
+ 16356:47:53
+ 16356:47:53
+ 16356:47:53
+ 16356:47:53
+ 16356:47:53
+ 16356:47:53
+ 16356:47:53.3
+ 16356:47:53.3
+ 16356:47:53.3
+ 16356:47:53.3
+ 16356:47:53
+ 16356:47:53.3
+ 16356:47:53.35
+ 16356:47:53.35
+ 16356:47:53.35
+ 16356:47:53.35
+ 16356:47:53
+ 16356:47:53.3
+ 16356:47:53.35
+ 16356:47:53.345
+ 16356:47:53.345
+ 16356:47:53.345
+ 16356:47:53.345
+ ********
+ 681 12:47
+ 681 12:47
+ 681 12:47
+ 681 12:47:53
+ 681 12:47:53
+ 681 12:47:53
+ 681 12:47:53
+ 681 12:47:53.3
+ 681 12:47:53.3
+ 681 12:47:53
+ 681 12:47:53.3
+ 681 12:47:53.35
+ 681 12:47:53.35
+ 681 12:47:53
+ 681 12:47:53.3
+ 681 12:47:53.35
+ 681 12:47:53.345
+ 681 12:47:53.345
+ 681 12:47:53
+ 681 12:47:53.3
+ 681 12:47:53.35
+ 681 12:47:53.345
+ 681 12:47:53.3450
+ 681 12:47:53.3450
+ 681 12:47:53
+ 681 12:47:53.3
+ 681 12:47:53.35
+ 681 12:47:53.345
+ 681 12:47:53.3450
+ 681 12:47:53.34505
+ 681 12:47:53.34505
+ *****
+ ******
+ *******
+ 16345:26
+ 16345:26
+ 16345:26
+ 16345:26
+ 16345:26:00
+ 16345:26:00
+ 16345:26:00
+ 16345:26:00
+ 16345:26:00
+ 16345:26:00
+ 16345:26:00
+ 16345:26:00
+ 16345:26:00.5
+ 16345:26:00.5
+ 16345:26:00.5
+ 16345:26:00.5
+ 16345:26:00
+ 16345:26:00.5
+ 16345:26:00.46
+ 16345:26:00.46
+ 16345:26:00.46
+ 16345:26:00.46
+ 16345:26:00
+ 16345:26:00.5
+ 16345:26:00.46
+ 16345:26:00.456
+ 16345:26:00.456
+ 16345:26:00.456
+ 16345:26:00.456
+ ********
+ 681 01:26
+ 681 01:26
+ 681 01:26
+ 681 01:26:00
+ 681 01:26:00
+ 681 01:26:00
+ 681 01:26:00
+ 681 01:26:00.5
+ 681 01:26:00.5
+ 681 01:26:00
+ 681 01:26:00.5
+ 681 01:26:00.46
+ 681 01:26:00.46
+ 681 01:26:00
+ 681 01:26:00.5
+ 681 01:26:00.46
+ 681 01:26:00.456
+ 681 01:26:00.456
+ 681 01:26:00
+ 681 01:26:00.5
+ 681 01:26:00.46
+ 681 01:26:00.456
+ 681 01:26:00.4562
+ 681 01:26:00.4562
+ 681 01:26:00
+ 681 01:26:00.5
+ 681 01:26:00.46
+ 681 01:26:00.456
+ 681 01:26:00.4562
+ 681 01:26:00.45615
+ 681 01:26:00.45615
+ *****
+ ******
+ *******
+ 16364:58
+ 16364:58
+ 16364:58
+ 16364:58
+ 16364:58:11
+ 16364:58:11
+ 16364:58:11
+ 16364:58:11
+ 16364:58:11
+ 16364:58:11
+ 16364:58:11
+ 16364:58:11
+ 16364:58:11.6
+ 16364:58:11.6
+ 16364:58:11.6
+ 16364:58:11.6
+ 16364:58:11
+ 16364:58:11.6
+ 16364:58:11.57
+ 16364:58:11.57
+ 16364:58:11.57
+ 16364:58:11.57
+ 16364:58:11
+ 16364:58:11.6
+ 16364:58:11.57
+ 16364:58:11.567
+ 16364:58:11.567
+ 16364:58:11.567
+ 16364:58:11.567
+ ********
+ 681 20:58
+ 681 20:58
+ 681 20:58
+ 681 20:58:11
+ 681 20:58:11
+ 681 20:58:11
+ 681 20:58:11
+ 681 20:58:11.6
+ 681 20:58:11.6
+ 681 20:58:11
+ 681 20:58:11.6
+ 681 20:58:11.57
+ 681 20:58:11.57
+ 681 20:58:11
+ 681 20:58:11.6
+ 681 20:58:11.57
+ 681 20:58:11.567
+ 681 20:58:11.567
+ 681 20:58:11
+ 681 20:58:11.6
+ 681 20:58:11.57
+ 681 20:58:11.567
+ 681 20:58:11.5668
+ 681 20:58:11.5668
+ 681 20:58:11
+ 681 20:58:11.6
+ 681 20:58:11.57
+ 681 20:58:11.567
+ 681 20:58:11.5668
+ 681 20:58:11.56677
+ 681 20:58:11.56677
+ *****
+ ******
+ *******
+ 16351:36
+ 16351:36
+ 16351:36
+ 16351:36
+ 16351:36:05
+ 16351:36:05
+ 16351:36:05
+ 16351:36:05
+ 16351:36:05
+ 16351:36:05
+ 16351:36:05
+ 16351:36:05
+ 16351:36:05.2
+ 16351:36:05.2
+ 16351:36:05.2
+ 16351:36:05.2
+ 16351:36:05
+ 16351:36:05.2
+ 16351:36:05.19
+ 16351:36:05.19
+ 16351:36:05.19
+ 16351:36:05.19
+ 16351:36:05
+ 16351:36:05.2
+ 16351:36:05.19
+ 16351:36:05.190
+ 16351:36:05.190
+ 16351:36:05.190
+ 16351:36:05.190
+ ********
+ 681 07:36
+ 681 07:36
+ 681 07:36
+ 681 07:36:05
+ 681 07:36:05
+ 681 07:36:05
+ 681 07:36:05
+ 681 07:36:05.2
+ 681 07:36:05.2
+ 681 07:36:05
+ 681 07:36:05.2
+ 681 07:36:05.19
+ 681 07:36:05.19
+ 681 07:36:05
+ 681 07:36:05.2
+ 681 07:36:05.19
+ 681 07:36:05.190
+ 681 07:36:05.190
+ 681 07:36:05
+ 681 07:36:05.2
+ 681 07:36:05.19
+ 681 07:36:05.190
+ 681 07:36:05.1896
+ 681 07:36:05.1896
+ 681 07:36:05
+ 681 07:36:05.2
+ 681 07:36:05.19
+ 681 07:36:05.190
+ 681 07:36:05.1896
+ 681 07:36:05.18964
+ 681 07:36:05.18964
+ *****
+ ******
+ *******
+ 16359:43
+ 16359:43
+ 16359:43
+ 16359:43
+ 16359:43:49
+ 16359:43:49
+ 16359:43:49
+ 16359:43:49
+ 16359:43:49
+ 16359:43:49
+ 16359:43:49
+ 16359:43:49
+ 16359:43:49.8
+ 16359:43:49.8
+ 16359:43:49.8
+ 16359:43:49.8
+ 16359:43:49
+ 16359:43:49.8
+ 16359:43:49.83
+ 16359:43:49.83
+ 16359:43:49.83
+ 16359:43:49.83
+ 16359:43:49
+ 16359:43:49.8
+ 16359:43:49.83
+ 16359:43:49.831
+ 16359:43:49.831
+ 16359:43:49.831
+ 16359:43:49.831
+ ********
+ 681 15:43
+ 681 15:43
+ 681 15:43
+ 681 15:43:49
+ 681 15:43:49
+ 681 15:43:49
+ 681 15:43:49
+ 681 15:43:49.8
+ 681 15:43:49.8
+ 681 15:43:49
+ 681 15:43:49.8
+ 681 15:43:49.83
+ 681 15:43:49.83
+ 681 15:43:49
+ 681 15:43:49.8
+ 681 15:43:49.83
+ 681 15:43:49.831
+ 681 15:43:49.831
+ 681 15:43:49
+ 681 15:43:49.8
+ 681 15:43:49.83
+ 681 15:43:49.831
+ 681 15:43:49.8313
+ 681 15:43:49.8313
+ 681 15:43:49
+ 681 15:43:49.8
+ 681 15:43:49.83
+ 681 15:43:49.831
+ 681 15:43:49.8313
+ 681 15:43:49.83132
+ 681 15:43:49.83132
+ *****
+ ******
+ *******
+ 16348:25
+ 16348:25
+ 16348:25
+ 16348:25
+ 16348:25:09
+ 16348:25:09
+ 16348:25:09
+ 16348:25:09
+ 16348:25:09
+ 16348:25:09
+ 16348:25:09
+ 16348:25:09
+ 16348:25:09.0
+ 16348:25:09.0
+ 16348:25:09.0
+ 16348:25:09.0
+ 16348:25:09
+ 16348:25:09.0
+ 16348:25:09.01
+ 16348:25:09.01
+ 16348:25:09.01
+ 16348:25:09.01
+ 16348:25:09
+ 16348:25:09.0
+ 16348:25:09.01
+ 16348:25:09.013
+ 16348:25:09.013
+ 16348:25:09.013
+ 16348:25:09.013
+ ********
+ 681 04:25
+ 681 04:25
+ 681 04:25
+ 681 04:25:09
+ 681 04:25:09
+ 681 04:25:09
+ 681 04:25:09
+ 681 04:25:09.0
+ 681 04:25:09.0
+ 681 04:25:09
+ 681 04:25:09.0
+ 681 04:25:09.01
+ 681 04:25:09.01
+ 681 04:25:09
+ 681 04:25:09.0
+ 681 04:25:09.01
+ 681 04:25:09.013
+ 681 04:25:09.013
+ 681 04:25:09
+ 681 04:25:09.0
+ 681 04:25:09.01
+ 681 04:25:09.013
+ 681 04:25:09.0129
+ 681 04:25:09.0129
+ 681 04:25:09
+ 681 04:25:09.0
+ 681 04:25:09.01
+ 681 04:25:09.013
+ 681 04:25:09.0129
+ 681 04:25:09.01293
+ 681 04:25:09.01293
+ *****
+ ******
+ *******
+ 16350:49
+ 16350:49
+ 16350:49
+ 16350:49
+ 16350:49:27
+ 16350:49:27
+ 16350:49:27
+ 16350:49:27
+ 16350:49:27
+ 16350:49:27
+ 16350:49:27
+ 16350:49:27
+ 16350:49:27.5
+ 16350:49:27.5
+ 16350:49:27.5
+ 16350:49:27.5
+ 16350:49:27
+ 16350:49:27.5
+ 16350:49:27.52
+ 16350:49:27.52
+ 16350:49:27.52
+ 16350:49:27.52
+ 16350:49:27
+ 16350:49:27.5
+ 16350:49:27.52
+ 16350:49:27.524
+ 16350:49:27.524
+ 16350:49:27.524
+ 16350:49:27.524
+ ********
+ 681 06:49
+ 681 06:49
+ 681 06:49
+ 681 06:49:27
+ 681 06:49:27
+ 681 06:49:27
+ 681 06:49:27
+ 681 06:49:27.5
+ 681 06:49:27.5
+ 681 06:49:27
+ 681 06:49:27.5
+ 681 06:49:27.52
+ 681 06:49:27.52
+ 681 06:49:27
+ 681 06:49:27.5
+ 681 06:49:27.52
+ 681 06:49:27.524
+ 681 06:49:27.524
+ 681 06:49:27
+ 681 06:49:27.5
+ 681 06:49:27.52
+ 681 06:49:27.524
+ 681 06:49:27.5237
+ 681 06:49:27.5237
+ 681 06:49:27
+ 681 06:49:27.5
+ 681 06:49:27.52
+ 681 06:49:27.524
+ 681 06:49:27.5237
+ 681 06:49:27.52375
+ 681 06:49:27.52375
+ *****
+ ******
+ *******
+ 16346:57
+ 16346:57
+ 16346:57
+ 16346:57
+ 16346:57:52
+ 16346:57:52
+ 16346:57:52
+ 16346:57:52
+ 16346:57:52
+ 16346:57:52
+ 16346:57:52
+ 16346:57:52
+ 16346:57:52.0
+ 16346:57:52.0
+ 16346:57:52.0
+ 16346:57:52.0
+ 16346:57:52
+ 16346:57:52.0
+ 16346:57:52.02
+ 16346:57:52.02
+ 16346:57:52.02
+ 16346:57:52.02
+ 16346:57:52
+ 16346:57:52.0
+ 16346:57:52.02
+ 16346:57:52.016
+ 16346:57:52.016
+ 16346:57:52.016
+ 16346:57:52.016
+ ********
+ 681 02:57
+ 681 02:57
+ 681 02:57
+ 681 02:57:52
+ 681 02:57:52
+ 681 02:57:52
+ 681 02:57:52
+ 681 02:57:52.0
+ 681 02:57:52.0
+ 681 02:57:52
+ 681 02:57:52.0
+ 681 02:57:52.02
+ 681 02:57:52.02
+ 681 02:57:52
+ 681 02:57:52.0
+ 681 02:57:52.02
+ 681 02:57:52.016
+ 681 02:57:52.016
+ 681 02:57:52
+ 681 02:57:52.0
+ 681 02:57:52.02
+ 681 02:57:52.016
+ 681 02:57:52.0156
+ 681 02:57:52.0156
+ 681 02:57:52
+ 681 02:57:52.0
+ 681 02:57:52.02
+ 681 02:57:52.016
+ 681 02:57:52.0156
+ 681 02:57:52.01565
+ 681 02:57:52.01565
+ *****
+ ******
+ *******
+ 16360:45
+ 16360:45
+ 16360:45
+ 16360:45
+ 16360:45:44
+ 16360:45:44
+ 16360:45:44
+ 16360:45:44
+ 16360:45:44
+ 16360:45:44
+ 16360:45:44
+ 16360:45:44
+ 16360:45:44.9
+ 16360:45:44.9
+ 16360:45:44.9
+ 16360:45:44.9
+ 16360:45:44
+ 16360:45:44.9
+ 16360:45:44.87
+ 16360:45:44.87
+ 16360:45:44.87
+ 16360:45:44.87
+ 16360:45:44
+ 16360:45:44.9
+ 16360:45:44.87
+ 16360:45:44.865
+ 16360:45:44.865
+ 16360:45:44.865
+ 16360:45:44.865
+ ********
+ 681 16:45
+ 681 16:45
+ 681 16:45
+ 681 16:45:44
+ 681 16:45:44
+ 681 16:45:44
+ 681 16:45:44
+ 681 16:45:44.9
+ 681 16:45:44.9
+ 681 16:45:44
+ 681 16:45:44.9
+ 681 16:45:44.87
+ 681 16:45:44.87
+ 681 16:45:44
+ 681 16:45:44.9
+ 681 16:45:44.87
+ 681 16:45:44.865
+ 681 16:45:44.865
+ 681 16:45:44
+ 681 16:45:44.9
+ 681 16:45:44.87
+ 681 16:45:44.865
+ 681 16:45:44.8653
+ 681 16:45:44.8653
+ 681 16:45:44
+ 681 16:45:44.9
+ 681 16:45:44.87
+ 681 16:45:44.865
+ 681 16:45:44.8653
+ 681 16:45:44.86529
+ 681 16:45:44.86529
+ *****
+ ******
+ *******
+ 16365:30
+ 16365:30
+ 16365:30
+ 16365:30
+ 16365:30:57
+ 16365:30:57
+ 16365:30:57
+ 16365:30:57
+ 16365:30:57
+ 16365:30:57
+ 16365:30:57
+ 16365:30:57
+ 16365:30:57.8
+ 16365:30:57.8
+ 16365:30:57.8
+ 16365:30:57.8
+ 16365:30:57
+ 16365:30:57.8
+ 16365:30:57.82
+ 16365:30:57.82
+ 16365:30:57.82
+ 16365:30:57.82
+ 16365:30:57
+ 16365:30:57.8
+ 16365:30:57.82
+ 16365:30:57.820
+ 16365:30:57.820
+ 16365:30:57.820
+ 16365:30:57.820
+ ********
+ 681 21:30
+ 681 21:30
+ 681 21:30
+ 681 21:30:57
+ 681 21:30:57
+ 681 21:30:57
+ 681 21:30:57
+ 681 21:30:57.8
+ 681 21:30:57.8
+ 681 21:30:57
+ 681 21:30:57.8
+ 681 21:30:57.82
+ 681 21:30:57.82
+ 681 21:30:57
+ 681 21:30:57.8
+ 681 21:30:57.82
+ 681 21:30:57.820
+ 681 21:30:57.820
+ 681 21:30:57
+ 681 21:30:57.8
+ 681 21:30:57.82
+ 681 21:30:57.820
+ 681 21:30:57.8205
+ 681 21:30:57.8205
+ 681 21:30:57
+ 681 21:30:57.8
+ 681 21:30:57.82
+ 681 21:30:57.820
+ 681 21:30:57.8205
+ 681 21:30:57.82047
+ 681 21:30:57.82047
+ *****
+ ******
+ *******
+ 16348:25
+ 16348:25
+ 16348:25
+ 16348:25
+ 16348:25:09
+ 16348:25:09
+ 16348:25:09
+ 16348:25:09
+ 16348:25:09
+ 16348:25:09
+ 16348:25:09
+ 16348:25:09
+ 16348:25:09.2
+ 16348:25:09.2
+ 16348:25:09.2
+ 16348:25:09.2
+ 16348:25:09
+ 16348:25:09.2
+ 16348:25:09.15
+ 16348:25:09.15
+ 16348:25:09.15
+ 16348:25:09.15
+ 16348:25:09
+ 16348:25:09.2
+ 16348:25:09.15
+ 16348:25:09.154
+ 16348:25:09.154
+ 16348:25:09.154
+ 16348:25:09.154
+ ********
+ 681 04:25
+ 681 04:25
+ 681 04:25
+ 681 04:25:09
+ 681 04:25:09
+ 681 04:25:09
+ 681 04:25:09
+ 681 04:25:09.2
+ 681 04:25:09.2
+ 681 04:25:09
+ 681 04:25:09.2
+ 681 04:25:09.15
+ 681 04:25:09.15
+ 681 04:25:09
+ 681 04:25:09.2
+ 681 04:25:09.15
+ 681 04:25:09.154
+ 681 04:25:09.154
+ 681 04:25:09
+ 681 04:25:09.2
+ 681 04:25:09.15
+ 681 04:25:09.154
+ 681 04:25:09.1539
+ 681 04:25:09.1539
+ 681 04:25:09
+ 681 04:25:09.2
+ 681 04:25:09.15
+ 681 04:25:09.154
+ 681 04:25:09.1539
+ 681 04:25:09.15395
+ 681 04:25:09.15395
+ *****
+ ******
+ *******
+ 16350:49
+ 16350:49
+ 16350:49
+ 16350:49
+ 16350:49:27
+ 16350:49:27
+ 16350:49:27
+ 16350:49:27
+ 16350:49:27
+ 16350:49:27
+ 16350:49:27
+ 16350:49:27
+ 16350:49:27.1
+ 16350:49:27.1
+ 16350:49:27.1
+ 16350:49:27.1
+ 16350:49:27
+ 16350:49:27.1
+ 16350:49:27.11
+ 16350:49:27.11
+ 16350:49:27.11
+ 16350:49:27.11
+ 16350:49:27
+ 16350:49:27.1
+ 16350:49:27.11
+ 16350:49:27.105
+ 16350:49:27.105
+ 16350:49:27.105
+ 16350:49:27.105
+ ********
+ 681 06:49
+ 681 06:49
+ 681 06:49
+ 681 06:49:27
+ 681 06:49:27
+ 681 06:49:27
+ 681 06:49:27
+ 681 06:49:27.1
+ 681 06:49:27.1
+ 681 06:49:27
+ 681 06:49:27.1
+ 681 06:49:27.11
+ 681 06:49:27.11
+ 681 06:49:27
+ 681 06:49:27.1
+ 681 06:49:27.11
+ 681 06:49:27.105
+ 681 06:49:27.105
+ 681 06:49:27
+ 681 06:49:27.1
+ 681 06:49:27.11
+ 681 06:49:27.105
+ 681 06:49:27.1053
+ 681 06:49:27.1053
+ 681 06:49:27
+ 681 06:49:27.1
+ 681 06:49:27.11
+ 681 06:49:27.105
+ 681 06:49:27.1053
+ 681 06:49:27.10533
+ 681 06:49:27.10533
+ *****
+ ******
+ *******
+ 16346:57
+ 16346:57
+ 16346:57
+ 16346:57
+ 16346:57:52
+ 16346:57:52
+ 16346:57:52
+ 16346:57:52
+ 16346:57:52
+ 16346:57:52
+ 16346:57:52
+ 16346:57:52
+ 16346:57:52.5
+ 16346:57:52.5
+ 16346:57:52.5
+ 16346:57:52.5
+ 16346:57:52
+ 16346:57:52.5
+ 16346:57:52.48
+ 16346:57:52.48
+ 16346:57:52.48
+ 16346:57:52.48
+ 16346:57:52
+ 16346:57:52.5
+ 16346:57:52.48
+ 16346:57:52.482
+ 16346:57:52.482
+ 16346:57:52.482
+ 16346:57:52.482
+ ********
+ 681 02:57
+ 681 02:57
+ 681 02:57
+ 681 02:57:52
+ 681 02:57:52
+ 681 02:57:52
+ 681 02:57:52
+ 681 02:57:52.5
+ 681 02:57:52.5
+ 681 02:57:52
+ 681 02:57:52.5
+ 681 02:57:52.48
+ 681 02:57:52.48
+ 681 02:57:52
+ 681 02:57:52.5
+ 681 02:57:52.48
+ 681 02:57:52.482
+ 681 02:57:52.482
+ 681 02:57:52
+ 681 02:57:52.5
+ 681 02:57:52.48
+ 681 02:57:52.482
+ 681 02:57:52.4823
+ 681 02:57:52.4823
+ 681 02:57:52
+ 681 02:57:52.5
+ 681 02:57:52.48
+ 681 02:57:52.482
+ 681 02:57:52.4823
+ 681 02:57:52.48229
+ 681 02:57:52.48229
+ *****
+ ******
+ *******
+ 16360:45
+ 16360:45
+ 16360:45
+ 16360:45
+ 16360:45:44
+ 16360:45:44
+ 16360:45:44
+ 16360:45:44
+ 16360:45:44
+ 16360:45:44
+ 16360:45:44
+ 16360:45:44
+ 16360:45:44.7
+ 16360:45:44.7
+ 16360:45:44.7
+ 16360:45:44.7
+ 16360:45:44
+ 16360:45:44.7
+ 16360:45:44.66
+ 16360:45:44.66
+ 16360:45:44.66
+ 16360:45:44.66
+ 16360:45:44
+ 16360:45:44.7
+ 16360:45:44.66
+ 16360:45:44.658
+ 16360:45:44.658
+ 16360:45:44.658
+ 16360:45:44.658
+ ********
+ 681 16:45
+ 681 16:45
+ 681 16:45
+ 681 16:45:44
+ 681 16:45:44
+ 681 16:45:44
+ 681 16:45:44
+ 681 16:45:44.7
+ 681 16:45:44.7
+ 681 16:45:44
+ 681 16:45:44.7
+ 681 16:45:44.66
+ 681 16:45:44.66
+ 681 16:45:44
+ 681 16:45:44.7
+ 681 16:45:44.66
+ 681 16:45:44.658
+ 681 16:45:44.658
+ 681 16:45:44
+ 681 16:45:44.7
+ 681 16:45:44.66
+ 681 16:45:44.658
+ 681 16:45:44.6583
+ 681 16:45:44.6583
+ 681 16:45:44
+ 681 16:45:44.7
+ 681 16:45:44.66
+ 681 16:45:44.658
+ 681 16:45:44.6583
+ 681 16:45:44.65827
+ 681 16:45:44.65827
+ *****
+ ******
+ *******
+ 16365:30
+ 16365:30
+ 16365:30
+ 16365:30
+ 16365:30:57
+ 16365:30:57
+ 16365:30:57
+ 16365:30:57
+ 16365:30:57
+ 16365:30:57
+ 16365:30:57
+ 16365:30:57
+ 16365:30:57.6
+ 16365:30:57.6
+ 16365:30:57.6
+ 16365:30:57.6
+ 16365:30:57
+ 16365:30:57.6
+ 16365:30:57.58
+ 16365:30:57.58
+ 16365:30:57.58
+ 16365:30:57.58
+ 16365:30:57
+ 16365:30:57.6
+ 16365:30:57.58
+ 16365:30:57.582
+ 16365:30:57.582
+ 16365:30:57.582
+ 16365:30:57.582
+ ********
+ 681 21:30
+ 681 21:30
+ 681 21:30
+ 681 21:30:57
+ 681 21:30:57
+ 681 21:30:57
+ 681 21:30:57
+ 681 21:30:57.6
+ 681 21:30:57.6
+ 681 21:30:57
+ 681 21:30:57.6
+ 681 21:30:57.58
+ 681 21:30:57.58
+ 681 21:30:57
+ 681 21:30:57.6
+ 681 21:30:57.58
+ 681 21:30:57.582
+ 681 21:30:57.582
+ 681 21:30:57
+ 681 21:30:57.6
+ 681 21:30:57.58
+ 681 21:30:57.582
+ 681 21:30:57.5822
+ 681 21:30:57.5822
+ 681 21:30:57
+ 681 21:30:57.6
+ 681 21:30:57.58
+ 681 21:30:57.582
+ 681 21:30:57.5822
+ 681 21:30:57.58219
+ 681 21:30:57.58219
+ *****
+ ******
+ *******
+ 16366:30
+ 16366:30
+ 16366:30
+ 16366:30
+ 16366:30:04
+ 16366:30:04
+ 16366:30:04
+ 16366:30:04
+ 16366:30:04
+ 16366:30:04
+ 16366:30:04
+ 16366:30:04
+ 16366:30:04.2
+ 16366:30:04.2
+ 16366:30:04.2
+ 16366:30:04.2
+ 16366:30:04
+ 16366:30:04.2
+ 16366:30:04.18
+ 16366:30:04.18
+ 16366:30:04.18
+ 16366:30:04.18
+ 16366:30:04
+ 16366:30:04.2
+ 16366:30:04.18
+ 16366:30:04.183
+ 16366:30:04.183
+ 16366:30:04.183
+ 16366:30:04.183
+ ********
+ 681 22:30
+ 681 22:30
+ 681 22:30
+ 681 22:30:04
+ 681 22:30:04
+ 681 22:30:04
+ 681 22:30:04
+ 681 22:30:04.2
+ 681 22:30:04.2
+ 681 22:30:04
+ 681 22:30:04.2
+ 681 22:30:04.18
+ 681 22:30:04.18
+ 681 22:30:04
+ 681 22:30:04.2
+ 681 22:30:04.18
+ 681 22:30:04.183
+ 681 22:30:04.183
+ 681 22:30:04
+ 681 22:30:04.2
+ 681 22:30:04.18
+ 681 22:30:04.183
+ 681 22:30:04.1835
+ 681 22:30:04.1835
+ 681 22:30:04
+ 681 22:30:04.2
+ 681 22:30:04.18
+ 681 22:30:04.183
+ 681 22:30:04.1835
+ 681 22:30:04.18347
+ 681 22:30:04.18347
+ *****
+ ******
+ *******
+ 16345:56
+ 16345:56
+ 16345:56
+ 16345:56
+ 16345:56:51
+ 16345:56:51
+ 16345:56:51
+ 16345:56:51
+ 16345:56:51
+ 16345:56:51
+ 16345:56:51
+ 16345:56:51
+ 16345:56:51.6
+ 16345:56:51.6
+ 16345:56:51.6
+ 16345:56:51.6
+ 16345:56:51
+ 16345:56:51.6
+ 16345:56:51.59
+ 16345:56:51.59
+ 16345:56:51.59
+ 16345:56:51.59
+ 16345:56:51
+ 16345:56:51.6
+ 16345:56:51.59
+ 16345:56:51.593
+ 16345:56:51.593
+ 16345:56:51.593
+ 16345:56:51.593
+ ********
+ 681 01:56
+ 681 01:56
+ 681 01:56
+ 681 01:56:51
+ 681 01:56:51
+ 681 01:56:51
+ 681 01:56:51
+ 681 01:56:51.6
+ 681 01:56:51.6
+ 681 01:56:51
+ 681 01:56:51.6
+ 681 01:56:51.59
+ 681 01:56:51.59
+ 681 01:56:51
+ 681 01:56:51.6
+ 681 01:56:51.59
+ 681 01:56:51.593
+ 681 01:56:51.593
+ 681 01:56:51
+ 681 01:56:51.6
+ 681 01:56:51.59
+ 681 01:56:51.593
+ 681 01:56:51.5932
+ 681 01:56:51.5932
+ 681 01:56:51
+ 681 01:56:51.6
+ 681 01:56:51.59
+ 681 01:56:51.593
+ 681 01:56:51.5932
+ 681 01:56:51.59319
+ 681 01:56:51.59319
+ 0:00
+ 0:00
+ 0:00:00
+ 0:00:00
+ 0:00:00
+ 0:00:00
+ 0:00:00.0
+ 0:00:00
+ 0:00:00.0
+ 0:00:00.00
+ 0:00:00
+ 0:00:00.0
+ 0:00:00.00
+ 0:00:00.000
+ 0:00:00
+ 0:00:00.0
+ 0:00:00.00
+ 0:00:00.000
+ 0:00:00.0000
+ 0:00:00
+ 0:00:00.0
+ 0:00:00.00
+ 0:00:00.000
+ 0:00:00.0000
+ 0:00:00.00000
+ 0:00:00
+ 0:00:00.0
+ 0:00:00.00
+ 0:00:00.000
+ 0:00:00.0000
+ 0:00:00.00000
+ 0:00:00.000000
+ 0 00:00
+ 0 00:00
+ 0 00:00:00
+ 0 00:00:00
+ 0 00:00:00
+ 0 00:00:00
+ 0 00:00:00.0
+ 0 00:00:00
+ 0 00:00:00.0
+ 0 00:00:00.00
+ 0 00:00:00
+ 0 00:00:00.0
+ 0 00:00:00.00
+ 0 00:00:00.000
+ 0 00:00:00
+ 0 00:00:00.0
+ 0 00:00:00.00
+ 0 00:00:00.000
+ 0 00:00:00.0000
+ 0 00:00:00
+ 0 00:00:00.0
+ 0 00:00:00.00
+ 0 00:00:00.000
+ 0 00:00:00.0000
+ 0 00:00:00.00000
+ 0 00:00:00
+ 0 00:00:00.0
+ 0 00:00:00.00
+ 0 00:00:00.000
+ 0 00:00:00.0000
+ 0 00:00:00.00000
+ 0 00:00:00.000000
+ -4:50
+ -4:50
+ -4:50
+ -4:50:38
+ -4:50:38
+ -4:50:38
+ -4:50:38.1
+ -4:50:38
+ -4:50:38.1
+ -4:50:38.12
+ -4:50:38
+ -4:50:38.1
+ -4:50:38.12
+ -4:50:38.123
+ -4:50:38
+ -4:50:38.1
+ -4:50:38.12
+ -4:50:38.123
+ -4:50:38.1230
+ -4:50:38
+ -4:50:38.1
+ -4:50:38.12
+ -4:50:38.123
+ -4:50:38.1230
+ -4:50:38.12301
+ -4:50:38
+ -4:50:38.1
+ -4:50:38.12
+ -4:50:38.123
+ -4:50:38.1230
+ -4:50:38.12301
+ -4:50:38.123010
+ -0 04:50
+ -0 04:50
+ -0 04:50
+ -0 04:50:38
+ -0 04:50:38
+ -0 04:50:38
+ -0 04:50:38.1
+ -0 04:50:38
+ -0 04:50:38.1
+ -0 04:50:38.12
+ -0 04:50:38
+ -0 04:50:38.1
+ -0 04:50:38.12
+ -0 04:50:38.123
+ -0 04:50:38
+ -0 04:50:38.1
+ -0 04:50:38.12
+ -0 04:50:38.123
+ -0 04:50:38.1230
+ -0 04:50:38
+ -0 04:50:38.1
+ -0 04:50:38.12
+ -0 04:50:38.123
+ -0 04:50:38.1230
+ -0 04:50:38.12301
+ -0 04:50:38
+ -0 04:50:38.1
+ -0 04:50:38.12
+ -0 04:50:38.123
+ -0 04:50:38.1230
+ -0 04:50:38.12301
+ -0 04:50:38.123010
+ *****
+ -12:31
+ -12:31
+ -12:31
+ -12:31:35
+ -12:31:35
+ -12:31:35
+ -12:31:35
+ -12:31:35.2
+ -12:31:35.2
+ -12:31:35
+ -12:31:35.2
+ -12:31:35.23
+ -12:31:35.23
+ -12:31:35
+ -12:31:35.2
+ -12:31:35.23
+ -12:31:35.235
+ -12:31:35.235
+ -12:31:35
+ -12:31:35.2
+ -12:31:35.23
+ -12:31:35.235
+ -12:31:35.2345
+ -12:31:35.2345
+ -12:31:35
+ -12:31:35.2
+ -12:31:35.23
+ -12:31:35.235
+ -12:31:35.2345
+ -12:31:35.23453
+ -12:31:35.23453
+ -0 12:31
+ -0 12:31
+ -0 12:31
+ -0 12:31:35
+ -0 12:31:35
+ -0 12:31:35
+ -0 12:31:35.2
+ -0 12:31:35
+ -0 12:31:35.2
+ -0 12:31:35.23
+ -0 12:31:35
+ -0 12:31:35.2
+ -0 12:31:35.23
+ -0 12:31:35.235
+ -0 12:31:35
+ -0 12:31:35.2
+ -0 12:31:35.23
+ -0 12:31:35.235
+ -0 12:31:35.2345
+ -0 12:31:35
+ -0 12:31:35.2
+ -0 12:31:35.23
+ -0 12:31:35.235
+ -0 12:31:35.2345
+ -0 12:31:35.23453
+ -0 12:31:35
+ -0 12:31:35.2
+ -0 12:31:35.23
+ -0 12:31:35.235
+ -0 12:31:35.2345
+ -0 12:31:35.23453
+ -0 12:31:35.234530
+ *****
+ -12:47
+ -12:47
+ -12:47
+ -12:47:53
+ -12:47:53
+ -12:47:53
+ -12:47:53
+ -12:47:53.3
+ -12:47:53.3
+ -12:47:53
+ -12:47:53.3
+ -12:47:53.35
+ -12:47:53.35
+ -12:47:53
+ -12:47:53.3
+ -12:47:53.35
+ -12:47:53.345
+ -12:47:53.345
+ -12:47:53
+ -12:47:53.3
+ -12:47:53.35
+ -12:47:53.345
+ -12:47:53.3451
+ -12:47:53.3451
+ -12:47:53
+ -12:47:53.3
+ -12:47:53.35
+ -12:47:53.345
+ -12:47:53.3451
+ -12:47:53.34505
+ -12:47:53.34505
+ -0 12:47
+ -0 12:47
+ -0 12:47
+ -0 12:47:53
+ -0 12:47:53
+ -0 12:47:53
+ -0 12:47:53.3
+ -0 12:47:53
+ -0 12:47:53.3
+ -0 12:47:53.35
+ -0 12:47:53
+ -0 12:47:53.3
+ -0 12:47:53.35
+ -0 12:47:53.345
+ -0 12:47:53
+ -0 12:47:53.3
+ -0 12:47:53.35
+ -0 12:47:53.345
+ -0 12:47:53.3451
+ -0 12:47:53
+ -0 12:47:53.3
+ -0 12:47:53.35
+ -0 12:47:53.345
+ -0 12:47:53.3451
+ -0 12:47:53.34505
+ -0 12:47:53
+ -0 12:47:53.3
+ -0 12:47:53.35
+ -0 12:47:53.345
+ -0 12:47:53.3451
+ -0 12:47:53.34505
+ -0 12:47:53.345050
+ -1:26
+ -1:26
+ -1:26
+ -1:26:00
+ -1:26:00
+ -1:26:00
+ -1:26:00.5
+ -1:26:00
+ -1:26:00.5
+ -1:26:00.46
+ -1:26:00
+ -1:26:00.5
+ -1:26:00.46
+ -1:26:00.456
+ -1:26:00
+ -1:26:00.5
+ -1:26:00.46
+ -1:26:00.456
+ -1:26:00.4561
+ -1:26:00
+ -1:26:00.5
+ -1:26:00.46
+ -1:26:00.456
+ -1:26:00.4561
+ -1:26:00.45615
+ -1:26:00
+ -1:26:00.5
+ -1:26:00.46
+ -1:26:00.456
+ -1:26:00.4561
+ -1:26:00.45615
+ -1:26:00.456150
+ -0 01:26
+ -0 01:26
+ -0 01:26
+ -0 01:26:00
+ -0 01:26:00
+ -0 01:26:00
+ -0 01:26:00.5
+ -0 01:26:00
+ -0 01:26:00.5
+ -0 01:26:00.46
+ -0 01:26:00
+ -0 01:26:00.5
+ -0 01:26:00.46
+ -0 01:26:00.456
+ -0 01:26:00
+ -0 01:26:00.5
+ -0 01:26:00.46
+ -0 01:26:00.456
+ -0 01:26:00.4561
+ -0 01:26:00
+ -0 01:26:00.5
+ -0 01:26:00.46
+ -0 01:26:00.456
+ -0 01:26:00.4561
+ -0 01:26:00.45615
+ -0 01:26:00
+ -0 01:26:00.5
+ -0 01:26:00.46
+ -0 01:26:00.456
+ -0 01:26:00.4561
+ -0 01:26:00.45615
+ -0 01:26:00.456150
+ *****
+ -20:58
+ -20:58
+ -20:58
+ -20:58:11
+ -20:58:11
+ -20:58:11
+ -20:58:11
+ -20:58:11.6
+ -20:58:11.6
+ -20:58:11
+ -20:58:11.6
+ -20:58:11.57
+ -20:58:11.57
+ -20:58:11
+ -20:58:11.6
+ -20:58:11.57
+ -20:58:11.567
+ -20:58:11.567
+ -20:58:11
+ -20:58:11.6
+ -20:58:11.57
+ -20:58:11.567
+ -20:58:11.5668
+ -20:58:11.5668
+ -20:58:11
+ -20:58:11.6
+ -20:58:11.57
+ -20:58:11.567
+ -20:58:11.5668
+ -20:58:11.56677
+ -20:58:11.56677
+ -0 20:58
+ -0 20:58
+ -0 20:58
+ -0 20:58:11
+ -0 20:58:11
+ -0 20:58:11
+ -0 20:58:11.6
+ -0 20:58:11
+ -0 20:58:11.6
+ -0 20:58:11.57
+ -0 20:58:11
+ -0 20:58:11.6
+ -0 20:58:11.57
+ -0 20:58:11.567
+ -0 20:58:11
+ -0 20:58:11.6
+ -0 20:58:11.57
+ -0 20:58:11.567
+ -0 20:58:11.5668
+ -0 20:58:11
+ -0 20:58:11.6
+ -0 20:58:11.57
+ -0 20:58:11.567
+ -0 20:58:11.5668
+ -0 20:58:11.56677
+ -0 20:58:11
+ -0 20:58:11.6
+ -0 20:58:11.57
+ -0 20:58:11.567
+ -0 20:58:11.5668
+ -0 20:58:11.56677
+ -0 20:58:11.566770
+ -7:36
+ -7:36
+ -7:36
+ -7:36:05
+ -7:36:05
+ -7:36:05
+ -7:36:05.2
+ -7:36:05
+ -7:36:05.2
+ -7:36:05.19
+ -7:36:05
+ -7:36:05.2
+ -7:36:05.19
+ -7:36:05.190
+ -7:36:05
+ -7:36:05.2
+ -7:36:05.19
+ -7:36:05.190
+ -7:36:05.1896
+ -7:36:05
+ -7:36:05.2
+ -7:36:05.19
+ -7:36:05.190
+ -7:36:05.1896
+ -7:36:05.18964
+ -7:36:05
+ -7:36:05.2
+ -7:36:05.19
+ -7:36:05.190
+ -7:36:05.1896
+ -7:36:05.18964
+ -7:36:05.189640
+ -0 07:36
+ -0 07:36
+ -0 07:36
+ -0 07:36:05
+ -0 07:36:05
+ -0 07:36:05
+ -0 07:36:05.2
+ -0 07:36:05
+ -0 07:36:05.2
+ -0 07:36:05.19
+ -0 07:36:05
+ -0 07:36:05.2
+ -0 07:36:05.19
+ -0 07:36:05.190
+ -0 07:36:05
+ -0 07:36:05.2
+ -0 07:36:05.19
+ -0 07:36:05.190
+ -0 07:36:05.1896
+ -0 07:36:05
+ -0 07:36:05.2
+ -0 07:36:05.19
+ -0 07:36:05.190
+ -0 07:36:05.1896
+ -0 07:36:05.18964
+ -0 07:36:05
+ -0 07:36:05.2
+ -0 07:36:05.19
+ -0 07:36:05.190
+ -0 07:36:05.1896
+ -0 07:36:05.18964
+ -0 07:36:05.189640
+ *****
+ -15:43
+ -15:43
+ -15:43
+ -15:43:49
+ -15:43:49
+ -15:43:49
+ -15:43:49
+ -15:43:49.8
+ -15:43:49.8
+ -15:43:49
+ -15:43:49.8
+ -15:43:49.83
+ -15:43:49.83
+ -15:43:49
+ -15:43:49.8
+ -15:43:49.83
+ -15:43:49.831
+ -15:43:49.831
+ -15:43:49
+ -15:43:49.8
+ -15:43:49.83
+ -15:43:49.831
+ -15:43:49.8313
+ -15:43:49.8313
+ -15:43:49
+ -15:43:49.8
+ -15:43:49.83
+ -15:43:49.831
+ -15:43:49.8313
+ -15:43:49.83132
+ -15:43:49.83132
+ -0 15:43
+ -0 15:43
+ -0 15:43
+ -0 15:43:49
+ -0 15:43:49
+ -0 15:43:49
+ -0 15:43:49.8
+ -0 15:43:49
+ -0 15:43:49.8
+ -0 15:43:49.83
+ -0 15:43:49
+ -0 15:43:49.8
+ -0 15:43:49.83
+ -0 15:43:49.831
+ -0 15:43:49
+ -0 15:43:49.8
+ -0 15:43:49.83
+ -0 15:43:49.831
+ -0 15:43:49.8313
+ -0 15:43:49
+ -0 15:43:49.8
+ -0 15:43:49.83
+ -0 15:43:49.831
+ -0 15:43:49.8313
+ -0 15:43:49.83132
+ -0 15:43:49
+ -0 15:43:49.8
+ -0 15:43:49.83
+ -0 15:43:49.831
+ -0 15:43:49.8313
+ -0 15:43:49.83132
+ -0 15:43:49.831320
+ -4:25
+ -4:25
+ -4:25
+ -4:25:09
+ -4:25:09
+ -4:25:09
+ -4:25:09.0
+ -4:25:09
+ -4:25:09.0
+ -4:25:09.01
+ -4:25:09
+ -4:25:09.0
+ -4:25:09.01
+ -4:25:09.013
+ -4:25:09
+ -4:25:09.0
+ -4:25:09.01
+ -4:25:09.013
+ -4:25:09.0129
+ -4:25:09
+ -4:25:09.0
+ -4:25:09.01
+ -4:25:09.013
+ -4:25:09.0129
+ -4:25:09.01293
+ -4:25:09
+ -4:25:09.0
+ -4:25:09.01
+ -4:25:09.013
+ -4:25:09.0129
+ -4:25:09.01293
+ -4:25:09.012930
+ -0 04:25
+ -0 04:25
+ -0 04:25
+ -0 04:25:09
+ -0 04:25:09
+ -0 04:25:09
+ -0 04:25:09.0
+ -0 04:25:09
+ -0 04:25:09.0
+ -0 04:25:09.01
+ -0 04:25:09
+ -0 04:25:09.0
+ -0 04:25:09.01
+ -0 04:25:09.013
+ -0 04:25:09
+ -0 04:25:09.0
+ -0 04:25:09.01
+ -0 04:25:09.013
+ -0 04:25:09.0129
+ -0 04:25:09
+ -0 04:25:09.0
+ -0 04:25:09.01
+ -0 04:25:09.013
+ -0 04:25:09.0129
+ -0 04:25:09.01293
+ -0 04:25:09
+ -0 04:25:09.0
+ -0 04:25:09.01
+ -0 04:25:09.013
+ -0 04:25:09.0129
+ -0 04:25:09.01293
+ -0 04:25:09.012930
+ -6:49
+ -6:49
+ -6:49
+ -6:49:27
+ -6:49:27
+ -6:49:27
+ -6:49:27.5
+ -6:49:27
+ -6:49:27.5
+ -6:49:27.52
+ -6:49:27
+ -6:49:27.5
+ -6:49:27.52
+ -6:49:27.524
+ -6:49:27
+ -6:49:27.5
+ -6:49:27.52
+ -6:49:27.524
+ -6:49:27.5238
+ -6:49:27
+ -6:49:27.5
+ -6:49:27.52
+ -6:49:27.524
+ -6:49:27.5238
+ -6:49:27.52375
+ -6:49:27
+ -6:49:27.5
+ -6:49:27.52
+ -6:49:27.524
+ -6:49:27.5238
+ -6:49:27.52375
+ -6:49:27.523750
+ -0 06:49
+ -0 06:49
+ -0 06:49
+ -0 06:49:27
+ -0 06:49:27
+ -0 06:49:27
+ -0 06:49:27.5
+ -0 06:49:27
+ -0 06:49:27.5
+ -0 06:49:27.52
+ -0 06:49:27
+ -0 06:49:27.5
+ -0 06:49:27.52
+ -0 06:49:27.524
+ -0 06:49:27
+ -0 06:49:27.5
+ -0 06:49:27.52
+ -0 06:49:27.524
+ -0 06:49:27.5238
+ -0 06:49:27
+ -0 06:49:27.5
+ -0 06:49:27.52
+ -0 06:49:27.524
+ -0 06:49:27.5238
+ -0 06:49:27.52375
+ -0 06:49:27
+ -0 06:49:27.5
+ -0 06:49:27.52
+ -0 06:49:27.524
+ -0 06:49:27.5238
+ -0 06:49:27.52375
+ -0 06:49:27.523750
+ -2:57
+ -2:57
+ -2:57
+ -2:57:52
+ -2:57:52
+ -2:57:52
+ -2:57:52.0
+ -2:57:52
+ -2:57:52.0
+ -2:57:52.02
+ -2:57:52
+ -2:57:52.0
+ -2:57:52.02
+ -2:57:52.016
+ -2:57:52
+ -2:57:52.0
+ -2:57:52.02
+ -2:57:52.016
+ -2:57:52.0156
+ -2:57:52
+ -2:57:52.0
+ -2:57:52.02
+ -2:57:52.016
+ -2:57:52.0156
+ -2:57:52.01565
+ -2:57:52
+ -2:57:52.0
+ -2:57:52.02
+ -2:57:52.016
+ -2:57:52.0156
+ -2:57:52.01565
+ -2:57:52.015650
+ -0 02:57
+ -0 02:57
+ -0 02:57
+ -0 02:57:52
+ -0 02:57:52
+ -0 02:57:52
+ -0 02:57:52.0
+ -0 02:57:52
+ -0 02:57:52.0
+ -0 02:57:52.02
+ -0 02:57:52
+ -0 02:57:52.0
+ -0 02:57:52.02
+ -0 02:57:52.016
+ -0 02:57:52
+ -0 02:57:52.0
+ -0 02:57:52.02
+ -0 02:57:52.016
+ -0 02:57:52.0156
+ -0 02:57:52
+ -0 02:57:52.0
+ -0 02:57:52.02
+ -0 02:57:52.016
+ -0 02:57:52.0156
+ -0 02:57:52.01565
+ -0 02:57:52
+ -0 02:57:52.0
+ -0 02:57:52.02
+ -0 02:57:52.016
+ -0 02:57:52.0156
+ -0 02:57:52.01565
+ -0 02:57:52.015650
+ *****
+ -16:45
+ -16:45
+ -16:45
+ -16:45:44
+ -16:45:44
+ -16:45:44
+ -16:45:44
+ -16:45:44.9
+ -16:45:44.9
+ -16:45:44
+ -16:45:44.9
+ -16:45:44.87
+ -16:45:44.87
+ -16:45:44
+ -16:45:44.9
+ -16:45:44.87
+ -16:45:44.865
+ -16:45:44.865
+ -16:45:44
+ -16:45:44.9
+ -16:45:44.87
+ -16:45:44.865
+ -16:45:44.8653
+ -16:45:44.8653
+ -16:45:44
+ -16:45:44.9
+ -16:45:44.87
+ -16:45:44.865
+ -16:45:44.8653
+ -16:45:44.86529
+ -16:45:44.86529
+ -0 16:45
+ -0 16:45
+ -0 16:45
+ -0 16:45:44
+ -0 16:45:44
+ -0 16:45:44
+ -0 16:45:44.9
+ -0 16:45:44
+ -0 16:45:44.9
+ -0 16:45:44.87
+ -0 16:45:44
+ -0 16:45:44.9
+ -0 16:45:44.87
+ -0 16:45:44.865
+ -0 16:45:44
+ -0 16:45:44.9
+ -0 16:45:44.87
+ -0 16:45:44.865
+ -0 16:45:44.8653
+ -0 16:45:44
+ -0 16:45:44.9
+ -0 16:45:44.87
+ -0 16:45:44.865
+ -0 16:45:44.8653
+ -0 16:45:44.86529
+ -0 16:45:44
+ -0 16:45:44.9
+ -0 16:45:44.87
+ -0 16:45:44.865
+ -0 16:45:44.8653
+ -0 16:45:44.86529
+ -0 16:45:44.865290
+ *****
+ -21:30
+ -21:30
+ -21:30
+ -21:30:57
+ -21:30:57
+ -21:30:57
+ -21:30:57
+ -21:30:57.8
+ -21:30:57.8
+ -21:30:57
+ -21:30:57.8
+ -21:30:57.82
+ -21:30:57.82
+ -21:30:57
+ -21:30:57.8
+ -21:30:57.82
+ -21:30:57.820
+ -21:30:57.820
+ -21:30:57
+ -21:30:57.8
+ -21:30:57.82
+ -21:30:57.820
+ -21:30:57.8205
+ -21:30:57.8205
+ -21:30:57
+ -21:30:57.8
+ -21:30:57.82
+ -21:30:57.820
+ -21:30:57.8205
+ -21:30:57.82047
+ -21:30:57.82047
+ -0 21:30
+ -0 21:30
+ -0 21:30
+ -0 21:30:57
+ -0 21:30:57
+ -0 21:30:57
+ -0 21:30:57.8
+ -0 21:30:57
+ -0 21:30:57.8
+ -0 21:30:57.82
+ -0 21:30:57
+ -0 21:30:57.8
+ -0 21:30:57.82
+ -0 21:30:57.820
+ -0 21:30:57
+ -0 21:30:57.8
+ -0 21:30:57.82
+ -0 21:30:57.820
+ -0 21:30:57.8205
+ -0 21:30:57
+ -0 21:30:57.8
+ -0 21:30:57.82
+ -0 21:30:57.820
+ -0 21:30:57.8205
+ -0 21:30:57.82047
+ -0 21:30:57
+ -0 21:30:57.8
+ -0 21:30:57.82
+ -0 21:30:57.820
+ -0 21:30:57.8205
+ -0 21:30:57.82047
+ -0 21:30:57.820470
+ -4:25
+ -4:25
+ -4:25
+ -4:25:09
+ -4:25:09
+ -4:25:09
+ -4:25:09.2
+ -4:25:09
+ -4:25:09.2
+ -4:25:09.15
+ -4:25:09
+ -4:25:09.2
+ -4:25:09.15
+ -4:25:09.154
+ -4:25:09
+ -4:25:09.2
+ -4:25:09.15
+ -4:25:09.154
+ -4:25:09.1539
+ -4:25:09
+ -4:25:09.2
+ -4:25:09.15
+ -4:25:09.154
+ -4:25:09.1539
+ -4:25:09.15395
+ -4:25:09
+ -4:25:09.2
+ -4:25:09.15
+ -4:25:09.154
+ -4:25:09.1539
+ -4:25:09.15395
+ -4:25:09.153950
+ -0 04:25
+ -0 04:25
+ -0 04:25
+ -0 04:25:09
+ -0 04:25:09
+ -0 04:25:09
+ -0 04:25:09.2
+ -0 04:25:09
+ -0 04:25:09.2
+ -0 04:25:09.15
+ -0 04:25:09
+ -0 04:25:09.2
+ -0 04:25:09.15
+ -0 04:25:09.154
+ -0 04:25:09
+ -0 04:25:09.2
+ -0 04:25:09.15
+ -0 04:25:09.154
+ -0 04:25:09.1539
+ -0 04:25:09
+ -0 04:25:09.2
+ -0 04:25:09.15
+ -0 04:25:09.154
+ -0 04:25:09.1539
+ -0 04:25:09.15395
+ -0 04:25:09
+ -0 04:25:09.2
+ -0 04:25:09.15
+ -0 04:25:09.154
+ -0 04:25:09.1539
+ -0 04:25:09.15395
+ -0 04:25:09.153950
+ -6:49
+ -6:49
+ -6:49
+ -6:49:27
+ -6:49:27
+ -6:49:27
+ -6:49:27.1
+ -6:49:27
+ -6:49:27.1
+ -6:49:27.11
+ -6:49:27
+ -6:49:27.1
+ -6:49:27.11
+ -6:49:27.105
+ -6:49:27
+ -6:49:27.1
+ -6:49:27.11
+ -6:49:27.105
+ -6:49:27.1053
+ -6:49:27
+ -6:49:27.1
+ -6:49:27.11
+ -6:49:27.105
+ -6:49:27.1053
+ -6:49:27.10533
+ -6:49:27
+ -6:49:27.1
+ -6:49:27.11
+ -6:49:27.105
+ -6:49:27.1053
+ -6:49:27.10533
+ -6:49:27.105330
+ -0 06:49
+ -0 06:49
+ -0 06:49
+ -0 06:49:27
+ -0 06:49:27
+ -0 06:49:27
+ -0 06:49:27.1
+ -0 06:49:27
+ -0 06:49:27.1
+ -0 06:49:27.11
+ -0 06:49:27
+ -0 06:49:27.1
+ -0 06:49:27.11
+ -0 06:49:27.105
+ -0 06:49:27
+ -0 06:49:27.1
+ -0 06:49:27.11
+ -0 06:49:27.105
+ -0 06:49:27.1053
+ -0 06:49:27
+ -0 06:49:27.1
+ -0 06:49:27.11
+ -0 06:49:27.105
+ -0 06:49:27.1053
+ -0 06:49:27.10533
+ -0 06:49:27
+ -0 06:49:27.1
+ -0 06:49:27.11
+ -0 06:49:27.105
+ -0 06:49:27.1053
+ -0 06:49:27.10533
+ -0 06:49:27.105330
+ -2:57
+ -2:57
+ -2:57
+ -2:57:52
+ -2:57:52
+ -2:57:52
+ -2:57:52.5
+ -2:57:52
+ -2:57:52.5
+ -2:57:52.48
+ -2:57:52
+ -2:57:52.5
+ -2:57:52.48
+ -2:57:52.482
+ -2:57:52
+ -2:57:52.5
+ -2:57:52.48
+ -2:57:52.482
+ -2:57:52.4823
+ -2:57:52
+ -2:57:52.5
+ -2:57:52.48
+ -2:57:52.482
+ -2:57:52.4823
+ -2:57:52.48229
+ -2:57:52
+ -2:57:52.5
+ -2:57:52.48
+ -2:57:52.482
+ -2:57:52.4823
+ -2:57:52.48229
+ -2:57:52.482290
+ -0 02:57
+ -0 02:57
+ -0 02:57
+ -0 02:57:52
+ -0 02:57:52
+ -0 02:57:52
+ -0 02:57:52.5
+ -0 02:57:52
+ -0 02:57:52.5
+ -0 02:57:52.48
+ -0 02:57:52
+ -0 02:57:52.5
+ -0 02:57:52.48
+ -0 02:57:52.482
+ -0 02:57:52
+ -0 02:57:52.5
+ -0 02:57:52.48
+ -0 02:57:52.482
+ -0 02:57:52.4823
+ -0 02:57:52
+ -0 02:57:52.5
+ -0 02:57:52.48
+ -0 02:57:52.482
+ -0 02:57:52.4823
+ -0 02:57:52.48229
+ -0 02:57:52
+ -0 02:57:52.5
+ -0 02:57:52.48
+ -0 02:57:52.482
+ -0 02:57:52.4823
+ -0 02:57:52.48229
+ -0 02:57:52.482290
+ *****
+ -16:45
+ -16:45
+ -16:45
+ -16:45:44
+ -16:45:44
+ -16:45:44
+ -16:45:44
+ -16:45:44.7
+ -16:45:44.7
+ -16:45:44
+ -16:45:44.7
+ -16:45:44.66
+ -16:45:44.66
+ -16:45:44
+ -16:45:44.7
+ -16:45:44.66
+ -16:45:44.658
+ -16:45:44.658
+ -16:45:44
+ -16:45:44.7
+ -16:45:44.66
+ -16:45:44.658
+ -16:45:44.6583
+ -16:45:44.6583
+ -16:45:44
+ -16:45:44.7
+ -16:45:44.66
+ -16:45:44.658
+ -16:45:44.6583
+ -16:45:44.65827
+ -16:45:44.65827
+ -0 16:45
+ -0 16:45
+ -0 16:45
+ -0 16:45:44
+ -0 16:45:44
+ -0 16:45:44
+ -0 16:45:44.7
+ -0 16:45:44
+ -0 16:45:44.7
+ -0 16:45:44.66
+ -0 16:45:44
+ -0 16:45:44.7
+ -0 16:45:44.66
+ -0 16:45:44.658
+ -0 16:45:44
+ -0 16:45:44.7
+ -0 16:45:44.66
+ -0 16:45:44.658
+ -0 16:45:44.6583
+ -0 16:45:44
+ -0 16:45:44.7
+ -0 16:45:44.66
+ -0 16:45:44.658
+ -0 16:45:44.6583
+ -0 16:45:44.65827
+ -0 16:45:44
+ -0 16:45:44.7
+ -0 16:45:44.66
+ -0 16:45:44.658
+ -0 16:45:44.6583
+ -0 16:45:44.65827
+ -0 16:45:44.658270
+ *****
+ -21:30
+ -21:30
+ -21:30
+ -21:30:57
+ -21:30:57
+ -21:30:57
+ -21:30:57
+ -21:30:57.6
+ -21:30:57.6
+ -21:30:57
+ -21:30:57.6
+ -21:30:57.58
+ -21:30:57.58
+ -21:30:57
+ -21:30:57.6
+ -21:30:57.58
+ -21:30:57.582
+ -21:30:57.582
+ -21:30:57
+ -21:30:57.6
+ -21:30:57.58
+ -21:30:57.582
+ -21:30:57.5822
+ -21:30:57.5822
+ -21:30:57
+ -21:30:57.6
+ -21:30:57.58
+ -21:30:57.582
+ -21:30:57.5822
+ -21:30:57.58219
+ -21:30:57.58219
+ -0 21:30
+ -0 21:30
+ -0 21:30
+ -0 21:30:57
+ -0 21:30:57
+ -0 21:30:57
+ -0 21:30:57.6
+ -0 21:30:57
+ -0 21:30:57.6
+ -0 21:30:57.58
+ -0 21:30:57
+ -0 21:30:57.6
+ -0 21:30:57.58
+ -0 21:30:57.582
+ -0 21:30:57
+ -0 21:30:57.6
+ -0 21:30:57.58
+ -0 21:30:57.582
+ -0 21:30:57.5822
+ -0 21:30:57
+ -0 21:30:57.6
+ -0 21:30:57.58
+ -0 21:30:57.582
+ -0 21:30:57.5822
+ -0 21:30:57.58219
+ -0 21:30:57
+ -0 21:30:57.6
+ -0 21:30:57.58
+ -0 21:30:57.582
+ -0 21:30:57.5822
+ -0 21:30:57.58219
+ -0 21:30:57.582190
+ *****
+ -22:30
+ -22:30
+ -22:30
+ -22:30:04
+ -22:30:04
+ -22:30:04
+ -22:30:04
+ -22:30:04.2
+ -22:30:04.2
+ -22:30:04
+ -22:30:04.2
+ -22:30:04.18
+ -22:30:04.18
+ -22:30:04
+ -22:30:04.2
+ -22:30:04.18
+ -22:30:04.183
+ -22:30:04.183
+ -22:30:04
+ -22:30:04.2
+ -22:30:04.18
+ -22:30:04.183
+ -22:30:04.1835
+ -22:30:04.1835
+ -22:30:04
+ -22:30:04.2
+ -22:30:04.18
+ -22:30:04.183
+ -22:30:04.1835
+ -22:30:04.18347
+ -22:30:04.18347
+ -0 22:30
+ -0 22:30
+ -0 22:30
+ -0 22:30:04
+ -0 22:30:04
+ -0 22:30:04
+ -0 22:30:04.2
+ -0 22:30:04
+ -0 22:30:04.2
+ -0 22:30:04.18
+ -0 22:30:04
+ -0 22:30:04.2
+ -0 22:30:04.18
+ -0 22:30:04.183
+ -0 22:30:04
+ -0 22:30:04.2
+ -0 22:30:04.18
+ -0 22:30:04.183
+ -0 22:30:04.1835
+ -0 22:30:04
+ -0 22:30:04.2
+ -0 22:30:04.18
+ -0 22:30:04.183
+ -0 22:30:04.1835
+ -0 22:30:04.18347
+ -0 22:30:04
+ -0 22:30:04.2
+ -0 22:30:04.18
+ -0 22:30:04.183
+ -0 22:30:04.1835
+ -0 22:30:04.18347
+ -0 22:30:04.183470
+ -1:56
+ -1:56
+ -1:56
+ -1:56:51
+ -1:56:51
+ -1:56:51
+ -1:56:51.6
+ -1:56:51
+ -1:56:51.6
+ -1:56:51.59
+ -1:56:51
+ -1:56:51.6
+ -1:56:51.59
+ -1:56:51.593
+ -1:56:51
+ -1:56:51.6
+ -1:56:51.59
+ -1:56:51.593
+ -1:56:51.5932
+ -1:56:51
+ -1:56:51.6
+ -1:56:51.59
+ -1:56:51.593
+ -1:56:51.5932
+ -1:56:51.59319
+ -1:56:51
+ -1:56:51.6
+ -1:56:51.59
+ -1:56:51.593
+ -1:56:51.5932
+ -1:56:51.59319
+ -1:56:51.593190
+ -0 01:56
+ -0 01:56
+ -0 01:56
+ -0 01:56:51
+ -0 01:56:51
+ -0 01:56:51
+ -0 01:56:51.6
+ -0 01:56:51
+ -0 01:56:51.6
+ -0 01:56:51.59
+ -0 01:56:51
+ -0 01:56:51.6
+ -0 01:56:51.59
+ -0 01:56:51.593
+ -0 01:56:51
+ -0 01:56:51.6
+ -0 01:56:51.59
+ -0 01:56:51.593
+ -0 01:56:51.5932
+ -0 01:56:51
+ -0 01:56:51.6
+ -0 01:56:51.59
+ -0 01:56:51.593
+ -0 01:56:51.5932
+ -0 01:56:51.59319
+ -0 01:56:51
+ -0 01:56:51.6
+ -0 01:56:51.59
+ -0 01:56:51.593
+ -0 01:56:51.5932
+ -0 01:56:51.59319
+ -0 01:56:51.593190
+ *****
+ -24:00
+ -24:00
+ -24:00
+ -24:00:00
+ -24:00:00
+ -24:00:00
+ -24:00:00
+ -24:00:00.0
+ -24:00:00.0
+ -24:00:00
+ -24:00:00.0
+ -24:00:00.00
+ -24:00:00.00
+ -24:00:00
+ -24:00:00.0
+ -24:00:00.00
+ -24:00:00.000
+ -24:00:00.000
+ -24:00:00
+ -24:00:00.0
+ -24:00:00.00
+ -24:00:00.000
+ -24:00:00.0000
+ -24:00:00.0000
+ -24:00:00
+ -24:00:00.0
+ -24:00:00.00
+ -24:00:00.000
+ -24:00:00.0000
+ -24:00:00.00000
+ -24:00:00.00000
+ -1 00:00
+ -1 00:00
+ -1 00:00
+ -1 00:00:00
+ -1 00:00:00
+ -1 00:00:00
+ -1 00:00:00.0
+ -1 00:00:00
+ -1 00:00:00.0
+ -1 00:00:00.00
+ -1 00:00:00
+ -1 00:00:00.0
+ -1 00:00:00.00
+ -1 00:00:00.000
+ -1 00:00:00
+ -1 00:00:00.0
+ -1 00:00:00.00
+ -1 00:00:00.000
+ -1 00:00:00.0000
+ -1 00:00:00
+ -1 00:00:00.0
+ -1 00:00:00.00
+ -1 00:00:00.000
+ -1 00:00:00.0000
+ -1 00:00:00.00000
+ -1 00:00:00
+ -1 00:00:00.0
+ -1 00:00:00.00
+ -1 00:00:00.000
+ -1 00:00:00.0000
+ -1 00:00:00.00000
+ -1 00:00:00.000000
+ *****
+ -28:50
+ -28:50
+ -28:50
+ -28:50:38
+ -28:50:38
+ -28:50:38
+ -28:50:38
+ -28:50:38.1
+ -28:50:38.1
+ -28:50:38
+ -28:50:38.1
+ -28:50:38.12
+ -28:50:38.12
+ -28:50:38
+ -28:50:38.1
+ -28:50:38.12
+ -28:50:38.123
+ -28:50:38.123
+ -28:50:38
+ -28:50:38.1
+ -28:50:38.12
+ -28:50:38.123
+ -28:50:38.1230
+ -28:50:38.1230
+ -28:50:38
+ -28:50:38.1
+ -28:50:38.12
+ -28:50:38.123
+ -28:50:38.1230
+ -28:50:38.12301
+ -28:50:38.12301
+ -1 04:50
+ -1 04:50
+ -1 04:50
+ -1 04:50:38
+ -1 04:50:38
+ -1 04:50:38
+ -1 04:50:38.1
+ -1 04:50:38
+ -1 04:50:38.1
+ -1 04:50:38.12
+ -1 04:50:38
+ -1 04:50:38.1
+ -1 04:50:38.12
+ -1 04:50:38.123
+ -1 04:50:38
+ -1 04:50:38.1
+ -1 04:50:38.12
+ -1 04:50:38.123
+ -1 04:50:38.1230
+ -1 04:50:38
+ -1 04:50:38.1
+ -1 04:50:38.12
+ -1 04:50:38.123
+ -1 04:50:38.1230
+ -1 04:50:38.12301
+ -1 04:50:38
+ -1 04:50:38.1
+ -1 04:50:38.12
+ -1 04:50:38.123
+ -1 04:50:38.1230
+ -1 04:50:38.12301
+ -1 04:50:38.123010
+ *****
+ -36:31
+ -36:31
+ -36:31
+ -36:31:35
+ -36:31:35
+ -36:31:35
+ -36:31:35
+ -36:31:35.2
+ -36:31:35.2
+ -36:31:35
+ -36:31:35.2
+ -36:31:35.23
+ -36:31:35.23
+ -36:31:35
+ -36:31:35.2
+ -36:31:35.23
+ -36:31:35.235
+ -36:31:35.235
+ -36:31:35
+ -36:31:35.2
+ -36:31:35.23
+ -36:31:35.235
+ -36:31:35.2345
+ -36:31:35.2345
+ -36:31:35
+ -36:31:35.2
+ -36:31:35.23
+ -36:31:35.235
+ -36:31:35.2345
+ -36:31:35.23453
+ -36:31:35.23453
+ -1 12:31
+ -1 12:31
+ -1 12:31
+ -1 12:31:35
+ -1 12:31:35
+ -1 12:31:35
+ -1 12:31:35.2
+ -1 12:31:35
+ -1 12:31:35.2
+ -1 12:31:35.23
+ -1 12:31:35
+ -1 12:31:35.2
+ -1 12:31:35.23
+ -1 12:31:35.235
+ -1 12:31:35
+ -1 12:31:35.2
+ -1 12:31:35.23
+ -1 12:31:35.235
+ -1 12:31:35.2345
+ -1 12:31:35
+ -1 12:31:35.2
+ -1 12:31:35.23
+ -1 12:31:35.235
+ -1 12:31:35.2345
+ -1 12:31:35.23453
+ -1 12:31:35
+ -1 12:31:35.2
+ -1 12:31:35.23
+ -1 12:31:35.235
+ -1 12:31:35.2345
+ -1 12:31:35.23453
+ -1 12:31:35.234530
+ *****
+ -36:47
+ -36:47
+ -36:47
+ -36:47:53
+ -36:47:53
+ -36:47:53
+ -36:47:53
+ -36:47:53.3
+ -36:47:53.3
+ -36:47:53
+ -36:47:53.3
+ -36:47:53.35
+ -36:47:53.35
+ -36:47:53
+ -36:47:53.3
+ -36:47:53.35
+ -36:47:53.345
+ -36:47:53.345
+ -36:47:53
+ -36:47:53.3
+ -36:47:53.35
+ -36:47:53.345
+ -36:47:53.3451
+ -36:47:53.3451
+ -36:47:53
+ -36:47:53.3
+ -36:47:53.35
+ -36:47:53.345
+ -36:47:53.3451
+ -36:47:53.34505
+ -36:47:53.34505
+ -1 12:47
+ -1 12:47
+ -1 12:47
+ -1 12:47:53
+ -1 12:47:53
+ -1 12:47:53
+ -1 12:47:53.3
+ -1 12:47:53
+ -1 12:47:53.3
+ -1 12:47:53.35
+ -1 12:47:53
+ -1 12:47:53.3
+ -1 12:47:53.35
+ -1 12:47:53.345
+ -1 12:47:53
+ -1 12:47:53.3
+ -1 12:47:53.35
+ -1 12:47:53.345
+ -1 12:47:53.3451
+ -1 12:47:53
+ -1 12:47:53.3
+ -1 12:47:53.35
+ -1 12:47:53.345
+ -1 12:47:53.3451
+ -1 12:47:53.34505
+ -1 12:47:53
+ -1 12:47:53.3
+ -1 12:47:53.35
+ -1 12:47:53.345
+ -1 12:47:53.3451
+ -1 12:47:53.34505
+ -1 12:47:53.345050
+ *****
+ -25:26
+ -25:26
+ -25:26
+ -25:26:00
+ -25:26:00
+ -25:26:00
+ -25:26:00
+ -25:26:00.5
+ -25:26:00.5
+ -25:26:00
+ -25:26:00.5
+ -25:26:00.46
+ -25:26:00.46
+ -25:26:00
+ -25:26:00.5
+ -25:26:00.46
+ -25:26:00.456
+ -25:26:00.456
+ -25:26:00
+ -25:26:00.5
+ -25:26:00.46
+ -25:26:00.456
+ -25:26:00.4561
+ -25:26:00.4561
+ -25:26:00
+ -25:26:00.5
+ -25:26:00.46
+ -25:26:00.456
+ -25:26:00.4561
+ -25:26:00.45615
+ -25:26:00.45615
+ -1 01:26
+ -1 01:26
+ -1 01:26
+ -1 01:26:00
+ -1 01:26:00
+ -1 01:26:00
+ -1 01:26:00.5
+ -1 01:26:00
+ -1 01:26:00.5
+ -1 01:26:00.46
+ -1 01:26:00
+ -1 01:26:00.5
+ -1 01:26:00.46
+ -1 01:26:00.456
+ -1 01:26:00
+ -1 01:26:00.5
+ -1 01:26:00.46
+ -1 01:26:00.456
+ -1 01:26:00.4561
+ -1 01:26:00
+ -1 01:26:00.5
+ -1 01:26:00.46
+ -1 01:26:00.456
+ -1 01:26:00.4561
+ -1 01:26:00.45615
+ -1 01:26:00
+ -1 01:26:00.5
+ -1 01:26:00.46
+ -1 01:26:00.456
+ -1 01:26:00.4561
+ -1 01:26:00.45615
+ -1 01:26:00.456150
+ *****
+ -44:58
+ -44:58
+ -44:58
+ -44:58:11
+ -44:58:11
+ -44:58:11
+ -44:58:11
+ -44:58:11.6
+ -44:58:11.6
+ -44:58:11
+ -44:58:11.6
+ -44:58:11.57
+ -44:58:11.57
+ -44:58:11
+ -44:58:11.6
+ -44:58:11.57
+ -44:58:11.567
+ -44:58:11.567
+ -44:58:11
+ -44:58:11.6
+ -44:58:11.57
+ -44:58:11.567
+ -44:58:11.5668
+ -44:58:11.5668
+ -44:58:11
+ -44:58:11.6
+ -44:58:11.57
+ -44:58:11.567
+ -44:58:11.5668
+ -44:58:11.56677
+ -44:58:11.56677
+ -1 20:58
+ -1 20:58
+ -1 20:58
+ -1 20:58:11
+ -1 20:58:11
+ -1 20:58:11
+ -1 20:58:11.6
+ -1 20:58:11
+ -1 20:58:11.6
+ -1 20:58:11.57
+ -1 20:58:11
+ -1 20:58:11.6
+ -1 20:58:11.57
+ -1 20:58:11.567
+ -1 20:58:11
+ -1 20:58:11.6
+ -1 20:58:11.57
+ -1 20:58:11.567
+ -1 20:58:11.5668
+ -1 20:58:11
+ -1 20:58:11.6
+ -1 20:58:11.57
+ -1 20:58:11.567
+ -1 20:58:11.5668
+ -1 20:58:11.56677
+ -1 20:58:11
+ -1 20:58:11.6
+ -1 20:58:11.57
+ -1 20:58:11.567
+ -1 20:58:11.5668
+ -1 20:58:11.56677
+ -1 20:58:11.566770
+ *****
+ -31:36
+ -31:36
+ -31:36
+ -31:36:05
+ -31:36:05
+ -31:36:05
+ -31:36:05
+ -31:36:05.2
+ -31:36:05.2
+ -31:36:05
+ -31:36:05.2
+ -31:36:05.19
+ -31:36:05.19
+ -31:36:05
+ -31:36:05.2
+ -31:36:05.19
+ -31:36:05.190
+ -31:36:05.190
+ -31:36:05
+ -31:36:05.2
+ -31:36:05.19
+ -31:36:05.190
+ -31:36:05.1896
+ -31:36:05.1896
+ -31:36:05
+ -31:36:05.2
+ -31:36:05.19
+ -31:36:05.190
+ -31:36:05.1896
+ -31:36:05.18964
+ -31:36:05.18964
+ -1 07:36
+ -1 07:36
+ -1 07:36
+ -1 07:36:05
+ -1 07:36:05
+ -1 07:36:05
+ -1 07:36:05.2
+ -1 07:36:05
+ -1 07:36:05.2
+ -1 07:36:05.19
+ -1 07:36:05
+ -1 07:36:05.2
+ -1 07:36:05.19
+ -1 07:36:05.190
+ -1 07:36:05
+ -1 07:36:05.2
+ -1 07:36:05.19
+ -1 07:36:05.190
+ -1 07:36:05.1896
+ -1 07:36:05
+ -1 07:36:05.2
+ -1 07:36:05.19
+ -1 07:36:05.190
+ -1 07:36:05.1896
+ -1 07:36:05.18964
+ -1 07:36:05
+ -1 07:36:05.2
+ -1 07:36:05.19
+ -1 07:36:05.190
+ -1 07:36:05.1896
+ -1 07:36:05.18964
+ -1 07:36:05.189640
+ *****
+ -39:43
+ -39:43
+ -39:43
+ -39:43:49
+ -39:43:49
+ -39:43:49
+ -39:43:49
+ -39:43:49.8
+ -39:43:49.8
+ -39:43:49
+ -39:43:49.8
+ -39:43:49.83
+ -39:43:49.83
+ -39:43:49
+ -39:43:49.8
+ -39:43:49.83
+ -39:43:49.831
+ -39:43:49.831
+ -39:43:49
+ -39:43:49.8
+ -39:43:49.83
+ -39:43:49.831
+ -39:43:49.8313
+ -39:43:49.8313
+ -39:43:49
+ -39:43:49.8
+ -39:43:49.83
+ -39:43:49.831
+ -39:43:49.8313
+ -39:43:49.83132
+ -39:43:49.83132
+ -1 15:43
+ -1 15:43
+ -1 15:43
+ -1 15:43:49
+ -1 15:43:49
+ -1 15:43:49
+ -1 15:43:49.8
+ -1 15:43:49
+ -1 15:43:49.8
+ -1 15:43:49.83
+ -1 15:43:49
+ -1 15:43:49.8
+ -1 15:43:49.83
+ -1 15:43:49.831
+ -1 15:43:49
+ -1 15:43:49.8
+ -1 15:43:49.83
+ -1 15:43:49.831
+ -1 15:43:49.8313
+ -1 15:43:49
+ -1 15:43:49.8
+ -1 15:43:49.83
+ -1 15:43:49.831
+ -1 15:43:49.8313
+ -1 15:43:49.83132
+ -1 15:43:49
+ -1 15:43:49.8
+ -1 15:43:49.83
+ -1 15:43:49.831
+ -1 15:43:49.8313
+ -1 15:43:49.83132
+ -1 15:43:49.831320
+ *****
+ -28:25
+ -28:25
+ -28:25
+ -28:25:09
+ -28:25:09
+ -28:25:09
+ -28:25:09
+ -28:25:09.0
+ -28:25:09.0
+ -28:25:09
+ -28:25:09.0
+ -28:25:09.01
+ -28:25:09.01
+ -28:25:09
+ -28:25:09.0
+ -28:25:09.01
+ -28:25:09.013
+ -28:25:09.013
+ -28:25:09
+ -28:25:09.0
+ -28:25:09.01
+ -28:25:09.013
+ -28:25:09.0129
+ -28:25:09.0129
+ -28:25:09
+ -28:25:09.0
+ -28:25:09.01
+ -28:25:09.013
+ -28:25:09.0129
+ -28:25:09.01293
+ -28:25:09.01293
+ -1 04:25
+ -1 04:25
+ -1 04:25
+ -1 04:25:09
+ -1 04:25:09
+ -1 04:25:09
+ -1 04:25:09.0
+ -1 04:25:09
+ -1 04:25:09.0
+ -1 04:25:09.01
+ -1 04:25:09
+ -1 04:25:09.0
+ -1 04:25:09.01
+ -1 04:25:09.013
+ -1 04:25:09
+ -1 04:25:09.0
+ -1 04:25:09.01
+ -1 04:25:09.013
+ -1 04:25:09.0129
+ -1 04:25:09
+ -1 04:25:09.0
+ -1 04:25:09.01
+ -1 04:25:09.013
+ -1 04:25:09.0129
+ -1 04:25:09.01293
+ -1 04:25:09
+ -1 04:25:09.0
+ -1 04:25:09.01
+ -1 04:25:09.013
+ -1 04:25:09.0129
+ -1 04:25:09.01293
+ -1 04:25:09.012930
+ *****
+ -30:49
+ -30:49
+ -30:49
+ -30:49:27
+ -30:49:27
+ -30:49:27
+ -30:49:27
+ -30:49:27.5
+ -30:49:27.5
+ -30:49:27
+ -30:49:27.5
+ -30:49:27.52
+ -30:49:27.52
+ -30:49:27
+ -30:49:27.5
+ -30:49:27.52
+ -30:49:27.524
+ -30:49:27.524
+ -30:49:27
+ -30:49:27.5
+ -30:49:27.52
+ -30:49:27.524
+ -30:49:27.5237
+ -30:49:27.5237
+ -30:49:27
+ -30:49:27.5
+ -30:49:27.52
+ -30:49:27.524
+ -30:49:27.5237
+ -30:49:27.52375
+ -30:49:27.52375
+ -1 06:49
+ -1 06:49
+ -1 06:49
+ -1 06:49:27
+ -1 06:49:27
+ -1 06:49:27
+ -1 06:49:27.5
+ -1 06:49:27
+ -1 06:49:27.5
+ -1 06:49:27.52
+ -1 06:49:27
+ -1 06:49:27.5
+ -1 06:49:27.52
+ -1 06:49:27.524
+ -1 06:49:27
+ -1 06:49:27.5
+ -1 06:49:27.52
+ -1 06:49:27.524
+ -1 06:49:27.5237
+ -1 06:49:27
+ -1 06:49:27.5
+ -1 06:49:27.52
+ -1 06:49:27.524
+ -1 06:49:27.5237
+ -1 06:49:27.52375
+ -1 06:49:27
+ -1 06:49:27.5
+ -1 06:49:27.52
+ -1 06:49:27.524
+ -1 06:49:27.5237
+ -1 06:49:27.52375
+ -1 06:49:27.523750
+ *****
+ -26:57
+ -26:57
+ -26:57
+ -26:57:52
+ -26:57:52
+ -26:57:52
+ -26:57:52
+ -26:57:52.0
+ -26:57:52.0
+ -26:57:52
+ -26:57:52.0
+ -26:57:52.02
+ -26:57:52.02
+ -26:57:52
+ -26:57:52.0
+ -26:57:52.02
+ -26:57:52.016
+ -26:57:52.016
+ -26:57:52
+ -26:57:52.0
+ -26:57:52.02
+ -26:57:52.016
+ -26:57:52.0157
+ -26:57:52.0157
+ -26:57:52
+ -26:57:52.0
+ -26:57:52.02
+ -26:57:52.016
+ -26:57:52.0157
+ -26:57:52.01565
+ -26:57:52.01565
+ -1 02:57
+ -1 02:57
+ -1 02:57
+ -1 02:57:52
+ -1 02:57:52
+ -1 02:57:52
+ -1 02:57:52.0
+ -1 02:57:52
+ -1 02:57:52.0
+ -1 02:57:52.02
+ -1 02:57:52
+ -1 02:57:52.0
+ -1 02:57:52.02
+ -1 02:57:52.016
+ -1 02:57:52
+ -1 02:57:52.0
+ -1 02:57:52.02
+ -1 02:57:52.016
+ -1 02:57:52.0157
+ -1 02:57:52
+ -1 02:57:52.0
+ -1 02:57:52.02
+ -1 02:57:52.016
+ -1 02:57:52.0157
+ -1 02:57:52.01565
+ -1 02:57:52
+ -1 02:57:52.0
+ -1 02:57:52.02
+ -1 02:57:52.016
+ -1 02:57:52.0157
+ -1 02:57:52.01565
+ -1 02:57:52.015650
+ *****
+ -40:45
+ -40:45
+ -40:45
+ -40:45:44
+ -40:45:44
+ -40:45:44
+ -40:45:44
+ -40:45:44.9
+ -40:45:44.9
+ -40:45:44
+ -40:45:44.9
+ -40:45:44.87
+ -40:45:44.87
+ -40:45:44
+ -40:45:44.9
+ -40:45:44.87
+ -40:45:44.865
+ -40:45:44.865
+ -40:45:44
+ -40:45:44.9
+ -40:45:44.87
+ -40:45:44.865
+ -40:45:44.8653
+ -40:45:44.8653
+ -40:45:44
+ -40:45:44.9
+ -40:45:44.87
+ -40:45:44.865
+ -40:45:44.8653
+ -40:45:44.86529
+ -40:45:44.86529
+ -1 16:45
+ -1 16:45
+ -1 16:45
+ -1 16:45:44
+ -1 16:45:44
+ -1 16:45:44
+ -1 16:45:44.9
+ -1 16:45:44
+ -1 16:45:44.9
+ -1 16:45:44.87
+ -1 16:45:44
+ -1 16:45:44.9
+ -1 16:45:44.87
+ -1 16:45:44.865
+ -1 16:45:44
+ -1 16:45:44.9
+ -1 16:45:44.87
+ -1 16:45:44.865
+ -1 16:45:44.8653
+ -1 16:45:44
+ -1 16:45:44.9
+ -1 16:45:44.87
+ -1 16:45:44.865
+ -1 16:45:44.8653
+ -1 16:45:44.86529
+ -1 16:45:44
+ -1 16:45:44.9
+ -1 16:45:44.87
+ -1 16:45:44.865
+ -1 16:45:44.8653
+ -1 16:45:44.86529
+ -1 16:45:44.865290
+ *****
+ -45:30
+ -45:30
+ -45:30
+ -45:30:57
+ -45:30:57
+ -45:30:57
+ -45:30:57
+ -45:30:57.8
+ -45:30:57.8
+ -45:30:57
+ -45:30:57.8
+ -45:30:57.82
+ -45:30:57.82
+ -45:30:57
+ -45:30:57.8
+ -45:30:57.82
+ -45:30:57.820
+ -45:30:57.820
+ -45:30:57
+ -45:30:57.8
+ -45:30:57.82
+ -45:30:57.820
+ -45:30:57.8205
+ -45:30:57.8205
+ -45:30:57
+ -45:30:57.8
+ -45:30:57.82
+ -45:30:57.820
+ -45:30:57.8205
+ -45:30:57.82047
+ -45:30:57.82047
+ -1 21:30
+ -1 21:30
+ -1 21:30
+ -1 21:30:57
+ -1 21:30:57
+ -1 21:30:57
+ -1 21:30:57.8
+ -1 21:30:57
+ -1 21:30:57.8
+ -1 21:30:57.82
+ -1 21:30:57
+ -1 21:30:57.8
+ -1 21:30:57.82
+ -1 21:30:57.820
+ -1 21:30:57
+ -1 21:30:57.8
+ -1 21:30:57.82
+ -1 21:30:57.820
+ -1 21:30:57.8205
+ -1 21:30:57
+ -1 21:30:57.8
+ -1 21:30:57.82
+ -1 21:30:57.820
+ -1 21:30:57.8205
+ -1 21:30:57.82047
+ -1 21:30:57
+ -1 21:30:57.8
+ -1 21:30:57.82
+ -1 21:30:57.820
+ -1 21:30:57.8205
+ -1 21:30:57.82047
+ -1 21:30:57.820470
+ *****
+ -28:25
+ -28:25
+ -28:25
+ -28:25:09
+ -28:25:09
+ -28:25:09
+ -28:25:09
+ -28:25:09.2
+ -28:25:09.2
+ -28:25:09
+ -28:25:09.2
+ -28:25:09.15
+ -28:25:09.15
+ -28:25:09
+ -28:25:09.2
+ -28:25:09.15
+ -28:25:09.154
+ -28:25:09.154
+ -28:25:09
+ -28:25:09.2
+ -28:25:09.15
+ -28:25:09.154
+ -28:25:09.1540
+ -28:25:09.1540
+ -28:25:09
+ -28:25:09.2
+ -28:25:09.15
+ -28:25:09.154
+ -28:25:09.1540
+ -28:25:09.15395
+ -28:25:09.15395
+ -1 04:25
+ -1 04:25
+ -1 04:25
+ -1 04:25:09
+ -1 04:25:09
+ -1 04:25:09
+ -1 04:25:09.2
+ -1 04:25:09
+ -1 04:25:09.2
+ -1 04:25:09.15
+ -1 04:25:09
+ -1 04:25:09.2
+ -1 04:25:09.15
+ -1 04:25:09.154
+ -1 04:25:09
+ -1 04:25:09.2
+ -1 04:25:09.15
+ -1 04:25:09.154
+ -1 04:25:09.1540
+ -1 04:25:09
+ -1 04:25:09.2
+ -1 04:25:09.15
+ -1 04:25:09.154
+ -1 04:25:09.1540
+ -1 04:25:09.15395
+ -1 04:25:09
+ -1 04:25:09.2
+ -1 04:25:09.15
+ -1 04:25:09.154
+ -1 04:25:09.1540
+ -1 04:25:09.15395
+ -1 04:25:09.153950
+ *****
+ -30:49
+ -30:49
+ -30:49
+ -30:49:27
+ -30:49:27
+ -30:49:27
+ -30:49:27
+ -30:49:27.1
+ -30:49:27.1
+ -30:49:27
+ -30:49:27.1
+ -30:49:27.11
+ -30:49:27.11
+ -30:49:27
+ -30:49:27.1
+ -30:49:27.11
+ -30:49:27.105
+ -30:49:27.105
+ -30:49:27
+ -30:49:27.1
+ -30:49:27.11
+ -30:49:27.105
+ -30:49:27.1053
+ -30:49:27.1053
+ -30:49:27
+ -30:49:27.1
+ -30:49:27.11
+ -30:49:27.105
+ -30:49:27.1053
+ -30:49:27.10533
+ -30:49:27.10533
+ -1 06:49
+ -1 06:49
+ -1 06:49
+ -1 06:49:27
+ -1 06:49:27
+ -1 06:49:27
+ -1 06:49:27.1
+ -1 06:49:27
+ -1 06:49:27.1
+ -1 06:49:27.11
+ -1 06:49:27
+ -1 06:49:27.1
+ -1 06:49:27.11
+ -1 06:49:27.105
+ -1 06:49:27
+ -1 06:49:27.1
+ -1 06:49:27.11
+ -1 06:49:27.105
+ -1 06:49:27.1053
+ -1 06:49:27
+ -1 06:49:27.1
+ -1 06:49:27.11
+ -1 06:49:27.105
+ -1 06:49:27.1053
+ -1 06:49:27.10533
+ -1 06:49:27
+ -1 06:49:27.1
+ -1 06:49:27.11
+ -1 06:49:27.105
+ -1 06:49:27.1053
+ -1 06:49:27.10533
+ -1 06:49:27.105330
+ *****
+ -26:57
+ -26:57
+ -26:57
+ -26:57:52
+ -26:57:52
+ -26:57:52
+ -26:57:52
+ -26:57:52.5
+ -26:57:52.5
+ -26:57:52
+ -26:57:52.5
+ -26:57:52.48
+ -26:57:52.48
+ -26:57:52
+ -26:57:52.5
+ -26:57:52.48
+ -26:57:52.482
+ -26:57:52.482
+ -26:57:52
+ -26:57:52.5
+ -26:57:52.48
+ -26:57:52.482
+ -26:57:52.4823
+ -26:57:52.4823
+ -26:57:52
+ -26:57:52.5
+ -26:57:52.48
+ -26:57:52.482
+ -26:57:52.4823
+ -26:57:52.48229
+ -26:57:52.48229
+ -1 02:57
+ -1 02:57
+ -1 02:57
+ -1 02:57:52
+ -1 02:57:52
+ -1 02:57:52
+ -1 02:57:52.5
+ -1 02:57:52
+ -1 02:57:52.5
+ -1 02:57:52.48
+ -1 02:57:52
+ -1 02:57:52.5
+ -1 02:57:52.48
+ -1 02:57:52.482
+ -1 02:57:52
+ -1 02:57:52.5
+ -1 02:57:52.48
+ -1 02:57:52.482
+ -1 02:57:52.4823
+ -1 02:57:52
+ -1 02:57:52.5
+ -1 02:57:52.48
+ -1 02:57:52.482
+ -1 02:57:52.4823
+ -1 02:57:52.48229
+ -1 02:57:52
+ -1 02:57:52.5
+ -1 02:57:52.48
+ -1 02:57:52.482
+ -1 02:57:52.4823
+ -1 02:57:52.48229
+ -1 02:57:52.482290
+ *****
+ -40:45
+ -40:45
+ -40:45
+ -40:45:44
+ -40:45:44
+ -40:45:44
+ -40:45:44
+ -40:45:44.7
+ -40:45:44.7
+ -40:45:44
+ -40:45:44.7
+ -40:45:44.66
+ -40:45:44.66
+ -40:45:44
+ -40:45:44.7
+ -40:45:44.66
+ -40:45:44.658
+ -40:45:44.658
+ -40:45:44
+ -40:45:44.7
+ -40:45:44.66
+ -40:45:44.658
+ -40:45:44.6583
+ -40:45:44.6583
+ -40:45:44
+ -40:45:44.7
+ -40:45:44.66
+ -40:45:44.658
+ -40:45:44.6583
+ -40:45:44.65827
+ -40:45:44.65827
+ -1 16:45
+ -1 16:45
+ -1 16:45
+ -1 16:45:44
+ -1 16:45:44
+ -1 16:45:44
+ -1 16:45:44.7
+ -1 16:45:44
+ -1 16:45:44.7
+ -1 16:45:44.66
+ -1 16:45:44
+ -1 16:45:44.7
+ -1 16:45:44.66
+ -1 16:45:44.658
+ -1 16:45:44
+ -1 16:45:44.7
+ -1 16:45:44.66
+ -1 16:45:44.658
+ -1 16:45:44.6583
+ -1 16:45:44
+ -1 16:45:44.7
+ -1 16:45:44.66
+ -1 16:45:44.658
+ -1 16:45:44.6583
+ -1 16:45:44.65827
+ -1 16:45:44
+ -1 16:45:44.7
+ -1 16:45:44.66
+ -1 16:45:44.658
+ -1 16:45:44.6583
+ -1 16:45:44.65827
+ -1 16:45:44.658270
+ *****
+ -45:30
+ -45:30
+ -45:30
+ -45:30:57
+ -45:30:57
+ -45:30:57
+ -45:30:57
+ -45:30:57.6
+ -45:30:57.6
+ -45:30:57
+ -45:30:57.6
+ -45:30:57.58
+ -45:30:57.58
+ -45:30:57
+ -45:30:57.6
+ -45:30:57.58
+ -45:30:57.582
+ -45:30:57.582
+ -45:30:57
+ -45:30:57.6
+ -45:30:57.58
+ -45:30:57.582
+ -45:30:57.5822
+ -45:30:57.5822
+ -45:30:57
+ -45:30:57.6
+ -45:30:57.58
+ -45:30:57.582
+ -45:30:57.5822
+ -45:30:57.58219
+ -45:30:57.58219
+ -1 21:30
+ -1 21:30
+ -1 21:30
+ -1 21:30:57
+ -1 21:30:57
+ -1 21:30:57
+ -1 21:30:57.6
+ -1 21:30:57
+ -1 21:30:57.6
+ -1 21:30:57.58
+ -1 21:30:57
+ -1 21:30:57.6
+ -1 21:30:57.58
+ -1 21:30:57.582
+ -1 21:30:57
+ -1 21:30:57.6
+ -1 21:30:57.58
+ -1 21:30:57.582
+ -1 21:30:57.5822
+ -1 21:30:57
+ -1 21:30:57.6
+ -1 21:30:57.58
+ -1 21:30:57.582
+ -1 21:30:57.5822
+ -1 21:30:57.58219
+ -1 21:30:57
+ -1 21:30:57.6
+ -1 21:30:57.58
+ -1 21:30:57.582
+ -1 21:30:57.5822
+ -1 21:30:57.58219
+ -1 21:30:57.582190
+ *****
+ -46:30
+ -46:30
+ -46:30
+ -46:30:04
+ -46:30:04
+ -46:30:04
+ -46:30:04
+ -46:30:04.2
+ -46:30:04.2
+ -46:30:04
+ -46:30:04.2
+ -46:30:04.18
+ -46:30:04.18
+ -46:30:04
+ -46:30:04.2
+ -46:30:04.18
+ -46:30:04.183
+ -46:30:04.183
+ -46:30:04
+ -46:30:04.2
+ -46:30:04.18
+ -46:30:04.183
+ -46:30:04.1835
+ -46:30:04.1835
+ -46:30:04
+ -46:30:04.2
+ -46:30:04.18
+ -46:30:04.183
+ -46:30:04.1835
+ -46:30:04.18347
+ -46:30:04.18347
+ -1 22:30
+ -1 22:30
+ -1 22:30
+ -1 22:30:04
+ -1 22:30:04
+ -1 22:30:04
+ -1 22:30:04.2
+ -1 22:30:04
+ -1 22:30:04.2
+ -1 22:30:04.18
+ -1 22:30:04
+ -1 22:30:04.2
+ -1 22:30:04.18
+ -1 22:30:04.183
+ -1 22:30:04
+ -1 22:30:04.2
+ -1 22:30:04.18
+ -1 22:30:04.183
+ -1 22:30:04.1835
+ -1 22:30:04
+ -1 22:30:04.2
+ -1 22:30:04.18
+ -1 22:30:04.183
+ -1 22:30:04.1835
+ -1 22:30:04.18347
+ -1 22:30:04
+ -1 22:30:04.2
+ -1 22:30:04.18
+ -1 22:30:04.183
+ -1 22:30:04.1835
+ -1 22:30:04.18347
+ -1 22:30:04.183470
+ *****
+ -25:56
+ -25:56
+ -25:56
+ -25:56:51
+ -25:56:51
+ -25:56:51
+ -25:56:51
+ -25:56:51.6
+ -25:56:51.6
+ -25:56:51
+ -25:56:51.6
+ -25:56:51.59
+ -25:56:51.59
+ -25:56:51
+ -25:56:51.6
+ -25:56:51.59
+ -25:56:51.593
+ -25:56:51.593
+ -25:56:51
+ -25:56:51.6
+ -25:56:51.59
+ -25:56:51.593
+ -25:56:51.5932
+ -25:56:51.5932
+ -25:56:51
+ -25:56:51.6
+ -25:56:51.59
+ -25:56:51.593
+ -25:56:51.5932
+ -25:56:51.59319
+ -25:56:51.59319
+ -1 01:56
+ -1 01:56
+ -1 01:56
+ -1 01:56:51
+ -1 01:56:51
+ -1 01:56:51
+ -1 01:56:51.6
+ -1 01:56:51
+ -1 01:56:51.6
+ -1 01:56:51.59
+ -1 01:56:51
+ -1 01:56:51.6
+ -1 01:56:51.59
+ -1 01:56:51.593
+ -1 01:56:51
+ -1 01:56:51.6
+ -1 01:56:51.59
+ -1 01:56:51.593
+ -1 01:56:51.5932
+ -1 01:56:51
+ -1 01:56:51.6
+ -1 01:56:51.59
+ -1 01:56:51.593
+ -1 01:56:51.5932
+ -1 01:56:51.59319
+ -1 01:56:51
+ -1 01:56:51.6
+ -1 01:56:51.59
+ -1 01:56:51.593
+ -1 01:56:51.5932
+ -1 01:56:51.59319
+ -1 01:56:51.593190
+ *****
+ -48:00
+ -48:00
+ -48:00
+ -48:00:00
+ -48:00:00
+ -48:00:00
+ -48:00:00
+ -48:00:00.0
+ -48:00:00.0
+ -48:00:00
+ -48:00:00.0
+ -48:00:00.00
+ -48:00:00.00
+ -48:00:00
+ -48:00:00.0
+ -48:00:00.00
+ -48:00:00.000
+ -48:00:00.000
+ -48:00:00
+ -48:00:00.0
+ -48:00:00.00
+ -48:00:00.000
+ -48:00:00.0000
+ -48:00:00.0000
+ -48:00:00
+ -48:00:00.0
+ -48:00:00.00
+ -48:00:00.000
+ -48:00:00.0000
+ -48:00:00.00000
+ -48:00:00.00000
+ -2 00:00
+ -2 00:00
+ -2 00:00
+ -2 00:00:00
+ -2 00:00:00
+ -2 00:00:00
+ -2 00:00:00.0
+ -2 00:00:00
+ -2 00:00:00.0
+ -2 00:00:00.00
+ -2 00:00:00
+ -2 00:00:00.0
+ -2 00:00:00.00
+ -2 00:00:00.000
+ -2 00:00:00
+ -2 00:00:00.0
+ -2 00:00:00.00
+ -2 00:00:00.000
+ -2 00:00:00.0000
+ -2 00:00:00
+ -2 00:00:00.0
+ -2 00:00:00.00
+ -2 00:00:00.000
+ -2 00:00:00.0000
+ -2 00:00:00.00000
+ -2 00:00:00
+ -2 00:00:00.0
+ -2 00:00:00.00
+ -2 00:00:00.000
+ -2 00:00:00.0000
+ -2 00:00:00.00000
+ -2 00:00:00.000000
+ *****
+ -52:50
+ -52:50
+ -52:50
+ -52:50:38
+ -52:50:38
+ -52:50:38
+ -52:50:38
+ -52:50:38.1
+ -52:50:38.1
+ -52:50:38
+ -52:50:38.1
+ -52:50:38.12
+ -52:50:38.12
+ -52:50:38
+ -52:50:38.1
+ -52:50:38.12
+ -52:50:38.123
+ -52:50:38.123
+ -52:50:38
+ -52:50:38.1
+ -52:50:38.12
+ -52:50:38.123
+ -52:50:38.1230
+ -52:50:38.1230
+ -52:50:38
+ -52:50:38.1
+ -52:50:38.12
+ -52:50:38.123
+ -52:50:38.1230
+ -52:50:38.12301
+ -52:50:38.12301
+ -2 04:50
+ -2 04:50
+ -2 04:50
+ -2 04:50:38
+ -2 04:50:38
+ -2 04:50:38
+ -2 04:50:38.1
+ -2 04:50:38
+ -2 04:50:38.1
+ -2 04:50:38.12
+ -2 04:50:38
+ -2 04:50:38.1
+ -2 04:50:38.12
+ -2 04:50:38.123
+ -2 04:50:38
+ -2 04:50:38.1
+ -2 04:50:38.12
+ -2 04:50:38.123
+ -2 04:50:38.1230
+ -2 04:50:38
+ -2 04:50:38.1
+ -2 04:50:38.12
+ -2 04:50:38.123
+ -2 04:50:38.1230
+ -2 04:50:38.12301
+ -2 04:50:38
+ -2 04:50:38.1
+ -2 04:50:38.12
+ -2 04:50:38.123
+ -2 04:50:38.1230
+ -2 04:50:38.12301
+ -2 04:50:38.123010
+ *****
+ -60:31
+ -60:31
+ -60:31
+ -60:31:35
+ -60:31:35
+ -60:31:35
+ -60:31:35
+ -60:31:35.2
+ -60:31:35.2
+ -60:31:35
+ -60:31:35.2
+ -60:31:35.23
+ -60:31:35.23
+ -60:31:35
+ -60:31:35.2
+ -60:31:35.23
+ -60:31:35.235
+ -60:31:35.235
+ -60:31:35
+ -60:31:35.2
+ -60:31:35.23
+ -60:31:35.235
+ -60:31:35.2345
+ -60:31:35.2345
+ -60:31:35
+ -60:31:35.2
+ -60:31:35.23
+ -60:31:35.235
+ -60:31:35.2345
+ -60:31:35.23453
+ -60:31:35.23453
+ -2 12:31
+ -2 12:31
+ -2 12:31
+ -2 12:31:35
+ -2 12:31:35
+ -2 12:31:35
+ -2 12:31:35.2
+ -2 12:31:35
+ -2 12:31:35.2
+ -2 12:31:35.23
+ -2 12:31:35
+ -2 12:31:35.2
+ -2 12:31:35.23
+ -2 12:31:35.235
+ -2 12:31:35
+ -2 12:31:35.2
+ -2 12:31:35.23
+ -2 12:31:35.235
+ -2 12:31:35.2345
+ -2 12:31:35
+ -2 12:31:35.2
+ -2 12:31:35.23
+ -2 12:31:35.235
+ -2 12:31:35.2345
+ -2 12:31:35.23453
+ -2 12:31:35
+ -2 12:31:35.2
+ -2 12:31:35.23
+ -2 12:31:35.235
+ -2 12:31:35.2345
+ -2 12:31:35.23453
+ -2 12:31:35.234530
+ *****
+ -60:47
+ -60:47
+ -60:47
+ -60:47:53
+ -60:47:53
+ -60:47:53
+ -60:47:53
+ -60:47:53.3
+ -60:47:53.3
+ -60:47:53
+ -60:47:53.3
+ -60:47:53.35
+ -60:47:53.35
+ -60:47:53
+ -60:47:53.3
+ -60:47:53.35
+ -60:47:53.345
+ -60:47:53.345
+ -60:47:53
+ -60:47:53.3
+ -60:47:53.35
+ -60:47:53.345
+ -60:47:53.3451
+ -60:47:53.3451
+ -60:47:53
+ -60:47:53.3
+ -60:47:53.35
+ -60:47:53.345
+ -60:47:53.3451
+ -60:47:53.34505
+ -60:47:53.34505
+ -2 12:47
+ -2 12:47
+ -2 12:47
+ -2 12:47:53
+ -2 12:47:53
+ -2 12:47:53
+ -2 12:47:53.3
+ -2 12:47:53
+ -2 12:47:53.3
+ -2 12:47:53.35
+ -2 12:47:53
+ -2 12:47:53.3
+ -2 12:47:53.35
+ -2 12:47:53.345
+ -2 12:47:53
+ -2 12:47:53.3
+ -2 12:47:53.35
+ -2 12:47:53.345
+ -2 12:47:53.3451
+ -2 12:47:53
+ -2 12:47:53.3
+ -2 12:47:53.35
+ -2 12:47:53.345
+ -2 12:47:53.3451
+ -2 12:47:53.34505
+ -2 12:47:53
+ -2 12:47:53.3
+ -2 12:47:53.35
+ -2 12:47:53.345
+ -2 12:47:53.3451
+ -2 12:47:53.34505
+ -2 12:47:53.345050
+ *****
+ -49:26
+ -49:26
+ -49:26
+ -49:26:00
+ -49:26:00
+ -49:26:00
+ -49:26:00
+ -49:26:00.5
+ -49:26:00.5
+ -49:26:00
+ -49:26:00.5
+ -49:26:00.46
+ -49:26:00.46
+ -49:26:00
+ -49:26:00.5
+ -49:26:00.46
+ -49:26:00.456
+ -49:26:00.456
+ -49:26:00
+ -49:26:00.5
+ -49:26:00.46
+ -49:26:00.456
+ -49:26:00.4562
+ -49:26:00.4562
+ -49:26:00
+ -49:26:00.5
+ -49:26:00.46
+ -49:26:00.456
+ -49:26:00.4562
+ -49:26:00.45615
+ -49:26:00.45615
+ -2 01:26
+ -2 01:26
+ -2 01:26
+ -2 01:26:00
+ -2 01:26:00
+ -2 01:26:00
+ -2 01:26:00.5
+ -2 01:26:00
+ -2 01:26:00.5
+ -2 01:26:00.46
+ -2 01:26:00
+ -2 01:26:00.5
+ -2 01:26:00.46
+ -2 01:26:00.456
+ -2 01:26:00
+ -2 01:26:00.5
+ -2 01:26:00.46
+ -2 01:26:00.456
+ -2 01:26:00.4562
+ -2 01:26:00
+ -2 01:26:00.5
+ -2 01:26:00.46
+ -2 01:26:00.456
+ -2 01:26:00.4562
+ -2 01:26:00.45615
+ -2 01:26:00
+ -2 01:26:00.5
+ -2 01:26:00.46
+ -2 01:26:00.456
+ -2 01:26:00.4562
+ -2 01:26:00.45615
+ -2 01:26:00.456150
+ *****
+ -68:58
+ -68:58
+ -68:58
+ -68:58:11
+ -68:58:11
+ -68:58:11
+ -68:58:11
+ -68:58:11.6
+ -68:58:11.6
+ -68:58:11
+ -68:58:11.6
+ -68:58:11.57
+ -68:58:11.57
+ -68:58:11
+ -68:58:11.6
+ -68:58:11.57
+ -68:58:11.567
+ -68:58:11.567
+ -68:58:11
+ -68:58:11.6
+ -68:58:11.57
+ -68:58:11.567
+ -68:58:11.5668
+ -68:58:11.5668
+ -68:58:11
+ -68:58:11.6
+ -68:58:11.57
+ -68:58:11.567
+ -68:58:11.5668
+ -68:58:11.56677
+ -68:58:11.56677
+ -2 20:58
+ -2 20:58
+ -2 20:58
+ -2 20:58:11
+ -2 20:58:11
+ -2 20:58:11
+ -2 20:58:11.6
+ -2 20:58:11
+ -2 20:58:11.6
+ -2 20:58:11.57
+ -2 20:58:11
+ -2 20:58:11.6
+ -2 20:58:11.57
+ -2 20:58:11.567
+ -2 20:58:11
+ -2 20:58:11.6
+ -2 20:58:11.57
+ -2 20:58:11.567
+ -2 20:58:11.5668
+ -2 20:58:11
+ -2 20:58:11.6
+ -2 20:58:11.57
+ -2 20:58:11.567
+ -2 20:58:11.5668
+ -2 20:58:11.56677
+ -2 20:58:11
+ -2 20:58:11.6
+ -2 20:58:11.57
+ -2 20:58:11.567
+ -2 20:58:11.5668
+ -2 20:58:11.56677
+ -2 20:58:11.566770
+ *****
+ -55:36
+ -55:36
+ -55:36
+ -55:36:05
+ -55:36:05
+ -55:36:05
+ -55:36:05
+ -55:36:05.2
+ -55:36:05.2
+ -55:36:05
+ -55:36:05.2
+ -55:36:05.19
+ -55:36:05.19
+ -55:36:05
+ -55:36:05.2
+ -55:36:05.19
+ -55:36:05.190
+ -55:36:05.190
+ -55:36:05
+ -55:36:05.2
+ -55:36:05.19
+ -55:36:05.190
+ -55:36:05.1896
+ -55:36:05.1896
+ -55:36:05
+ -55:36:05.2
+ -55:36:05.19
+ -55:36:05.190
+ -55:36:05.1896
+ -55:36:05.18964
+ -55:36:05.18964
+ -2 07:36
+ -2 07:36
+ -2 07:36
+ -2 07:36:05
+ -2 07:36:05
+ -2 07:36:05
+ -2 07:36:05.2
+ -2 07:36:05
+ -2 07:36:05.2
+ -2 07:36:05.19
+ -2 07:36:05
+ -2 07:36:05.2
+ -2 07:36:05.19
+ -2 07:36:05.190
+ -2 07:36:05
+ -2 07:36:05.2
+ -2 07:36:05.19
+ -2 07:36:05.190
+ -2 07:36:05.1896
+ -2 07:36:05
+ -2 07:36:05.2
+ -2 07:36:05.19
+ -2 07:36:05.190
+ -2 07:36:05.1896
+ -2 07:36:05.18964
+ -2 07:36:05
+ -2 07:36:05.2
+ -2 07:36:05.19
+ -2 07:36:05.190
+ -2 07:36:05.1896
+ -2 07:36:05.18964
+ -2 07:36:05.189640
+ *****
+ -63:43
+ -63:43
+ -63:43
+ -63:43:49
+ -63:43:49
+ -63:43:49
+ -63:43:49
+ -63:43:49.8
+ -63:43:49.8
+ -63:43:49
+ -63:43:49.8
+ -63:43:49.83
+ -63:43:49.83
+ -63:43:49
+ -63:43:49.8
+ -63:43:49.83
+ -63:43:49.831
+ -63:43:49.831
+ -63:43:49
+ -63:43:49.8
+ -63:43:49.83
+ -63:43:49.831
+ -63:43:49.8313
+ -63:43:49.8313
+ -63:43:49
+ -63:43:49.8
+ -63:43:49.83
+ -63:43:49.831
+ -63:43:49.8313
+ -63:43:49.83132
+ -63:43:49.83132
+ -2 15:43
+ -2 15:43
+ -2 15:43
+ -2 15:43:49
+ -2 15:43:49
+ -2 15:43:49
+ -2 15:43:49.8
+ -2 15:43:49
+ -2 15:43:49.8
+ -2 15:43:49.83
+ -2 15:43:49
+ -2 15:43:49.8
+ -2 15:43:49.83
+ -2 15:43:49.831
+ -2 15:43:49
+ -2 15:43:49.8
+ -2 15:43:49.83
+ -2 15:43:49.831
+ -2 15:43:49.8313
+ -2 15:43:49
+ -2 15:43:49.8
+ -2 15:43:49.83
+ -2 15:43:49.831
+ -2 15:43:49.8313
+ -2 15:43:49.83132
+ -2 15:43:49
+ -2 15:43:49.8
+ -2 15:43:49.83
+ -2 15:43:49.831
+ -2 15:43:49.8313
+ -2 15:43:49.83132
+ -2 15:43:49.831320
+ *****
+ -52:25
+ -52:25
+ -52:25
+ -52:25:09
+ -52:25:09
+ -52:25:09
+ -52:25:09
+ -52:25:09.0
+ -52:25:09.0
+ -52:25:09
+ -52:25:09.0
+ -52:25:09.01
+ -52:25:09.01
+ -52:25:09
+ -52:25:09.0
+ -52:25:09.01
+ -52:25:09.013
+ -52:25:09.013
+ -52:25:09
+ -52:25:09.0
+ -52:25:09.01
+ -52:25:09.013
+ -52:25:09.0129
+ -52:25:09.0129
+ -52:25:09
+ -52:25:09.0
+ -52:25:09.01
+ -52:25:09.013
+ -52:25:09.0129
+ -52:25:09.01293
+ -52:25:09.01293
+ -2 04:25
+ -2 04:25
+ -2 04:25
+ -2 04:25:09
+ -2 04:25:09
+ -2 04:25:09
+ -2 04:25:09.0
+ -2 04:25:09
+ -2 04:25:09.0
+ -2 04:25:09.01
+ -2 04:25:09
+ -2 04:25:09.0
+ -2 04:25:09.01
+ -2 04:25:09.013
+ -2 04:25:09
+ -2 04:25:09.0
+ -2 04:25:09.01
+ -2 04:25:09.013
+ -2 04:25:09.0129
+ -2 04:25:09
+ -2 04:25:09.0
+ -2 04:25:09.01
+ -2 04:25:09.013
+ -2 04:25:09.0129
+ -2 04:25:09.01293
+ -2 04:25:09
+ -2 04:25:09.0
+ -2 04:25:09.01
+ -2 04:25:09.013
+ -2 04:25:09.0129
+ -2 04:25:09.01293
+ -2 04:25:09.012930
+ *****
+ -54:49
+ -54:49
+ -54:49
+ -54:49:27
+ -54:49:27
+ -54:49:27
+ -54:49:27
+ -54:49:27.5
+ -54:49:27.5
+ -54:49:27
+ -54:49:27.5
+ -54:49:27.52
+ -54:49:27.52
+ -54:49:27
+ -54:49:27.5
+ -54:49:27.52
+ -54:49:27.524
+ -54:49:27.524
+ -54:49:27
+ -54:49:27.5
+ -54:49:27.52
+ -54:49:27.524
+ -54:49:27.5237
+ -54:49:27.5237
+ -54:49:27
+ -54:49:27.5
+ -54:49:27.52
+ -54:49:27.524
+ -54:49:27.5237
+ -54:49:27.52375
+ -54:49:27.52375
+ -2 06:49
+ -2 06:49
+ -2 06:49
+ -2 06:49:27
+ -2 06:49:27
+ -2 06:49:27
+ -2 06:49:27.5
+ -2 06:49:27
+ -2 06:49:27.5
+ -2 06:49:27.52
+ -2 06:49:27
+ -2 06:49:27.5
+ -2 06:49:27.52
+ -2 06:49:27.524
+ -2 06:49:27
+ -2 06:49:27.5
+ -2 06:49:27.52
+ -2 06:49:27.524
+ -2 06:49:27.5237
+ -2 06:49:27
+ -2 06:49:27.5
+ -2 06:49:27.52
+ -2 06:49:27.524
+ -2 06:49:27.5237
+ -2 06:49:27.52375
+ -2 06:49:27
+ -2 06:49:27.5
+ -2 06:49:27.52
+ -2 06:49:27.524
+ -2 06:49:27.5237
+ -2 06:49:27.52375
+ -2 06:49:27.523750
+ *****
+ -50:57
+ -50:57
+ -50:57
+ -50:57:52
+ -50:57:52
+ -50:57:52
+ -50:57:52
+ -50:57:52.0
+ -50:57:52.0
+ -50:57:52
+ -50:57:52.0
+ -50:57:52.02
+ -50:57:52.02
+ -50:57:52
+ -50:57:52.0
+ -50:57:52.02
+ -50:57:52.016
+ -50:57:52.016
+ -50:57:52
+ -50:57:52.0
+ -50:57:52.02
+ -50:57:52.016
+ -50:57:52.0156
+ -50:57:52.0156
+ -50:57:52
+ -50:57:52.0
+ -50:57:52.02
+ -50:57:52.016
+ -50:57:52.0156
+ -50:57:52.01565
+ -50:57:52.01565
+ -2 02:57
+ -2 02:57
+ -2 02:57
+ -2 02:57:52
+ -2 02:57:52
+ -2 02:57:52
+ -2 02:57:52.0
+ -2 02:57:52
+ -2 02:57:52.0
+ -2 02:57:52.02
+ -2 02:57:52
+ -2 02:57:52.0
+ -2 02:57:52.02
+ -2 02:57:52.016
+ -2 02:57:52
+ -2 02:57:52.0
+ -2 02:57:52.02
+ -2 02:57:52.016
+ -2 02:57:52.0156
+ -2 02:57:52
+ -2 02:57:52.0
+ -2 02:57:52.02
+ -2 02:57:52.016
+ -2 02:57:52.0156
+ -2 02:57:52.01565
+ -2 02:57:52
+ -2 02:57:52.0
+ -2 02:57:52.02
+ -2 02:57:52.016
+ -2 02:57:52.0156
+ -2 02:57:52.01565
+ -2 02:57:52.015650
+ *****
+ -64:45
+ -64:45
+ -64:45
+ -64:45:44
+ -64:45:44
+ -64:45:44
+ -64:45:44
+ -64:45:44.9
+ -64:45:44.9
+ -64:45:44
+ -64:45:44.9
+ -64:45:44.87
+ -64:45:44.87
+ -64:45:44
+ -64:45:44.9
+ -64:45:44.87
+ -64:45:44.865
+ -64:45:44.865
+ -64:45:44
+ -64:45:44.9
+ -64:45:44.87
+ -64:45:44.865
+ -64:45:44.8653
+ -64:45:44.8653
+ -64:45:44
+ -64:45:44.9
+ -64:45:44.87
+ -64:45:44.865
+ -64:45:44.8653
+ -64:45:44.86529
+ -64:45:44.86529
+ -2 16:45
+ -2 16:45
+ -2 16:45
+ -2 16:45:44
+ -2 16:45:44
+ -2 16:45:44
+ -2 16:45:44.9
+ -2 16:45:44
+ -2 16:45:44.9
+ -2 16:45:44.87
+ -2 16:45:44
+ -2 16:45:44.9
+ -2 16:45:44.87
+ -2 16:45:44.865
+ -2 16:45:44
+ -2 16:45:44.9
+ -2 16:45:44.87
+ -2 16:45:44.865
+ -2 16:45:44.8653
+ -2 16:45:44
+ -2 16:45:44.9
+ -2 16:45:44.87
+ -2 16:45:44.865
+ -2 16:45:44.8653
+ -2 16:45:44.86529
+ -2 16:45:44
+ -2 16:45:44.9
+ -2 16:45:44.87
+ -2 16:45:44.865
+ -2 16:45:44.8653
+ -2 16:45:44.86529
+ -2 16:45:44.865290
+ *****
+ -69:30
+ -69:30
+ -69:30
+ -69:30:57
+ -69:30:57
+ -69:30:57
+ -69:30:57
+ -69:30:57.8
+ -69:30:57.8
+ -69:30:57
+ -69:30:57.8
+ -69:30:57.82
+ -69:30:57.82
+ -69:30:57
+ -69:30:57.8
+ -69:30:57.82
+ -69:30:57.820
+ -69:30:57.820
+ -69:30:57
+ -69:30:57.8
+ -69:30:57.82
+ -69:30:57.820
+ -69:30:57.8205
+ -69:30:57.8205
+ -69:30:57
+ -69:30:57.8
+ -69:30:57.82
+ -69:30:57.820
+ -69:30:57.8205
+ -69:30:57.82047
+ -69:30:57.82047
+ -2 21:30
+ -2 21:30
+ -2 21:30
+ -2 21:30:57
+ -2 21:30:57
+ -2 21:30:57
+ -2 21:30:57.8
+ -2 21:30:57
+ -2 21:30:57.8
+ -2 21:30:57.82
+ -2 21:30:57
+ -2 21:30:57.8
+ -2 21:30:57.82
+ -2 21:30:57.820
+ -2 21:30:57
+ -2 21:30:57.8
+ -2 21:30:57.82
+ -2 21:30:57.820
+ -2 21:30:57.8205
+ -2 21:30:57
+ -2 21:30:57.8
+ -2 21:30:57.82
+ -2 21:30:57.820
+ -2 21:30:57.8205
+ -2 21:30:57.82047
+ -2 21:30:57
+ -2 21:30:57.8
+ -2 21:30:57.82
+ -2 21:30:57.820
+ -2 21:30:57.8205
+ -2 21:30:57.82047
+ -2 21:30:57.820470
+ *****
+ -52:25
+ -52:25
+ -52:25
+ -52:25:09
+ -52:25:09
+ -52:25:09
+ -52:25:09
+ -52:25:09.2
+ -52:25:09.2
+ -52:25:09
+ -52:25:09.2
+ -52:25:09.15
+ -52:25:09.15
+ -52:25:09
+ -52:25:09.2
+ -52:25:09.15
+ -52:25:09.154
+ -52:25:09.154
+ -52:25:09
+ -52:25:09.2
+ -52:25:09.15
+ -52:25:09.154
+ -52:25:09.1540
+ -52:25:09.1540
+ -52:25:09
+ -52:25:09.2
+ -52:25:09.15
+ -52:25:09.154
+ -52:25:09.1540
+ -52:25:09.15395
+ -52:25:09.15395
+ -2 04:25
+ -2 04:25
+ -2 04:25
+ -2 04:25:09
+ -2 04:25:09
+ -2 04:25:09
+ -2 04:25:09.2
+ -2 04:25:09
+ -2 04:25:09.2
+ -2 04:25:09.15
+ -2 04:25:09
+ -2 04:25:09.2
+ -2 04:25:09.15
+ -2 04:25:09.154
+ -2 04:25:09
+ -2 04:25:09.2
+ -2 04:25:09.15
+ -2 04:25:09.154
+ -2 04:25:09.1540
+ -2 04:25:09
+ -2 04:25:09.2
+ -2 04:25:09.15
+ -2 04:25:09.154
+ -2 04:25:09.1540
+ -2 04:25:09.15395
+ -2 04:25:09
+ -2 04:25:09.2
+ -2 04:25:09.15
+ -2 04:25:09.154
+ -2 04:25:09.1540
+ -2 04:25:09.15395
+ -2 04:25:09.153950
+ *****
+ -54:49
+ -54:49
+ -54:49
+ -54:49:27
+ -54:49:27
+ -54:49:27
+ -54:49:27
+ -54:49:27.1
+ -54:49:27.1
+ -54:49:27
+ -54:49:27.1
+ -54:49:27.11
+ -54:49:27.11
+ -54:49:27
+ -54:49:27.1
+ -54:49:27.11
+ -54:49:27.105
+ -54:49:27.105
+ -54:49:27
+ -54:49:27.1
+ -54:49:27.11
+ -54:49:27.105
+ -54:49:27.1053
+ -54:49:27.1053
+ -54:49:27
+ -54:49:27.1
+ -54:49:27.11
+ -54:49:27.105
+ -54:49:27.1053
+ -54:49:27.10533
+ -54:49:27.10533
+ -2 06:49
+ -2 06:49
+ -2 06:49
+ -2 06:49:27
+ -2 06:49:27
+ -2 06:49:27
+ -2 06:49:27.1
+ -2 06:49:27
+ -2 06:49:27.1
+ -2 06:49:27.11
+ -2 06:49:27
+ -2 06:49:27.1
+ -2 06:49:27.11
+ -2 06:49:27.105
+ -2 06:49:27
+ -2 06:49:27.1
+ -2 06:49:27.11
+ -2 06:49:27.105
+ -2 06:49:27.1053
+ -2 06:49:27
+ -2 06:49:27.1
+ -2 06:49:27.11
+ -2 06:49:27.105
+ -2 06:49:27.1053
+ -2 06:49:27.10533
+ -2 06:49:27
+ -2 06:49:27.1
+ -2 06:49:27.11
+ -2 06:49:27.105
+ -2 06:49:27.1053
+ -2 06:49:27.10533
+ -2 06:49:27.105330
+ *****
+ -50:57
+ -50:57
+ -50:57
+ -50:57:52
+ -50:57:52
+ -50:57:52
+ -50:57:52
+ -50:57:52.5
+ -50:57:52.5
+ -50:57:52
+ -50:57:52.5
+ -50:57:52.48
+ -50:57:52.48
+ -50:57:52
+ -50:57:52.5
+ -50:57:52.48
+ -50:57:52.482
+ -50:57:52.482
+ -50:57:52
+ -50:57:52.5
+ -50:57:52.48
+ -50:57:52.482
+ -50:57:52.4823
+ -50:57:52.4823
+ -50:57:52
+ -50:57:52.5
+ -50:57:52.48
+ -50:57:52.482
+ -50:57:52.4823
+ -50:57:52.48229
+ -50:57:52.48229
+ -2 02:57
+ -2 02:57
+ -2 02:57
+ -2 02:57:52
+ -2 02:57:52
+ -2 02:57:52
+ -2 02:57:52.5
+ -2 02:57:52
+ -2 02:57:52.5
+ -2 02:57:52.48
+ -2 02:57:52
+ -2 02:57:52.5
+ -2 02:57:52.48
+ -2 02:57:52.482
+ -2 02:57:52
+ -2 02:57:52.5
+ -2 02:57:52.48
+ -2 02:57:52.482
+ -2 02:57:52.4823
+ -2 02:57:52
+ -2 02:57:52.5
+ -2 02:57:52.48
+ -2 02:57:52.482
+ -2 02:57:52.4823
+ -2 02:57:52.48229
+ -2 02:57:52
+ -2 02:57:52.5
+ -2 02:57:52.48
+ -2 02:57:52.482
+ -2 02:57:52.4823
+ -2 02:57:52.48229
+ -2 02:57:52.482290
+ *****
+ -64:45
+ -64:45
+ -64:45
+ -64:45:44
+ -64:45:44
+ -64:45:44
+ -64:45:44
+ -64:45:44.7
+ -64:45:44.7
+ -64:45:44
+ -64:45:44.7
+ -64:45:44.66
+ -64:45:44.66
+ -64:45:44
+ -64:45:44.7
+ -64:45:44.66
+ -64:45:44.658
+ -64:45:44.658
+ -64:45:44
+ -64:45:44.7
+ -64:45:44.66
+ -64:45:44.658
+ -64:45:44.6583
+ -64:45:44.6583
+ -64:45:44
+ -64:45:44.7
+ -64:45:44.66
+ -64:45:44.658
+ -64:45:44.6583
+ -64:45:44.65827
+ -64:45:44.65827
+ -2 16:45
+ -2 16:45
+ -2 16:45
+ -2 16:45:44
+ -2 16:45:44
+ -2 16:45:44
+ -2 16:45:44.7
+ -2 16:45:44
+ -2 16:45:44.7
+ -2 16:45:44.66
+ -2 16:45:44
+ -2 16:45:44.7
+ -2 16:45:44.66
+ -2 16:45:44.658
+ -2 16:45:44
+ -2 16:45:44.7
+ -2 16:45:44.66
+ -2 16:45:44.658
+ -2 16:45:44.6583
+ -2 16:45:44
+ -2 16:45:44.7
+ -2 16:45:44.66
+ -2 16:45:44.658
+ -2 16:45:44.6583
+ -2 16:45:44.65827
+ -2 16:45:44
+ -2 16:45:44.7
+ -2 16:45:44.66
+ -2 16:45:44.658
+ -2 16:45:44.6583
+ -2 16:45:44.65827
+ -2 16:45:44.658270
+ *****
+ -69:30
+ -69:30
+ -69:30
+ -69:30:57
+ -69:30:57
+ -69:30:57
+ -69:30:57
+ -69:30:57.6
+ -69:30:57.6
+ -69:30:57
+ -69:30:57.6
+ -69:30:57.58
+ -69:30:57.58
+ -69:30:57
+ -69:30:57.6
+ -69:30:57.58
+ -69:30:57.582
+ -69:30:57.582
+ -69:30:57
+ -69:30:57.6
+ -69:30:57.58
+ -69:30:57.582
+ -69:30:57.5822
+ -69:30:57.5822
+ -69:30:57
+ -69:30:57.6
+ -69:30:57.58
+ -69:30:57.582
+ -69:30:57.5822
+ -69:30:57.58219
+ -69:30:57.58219
+ -2 21:30
+ -2 21:30
+ -2 21:30
+ -2 21:30:57
+ -2 21:30:57
+ -2 21:30:57
+ -2 21:30:57.6
+ -2 21:30:57
+ -2 21:30:57.6
+ -2 21:30:57.58
+ -2 21:30:57
+ -2 21:30:57.6
+ -2 21:30:57.58
+ -2 21:30:57.582
+ -2 21:30:57
+ -2 21:30:57.6
+ -2 21:30:57.58
+ -2 21:30:57.582
+ -2 21:30:57.5822
+ -2 21:30:57
+ -2 21:30:57.6
+ -2 21:30:57.58
+ -2 21:30:57.582
+ -2 21:30:57.5822
+ -2 21:30:57.58219
+ -2 21:30:57
+ -2 21:30:57.6
+ -2 21:30:57.58
+ -2 21:30:57.582
+ -2 21:30:57.5822
+ -2 21:30:57.58219
+ -2 21:30:57.582190
+ *****
+ -70:30
+ -70:30
+ -70:30
+ -70:30:04
+ -70:30:04
+ -70:30:04
+ -70:30:04
+ -70:30:04.2
+ -70:30:04.2
+ -70:30:04
+ -70:30:04.2
+ -70:30:04.18
+ -70:30:04.18
+ -70:30:04
+ -70:30:04.2
+ -70:30:04.18
+ -70:30:04.183
+ -70:30:04.183
+ -70:30:04
+ -70:30:04.2
+ -70:30:04.18
+ -70:30:04.183
+ -70:30:04.1835
+ -70:30:04.1835
+ -70:30:04
+ -70:30:04.2
+ -70:30:04.18
+ -70:30:04.183
+ -70:30:04.1835
+ -70:30:04.18347
+ -70:30:04.18347
+ -2 22:30
+ -2 22:30
+ -2 22:30
+ -2 22:30:04
+ -2 22:30:04
+ -2 22:30:04
+ -2 22:30:04.2
+ -2 22:30:04
+ -2 22:30:04.2
+ -2 22:30:04.18
+ -2 22:30:04
+ -2 22:30:04.2
+ -2 22:30:04.18
+ -2 22:30:04.183
+ -2 22:30:04
+ -2 22:30:04.2
+ -2 22:30:04.18
+ -2 22:30:04.183
+ -2 22:30:04.1835
+ -2 22:30:04
+ -2 22:30:04.2
+ -2 22:30:04.18
+ -2 22:30:04.183
+ -2 22:30:04.1835
+ -2 22:30:04.18347
+ -2 22:30:04
+ -2 22:30:04.2
+ -2 22:30:04.18
+ -2 22:30:04.183
+ -2 22:30:04.1835
+ -2 22:30:04.18347
+ -2 22:30:04.183470
+ *****
+ -49:56
+ -49:56
+ -49:56
+ -49:56:51
+ -49:56:51
+ -49:56:51
+ -49:56:51
+ -49:56:51.6
+ -49:56:51.6
+ -49:56:51
+ -49:56:51.6
+ -49:56:51.59
+ -49:56:51.59
+ -49:56:51
+ -49:56:51.6
+ -49:56:51.59
+ -49:56:51.593
+ -49:56:51.593
+ -49:56:51
+ -49:56:51.6
+ -49:56:51.59
+ -49:56:51.593
+ -49:56:51.5932
+ -49:56:51.5932
+ -49:56:51
+ -49:56:51.6
+ -49:56:51.59
+ -49:56:51.593
+ -49:56:51.5932
+ -49:56:51.59319
+ -49:56:51.59319
+ -2 01:56
+ -2 01:56
+ -2 01:56
+ -2 01:56:51
+ -2 01:56:51
+ -2 01:56:51
+ -2 01:56:51.6
+ -2 01:56:51
+ -2 01:56:51.6
+ -2 01:56:51.59
+ -2 01:56:51
+ -2 01:56:51.6
+ -2 01:56:51.59
+ -2 01:56:51.593
+ -2 01:56:51
+ -2 01:56:51.6
+ -2 01:56:51.59
+ -2 01:56:51.593
+ -2 01:56:51.5932
+ -2 01:56:51
+ -2 01:56:51.6
+ -2 01:56:51.59
+ -2 01:56:51.593
+ -2 01:56:51.5932
+ -2 01:56:51.59319
+ -2 01:56:51
+ -2 01:56:51.6
+ -2 01:56:51.59
+ -2 01:56:51.593
+ -2 01:56:51.5932
+ -2 01:56:51.59319
+ -2 01:56:51.593190
+ *****
+ ******
+ *******
+ -1296:00
+ -1296:00
+ -1296:00
+ -1296:00
+ -1296:00:00
+ -1296:00:00
+ -1296:00:00
+ -1296:00:00
+ -1296:00:00
+ -1296:00:00
+ -1296:00:00
+ -1296:00:00
+ -1296:00:00.0
+ -1296:00:00.0
+ -1296:00:00.0
+ -1296:00:00.0
+ -1296:00:00
+ -1296:00:00.0
+ -1296:00:00.00
+ -1296:00:00.00
+ -1296:00:00.00
+ -1296:00:00.00
+ -1296:00:00
+ -1296:00:00.0
+ -1296:00:00.00
+ -1296:00:00.000
+ -1296:00:00.000
+ -1296:00:00.000
+ -1296:00:00.000
+ ********
+ -54 00:00
+ -54 00:00
+ -54 00:00
+ -54 00:00:00
+ -54 00:00:00
+ -54 00:00:00
+ -54 00:00:00
+ -54 00:00:00.0
+ -54 00:00:00.0
+ -54 00:00:00
+ -54 00:00:00.0
+ -54 00:00:00.00
+ -54 00:00:00.00
+ -54 00:00:00
+ -54 00:00:00.0
+ -54 00:00:00.00
+ -54 00:00:00.000
+ -54 00:00:00.000
+ -54 00:00:00
+ -54 00:00:00.0
+ -54 00:00:00.00
+ -54 00:00:00.000
+ -54 00:00:00.0000
+ -54 00:00:00.0000
+ -54 00:00:00
+ -54 00:00:00.0
+ -54 00:00:00.00
+ -54 00:00:00.000
+ -54 00:00:00.0000
+ -54 00:00:00.00000
+ -54 00:00:00.00000
+ *****
+ ******
+ *******
+ -1300:50
+ -1300:50
+ -1300:50
+ -1300:50
+ -1300:50:38
+ -1300:50:38
+ -1300:50:38
+ -1300:50:38
+ -1300:50:38
+ -1300:50:38
+ -1300:50:38
+ -1300:50:38
+ -1300:50:38.1
+ -1300:50:38.1
+ -1300:50:38.1
+ -1300:50:38.1
+ -1300:50:38
+ -1300:50:38.1
+ -1300:50:38.12
+ -1300:50:38.12
+ -1300:50:38.12
+ -1300:50:38.12
+ -1300:50:38
+ -1300:50:38.1
+ -1300:50:38.12
+ -1300:50:38.123
+ -1300:50:38.123
+ -1300:50:38.123
+ -1300:50:38.123
+ ********
+ -54 04:50
+ -54 04:50
+ -54 04:50
+ -54 04:50:38
+ -54 04:50:38
+ -54 04:50:38
+ -54 04:50:38
+ -54 04:50:38.1
+ -54 04:50:38.1
+ -54 04:50:38
+ -54 04:50:38.1
+ -54 04:50:38.12
+ -54 04:50:38.12
+ -54 04:50:38
+ -54 04:50:38.1
+ -54 04:50:38.12
+ -54 04:50:38.123
+ -54 04:50:38.123
+ -54 04:50:38
+ -54 04:50:38.1
+ -54 04:50:38.12
+ -54 04:50:38.123
+ -54 04:50:38.1230
+ -54 04:50:38.1230
+ -54 04:50:38
+ -54 04:50:38.1
+ -54 04:50:38.12
+ -54 04:50:38.123
+ -54 04:50:38.1230
+ -54 04:50:38.12301
+ -54 04:50:38.12301
+ *****
+ ******
+ *******
+ -1308:31
+ -1308:31
+ -1308:31
+ -1308:31
+ -1308:31:35
+ -1308:31:35
+ -1308:31:35
+ -1308:31:35
+ -1308:31:35
+ -1308:31:35
+ -1308:31:35
+ -1308:31:35
+ -1308:31:35.2
+ -1308:31:35.2
+ -1308:31:35.2
+ -1308:31:35.2
+ -1308:31:35
+ -1308:31:35.2
+ -1308:31:35.23
+ -1308:31:35.23
+ -1308:31:35.23
+ -1308:31:35.23
+ -1308:31:35
+ -1308:31:35.2
+ -1308:31:35.23
+ -1308:31:35.235
+ -1308:31:35.235
+ -1308:31:35.235
+ -1308:31:35.235
+ ********
+ -54 12:31
+ -54 12:31
+ -54 12:31
+ -54 12:31:35
+ -54 12:31:35
+ -54 12:31:35
+ -54 12:31:35
+ -54 12:31:35.2
+ -54 12:31:35.2
+ -54 12:31:35
+ -54 12:31:35.2
+ -54 12:31:35.23
+ -54 12:31:35.23
+ -54 12:31:35
+ -54 12:31:35.2
+ -54 12:31:35.23
+ -54 12:31:35.235
+ -54 12:31:35.235
+ -54 12:31:35
+ -54 12:31:35.2
+ -54 12:31:35.23
+ -54 12:31:35.235
+ -54 12:31:35.2345
+ -54 12:31:35.2345
+ -54 12:31:35
+ -54 12:31:35.2
+ -54 12:31:35.23
+ -54 12:31:35.235
+ -54 12:31:35.2345
+ -54 12:31:35.23453
+ -54 12:31:35.23453
+ *****
+ ******
+ *******
+ -1308:47
+ -1308:47
+ -1308:47
+ -1308:47
+ -1308:47:53
+ -1308:47:53
+ -1308:47:53
+ -1308:47:53
+ -1308:47:53
+ -1308:47:53
+ -1308:47:53
+ -1308:47:53
+ -1308:47:53.3
+ -1308:47:53.3
+ -1308:47:53.3
+ -1308:47:53.3
+ -1308:47:53
+ -1308:47:53.3
+ -1308:47:53.35
+ -1308:47:53.35
+ -1308:47:53.35
+ -1308:47:53.35
+ -1308:47:53
+ -1308:47:53.3
+ -1308:47:53.35
+ -1308:47:53.345
+ -1308:47:53.345
+ -1308:47:53.345
+ -1308:47:53.345
+ ********
+ -54 12:47
+ -54 12:47
+ -54 12:47
+ -54 12:47:53
+ -54 12:47:53
+ -54 12:47:53
+ -54 12:47:53
+ -54 12:47:53.3
+ -54 12:47:53.3
+ -54 12:47:53
+ -54 12:47:53.3
+ -54 12:47:53.35
+ -54 12:47:53.35
+ -54 12:47:53
+ -54 12:47:53.3
+ -54 12:47:53.35
+ -54 12:47:53.345
+ -54 12:47:53.345
+ -54 12:47:53
+ -54 12:47:53.3
+ -54 12:47:53.35
+ -54 12:47:53.345
+ -54 12:47:53.3450
+ -54 12:47:53.3450
+ -54 12:47:53
+ -54 12:47:53.3
+ -54 12:47:53.35
+ -54 12:47:53.345
+ -54 12:47:53.3450
+ -54 12:47:53.34505
+ -54 12:47:53.34505
+ *****
+ ******
+ *******
+ -1297:26
+ -1297:26
+ -1297:26
+ -1297:26
+ -1297:26:00
+ -1297:26:00
+ -1297:26:00
+ -1297:26:00
+ -1297:26:00
+ -1297:26:00
+ -1297:26:00
+ -1297:26:00
+ -1297:26:00.5
+ -1297:26:00.5
+ -1297:26:00.5
+ -1297:26:00.5
+ -1297:26:00
+ -1297:26:00.5
+ -1297:26:00.46
+ -1297:26:00.46
+ -1297:26:00.46
+ -1297:26:00.46
+ -1297:26:00
+ -1297:26:00.5
+ -1297:26:00.46
+ -1297:26:00.456
+ -1297:26:00.456
+ -1297:26:00.456
+ -1297:26:00.456
+ ********
+ -54 01:26
+ -54 01:26
+ -54 01:26
+ -54 01:26:00
+ -54 01:26:00
+ -54 01:26:00
+ -54 01:26:00
+ -54 01:26:00.5
+ -54 01:26:00.5
+ -54 01:26:00
+ -54 01:26:00.5
+ -54 01:26:00.46
+ -54 01:26:00.46
+ -54 01:26:00
+ -54 01:26:00.5
+ -54 01:26:00.46
+ -54 01:26:00.456
+ -54 01:26:00.456
+ -54 01:26:00
+ -54 01:26:00.5
+ -54 01:26:00.46
+ -54 01:26:00.456
+ -54 01:26:00.4561
+ -54 01:26:00.4561
+ -54 01:26:00
+ -54 01:26:00.5
+ -54 01:26:00.46
+ -54 01:26:00.456
+ -54 01:26:00.4561
+ -54 01:26:00.45615
+ -54 01:26:00.45615
+ *****
+ ******
+ *******
+ -1316:58
+ -1316:58
+ -1316:58
+ -1316:58
+ -1316:58:11
+ -1316:58:11
+ -1316:58:11
+ -1316:58:11
+ -1316:58:11
+ -1316:58:11
+ -1316:58:11
+ -1316:58:11
+ -1316:58:11.6
+ -1316:58:11.6
+ -1316:58:11.6
+ -1316:58:11.6
+ -1316:58:11
+ -1316:58:11.6
+ -1316:58:11.57
+ -1316:58:11.57
+ -1316:58:11.57
+ -1316:58:11.57
+ -1316:58:11
+ -1316:58:11.6
+ -1316:58:11.57
+ -1316:58:11.567
+ -1316:58:11.567
+ -1316:58:11.567
+ -1316:58:11.567
+ ********
+ -54 20:58
+ -54 20:58
+ -54 20:58
+ -54 20:58:11
+ -54 20:58:11
+ -54 20:58:11
+ -54 20:58:11
+ -54 20:58:11.6
+ -54 20:58:11.6
+ -54 20:58:11
+ -54 20:58:11.6
+ -54 20:58:11.57
+ -54 20:58:11.57
+ -54 20:58:11
+ -54 20:58:11.6
+ -54 20:58:11.57
+ -54 20:58:11.567
+ -54 20:58:11.567
+ -54 20:58:11
+ -54 20:58:11.6
+ -54 20:58:11.57
+ -54 20:58:11.567
+ -54 20:58:11.5668
+ -54 20:58:11.5668
+ -54 20:58:11
+ -54 20:58:11.6
+ -54 20:58:11.57
+ -54 20:58:11.567
+ -54 20:58:11.5668
+ -54 20:58:11.56677
+ -54 20:58:11.56677
+ *****
+ ******
+ *******
+ -1303:36
+ -1303:36
+ -1303:36
+ -1303:36
+ -1303:36:05
+ -1303:36:05
+ -1303:36:05
+ -1303:36:05
+ -1303:36:05
+ -1303:36:05
+ -1303:36:05
+ -1303:36:05
+ -1303:36:05.2
+ -1303:36:05.2
+ -1303:36:05.2
+ -1303:36:05.2
+ -1303:36:05
+ -1303:36:05.2
+ -1303:36:05.19
+ -1303:36:05.19
+ -1303:36:05.19
+ -1303:36:05.19
+ -1303:36:05
+ -1303:36:05.2
+ -1303:36:05.19
+ -1303:36:05.190
+ -1303:36:05.190
+ -1303:36:05.190
+ -1303:36:05.190
+ ********
+ -54 07:36
+ -54 07:36
+ -54 07:36
+ -54 07:36:05
+ -54 07:36:05
+ -54 07:36:05
+ -54 07:36:05
+ -54 07:36:05.2
+ -54 07:36:05.2
+ -54 07:36:05
+ -54 07:36:05.2
+ -54 07:36:05.19
+ -54 07:36:05.19
+ -54 07:36:05
+ -54 07:36:05.2
+ -54 07:36:05.19
+ -54 07:36:05.190
+ -54 07:36:05.190
+ -54 07:36:05
+ -54 07:36:05.2
+ -54 07:36:05.19
+ -54 07:36:05.190
+ -54 07:36:05.1896
+ -54 07:36:05.1896
+ -54 07:36:05
+ -54 07:36:05.2
+ -54 07:36:05.19
+ -54 07:36:05.190
+ -54 07:36:05.1896
+ -54 07:36:05.18964
+ -54 07:36:05.18964
+ *****
+ ******
+ *******
+ -1311:43
+ -1311:43
+ -1311:43
+ -1311:43
+ -1311:43:49
+ -1311:43:49
+ -1311:43:49
+ -1311:43:49
+ -1311:43:49
+ -1311:43:49
+ -1311:43:49
+ -1311:43:49
+ -1311:43:49.8
+ -1311:43:49.8
+ -1311:43:49.8
+ -1311:43:49.8
+ -1311:43:49
+ -1311:43:49.8
+ -1311:43:49.83
+ -1311:43:49.83
+ -1311:43:49.83
+ -1311:43:49.83
+ -1311:43:49
+ -1311:43:49.8
+ -1311:43:49.83
+ -1311:43:49.831
+ -1311:43:49.831
+ -1311:43:49.831
+ -1311:43:49.831
+ ********
+ -54 15:43
+ -54 15:43
+ -54 15:43
+ -54 15:43:49
+ -54 15:43:49
+ -54 15:43:49
+ -54 15:43:49
+ -54 15:43:49.8
+ -54 15:43:49.8
+ -54 15:43:49
+ -54 15:43:49.8
+ -54 15:43:49.83
+ -54 15:43:49.83
+ -54 15:43:49
+ -54 15:43:49.8
+ -54 15:43:49.83
+ -54 15:43:49.831
+ -54 15:43:49.831
+ -54 15:43:49
+ -54 15:43:49.8
+ -54 15:43:49.83
+ -54 15:43:49.831
+ -54 15:43:49.8313
+ -54 15:43:49.8313
+ -54 15:43:49
+ -54 15:43:49.8
+ -54 15:43:49.83
+ -54 15:43:49.831
+ -54 15:43:49.8313
+ -54 15:43:49.83132
+ -54 15:43:49.83132
+ *****
+ ******
+ *******
+ -1300:25
+ -1300:25
+ -1300:25
+ -1300:25
+ -1300:25:09
+ -1300:25:09
+ -1300:25:09
+ -1300:25:09
+ -1300:25:09
+ -1300:25:09
+ -1300:25:09
+ -1300:25:09
+ -1300:25:09.0
+ -1300:25:09.0
+ -1300:25:09.0
+ -1300:25:09.0
+ -1300:25:09
+ -1300:25:09.0
+ -1300:25:09.01
+ -1300:25:09.01
+ -1300:25:09.01
+ -1300:25:09.01
+ -1300:25:09
+ -1300:25:09.0
+ -1300:25:09.01
+ -1300:25:09.013
+ -1300:25:09.013
+ -1300:25:09.013
+ -1300:25:09.013
+ ********
+ -54 04:25
+ -54 04:25
+ -54 04:25
+ -54 04:25:09
+ -54 04:25:09
+ -54 04:25:09
+ -54 04:25:09
+ -54 04:25:09.0
+ -54 04:25:09.0
+ -54 04:25:09
+ -54 04:25:09.0
+ -54 04:25:09.01
+ -54 04:25:09.01
+ -54 04:25:09
+ -54 04:25:09.0
+ -54 04:25:09.01
+ -54 04:25:09.013
+ -54 04:25:09.013
+ -54 04:25:09
+ -54 04:25:09.0
+ -54 04:25:09.01
+ -54 04:25:09.013
+ -54 04:25:09.0129
+ -54 04:25:09.0129
+ -54 04:25:09
+ -54 04:25:09.0
+ -54 04:25:09.01
+ -54 04:25:09.013
+ -54 04:25:09.0129
+ -54 04:25:09.01293
+ -54 04:25:09.01293
+ *****
+ ******
+ *******
+ -1302:49
+ -1302:49
+ -1302:49
+ -1302:49
+ -1302:49:27
+ -1302:49:27
+ -1302:49:27
+ -1302:49:27
+ -1302:49:27
+ -1302:49:27
+ -1302:49:27
+ -1302:49:27
+ -1302:49:27.5
+ -1302:49:27.5
+ -1302:49:27.5
+ -1302:49:27.5
+ -1302:49:27
+ -1302:49:27.5
+ -1302:49:27.52
+ -1302:49:27.52
+ -1302:49:27.52
+ -1302:49:27.52
+ -1302:49:27
+ -1302:49:27.5
+ -1302:49:27.52
+ -1302:49:27.524
+ -1302:49:27.524
+ -1302:49:27.524
+ -1302:49:27.524
+ ********
+ -54 06:49
+ -54 06:49
+ -54 06:49
+ -54 06:49:27
+ -54 06:49:27
+ -54 06:49:27
+ -54 06:49:27
+ -54 06:49:27.5
+ -54 06:49:27.5
+ -54 06:49:27
+ -54 06:49:27.5
+ -54 06:49:27.52
+ -54 06:49:27.52
+ -54 06:49:27
+ -54 06:49:27.5
+ -54 06:49:27.52
+ -54 06:49:27.524
+ -54 06:49:27.524
+ -54 06:49:27
+ -54 06:49:27.5
+ -54 06:49:27.52
+ -54 06:49:27.524
+ -54 06:49:27.5237
+ -54 06:49:27.5237
+ -54 06:49:27
+ -54 06:49:27.5
+ -54 06:49:27.52
+ -54 06:49:27.524
+ -54 06:49:27.5237
+ -54 06:49:27.52375
+ -54 06:49:27.52375
+ *****
+ ******
+ *******
+ -1298:57
+ -1298:57
+ -1298:57
+ -1298:57
+ -1298:57:52
+ -1298:57:52
+ -1298:57:52
+ -1298:57:52
+ -1298:57:52
+ -1298:57:52
+ -1298:57:52
+ -1298:57:52
+ -1298:57:52.0
+ -1298:57:52.0
+ -1298:57:52.0
+ -1298:57:52.0
+ -1298:57:52
+ -1298:57:52.0
+ -1298:57:52.02
+ -1298:57:52.02
+ -1298:57:52.02
+ -1298:57:52.02
+ -1298:57:52
+ -1298:57:52.0
+ -1298:57:52.02
+ -1298:57:52.016
+ -1298:57:52.016
+ -1298:57:52.016
+ -1298:57:52.016
+ ********
+ -54 02:57
+ -54 02:57
+ -54 02:57
+ -54 02:57:52
+ -54 02:57:52
+ -54 02:57:52
+ -54 02:57:52
+ -54 02:57:52.0
+ -54 02:57:52.0
+ -54 02:57:52
+ -54 02:57:52.0
+ -54 02:57:52.02
+ -54 02:57:52.02
+ -54 02:57:52
+ -54 02:57:52.0
+ -54 02:57:52.02
+ -54 02:57:52.016
+ -54 02:57:52.016
+ -54 02:57:52
+ -54 02:57:52.0
+ -54 02:57:52.02
+ -54 02:57:52.016
+ -54 02:57:52.0157
+ -54 02:57:52.0157
+ -54 02:57:52
+ -54 02:57:52.0
+ -54 02:57:52.02
+ -54 02:57:52.016
+ -54 02:57:52.0157
+ -54 02:57:52.01565
+ -54 02:57:52.01565
+ *****
+ ******
+ *******
+ -1312:45
+ -1312:45
+ -1312:45
+ -1312:45
+ -1312:45:44
+ -1312:45:44
+ -1312:45:44
+ -1312:45:44
+ -1312:45:44
+ -1312:45:44
+ -1312:45:44
+ -1312:45:44
+ -1312:45:44.9
+ -1312:45:44.9
+ -1312:45:44.9
+ -1312:45:44.9
+ -1312:45:44
+ -1312:45:44.9
+ -1312:45:44.87
+ -1312:45:44.87
+ -1312:45:44.87
+ -1312:45:44.87
+ -1312:45:44
+ -1312:45:44.9
+ -1312:45:44.87
+ -1312:45:44.865
+ -1312:45:44.865
+ -1312:45:44.865
+ -1312:45:44.865
+ ********
+ -54 16:45
+ -54 16:45
+ -54 16:45
+ -54 16:45:44
+ -54 16:45:44
+ -54 16:45:44
+ -54 16:45:44
+ -54 16:45:44.9
+ -54 16:45:44.9
+ -54 16:45:44
+ -54 16:45:44.9
+ -54 16:45:44.87
+ -54 16:45:44.87
+ -54 16:45:44
+ -54 16:45:44.9
+ -54 16:45:44.87
+ -54 16:45:44.865
+ -54 16:45:44.865
+ -54 16:45:44
+ -54 16:45:44.9
+ -54 16:45:44.87
+ -54 16:45:44.865
+ -54 16:45:44.8653
+ -54 16:45:44.8653
+ -54 16:45:44
+ -54 16:45:44.9
+ -54 16:45:44.87
+ -54 16:45:44.865
+ -54 16:45:44.8653
+ -54 16:45:44.86529
+ -54 16:45:44.86529
+ *****
+ ******
+ *******
+ -1317:30
+ -1317:30
+ -1317:30
+ -1317:30
+ -1317:30:57
+ -1317:30:57
+ -1317:30:57
+ -1317:30:57
+ -1317:30:57
+ -1317:30:57
+ -1317:30:57
+ -1317:30:57
+ -1317:30:57.8
+ -1317:30:57.8
+ -1317:30:57.8
+ -1317:30:57.8
+ -1317:30:57
+ -1317:30:57.8
+ -1317:30:57.82
+ -1317:30:57.82
+ -1317:30:57.82
+ -1317:30:57.82
+ -1317:30:57
+ -1317:30:57.8
+ -1317:30:57.82
+ -1317:30:57.820
+ -1317:30:57.820
+ -1317:30:57.820
+ -1317:30:57.820
+ ********
+ -54 21:30
+ -54 21:30
+ -54 21:30
+ -54 21:30:57
+ -54 21:30:57
+ -54 21:30:57
+ -54 21:30:57
+ -54 21:30:57.8
+ -54 21:30:57.8
+ -54 21:30:57
+ -54 21:30:57.8
+ -54 21:30:57.82
+ -54 21:30:57.82
+ -54 21:30:57
+ -54 21:30:57.8
+ -54 21:30:57.82
+ -54 21:30:57.820
+ -54 21:30:57.820
+ -54 21:30:57
+ -54 21:30:57.8
+ -54 21:30:57.82
+ -54 21:30:57.820
+ -54 21:30:57.8205
+ -54 21:30:57.8205
+ -54 21:30:57
+ -54 21:30:57.8
+ -54 21:30:57.82
+ -54 21:30:57.820
+ -54 21:30:57.8205
+ -54 21:30:57.82047
+ -54 21:30:57.82047
+ *****
+ ******
+ *******
+ -1300:25
+ -1300:25
+ -1300:25
+ -1300:25
+ -1300:25:09
+ -1300:25:09
+ -1300:25:09
+ -1300:25:09
+ -1300:25:09
+ -1300:25:09
+ -1300:25:09
+ -1300:25:09
+ -1300:25:09.2
+ -1300:25:09.2
+ -1300:25:09.2
+ -1300:25:09.2
+ -1300:25:09
+ -1300:25:09.2
+ -1300:25:09.15
+ -1300:25:09.15
+ -1300:25:09.15
+ -1300:25:09.15
+ -1300:25:09
+ -1300:25:09.2
+ -1300:25:09.15
+ -1300:25:09.154
+ -1300:25:09.154
+ -1300:25:09.154
+ -1300:25:09.154
+ ********
+ -54 04:25
+ -54 04:25
+ -54 04:25
+ -54 04:25:09
+ -54 04:25:09
+ -54 04:25:09
+ -54 04:25:09
+ -54 04:25:09.2
+ -54 04:25:09.2
+ -54 04:25:09
+ -54 04:25:09.2
+ -54 04:25:09.15
+ -54 04:25:09.15
+ -54 04:25:09
+ -54 04:25:09.2
+ -54 04:25:09.15
+ -54 04:25:09.154
+ -54 04:25:09.154
+ -54 04:25:09
+ -54 04:25:09.2
+ -54 04:25:09.15
+ -54 04:25:09.154
+ -54 04:25:09.1540
+ -54 04:25:09.1540
+ -54 04:25:09
+ -54 04:25:09.2
+ -54 04:25:09.15
+ -54 04:25:09.154
+ -54 04:25:09.1540
+ -54 04:25:09.15395
+ -54 04:25:09.15395
+ *****
+ ******
+ *******
+ -1302:49
+ -1302:49
+ -1302:49
+ -1302:49
+ -1302:49:27
+ -1302:49:27
+ -1302:49:27
+ -1302:49:27
+ -1302:49:27
+ -1302:49:27
+ -1302:49:27
+ -1302:49:27
+ -1302:49:27.1
+ -1302:49:27.1
+ -1302:49:27.1
+ -1302:49:27.1
+ -1302:49:27
+ -1302:49:27.1
+ -1302:49:27.11
+ -1302:49:27.11
+ -1302:49:27.11
+ -1302:49:27.11
+ -1302:49:27
+ -1302:49:27.1
+ -1302:49:27.11
+ -1302:49:27.105
+ -1302:49:27.105
+ -1302:49:27.105
+ -1302:49:27.105
+ ********
+ -54 06:49
+ -54 06:49
+ -54 06:49
+ -54 06:49:27
+ -54 06:49:27
+ -54 06:49:27
+ -54 06:49:27
+ -54 06:49:27.1
+ -54 06:49:27.1
+ -54 06:49:27
+ -54 06:49:27.1
+ -54 06:49:27.11
+ -54 06:49:27.11
+ -54 06:49:27
+ -54 06:49:27.1
+ -54 06:49:27.11
+ -54 06:49:27.105
+ -54 06:49:27.105
+ -54 06:49:27
+ -54 06:49:27.1
+ -54 06:49:27.11
+ -54 06:49:27.105
+ -54 06:49:27.1053
+ -54 06:49:27.1053
+ -54 06:49:27
+ -54 06:49:27.1
+ -54 06:49:27.11
+ -54 06:49:27.105
+ -54 06:49:27.1053
+ -54 06:49:27.10533
+ -54 06:49:27.10533
+ *****
+ ******
+ *******
+ -1298:57
+ -1298:57
+ -1298:57
+ -1298:57
+ -1298:57:52
+ -1298:57:52
+ -1298:57:52
+ -1298:57:52
+ -1298:57:52
+ -1298:57:52
+ -1298:57:52
+ -1298:57:52
+ -1298:57:52.5
+ -1298:57:52.5
+ -1298:57:52.5
+ -1298:57:52.5
+ -1298:57:52
+ -1298:57:52.5
+ -1298:57:52.48
+ -1298:57:52.48
+ -1298:57:52.48
+ -1298:57:52.48
+ -1298:57:52
+ -1298:57:52.5
+ -1298:57:52.48
+ -1298:57:52.482
+ -1298:57:52.482
+ -1298:57:52.482
+ -1298:57:52.482
+ ********
+ -54 02:57
+ -54 02:57
+ -54 02:57
+ -54 02:57:52
+ -54 02:57:52
+ -54 02:57:52
+ -54 02:57:52
+ -54 02:57:52.5
+ -54 02:57:52.5
+ -54 02:57:52
+ -54 02:57:52.5
+ -54 02:57:52.48
+ -54 02:57:52.48
+ -54 02:57:52
+ -54 02:57:52.5
+ -54 02:57:52.48
+ -54 02:57:52.482
+ -54 02:57:52.482
+ -54 02:57:52
+ -54 02:57:52.5
+ -54 02:57:52.48
+ -54 02:57:52.482
+ -54 02:57:52.4823
+ -54 02:57:52.4823
+ -54 02:57:52
+ -54 02:57:52.5
+ -54 02:57:52.48
+ -54 02:57:52.482
+ -54 02:57:52.4823
+ -54 02:57:52.48229
+ -54 02:57:52.48229
+ *****
+ ******
+ *******
+ -1312:45
+ -1312:45
+ -1312:45
+ -1312:45
+ -1312:45:44
+ -1312:45:44
+ -1312:45:44
+ -1312:45:44
+ -1312:45:44
+ -1312:45:44
+ -1312:45:44
+ -1312:45:44
+ -1312:45:44.7
+ -1312:45:44.7
+ -1312:45:44.7
+ -1312:45:44.7
+ -1312:45:44
+ -1312:45:44.7
+ -1312:45:44.66
+ -1312:45:44.66
+ -1312:45:44.66
+ -1312:45:44.66
+ -1312:45:44
+ -1312:45:44.7
+ -1312:45:44.66
+ -1312:45:44.658
+ -1312:45:44.658
+ -1312:45:44.658
+ -1312:45:44.658
+ ********
+ -54 16:45
+ -54 16:45
+ -54 16:45
+ -54 16:45:44
+ -54 16:45:44
+ -54 16:45:44
+ -54 16:45:44
+ -54 16:45:44.7
+ -54 16:45:44.7
+ -54 16:45:44
+ -54 16:45:44.7
+ -54 16:45:44.66
+ -54 16:45:44.66
+ -54 16:45:44
+ -54 16:45:44.7
+ -54 16:45:44.66
+ -54 16:45:44.658
+ -54 16:45:44.658
+ -54 16:45:44
+ -54 16:45:44.7
+ -54 16:45:44.66
+ -54 16:45:44.658
+ -54 16:45:44.6583
+ -54 16:45:44.6583
+ -54 16:45:44
+ -54 16:45:44.7
+ -54 16:45:44.66
+ -54 16:45:44.658
+ -54 16:45:44.6583
+ -54 16:45:44.65827
+ -54 16:45:44.65827
+ *****
+ ******
+ *******
+ -1317:30
+ -1317:30
+ -1317:30
+ -1317:30
+ -1317:30:57
+ -1317:30:57
+ -1317:30:57
+ -1317:30:57
+ -1317:30:57
+ -1317:30:57
+ -1317:30:57
+ -1317:30:57
+ -1317:30:57.6
+ -1317:30:57.6
+ -1317:30:57.6
+ -1317:30:57.6
+ -1317:30:57
+ -1317:30:57.6
+ -1317:30:57.58
+ -1317:30:57.58
+ -1317:30:57.58
+ -1317:30:57.58
+ -1317:30:57
+ -1317:30:57.6
+ -1317:30:57.58
+ -1317:30:57.582
+ -1317:30:57.582
+ -1317:30:57.582
+ -1317:30:57.582
+ ********
+ -54 21:30
+ -54 21:30
+ -54 21:30
+ -54 21:30:57
+ -54 21:30:57
+ -54 21:30:57
+ -54 21:30:57
+ -54 21:30:57.6
+ -54 21:30:57.6
+ -54 21:30:57
+ -54 21:30:57.6
+ -54 21:30:57.58
+ -54 21:30:57.58
+ -54 21:30:57
+ -54 21:30:57.6
+ -54 21:30:57.58
+ -54 21:30:57.582
+ -54 21:30:57.582
+ -54 21:30:57
+ -54 21:30:57.6
+ -54 21:30:57.58
+ -54 21:30:57.582
+ -54 21:30:57.5822
+ -54 21:30:57.5822
+ -54 21:30:57
+ -54 21:30:57.6
+ -54 21:30:57.58
+ -54 21:30:57.582
+ -54 21:30:57.5822
+ -54 21:30:57.58219
+ -54 21:30:57.58219
+ *****
+ ******
+ *******
+ -1318:30
+ -1318:30
+ -1318:30
+ -1318:30
+ -1318:30:04
+ -1318:30:04
+ -1318:30:04
+ -1318:30:04
+ -1318:30:04
+ -1318:30:04
+ -1318:30:04
+ -1318:30:04
+ -1318:30:04.2
+ -1318:30:04.2
+ -1318:30:04.2
+ -1318:30:04.2
+ -1318:30:04
+ -1318:30:04.2
+ -1318:30:04.18
+ -1318:30:04.18
+ -1318:30:04.18
+ -1318:30:04.18
+ -1318:30:04
+ -1318:30:04.2
+ -1318:30:04.18
+ -1318:30:04.183
+ -1318:30:04.183
+ -1318:30:04.183
+ -1318:30:04.183
+ ********
+ -54 22:30
+ -54 22:30
+ -54 22:30
+ -54 22:30:04
+ -54 22:30:04
+ -54 22:30:04
+ -54 22:30:04
+ -54 22:30:04.2
+ -54 22:30:04.2
+ -54 22:30:04
+ -54 22:30:04.2
+ -54 22:30:04.18
+ -54 22:30:04.18
+ -54 22:30:04
+ -54 22:30:04.2
+ -54 22:30:04.18
+ -54 22:30:04.183
+ -54 22:30:04.183
+ -54 22:30:04
+ -54 22:30:04.2
+ -54 22:30:04.18
+ -54 22:30:04.183
+ -54 22:30:04.1835
+ -54 22:30:04.1835
+ -54 22:30:04
+ -54 22:30:04.2
+ -54 22:30:04.18
+ -54 22:30:04.183
+ -54 22:30:04.1835
+ -54 22:30:04.18347
+ -54 22:30:04.18347
+ *****
+ ******
+ *******
+ -1297:56
+ -1297:56
+ -1297:56
+ -1297:56
+ -1297:56:51
+ -1297:56:51
+ -1297:56:51
+ -1297:56:51
+ -1297:56:51
+ -1297:56:51
+ -1297:56:51
+ -1297:56:51
+ -1297:56:51.6
+ -1297:56:51.6
+ -1297:56:51.6
+ -1297:56:51.6
+ -1297:56:51
+ -1297:56:51.6
+ -1297:56:51.59
+ -1297:56:51.59
+ -1297:56:51.59
+ -1297:56:51.59
+ -1297:56:51
+ -1297:56:51.6
+ -1297:56:51.59
+ -1297:56:51.593
+ -1297:56:51.593
+ -1297:56:51.593
+ -1297:56:51.593
+ ********
+ -54 01:56
+ -54 01:56
+ -54 01:56
+ -54 01:56:51
+ -54 01:56:51
+ -54 01:56:51
+ -54 01:56:51
+ -54 01:56:51.6
+ -54 01:56:51.6
+ -54 01:56:51
+ -54 01:56:51.6
+ -54 01:56:51.59
+ -54 01:56:51.59
+ -54 01:56:51
+ -54 01:56:51.6
+ -54 01:56:51.59
+ -54 01:56:51.593
+ -54 01:56:51.593
+ -54 01:56:51
+ -54 01:56:51.6
+ -54 01:56:51.59
+ -54 01:56:51.593
+ -54 01:56:51.5932
+ -54 01:56:51.5932
+ -54 01:56:51
+ -54 01:56:51.6
+ -54 01:56:51.59
+ -54 01:56:51.593
+ -54 01:56:51.5932
+ -54 01:56:51.59319
+ -54 01:56:51.59319
+ *****
+ ******
+ *******
+ ********
+ -16344:00
+ -16344:00
+ -16344:00
+ -16344:00
+ -16344:00
+ -16344:00
+ -16344:00:00
+ -16344:00:00
+ -16344:00:00
+ -16344:00:00
+ -16344:00:00
+ -16344:00:00
+ -16344:00:00
+ -16344:00:00
+ -16344:00:00
+ -16344:00:00
+ -16344:00:00.0
+ -16344:00:00.0
+ -16344:00:00.0
+ -16344:00:00.0
+ -16344:00:00.0
+ -16344:00:00
+ -16344:00:00.0
+ -16344:00:00.00
+ -16344:00:00.00
+ -16344:00:00.00
+ -16344:00:00.00
+ -16344:00:00.00
+ ********
+ *********
+ -681 00:00
+ -681 00:00
+ -681 00:00
+ -681 00:00:00
+ -681 00:00:00
+ -681 00:00:00
+ -681 00:00:00
+ -681 00:00:00
+ -681 00:00:00
+ -681 00:00:00.0
+ -681 00:00:00.0
+ -681 00:00:00.0
+ -681 00:00:00
+ -681 00:00:00.0
+ -681 00:00:00.00
+ -681 00:00:00.00
+ -681 00:00:00.00
+ -681 00:00:00
+ -681 00:00:00.0
+ -681 00:00:00.00
+ -681 00:00:00.000
+ -681 00:00:00.000
+ -681 00:00:00.000
+ -681 00:00:00
+ -681 00:00:00.0
+ -681 00:00:00.00
+ -681 00:00:00.000
+ -681 00:00:00.0000
+ -681 00:00:00.0000
+ -681 00:00:00.0000
+ *****
+ ******
+ *******
+ ********
+ -16348:50
+ -16348:50
+ -16348:50
+ -16348:50
+ -16348:50
+ -16348:50
+ -16348:50:38
+ -16348:50:38
+ -16348:50:38
+ -16348:50:38
+ -16348:50:38
+ -16348:50:38
+ -16348:50:38
+ -16348:50:38
+ -16348:50:38
+ -16348:50:38
+ -16348:50:38.1
+ -16348:50:38.1
+ -16348:50:38.1
+ -16348:50:38.1
+ -16348:50:38.1
+ -16348:50:38
+ -16348:50:38.1
+ -16348:50:38.12
+ -16348:50:38.12
+ -16348:50:38.12
+ -16348:50:38.12
+ -16348:50:38.12
+ ********
+ *********
+ -681 04:50
+ -681 04:50
+ -681 04:50
+ -681 04:50:38
+ -681 04:50:38
+ -681 04:50:38
+ -681 04:50:38
+ -681 04:50:38
+ -681 04:50:38
+ -681 04:50:38.1
+ -681 04:50:38.1
+ -681 04:50:38.1
+ -681 04:50:38
+ -681 04:50:38.1
+ -681 04:50:38.12
+ -681 04:50:38.12
+ -681 04:50:38.12
+ -681 04:50:38
+ -681 04:50:38.1
+ -681 04:50:38.12
+ -681 04:50:38.123
+ -681 04:50:38.123
+ -681 04:50:38.123
+ -681 04:50:38
+ -681 04:50:38.1
+ -681 04:50:38.12
+ -681 04:50:38.123
+ -681 04:50:38.1230
+ -681 04:50:38.1230
+ -681 04:50:38.1230
+ *****
+ ******
+ *******
+ ********
+ -16356:31
+ -16356:31
+ -16356:31
+ -16356:31
+ -16356:31
+ -16356:31
+ -16356:31:35
+ -16356:31:35
+ -16356:31:35
+ -16356:31:35
+ -16356:31:35
+ -16356:31:35
+ -16356:31:35
+ -16356:31:35
+ -16356:31:35
+ -16356:31:35
+ -16356:31:35.2
+ -16356:31:35.2
+ -16356:31:35.2
+ -16356:31:35.2
+ -16356:31:35.2
+ -16356:31:35
+ -16356:31:35.2
+ -16356:31:35.23
+ -16356:31:35.23
+ -16356:31:35.23
+ -16356:31:35.23
+ -16356:31:35.23
+ ********
+ *********
+ -681 12:31
+ -681 12:31
+ -681 12:31
+ -681 12:31:35
+ -681 12:31:35
+ -681 12:31:35
+ -681 12:31:35
+ -681 12:31:35
+ -681 12:31:35
+ -681 12:31:35.2
+ -681 12:31:35.2
+ -681 12:31:35.2
+ -681 12:31:35
+ -681 12:31:35.2
+ -681 12:31:35.23
+ -681 12:31:35.23
+ -681 12:31:35.23
+ -681 12:31:35
+ -681 12:31:35.2
+ -681 12:31:35.23
+ -681 12:31:35.235
+ -681 12:31:35.235
+ -681 12:31:35.235
+ -681 12:31:35
+ -681 12:31:35.2
+ -681 12:31:35.23
+ -681 12:31:35.235
+ -681 12:31:35.2345
+ -681 12:31:35.2345
+ -681 12:31:35.2345
+ *****
+ ******
+ *******
+ ********
+ -16356:47
+ -16356:47
+ -16356:47
+ -16356:47
+ -16356:47
+ -16356:47
+ -16356:47:53
+ -16356:47:53
+ -16356:47:53
+ -16356:47:53
+ -16356:47:53
+ -16356:47:53
+ -16356:47:53
+ -16356:47:53
+ -16356:47:53
+ -16356:47:53
+ -16356:47:53.3
+ -16356:47:53.3
+ -16356:47:53.3
+ -16356:47:53.3
+ -16356:47:53.3
+ -16356:47:53
+ -16356:47:53.3
+ -16356:47:53.35
+ -16356:47:53.35
+ -16356:47:53.35
+ -16356:47:53.35
+ -16356:47:53.35
+ ********
+ *********
+ -681 12:47
+ -681 12:47
+ -681 12:47
+ -681 12:47:53
+ -681 12:47:53
+ -681 12:47:53
+ -681 12:47:53
+ -681 12:47:53
+ -681 12:47:53
+ -681 12:47:53.3
+ -681 12:47:53.3
+ -681 12:47:53.3
+ -681 12:47:53
+ -681 12:47:53.3
+ -681 12:47:53.35
+ -681 12:47:53.35
+ -681 12:47:53.35
+ -681 12:47:53
+ -681 12:47:53.3
+ -681 12:47:53.35
+ -681 12:47:53.345
+ -681 12:47:53.345
+ -681 12:47:53.345
+ -681 12:47:53
+ -681 12:47:53.3
+ -681 12:47:53.35
+ -681 12:47:53.345
+ -681 12:47:53.3450
+ -681 12:47:53.3450
+ -681 12:47:53.3450
+ *****
+ ******
+ *******
+ ********
+ -16345:26
+ -16345:26
+ -16345:26
+ -16345:26
+ -16345:26
+ -16345:26
+ -16345:26:00
+ -16345:26:00
+ -16345:26:00
+ -16345:26:00
+ -16345:26:00
+ -16345:26:00
+ -16345:26:00
+ -16345:26:00
+ -16345:26:00
+ -16345:26:00
+ -16345:26:00.5
+ -16345:26:00.5
+ -16345:26:00.5
+ -16345:26:00.5
+ -16345:26:00.5
+ -16345:26:00
+ -16345:26:00.5
+ -16345:26:00.46
+ -16345:26:00.46
+ -16345:26:00.46
+ -16345:26:00.46
+ -16345:26:00.46
+ ********
+ *********
+ -681 01:26
+ -681 01:26
+ -681 01:26
+ -681 01:26:00
+ -681 01:26:00
+ -681 01:26:00
+ -681 01:26:00
+ -681 01:26:00
+ -681 01:26:00
+ -681 01:26:00.5
+ -681 01:26:00.5
+ -681 01:26:00.5
+ -681 01:26:00
+ -681 01:26:00.5
+ -681 01:26:00.46
+ -681 01:26:00.46
+ -681 01:26:00.46
+ -681 01:26:00
+ -681 01:26:00.5
+ -681 01:26:00.46
+ -681 01:26:00.456
+ -681 01:26:00.456
+ -681 01:26:00.456
+ -681 01:26:00
+ -681 01:26:00.5
+ -681 01:26:00.46
+ -681 01:26:00.456
+ -681 01:26:00.4562
+ -681 01:26:00.4562
+ -681 01:26:00.4562
+ *****
+ ******
+ *******
+ ********
+ -16364:58
+ -16364:58
+ -16364:58
+ -16364:58
+ -16364:58
+ -16364:58
+ -16364:58:11
+ -16364:58:11
+ -16364:58:11
+ -16364:58:11
+ -16364:58:11
+ -16364:58:11
+ -16364:58:11
+ -16364:58:11
+ -16364:58:11
+ -16364:58:11
+ -16364:58:11.6
+ -16364:58:11.6
+ -16364:58:11.6
+ -16364:58:11.6
+ -16364:58:11.6
+ -16364:58:11
+ -16364:58:11.6
+ -16364:58:11.57
+ -16364:58:11.57
+ -16364:58:11.57
+ -16364:58:11.57
+ -16364:58:11.57
+ ********
+ *********
+ -681 20:58
+ -681 20:58
+ -681 20:58
+ -681 20:58:11
+ -681 20:58:11
+ -681 20:58:11
+ -681 20:58:11
+ -681 20:58:11
+ -681 20:58:11
+ -681 20:58:11.6
+ -681 20:58:11.6
+ -681 20:58:11.6
+ -681 20:58:11
+ -681 20:58:11.6
+ -681 20:58:11.57
+ -681 20:58:11.57
+ -681 20:58:11.57
+ -681 20:58:11
+ -681 20:58:11.6
+ -681 20:58:11.57
+ -681 20:58:11.567
+ -681 20:58:11.567
+ -681 20:58:11.567
+ -681 20:58:11
+ -681 20:58:11.6
+ -681 20:58:11.57
+ -681 20:58:11.567
+ -681 20:58:11.5668
+ -681 20:58:11.5668
+ -681 20:58:11.5668
+ *****
+ ******
+ *******
+ ********
+ -16351:36
+ -16351:36
+ -16351:36
+ -16351:36
+ -16351:36
+ -16351:36
+ -16351:36:05
+ -16351:36:05
+ -16351:36:05
+ -16351:36:05
+ -16351:36:05
+ -16351:36:05
+ -16351:36:05
+ -16351:36:05
+ -16351:36:05
+ -16351:36:05
+ -16351:36:05.2
+ -16351:36:05.2
+ -16351:36:05.2
+ -16351:36:05.2
+ -16351:36:05.2
+ -16351:36:05
+ -16351:36:05.2
+ -16351:36:05.19
+ -16351:36:05.19
+ -16351:36:05.19
+ -16351:36:05.19
+ -16351:36:05.19
+ ********
+ *********
+ -681 07:36
+ -681 07:36
+ -681 07:36
+ -681 07:36:05
+ -681 07:36:05
+ -681 07:36:05
+ -681 07:36:05
+ -681 07:36:05
+ -681 07:36:05
+ -681 07:36:05.2
+ -681 07:36:05.2
+ -681 07:36:05.2
+ -681 07:36:05
+ -681 07:36:05.2
+ -681 07:36:05.19
+ -681 07:36:05.19
+ -681 07:36:05.19
+ -681 07:36:05
+ -681 07:36:05.2
+ -681 07:36:05.19
+ -681 07:36:05.190
+ -681 07:36:05.190
+ -681 07:36:05.190
+ -681 07:36:05
+ -681 07:36:05.2
+ -681 07:36:05.19
+ -681 07:36:05.190
+ -681 07:36:05.1896
+ -681 07:36:05.1896
+ -681 07:36:05.1896
+ *****
+ ******
+ *******
+ ********
+ -16359:43
+ -16359:43
+ -16359:43
+ -16359:43
+ -16359:43
+ -16359:43
+ -16359:43:49
+ -16359:43:49
+ -16359:43:49
+ -16359:43:49
+ -16359:43:49
+ -16359:43:49
+ -16359:43:49
+ -16359:43:49
+ -16359:43:49
+ -16359:43:49
+ -16359:43:49.8
+ -16359:43:49.8
+ -16359:43:49.8
+ -16359:43:49.8
+ -16359:43:49.8
+ -16359:43:49
+ -16359:43:49.8
+ -16359:43:49.83
+ -16359:43:49.83
+ -16359:43:49.83
+ -16359:43:49.83
+ -16359:43:49.83
+ ********
+ *********
+ -681 15:43
+ -681 15:43
+ -681 15:43
+ -681 15:43:49
+ -681 15:43:49
+ -681 15:43:49
+ -681 15:43:49
+ -681 15:43:49
+ -681 15:43:49
+ -681 15:43:49.8
+ -681 15:43:49.8
+ -681 15:43:49.8
+ -681 15:43:49
+ -681 15:43:49.8
+ -681 15:43:49.83
+ -681 15:43:49.83
+ -681 15:43:49.83
+ -681 15:43:49
+ -681 15:43:49.8
+ -681 15:43:49.83
+ -681 15:43:49.831
+ -681 15:43:49.831
+ -681 15:43:49.831
+ -681 15:43:49
+ -681 15:43:49.8
+ -681 15:43:49.83
+ -681 15:43:49.831
+ -681 15:43:49.8313
+ -681 15:43:49.8313
+ -681 15:43:49.8313
+ *****
+ ******
+ *******
+ ********
+ -16348:25
+ -16348:25
+ -16348:25
+ -16348:25
+ -16348:25
+ -16348:25
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09.0
+ -16348:25:09.0
+ -16348:25:09.0
+ -16348:25:09.0
+ -16348:25:09.0
+ -16348:25:09
+ -16348:25:09.0
+ -16348:25:09.01
+ -16348:25:09.01
+ -16348:25:09.01
+ -16348:25:09.01
+ -16348:25:09.01
+ ********
+ *********
+ -681 04:25
+ -681 04:25
+ -681 04:25
+ -681 04:25:09
+ -681 04:25:09
+ -681 04:25:09
+ -681 04:25:09
+ -681 04:25:09
+ -681 04:25:09
+ -681 04:25:09.0
+ -681 04:25:09.0
+ -681 04:25:09.0
+ -681 04:25:09
+ -681 04:25:09.0
+ -681 04:25:09.01
+ -681 04:25:09.01
+ -681 04:25:09.01
+ -681 04:25:09
+ -681 04:25:09.0
+ -681 04:25:09.01
+ -681 04:25:09.013
+ -681 04:25:09.013
+ -681 04:25:09.013
+ -681 04:25:09
+ -681 04:25:09.0
+ -681 04:25:09.01
+ -681 04:25:09.013
+ -681 04:25:09.0129
+ -681 04:25:09.0129
+ -681 04:25:09.0129
+ *****
+ ******
+ *******
+ ********
+ -16350:49
+ -16350:49
+ -16350:49
+ -16350:49
+ -16350:49
+ -16350:49
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27.5
+ -16350:49:27.5
+ -16350:49:27.5
+ -16350:49:27.5
+ -16350:49:27.5
+ -16350:49:27
+ -16350:49:27.5
+ -16350:49:27.52
+ -16350:49:27.52
+ -16350:49:27.52
+ -16350:49:27.52
+ -16350:49:27.52
+ ********
+ *********
+ -681 06:49
+ -681 06:49
+ -681 06:49
+ -681 06:49:27
+ -681 06:49:27
+ -681 06:49:27
+ -681 06:49:27
+ -681 06:49:27
+ -681 06:49:27
+ -681 06:49:27.5
+ -681 06:49:27.5
+ -681 06:49:27.5
+ -681 06:49:27
+ -681 06:49:27.5
+ -681 06:49:27.52
+ -681 06:49:27.52
+ -681 06:49:27.52
+ -681 06:49:27
+ -681 06:49:27.5
+ -681 06:49:27.52
+ -681 06:49:27.524
+ -681 06:49:27.524
+ -681 06:49:27.524
+ -681 06:49:27
+ -681 06:49:27.5
+ -681 06:49:27.52
+ -681 06:49:27.524
+ -681 06:49:27.5237
+ -681 06:49:27.5237
+ -681 06:49:27.5237
+ *****
+ ******
+ *******
+ ********
+ -16346:57
+ -16346:57
+ -16346:57
+ -16346:57
+ -16346:57
+ -16346:57
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52.0
+ -16346:57:52.0
+ -16346:57:52.0
+ -16346:57:52.0
+ -16346:57:52.0
+ -16346:57:52
+ -16346:57:52.0
+ -16346:57:52.02
+ -16346:57:52.02
+ -16346:57:52.02
+ -16346:57:52.02
+ -16346:57:52.02
+ ********
+ *********
+ -681 02:57
+ -681 02:57
+ -681 02:57
+ -681 02:57:52
+ -681 02:57:52
+ -681 02:57:52
+ -681 02:57:52
+ -681 02:57:52
+ -681 02:57:52
+ -681 02:57:52.0
+ -681 02:57:52.0
+ -681 02:57:52.0
+ -681 02:57:52
+ -681 02:57:52.0
+ -681 02:57:52.02
+ -681 02:57:52.02
+ -681 02:57:52.02
+ -681 02:57:52
+ -681 02:57:52.0
+ -681 02:57:52.02
+ -681 02:57:52.016
+ -681 02:57:52.016
+ -681 02:57:52.016
+ -681 02:57:52
+ -681 02:57:52.0
+ -681 02:57:52.02
+ -681 02:57:52.016
+ -681 02:57:52.0156
+ -681 02:57:52.0156
+ -681 02:57:52.0156
+ *****
+ ******
+ *******
+ ********
+ -16360:45
+ -16360:45
+ -16360:45
+ -16360:45
+ -16360:45
+ -16360:45
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44.9
+ -16360:45:44.9
+ -16360:45:44.9
+ -16360:45:44.9
+ -16360:45:44.9
+ -16360:45:44
+ -16360:45:44.9
+ -16360:45:44.87
+ -16360:45:44.87
+ -16360:45:44.87
+ -16360:45:44.87
+ -16360:45:44.87
+ ********
+ *********
+ -681 16:45
+ -681 16:45
+ -681 16:45
+ -681 16:45:44
+ -681 16:45:44
+ -681 16:45:44
+ -681 16:45:44
+ -681 16:45:44
+ -681 16:45:44
+ -681 16:45:44.9
+ -681 16:45:44.9
+ -681 16:45:44.9
+ -681 16:45:44
+ -681 16:45:44.9
+ -681 16:45:44.87
+ -681 16:45:44.87
+ -681 16:45:44.87
+ -681 16:45:44
+ -681 16:45:44.9
+ -681 16:45:44.87
+ -681 16:45:44.865
+ -681 16:45:44.865
+ -681 16:45:44.865
+ -681 16:45:44
+ -681 16:45:44.9
+ -681 16:45:44.87
+ -681 16:45:44.865
+ -681 16:45:44.8653
+ -681 16:45:44.8653
+ -681 16:45:44.8653
+ *****
+ ******
+ *******
+ ********
+ -16365:30
+ -16365:30
+ -16365:30
+ -16365:30
+ -16365:30
+ -16365:30
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57.8
+ -16365:30:57.8
+ -16365:30:57.8
+ -16365:30:57.8
+ -16365:30:57.8
+ -16365:30:57
+ -16365:30:57.8
+ -16365:30:57.82
+ -16365:30:57.82
+ -16365:30:57.82
+ -16365:30:57.82
+ -16365:30:57.82
+ ********
+ *********
+ -681 21:30
+ -681 21:30
+ -681 21:30
+ -681 21:30:57
+ -681 21:30:57
+ -681 21:30:57
+ -681 21:30:57
+ -681 21:30:57
+ -681 21:30:57
+ -681 21:30:57.8
+ -681 21:30:57.8
+ -681 21:30:57.8
+ -681 21:30:57
+ -681 21:30:57.8
+ -681 21:30:57.82
+ -681 21:30:57.82
+ -681 21:30:57.82
+ -681 21:30:57
+ -681 21:30:57.8
+ -681 21:30:57.82
+ -681 21:30:57.820
+ -681 21:30:57.820
+ -681 21:30:57.820
+ -681 21:30:57
+ -681 21:30:57.8
+ -681 21:30:57.82
+ -681 21:30:57.820
+ -681 21:30:57.8205
+ -681 21:30:57.8205
+ -681 21:30:57.8205
+ *****
+ ******
+ *******
+ ********
+ -16348:25
+ -16348:25
+ -16348:25
+ -16348:25
+ -16348:25
+ -16348:25
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09
+ -16348:25:09.2
+ -16348:25:09.2
+ -16348:25:09.2
+ -16348:25:09.2
+ -16348:25:09.2
+ -16348:25:09
+ -16348:25:09.2
+ -16348:25:09.15
+ -16348:25:09.15
+ -16348:25:09.15
+ -16348:25:09.15
+ -16348:25:09.15
+ ********
+ *********
+ -681 04:25
+ -681 04:25
+ -681 04:25
+ -681 04:25:09
+ -681 04:25:09
+ -681 04:25:09
+ -681 04:25:09
+ -681 04:25:09
+ -681 04:25:09
+ -681 04:25:09.2
+ -681 04:25:09.2
+ -681 04:25:09.2
+ -681 04:25:09
+ -681 04:25:09.2
+ -681 04:25:09.15
+ -681 04:25:09.15
+ -681 04:25:09.15
+ -681 04:25:09
+ -681 04:25:09.2
+ -681 04:25:09.15
+ -681 04:25:09.154
+ -681 04:25:09.154
+ -681 04:25:09.154
+ -681 04:25:09
+ -681 04:25:09.2
+ -681 04:25:09.15
+ -681 04:25:09.154
+ -681 04:25:09.1539
+ -681 04:25:09.1539
+ -681 04:25:09.1539
+ *****
+ ******
+ *******
+ ********
+ -16350:49
+ -16350:49
+ -16350:49
+ -16350:49
+ -16350:49
+ -16350:49
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27
+ -16350:49:27.1
+ -16350:49:27.1
+ -16350:49:27.1
+ -16350:49:27.1
+ -16350:49:27.1
+ -16350:49:27
+ -16350:49:27.1
+ -16350:49:27.11
+ -16350:49:27.11
+ -16350:49:27.11
+ -16350:49:27.11
+ -16350:49:27.11
+ ********
+ *********
+ -681 06:49
+ -681 06:49
+ -681 06:49
+ -681 06:49:27
+ -681 06:49:27
+ -681 06:49:27
+ -681 06:49:27
+ -681 06:49:27
+ -681 06:49:27
+ -681 06:49:27.1
+ -681 06:49:27.1
+ -681 06:49:27.1
+ -681 06:49:27
+ -681 06:49:27.1
+ -681 06:49:27.11
+ -681 06:49:27.11
+ -681 06:49:27.11
+ -681 06:49:27
+ -681 06:49:27.1
+ -681 06:49:27.11
+ -681 06:49:27.105
+ -681 06:49:27.105
+ -681 06:49:27.105
+ -681 06:49:27
+ -681 06:49:27.1
+ -681 06:49:27.11
+ -681 06:49:27.105
+ -681 06:49:27.1053
+ -681 06:49:27.1053
+ -681 06:49:27.1053
+ *****
+ ******
+ *******
+ ********
+ -16346:57
+ -16346:57
+ -16346:57
+ -16346:57
+ -16346:57
+ -16346:57
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52
+ -16346:57:52.5
+ -16346:57:52.5
+ -16346:57:52.5
+ -16346:57:52.5
+ -16346:57:52.5
+ -16346:57:52
+ -16346:57:52.5
+ -16346:57:52.48
+ -16346:57:52.48
+ -16346:57:52.48
+ -16346:57:52.48
+ -16346:57:52.48
+ ********
+ *********
+ -681 02:57
+ -681 02:57
+ -681 02:57
+ -681 02:57:52
+ -681 02:57:52
+ -681 02:57:52
+ -681 02:57:52
+ -681 02:57:52
+ -681 02:57:52
+ -681 02:57:52.5
+ -681 02:57:52.5
+ -681 02:57:52.5
+ -681 02:57:52
+ -681 02:57:52.5
+ -681 02:57:52.48
+ -681 02:57:52.48
+ -681 02:57:52.48
+ -681 02:57:52
+ -681 02:57:52.5
+ -681 02:57:52.48
+ -681 02:57:52.482
+ -681 02:57:52.482
+ -681 02:57:52.482
+ -681 02:57:52
+ -681 02:57:52.5
+ -681 02:57:52.48
+ -681 02:57:52.482
+ -681 02:57:52.4823
+ -681 02:57:52.4823
+ -681 02:57:52.4823
+ *****
+ ******
+ *******
+ ********
+ -16360:45
+ -16360:45
+ -16360:45
+ -16360:45
+ -16360:45
+ -16360:45
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44
+ -16360:45:44.7
+ -16360:45:44.7
+ -16360:45:44.7
+ -16360:45:44.7
+ -16360:45:44.7
+ -16360:45:44
+ -16360:45:44.7
+ -16360:45:44.66
+ -16360:45:44.66
+ -16360:45:44.66
+ -16360:45:44.66
+ -16360:45:44.66
+ ********
+ *********
+ -681 16:45
+ -681 16:45
+ -681 16:45
+ -681 16:45:44
+ -681 16:45:44
+ -681 16:45:44
+ -681 16:45:44
+ -681 16:45:44
+ -681 16:45:44
+ -681 16:45:44.7
+ -681 16:45:44.7
+ -681 16:45:44.7
+ -681 16:45:44
+ -681 16:45:44.7
+ -681 16:45:44.66
+ -681 16:45:44.66
+ -681 16:45:44.66
+ -681 16:45:44
+ -681 16:45:44.7
+ -681 16:45:44.66
+ -681 16:45:44.658
+ -681 16:45:44.658
+ -681 16:45:44.658
+ -681 16:45:44
+ -681 16:45:44.7
+ -681 16:45:44.66
+ -681 16:45:44.658
+ -681 16:45:44.6583
+ -681 16:45:44.6583
+ -681 16:45:44.6583
+ *****
+ ******
+ *******
+ ********
+ -16365:30
+ -16365:30
+ -16365:30
+ -16365:30
+ -16365:30
+ -16365:30
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57
+ -16365:30:57.6
+ -16365:30:57.6
+ -16365:30:57.6
+ -16365:30:57.6
+ -16365:30:57.6
+ -16365:30:57
+ -16365:30:57.6
+ -16365:30:57.58
+ -16365:30:57.58
+ -16365:30:57.58
+ -16365:30:57.58
+ -16365:30:57.58
+ ********
+ *********
+ -681 21:30
+ -681 21:30
+ -681 21:30
+ -681 21:30:57
+ -681 21:30:57
+ -681 21:30:57
+ -681 21:30:57
+ -681 21:30:57
+ -681 21:30:57
+ -681 21:30:57.6
+ -681 21:30:57.6
+ -681 21:30:57.6
+ -681 21:30:57
+ -681 21:30:57.6
+ -681 21:30:57.58
+ -681 21:30:57.58
+ -681 21:30:57.58
+ -681 21:30:57
+ -681 21:30:57.6
+ -681 21:30:57.58
+ -681 21:30:57.582
+ -681 21:30:57.582
+ -681 21:30:57.582
+ -681 21:30:57
+ -681 21:30:57.6
+ -681 21:30:57.58
+ -681 21:30:57.582
+ -681 21:30:57.5822
+ -681 21:30:57.5822
+ -681 21:30:57.5822
+ *****
+ ******
+ *******
+ ********
+ -16366:30
+ -16366:30
+ -16366:30
+ -16366:30
+ -16366:30
+ -16366:30
+ -16366:30:04
+ -16366:30:04
+ -16366:30:04
+ -16366:30:04
+ -16366:30:04
+ -16366:30:04
+ -16366:30:04
+ -16366:30:04
+ -16366:30:04
+ -16366:30:04
+ -16366:30:04.2
+ -16366:30:04.2
+ -16366:30:04.2
+ -16366:30:04.2
+ -16366:30:04.2
+ -16366:30:04
+ -16366:30:04.2
+ -16366:30:04.18
+ -16366:30:04.18
+ -16366:30:04.18
+ -16366:30:04.18
+ -16366:30:04.18
+ ********
+ *********
+ -681 22:30
+ -681 22:30
+ -681 22:30
+ -681 22:30:04
+ -681 22:30:04
+ -681 22:30:04
+ -681 22:30:04
+ -681 22:30:04
+ -681 22:30:04
+ -681 22:30:04.2
+ -681 22:30:04.2
+ -681 22:30:04.2
+ -681 22:30:04
+ -681 22:30:04.2
+ -681 22:30:04.18
+ -681 22:30:04.18
+ -681 22:30:04.18
+ -681 22:30:04
+ -681 22:30:04.2
+ -681 22:30:04.18
+ -681 22:30:04.183
+ -681 22:30:04.183
+ -681 22:30:04.183
+ -681 22:30:04
+ -681 22:30:04.2
+ -681 22:30:04.18
+ -681 22:30:04.183
+ -681 22:30:04.1835
+ -681 22:30:04.1835
+ -681 22:30:04.1835
+ *****
+ ******
+ *******
+ ********
+ -16345:56
+ -16345:56
+ -16345:56
+ -16345:56
+ -16345:56
+ -16345:56
+ -16345:56:51
+ -16345:56:51
+ -16345:56:51
+ -16345:56:51
+ -16345:56:51
+ -16345:56:51
+ -16345:56:51
+ -16345:56:51
+ -16345:56:51
+ -16345:56:51
+ -16345:56:51.6
+ -16345:56:51.6
+ -16345:56:51.6
+ -16345:56:51.6
+ -16345:56:51.6
+ -16345:56:51
+ -16345:56:51.6
+ -16345:56:51.59
+ -16345:56:51.59
+ -16345:56:51.59
+ -16345:56:51.59
+ -16345:56:51.59
+ ********
+ *********
+ -681 01:56
+ -681 01:56
+ -681 01:56
+ -681 01:56:51
+ -681 01:56:51
+ -681 01:56:51
+ -681 01:56:51
+ -681 01:56:51
+ -681 01:56:51
+ -681 01:56:51.6
+ -681 01:56:51.6
+ -681 01:56:51.6
+ -681 01:56:51
+ -681 01:56:51.6
+ -681 01:56:51.59
+ -681 01:56:51.59
+ -681 01:56:51.59
+ -681 01:56:51
+ -681 01:56:51.6
+ -681 01:56:51.59
+ -681 01:56:51.593
+ -681 01:56:51.593
+ -681 01:56:51.593
+ -681 01:56:51
+ -681 01:56:51.6
+ -681 01:56:51.59
+ -681 01:56:51.593
+ -681 01:56:51.5932
+ -681 01:56:51.5932
+ -681 01:56:51.5932
+])
+AT_CLEANUP
+
+AT_SETUP([MONTH output])
+AT_DATA([month-out.sps], [dnl
+set mxerr=1000000.
+set mxwarns=10000000.
+data list notable/x 1-10.
+begin data.
+
+0
+0.5
+0.9
+1
+2
+3
+4
+4.1
+4.5
+4.9
+5
+6
+7
+7.1
+7.5
+7.9
+8
+9
+10
+11
+12
+13
+end data.
+print outfile='month-out.out'/x(month3).
+print outfile='month-out.out'/x(month4).
+print outfile='month-out.out'/x(month5).
+print outfile='month-out.out'/x(month6).
+print outfile='month-out.out'/x(month7).
+print outfile='month-out.out'/x(month8).
+print outfile='month-out.out'/x(month9).
+print outfile='month-out.out'/x(month10).
+print outfile='month-out.out'/x(month11).
+print outfile='month-out.out'/x(month12).
+print outfile='month-out.out'/x(month13).
+print outfile='month-out.out'/x(month14).
+print outfile='month-out.out'/x(month15).
+print outfile='month-out.out'/x(month16).
+print outfile='month-out.out'/x(month17).
+print outfile='month-out.out'/x(month18).
+print outfile='month-out.out'/x(month19).
+print outfile='month-out.out'/x(month20).
+print outfile='month-out.out'/x(month21).
+print outfile='month-out.out'/x(month22).
+print outfile='month-out.out'/x(month23).
+print outfile='month-out.out'/x(month24).
+print outfile='month-out.out'/x(month25).
+print outfile='month-out.out'/x(month26).
+print outfile='month-out.out'/x(month27).
+print outfile='month-out.out'/x(month28).
+print outfile='month-out.out'/x(month29).
+print outfile='month-out.out'/x(month30).
+print outfile='month-out.out'/x(month31).
+print outfile='month-out.out'/x(month32).
+print outfile='month-out.out'/x(month33).
+print outfile='month-out.out'/x(month34).
+print outfile='month-out.out'/x(month35).
+print outfile='month-out.out'/x(month36).
+print outfile='month-out.out'/x(month37).
+print outfile='month-out.out'/x(month38).
+print outfile='month-out.out'/x(month39).
+print outfile='month-out.out'/x(month40).
+execute.
+])
+AT_CHECK([pspp -O format=csv month-out.sps], [1], [stdout])
+AT_CHECK([sed '/^$/d' stdout | sort | uniq -c], [0], [dnl
+ 38 error: Month number 0.000000 is not between 1 and 12.
+ 38 error: Month number 0.500000 is not between 1 and 12.
+ 38 error: Month number 0.900000 is not between 1 and 12.
+ 38 error: Month number 13.000000 is not between 1 and 12.
+])
+AT_CHECK([cat month-out.out], [0], [dnl
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ JAN
+ JANU
+ JANUA
+ JANUAR
+ JANUARY
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ JANUARY @&t@
+ FEB
+ FEBR
+ FEBRU
+ FEBRUA
+ FEBRUAR
+ FEBRUARY
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ FEBRUARY @&t@
+ MAR
+ MARC
+ MARCH
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ MARCH @&t@
+ APR
+ APRI
+ APRIL
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APR
+ APRI
+ APRIL
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APR
+ APRI
+ APRIL
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APR
+ APRI
+ APRIL
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ APRIL @&t@
+ MAY
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ MAY @&t@
+ JUN
+ JUNE
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUNE @&t@
+ JUL
+ JULY
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JUL
+ JULY
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JUL
+ JULY
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JUL
+ JULY
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ JULY @&t@
+ AUG
+ AUGU
+ AUGUS
+ AUGUST
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ AUGUST @&t@
+ SEP
+ SEPT
+ SEPTE
+ SEPTEM
+ SEPTEMB
+ SEPTEMBE
+ SEPTEMBER
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ SEPTEMBER @&t@
+ OCT
+ OCTO
+ OCTOB
+ OCTOBE
+ OCTOBER
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ OCTOBER @&t@
+ NOV
+ NOVE
+ NOVEM
+ NOVEMB
+ NOVEMBE
+ NOVEMBER
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ NOVEMBER @&t@
+ DEC
+ DECE
+ DECEM
+ DECEMB
+ DECEMBE
+ DECEMBER
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ DECEMBER @&t@
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+])
+AT_CLEANUP
+
+AT_SETUP([WKDAY output])
+AT_DATA([wkday-out.sps], [dnl
+set mxwarns=10000000.
+set mxerrs=10000000.
+data list notable/x 1-10.
+begin data.
+
+0
+0.5
+0.9
+1
+2
+3
+4
+4.1
+4.5
+4.9
+5
+6
+7
+7.1
+7.5
+7.9
+8
+end data.
+do repeat format=wkday2 to wkday40.
+print outfile='wkday-out.out'/x(format).
+end repeat.
+execute.
+])
+AT_CHECK([pspp -O format=csv wkday-out.sps], [1], [stdout])
+AT_CHECK([sed '/^$/d' stdout | sort | uniq -c], [0], [dnl
+ 39 error: Weekday number 0.000000 is not between 1 and 7.
+ 39 error: Weekday number 0.500000 is not between 1 and 7.
+ 39 error: Weekday number 0.900000 is not between 1 and 7.
+ 39 error: Weekday number 8.000000 is not between 1 and 7.
+])
+AT_CHECK([cat wkday-out.out], [0], [dnl
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ SU
+ SUN
+ SUND
+ SUNDA
+ SUNDAY
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ SUNDAY @&t@
+ MO
+ MON
+ MOND
+ MONDA
+ MONDAY
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ MONDAY @&t@
+ TU
+ TUE
+ TUES
+ TUESD
+ TUESDA
+ TUESDAY
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ TUESDAY @&t@
+ WE
+ WED
+ WEDN
+ WEDNE
+ WEDNES
+ WEDNESD
+ WEDNESDA
+ WEDNESDAY
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WE
+ WED
+ WEDN
+ WEDNE
+ WEDNES
+ WEDNESD
+ WEDNESDA
+ WEDNESDAY
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WE
+ WED
+ WEDN
+ WEDNE
+ WEDNES
+ WEDNESD
+ WEDNESDA
+ WEDNESDAY
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WE
+ WED
+ WEDN
+ WEDNE
+ WEDNES
+ WEDNESD
+ WEDNESDA
+ WEDNESDAY
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ WEDNESDAY @&t@
+ TH
+ THU
+ THUR
+ THURS
+ THURSD
+ THURSDA
+ THURSDAY
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ THURSDAY @&t@
+ FR
+ FRI
+ FRID
+ FRIDA
+ FRIDAY
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ FRIDAY @&t@
+ SA
+ SAT
+ SATU
+ SATUR
+ SATURD
+ SATURDA
+ SATURDAY
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SA
+ SAT
+ SATU
+ SATUR
+ SATURD
+ SATURDA
+ SATURDAY
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SA
+ SAT
+ SATU
+ SATUR
+ SATURD
+ SATURDA
+ SATURDAY
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SA
+ SAT
+ SATU
+ SATUR
+ SATURD
+ SATURDA
+ SATURDAY
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ SATURDAY @&t@
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([datasheet])
+
+m4_define([DATASHEET_TEST],
+ [AT_SETUP([$1x$2, $3 backing rows, backing widths $4])
+ AT_KEYWORDS([datasheet])
+ AT_CHECK(
+ [datasheet-test$EXEEXT --verbosity=0 --max-rows=$1 --max-columns=$2 \
+ --backing-rows=$3 --backing-widths=$4],
+ [0], [ignore], [ignore])
+ AT_CLEANUP])
+
+DATASHEET_TEST([3], [3], [0], [])
+DATASHEET_TEST([3], [3], [3], [0,0,0])
+DATASHEET_TEST([3], [3], [3], [0])
+DATASHEET_TEST([3], [3], [3], [5])
+DATASHEET_TEST([3], [3], [1], [0,9,0])
+++ /dev/null
-#!/bin/sh
-
-# This program tests the datasheet implementation.
-
-set -e
-
-: ${top_builddir:=.}
-RUN_TEST="${top_builddir}/tests/data/datasheet-test$EXEEXT --verbosity=0"
-
-$RUN_TEST --max-rows=3 --max-columns=3 --backing-rows=0 --backing-widths=
-$RUN_TEST --max-rows=3 --max-columns=3 --backing-rows=3 --backing-widths=0,0,0
-$RUN_TEST --max-rows=3 --max-columns=3 --backing-rows=3 --backing-widths=0
-$RUN_TEST --max-rows=3 --max-columns=3 --backing-rows=3 --backing-widths=5
-$RUN_TEST --max-rows=3 --max-columns=3 --backing-rows=1 --backing-widths=0,9,0
--- /dev/null
+AT_BANNER([format guesser])
+
+AT_SETUP([format guesser])
+AT_DATA([format-guesser.txt], [dnl
+# No data.
+=> F8.2
+"" => F8.2
+"." => F8.2
+
+# Numeric formats.
+"1.2" => F3.1
+"$1.2" => DOLLAR4.1
+"1.2%" => PCT4.1
+"$1.2%" => A5
+"1e5" => E3.0
+"1e+5" => E4.0
+"1+5" => E3.0
+"1-5" => E3.0
+"1.2e5" => E5.1
+"1.3e+5" => E6.1
+"1.4+5" => E5.1
+"1e" => A2
+"1e+" => A3
+"1+" => A2
+"1-" => A2
+"1.5-5" => E5.1
+"1,123" => COMMA5.0 # Is , is grouping or decimal? Assume grouping.
+"1.123" => F5.3 # Ditto.
+"1,12" => F4.2 # Not a group of 3, so last delim must be decimal.
+"1.12" => F4.2 # Ditto.
+"1,1234" => F6.4 # Not a group of 3, so last delim must be decimal.
+"1.1234" => F6.4 # Ditto.
+"$1.234" => DOLLAR6.3 # Dollar sign means decimal has to be '.'.
+"$1,234" => DOLLAR6.0 # Ditto.
+"1.234%" => PCT6.3 # Percent sign means decimal has to be '.'.
+"1,234%" => PCT6.0 # Ditto.
+"1,123.456" => COMMA9.3 # Both '.' and ',', so last delim must be decimal.
+"1.123,456" => DOT9.3 # Ditto.
+"1,123,456.45" => COMMA12.2 # Ditto.
+"1.123.456,45" => DOT12.2 # Ditto.
+"1,123,456" => COMMA9.0 # Ditto.
+"1.123.456" => DOT9.0 # Ditto.
+
+# Date and time formats.
+"01-OCT-1978" => DATE11
+"01-x-1978" => EDATE9 # Roman numeral for month.
+"01-13-99" => ADATE8
+"1-13-99" => ADATE7 (ADATE8)
+"13-01-99" => EDATE8
+"13-1-99" => EDATE7 (EDATE8)
+"32-1-1" => SDATE6 (SDATE8)
+"1q01" => QYR4
+"1Q01" => QYR4
+"1 q 01" => QYR6
+"1 Q 01" => QYR6
+"1q2001" => QYR6
+"1Q2001" => QYR6
+"1 q 2001" => QYR8
+"1 Q 2001" => QYR8
+"oct 05" => MOYR6
+"oct 2005" => MOYR8
+"1-1-01 1:2" => A10 # Minute needs at least two digits.
+"1-1-01 1:02" => DATETIME11.0 (DATETIME17.0)
+"1-1-01 1:02:3" => A13 # Second needs at least two digits.
+"1-1-01 1:02:03" => DATETIME20.0
+"1-1-01 1:02:03.1" => DATETIME20.1 (DATETIME22.1)
+"1-1-01 +1:02:03.1" => DATETIME20.1 (DATETIME22.1)
+"1-1-01 -1:02:03.1" => DATETIME20.1 (DATETIME22.1)
+"1:30" => TIME4.0 (TIME5.0)
+"1:30:05" => TIME8.0
+"-1:30" => TIME5.0
+"+1:30" => TIME5.0
+"-1:30:15" => TIME8.0
+"+1:30:15" => TIME8.0
+"-1:30:15.5" => TIME10.1
+"+1:30:15.75" => TIME11.2
+"1 1:30" => DTIME6.0 (DTIME8.0)
+"+1 1:30" => DTIME7.0 (DTIME8.0)
+"-1 1:30" => DTIME7.0 (DTIME8.0)
+"-1-13-99" => A8
+"+1-13-99" => A8
+"1+13+99" => A7
+"1:00:01.03" => TIME10.2 (TIME11.2)
+"12 1:00:01.3" => DTIME12.1 (DTIME13.1)
+"jan" => MONTH3
+"Feb" => MONTH3
+"MAR" => MONTH3
+"i" => A1 # Not detected as MONTH format.
+"v" => A1
+"ix" => A2
+"x" => A1
+"january" => MONTH7
+"janaury" => MONTH7 # Only first three letters are significant.
+"february" => MONTH8
+"febraury" => MONTH8
+"march" => MONTH5
+"marhc" => MONTH5
+"april" => MONTH5
+"may" => MONTH3
+"june" => MONTH4
+"july" => MONTH4
+"august" => MONTH6
+"september" => MONTH9
+"october" => MONTH7
+"november" => MONTH8
+"decmeber" => MONTH8
+"december" => MONTH8
+"monady" => WKDAY6
+"tuseday" => WKDAY7
+"wedensday" => WKDAY9
+"thurdsay" => WKDAY8
+"fridya" => WKDAY6
+"saturady" => WKDAY8
+"sudnay" => WKDAY6
+
+# Ambiguous; bias in favor of more sensible DD/MM/YY format:
+"1/1/1978" => EDATE8
+"01/01/01" => EDATE8
+
+# Several ambiguous dates can be clarified by one unambiguous example:
+"1/1/1978" "1/2/1978" "1/3/1978" "1/13/1978" => ADATE9 # MM/DD/YY
+"01/01/01" "02/01/01" "03/01/01" "13/01/01" => EDATE8 # DD/MM/YY
+"01/01/01" "02/01/01" "03/01/01" "2013/01/01" => SDATE10 # YY/MM/DD
+])
+AT_CHECK([[(echo "SET DECIMAL=DOT."
+ sed -e 's/#.*//
+s/[ ]*$//
+/^$/d
+s,^\(.*\)=> \(.*\)$,DEBUG FORMAT GUESSER \1.,') \
+ < format-guesser.txt > format-guesser.sps]])
+AT_CHECK([pspp --testing-mode -O format=csv format-guesser.sps],
+ [0], [], [stderr])
+AT_CHECK([[sed -e 's/#.*//
+s/[ ]*$//
+/^$/d' < format-guesser.txt > expout]])
+AT_CHECK([cat stderr], [0], [expout])
+AT_CLEANUP
--- /dev/null
+/* PSPP - a program for statistical analysis.
+ Copyright (C) 2006, 2010 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <ctype.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* Replaces insignificant digits by # to facilitate textual
+ comparisons. Not a perfect solution to the general-purpose
+ comparison problem, because rounding that affects earlier
+ digits can still cause differences. */
+int
+main (void)
+{
+ bool in_quotes = false;
+ bool in_exponent = false;
+ int digits = 0;
+
+ for (;;)
+ {
+ int c = getchar ();
+ if (c == EOF)
+ break;
+ else if (c == '\n')
+ in_quotes = false;
+ else if (c == '"')
+ {
+ in_quotes = !in_quotes;
+ in_exponent = false;
+ digits = 0;
+ }
+ else if (in_quotes && !in_exponent)
+ {
+ if (strchr ("+dDeE", c) != NULL || (c == '-' && digits))
+ in_exponent = true;
+ else if (strchr ("0123456789}JKLMNOPQR", c) != NULL)
+ {
+ if (digits || c >= '1')
+ digits++;
+ if (digits > 13)
+ c = isdigit (c) ? '#' : '@';
+ }
+ }
+ putchar (c);
+ }
+ return EXIT_SUCCESS;
+}
--- /dev/null
+use strict;
+use warnings 'all';
+
+my (@prev) = ();
+our ($n) = 0;
+our ($suffix) = '';
+our ($prefix) = '';
+while (<>) {
+ s/^ //;
+ if (scalar (my (@line) = /^([A-Z]+)(\d+)([^"]+")( *)([^%"]*)(%?")$/) == 6) {
+ if (defined ($prev[0])
+ && $line[0] eq $prev[0]
+ && $line[1] == $prev[1] + 1
+ && $line[2] eq $prev[2]
+ && $line[5] eq $prev[5]) {
+ if ($line[3] eq " $prev[3]"
+ && $line[4] eq $prev[4]) {
+ flush_prefix ();
+ flush_suffix ();
+ $n++;
+ } elsif ($line[3] eq $prev[3]
+ && length ($line[4]) == length ($prev[4]) + 1
+ && $prev[4] eq substr ($line[4], 0, length ($line[4]) - 1)) {
+ flush_n ();
+ flush_prefix ();
+ $suffix .= substr ($line[4], -1);
+ } elsif ($line[3] eq $prev[3]
+ && $prev[4] eq substr ($line[4], 1)) {
+ flush_n ();
+ flush_suffix ();
+ $prefix .= substr ($line[4], 0, 1);
+ } else {
+ flush ();
+ print $_;
+ }
+ } else {
+ flush ();
+ print $_;
+ }
+ @prev = @line;
+ } else {
+ flush ();
+ print $_;
+ @prev = ();
+ }
+}
+flush ();
+
+sub flush_suffix {
+ if ($suffix ne '') {
+ print "\$$suffix\n";
+ $suffix = '';
+ }
+}
+
+sub flush_prefix {
+ if ($prefix ne '') {
+ print "^$prefix\n";
+ $prefix = '';
+ }
+}
+
+sub flush_n {
+ if ($n) {
+ print "*$n\n";
+ $n = 0;
+ }
+}
+
+sub flush {
+ flush_prefix ();
+ flush_suffix ();
+ flush_n ();
+}
--- /dev/null
+AT_BANNER([portable files])
+
+AT_SETUP([overwriting portable file])
+AT_DATA([output.por], [abcdef
+])
+cp output.por output.por.backup
+AT_DATA([porfile.sps], [dnl
+DATA LIST NOTABLE/x 1.
+BEGIN DATA.
+5
+END DATA.
+EXPORT OUTFILE='output.por'.
+])
+AT_CHECK([pspp -O format=csv porfile.sps])
+AT_CHECK([cmp output.por output.por.backup], [1], [ignore])
+AT_CLEANUP
+
+AT_SETUP([overwriting portable file atomically])
+AT_DATA([output.por], [abcdef
+])
+cp output.por output.por.backup
+AT_DATA([porfile.sps],
+[[DATA LIST NOTABLE/x 1.
+BEGIN DATA.
+5
+END DATA.
+XEXPORT OUTFILE='output.por'.
+HOST COMMAND=['kill -TERM $PPID'].
+]])
+AT_CHECK([pspp -O format=csv porfile.sps], [143], [], [ignore])
+AT_CHECK([cmp output.por output.por.backup])
+AT_CHECK(
+ [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
+AT_CLEANUP
+
+AT_SETUP([write to same portable file being read])
+AT_DATA([export.sps], [dnl
+DATA LIST NOTABLE/x 1.
+BEGIN DATA.
+2
+END DATA.
+EXPORT OUTFILE='data.por'.
+])
+AT_CHECK([pspp -O format=csv export.sps])
+AT_CHECK([test -s data.por])
+AT_CHECK(
+ [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
+AT_DATA([export2.sps], [dnl
+IMPORT FILE='data.por'.
+COMPUTE y = x * 2.
+EXPORT OUTFILE='data.por'.
+])
+AT_CHECK([pspp -O format=csv export2.sps])
+AT_CHECK(
+ [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
+AT_DATA([export3.sps], [dnl
+IMPORT FILE='data.por'.
+LIST.
+])
+AT_CHECK([pspp -O format=csv export3.sps], [0], [dnl
+Table: Data List
+X,Y
+2,4.00
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([system files])
+
+# Also tests that long variable names are preserved by SAVE and GET.
+AT_SETUP([write and read numeric data])
+AT_KEYWORDS([SAVE GET system file])
+AT_DATA([sysfile.sps], [dnl
+DATA LIST LIST NOTABLE / variable001 * variable002 * variable003 * variable004 * .
+BEGIN DATA.
+ 1.00 1.00 1.0 2.00
+ 1.00 1.00 2.0 30.00
+ 1.00 2.00 1.0 8.00
+ 1.00 2.00 2.0 20.00
+ 2.00 1.00 1.0 2.00
+ 2.00 1.00 2.0 22.00
+ 2.00 2.00 1.0 1.00
+ 2.00 2.00 2.0 3.00
+END DATA.
+
+SAVE /OUTFILE='foo.sav'.
+
+GET /FILE='foo.sav'.
+
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv sysfile.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+variable001,variable002,variable003,variable004
+1.00,1.00,1.00,2.00
+1.00,1.00,2.00,30.00
+1.00,2.00,1.00,8.00
+1.00,2.00,2.00,20.00
+2.00,1.00,1.00,2.00
+2.00,1.00,2.00,22.00
+2.00,2.00,1.00,1.00
+2.00,2.00,2.00,3.00
+])
+AT_CLEANUP
+
+AT_SETUP([write and read compressed files])
+AT_KEYWORDS([SAVE GET system file])
+AT_DATA([sysfile.sps], [dnl
+DATA LIST LIST NOTABLE /x * y (a200).
+BEGIN DATA.
+1.2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+. yyyyyyyyyyyyyyy
+0 ddddddddddddddddddddddddddddddd
+101 z
+END DATA.
+
+SAVE OUTFILE='com.sav' /COMPRESS .
+
+GET FILE='com.sav'.
+
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv sysfile.sps])
+dnl Make sure file really was compressd.
+AT_CHECK([dd if=com.sav bs=1 skip=72 count=4 2> /dev/null | od | sed '1q' > com.txt])
+dnl Allow big- or little-endian format.
+AT_CHECK(
+ [(echo '0000000 000000 000001' | diff com.txt -) ||
+ (echo '0000000 000001 000000' | diff com.txt -)], [0],
+ [ignore])
+AT_CAPTURE_FILE([com.txt])
+AT_CLEANUP
+
+AT_SETUP([overwriting system file])
+AT_DATA([output.sav], [abcdef
+])
+cp output.sav output.sav.backup
+AT_DATA([sysfile.sps], [dnl
+DATA LIST NOTABLE/x 1.
+BEGIN DATA.
+5
+END DATA.
+SAVE OUTFILE='output.sav'.
+])
+AT_CHECK([pspp -O format=csv sysfile.sps])
+AT_CHECK([cmp output.sav output.sav.backup], [1], [ignore])
+AT_CLEANUP
+
+AT_SETUP([overwriting system file atomically])
+AT_DATA([output.sav], [abcdef
+])
+cp output.sav output.sav.backup
+AT_DATA([sysfile.sps],
+[[DATA LIST NOTABLE/x 1.
+BEGIN DATA.
+5
+END DATA.
+XSAVE OUTFILE='output.sav'.
+HOST COMMAND=['kill -TERM $PPID'].
+]])
+AT_CHECK([pspp -O format=csv sysfile.sps], [143], [], [ignore])
+AT_CHECK([cmp output.sav output.sav.backup])
+AT_CHECK(
+ [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
+AT_CLEANUP
+
+
+AT_SETUP([write to same system file being read])
+AT_DATA([save.sps], [dnl
+DATA LIST NOTABLE/x 1.
+BEGIN DATA.
+3
+END DATA.
+SAVE OUTFILE='data.sav'.
+])
+AT_CHECK([pspp -O format=csv save.sps])
+AT_CHECK([test -s data.sav])
+AT_CHECK(
+ [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
+AT_DATA([save2.sps], [dnl
+GET FILE='data.sav'.
+COMPUTE y = x * 3.
+SAVE OUTFILE='data.sav'.
+])
+AT_CHECK([pspp -O format=csv save2.sps])
+AT_CHECK(
+ [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
+AT_DATA([save3.sps], [dnl
+GET FILE='data.sav'.
+LIST.
+])
+AT_CHECK([pspp -O format=csv save3.sps], [0], [dnl
+Table: Data List
+x,y
+3,9.00
+])
+AT_CLEANUP
+
+AT_SETUP([nonempty case_map doesn't crash])
+AT_KEYWORDS([SAVE system file])
+AT_DATA([save.sps], [dnl
+INPUT PROGRAM.
+ COMPUTE #I = 1.
+ COMPUTE X = #I + 1.
+ END CASE.
+ END FILE.
+END INPUT PROGRAM.
+
+SAVE OUTFILE='tiny.sav'.
+])
+AT_CHECK([pspp -O format=csv save.sps])
+AT_DATA([get.sps], [dnl
+GET FILE='tiny.sav'.
+LIST.
+])
+AT_CHECK([pspp -O format=csv get.sps], [0], [dnl
+Table: Data List
+X
+2.00
+])
+AT_CLEANUP
+
+# Test that system files can be read properly, even when the case_size
+# header value is -1 (Some 3rd party products do this).
+AT_SETUP([system files with -1 case_size])
+AT_KEYWORDS([SAVE GET])
+AT_DATA([save.sps], [dnl
+DATA LIST LIST NOTABLE /cont (A32) size pop count.
+VAR LABEL
+ cont 'continents of the world'
+ size 'sq km'
+ pop 'population'
+ count 'number of countries'.
+SAVE OUTFILE='cont.sav'.
+BEGIN DATA.
+Asia, 44579000, 3.7E+009, 44.00
+Africa, 30065000, 7.8E+008, 53.00
+"North America", 24256000, 4.8E+008, 23.00
+"South America", 17819000, 3.4E+008, 12.00
+Antarctica, 13209000, .00, .00
+Europe, 9938000, 7.3E+008, 46.00
+Australia/Oceania, 7687000, 31000000, 14.00
+END DATA.
+])
+AT_CHECK([pspp -O format=csv save.sps])
+AT_CHECK([test -f cont.sav])
+
+dnl case_size is a 4-byte field at offset 68.
+dnl Make a new copy with its value changed to -1.
+AT_CHECK(
+ [(dd if=cont.sav bs=1 count=68;
+ printf '\377\377\377\377';
+ dd if=cont.sav bs=1 skip=72) > cont2.sav], [0], [], [ignore])
+AT_CHECK([cmp cont.sav cont2.sav], [1],
+ [cont.sav cont2.sav differ: char 69, line 1
+])
+
+AT_DATA([get.sps], [dnl
+GET FILE='cont2.sav'.
+DISPLAY LABELS.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv get.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variable,Label,,Position
+cont,continents of the world,,1
+size,sq km,,2
+pop,population,,3
+count,number of countries,,4
+
+Table: Data List
+cont,size,pop,count
+Asia ,44579000,3.7E+009,44.00
+Africa ,30065000,7.8E+008,53.00
+North America ,24256000,4.8E+008,23.00
+South America ,17819000,3.4E+008,12.00
+Antarctica ,13209000,.00,.00
+Europe ,9938000,7.3E+008,46.00
+Australia/Oceania ,7687000,31000000,14.00
+])
+AT_CLEANUP
+
+AT_SETUP([write v2 system file])
+AT_KEYWORDS([SAVE])
+AT_DATA([sysfile.sps], [dnl
+DATA LIST LIST NOTABLE / X * variable001 * variable002 * variable003 * .
+BEGIN DATA.
+ 1.00 1.00 1.0 2.00
+ 1.00 1.00 2.0 30.00
+ 1.00 2.00 1.0 8.00
+ 1.00 2.00 2.0 20.00
+ 2.00 1.00 1.0 2.00
+ 2.00 1.00 2.0 22.00
+ 2.00 2.00 1.0 1.00
+ 2.00 2.00 2.0 3.00
+END DATA.
+
+SAVE /OUTFILE='foo.sav'
+ /VERSION=2
+ .
+
+GET /FILE='foo.sav'.
+
+LIST.
+])
+AT_CHECK([pspp -O format=csv sysfile.sps], [0], [dnl
+Table: Data List
+x,variable,variab_a,variab_b
+1.00,1.00,1.00,2.00
+1.00,1.00,2.00,30.00
+1.00,2.00,1.00,8.00
+1.00,2.00,2.00,20.00
+2.00,1.00,1.00,2.00
+2.00,1.00,2.00,22.00
+2.00,2.00,1.00,1.00
+2.00,2.00,2.00,3.00
+])
+dnl Ensure that the written file has no long name table
+AT_CHECK([grep 'X=X' foo.sav], [1], [ignore-nolog])
+AT_CLEANUP
+\f
+AT_BANNER([system files -- very long strings])
+
+AT_SETUP([read very long strings written by SPSS 13])
+AT_CHECK([cp $top_srcdir/tests/data/v13.sav .])
+AT_DATA([sys-file.sps], [dnl
+GET FILE='v13.sav'.
+DISPLAY VARIABLES.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv sys-file.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variable,Description,,Position
+N,Format: F8.2,,1
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 10,,
+A255,Format: A255,,2
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 32,,
+A258,Format: A258,,3
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 32,,
+A2000,Format: A2000,,4
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 32,,
+
+Table: Data List
+N,A255,A258,A2000
+1.00,a1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA,b1BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB,c1CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+2.00,a2XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,b2YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY,c2ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
+])
+AT_CLEANUP
+
+AT_SETUP([read very long strings written by SPSS 14])
+AT_CHECK([cp $top_srcdir/tests/data/v14.sav .])
+AT_DATA([sys-file.sps], [dnl
+GET FILE='v14.sav'.
+DISPLAY VARIABLES.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv sys-file.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variable,Description,,Position
+vl255,Format: A255,,1
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 26,,
+vl256,Format: A256,,2
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 26,,
+vl1335,Format: A1335,,3
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 26,,
+vl2000,Format: A2000,,4
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 26,,
+
+Table: Data List
+vl255,vl256,vl1335,vl2000
+MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM,MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM,MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM,MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
+])
+AT_CLEANUP
+
+m4_divert_push([PREPARE_TESTS])
+vls_gen_data () {
+cat > data.txt <<EOF
+ 1xxxxxxxx2aXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbcYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYdeZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZf
+ 1xxxxxxxx2aXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbcYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYdeZZMaryHadAlittleLambZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZf
+EOF
+}
+m4_divert_pop([PREPARE_TESTS])
+
+m4_define([VLS_WRITE],
+ [AT_SETUP([save very long string -- m4_tolower([$1])])
+ vls_gen_data
+ AT_DATA([save.sps], [dnl
+DATA LIST FIXED NOTABLE FILE='data.txt'
+ /a 2-11 (a)
+ b (a256)
+ c (a200)
+ d (a32767).
+
+SAVE OUTFILE='foo.sav' /$1.
+])
+ AT_CHECK([pspp -O format=csv save.sps])
+ AT_DATA([get.sps], [dnl
+GET FILE='foo.sav'.
+
+DISPLAY VARIABLES.
+
+PRINT OUTFILE='out.txt'
+ /a (a10) b (a256) c (a200)
+ d (a32767)
+ .
+
+EXECUTE.
+])
+ AT_CHECK([pspp -o pspp.csv get.sps])
+ AT_CHECK([cat pspp.csv], [0], [dnl
+Variable,Description,,Position
+a,Format: A10,,1
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 10,,
+b,Format: A256,,2
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 32,,
+c,Format: A200,,3
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 32,,
+d,Format: A32767,,4
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 32,,
+])
+ AT_CLEANUP])
+
+VLS_WRITE([UNCOMPRESSED])
+VLS_WRITE([COMPRESSED])
r.file_name = argv[i];
r.file = fopen (r.file_name, "rb");
if (r.file == NULL)
- error (EXIT_FAILURE, errno, "error opening \"%s\"", r.file_name);
+ error (EXIT_FAILURE, errno, "error opening `%s'", r.file_name);
r.n_variable_records = 0;
r.n_variables = 0;
r.n_var_widths = 0;
if (!text_match (text, ' '))
{
- sys_warn (r, _("Missing space following 'E' at offset %zu "
- "in MRSETS record"), text_pos (text));
+ sys_warn (r, _("Missing space following `%c' at offset %zu "
+ "in MRSETS record"), 'E', text_pos (text));
break;
}
if (!strcmp (number, "11"))
label_from_var_label = true;
else if (strcmp (number, "1"))
- sys_warn (r, _("Unexpected label source value \"%s\" "
- "following 'E' at offset %zu in MRSETS record"),
+ sys_warn (r, _("Unexpected label source value `%s' "
+ "following `E' at offset %zu in MRSETS record"),
number, text_pos (text));
}
else
{
- sys_warn (r, "missing 'C', 'D', or 'E' at offset %zu "
+ sys_warn (r, "missing `C', `D', or `E' at offset %zu "
"in mrsets record", text_pos (text));
break;
}
+++ /dev/null
-#! /bin/sh
-
-# Tests random distribution functions.
-
-TEMPDIR=/tmp/pspp-tst-$$
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-cd $TEMPDIR
-
-activity="run script to generate random distribution test command file"
-perl $top_srcdir/tests/expressions/randist/randist.pl \
- < $top_srcdir/tests/expressions/randist/randist.txt \
- > randist.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run command file"
-$SUPERVISOR $PSPP -o pspp.csv \
- $TEMPDIR/randist.pspp >$TEMPDIR/randist.err 2> $TEMPDIR/randist.out
-if [ $? -ne 0 ] ; then fail ; fi
-
-for d in beta cauchy chisq exp f gamma laplace logistic lnormal \
- normal pareto t uniform weibull; do
- activity="compare output for $d distribution"
- perl $top_srcdir/tests/expressions/randist/compare.pl \
- $top_srcdir/tests/expressions/randist/$d.out $TEMPDIR/$d.out
- if [ $? -ne 0 ] ; then fail ; fi
-done
-
-pass
+++ /dev/null
- P a b x cdf pdf
- .01 .75 .25 .0107 .0100 .7059
- .01 .75 .50 .0047 .0100 1.5975
- .01 .75 1.00 .0022 .0100 3.4812
- .01 .75 1.50 .0014 .0100 5.4014
- .01 .75 2.00 .0010 .0100 7.3328
- .01 .75 2.50 .0008 .0100 9.2691
- .01 .75 3.00 .0007 .0100 11.2077
- .01 1.00 .25 .0394 .0100 .2577
- .01 1.00 .50 .0199 .0100 .5051
- .01 1.00 1.00 .0100 .0100 1.0000
- .01 1.00 1.50 .0067 .0100 1.4950
- .01 1.00 2.00 .0050 .0100 1.9900
- .01 1.00 2.50 .0040 .0100 2.4850
- .01 1.00 3.00 .0033 .0100 2.9800
- .01 1.50 .25 .1343 .0100 .1168
- .01 1.50 .50 .0808 .0100 .1888
- .01 1.50 1.00 .0464 .0100 .3232
- .01 1.50 1.50 .0328 .0100 .4538
- .01 1.50 2.00 .0255 .0100 .5831
- .01 1.50 2.50 .0208 .0100 .7118
- .01 1.50 3.00 .0176 .0100 .8402
- .10 .75 .25 .2094 .1000 .3968
- .10 .75 .50 .0985 .1000 .7845
- .10 .75 1.00 .0464 .1000 1.6158
- .10 .75 1.50 .0302 .1000 2.4656
- .10 .75 2.00 .0223 .1000 3.3210
- .10 .75 2.50 .0177 .1000 4.1787
- .10 .75 3.00 .0146 .1000 5.0376
- .10 1.00 .25 .3439 .1000 .3429
- .10 1.00 .50 .1900 .1000 .5556
- .10 1.00 1.00 .1000 .1000 1.0000
- .10 1.00 1.50 .0678 .1000 1.4482
- .10 1.00 2.00 .0513 .1000 1.8974
- .10 1.00 2.50 .0413 .1000 2.3469
- .10 1.00 3.00 .0345 .1000 2.7965
- .10 1.50 .25 .5280 .1000 .3650
- .10 1.50 .50 .3514 .1000 .4685
- .10 1.50 1.00 .2154 .1000 .6962
- .10 1.50 1.50 .1565 .1000 .9252
- .10 1.50 2.00 .1231 .1000 1.1537
- .10 1.50 2.50 .1015 .1000 1.3821
- .10 1.50 3.00 .0864 .1000 1.6102
- .20 .75 .25 .4559 .2000 .4324
- .20 .75 .50 .2372 .2000 .6847
- .20 .75 1.00 .1170 .2000 1.2825
- .20 .75 1.50 .0770 .2000 1.9025
- .20 .75 2.00 .0573 .2000 2.5285
- .20 .75 2.50 .0456 .2000 3.1569
- .20 .75 3.00 .0379 .2000 3.7865
- .20 1.00 .25 .5904 .2000 .4883
- .20 1.00 .50 .3600 .2000 .6250
- .20 1.00 1.00 .2000 .2000 1.0000
- .20 1.00 1.50 .1382 .2000 1.3925
- .20 1.00 2.00 .1056 .2000 1.7889
- .20 1.00 2.50 .0854 .2000 2.1867
- .20 1.00 3.00 .0717 .2000 2.5853
- .20 1.50 .25 .7324 .2000 .6579
- .20 1.50 .50 .5280 .2000 .6733
- .20 1.50 1.00 .3420 .2000 .8772
- .20 1.50 1.50 .2541 .2000 1.1086
- .20 1.50 2.00 .2024 .2000 1.3456
- .20 1.50 2.50 .1683 .2000 1.5847
- .20 1.50 3.00 .1441 .2000 1.8249
- .30 .75 .25 .6615 .3000 .5624
- .30 .75 .50 .3852 .3000 .6756
- .30 .75 1.00 .2008 .3000 1.1204
- .30 .75 1.50 .1346 .3000 1.6023
- .30 .75 2.00 .1010 .3000 2.0929
- .30 .75 2.50 .0808 .3000 2.5868
- .30 .75 3.00 .0673 .3000 3.0823
- .30 1.00 .25 .7599 .3000 .7289
- .30 1.00 .50 .5100 .3000 .7143
- .30 1.00 1.00 .3000 .3000 1.0000
- .30 1.00 1.50 .2116 .3000 1.3319
- .30 1.00 2.00 .1633 .3000 1.6733
- .30 1.00 2.50 .1330 .3000 2.0184
- .30 1.00 3.00 .1121 .3000 2.3651
- .30 1.50 .25 .8510 .3000 1.1004
- .30 1.50 .50 .6576 .3000 .8823
- .30 1.50 1.00 .4481 .3000 1.0041
- .30 1.50 1.50 .3402 .3000 1.2064
- .30 1.50 2.00 .2743 .3000 1.4253
- .30 1.50 2.50 .2298 .3000 1.6503
- .30 1.50 3.00 .1978 .3000 1.8782
- .40 .75 .25 .8106 .4000 .8261
- .40 .75 .50 .5300 .4000 .7134
- .40 .75 1.00 .2947 .4000 1.0179
- .40 .75 1.50 .2017 .4000 1.3908
- .40 .75 2.00 .1530 .4000 1.7776
- .40 .75 2.50 .1231 .4000 2.1695
- .40 .75 3.00 .1029 .4000 2.5638
- .40 1.00 .25 .8704 .4000 1.1574
- .40 1.00 .50 .6400 .4000 .8333
- .40 1.00 1.00 .4000 .4000 1.0000
- .40 1.00 1.50 .2886 .4000 1.2651
- .40 1.00 2.00 .2254 .4000 1.5492
- .40 1.00 2.50 .1848 .4000 1.8401
- .40 1.00 3.00 .1566 .4000 2.1341
- .40 1.50 .25 .9219 .4000 1.8596
- .40 1.50 .50 .7581 .4000 1.1269
- .40 1.50 1.00 .5429 .4000 1.1052
- .40 1.50 1.50 .4211 .4000 1.2573
- .40 1.50 2.00 .3438 .4000 1.4428
- .40 1.50 2.50 .2904 .4000 1.6405
- .40 1.50 3.00 .2514 .4000 1.8440
- .50 .75 .25 .9067 .5000 1.3662
- .50 .75 .50 .6633 .5000 .7969
- .50 .75 1.00 .3969 .5000 .9449
- .50 .75 1.50 .2786 .5000 1.2197
- .50 .75 2.00 .2139 .5000 1.5170
- .50 .75 2.50 .1734 .5000 1.8224
- .50 .75 3.00 .1458 .5000 2.1314
- .50 1.00 .25 .9375 .5000 2.0000
- .50 1.00 .50 .7500 .5000 1.0000
- .50 1.00 1.00 .5000 .5000 1.0000
- .50 1.00 1.50 .3700 .5000 1.1906
- .50 1.00 2.00 .2929 .5000 1.4142
- .50 1.00 2.50 .2421 .5000 1.6494
- .50 1.00 3.00 .2063 .5000 1.8899
- .50 1.50 .25 .9630 .5000 3.3258
- .50 1.50 .50 .8368 .5000 1.4416
- .50 1.50 1.00 .6300 .5000 1.1906
- .50 1.50 1.50 .5000 .5000 1.2732
- .50 1.50 2.00 .4136 .5000 1.4142
- .50 1.50 2.50 .3525 .5000 1.5755
- .50 1.50 3.00 .3069 .5000 1.7464
- .60 .75 .25 .9613 .6000 2.6072
- .60 .75 .50 .7793 .6000 .9454
- .60 .75 1.00 .5061 .6000 .8892
- .60 .75 1.50 .3662 .6000 1.0676
- .60 .75 2.00 .2856 .6000 1.2826
- .60 .75 2.50 .2337 .6000 1.5099
- .60 .75 3.00 .1976 .6000 1.7426
- .60 1.00 .25 .9744 .6000 3.9063
- .60 1.00 .50 .8400 .6000 1.2500
- .60 1.00 1.00 .6000 .6000 1.0000
- .60 1.00 1.50 .4571 .6000 1.1052
- .60 1.00 2.00 .3675 .6000 1.2649
- .60 1.00 2.50 .3069 .6000 1.4427
- .60 1.00 3.00 .2632 .6000 1.6287
- .60 1.50 .25 .9850 .6000 6.6134
- .60 1.50 .50 .8978 .6000 1.8869
- .60 1.50 1.00 .7114 .6000 1.2651
- .60 1.50 1.50 .5789 .6000 1.2573
- .60 1.50 2.00 .4860 .6000 1.3438
- .60 1.50 2.50 .4182 .6000 1.4617
- .60 1.50 3.00 .3667 .6000 1.5938
- .70 .75 .25 .9877 .7000 6.1137
- .70 .75 .50 .8736 .7000 1.2142
- .70 .75 1.00 .6215 .7000 .8447
- .70 .75 1.50 .4670 .7000 .9214
- .70 .75 2.00 .3714 .7000 1.0570
- .70 .75 2.50 .3075 .7000 1.2110
- .70 .75 3.00 .2622 .7000 1.3731
- .70 1.00 .25 .9919 .7000 9.2593
- .70 1.00 .50 .9100 .7000 1.6667
- .70 1.00 1.00 .7000 .7000 1.0000
- .70 1.00 1.50 .5519 .7000 1.0041
- .70 1.00 2.00 .4523 .7000 1.0954
- .70 1.00 2.50 .3822 .7000 1.2140
- .70 1.00 3.00 .3306 .7000 1.3444
- .70 1.50 .25 .9953 .7000 15.8068
- .70 1.50 .50 .9434 .7000 2.5994
- .70 1.50 1.00 .7884 .7000 1.3319
- .70 1.50 1.50 .6598 .7000 1.2064
- .70 1.50 2.00 .5635 .7000 1.2287
- .70 1.50 2.50 .4905 .7000 1.2972
- .70 1.50 3.00 .4337 .7000 1.3859
- .80 .75 .25 .9976 .8000 20.5520
- .80 .75 .50 .9431 .8000 1.7757
- .80 .75 1.00 .7427 .8000 .8079
- .80 .75 1.50 .5855 .8000 .7679
- .80 .75 2.00 .4781 .8000 .8238
- .80 .75 2.50 .4025 .8000 .9075
- .80 .75 3.00 .3469 .8000 1.0028
- .80 1.00 .25 .9984 .8000 31.2500
- .80 1.00 .50 .9600 .8000 2.5000
- .80 1.00 1.00 .8000 .8000 1.0000
- .80 1.00 1.50 .6580 .8000 .8772
- .80 1.00 2.00 .5528 .8000 .8944
- .80 1.00 2.50 .4747 .8000 .9518
- .80 1.00 3.00 .4152 .8000 1.0260
- .80 1.50 .25 .9991 .8000 53.5108
- .80 1.50 .50 .9751 .8000 3.9855
- .80 1.50 1.00 .8618 .8000 1.3925
- .80 1.50 1.50 .7459 .8000 1.1086
- .80 1.50 2.00 .6508 .8000 1.0564
- .80 1.50 2.50 .5748 .8000 1.0706
- .80 1.50 3.00 .5137 .8000 1.1124
- .90 .75 .25 .9998 .9000 164.2657
- .90 .75 .50 .9857 .9000 3.4998
- .90 .75 1.00 .8689 .9000 .7768
- .90 .75 1.50 .7336 .9000 .5818
- .90 .75 2.00 .6239 .9000 .5555
- .90 .75 2.50 .5392 .9000 .5712
- .90 .75 3.00 .4734 .9000 .6033
- .90 1.00 .25 .9999 .9000 250.0000
- .90 1.00 .50 .9900 .9000 5.0000
- .90 1.00 1.00 .9000 .9000 1.0000
- .90 1.00 1.50 .7846 .9000 .6962
- .90 1.00 2.00 .6838 .9000 .6325
- .90 1.00 2.50 .6019 .9000 .6280
- .90 1.00 3.00 .5358 .9000 .6463
- .90 1.50 .25 .9999 .9000 428.3866
- .90 1.50 .50 .9938 .9000 8.0723
- .90 1.50 1.00 .9322 .9000 1.4482
- .90 1.50 1.50 .8435 .9000 .9252
- .90 1.50 2.00 .7586 .9000 .7883
- .90 1.50 2.50 .6847 .9000 .7461
- .90 1.50 3.00 .6218 .9000 .7400
- .99 .75 .25 1.0000 .9900 164255.717
- .99 .75 .50 .9999 .9900 34.8318
- .99 .75 1.00 .9867 .9900 .7525
- .99 .75 1.50 .9412 .9900 .2568
- .99 .75 2.00 .8779 .9900 .1656
- .99 .75 2.50 .8116 .9900 .1348
- .99 .75 3.00 .7492 .9900 .1220
- .99 1.00 .25 1.0000 .9900 249999.999
- .99 1.00 .50 .9999 .9900 50.0000
- .99 1.00 1.00 .9900 .9900 1.0000
- .99 1.00 1.50 .9536 .9900 .3232
- .99 1.00 2.00 .9000 .9900 .2000
- .99 1.00 2.50 .8415 .9900 .1577
- .99 1.00 3.00 .7846 .9900 .1392
- .99 1.50 .25 1.0000 .9900 428406.592
- .99 1.50 .50 .9999 .9900 81.0536
- .99 1.50 1.00 .9933 .9900 1.4950
- .99 1.50 1.50 .9672 .9900 .4538
- .99 1.50 2.00 .9260 .9900 .2669
- .99 1.50 2.50 .8786 .9900 .2020
- .99 1.50 3.00 .8302 .9900 .1724
+++ /dev/null
- P a b x cdf pdf
- .01 -5.00 .50 -20.9103 .0100 .0006
- .01 -5.00 .75 -28.8654 .0100 .0004
- .01 -5.00 1.00 -36.8205 .0100 .0003
- .01 -5.00 1.25 -44.7756 .0100 .0003
- .01 -5.00 1.50 -52.7308 .0100 .0002
- .01 -4.00 .50 -19.9103 .0100 .0006
- .01 -4.00 .75 -27.8654 .0100 .0004
- .01 -4.00 1.00 -35.8205 .0100 .0003
- .01 -4.00 1.25 -43.7756 .0100 .0003
- .01 -4.00 1.50 -51.7308 .0100 .0002
- .01 -3.00 .50 -18.9103 .0100 .0006
- .01 -3.00 .75 -26.8654 .0100 .0004
- .01 -3.00 1.00 -34.8205 .0100 .0003
- .01 -3.00 1.25 -42.7756 .0100 .0003
- .01 -3.00 1.50 -50.7308 .0100 .0002
- .01 -2.00 .50 -17.9103 .0100 .0006
- .01 -2.00 .75 -25.8654 .0100 .0004
- .01 -2.00 1.00 -33.8205 .0100 .0003
- .01 -2.00 1.25 -41.7756 .0100 .0003
- .01 -2.00 1.50 -49.7308 .0100 .0002
- .01 -1.00 .50 -16.9103 .0100 .0006
- .01 -1.00 .75 -24.8654 .0100 .0004
- .01 -1.00 1.00 -32.8205 .0100 .0003
- .01 -1.00 1.25 -40.7756 .0100 .0003
- .01 -1.00 1.50 -48.7308 .0100 .0002
- .01 .00 .50 -15.9103 .0100 .0006
- .01 .00 .75 -23.8654 .0100 .0004
- .01 .00 1.00 -31.8205 .0100 .0003
- .01 .00 1.25 -39.7756 .0100 .0003
- .01 .00 1.50 -47.7308 .0100 .0002
- .01 1.00 .50 -14.9103 .0100 .0006
- .01 1.00 .75 -22.8654 .0100 .0004
- .01 1.00 1.00 -30.8205 .0100 .0003
- .01 1.00 1.25 -38.7756 .0100 .0003
- .01 1.00 1.50 -46.7308 .0100 .0002
- .01 2.00 .50 -13.9103 .0100 .0006
- .01 2.00 .75 -21.8654 .0100 .0004
- .01 2.00 1.00 -29.8205 .0100 .0003
- .01 2.00 1.25 -37.7756 .0100 .0003
- .01 2.00 1.50 -45.7308 .0100 .0002
- .01 3.00 .50 -12.9103 .0100 .0006
- .01 3.00 .75 -20.8654 .0100 .0004
- .01 3.00 1.00 -28.8205 .0100 .0003
- .01 3.00 1.25 -36.7756 .0100 .0003
- .01 3.00 1.50 -44.7308 .0100 .0002
- .01 4.00 .50 -11.9103 .0100 .0006
- .01 4.00 .75 -19.8654 .0100 .0004
- .01 4.00 1.00 -27.8205 .0100 .0003
- .01 4.00 1.25 -35.7756 .0100 .0003
- .01 4.00 1.50 -43.7308 .0100 .0002
- .01 5.00 .50 -10.9103 .0100 .0006
- .01 5.00 .75 -18.8654 .0100 .0004
- .01 5.00 1.00 -26.8205 .0100 .0003
- .01 5.00 1.25 -34.7756 .0100 .0003
- .01 5.00 1.50 -42.7308 .0100 .0002
- .10 -5.00 .50 -6.5388 .1000 .0608
- .10 -5.00 .75 -7.3083 .1000 .0405
- .10 -5.00 1.00 -8.0777 .1000 .0304
- .10 -5.00 1.25 -8.8471 .1000 .0243
- .10 -5.00 1.50 -9.6165 .1000 .0203
- .10 -4.00 .50 -5.5388 .1000 .0608
- .10 -4.00 .75 -6.3083 .1000 .0405
- .10 -4.00 1.00 -7.0777 .1000 .0304
- .10 -4.00 1.25 -7.8471 .1000 .0243
- .10 -4.00 1.50 -8.6165 .1000 .0203
- .10 -3.00 .50 -4.5388 .1000 .0608
- .10 -3.00 .75 -5.3083 .1000 .0405
- .10 -3.00 1.00 -6.0777 .1000 .0304
- .10 -3.00 1.25 -6.8471 .1000 .0243
- .10 -3.00 1.50 -7.6165 .1000 .0203
- .10 -2.00 .50 -3.5388 .1000 .0608
- .10 -2.00 .75 -4.3083 .1000 .0405
- .10 -2.00 1.00 -5.0777 .1000 .0304
- .10 -2.00 1.25 -5.8471 .1000 .0243
- .10 -2.00 1.50 -6.6165 .1000 .0203
- .10 -1.00 .50 -2.5388 .1000 .0608
- .10 -1.00 .75 -3.3083 .1000 .0405
- .10 -1.00 1.00 -4.0777 .1000 .0304
- .10 -1.00 1.25 -4.8471 .1000 .0243
- .10 -1.00 1.50 -5.6165 .1000 .0203
- .10 .00 .50 -1.5388 .1000 .0608
- .10 .00 .75 -2.3083 .1000 .0405
- .10 .00 1.00 -3.0777 .1000 .0304
- .10 .00 1.25 -3.8471 .1000 .0243
- .10 .00 1.50 -4.6165 .1000 .0203
- .10 1.00 .50 -.5388 .1000 .0608
- .10 1.00 .75 -1.3083 .1000 .0405
- .10 1.00 1.00 -2.0777 .1000 .0304
- .10 1.00 1.25 -2.8471 .1000 .0243
- .10 1.00 1.50 -3.6165 .1000 .0203
- .10 2.00 .50 .4612 .1000 .0608
- .10 2.00 .75 -.3083 .1000 .0405
- .10 2.00 1.00 -1.0777 .1000 .0304
- .10 2.00 1.25 -1.8471 .1000 .0243
- .10 2.00 1.50 -2.6165 .1000 .0203
- .10 3.00 .50 1.4612 .1000 .0608
- .10 3.00 .75 .6917 .1000 .0405
- .10 3.00 1.00 -.0777 .1000 .0304
- .10 3.00 1.25 -.8471 .1000 .0243
- .10 3.00 1.50 -1.6165 .1000 .0203
- .10 4.00 .50 2.4612 .1000 .0608
- .10 4.00 .75 1.6917 .1000 .0405
- .10 4.00 1.00 .9223 .1000 .0304
- .10 4.00 1.25 .1529 .1000 .0243
- .10 4.00 1.50 -.6165 .1000 .0203
- .10 5.00 .50 3.4612 .1000 .0608
- .10 5.00 .75 2.6917 .1000 .0405
- .10 5.00 1.00 1.9223 .1000 .0304
- .10 5.00 1.25 1.1529 .1000 .0243
- .10 5.00 1.50 .3835 .1000 .0203
- .20 -5.00 .50 -5.6882 .2000 .2199
- .20 -5.00 .75 -6.0323 .2000 .1466
- .20 -5.00 1.00 -6.3764 .2000 .1100
- .20 -5.00 1.25 -6.7205 .2000 .0880
- .20 -5.00 1.50 -7.0646 .2000 .0733
- .20 -4.00 .50 -4.6882 .2000 .2199
- .20 -4.00 .75 -5.0323 .2000 .1466
- .20 -4.00 1.00 -5.3764 .2000 .1100
- .20 -4.00 1.25 -5.7205 .2000 .0880
- .20 -4.00 1.50 -6.0646 .2000 .0733
- .20 -3.00 .50 -3.6882 .2000 .2199
- .20 -3.00 .75 -4.0323 .2000 .1466
- .20 -3.00 1.00 -4.3764 .2000 .1100
- .20 -3.00 1.25 -4.7205 .2000 .0880
- .20 -3.00 1.50 -5.0646 .2000 .0733
- .20 -2.00 .50 -2.6882 .2000 .2199
- .20 -2.00 .75 -3.0323 .2000 .1466
- .20 -2.00 1.00 -3.3764 .2000 .1100
- .20 -2.00 1.25 -3.7205 .2000 .0880
- .20 -2.00 1.50 -4.0646 .2000 .0733
- .20 -1.00 .50 -1.6882 .2000 .2199
- .20 -1.00 .75 -2.0323 .2000 .1466
- .20 -1.00 1.00 -2.3764 .2000 .1100
- .20 -1.00 1.25 -2.7205 .2000 .0880
- .20 -1.00 1.50 -3.0646 .2000 .0733
- .20 .00 .50 -.6882 .2000 .2199
- .20 .00 .75 -1.0323 .2000 .1466
- .20 .00 1.00 -1.3764 .2000 .1100
- .20 .00 1.25 -1.7205 .2000 .0880
- .20 .00 1.50 -2.0646 .2000 .0733
- .20 1.00 .50 .3118 .2000 .2199
- .20 1.00 .75 -.0323 .2000 .1466
- .20 1.00 1.00 -.3764 .2000 .1100
- .20 1.00 1.25 -.7205 .2000 .0880
- .20 1.00 1.50 -1.0646 .2000 .0733
- .20 2.00 .50 1.3118 .2000 .2199
- .20 2.00 .75 .9677 .2000 .1466
- .20 2.00 1.00 .6236 .2000 .1100
- .20 2.00 1.25 .2795 .2000 .0880
- .20 2.00 1.50 -.0646 .2000 .0733
- .20 3.00 .50 2.3118 .2000 .2199
- .20 3.00 .75 1.9677 .2000 .1466
- .20 3.00 1.00 1.6236 .2000 .1100
- .20 3.00 1.25 1.2795 .2000 .0880
- .20 3.00 1.50 .9354 .2000 .0733
- .20 4.00 .50 3.3118 .2000 .2199
- .20 4.00 .75 2.9677 .2000 .1466
- .20 4.00 1.00 2.6236 .2000 .1100
- .20 4.00 1.25 2.2795 .2000 .0880
- .20 4.00 1.50 1.9354 .2000 .0733
- .20 5.00 .50 4.3118 .2000 .2199
- .20 5.00 .75 3.9677 .2000 .1466
- .20 5.00 1.00 3.6236 .2000 .1100
- .20 5.00 1.25 3.2795 .2000 .0880
- .20 5.00 1.50 2.9354 .2000 .0733
- .30 -5.00 .50 -5.3633 .3000 .4167
- .30 -5.00 .75 -5.5449 .3000 .2778
- .30 -5.00 1.00 -5.7265 .3000 .2083
- .30 -5.00 1.25 -5.9082 .3000 .1667
- .30 -5.00 1.50 -6.0898 .3000 .1389
- .30 -4.00 .50 -4.3633 .3000 .4167
- .30 -4.00 .75 -4.5449 .3000 .2778
- .30 -4.00 1.00 -4.7265 .3000 .2083
- .30 -4.00 1.25 -4.9082 .3000 .1667
- .30 -4.00 1.50 -5.0898 .3000 .1389
- .30 -3.00 .50 -3.3633 .3000 .4167
- .30 -3.00 .75 -3.5449 .3000 .2778
- .30 -3.00 1.00 -3.7265 .3000 .2083
- .30 -3.00 1.25 -3.9082 .3000 .1667
- .30 -3.00 1.50 -4.0898 .3000 .1389
- .30 -2.00 .50 -2.3633 .3000 .4167
- .30 -2.00 .75 -2.5449 .3000 .2778
- .30 -2.00 1.00 -2.7265 .3000 .2083
- .30 -2.00 1.25 -2.9082 .3000 .1667
- .30 -2.00 1.50 -3.0898 .3000 .1389
- .30 -1.00 .50 -1.3633 .3000 .4167
- .30 -1.00 .75 -1.5449 .3000 .2778
- .30 -1.00 1.00 -1.7265 .3000 .2083
- .30 -1.00 1.25 -1.9082 .3000 .1667
- .30 -1.00 1.50 -2.0898 .3000 .1389
- .30 .00 .50 -.3633 .3000 .4167
- .30 .00 .75 -.5449 .3000 .2778
- .30 .00 1.00 -.7265 .3000 .2083
- .30 .00 1.25 -.9082 .3000 .1667
- .30 .00 1.50 -1.0898 .3000 .1389
- .30 1.00 .50 .6367 .3000 .4167
- .30 1.00 .75 .4551 .3000 .2778
- .30 1.00 1.00 .2735 .3000 .2083
- .30 1.00 1.25 .0918 .3000 .1667
- .30 1.00 1.50 -.0898 .3000 .1389
- .30 2.00 .50 1.6367 .3000 .4167
- .30 2.00 .75 1.4551 .3000 .2778
- .30 2.00 1.00 1.2735 .3000 .2083
- .30 2.00 1.25 1.0918 .3000 .1667
- .30 2.00 1.50 .9102 .3000 .1389
- .30 3.00 .50 2.6367 .3000 .4167
- .30 3.00 .75 2.4551 .3000 .2778
- .30 3.00 1.00 2.2735 .3000 .2083
- .30 3.00 1.25 2.0918 .3000 .1667
- .30 3.00 1.50 1.9102 .3000 .1389
- .30 4.00 .50 3.6367 .3000 .4167
- .30 4.00 .75 3.4551 .3000 .2778
- .30 4.00 1.00 3.2735 .3000 .2083
- .30 4.00 1.25 3.0918 .3000 .1667
- .30 4.00 1.50 2.9102 .3000 .1389
- .30 5.00 .50 4.6367 .3000 .4167
- .30 5.00 .75 4.4551 .3000 .2778
- .30 5.00 1.00 4.2735 .3000 .2083
- .30 5.00 1.25 4.0918 .3000 .1667
- .30 5.00 1.50 3.9102 .3000 .1389
- .40 -5.00 .50 -5.1625 .4000 .5758
- .40 -5.00 .75 -5.2437 .4000 .3839
- .40 -5.00 1.00 -5.3249 .4000 .2879
- .40 -5.00 1.25 -5.4061 .4000 .2303
- .40 -5.00 1.50 -5.4874 .4000 .1919
- .40 -4.00 .50 -4.1625 .4000 .5758
- .40 -4.00 .75 -4.2437 .4000 .3839
- .40 -4.00 1.00 -4.3249 .4000 .2879
- .40 -4.00 1.25 -4.4061 .4000 .2303
- .40 -4.00 1.50 -4.4874 .4000 .1919
- .40 -3.00 .50 -3.1625 .4000 .5758
- .40 -3.00 .75 -3.2437 .4000 .3839
- .40 -3.00 1.00 -3.3249 .4000 .2879
- .40 -3.00 1.25 -3.4061 .4000 .2303
- .40 -3.00 1.50 -3.4874 .4000 .1919
- .40 -2.00 .50 -2.1625 .4000 .5758
- .40 -2.00 .75 -2.2437 .4000 .3839
- .40 -2.00 1.00 -2.3249 .4000 .2879
- .40 -2.00 1.25 -2.4061 .4000 .2303
- .40 -2.00 1.50 -2.4874 .4000 .1919
- .40 -1.00 .50 -1.1625 .4000 .5758
- .40 -1.00 .75 -1.2437 .4000 .3839
- .40 -1.00 1.00 -1.3249 .4000 .2879
- .40 -1.00 1.25 -1.4061 .4000 .2303
- .40 -1.00 1.50 -1.4874 .4000 .1919
- .40 .00 .50 -.1625 .4000 .5758
- .40 .00 .75 -.2437 .4000 .3839
- .40 .00 1.00 -.3249 .4000 .2879
- .40 .00 1.25 -.4061 .4000 .2303
- .40 .00 1.50 -.4874 .4000 .1919
- .40 1.00 .50 .8375 .4000 .5758
- .40 1.00 .75 .7563 .4000 .3839
- .40 1.00 1.00 .6751 .4000 .2879
- .40 1.00 1.25 .5939 .4000 .2303
- .40 1.00 1.50 .5126 .4000 .1919
- .40 2.00 .50 1.8375 .4000 .5758
- .40 2.00 .75 1.7563 .4000 .3839
- .40 2.00 1.00 1.6751 .4000 .2879
- .40 2.00 1.25 1.5939 .4000 .2303
- .40 2.00 1.50 1.5126 .4000 .1919
- .40 3.00 .50 2.8375 .4000 .5758
- .40 3.00 .75 2.7563 .4000 .3839
- .40 3.00 1.00 2.6751 .4000 .2879
- .40 3.00 1.25 2.5939 .4000 .2303
- .40 3.00 1.50 2.5126 .4000 .1919
- .40 4.00 .50 3.8375 .4000 .5758
- .40 4.00 .75 3.7563 .4000 .3839
- .40 4.00 1.00 3.6751 .4000 .2879
- .40 4.00 1.25 3.5939 .4000 .2303
- .40 4.00 1.50 3.5126 .4000 .1919
- .40 5.00 .50 4.8375 .4000 .5758
- .40 5.00 .75 4.7563 .4000 .3839
- .40 5.00 1.00 4.6751 .4000 .2879
- .40 5.00 1.25 4.5939 .4000 .2303
- .40 5.00 1.50 4.5126 .4000 .1919
- .50 -5.00 .50 -5.0000 .5000 .6366
- .50 -5.00 .75 -5.0000 .5000 .4244
- .50 -5.00 1.00 -5.0000 .5000 .3183
- .50 -5.00 1.25 -5.0000 .5000 .2546
- .50 -5.00 1.50 -5.0000 .5000 .2122
- .50 -4.00 .50 -4.0000 .5000 .6366
- .50 -4.00 .75 -4.0000 .5000 .4244
- .50 -4.00 1.00 -4.0000 .5000 .3183
- .50 -4.00 1.25 -4.0000 .5000 .2546
- .50 -4.00 1.50 -4.0000 .5000 .2122
- .50 -3.00 .50 -3.0000 .5000 .6366
- .50 -3.00 .75 -3.0000 .5000 .4244
- .50 -3.00 1.00 -3.0000 .5000 .3183
- .50 -3.00 1.25 -3.0000 .5000 .2546
- .50 -3.00 1.50 -3.0000 .5000 .2122
- .50 -2.00 .50 -2.0000 .5000 .6366
- .50 -2.00 .75 -2.0000 .5000 .4244
- .50 -2.00 1.00 -2.0000 .5000 .3183
- .50 -2.00 1.25 -2.0000 .5000 .2546
- .50 -2.00 1.50 -2.0000 .5000 .2122
- .50 -1.00 .50 -1.0000 .5000 .6366
- .50 -1.00 .75 -1.0000 .5000 .4244
- .50 -1.00 1.00 -1.0000 .5000 .3183
- .50 -1.00 1.25 -1.0000 .5000 .2546
- .50 -1.00 1.50 -1.0000 .5000 .2122
- .50 .00 .50 .0000 .5000 .6366
- .50 .00 .75 .0000 .5000 .4244
- .50 .00 1.00 .0000 .5000 .3183
- .50 .00 1.25 .0000 .5000 .2546
- .50 .00 1.50 .0000 .5000 .2122
- .50 1.00 .50 1.0000 .5000 .6366
- .50 1.00 .75 1.0000 .5000 .4244
- .50 1.00 1.00 1.0000 .5000 .3183
- .50 1.00 1.25 1.0000 .5000 .2546
- .50 1.00 1.50 1.0000 .5000 .2122
- .50 2.00 .50 2.0000 .5000 .6366
- .50 2.00 .75 2.0000 .5000 .4244
- .50 2.00 1.00 2.0000 .5000 .3183
- .50 2.00 1.25 2.0000 .5000 .2546
- .50 2.00 1.50 2.0000 .5000 .2122
- .50 3.00 .50 3.0000 .5000 .6366
- .50 3.00 .75 3.0000 .5000 .4244
- .50 3.00 1.00 3.0000 .5000 .3183
- .50 3.00 1.25 3.0000 .5000 .2546
- .50 3.00 1.50 3.0000 .5000 .2122
- .50 4.00 .50 4.0000 .5000 .6366
- .50 4.00 .75 4.0000 .5000 .4244
- .50 4.00 1.00 4.0000 .5000 .3183
- .50 4.00 1.25 4.0000 .5000 .2546
- .50 4.00 1.50 4.0000 .5000 .2122
- .50 5.00 .50 5.0000 .5000 .6366
- .50 5.00 .75 5.0000 .5000 .4244
- .50 5.00 1.00 5.0000 .5000 .3183
- .50 5.00 1.25 5.0000 .5000 .2546
- .50 5.00 1.50 5.0000 .5000 .2122
- .60 -5.00 .50 -4.8375 .6000 .5758
- .60 -5.00 .75 -4.7563 .6000 .3839
- .60 -5.00 1.00 -4.6751 .6000 .2879
- .60 -5.00 1.25 -4.5939 .6000 .2303
- .60 -5.00 1.50 -4.5126 .6000 .1919
- .60 -4.00 .50 -3.8375 .6000 .5758
- .60 -4.00 .75 -3.7563 .6000 .3839
- .60 -4.00 1.00 -3.6751 .6000 .2879
- .60 -4.00 1.25 -3.5939 .6000 .2303
- .60 -4.00 1.50 -3.5126 .6000 .1919
- .60 -3.00 .50 -2.8375 .6000 .5758
- .60 -3.00 .75 -2.7563 .6000 .3839
- .60 -3.00 1.00 -2.6751 .6000 .2879
- .60 -3.00 1.25 -2.5939 .6000 .2303
- .60 -3.00 1.50 -2.5126 .6000 .1919
- .60 -2.00 .50 -1.8375 .6000 .5758
- .60 -2.00 .75 -1.7563 .6000 .3839
- .60 -2.00 1.00 -1.6751 .6000 .2879
- .60 -2.00 1.25 -1.5939 .6000 .2303
- .60 -2.00 1.50 -1.5126 .6000 .1919
- .60 -1.00 .50 -.8375 .6000 .5758
- .60 -1.00 .75 -.7563 .6000 .3839
- .60 -1.00 1.00 -.6751 .6000 .2879
- .60 -1.00 1.25 -.5939 .6000 .2303
- .60 -1.00 1.50 -.5126 .6000 .1919
- .60 .00 .50 .1625 .6000 .5758
- .60 .00 .75 .2437 .6000 .3839
- .60 .00 1.00 .3249 .6000 .2879
- .60 .00 1.25 .4061 .6000 .2303
- .60 .00 1.50 .4874 .6000 .1919
- .60 1.00 .50 1.1625 .6000 .5758
- .60 1.00 .75 1.2437 .6000 .3839
- .60 1.00 1.00 1.3249 .6000 .2879
- .60 1.00 1.25 1.4061 .6000 .2303
- .60 1.00 1.50 1.4874 .6000 .1919
- .60 2.00 .50 2.1625 .6000 .5758
- .60 2.00 .75 2.2437 .6000 .3839
- .60 2.00 1.00 2.3249 .6000 .2879
- .60 2.00 1.25 2.4061 .6000 .2303
- .60 2.00 1.50 2.4874 .6000 .1919
- .60 3.00 .50 3.1625 .6000 .5758
- .60 3.00 .75 3.2437 .6000 .3839
- .60 3.00 1.00 3.3249 .6000 .2879
- .60 3.00 1.25 3.4061 .6000 .2303
- .60 3.00 1.50 3.4874 .6000 .1919
- .60 4.00 .50 4.1625 .6000 .5758
- .60 4.00 .75 4.2437 .6000 .3839
- .60 4.00 1.00 4.3249 .6000 .2879
- .60 4.00 1.25 4.4061 .6000 .2303
- .60 4.00 1.50 4.4874 .6000 .1919
- .60 5.00 .50 5.1625 .6000 .5758
- .60 5.00 .75 5.2437 .6000 .3839
- .60 5.00 1.00 5.3249 .6000 .2879
- .60 5.00 1.25 5.4061 .6000 .2303
- .60 5.00 1.50 5.4874 .6000 .1919
- .70 -5.00 .50 -4.6367 .7000 .4167
- .70 -5.00 .75 -4.4551 .7000 .2778
- .70 -5.00 1.00 -4.2735 .7000 .2083
- .70 -5.00 1.25 -4.0918 .7000 .1667
- .70 -5.00 1.50 -3.9102 .7000 .1389
- .70 -4.00 .50 -3.6367 .7000 .4167
- .70 -4.00 .75 -3.4551 .7000 .2778
- .70 -4.00 1.00 -3.2735 .7000 .2083
- .70 -4.00 1.25 -3.0918 .7000 .1667
- .70 -4.00 1.50 -2.9102 .7000 .1389
- .70 -3.00 .50 -2.6367 .7000 .4167
- .70 -3.00 .75 -2.4551 .7000 .2778
- .70 -3.00 1.00 -2.2735 .7000 .2083
- .70 -3.00 1.25 -2.0918 .7000 .1667
- .70 -3.00 1.50 -1.9102 .7000 .1389
- .70 -2.00 .50 -1.6367 .7000 .4167
- .70 -2.00 .75 -1.4551 .7000 .2778
- .70 -2.00 1.00 -1.2735 .7000 .2083
- .70 -2.00 1.25 -1.0918 .7000 .1667
- .70 -2.00 1.50 -.9102 .7000 .1389
- .70 -1.00 .50 -.6367 .7000 .4167
- .70 -1.00 .75 -.4551 .7000 .2778
- .70 -1.00 1.00 -.2735 .7000 .2083
- .70 -1.00 1.25 -.0918 .7000 .1667
- .70 -1.00 1.50 .0898 .7000 .1389
- .70 .00 .50 .3633 .7000 .4167
- .70 .00 .75 .5449 .7000 .2778
- .70 .00 1.00 .7265 .7000 .2083
- .70 .00 1.25 .9082 .7000 .1667
- .70 .00 1.50 1.0898 .7000 .1389
- .70 1.00 .50 1.3633 .7000 .4167
- .70 1.00 .75 1.5449 .7000 .2778
- .70 1.00 1.00 1.7265 .7000 .2083
- .70 1.00 1.25 1.9082 .7000 .1667
- .70 1.00 1.50 2.0898 .7000 .1389
- .70 2.00 .50 2.3633 .7000 .4167
- .70 2.00 .75 2.5449 .7000 .2778
- .70 2.00 1.00 2.7265 .7000 .2083
- .70 2.00 1.25 2.9082 .7000 .1667
- .70 2.00 1.50 3.0898 .7000 .1389
- .70 3.00 .50 3.3633 .7000 .4167
- .70 3.00 .75 3.5449 .7000 .2778
- .70 3.00 1.00 3.7265 .7000 .2083
- .70 3.00 1.25 3.9082 .7000 .1667
- .70 3.00 1.50 4.0898 .7000 .1389
- .70 4.00 .50 4.3633 .7000 .4167
- .70 4.00 .75 4.5449 .7000 .2778
- .70 4.00 1.00 4.7265 .7000 .2083
- .70 4.00 1.25 4.9082 .7000 .1667
- .70 4.00 1.50 5.0898 .7000 .1389
- .70 5.00 .50 5.3633 .7000 .4167
- .70 5.00 .75 5.5449 .7000 .2778
- .70 5.00 1.00 5.7265 .7000 .2083
- .70 5.00 1.25 5.9082 .7000 .1667
- .70 5.00 1.50 6.0898 .7000 .1389
- .80 -5.00 .50 -4.3118 .8000 .2199
- .80 -5.00 .75 -3.9677 .8000 .1466
- .80 -5.00 1.00 -3.6236 .8000 .1100
- .80 -5.00 1.25 -3.2795 .8000 .0880
- .80 -5.00 1.50 -2.9354 .8000 .0733
- .80 -4.00 .50 -3.3118 .8000 .2199
- .80 -4.00 .75 -2.9677 .8000 .1466
- .80 -4.00 1.00 -2.6236 .8000 .1100
- .80 -4.00 1.25 -2.2795 .8000 .0880
- .80 -4.00 1.50 -1.9354 .8000 .0733
- .80 -3.00 .50 -2.3118 .8000 .2199
- .80 -3.00 .75 -1.9677 .8000 .1466
- .80 -3.00 1.00 -1.6236 .8000 .1100
- .80 -3.00 1.25 -1.2795 .8000 .0880
- .80 -3.00 1.50 -.9354 .8000 .0733
- .80 -2.00 .50 -1.3118 .8000 .2199
- .80 -2.00 .75 -.9677 .8000 .1466
- .80 -2.00 1.00 -.6236 .8000 .1100
- .80 -2.00 1.25 -.2795 .8000 .0880
- .80 -2.00 1.50 .0646 .8000 .0733
- .80 -1.00 .50 -.3118 .8000 .2199
- .80 -1.00 .75 .0323 .8000 .1466
- .80 -1.00 1.00 .3764 .8000 .1100
- .80 -1.00 1.25 .7205 .8000 .0880
- .80 -1.00 1.50 1.0646 .8000 .0733
- .80 .00 .50 .6882 .8000 .2199
- .80 .00 .75 1.0323 .8000 .1466
- .80 .00 1.00 1.3764 .8000 .1100
- .80 .00 1.25 1.7205 .8000 .0880
- .80 .00 1.50 2.0646 .8000 .0733
- .80 1.00 .50 1.6882 .8000 .2199
- .80 1.00 .75 2.0323 .8000 .1466
- .80 1.00 1.00 2.3764 .8000 .1100
- .80 1.00 1.25 2.7205 .8000 .0880
- .80 1.00 1.50 3.0646 .8000 .0733
- .80 2.00 .50 2.6882 .8000 .2199
- .80 2.00 .75 3.0323 .8000 .1466
- .80 2.00 1.00 3.3764 .8000 .1100
- .80 2.00 1.25 3.7205 .8000 .0880
- .80 2.00 1.50 4.0646 .8000 .0733
- .80 3.00 .50 3.6882 .8000 .2199
- .80 3.00 .75 4.0323 .8000 .1466
- .80 3.00 1.00 4.3764 .8000 .1100
- .80 3.00 1.25 4.7205 .8000 .0880
- .80 3.00 1.50 5.0646 .8000 .0733
- .80 4.00 .50 4.6882 .8000 .2199
- .80 4.00 .75 5.0323 .8000 .1466
- .80 4.00 1.00 5.3764 .8000 .1100
- .80 4.00 1.25 5.7205 .8000 .0880
- .80 4.00 1.50 6.0646 .8000 .0733
- .80 5.00 .50 5.6882 .8000 .2199
- .80 5.00 .75 6.0323 .8000 .1466
- .80 5.00 1.00 6.3764 .8000 .1100
- .80 5.00 1.25 6.7205 .8000 .0880
- .80 5.00 1.50 7.0646 .8000 .0733
- .90 -5.00 .50 -3.4612 .9000 .0608
- .90 -5.00 .75 -2.6917 .9000 .0405
- .90 -5.00 1.00 -1.9223 .9000 .0304
- .90 -5.00 1.25 -1.1529 .9000 .0243
- .90 -5.00 1.50 -.3835 .9000 .0203
- .90 -4.00 .50 -2.4612 .9000 .0608
- .90 -4.00 .75 -1.6917 .9000 .0405
- .90 -4.00 1.00 -.9223 .9000 .0304
- .90 -4.00 1.25 -.1529 .9000 .0243
- .90 -4.00 1.50 .6165 .9000 .0203
- .90 -3.00 .50 -1.4612 .9000 .0608
- .90 -3.00 .75 -.6917 .9000 .0405
- .90 -3.00 1.00 .0777 .9000 .0304
- .90 -3.00 1.25 .8471 .9000 .0243
- .90 -3.00 1.50 1.6165 .9000 .0203
- .90 -2.00 .50 -.4612 .9000 .0608
- .90 -2.00 .75 .3083 .9000 .0405
- .90 -2.00 1.00 1.0777 .9000 .0304
- .90 -2.00 1.25 1.8471 .9000 .0243
- .90 -2.00 1.50 2.6165 .9000 .0203
- .90 -1.00 .50 .5388 .9000 .0608
- .90 -1.00 .75 1.3083 .9000 .0405
- .90 -1.00 1.00 2.0777 .9000 .0304
- .90 -1.00 1.25 2.8471 .9000 .0243
- .90 -1.00 1.50 3.6165 .9000 .0203
- .90 .00 .50 1.5388 .9000 .0608
- .90 .00 .75 2.3083 .9000 .0405
- .90 .00 1.00 3.0777 .9000 .0304
- .90 .00 1.25 3.8471 .9000 .0243
- .90 .00 1.50 4.6165 .9000 .0203
- .90 1.00 .50 2.5388 .9000 .0608
- .90 1.00 .75 3.3083 .9000 .0405
- .90 1.00 1.00 4.0777 .9000 .0304
- .90 1.00 1.25 4.8471 .9000 .0243
- .90 1.00 1.50 5.6165 .9000 .0203
- .90 2.00 .50 3.5388 .9000 .0608
- .90 2.00 .75 4.3083 .9000 .0405
- .90 2.00 1.00 5.0777 .9000 .0304
- .90 2.00 1.25 5.8471 .9000 .0243
- .90 2.00 1.50 6.6165 .9000 .0203
- .90 3.00 .50 4.5388 .9000 .0608
- .90 3.00 .75 5.3083 .9000 .0405
- .90 3.00 1.00 6.0777 .9000 .0304
- .90 3.00 1.25 6.8471 .9000 .0243
- .90 3.00 1.50 7.6165 .9000 .0203
- .90 4.00 .50 5.5388 .9000 .0608
- .90 4.00 .75 6.3083 .9000 .0405
- .90 4.00 1.00 7.0777 .9000 .0304
- .90 4.00 1.25 7.8471 .9000 .0243
- .90 4.00 1.50 8.6165 .9000 .0203
- .90 5.00 .50 6.5388 .9000 .0608
- .90 5.00 .75 7.3083 .9000 .0405
- .90 5.00 1.00 8.0777 .9000 .0304
- .90 5.00 1.25 8.8471 .9000 .0243
- .90 5.00 1.50 9.6165 .9000 .0203
- .99 -5.00 .50 10.9103 .9900 .0006
- .99 -5.00 .75 18.8654 .9900 .0004
- .99 -5.00 1.00 26.8205 .9900 .0003
- .99 -5.00 1.25 34.7756 .9900 .0003
- .99 -5.00 1.50 42.7308 .9900 .0002
- .99 -4.00 .50 11.9103 .9900 .0006
- .99 -4.00 .75 19.8654 .9900 .0004
- .99 -4.00 1.00 27.8205 .9900 .0003
- .99 -4.00 1.25 35.7756 .9900 .0003
- .99 -4.00 1.50 43.7308 .9900 .0002
- .99 -3.00 .50 12.9103 .9900 .0006
- .99 -3.00 .75 20.8654 .9900 .0004
- .99 -3.00 1.00 28.8205 .9900 .0003
- .99 -3.00 1.25 36.7756 .9900 .0003
- .99 -3.00 1.50 44.7308 .9900 .0002
- .99 -2.00 .50 13.9103 .9900 .0006
- .99 -2.00 .75 21.8654 .9900 .0004
- .99 -2.00 1.00 29.8205 .9900 .0003
- .99 -2.00 1.25 37.7756 .9900 .0003
- .99 -2.00 1.50 45.7308 .9900 .0002
- .99 -1.00 .50 14.9103 .9900 .0006
- .99 -1.00 .75 22.8654 .9900 .0004
- .99 -1.00 1.00 30.8205 .9900 .0003
- .99 -1.00 1.25 38.7756 .9900 .0003
- .99 -1.00 1.50 46.7308 .9900 .0002
- .99 .00 .50 15.9103 .9900 .0006
- .99 .00 .75 23.8654 .9900 .0004
- .99 .00 1.00 31.8205 .9900 .0003
- .99 .00 1.25 39.7756 .9900 .0003
- .99 .00 1.50 47.7308 .9900 .0002
- .99 1.00 .50 16.9103 .9900 .0006
- .99 1.00 .75 24.8654 .9900 .0004
- .99 1.00 1.00 32.8205 .9900 .0003
- .99 1.00 1.25 40.7756 .9900 .0003
- .99 1.00 1.50 48.7308 .9900 .0002
- .99 2.00 .50 17.9103 .9900 .0006
- .99 2.00 .75 25.8654 .9900 .0004
- .99 2.00 1.00 33.8205 .9900 .0003
- .99 2.00 1.25 41.7756 .9900 .0003
- .99 2.00 1.50 49.7308 .9900 .0002
- .99 3.00 .50 18.9103 .9900 .0006
- .99 3.00 .75 26.8654 .9900 .0004
- .99 3.00 1.00 34.8205 .9900 .0003
- .99 3.00 1.25 42.7756 .9900 .0003
- .99 3.00 1.50 50.7308 .9900 .0002
- .99 4.00 .50 19.9103 .9900 .0006
- .99 4.00 .75 27.8654 .9900 .0004
- .99 4.00 1.00 35.8205 .9900 .0003
- .99 4.00 1.25 43.7756 .9900 .0003
- .99 4.00 1.50 51.7308 .9900 .0002
- .99 5.00 .50 20.9103 .9900 .0006
- .99 5.00 .75 28.8654 .9900 .0004
- .99 5.00 1.00 36.8205 .9900 .0003
- .99 5.00 1.25 44.7756 .9900 .0003
- .99 5.00 1.50 52.7308 .9900 .0002
+++ /dev/null
- P df x cdf pdf sig
- .01 1.00 .0002 .0100 31.8277 .9900
- .01 2.00 .0201 .0100 .4950 .9900
- .01 5.00 .5543 .0100 .0416 .9900
- .01 10.00 2.5582 .0100 .0155 .9900
- .10 1.00 .0158 .1000 3.1498 .9000
- .10 2.00 .2107 .1000 .4500 .9000
- .10 5.00 1.6103 .1000 .1215 .9000
- .10 10.00 4.8652 .1000 .0641 .9000
- .20 1.00 .0642 .2000 1.5250 .8000
- .20 2.00 .4463 .2000 .4000 .8000
- .20 5.00 2.3425 .2000 .1478 .8000
- .20 10.00 6.1791 .2000 .0864 .8000
- .30 1.00 .1485 .3000 .9613 .7000
- .30 2.00 .7133 .3000 .3500 .7000
- .30 5.00 2.9999 .3000 .1542 .7000
- .30 10.00 7.2672 .3000 .0960 .7000
- .40 1.00 .2750 .4000 .6630 .6000
- .40 2.00 1.0217 .4000 .3000 .6000
- .40 5.00 3.6555 .4000 .1494 .6000
- .40 10.00 8.2955 .4000 .0974 .6000
- .50 1.00 .4549 .5000 .4711 .5000
- .50 2.00 1.3863 .5000 .2500 .5000
- .50 5.00 4.3515 .5000 .1370 .5000
- .50 10.00 9.3418 .5000 .0929 .5000
- .60 1.00 .7083 .6000 .3326 .4000
- .60 2.00 1.8326 .6000 .2000 .4000
- .60 5.00 5.1319 .6000 .1188 .4000
- .60 10.00 10.4732 .6000 .0833 .4000
- .70 1.00 1.0742 .7000 .2250 .3000
- .70 2.00 2.4079 .7000 .1500 .3000
- .70 5.00 6.0644 .7000 .0957 .3000
- .70 10.00 11.7807 .7000 .0694 .3000
- .80 1.00 1.6424 .8000 .1369 .2000
- .80 2.00 3.2189 .8000 .1000 .2000
- .80 5.00 7.2893 .8000 .0684 .2000
- .80 10.00 13.4420 .8000 .0512 .2000
- .90 1.00 2.7055 .9000 .0627 .1000
- .90 2.00 4.6052 .9000 .0500 .1000
- .90 5.00 9.2364 .9000 .0368 .1000
- .90 10.00 15.9872 .9000 .0287 .1000
- .99 1.00 6.6349 .9900 .0056 .0100
- .99 2.00 9.2103 .9900 .0050 .0100
- .99 5.00 15.0863 .9900 .0041 .0100
- .99 10.00 23.2093 .9900 .0034 .0100
+++ /dev/null
-#! /usr/bin/perl -w
-
-use strict;
-use warnings 'all';
-
-my ($epsilon) = 1;
-
-open (EXPECTED, '<', $ARGV[0]) or die "$ARGV[0]: open: $!\n";
-open (ACTUAL, '<', $ARGV[1]) or die "$ARGV[1]: open: $!\n";
-
-my ($errors) = 0;
-LINE: for (;;) {
- my $a = <EXPECTED>;
- my $b = <ACTUAL>;
-
- last if !defined $a && !defined $b;
- die "$ARGV[0]:$.: unexpected end of file\n" if !defined $a;
- die "$ARGV[1]:$.: unexpected end of file\n" if !defined $b;
-
- my (@a) = split (' ', $a);
- my (@b) = split (' ', $b);
- die "$ARGV[1]:$.: contains ". scalar (@b) . " fields but should "
- . "contain " . scalar (@a) . "\n"
- if $#a != $#b;
- foreach my $i (0...$#a) {
- die "$ARGV[1]:$.: unexpected number of decimals\n"
- if count_decimals ($a[$i]) != count_decimals ($b[$i]);
-
- my ($an) = to_int ($a[$i]);
- my ($bn) = to_int ($b[$i]);
- if ($an ne $bn && ($bn < $an - $epsilon || $bn > $an + $epsilon)) {
- $errors++;
- if ($errors > 5) {
- print "$ARGV[1]: Additional differences suppressed.\n";
- last LINE;
- }
- print "$ARGV[1]:$.: Values differ from $ARGV[0]:$.\n";
- print "Expected:\n", $a;
- print "Calculated:\n", $b;
- }
- }
-}
-exit ($errors > 0);
-
-sub count_decimals {
- my ($s) = @_;
- return length (substr ($s, index ($s, '.')));
-}
-
-sub to_int {
- local ($_) = @_;
- s/\.//;
- return $_;
-}
+++ /dev/null
- P a x cdf pdf
- .01 1.00 .0101 .0100 .9900
- .01 2.00 .0050 .0100 1.9800
- .01 5.00 .0020 .0100 4.9500
- .01 10.00 .0010 .0100 9.9000
- .10 1.00 .1054 .1000 .9000
- .10 2.00 .0527 .1000 1.8000
- .10 5.00 .0211 .1000 4.5000
- .10 10.00 .0105 .1000 9.0000
- .20 1.00 .2231 .2000 .8000
- .20 2.00 .1116 .2000 1.6000
- .20 5.00 .0446 .2000 4.0000
- .20 10.00 .0223 .2000 8.0000
- .30 1.00 .3567 .3000 .7000
- .30 2.00 .1783 .3000 1.4000
- .30 5.00 .0713 .3000 3.5000
- .30 10.00 .0357 .3000 7.0000
- .40 1.00 .5108 .4000 .6000
- .40 2.00 .2554 .4000 1.2000
- .40 5.00 .1022 .4000 3.0000
- .40 10.00 .0511 .4000 6.0000
- .50 1.00 .6931 .5000 .5000
- .50 2.00 .3466 .5000 1.0000
- .50 5.00 .1386 .5000 2.5000
- .50 10.00 .0693 .5000 5.0000
- .60 1.00 .9163 .6000 .4000
- .60 2.00 .4581 .6000 .8000
- .60 5.00 .1833 .6000 2.0000
- .60 10.00 .0916 .6000 4.0000
- .70 1.00 1.2040 .7000 .3000
- .70 2.00 .6020 .7000 .6000
- .70 5.00 .2408 .7000 1.5000
- .70 10.00 .1204 .7000 3.0000
- .80 1.00 1.6094 .8000 .2000
- .80 2.00 .8047 .8000 .4000
- .80 5.00 .3219 .8000 1.0000
- .80 10.00 .1609 .8000 2.0000
- .90 1.00 2.3026 .9000 .1000
- .90 2.00 1.1513 .9000 .2000
- .90 5.00 .4605 .9000 .5000
- .90 10.00 .2303 .9000 1.0000
- .99 1.00 4.6052 .9900 .0100
- .99 2.00 2.3026 .9900 .0200
- .99 5.00 .9210 .9900 .0500
- .99 10.00 .4605 .9900 .1000
+++ /dev/null
- P df1 df2 x cdf pdf
- .01 1.00 1.00 .0002 .0100 20.2576
- .01 1.00 2.00 .0002 .0100 24.9950
- .01 1.00 5.00 .0002 .0100 28.8162
- .01 1.00 10.00 .0002 .0100 30.2774
- .01 2.00 1.00 .0102 .0100 .9703
- .01 2.00 2.00 .0101 .0100 .9801
- .01 2.00 5.00 .0101 .0100 .9860
- .01 2.00 10.00 .0101 .0100 .9880
- .01 5.00 1.00 .0615 .0100 .3238
- .01 5.00 2.00 .0753 .0100 .2793
- .01 5.00 5.00 .0912 .0100 .2417
- .01 5.00 10.00 .0995 .0100 .2261
- .01 10.00 1.00 .0996 .0100 .2704
- .01 10.00 2.00 .1323 .0100 .2275
- .01 10.00 5.00 .1774 .0100 .1907
- .01 10.00 10.00 .2062 .0100 .1747
- .10 1.00 1.00 .0251 .1000 1.9605
- .10 1.00 2.00 .0202 .1000 2.4503
- .10 1.00 5.00 .0175 .1000 2.8421
- .10 1.00 10.00 .0166 .1000 2.9915
- .10 2.00 1.00 .1173 .1000 .7290
- .10 2.00 2.00 .1111 .1000 .8100
- .10 2.00 5.00 .1076 .1000 .8629
- .10 2.00 10.00 .1065 .1000 .8812
- .10 5.00 1.00 .2463 .1000 .5220
- .10 5.00 2.00 .2646 .1000 .5687
- .10 5.00 5.00 .2896 .1000 .5934
- .10 5.00 10.00 .3033 .1000 .6006
- .10 10.00 1.00 .3044 .1000 .4857
- .10 10.00 2.00 .3419 .1000 .5396
- .10 10.00 5.00 .3966 .1000 .5816
- .10 10.00 10.00 .4306 .1000 .6031
- .20 1.00 1.00 .1056 .2000 .8861
- .20 1.00 2.00 .0833 .2000 1.1520
- .20 1.00 5.00 .0714 .2000 1.3616
- .20 1.00 10.00 .0677 .2000 1.4410
- .20 2.00 1.00 .2812 .2000 .5120
- .20 2.00 2.00 .2500 .2000 .6400
- .20 2.00 5.00 .2334 .2000 .7317
- .20 2.00 10.00 .2282 .2000 .7651
- .20 5.00 1.00 .4591 .2000 .4124
- .20 5.00 2.00 .4426 .2000 .5362
- .20 5.00 5.00 .4489 .2000 .6397
- .20 5.00 10.00 .4563 .2000 .6842
- .20 10.00 1.00 .5311 .2000 .3893
- .20 10.00 2.00 .5267 .2000 .5225
- .20 10.00 5.00 .5547 .2000 .6584
- .20 10.00 10.00 .5775 .2000 .7343
- .30 1.00 1.00 .2596 .3000 .4960
- .30 1.00 2.00 .1978 .3000 .6901
- .30 1.00 5.00 .1667 .3000 .8428
- .30 1.00 10.00 .1573 .3000 .9004
- .30 2.00 1.00 .5204 .3000 .3430
- .30 2.00 2.00 .4286 .3000 .4900
- .30 2.00 5.00 .3834 .3000 .6069
- .30 2.00 10.00 .3697 .3000 .6518
- .30 5.00 1.00 .7486 .3000 .2880
- .30 5.00 2.00 .6466 .3000 .4433
- .30 5.00 5.00 .6094 .3000 .5984
- .30 5.00 10.00 .6026 .3000 .6729
- .30 10.00 1.00 .8370 .3000 .2732
- .30 10.00 2.00 .7346 .3000 .4370
- .30 10.00 5.00 .7085 .3000 .6313
- .30 10.00 10.00 .7112 .3000 .7487
- .40 1.00 1.00 .5279 .4000 .2868
- .40 1.00 2.00 .3810 .4000 .4410
- .40 1.00 5.00 .3130 .4000 .5656
- .40 1.00 10.00 .2933 .4000 .6129
- .40 2.00 1.00 .8889 .4000 .2160
- .40 2.00 2.00 .6667 .4000 .3600
- .40 2.00 5.00 .5668 .4000 .4891
- .40 2.00 10.00 .5378 .4000 .5417
- .40 5.00 1.00 1.1826 .4000 .1847
- .40 5.00 2.00 .9035 .4000 .3396
- .40 5.00 5.00 .7879 .4000 .5199
- .40 5.00 10.00 .7573 .4000 .6147
- .40 10.00 1.00 1.2941 .4000 .1755
- .40 10.00 2.00 .9944 .4000 .3368
- .40 10.00 5.00 .8763 .4000 .5572
- .40 10.00 10.00 .8484 .4000 .7011
- .50 1.00 1.00 1.0000 .5000 .1592
- .50 1.00 2.00 .6667 .5000 .2813
- .50 1.00 5.00 .5281 .5000 .3865
- .50 1.00 10.00 .4897 .5000 .4274
- .50 2.00 1.00 1.5000 .5000 .1250
- .50 2.00 2.00 1.0000 .5000 .2500
- .50 2.00 5.00 .7988 .5000 .3789
- .50 2.00 10.00 .7435 .5000 .4353
- .50 5.00 1.00 1.8937 .5000 .1078
- .50 5.00 2.00 1.2519 .5000 .2418
- .50 5.00 5.00 1.0000 .5000 .4244
- .50 5.00 10.00 .9319 .5000 .5295
- .50 10.00 1.00 2.0419 .5000 .1025
- .50 10.00 2.00 1.3450 .5000 .2406
- .50 10.00 5.00 1.0730 .5000 .4599
- .50 10.00 10.00 1.0000 .5000 .6152
- .60 1.00 1.00 1.8944 .6000 .0799
- .60 1.00 2.00 1.1250 .6000 .1707
- .60 1.00 5.00 .8456 .6000 .2583
- .60 1.00 10.00 .7727 .6000 .2939
- .60 2.00 1.00 2.6250 .6000 .0640
- .60 2.00 2.00 1.5000 .6000 .1600
- .60 2.00 5.00 1.1067 .6000 .2773
- .60 2.00 10.00 1.0056 .6000 .3330
- .60 5.00 1.00 3.1953 .6000 .0554
- .60 5.00 2.00 1.7644 .6000 .1571
- .60 5.00 5.00 1.2692 .6000 .3227
- .60 5.00 10.00 1.1412 .6000 .4278
- .60 10.00 1.00 3.4100 .6000 .0527
- .60 10.00 2.00 1.8593 .6000 .1567
- .60 10.00 5.00 1.3204 .6000 .3526
- .60 10.00 10.00 1.1787 .6000 .5047
- .70 1.00 1.00 3.8518 .7000 .0334
- .70 1.00 2.00 1.9216 .7000 .0929
- .70 1.00 5.00 1.3358 .7000 .1614
- .70 1.00 10.00 1.1948 .7000 .1914
- .70 2.00 1.00 5.0556 .7000 .0270
- .70 2.00 2.00 2.3333 .7000 .0900
- .70 2.00 5.00 1.5466 .7000 .1853
- .70 2.00 10.00 1.3613 .7000 .2358
- .70 5.00 1.00 6.0006 .7000 .0234
- .70 5.00 2.00 2.6084 .7000 .0892
- .70 5.00 5.00 1.6410 .7000 .2222
- .70 5.00 10.00 1.4114 .7000 .3169
- .70 10.00 1.00 6.3579 .7000 .0223
- .70 10.00 2.00 2.7049 .7000 .0891
- .70 10.00 5.00 1.6595 .7000 .2443
- .70 10.00 10.00 1.4061 .7000 .3787
- .80 1.00 1.00 9.4721 .8000 .0099
- .80 1.00 2.00 3.5556 .8000 .0405
- .80 1.00 5.00 2.1782 .8000 .0869
- .80 1.00 10.00 1.8829 .8000 .1098
- .80 2.00 1.00 12.0000 .8000 .0080
- .80 2.00 2.00 4.0000 .8000 .0400
- .80 2.00 5.00 2.2591 .8000 .1051
- .80 2.00 10.00 1.8986 .8000 .1450
- .80 5.00 1.00 14.0084 .8000 .0069
- .80 5.00 2.00 4.2844 .8000 .0399
- .80 5.00 5.00 2.2275 .8000 .1289
- .80 5.00 10.00 1.8027 .8000 .2026
- .80 10.00 1.00 14.7719 .8000 .0066
- .80 10.00 2.00 4.3822 .8000 .0398
- .80 10.00 5.00 2.1914 .8000 .1425
- .80 10.00 10.00 1.7316 .8000 .2449
- .90 1.00 1.00 39.8635 .9000 .0012
- .90 1.00 2.00 8.5263 .9000 .0100
- .90 1.00 5.00 4.0604 .9000 .0317
- .90 1.00 10.00 3.2850 .9000 .0450
- .90 2.00 1.00 49.5000 .9000 .0010
- .90 2.00 2.00 9.0000 .9000 .0100
- .90 2.00 5.00 3.7797 .9000 .0398
- .90 2.00 10.00 2.9245 .9000 .0631
- .90 5.00 1.00 57.2401 .9000 .0009
- .90 5.00 2.00 9.2926 .9000 .0100
- .90 5.00 5.00 3.4530 .9000 .0498
- .90 5.00 10.00 2.5216 .9000 .0915
- .90 10.00 1.00 60.1950 .9000 .0008
- .90 10.00 2.00 9.3916 .9000 .0100
- .90 10.00 5.00 3.2974 .9000 .0552
- .90 10.00 10.00 2.3226 .9000 .1118
- .99 1.00 1.00 4052.1807 .9900 .0000
- .99 1.00 2.00 98.5025 .9900 .0001
- .99 1.00 5.00 16.2582 .9900 .0012
- .99 1.00 10.00 10.0443 .9900 .0027
- .99 2.00 1.00 4999.5000 .9900 .0000
- .99 2.00 2.00 99.0000 .9900 .0001
- .99 2.00 5.00 13.2739 .9900 .0016
- .99 2.00 10.00 7.5594 .9900 .0040
- .99 5.00 1.00 5763.6496 .9900 .0000
- .99 5.00 2.00 99.2993 .9900 .0001
- .99 5.00 5.00 10.9670 .9900 .0020
- .99 5.00 10.00 5.6363 .9900 .0060
- .99 10.00 1.00 6055.8467 .9900 .0000
- .99 10.00 2.00 99.3992 .9900 .0001
- .99 10.00 5.00 10.0510 .9900 .0022
- .99 10.00 10.00 4.8491 .9900 .0074
+++ /dev/null
- P a b x cdf pdf
- .01 .50 -10.00 . . .
- .01 .50 -5.00 . . .
- .01 .50 .00 . . .
- .01 .50 5.00 .0000 .0100 318.2766
- .01 .50 10.00 .0000 .0100 636.5531
- .01 1.00 -10.00 . . .
- .01 1.00 -5.00 . . .
- .01 1.00 .00 . . .
- .01 1.00 5.00 .0020 .0100 4.9500
- .01 1.00 10.00 .0010 .0100 9.9000
- .01 2.00 -10.00 . . .
- .01 2.00 -5.00 . . .
- .01 2.00 .00 . . .
- .01 2.00 5.00 .0297 .0100 .6402
- .01 2.00 10.00 .0149 .0100 1.2805
- .01 5.00 -10.00 . . .
- .01 5.00 -5.00 . . .
- .01 5.00 .00 . . .
- .01 5.00 5.00 .2558 .0100 .1552
- .01 5.00 10.00 .1279 .0100 .3104
- .10 .50 -10.00 . . .
- .10 .50 -5.00 . . .
- .10 .50 .00 . . .
- .10 .50 5.00 .0016 .1000 31.4977
- .10 .50 10.00 .0008 .1000 62.9955
- .10 1.00 -10.00 . . .
- .10 1.00 -5.00 . . .
- .10 1.00 .00 . . .
- .10 1.00 5.00 .0211 .1000 4.5000
- .10 1.00 10.00 .0105 .1000 9.0000
- .10 2.00 -10.00 . . .
- .10 2.00 -5.00 . . .
- .10 2.00 .00 . . .
- .10 2.00 5.00 .1064 .1000 1.5623
- .10 2.00 10.00 .0532 .1000 3.1246
- .10 5.00 -10.00 . . .
- .10 5.00 -5.00 . . .
- .10 5.00 .00 . . .
- .10 5.00 5.00 .4865 .1000 .6406
- .10 5.00 10.00 .2433 .1000 1.2812
- .20 .50 -10.00 . . .
- .20 .50 -5.00 . . .
- .20 .50 .00 . . .
- .20 .50 5.00 .0064 .2000 15.2495
- .20 .50 10.00 .0032 .2000 30.4991
- .20 1.00 -10.00 . . .
- .20 1.00 -5.00 . . .
- .20 1.00 .00 . . .
- .20 1.00 5.00 .0446 .2000 4.0000
- .20 1.00 10.00 .0223 .2000 8.0000
- .20 2.00 -10.00 . . .
- .20 2.00 -5.00 . . .
- .20 2.00 .00 . . .
- .20 2.00 5.00 .1649 .2000 1.8075
- .20 2.00 10.00 .0824 .2000 3.6150
- .20 5.00 -10.00 . . .
- .20 5.00 -5.00 . . .
- .20 5.00 .00 . . .
- .20 5.00 5.00 .6179 .2000 .8641
- .20 5.00 10.00 .3090 .2000 1.7282
- .30 .50 -10.00 . . .
- .30 .50 -5.00 . . .
- .30 .50 .00 . . .
- .30 .50 5.00 .0148 .3000 9.6128
- .30 .50 10.00 .0074 .3000 19.2255
- .30 1.00 -10.00 . . .
- .30 1.00 -5.00 . . .
- .30 1.00 .00 . . .
- .30 1.00 5.00 .0713 .3000 3.5000
- .30 1.00 10.00 .0357 .3000 7.0000
- .30 2.00 -10.00 . . .
- .30 2.00 -5.00 . . .
- .30 2.00 .00 . . .
- .30 2.00 5.00 .2195 .3000 1.8312
- .30 2.00 10.00 .1097 .3000 3.6625
- .30 5.00 -10.00 . . .
- .30 5.00 -5.00 . . .
- .30 5.00 .00 . . .
- .30 5.00 5.00 .7267 .3000 .9595
- .30 5.00 10.00 .3634 .3000 1.9190
- .40 .50 -10.00 . . .
- .40 .50 -5.00 . . .
- .40 .50 .00 . . .
- .40 .50 5.00 .0275 .4000 6.6303
- .40 .50 10.00 .0137 .4000 13.2606
- .40 1.00 -10.00 . . .
- .40 1.00 -5.00 . . .
- .40 1.00 .00 . . .
- .40 1.00 5.00 .1022 .4000 3.0000
- .40 1.00 10.00 .0511 .4000 6.0000
- .40 2.00 -10.00 . . .
- .40 2.00 -5.00 . . .
- .40 2.00 .00 . . .
- .40 2.00 5.00 .2753 .4000 1.7376
- .40 2.00 10.00 .1376 .4000 3.4752
- .40 5.00 -10.00 . . .
- .40 5.00 -5.00 . . .
- .40 5.00 .00 . . .
- .40 5.00 5.00 .8295 .4000 .9742
- .40 5.00 10.00 .4148 .4000 1.9485
- .50 .50 -10.00 . . .
- .50 .50 -5.00 . . .
- .50 .50 .00 . . .
- .50 .50 5.00 .0455 .5000 4.7114
- .50 .50 10.00 .0227 .5000 9.4227
- .50 1.00 -10.00 . . .
- .50 1.00 -5.00 . . .
- .50 1.00 .00 . . .
- .50 1.00 5.00 .1386 .5000 2.5000
- .50 1.00 10.00 .0693 .5000 5.0000
- .50 2.00 -10.00 . . .
- .50 2.00 -5.00 . . .
- .50 2.00 .00 . . .
- .50 2.00 5.00 .3357 .5000 1.5666
- .50 2.00 10.00 .1678 .5000 3.1332
- .50 5.00 -10.00 . . .
- .50 5.00 -5.00 . . .
- .50 5.00 .00 . . .
- .50 5.00 5.00 .9342 .5000 .9286
- .50 5.00 10.00 .4671 .5000 1.8571
- .60 .50 -10.00 . . .
- .60 .50 -5.00 . . .
- .60 .50 .00 . . .
- .60 .50 5.00 .0708 .6000 3.3265
- .60 .50 10.00 .0354 .6000 6.6529
- .60 1.00 -10.00 . . .
- .60 1.00 -5.00 . . .
- .60 1.00 .00 . . .
- .60 1.00 5.00 .1833 .6000 2.0000
- .60 1.00 10.00 .0916 .6000 4.0000
- .60 2.00 -10.00 . . .
- .60 2.00 -5.00 . . .
- .60 2.00 .00 . . .
- .60 2.00 5.00 .4045 .6000 1.3383
- .60 2.00 10.00 .2022 .6000 2.6765
- .60 5.00 -10.00 . . .
- .60 5.00 -5.00 . . .
- .60 5.00 .00 . . .
- .60 5.00 5.00 1.0473 .6000 .8332
- .60 5.00 10.00 .5237 .6000 1.6663
- .70 .50 -10.00 . . .
- .70 .50 -5.00 . . .
- .70 .50 .00 . . .
- .70 .50 5.00 .1074 .7000 2.2496
- .70 .50 10.00 .0537 .7000 4.4993
- .70 1.00 -10.00 . . .
- .70 1.00 -5.00 . . .
- .70 1.00 .00 . . .
- .70 1.00 5.00 .2408 .7000 1.5000
- .70 1.00 10.00 .1204 .7000 3.0000
- .70 2.00 -10.00 . . .
- .70 2.00 -5.00 . . .
- .70 2.00 .00 . . .
- .70 2.00 5.00 .4878 .7000 1.0639
- .70 2.00 10.00 .2439 .7000 2.1277
- .70 5.00 -10.00 . . .
- .70 5.00 -5.00 . . .
- .70 5.00 .00 . . .
- .70 5.00 5.00 1.1781 .7000 .6937
- .70 5.00 10.00 .5890 .7000 1.3874
- .80 .50 -10.00 . . .
- .80 .50 -5.00 . . .
- .80 .50 .00 . . .
- .80 .50 5.00 .1642 .8000 1.3694
- .80 .50 10.00 .0821 .8000 2.7388
- .80 1.00 -10.00 . . .
- .80 1.00 -5.00 . . .
- .80 1.00 .00 . . .
- .80 1.00 5.00 .3219 .8000 1.0000
- .80 1.00 10.00 .1609 .8000 2.0000
- .80 2.00 -10.00 . . .
- .80 2.00 -5.00 . . .
- .80 2.00 .00 . . .
- .80 2.00 5.00 .5989 .8000 .7496
- .80 2.00 10.00 .2994 .8000 1.4993
- .80 5.00 -10.00 . . .
- .80 5.00 -5.00 . . .
- .80 5.00 .00 . . .
- .80 5.00 5.00 1.3442 .8000 .5124
- .80 5.00 10.00 .6721 .8000 1.0248
- .90 .50 -10.00 . . .
- .90 .50 -5.00 . . .
- .90 .50 .00 . . .
- .90 .50 5.00 .2706 .9000 .6270
- .90 .50 10.00 .1353 .9000 1.2540
- .90 1.00 -10.00 . . .
- .90 1.00 -5.00 . . .
- .90 1.00 .00 . . .
- .90 1.00 5.00 .4605 .9000 .5000
- .90 1.00 10.00 .2303 .9000 1.0000
- .90 2.00 -10.00 . . .
- .90 2.00 -5.00 . . .
- .90 2.00 .00 . . .
- .90 2.00 5.00 .7779 .9000 .3977
- .90 2.00 10.00 .3890 .9000 .7955
- .90 5.00 -10.00 . . .
- .90 5.00 -5.00 . . .
- .90 5.00 .00 . . .
- .90 5.00 5.00 1.5987 .9000 .2872
- .90 5.00 10.00 .7994 .9000 .5744
- .99 .50 -10.00 . . .
- .99 .50 -5.00 . . .
- .99 .50 .00 . . .
- .99 .50 5.00 .6635 .9900 .0561
- .99 .50 10.00 .3317 .9900 .1123
- .99 1.00 -10.00 . . .
- .99 1.00 -5.00 . . .
- .99 1.00 .00 . . .
- .99 1.00 5.00 .9210 .9900 .0500
- .99 1.00 10.00 .4605 .9900 .1000
- .99 2.00 -10.00 . . .
- .99 2.00 -5.00 . . .
- .99 2.00 .00 . . .
- .99 2.00 5.00 1.3277 .9900 .0435
- .99 2.00 10.00 .6638 .9900 .0869
- .99 5.00 -10.00 . . .
- .99 5.00 -5.00 . . .
- .99 5.00 .00 . . .
- .99 5.00 5.00 2.3209 .9900 .0345
- .99 5.00 10.00 1.1605 .9900 .0689
+++ /dev/null
- P a b x cdf pdf
- .01 -10.00 .50 -11.9560 .0100 .0200
- .01 -10.00 1.00 -13.9120 .0100 .0100
- .01 -10.00 2.00 -17.8240 .0100 .0050
- .01 -10.00 5.00 -29.5601 .0100 .0020
- .01 -5.00 .50 -6.9560 .0100 .0200
- .01 -5.00 1.00 -8.9120 .0100 .0100
- .01 -5.00 2.00 -12.8240 .0100 .0050
- .01 -5.00 5.00 -24.5601 .0100 .0020
- .01 .00 .50 -1.9560 .0100 .0200
- .01 .00 1.00 -3.9120 .0100 .0100
- .01 .00 2.00 -7.8240 .0100 .0050
- .01 .00 5.00 -19.5601 .0100 .0020
- .01 5.00 .50 3.0440 .0100 .0200
- .01 5.00 1.00 1.0880 .0100 .0100
- .01 5.00 2.00 -2.8240 .0100 .0050
- .01 5.00 5.00 -14.5601 .0100 .0020
- .01 10.00 .50 8.0440 .0100 .0200
- .01 10.00 1.00 6.0880 .0100 .0100
- .01 10.00 2.00 2.1760 .0100 .0050
- .01 10.00 5.00 -9.5601 .0100 .0020
- .10 -10.00 .50 -10.8047 .1000 .2000
- .10 -10.00 1.00 -11.6094 .1000 .1000
- .10 -10.00 2.00 -13.2189 .1000 .0500
- .10 -10.00 5.00 -18.0472 .1000 .0200
- .10 -5.00 .50 -5.8047 .1000 .2000
- .10 -5.00 1.00 -6.6094 .1000 .1000
- .10 -5.00 2.00 -8.2189 .1000 .0500
- .10 -5.00 5.00 -13.0472 .1000 .0200
- .10 .00 .50 -.8047 .1000 .2000
- .10 .00 1.00 -1.6094 .1000 .1000
- .10 .00 2.00 -3.2189 .1000 .0500
- .10 .00 5.00 -8.0472 .1000 .0200
- .10 5.00 .50 4.1953 .1000 .2000
- .10 5.00 1.00 3.3906 .1000 .1000
- .10 5.00 2.00 1.7811 .1000 .0500
- .10 5.00 5.00 -3.0472 .1000 .0200
- .10 10.00 .50 9.1953 .1000 .2000
- .10 10.00 1.00 8.3906 .1000 .1000
- .10 10.00 2.00 6.7811 .1000 .0500
- .10 10.00 5.00 1.9528 .1000 .0200
- .20 -10.00 .50 -10.4581 .2000 .4000
- .20 -10.00 1.00 -10.9163 .2000 .2000
- .20 -10.00 2.00 -11.8326 .2000 .1000
- .20 -10.00 5.00 -14.5815 .2000 .0400
- .20 -5.00 .50 -5.4581 .2000 .4000
- .20 -5.00 1.00 -5.9163 .2000 .2000
- .20 -5.00 2.00 -6.8326 .2000 .1000
- .20 -5.00 5.00 -9.5815 .2000 .0400
- .20 .00 .50 -.4581 .2000 .4000
- .20 .00 1.00 -.9163 .2000 .2000
- .20 .00 2.00 -1.8326 .2000 .1000
- .20 .00 5.00 -4.5815 .2000 .0400
- .20 5.00 .50 4.5419 .2000 .4000
- .20 5.00 1.00 4.0837 .2000 .2000
- .20 5.00 2.00 3.1674 .2000 .1000
- .20 5.00 5.00 .4185 .2000 .0400
- .20 10.00 .50 9.5419 .2000 .4000
- .20 10.00 1.00 9.0837 .2000 .2000
- .20 10.00 2.00 8.1674 .2000 .1000
- .20 10.00 5.00 5.4185 .2000 .0400
- .30 -10.00 .50 -10.2554 .3000 .6000
- .30 -10.00 1.00 -10.5108 .3000 .3000
- .30 -10.00 2.00 -11.0217 .3000 .1500
- .30 -10.00 5.00 -12.5541 .3000 .0600
- .30 -5.00 .50 -5.2554 .3000 .6000
- .30 -5.00 1.00 -5.5108 .3000 .3000
- .30 -5.00 2.00 -6.0217 .3000 .1500
- .30 -5.00 5.00 -7.5541 .3000 .0600
- .30 .00 .50 -.2554 .3000 .6000
- .30 .00 1.00 -.5108 .3000 .3000
- .30 .00 2.00 -1.0217 .3000 .1500
- .30 .00 5.00 -2.5541 .3000 .0600
- .30 5.00 .50 4.7446 .3000 .6000
- .30 5.00 1.00 4.4892 .3000 .3000
- .30 5.00 2.00 3.9783 .3000 .1500
- .30 5.00 5.00 2.4459 .3000 .0600
- .30 10.00 .50 9.7446 .3000 .6000
- .30 10.00 1.00 9.4892 .3000 .3000
- .30 10.00 2.00 8.9783 .3000 .1500
- .30 10.00 5.00 7.4459 .3000 .0600
- .40 -10.00 .50 -10.1116 .4000 .8000
- .40 -10.00 1.00 -10.2231 .4000 .4000
- .40 -10.00 2.00 -10.4463 .4000 .2000
- .40 -10.00 5.00 -11.1157 .4000 .0800
- .40 -5.00 .50 -5.1116 .4000 .8000
- .40 -5.00 1.00 -5.2231 .4000 .4000
- .40 -5.00 2.00 -5.4463 .4000 .2000
- .40 -5.00 5.00 -6.1157 .4000 .0800
- .40 .00 .50 -.1116 .4000 .8000
- .40 .00 1.00 -.2231 .4000 .4000
- .40 .00 2.00 -.4463 .4000 .2000
- .40 .00 5.00 -1.1157 .4000 .0800
- .40 5.00 .50 4.8884 .4000 .8000
- .40 5.00 1.00 4.7769 .4000 .4000
- .40 5.00 2.00 4.5537 .4000 .2000
- .40 5.00 5.00 3.8843 .4000 .0800
- .40 10.00 .50 9.8884 .4000 .8000
- .40 10.00 1.00 9.7769 .4000 .4000
- .40 10.00 2.00 9.5537 .4000 .2000
- .40 10.00 5.00 8.8843 .4000 .0800
- .50 -10.00 .50 -10.0000 .5000 1.0000
- .50 -10.00 1.00 -10.0000 .5000 .5000
- .50 -10.00 2.00 -10.0000 .5000 .2500
- .50 -10.00 5.00 -10.0000 .5000 .1000
- .50 -5.00 .50 -5.0000 .5000 1.0000
- .50 -5.00 1.00 -5.0000 .5000 .5000
- .50 -5.00 2.00 -5.0000 .5000 .2500
- .50 -5.00 5.00 -5.0000 .5000 .1000
- .50 .00 .50 .0000 .5000 1.0000
- .50 .00 1.00 .0000 .5000 .5000
- .50 .00 2.00 .0000 .5000 .2500
- .50 .00 5.00 .0000 .5000 .1000
- .50 5.00 .50 5.0000 .5000 1.0000
- .50 5.00 1.00 5.0000 .5000 .5000
- .50 5.00 2.00 5.0000 .5000 .2500
- .50 5.00 5.00 5.0000 .5000 .1000
- .50 10.00 .50 10.0000 .5000 1.0000
- .50 10.00 1.00 10.0000 .5000 .5000
- .50 10.00 2.00 10.0000 .5000 .2500
- .50 10.00 5.00 10.0000 .5000 .1000
- .60 -10.00 .50 -9.8884 .6000 .8000
- .60 -10.00 1.00 -9.7769 .6000 .4000
- .60 -10.00 2.00 -9.5537 .6000 .2000
- .60 -10.00 5.00 -8.8843 .6000 .0800
- .60 -5.00 .50 -4.8884 .6000 .8000
- .60 -5.00 1.00 -4.7769 .6000 .4000
- .60 -5.00 2.00 -4.5537 .6000 .2000
- .60 -5.00 5.00 -3.8843 .6000 .0800
- .60 .00 .50 .1116 .6000 .8000
- .60 .00 1.00 .2231 .6000 .4000
- .60 .00 2.00 .4463 .6000 .2000
- .60 .00 5.00 1.1157 .6000 .0800
- .60 5.00 .50 5.1116 .6000 .8000
- .60 5.00 1.00 5.2231 .6000 .4000
- .60 5.00 2.00 5.4463 .6000 .2000
- .60 5.00 5.00 6.1157 .6000 .0800
- .60 10.00 .50 10.1116 .6000 .8000
- .60 10.00 1.00 10.2231 .6000 .4000
- .60 10.00 2.00 10.4463 .6000 .2000
- .60 10.00 5.00 11.1157 .6000 .0800
- .70 -10.00 .50 -9.7446 .7000 .6000
- .70 -10.00 1.00 -9.4892 .7000 .3000
- .70 -10.00 2.00 -8.9783 .7000 .1500
- .70 -10.00 5.00 -7.4459 .7000 .0600
- .70 -5.00 .50 -4.7446 .7000 .6000
- .70 -5.00 1.00 -4.4892 .7000 .3000
- .70 -5.00 2.00 -3.9783 .7000 .1500
- .70 -5.00 5.00 -2.4459 .7000 .0600
- .70 .00 .50 .2554 .7000 .6000
- .70 .00 1.00 .5108 .7000 .3000
- .70 .00 2.00 1.0217 .7000 .1500
- .70 .00 5.00 2.5541 .7000 .0600
- .70 5.00 .50 5.2554 .7000 .6000
- .70 5.00 1.00 5.5108 .7000 .3000
- .70 5.00 2.00 6.0217 .7000 .1500
- .70 5.00 5.00 7.5541 .7000 .0600
- .70 10.00 .50 10.2554 .7000 .6000
- .70 10.00 1.00 10.5108 .7000 .3000
- .70 10.00 2.00 11.0217 .7000 .1500
- .70 10.00 5.00 12.5541 .7000 .0600
- .80 -10.00 .50 -9.5419 .8000 .4000
- .80 -10.00 1.00 -9.0837 .8000 .2000
- .80 -10.00 2.00 -8.1674 .8000 .1000
- .80 -10.00 5.00 -5.4185 .8000 .0400
- .80 -5.00 .50 -4.5419 .8000 .4000
- .80 -5.00 1.00 -4.0837 .8000 .2000
- .80 -5.00 2.00 -3.1674 .8000 .1000
- .80 -5.00 5.00 -.4185 .8000 .0400
- .80 .00 .50 .4581 .8000 .4000
- .80 .00 1.00 .9163 .8000 .2000
- .80 .00 2.00 1.8326 .8000 .1000
- .80 .00 5.00 4.5815 .8000 .0400
- .80 5.00 .50 5.4581 .8000 .4000
- .80 5.00 1.00 5.9163 .8000 .2000
- .80 5.00 2.00 6.8326 .8000 .1000
- .80 5.00 5.00 9.5815 .8000 .0400
- .80 10.00 .50 10.4581 .8000 .4000
- .80 10.00 1.00 10.9163 .8000 .2000
- .80 10.00 2.00 11.8326 .8000 .1000
- .80 10.00 5.00 14.5815 .8000 .0400
- .90 -10.00 .50 -9.1953 .9000 .2000
- .90 -10.00 1.00 -8.3906 .9000 .1000
- .90 -10.00 2.00 -6.7811 .9000 .0500
- .90 -10.00 5.00 -1.9528 .9000 .0200
- .90 -5.00 .50 -4.1953 .9000 .2000
- .90 -5.00 1.00 -3.3906 .9000 .1000
- .90 -5.00 2.00 -1.7811 .9000 .0500
- .90 -5.00 5.00 3.0472 .9000 .0200
- .90 .00 .50 .8047 .9000 .2000
- .90 .00 1.00 1.6094 .9000 .1000
- .90 .00 2.00 3.2189 .9000 .0500
- .90 .00 5.00 8.0472 .9000 .0200
- .90 5.00 .50 5.8047 .9000 .2000
- .90 5.00 1.00 6.6094 .9000 .1000
- .90 5.00 2.00 8.2189 .9000 .0500
- .90 5.00 5.00 13.0472 .9000 .0200
- .90 10.00 .50 10.8047 .9000 .2000
- .90 10.00 1.00 11.6094 .9000 .1000
- .90 10.00 2.00 13.2189 .9000 .0500
- .90 10.00 5.00 18.0472 .9000 .0200
- .99 -10.00 .50 -8.0440 .9900 .0200
- .99 -10.00 1.00 -6.0880 .9900 .0100
- .99 -10.00 2.00 -2.1760 .9900 .0050
- .99 -10.00 5.00 9.5601 .9900 .0020
- .99 -5.00 .50 -3.0440 .9900 .0200
- .99 -5.00 1.00 -1.0880 .9900 .0100
- .99 -5.00 2.00 2.8240 .9900 .0050
- .99 -5.00 5.00 14.5601 .9900 .0020
- .99 .00 .50 1.9560 .9900 .0200
- .99 .00 1.00 3.9120 .9900 .0100
- .99 .00 2.00 7.8240 .9900 .0050
- .99 .00 5.00 19.5601 .9900 .0020
- .99 5.00 .50 6.9560 .9900 .0200
- .99 5.00 1.00 8.9120 .9900 .0100
- .99 5.00 2.00 12.8240 .9900 .0050
- .99 5.00 5.00 24.5601 .9900 .0020
- .99 10.00 .50 11.9560 .9900 .0200
- .99 10.00 1.00 13.9120 .9900 .0100
- .99 10.00 2.00 17.8240 .9900 .0050
- .99 10.00 5.00 29.5601 .9900 .0020
+++ /dev/null
- P z s x cdf pdf
- .01 .50 .50 .1562 .0100 .3412
- .01 .50 1.00 .0488 .0100 .5459
- .01 .50 2.00 .0048 .0100 2.7949
- .01 .50 5.00 .0000 .0100 1200.5834
- .01 1.00 .50 .3125 .0100 .1706
- .01 1.00 1.00 .0977 .0100 .2729
- .01 1.00 2.00 .0095 .0100 1.3975
- .01 1.00 5.00 .0000 .0100 600.2917
- .01 2.00 .50 .6250 .0100 .0853
- .01 2.00 1.00 .1953 .0100 .1365
- .01 2.00 2.00 .0191 .0100 .6987
- .01 2.00 5.00 .0000 .0100 300.1459
- .01 5.00 .50 1.5625 .0100 .0341
- .01 5.00 1.00 .4883 .0100 .0546
- .01 5.00 2.00 .0477 .0100 .2795
- .01 5.00 5.00 .0000 .0100 120.0583
- .10 .50 .50 .2634 .1000 1.3324
- .10 .50 1.00 .1388 .1000 1.2644
- .10 .50 2.00 .0385 .1000 2.2773
- .10 .50 5.00 .0008 .1000 42.5782
- .10 1.00 .50 .5269 .1000 .6662
- .10 1.00 1.00 .2776 .1000 .6322
- .10 1.00 2.00 .0771 .1000 1.1386
- .10 1.00 5.00 .0016 .1000 21.2891
- .10 2.00 .50 1.0538 .1000 .3331
- .10 2.00 1.00 .5552 .1000 .3161
- .10 2.00 2.00 .1541 .1000 .5693
- .10 2.00 5.00 .0033 .1000 10.6445
- .10 5.00 .50 2.6344 .1000 .1332
- .10 5.00 1.00 1.3880 .1000 .1264
- .10 5.00 2.00 .3853 .1000 .2277
- .10 5.00 5.00 .0082 .1000 4.2578
- .20 .50 .50 .3283 .2000 1.7057
- .20 .50 1.00 .2155 .2000 1.2991
- .20 .50 2.00 .0929 .2000 1.5070
- .20 .50 5.00 .0074 .2000 7.5286
- .20 1.00 .50 .6565 .2000 .8529
- .20 1.00 1.00 .4310 .2000 .6495
- .20 1.00 2.00 .1858 .2000 .7535
- .20 1.00 5.00 .0149 .2000 3.7643
- .20 2.00 .50 1.3130 .2000 .4264
- .20 2.00 1.00 .8620 .2000 .3248
- .20 2.00 2.00 .3715 .2000 .3768
- .20 2.00 5.00 .0297 .2000 1.8822
- .20 5.00 .50 3.2826 .2000 .1706
- .20 5.00 1.00 2.1551 .2000 .1299
- .20 5.00 2.00 .9289 .2000 .1507
- .20 5.00 5.00 .0744 .2000 .7529
- .30 .50 .50 .3847 .3000 1.8077
- .30 .50 1.00 .2960 .3000 1.1748
- .30 .50 2.00 .1752 .3000 .9924
- .30 .50 5.00 .0363 .3000 1.9142
- .30 1.00 .50 .7694 .3000 .9039
- .30 1.00 1.00 .5919 .3000 .5874
- .30 1.00 2.00 .3504 .3000 .4962
- .30 1.00 5.00 .0727 .3000 .9571
- .30 2.00 .50 1.5387 .3000 .4519
- .30 2.00 1.00 1.1838 .3000 .2937
- .30 2.00 2.00 .7007 .3000 .2481
- .30 2.00 5.00 .1453 .3000 .4785
- .30 5.00 .50 3.8468 .3000 .1808
- .30 5.00 1.00 2.9596 .3000 .1175
- .30 5.00 2.00 1.7518 .3000 .0992
- .30 5.00 5.00 .3633 .3000 .1914
- .40 .50 .50 .4405 .4000 1.7541
- .40 .50 1.00 .3881 .4000 .9955
- .40 .50 2.00 .3012 .4000 .6412
- .40 .50 5.00 .1409 .4000 .5485
- .40 1.00 .50 .8810 .4000 .8770
- .40 1.00 1.00 .7762 .4000 .4977
- .40 1.00 2.00 .6025 .4000 .3206
- .40 1.00 5.00 .2817 .4000 .2742
- .40 2.00 .50 1.7620 .4000 .4385
- .40 2.00 1.00 1.5524 .4000 .2489
- .40 2.00 2.00 1.2050 .4000 .1603
- .40 2.00 5.00 .5635 .4000 .1371
- .40 5.00 .50 4.4051 .4000 .1754
- .40 5.00 1.00 3.8810 .4000 .0995
- .40 5.00 2.00 3.0124 .4000 .0641
- .40 5.00 5.00 1.4087 .4000 .0548
- .50 .50 .50 .5000 .5000 1.5958
- .50 .50 1.00 .5000 .5000 .7979
- .50 .50 2.00 .5000 .5000 .3989
- .50 .50 5.00 .5000 .5000 .1596
- .50 1.00 .50 1.0000 .5000 .7979
- .50 1.00 1.00 1.0000 .5000 .3989
- .50 1.00 2.00 1.0000 .5000 .1995
- .50 1.00 5.00 1.0000 .5000 .0798
- .50 2.00 .50 2.0000 .5000 .3989
- .50 2.00 1.00 2.0000 .5000 .1995
- .50 2.00 2.00 2.0000 .5000 .0997
- .50 2.00 5.00 2.0000 .5000 .0399
- .50 5.00 .50 5.0000 .5000 .1596
- .50 5.00 1.00 5.0000 .5000 .0798
- .50 5.00 2.00 5.0000 .5000 .0399
- .50 5.00 5.00 5.0000 .5000 .0160
- .60 .50 .50 .5675 .6000 1.3615
- .60 .50 1.00 .6442 .6000 .5998
- .60 .50 2.00 .8299 .6000 .2328
- .60 .50 5.00 1.7746 .6000 .0435
- .60 1.00 .50 1.1350 .6000 .6808
- .60 1.00 1.00 1.2883 .6000 .2999
- .60 1.00 2.00 1.6598 .6000 .1164
- .60 1.00 5.00 3.5492 .6000 .0218
- .60 2.00 .50 2.2701 .6000 .3404
- .60 2.00 1.00 2.5767 .6000 .1499
- .60 2.00 2.00 3.3196 .6000 .0582
- .60 2.00 5.00 7.0985 .6000 .0109
- .60 5.00 .50 5.6752 .6000 .1362
- .60 5.00 1.00 6.4417 .6000 .0600
- .60 5.00 2.00 8.2990 .6000 .0233
- .60 5.00 5.00 17.7462 .6000 .0044
- .70 .50 .50 .6499 .7000 1.0700
- .70 .50 1.00 .8447 .7000 .4116
- .70 .50 2.00 1.4271 .7000 .1218
- .70 .50 5.00 6.8816 .7000 .0101
- .70 1.00 .50 1.2998 .7000 .5350
- .70 1.00 1.00 1.6894 .7000 .2058
- .70 1.00 2.00 2.8542 .7000 .0609
- .70 1.00 5.00 13.7633 .7000 .0051
- .70 2.00 .50 2.5996 .7000 .2675
- .70 2.00 1.00 3.3789 .7000 .1029
- .70 2.00 2.00 5.7085 .7000 .0305
- .70 2.00 5.00 27.5265 .7000 .0025
- .70 5.00 .50 6.4989 .7000 .1070
- .70 5.00 1.00 8.4472 .7000 .0412
- .70 5.00 2.00 14.2711 .7000 .0122
- .70 5.00 5.00 68.8163 .7000 .0010
- .80 .50 .50 .7616 .8000 .7352
- .80 .50 1.00 1.1601 .8000 .2413
- .80 .50 2.00 2.6915 .8000 .0520
- .80 .50 5.00 33.6145 .8000 .0017
- .80 1.00 .50 1.5232 .8000 .3676
- .80 1.00 1.00 2.3201 .8000 .1207
- .80 1.00 2.00 5.3830 .8000 .0260
- .80 1.00 5.00 67.2291 .8000 .0008
- .80 2.00 .50 3.0464 .8000 .1838
- .80 2.00 1.00 4.6403 .8000 .0603
- .80 2.00 2.00 10.7660 .8000 .0130
- .80 2.00 5.00 134.4582 .8000 .0004
- .80 5.00 .50 7.6160 .8000 .0735
- .80 5.00 1.00 11.6006 .8000 .0241
- .80 5.00 2.00 26.9149 .8000 .0052
- .80 5.00 5.00 336.1455 .8000 .0002
- .90 .50 .50 .9490 .9000 .3699
- .90 .50 1.00 1.8011 .9000 .0974
- .90 .50 2.00 6.4880 .9000 .0135
- .90 .50 5.00 303.2661 .9000 .0001
- .90 1.00 .50 1.8980 .9000 .1849
- .90 1.00 1.00 3.6022 .9000 .0487
- .90 1.00 2.00 12.9760 .9000 .0068
- .90 1.00 5.00 606.5322 .9000 .0001
- .90 2.00 .50 3.7959 .9000 .0925
- .90 2.00 1.00 7.2044 .9000 .0244
- .90 2.00 2.00 25.9520 .9000 .0034
- .90 2.00 5.00 1213.0644 .9000 .0000
- .90 5.00 .50 9.4898 .9000 .0370
- .90 5.00 1.00 18.0111 .9000 .0097
- .90 5.00 2.00 64.8801 .9000 .0014
- .90 5.00 5.00 3032.6610 .9000 .0000
- .99 .50 .50 1.6000 .9900 .0333
- .99 .50 1.00 5.1202 .9900 .0052
- .99 .50 2.00 52.4337 .9900 .0003
- .99 .50 5.00 56308.0163 .9900 .0000
- .99 1.00 .50 3.2001 .9900 .0167
- .99 1.00 1.00 10.2405 .9900 .0026
- .99 1.00 2.00 104.8673 .9900 .0001
- .99 1.00 5.00 112616.033 .9900 .0000
- .99 2.00 .50 6.4001 .9900 .0083
- .99 2.00 1.00 20.4809 .9900 .0013
- .99 2.00 2.00 209.7346 .9900 .0001
- .99 2.00 5.00 225232.065 .9900 .0000
- .99 5.00 .50 16.0004 .9900 .0033
- .99 5.00 1.00 51.2024 .9900 .0005
- .99 5.00 2.00 524.3365 .9900 .0000
- .99 5.00 5.00 563080.163 .9900 .0000
+++ /dev/null
- P a b x cdf pdf
- .01 -10.00 .50 -12.2976 .0100 .0198
- .01 -10.00 1.00 -14.5951 .0100 .0099
- .01 -10.00 2.00 -19.1902 .0100 .0049
- .01 -10.00 5.00 -32.9756 .0100 .0020
- .01 -5.00 .50 -7.2976 .0100 .0198
- .01 -5.00 1.00 -9.5951 .0100 .0099
- .01 -5.00 2.00 -14.1902 .0100 .0050
- .01 -5.00 5.00 -27.9756 .0100 .0020
- .01 .00 .50 -2.2976 .0100 .0198
- .01 .00 1.00 -4.5951 .0100 .0099
- .01 .00 2.00 -9.1902 .0100 .0050
- .01 .00 5.00 -22.9756 .0100 .0020
- .01 5.00 .50 2.7024 .0100 .0198
- .01 5.00 1.00 .4049 .0100 .0099
- .01 5.00 2.00 -4.1902 .0100 .0050
- .01 5.00 5.00 -17.9756 .0100 .0020
- .01 10.00 .50 7.7024 .0100 .0198
- .01 10.00 1.00 5.4049 .0100 .0099
- .01 10.00 2.00 .8098 .0100 .0050
- .01 10.00 5.00 -12.9756 .0100 .0020
- .10 -10.00 .50 -11.0986 .1000 .1800
- .10 -10.00 1.00 -12.1972 .1000 .0900
- .10 -10.00 2.00 -14.3944 .1000 .0450
- .10 -10.00 5.00 -20.9861 .1000 .0180
- .10 -5.00 .50 -6.0986 .1000 .1800
- .10 -5.00 1.00 -7.1972 .1000 .0900
- .10 -5.00 2.00 -9.3944 .1000 .0450
- .10 -5.00 5.00 -15.9861 .1000 .0180
- .10 .00 .50 -1.0986 .1000 .1800
- .10 .00 1.00 -2.1972 .1000 .0900
- .10 .00 2.00 -4.3944 .1000 .0450
- .10 .00 5.00 -10.9861 .1000 .0180
- .10 5.00 .50 3.9014 .1000 .1800
- .10 5.00 1.00 2.8028 .1000 .0900
- .10 5.00 2.00 .6056 .1000 .0450
- .10 5.00 5.00 -5.9861 .1000 .0180
- .10 10.00 .50 8.9014 .1000 .1800
- .10 10.00 1.00 7.8028 .1000 .0900
- .10 10.00 2.00 5.6056 .1000 .0450
- .10 10.00 5.00 -.9861 .1000 .0180
- .20 -10.00 .50 -10.6931 .2000 .3200
- .20 -10.00 1.00 -11.3863 .2000 .1600
- .20 -10.00 2.00 -12.7726 .2000 .0800
- .20 -10.00 5.00 -16.9315 .2000 .0320
- .20 -5.00 .50 -5.6931 .2000 .3200
- .20 -5.00 1.00 -6.3863 .2000 .1600
- .20 -5.00 2.00 -7.7726 .2000 .0800
- .20 -5.00 5.00 -11.9315 .2000 .0320
- .20 .00 .50 -.6931 .2000 .3200
- .20 .00 1.00 -1.3863 .2000 .1600
- .20 .00 2.00 -2.7726 .2000 .0800
- .20 .00 5.00 -6.9315 .2000 .0320
- .20 5.00 .50 4.3069 .2000 .3200
- .20 5.00 1.00 3.6137 .2000 .1600
- .20 5.00 2.00 2.2274 .2000 .0800
- .20 5.00 5.00 -1.9315 .2000 .0320
- .20 10.00 .50 9.3069 .2000 .3200
- .20 10.00 1.00 8.6137 .2000 .1600
- .20 10.00 2.00 7.2274 .2000 .0800
- .20 10.00 5.00 3.0685 .2000 .0320
- .30 -10.00 .50 -10.4236 .3000 .4200
- .30 -10.00 1.00 -10.8473 .3000 .2100
- .30 -10.00 2.00 -11.6946 .3000 .1050
- .30 -10.00 5.00 -14.2365 .3000 .0420
- .30 -5.00 .50 -5.4236 .3000 .4200
- .30 -5.00 1.00 -5.8473 .3000 .2100
- .30 -5.00 2.00 -6.6946 .3000 .1050
- .30 -5.00 5.00 -9.2365 .3000 .0420
- .30 .00 .50 -.4236 .3000 .4200
- .30 .00 1.00 -.8473 .3000 .2100
- .30 .00 2.00 -1.6946 .3000 .1050
- .30 .00 5.00 -4.2365 .3000 .0420
- .30 5.00 .50 4.5764 .3000 .4200
- .30 5.00 1.00 4.1527 .3000 .2100
- .30 5.00 2.00 3.3054 .3000 .1050
- .30 5.00 5.00 .7635 .3000 .0420
- .30 10.00 .50 9.5764 .3000 .4200
- .30 10.00 1.00 9.1527 .3000 .2100
- .30 10.00 2.00 8.3054 .3000 .1050
- .30 10.00 5.00 5.7635 .3000 .0420
- .40 -10.00 .50 -10.2027 .4000 .4800
- .40 -10.00 1.00 -10.4055 .4000 .2400
- .40 -10.00 2.00 -10.8109 .4000 .1200
- .40 -10.00 5.00 -12.0273 .4000 .0480
- .40 -5.00 .50 -5.2027 .4000 .4800
- .40 -5.00 1.00 -5.4055 .4000 .2400
- .40 -5.00 2.00 -5.8109 .4000 .1200
- .40 -5.00 5.00 -7.0273 .4000 .0480
- .40 .00 .50 -.2027 .4000 .4800
- .40 .00 1.00 -.4055 .4000 .2400
- .40 .00 2.00 -.8109 .4000 .1200
- .40 .00 5.00 -2.0273 .4000 .0480
- .40 5.00 .50 4.7973 .4000 .4800
- .40 5.00 1.00 4.5945 .4000 .2400
- .40 5.00 2.00 4.1891 .4000 .1200
- .40 5.00 5.00 2.9727 .4000 .0480
- .40 10.00 .50 9.7973 .4000 .4800
- .40 10.00 1.00 9.5945 .4000 .2400
- .40 10.00 2.00 9.1891 .4000 .1200
- .40 10.00 5.00 7.9727 .4000 .0480
- .50 -10.00 .50 -10.0000 .5000 .5000
- .50 -10.00 1.00 -10.0000 .5000 .2500
- .50 -10.00 2.00 -10.0000 .5000 .1250
- .50 -10.00 5.00 -10.0000 .5000 .0500
- .50 -5.00 .50 -5.0000 .5000 .5000
- .50 -5.00 1.00 -5.0000 .5000 .2500
- .50 -5.00 2.00 -5.0000 .5000 .1250
- .50 -5.00 5.00 -5.0000 .5000 .0500
- .50 .00 .50 .0000 .5000 .5000
- .50 .00 1.00 .0000 .5000 .2500
- .50 .00 2.00 .0000 .5000 .1250
- .50 .00 5.00 .0000 .5000 .0500
- .50 5.00 .50 5.0000 .5000 .5000
- .50 5.00 1.00 5.0000 .5000 .2500
- .50 5.00 2.00 5.0000 .5000 .1250
- .50 5.00 5.00 5.0000 .5000 .0500
- .50 10.00 .50 10.0000 .5000 .5000
- .50 10.00 1.00 10.0000 .5000 .2500
- .50 10.00 2.00 10.0000 .5000 .1250
- .50 10.00 5.00 10.0000 .5000 .0500
- .60 -10.00 .50 -9.7973 .6000 .4800
- .60 -10.00 1.00 -9.5945 .6000 .2400
- .60 -10.00 2.00 -9.1891 .6000 .1200
- .60 -10.00 5.00 -7.9727 .6000 .0480
- .60 -5.00 .50 -4.7973 .6000 .4800
- .60 -5.00 1.00 -4.5945 .6000 .2400
- .60 -5.00 2.00 -4.1891 .6000 .1200
- .60 -5.00 5.00 -2.9727 .6000 .0480
- .60 .00 .50 .2027 .6000 .4800
- .60 .00 1.00 .4055 .6000 .2400
- .60 .00 2.00 .8109 .6000 .1200
- .60 .00 5.00 2.0273 .6000 .0480
- .60 5.00 .50 5.2027 .6000 .4800
- .60 5.00 1.00 5.4055 .6000 .2400
- .60 5.00 2.00 5.8109 .6000 .1200
- .60 5.00 5.00 7.0273 .6000 .0480
- .60 10.00 .50 10.2027 .6000 .4800
- .60 10.00 1.00 10.4055 .6000 .2400
- .60 10.00 2.00 10.8109 .6000 .1200
- .60 10.00 5.00 12.0273 .6000 .0480
- .70 -10.00 .50 -9.5764 .7000 .4200
- .70 -10.00 1.00 -9.1527 .7000 .2100
- .70 -10.00 2.00 -8.3054 .7000 .1050
- .70 -10.00 5.00 -5.7635 .7000 .0420
- .70 -5.00 .50 -4.5764 .7000 .4200
- .70 -5.00 1.00 -4.1527 .7000 .2100
- .70 -5.00 2.00 -3.3054 .7000 .1050
- .70 -5.00 5.00 -.7635 .7000 .0420
- .70 .00 .50 .4236 .7000 .4200
- .70 .00 1.00 .8473 .7000 .2100
- .70 .00 2.00 1.6946 .7000 .1050
- .70 .00 5.00 4.2365 .7000 .0420
- .70 5.00 .50 5.4236 .7000 .4200
- .70 5.00 1.00 5.8473 .7000 .2100
- .70 5.00 2.00 6.6946 .7000 .1050
- .70 5.00 5.00 9.2365 .7000 .0420
- .70 10.00 .50 10.4236 .7000 .4200
- .70 10.00 1.00 10.8473 .7000 .2100
- .70 10.00 2.00 11.6946 .7000 .1050
- .70 10.00 5.00 14.2365 .7000 .0420
- .80 -10.00 .50 -9.3069 .8000 .3200
- .80 -10.00 1.00 -8.6137 .8000 .1600
- .80 -10.00 2.00 -7.2274 .8000 .0800
- .80 -10.00 5.00 -3.0685 .8000 .0320
- .80 -5.00 .50 -4.3069 .8000 .3200
- .80 -5.00 1.00 -3.6137 .8000 .1600
- .80 -5.00 2.00 -2.2274 .8000 .0800
- .80 -5.00 5.00 1.9315 .8000 .0320
- .80 .00 .50 .6931 .8000 .3200
- .80 .00 1.00 1.3863 .8000 .1600
- .80 .00 2.00 2.7726 .8000 .0800
- .80 .00 5.00 6.9315 .8000 .0320
- .80 5.00 .50 5.6931 .8000 .3200
- .80 5.00 1.00 6.3863 .8000 .1600
- .80 5.00 2.00 7.7726 .8000 .0800
- .80 5.00 5.00 11.9315 .8000 .0320
- .80 10.00 .50 10.6931 .8000 .3200
- .80 10.00 1.00 11.3863 .8000 .1600
- .80 10.00 2.00 12.7726 .8000 .0800
- .80 10.00 5.00 16.9315 .8000 .0320
- .90 -10.00 .50 -8.9014 .9000 .1800
- .90 -10.00 1.00 -7.8028 .9000 .0900
- .90 -10.00 2.00 -5.6056 .9000 .0450
- .90 -10.00 5.00 .9861 .9000 .0180
- .90 -5.00 .50 -3.9014 .9000 .1800
- .90 -5.00 1.00 -2.8028 .9000 .0900
- .90 -5.00 2.00 -.6056 .9000 .0450
- .90 -5.00 5.00 5.9861 .9000 .0180
- .90 .00 .50 1.0986 .9000 .1800
- .90 .00 1.00 2.1972 .9000 .0900
- .90 .00 2.00 4.3944 .9000 .0450
- .90 .00 5.00 10.9861 .9000 .0180
- .90 5.00 .50 6.0986 .9000 .1800
- .90 5.00 1.00 7.1972 .9000 .0900
- .90 5.00 2.00 9.3944 .9000 .0450
- .90 5.00 5.00 15.9861 .9000 .0180
- .90 10.00 .50 11.0986 .9000 .1800
- .90 10.00 1.00 12.1972 .9000 .0900
- .90 10.00 2.00 14.3944 .9000 .0450
- .90 10.00 5.00 20.9861 .9000 .0180
- .99 -10.00 .50 -7.7024 .9900 .0198
- .99 -10.00 1.00 -5.4049 .9900 .0099
- .99 -10.00 2.00 -.8098 .9900 .0050
- .99 -10.00 5.00 12.9756 .9900 .0020
- .99 -5.00 .50 -2.7024 .9900 .0198
- .99 -5.00 1.00 -.4049 .9900 .0099
- .99 -5.00 2.00 4.1902 .9900 .0050
- .99 -5.00 5.00 17.9756 .9900 .0020
- .99 .00 .50 2.2976 .9900 .0198
- .99 .00 1.00 4.5951 .9900 .0099
- .99 .00 2.00 9.1902 .9900 .0050
- .99 .00 5.00 22.9756 .9900 .0020
- .99 5.00 .50 7.2976 .9900 .0198
- .99 5.00 1.00 9.5951 .9900 .0099
- .99 5.00 2.00 14.1902 .9900 .0050
- .99 5.00 5.00 27.9756 .9900 .0020
- .99 10.00 .50 12.2976 .9900 .0198
- .99 10.00 1.00 14.5951 .9900 .0099
- .99 10.00 2.00 19.1902 .9900 .0050
- .99 10.00 5.00 32.9756 .9900 .0020
+++ /dev/null
- P u s x cdf pdf
- .01 -10.00 .50 -11.1632 .0100 .0533
- .01 -10.00 1.00 -12.3263 .0100 .0267
- .01 -10.00 2.00 -14.6527 .0100 .0133
- .01 -10.00 5.00 -21.6317 .0100 .0053
- .01 -5.00 .50 -6.1632 .0100 .0533
- .01 -5.00 1.00 -7.3263 .0100 .0267
- .01 -5.00 2.00 -9.6527 .0100 .0133
- .01 -5.00 5.00 -16.6317 .0100 .0053
- .01 .00 .50 -1.1632 .0100 .0533
- .01 .00 1.00 -2.3263 .0100 .0267
- .01 .00 2.00 -4.6527 .0100 .0133
- .01 .00 5.00 -11.6317 .0100 .0053
- .01 5.00 .50 3.8368 .0100 .0533
- .01 5.00 1.00 2.6737 .0100 .0267
- .01 5.00 2.00 .3473 .0100 .0133
- .01 5.00 5.00 -6.6317 .0100 .0053
- .01 10.00 .50 8.8368 .0100 .0533
- .01 10.00 1.00 7.6737 .0100 .0267
- .01 10.00 2.00 5.3473 .0100 .0133
- .01 10.00 5.00 -1.6317 .0100 .0053
- .10 -10.00 .50 -10.6408 .1000 .3510
- .10 -10.00 1.00 -11.2816 .1000 .1755
- .10 -10.00 2.00 -12.5631 .1000 .0877
- .10 -10.00 5.00 -16.4078 .1000 .0351
- .10 -5.00 .50 -5.6408 .1000 .3510
- .10 -5.00 1.00 -6.2816 .1000 .1755
- .10 -5.00 2.00 -7.5631 .1000 .0877
- .10 -5.00 5.00 -11.4078 .1000 .0351
- .10 .00 .50 -.6408 .1000 .3510
- .10 .00 1.00 -1.2816 .1000 .1755
- .10 .00 2.00 -2.5631 .1000 .0877
- .10 .00 5.00 -6.4078 .1000 .0351
- .10 5.00 .50 4.3592 .1000 .3510
- .10 5.00 1.00 3.7184 .1000 .1755
- .10 5.00 2.00 2.4369 .1000 .0877
- .10 5.00 5.00 -1.4078 .1000 .0351
- .10 10.00 .50 9.3592 .1000 .3510
- .10 10.00 1.00 8.7184 .1000 .1755
- .10 10.00 2.00 7.4369 .1000 .0877
- .10 10.00 5.00 3.5922 .1000 .0351
- .20 -10.00 .50 -10.4208 .2000 .5599
- .20 -10.00 1.00 -10.8416 .2000 .2800
- .20 -10.00 2.00 -11.6832 .2000 .1400
- .20 -10.00 5.00 -14.2081 .2000 .0560
- .20 -5.00 .50 -5.4208 .2000 .5599
- .20 -5.00 1.00 -5.8416 .2000 .2800
- .20 -5.00 2.00 -6.6832 .2000 .1400
- .20 -5.00 5.00 -9.2081 .2000 .0560
- .20 .00 .50 -.4208 .2000 .5599
- .20 .00 1.00 -.8416 .2000 .2800
- .20 .00 2.00 -1.6832 .2000 .1400
- .20 .00 5.00 -4.2081 .2000 .0560
- .20 5.00 .50 4.5792 .2000 .5599
- .20 5.00 1.00 4.1584 .2000 .2800
- .20 5.00 2.00 3.3168 .2000 .1400
- .20 5.00 5.00 .7919 .2000 .0560
- .20 10.00 .50 9.5792 .2000 .5599
- .20 10.00 1.00 9.1584 .2000 .2800
- .20 10.00 2.00 8.3168 .2000 .1400
- .20 10.00 5.00 5.7919 .2000 .0560
- .30 -10.00 .50 -10.2622 .3000 .6954
- .30 -10.00 1.00 -10.5244 .3000 .3477
- .30 -10.00 2.00 -11.0488 .3000 .1738
- .30 -10.00 5.00 -12.6220 .3000 .0695
- .30 -5.00 .50 -5.2622 .3000 .6954
- .30 -5.00 1.00 -5.5244 .3000 .3477
- .30 -5.00 2.00 -6.0488 .3000 .1738
- .30 -5.00 5.00 -7.6220 .3000 .0695
- .30 .00 .50 -.2622 .3000 .6954
- .30 .00 1.00 -.5244 .3000 .3477
- .30 .00 2.00 -1.0488 .3000 .1738
- .30 .00 5.00 -2.6220 .3000 .0695
- .30 5.00 .50 4.7378 .3000 .6954
- .30 5.00 1.00 4.4756 .3000 .3477
- .30 5.00 2.00 3.9512 .3000 .1738
- .30 5.00 5.00 2.3780 .3000 .0695
- .30 10.00 .50 9.7378 .3000 .6954
- .30 10.00 1.00 9.4756 .3000 .3477
- .30 10.00 2.00 8.9512 .3000 .1738
- .30 10.00 5.00 7.3780 .3000 .0695
- .40 -10.00 .50 -10.1267 .4000 .7727
- .40 -10.00 1.00 -10.2533 .4000 .3863
- .40 -10.00 2.00 -10.5067 .4000 .1932
- .40 -10.00 5.00 -11.2667 .4000 .0773
- .40 -5.00 .50 -5.1267 .4000 .7727
- .40 -5.00 1.00 -5.2533 .4000 .3863
- .40 -5.00 2.00 -5.5067 .4000 .1932
- .40 -5.00 5.00 -6.2667 .4000 .0773
- .40 .00 .50 -.1267 .4000 .7727
- .40 .00 1.00 -.2533 .4000 .3863
- .40 .00 2.00 -.5067 .4000 .1932
- .40 .00 5.00 -1.2667 .4000 .0773
- .40 5.00 .50 4.8733 .4000 .7727
- .40 5.00 1.00 4.7467 .4000 .3863
- .40 5.00 2.00 4.4933 .4000 .1932
- .40 5.00 5.00 3.7333 .4000 .0773
- .40 10.00 .50 9.8733 .4000 .7727
- .40 10.00 1.00 9.7467 .4000 .3863
- .40 10.00 2.00 9.4933 .4000 .1932
- .40 10.00 5.00 8.7333 .4000 .0773
- .50 -10.00 .50 -10.0000 .5000 .7979
- .50 -10.00 1.00 -10.0000 .5000 .3989
- .50 -10.00 2.00 -10.0000 .5000 .1995
- .50 -10.00 5.00 -10.0000 .5000 .0798
- .50 -5.00 .50 -5.0000 .5000 .7979
- .50 -5.00 1.00 -5.0000 .5000 .3989
- .50 -5.00 2.00 -5.0000 .5000 .1995
- .50 -5.00 5.00 -5.0000 .5000 .0798
- .50 .00 .50 .0000 .5000 .7979
- .50 .00 1.00 .0000 .5000 .3989
- .50 .00 2.00 .0000 .5000 .1995
- .50 .00 5.00 .0000 .5000 .0798
- .50 5.00 .50 5.0000 .5000 .7979
- .50 5.00 1.00 5.0000 .5000 .3989
- .50 5.00 2.00 5.0000 .5000 .1995
- .50 5.00 5.00 5.0000 .5000 .0798
- .50 10.00 .50 10.0000 .5000 .7979
- .50 10.00 1.00 10.0000 .5000 .3989
- .50 10.00 2.00 10.0000 .5000 .1995
- .50 10.00 5.00 10.0000 .5000 .0798
- .60 -10.00 .50 -9.8733 .6000 .7727
- .60 -10.00 1.00 -9.7467 .6000 .3863
- .60 -10.00 2.00 -9.4933 .6000 .1932
- .60 -10.00 5.00 -8.7333 .6000 .0773
- .60 -5.00 .50 -4.8733 .6000 .7727
- .60 -5.00 1.00 -4.7467 .6000 .3863
- .60 -5.00 2.00 -4.4933 .6000 .1932
- .60 -5.00 5.00 -3.7333 .6000 .0773
- .60 .00 .50 .1267 .6000 .7727
- .60 .00 1.00 .2533 .6000 .3863
- .60 .00 2.00 .5067 .6000 .1932
- .60 .00 5.00 1.2667 .6000 .0773
- .60 5.00 .50 5.1267 .6000 .7727
- .60 5.00 1.00 5.2533 .6000 .3863
- .60 5.00 2.00 5.5067 .6000 .1932
- .60 5.00 5.00 6.2667 .6000 .0773
- .60 10.00 .50 10.1267 .6000 .7727
- .60 10.00 1.00 10.2533 .6000 .3863
- .60 10.00 2.00 10.5067 .6000 .1932
- .60 10.00 5.00 11.2667 .6000 .0773
- .70 -10.00 .50 -9.7378 .7000 .6954
- .70 -10.00 1.00 -9.4756 .7000 .3477
- .70 -10.00 2.00 -8.9512 .7000 .1738
- .70 -10.00 5.00 -7.3780 .7000 .0695
- .70 -5.00 .50 -4.7378 .7000 .6954
- .70 -5.00 1.00 -4.4756 .7000 .3477
- .70 -5.00 2.00 -3.9512 .7000 .1738
- .70 -5.00 5.00 -2.3780 .7000 .0695
- .70 .00 .50 .2622 .7000 .6954
- .70 .00 1.00 .5244 .7000 .3477
- .70 .00 2.00 1.0488 .7000 .1738
- .70 .00 5.00 2.6220 .7000 .0695
- .70 5.00 .50 5.2622 .7000 .6954
- .70 5.00 1.00 5.5244 .7000 .3477
- .70 5.00 2.00 6.0488 .7000 .1738
- .70 5.00 5.00 7.6220 .7000 .0695
- .70 10.00 .50 10.2622 .7000 .6954
- .70 10.00 1.00 10.5244 .7000 .3477
- .70 10.00 2.00 11.0488 .7000 .1738
- .70 10.00 5.00 12.6220 .7000 .0695
- .80 -10.00 .50 -9.5792 .8000 .5599
- .80 -10.00 1.00 -9.1584 .8000 .2800
- .80 -10.00 2.00 -8.3168 .8000 .1400
- .80 -10.00 5.00 -5.7919 .8000 .0560
- .80 -5.00 .50 -4.5792 .8000 .5599
- .80 -5.00 1.00 -4.1584 .8000 .2800
- .80 -5.00 2.00 -3.3168 .8000 .1400
- .80 -5.00 5.00 -.7919 .8000 .0560
- .80 .00 .50 .4208 .8000 .5599
- .80 .00 1.00 .8416 .8000 .2800
- .80 .00 2.00 1.6832 .8000 .1400
- .80 .00 5.00 4.2081 .8000 .0560
- .80 5.00 .50 5.4208 .8000 .5599
- .80 5.00 1.00 5.8416 .8000 .2800
- .80 5.00 2.00 6.6832 .8000 .1400
- .80 5.00 5.00 9.2081 .8000 .0560
- .80 10.00 .50 10.4208 .8000 .5599
- .80 10.00 1.00 10.8416 .8000 .2800
- .80 10.00 2.00 11.6832 .8000 .1400
- .80 10.00 5.00 14.2081 .8000 .0560
- .90 -10.00 .50 -9.3592 .9000 .3510
- .90 -10.00 1.00 -8.7184 .9000 .1755
- .90 -10.00 2.00 -7.4369 .9000 .0877
- .90 -10.00 5.00 -3.5922 .9000 .0351
- .90 -5.00 .50 -4.3592 .9000 .3510
- .90 -5.00 1.00 -3.7184 .9000 .1755
- .90 -5.00 2.00 -2.4369 .9000 .0877
- .90 -5.00 5.00 1.4078 .9000 .0351
- .90 .00 .50 .6408 .9000 .3510
- .90 .00 1.00 1.2816 .9000 .1755
- .90 .00 2.00 2.5631 .9000 .0877
- .90 .00 5.00 6.4078 .9000 .0351
- .90 5.00 .50 5.6408 .9000 .3510
- .90 5.00 1.00 6.2816 .9000 .1755
- .90 5.00 2.00 7.5631 .9000 .0877
- .90 5.00 5.00 11.4078 .9000 .0351
- .90 10.00 .50 10.6408 .9000 .3510
- .90 10.00 1.00 11.2816 .9000 .1755
- .90 10.00 2.00 12.5631 .9000 .0877
- .90 10.00 5.00 16.4078 .9000 .0351
- .99 -10.00 .50 -8.8368 .9900 .0533
- .99 -10.00 1.00 -7.6737 .9900 .0267
- .99 -10.00 2.00 -5.3473 .9900 .0133
- .99 -10.00 5.00 1.6317 .9900 .0053
- .99 -5.00 .50 -3.8368 .9900 .0533
- .99 -5.00 1.00 -2.6737 .9900 .0267
- .99 -5.00 2.00 -.3473 .9900 .0133
- .99 -5.00 5.00 6.6317 .9900 .0053
- .99 .00 .50 1.1632 .9900 .0533
- .99 .00 1.00 2.3263 .9900 .0267
- .99 .00 2.00 4.6527 .9900 .0133
- .99 .00 5.00 11.6317 .9900 .0053
- .99 5.00 .50 6.1632 .9900 .0533
- .99 5.00 1.00 7.3263 .9900 .0267
- .99 5.00 2.00 9.6527 .9900 .0133
- .99 5.00 5.00 16.6317 .9900 .0053
- .99 10.00 .50 11.1632 .9900 .0533
- .99 10.00 1.00 12.3263 .9900 .0267
- .99 10.00 2.00 14.6527 .9900 .0133
- .99 10.00 5.00 21.6317 .9900 .0053
+++ /dev/null
- P a b x cdf pdf
- .01 1.00 1.00 1.0101 .0100 .9801
- .01 1.00 2.00 1.0050 .0100 1.9701
- .01 1.00 5.00 1.0020 .0100 4.9401
- .01 1.00 10.00 1.0010 .0100 9.8901
- .01 5.00 1.00 5.0505 .0100 .1960
- .01 5.00 2.00 5.0252 .0100 .3940
- .01 5.00 5.00 5.0101 .0100 .9880
- .01 5.00 10.00 5.0050 .0100 1.9780
- .01 10.00 1.00 10.1010 .0100 .0980
- .01 10.00 2.00 10.0504 .0100 .1970
- .01 10.00 5.00 10.0201 .0100 .4940
- .01 10.00 10.00 10.0101 .0100 .9890
- .10 1.00 1.00 1.1111 .1000 .8100
- .10 1.00 2.00 1.0541 .1000 1.7076
- .10 1.00 5.00 1.0213 .1000 4.4062
- .10 1.00 10.00 1.0106 .1000 8.9057
- .10 5.00 1.00 5.5556 .1000 .1620
- .10 5.00 2.00 5.2705 .1000 .3415
- .10 5.00 5.00 5.1065 .1000 .8812
- .10 5.00 10.00 5.0530 .1000 1.7811
- .10 10.00 1.00 11.1111 .1000 .0810
- .10 10.00 2.00 10.5409 .1000 .1708
- .10 10.00 5.00 10.2130 .1000 .4406
- .10 10.00 10.00 10.1059 .1000 .8906
- .20 1.00 1.00 1.2500 .2000 .6400
- .20 1.00 2.00 1.1180 .2000 1.4311
- .20 1.00 5.00 1.0456 .2000 3.8254
- .20 1.00 10.00 1.0226 .2000 7.8235
- .20 5.00 1.00 6.2500 .2000 .1280
- .20 5.00 2.00 5.5902 .2000 .2862
- .20 5.00 5.00 5.2282 .2000 .7651
- .20 5.00 10.00 5.1128 .2000 1.5647
- .20 10.00 1.00 12.5000 .2000 .0640
- .20 10.00 2.00 11.1803 .2000 .1431
- .20 10.00 5.00 10.4564 .2000 .3825
- .20 10.00 10.00 10.2257 .2000 .7823
- .30 1.00 1.00 1.4286 .3000 .4900
- .30 1.00 2.00 1.1952 .3000 1.1713
- .30 1.00 5.00 1.0739 .3000 3.2590
- .30 1.00 10.00 1.0363 .3000 6.7547
- .30 5.00 1.00 7.1429 .3000 .0980
- .30 5.00 2.00 5.9761 .3000 .2343
- .30 5.00 5.00 5.3697 .3000 .6518
- .30 5.00 10.00 5.1816 .3000 1.3509
- .30 10.00 1.00 14.2857 .3000 .0490
- .30 10.00 2.00 11.9523 .3000 .1171
- .30 10.00 5.00 10.7394 .3000 .3259
- .30 10.00 10.00 10.3631 .3000 .6755
- .40 1.00 1.00 1.6667 .4000 .3600
- .40 1.00 2.00 1.2910 .4000 .9295
- .40 1.00 5.00 1.1076 .4000 2.7086
- .40 1.00 10.00 1.0524 .4000 5.7012
- .40 5.00 1.00 8.3333 .4000 .0720
- .40 5.00 2.00 6.4550 .4000 .1859
- .40 5.00 5.00 5.5378 .4000 .5417
- .40 5.00 10.00 5.2620 .4000 1.1402
- .40 10.00 1.00 16.6667 .4000 .0360
- .40 10.00 2.00 12.9099 .4000 .0930
- .40 10.00 5.00 11.0757 .4000 .2709
- .40 10.00 10.00 10.5241 .4000 .5701
- .50 1.00 1.00 2.0000 .5000 .2500
- .50 1.00 2.00 1.4142 .5000 .7071
- .50 1.00 5.00 1.1487 .5000 2.1764
- .50 1.00 10.00 1.0718 .5000 4.6652
- .50 5.00 1.00 10.0000 .5000 .0500
- .50 5.00 2.00 7.0711 .5000 .1414
- .50 5.00 5.00 5.7435 .5000 .4353
- .50 5.00 10.00 5.3589 .5000 .9330
- .50 10.00 1.00 20.0000 .5000 .0250
- .50 10.00 2.00 14.1421 .5000 .0707
- .50 10.00 5.00 11.4870 .5000 .2176
- .50 10.00 10.00 10.7177 .5000 .4665
- .60 1.00 1.00 2.5000 .6000 .1600
- .60 1.00 2.00 1.5811 .6000 .5060
- .60 1.00 5.00 1.2011 .6000 1.6651
- .60 1.00 10.00 1.0960 .6000 3.6498
- .60 5.00 1.00 12.5000 .6000 .0320
- .60 5.00 2.00 7.9057 .6000 .1012
- .60 5.00 5.00 6.0056 .6000 .3330
- .60 5.00 10.00 5.4798 .6000 .7300
- .60 10.00 1.00 25.0000 .6000 .0160
- .60 10.00 2.00 15.8114 .6000 .0506
- .60 10.00 5.00 12.0112 .6000 .1665
- .60 10.00 10.00 10.9596 .6000 .3650
- .70 1.00 1.00 3.3333 .7000 .0900
- .70 1.00 2.00 1.8257 .7000 .3286
- .70 1.00 5.00 1.2723 .7000 1.1790
- .70 1.00 10.00 1.1279 .7000 2.6597
- .70 5.00 1.00 16.6667 .7000 .0180
- .70 5.00 2.00 9.1287 .7000 .0657
- .70 5.00 5.00 6.3613 .7000 .2358
- .70 5.00 10.00 5.6397 .7000 .5319
- .70 10.00 1.00 33.3333 .7000 .0090
- .70 10.00 2.00 18.2574 .7000 .0329
- .70 10.00 5.00 12.7226 .7000 .1179
- .70 10.00 10.00 11.2794 .7000 .2660
- .80 1.00 1.00 5.0000 .8000 .0400
- .80 1.00 2.00 2.2361 .8000 .1789
- .80 1.00 5.00 1.3797 .8000 .7248
- .80 1.00 10.00 1.1746 .8000 1.7027
- .80 5.00 1.00 25.0000 .8000 .0080
- .80 5.00 2.00 11.1803 .8000 .0358
- .80 5.00 5.00 6.8986 .8000 .1450
- .80 5.00 10.00 5.8731 .8000 .3405
- .80 10.00 1.00 50.0000 .8000 .0040
- .80 10.00 2.00 22.3607 .8000 .0179
- .80 10.00 5.00 13.7973 .8000 .0725
- .80 10.00 10.00 11.7462 .8000 .1703
- .90 1.00 1.00 10.0000 .9000 .0100
- .90 1.00 2.00 3.1623 .9000 .0632
- .90 1.00 5.00 1.5849 .9000 .3155
- .90 1.00 10.00 1.2589 .9000 .7943
- .90 5.00 1.00 50.0000 .9000 .0020
- .90 5.00 2.00 15.8114 .9000 .0126
- .90 5.00 5.00 7.9245 .9000 .0631
- .90 5.00 10.00 6.2946 .9000 .1589
- .90 10.00 1.00 100.0000 .9000 .0010
- .90 10.00 2.00 31.6228 .9000 .0063
- .90 10.00 5.00 15.8489 .9000 .0315
- .90 10.00 10.00 12.5893 .9000 .0794
- .99 1.00 1.00 100.0000 .9900 .0001
- .99 1.00 2.00 10.0000 .9900 .0020
- .99 1.00 5.00 2.5119 .9900 .0199
- .99 1.00 10.00 1.5849 .9900 .0631
- .99 5.00 1.00 500.0000 .9900 .0000
- .99 5.00 2.00 50.0000 .9900 .0004
- .99 5.00 5.00 12.5594 .9900 .0040
- .99 5.00 10.00 7.9245 .9900 .0126
- .99 10.00 1.00 1000.0000 .9900 .0000
- .99 10.00 2.00 100.0000 .9900 .0002
- .99 10.00 5.00 25.1189 .9900 .0020
- .99 10.00 10.00 15.8489 .9900 .0063
+++ /dev/null
-use strict;
-use warnings 'all';
-
-our (@funcs);
-our (@vars);
-our (%values);
-
-while (<>) {
- chomp;
- s/#.*//;
- next if /^\s*$/;
- my ($dist) = /^(.+):\s*$/ or die;
-
- @funcs = ();
- @vars = ();
- %values = ('P' => [.01, .1, .2, .3, .4, .5, .6, .7, .8, .9, .99]);
- while (<>) {
- last if /^\s*$/;
-
- my ($key, $value) = /^\s*(\w+)\s*=\s*(.*)$/;
- my (@values);
- foreach my $s (split (/\s+/, $value)) {
- if (my ($from, $to, $by) = $s =~ /^(.*):(.*):(.*)$/) {
- for (my ($x) = $from; $x <= $to; $x += $by) {
- push (@values, sprintf ("%.2f", $x) + 0);
- }
- } else {
- push (@values, $s);
- }
- }
-
- if ($key eq 'funcs') {
- @funcs = @values;
- } else {
- push (@vars, $key);
- $values{$key} = \@values;
- }
- }
-
- print "DATA LIST LIST/", join (' ', 'P', @vars), ".\n";
- print "NUMERIC ", join (' ', 'x', @funcs), " (F10.4)\n";
- print "COMPUTE x = IDF.$dist (", join (', ', 'P', @vars), ").\n";
- foreach my $func (@funcs) {
- print "COMPUTE $func = $func.$dist (",
- join (', ', 'x', @vars), ").\n";
- }
- my (@print) = ('P', @vars, 'x', @funcs);
- print "DO IF \$CASENUM = 1.\n";
- print "PRINT OUTFILE='$dist.out'/'", heading (@print), "'\n";
- print "END IF.\n";
- print "PRINT OUTFILE='$dist.out'/",
- join (' ', @print), ".\n";
- print "BEGIN DATA.\n";
- print_all_values (['P', @vars], []);
- print "END DATA.\n";
-}
-
-sub print_all_values {
- my (@vars) = @{$_[0]};
- my (@assign) = @{$_[1]};
- if (@vars == @assign) {
- print join (' ', @assign), "\n";
- } else {
- push (@assign, 0);
- my ($var) = $vars[$#assign];
- foreach my $value (@{$values{$var}}) {
- $assign[$#assign] = $value;
- print_all_values (\@vars, \@assign);
- }
- }
-}
-
-sub heading {
- my (@names) = @_;
- my ($out);
- $out .= pad_to (shift (@names), 8) while $names[0] ne 'x';
- $out .= pad_to (shift (@names), 10) while @names;
- return $out;
-}
-
-sub pad_to {
- my ($s, $n) = @_;
- return (' ' x ($n - length ($s))) . $s . ' ';
-}
+++ /dev/null
-beta:
- funcs = cdf pdf
- a = .75 1 1.5
- b = .25 .5 1 1.5 2 2.5 3
-
-cauchy:
- funcs = cdf pdf
- a = -5:5:1
- b = .5:1.5:.25
-
-chisq:
- funcs = cdf pdf sig
- df = 1 2 5 10
-
-exp:
- funcs = cdf pdf
- a = 1 2 5 10
-
-f:
- funcs = cdf pdf
- df1 = 1 2 5 10
- df2 = 1 2 5 10
-
-gamma:
- funcs = cdf pdf
- a = .5 1 2 5
- b = -10:10:5
-
-laplace:
- funcs = cdf pdf
- a = -10:10:5
- b = .5 1 2 5
-
-logistic:
- funcs = cdf pdf
- a = -10:10:5
- b = .5 1 2 5
-
-lnormal:
- funcs = cdf pdf
- z = .5 1 2 5
- s = .5 1 2 5
-
-normal:
- funcs = cdf pdf
- u = -10:10:5
- s = .5 1 2 5
-
-pareto:
- funcs = cdf pdf
- a = 1 5 10
- b = 1 2 5 10
-
-t:
- funcs = cdf pdf
- df = 1 2 3 4 5 10 30 100
-
-uniform:
- funcs = cdf pdf
- a = -10 0 20 30
- b = 40 41 45 50
-
-weibull:
- funcs = cdf pdf
- a = .5 1 2 5
- b = 1 2 4 8
+++ /dev/null
- P df x cdf pdf
- .01 1.00 -31.8205 .0100 .0003
- .01 2.00 -6.9646 .0100 .0028
- .01 3.00 -4.5407 .0100 .0059
- .01 4.00 -3.7469 .0100 .0087
- .01 5.00 -3.3649 .0100 .0109
- .01 10.00 -2.7638 .0100 .0172
- .01 30.00 -2.4573 .0100 .0231
- .01 100.00 -2.3642 .0100 .0255
- .10 1.00 -3.0777 .1000 .0304
- .10 2.00 -1.8856 .1000 .0764
- .10 3.00 -1.6377 .1000 .1025
- .10 4.00 -1.5332 .1000 .1181
- .10 5.00 -1.4759 .1000 .1283
- .10 10.00 -1.3722 .1000 .1507
- .10 30.00 -1.3104 .1000 .1670
- .10 100.00 -1.2901 .1000 .1729
- .20 1.00 -1.3764 .2000 .1100
- .20 2.00 -1.0607 .2000 .1810
- .20 3.00 -.9785 .2000 .2112
- .20 4.00 -.9410 .2000 .2275
- .20 5.00 -.9195 .2000 .2376
- .20 10.00 -.8791 .2000 .2584
- .20 30.00 -.8538 .2000 .2727
- .20 100.00 -.8452 .2000 .2778
- .30 1.00 -.7265 .3000 .2083
- .30 2.00 -.6172 .3000 .2722
- .30 3.00 -.5844 .3000 .2963
- .30 4.00 -.5686 .3000 .3088
- .30 5.00 -.5594 .3000 .3164
- .30 10.00 -.5415 .3000 .3319
- .30 30.00 -.5300 .3000 .3424
- .30 100.00 -.5261 .3000 .3461
- .40 1.00 -.3249 .4000 .2879
- .40 2.00 -.2887 .4000 .3326
- .40 3.00 -.2767 .4000 .3495
- .40 4.00 -.2707 .4000 .3584
- .40 5.00 -.2672 .4000 .3638
- .40 10.00 -.2602 .4000 .3749
- .40 30.00 -.2556 .4000 .3825
- .40 100.00 -.2540 .4000 .3852
- .50 1.00 .0000 .5000 .3183
- .50 2.00 .0000 .5000 .3536
- .50 3.00 .0000 .5000 .3676
- .50 4.00 .0000 .5000 .3750
- .50 5.00 .0000 .5000 .3796
- .50 10.00 .0000 .5000 .3891
- .50 30.00 .0000 .5000 .3956
- .50 100.00 .0000 .5000 .3979
- .60 1.00 .3249 .6000 .2879
- .60 2.00 .2887 .6000 .3326
- .60 3.00 .2767 .6000 .3495
- .60 4.00 .2707 .6000 .3584
- .60 5.00 .2672 .6000 .3638
- .60 10.00 .2602 .6000 .3749
- .60 30.00 .2556 .6000 .3825
- .60 100.00 .2540 .6000 .3852
- .70 1.00 .7265 .7000 .2083
- .70 2.00 .6172 .7000 .2722
- .70 3.00 .5844 .7000 .2963
- .70 4.00 .5686 .7000 .3088
- .70 5.00 .5594 .7000 .3164
- .70 10.00 .5415 .7000 .3319
- .70 30.00 .5300 .7000 .3424
- .70 100.00 .5261 .7000 .3461
- .80 1.00 1.3764 .8000 .1100
- .80 2.00 1.0607 .8000 .1810
- .80 3.00 .9785 .8000 .2112
- .80 4.00 .9410 .8000 .2275
- .80 5.00 .9195 .8000 .2376
- .80 10.00 .8791 .8000 .2584
- .80 30.00 .8538 .8000 .2727
- .80 100.00 .8452 .8000 .2778
- .90 1.00 3.0777 .9000 .0304
- .90 2.00 1.8856 .9000 .0764
- .90 3.00 1.6377 .9000 .1025
- .90 4.00 1.5332 .9000 .1181
- .90 5.00 1.4759 .9000 .1283
- .90 10.00 1.3722 .9000 .1507
- .90 30.00 1.3104 .9000 .1670
- .90 100.00 1.2901 .9000 .1729
- .99 1.00 31.8205 .9900 .0003
- .99 2.00 6.9646 .9900 .0028
- .99 3.00 4.5407 .9900 .0059
- .99 4.00 3.7469 .9900 .0087
- .99 5.00 3.3649 .9900 .0109
- .99 10.00 2.7638 .9900 .0172
- .99 30.00 2.4573 .9900 .0231
- .99 100.00 2.3642 .9900 .0255
+++ /dev/null
- P a b x cdf pdf
- .01 -10.00 40.00 -9.5000 .0100 .0200
- .01 -10.00 41.00 -9.4900 .0100 .0196
- .01 -10.00 45.00 -9.4500 .0100 .0182
- .01 -10.00 50.00 -9.4000 .0100 .0167
- .01 .00 40.00 .4000 .0100 .0250
- .01 .00 41.00 .4100 .0100 .0244
- .01 .00 45.00 .4500 .0100 .0222
- .01 .00 50.00 .5000 .0100 .0200
- .01 20.00 40.00 20.2000 .0100 .0500
- .01 20.00 41.00 20.2100 .0100 .0476
- .01 20.00 45.00 20.2500 .0100 .0400
- .01 20.00 50.00 20.3000 .0100 .0333
- .01 30.00 40.00 30.1000 .0100 .1000
- .01 30.00 41.00 30.1100 .0100 .0909
- .01 30.00 45.00 30.1500 .0100 .0667
- .01 30.00 50.00 30.2000 .0100 .0500
- .10 -10.00 40.00 -5.0000 .1000 .0200
- .10 -10.00 41.00 -4.9000 .1000 .0196
- .10 -10.00 45.00 -4.5000 .1000 .0182
- .10 -10.00 50.00 -4.0000 .1000 .0167
- .10 .00 40.00 4.0000 .1000 .0250
- .10 .00 41.00 4.1000 .1000 .0244
- .10 .00 45.00 4.5000 .1000 .0222
- .10 .00 50.00 5.0000 .1000 .0200
- .10 20.00 40.00 22.0000 .1000 .0500
- .10 20.00 41.00 22.1000 .1000 .0476
- .10 20.00 45.00 22.5000 .1000 .0400
- .10 20.00 50.00 23.0000 .1000 .0333
- .10 30.00 40.00 31.0000 .1000 .1000
- .10 30.00 41.00 31.1000 .1000 .0909
- .10 30.00 45.00 31.5000 .1000 .0667
- .10 30.00 50.00 32.0000 .1000 .0500
- .20 -10.00 40.00 .0000 .2000 .0200
- .20 -10.00 41.00 .2000 .2000 .0196
- .20 -10.00 45.00 1.0000 .2000 .0182
- .20 -10.00 50.00 2.0000 .2000 .0167
- .20 .00 40.00 8.0000 .2000 .0250
- .20 .00 41.00 8.2000 .2000 .0244
- .20 .00 45.00 9.0000 .2000 .0222
- .20 .00 50.00 10.0000 .2000 .0200
- .20 20.00 40.00 24.0000 .2000 .0500
- .20 20.00 41.00 24.2000 .2000 .0476
- .20 20.00 45.00 25.0000 .2000 .0400
- .20 20.00 50.00 26.0000 .2000 .0333
- .20 30.00 40.00 32.0000 .2000 .1000
- .20 30.00 41.00 32.2000 .2000 .0909
- .20 30.00 45.00 33.0000 .2000 .0667
- .20 30.00 50.00 34.0000 .2000 .0500
- .30 -10.00 40.00 5.0000 .3000 .0200
- .30 -10.00 41.00 5.3000 .3000 .0196
- .30 -10.00 45.00 6.5000 .3000 .0182
- .30 -10.00 50.00 8.0000 .3000 .0167
- .30 .00 40.00 12.0000 .3000 .0250
- .30 .00 41.00 12.3000 .3000 .0244
- .30 .00 45.00 13.5000 .3000 .0222
- .30 .00 50.00 15.0000 .3000 .0200
- .30 20.00 40.00 26.0000 .3000 .0500
- .30 20.00 41.00 26.3000 .3000 .0476
- .30 20.00 45.00 27.5000 .3000 .0400
- .30 20.00 50.00 29.0000 .3000 .0333
- .30 30.00 40.00 33.0000 .3000 .1000
- .30 30.00 41.00 33.3000 .3000 .0909
- .30 30.00 45.00 34.5000 .3000 .0667
- .30 30.00 50.00 36.0000 .3000 .0500
- .40 -10.00 40.00 10.0000 .4000 .0200
- .40 -10.00 41.00 10.4000 .4000 .0196
- .40 -10.00 45.00 12.0000 .4000 .0182
- .40 -10.00 50.00 14.0000 .4000 .0167
- .40 .00 40.00 16.0000 .4000 .0250
- .40 .00 41.00 16.4000 .4000 .0244
- .40 .00 45.00 18.0000 .4000 .0222
- .40 .00 50.00 20.0000 .4000 .0200
- .40 20.00 40.00 28.0000 .4000 .0500
- .40 20.00 41.00 28.4000 .4000 .0476
- .40 20.00 45.00 30.0000 .4000 .0400
- .40 20.00 50.00 32.0000 .4000 .0333
- .40 30.00 40.00 34.0000 .4000 .1000
- .40 30.00 41.00 34.4000 .4000 .0909
- .40 30.00 45.00 36.0000 .4000 .0667
- .40 30.00 50.00 38.0000 .4000 .0500
- .50 -10.00 40.00 15.0000 .5000 .0200
- .50 -10.00 41.00 15.5000 .5000 .0196
- .50 -10.00 45.00 17.5000 .5000 .0182
- .50 -10.00 50.00 20.0000 .5000 .0167
- .50 .00 40.00 20.0000 .5000 .0250
- .50 .00 41.00 20.5000 .5000 .0244
- .50 .00 45.00 22.5000 .5000 .0222
- .50 .00 50.00 25.0000 .5000 .0200
- .50 20.00 40.00 30.0000 .5000 .0500
- .50 20.00 41.00 30.5000 .5000 .0476
- .50 20.00 45.00 32.5000 .5000 .0400
- .50 20.00 50.00 35.0000 .5000 .0333
- .50 30.00 40.00 35.0000 .5000 .1000
- .50 30.00 41.00 35.5000 .5000 .0909
- .50 30.00 45.00 37.5000 .5000 .0667
- .50 30.00 50.00 40.0000 .5000 .0500
- .60 -10.00 40.00 20.0000 .6000 .0200
- .60 -10.00 41.00 20.6000 .6000 .0196
- .60 -10.00 45.00 23.0000 .6000 .0182
- .60 -10.00 50.00 26.0000 .6000 .0167
- .60 .00 40.00 24.0000 .6000 .0250
- .60 .00 41.00 24.6000 .6000 .0244
- .60 .00 45.00 27.0000 .6000 .0222
- .60 .00 50.00 30.0000 .6000 .0200
- .60 20.00 40.00 32.0000 .6000 .0500
- .60 20.00 41.00 32.6000 .6000 .0476
- .60 20.00 45.00 35.0000 .6000 .0400
- .60 20.00 50.00 38.0000 .6000 .0333
- .60 30.00 40.00 36.0000 .6000 .1000
- .60 30.00 41.00 36.6000 .6000 .0909
- .60 30.00 45.00 39.0000 .6000 .0667
- .60 30.00 50.00 42.0000 .6000 .0500
- .70 -10.00 40.00 25.0000 .7000 .0200
- .70 -10.00 41.00 25.7000 .7000 .0196
- .70 -10.00 45.00 28.5000 .7000 .0182
- .70 -10.00 50.00 32.0000 .7000 .0167
- .70 .00 40.00 28.0000 .7000 .0250
- .70 .00 41.00 28.7000 .7000 .0244
- .70 .00 45.00 31.5000 .7000 .0222
- .70 .00 50.00 35.0000 .7000 .0200
- .70 20.00 40.00 34.0000 .7000 .0500
- .70 20.00 41.00 34.7000 .7000 .0476
- .70 20.00 45.00 37.5000 .7000 .0400
- .70 20.00 50.00 41.0000 .7000 .0333
- .70 30.00 40.00 37.0000 .7000 .1000
- .70 30.00 41.00 37.7000 .7000 .0909
- .70 30.00 45.00 40.5000 .7000 .0667
- .70 30.00 50.00 44.0000 .7000 .0500
- .80 -10.00 40.00 30.0000 .8000 .0200
- .80 -10.00 41.00 30.8000 .8000 .0196
- .80 -10.00 45.00 34.0000 .8000 .0182
- .80 -10.00 50.00 38.0000 .8000 .0167
- .80 .00 40.00 32.0000 .8000 .0250
- .80 .00 41.00 32.8000 .8000 .0244
- .80 .00 45.00 36.0000 .8000 .0222
- .80 .00 50.00 40.0000 .8000 .0200
- .80 20.00 40.00 36.0000 .8000 .0500
- .80 20.00 41.00 36.8000 .8000 .0476
- .80 20.00 45.00 40.0000 .8000 .0400
- .80 20.00 50.00 44.0000 .8000 .0333
- .80 30.00 40.00 38.0000 .8000 .1000
- .80 30.00 41.00 38.8000 .8000 .0909
- .80 30.00 45.00 42.0000 .8000 .0667
- .80 30.00 50.00 46.0000 .8000 .0500
- .90 -10.00 40.00 35.0000 .9000 .0200
- .90 -10.00 41.00 35.9000 .9000 .0196
- .90 -10.00 45.00 39.5000 .9000 .0182
- .90 -10.00 50.00 44.0000 .9000 .0167
- .90 .00 40.00 36.0000 .9000 .0250
- .90 .00 41.00 36.9000 .9000 .0244
- .90 .00 45.00 40.5000 .9000 .0222
- .90 .00 50.00 45.0000 .9000 .0200
- .90 20.00 40.00 38.0000 .9000 .0500
- .90 20.00 41.00 38.9000 .9000 .0476
- .90 20.00 45.00 42.5000 .9000 .0400
- .90 20.00 50.00 47.0000 .9000 .0333
- .90 30.00 40.00 39.0000 .9000 .1000
- .90 30.00 41.00 39.9000 .9000 .0909
- .90 30.00 45.00 43.5000 .9000 .0667
- .90 30.00 50.00 48.0000 .9000 .0500
- .99 -10.00 40.00 39.5000 .9900 .0200
- .99 -10.00 41.00 40.4900 .9900 .0196
- .99 -10.00 45.00 44.4500 .9900 .0182
- .99 -10.00 50.00 49.4000 .9900 .0167
- .99 .00 40.00 39.6000 .9900 .0250
- .99 .00 41.00 40.5900 .9900 .0244
- .99 .00 45.00 44.5500 .9900 .0222
- .99 .00 50.00 49.5000 .9900 .0200
- .99 20.00 40.00 39.8000 .9900 .0500
- .99 20.00 41.00 40.7900 .9900 .0476
- .99 20.00 45.00 44.7500 .9900 .0400
- .99 20.00 50.00 49.7000 .9900 .0333
- .99 30.00 40.00 39.9000 .9900 .1000
- .99 30.00 41.00 40.8900 .9900 .0909
- .99 30.00 45.00 44.8500 .9900 .0667
- .99 30.00 50.00 49.8000 .9900 .0500
+++ /dev/null
- P a b x cdf pdf
- .01 .50 1.00 .0050 .0100 1.9800
- .01 .50 2.00 .0501 .0100 .3970
- .01 .50 4.00 .1583 .0100 .2514
- .01 .50 8.00 .2813 .0100 .2829
- .01 1.00 1.00 .0101 .0100 .9900
- .01 1.00 2.00 .1003 .0100 .1985
- .01 1.00 4.00 .3166 .0100 .1257
- .01 1.00 8.00 .5627 .0100 .1415
- .01 2.00 1.00 .0201 .0100 .4950
- .01 2.00 2.00 .2005 .0100 .0992
- .01 2.00 4.00 .6332 .0100 .0628
- .01 2.00 8.00 1.1254 .0100 .0707
- .01 5.00 1.00 .0503 .0100 .1980
- .01 5.00 2.00 .5013 .0100 .0397
- .01 5.00 4.00 1.5831 .0100 .0251
- .01 5.00 8.00 2.8135 .0100 .0283
- .10 .50 1.00 .0527 .1000 1.8000
- .10 .50 2.00 .1623 .1000 1.1685
- .10 .50 4.00 .2849 .1000 1.3315
- .10 .50 8.00 .3774 .1000 2.0100
- .10 1.00 1.00 .1054 .1000 .9000
- .10 1.00 2.00 .3246 .1000 .5843
- .10 1.00 4.00 .5697 .1000 .6657
- .10 1.00 8.00 .7548 .1000 1.0050
- .10 2.00 1.00 .2107 .1000 .4500
- .10 2.00 2.00 .6492 .1000 .2921
- .10 2.00 4.00 1.1395 .1000 .3329
- .10 2.00 8.00 1.5096 .1000 .5025
- .10 5.00 1.00 .5268 .1000 .1800
- .10 5.00 2.00 1.6230 .1000 .1169
- .10 5.00 4.00 2.8487 .1000 .1331
- .10 5.00 8.00 3.7740 .1000 .2010
- .20 .50 1.00 .1116 .2000 1.6000
- .20 .50 2.00 .2362 .2000 1.5116
- .20 .50 4.00 .3436 .2000 2.0779
- .20 .50 8.00 .4145 .2000 3.4453
- .20 1.00 1.00 .2231 .2000 .8000
- .20 1.00 2.00 .4724 .2000 .7558
- .20 1.00 4.00 .6873 .2000 1.0389
- .20 1.00 8.00 .8290 .2000 1.7226
- .20 2.00 1.00 .4463 .2000 .4000
- .20 2.00 2.00 .9448 .2000 .3779
- .20 2.00 4.00 1.3746 .2000 .5195
- .20 2.00 8.00 1.6581 .2000 .8613
- .20 5.00 1.00 1.1157 .2000 .1600
- .20 5.00 2.00 2.3619 .2000 .1512
- .20 5.00 4.00 3.4365 .2000 .2078
- .20 5.00 8.00 4.1452 .2000 .3445
- .30 .50 1.00 .1783 .3000 1.4000
- .30 .50 2.00 .2986 .3000 1.6722
- .30 .50 4.00 .3864 .3000 2.5846
- .30 .50 8.00 .4395 .3000 4.5442
- .30 1.00 1.00 .3567 .3000 .7000
- .30 1.00 2.00 .5972 .3000 .8361
- .30 1.00 4.00 .7728 .3000 1.2923
- .30 1.00 8.00 .8791 .3000 2.2721
- .30 2.00 1.00 .7133 .3000 .3500
- .30 2.00 2.00 1.1944 .3000 .4181
- .30 2.00 4.00 1.5456 .3000 .6461
- .30 2.00 8.00 1.7582 .3000 1.1360
- .30 5.00 1.00 1.7834 .3000 .1400
- .30 5.00 2.00 2.9861 .3000 .1672
- .30 5.00 4.00 3.8640 .3000 .2585
- .30 5.00 8.00 4.3955 .3000 .4544
- .40 .50 1.00 .2554 .4000 1.2000
- .40 .50 2.00 .3574 .4000 1.7153
- .40 .50 4.00 .4227 .4000 2.9003
- .40 .50 8.00 .4597 .4000 5.3335
- .40 1.00 1.00 .5108 .4000 .6000
- .40 1.00 2.00 .7147 .4000 .8577
- .40 1.00 4.00 .8454 .4000 1.4502
- .40 1.00 8.00 .9195 .4000 2.6667
- .40 2.00 1.00 1.0217 .4000 .3000
- .40 2.00 2.00 1.4294 .4000 .4288
- .40 2.00 4.00 1.6908 .4000 .7251
- .40 2.00 8.00 1.8389 .4000 1.3334
- .40 5.00 1.00 2.5541 .4000 .1200
- .40 5.00 2.00 3.5736 .4000 .1715
- .40 5.00 4.00 4.2271 .4000 .2900
- .40 5.00 8.00 4.5973 .4000 .5333
- .50 .50 1.00 .3466 .5000 1.0000
- .50 .50 2.00 .4163 .5000 1.6651
- .50 .50 4.00 .4562 .5000 3.0386
- .50 .50 8.00 .4776 .5000 5.8051
- .50 1.00 1.00 .6931 .5000 .5000
- .50 1.00 2.00 .8326 .5000 .8326
- .50 1.00 4.00 .9124 .5000 1.5193
- .50 1.00 8.00 .9552 .5000 2.9026
- .50 2.00 1.00 1.3863 .5000 .2500
- .50 2.00 2.00 1.6651 .5000 .4163
- .50 2.00 4.00 1.8249 .5000 .7597
- .50 2.00 8.00 1.9104 .5000 1.4513
- .50 5.00 1.00 3.4657 .5000 .1000
- .50 5.00 2.00 4.1628 .5000 .1665
- .50 5.00 4.00 4.5622 .5000 .3039
- .50 5.00 8.00 4.7761 .5000 .5805
- .60 .50 1.00 .4581 .6000 .8000
- .60 .50 2.00 .4786 .6000 1.5316
- .60 .50 4.00 .4892 .6000 2.9969
- .60 .50 8.00 .4946 .6000 5.9287
- .60 1.00 1.00 .9163 .6000 .4000
- .60 1.00 2.00 .9572 .6000 .7658
- .60 1.00 4.00 .9784 .6000 1.4985
- .60 1.00 8.00 .9891 .6000 2.9643
- .60 2.00 1.00 1.8326 .6000 .2000
- .60 2.00 2.00 1.9145 .6000 .3829
- .60 2.00 4.00 1.9568 .6000 .7492
- .60 2.00 8.00 1.9783 .6000 1.4822
- .60 5.00 1.00 4.5815 .6000 .0800
- .60 5.00 2.00 4.7862 .6000 .1532
- .60 5.00 4.00 4.8919 .6000 .2997
- .60 5.00 8.00 4.9457 .6000 .5929
- .70 .50 1.00 .6020 .7000 .6000
- .70 .50 2.00 .5486 .7000 1.3167
- .70 .50 4.00 .5238 .7000 2.7585
- .70 .50 8.00 .5117 .7000 5.6465
- .70 1.00 1.00 1.2040 .7000 .3000
- .70 1.00 2.00 1.0973 .7000 .6584
- .70 1.00 4.00 1.0475 .7000 1.3793
- .70 1.00 8.00 1.0235 .7000 2.8233
- .70 2.00 1.00 2.4079 .7000 .1500
- .70 2.00 2.00 2.1945 .7000 .3292
- .70 2.00 4.00 2.0950 .7000 .6896
- .70 2.00 8.00 2.0469 .7000 1.4116
- .70 5.00 1.00 6.0199 .7000 .0600
- .70 5.00 2.00 5.4863 .7000 .1317
- .70 5.00 4.00 5.2375 .7000 .2759
- .70 5.00 8.00 5.1174 .7000 .5647
- .80 .50 1.00 .8047 .8000 .4000
- .80 .50 2.00 .6343 .8000 1.0149
- .80 .50 4.00 .5632 .8000 2.2863
- .80 .50 8.00 .5306 .8000 4.8528
- .80 1.00 1.00 1.6094 .8000 .2000
- .80 1.00 2.00 1.2686 .8000 .5075
- .80 1.00 4.00 1.1263 .8000 1.1431
- .80 1.00 8.00 1.0613 .8000 2.4264
- .80 2.00 1.00 3.2189 .8000 .1000
- .80 2.00 2.00 2.5373 .8000 .2537
- .80 2.00 4.00 2.2527 .8000 .5716
- .80 2.00 8.00 2.1226 .8000 1.2132
- .80 5.00 1.00 8.0472 .8000 .0400
- .80 5.00 2.00 6.3432 .8000 .1015
- .80 5.00 4.00 5.6317 .8000 .2286
- .80 5.00 8.00 5.3065 .8000 .4853
- .90 .50 1.00 1.1513 .9000 .2000
- .90 .50 2.00 .7587 .9000 .6070
- .90 .50 4.00 .6159 .9000 1.4954
- .90 .50 8.00 .5549 .9000 3.3194
- .90 1.00 1.00 2.3026 .9000 .1000
- .90 1.00 2.00 1.5174 .9000 .3035
- .90 1.00 4.00 1.2318 .9000 .7477
- .90 1.00 8.00 1.1099 .9000 1.6597
- .90 2.00 1.00 4.6052 .9000 .0500
- .90 2.00 2.00 3.0349 .9000 .1517
- .90 2.00 4.00 2.4637 .9000 .3738
- .90 2.00 8.00 2.2198 .9000 .8298
- .90 5.00 1.00 11.5129 .9000 .0200
- .90 5.00 2.00 7.5871 .9000 .0607
- .90 5.00 4.00 6.1592 .9000 .1495
- .90 5.00 8.00 5.5494 .9000 .3319
- .99 .50 1.00 2.3026 .9900 .0200
- .99 .50 2.00 1.0730 .9900 .0858
- .99 .50 4.00 .7325 .9900 .2515
- .99 .50 8.00 .6052 .9900 .6088
- .99 1.00 1.00 4.6052 .9900 .0100
- .99 1.00 2.00 2.1460 .9900 .0429
- .99 1.00 4.00 1.4649 .9900 .1257
- .99 1.00 8.00 1.2103 .9900 .3044
- .99 2.00 1.00 9.2103 .9900 .0050
- .99 2.00 2.00 4.2919 .9900 .0215
- .99 2.00 4.00 2.9298 .9900 .0629
- .99 2.00 8.00 2.4207 .9900 .1522
- .99 5.00 1.00 23.0259 .9900 .0020
- .99 5.00 2.00 10.7298 .9900 .0086
- .99 5.00 4.00 7.3246 .9900 .0251
- .99 5.00 8.00 6.0517 .9900 .0609
+++ /dev/null
-#!/bin/sh
-
-# This program tests use of the VALUELABEL function in expressions.
-
-TEMPDIR=/tmp/pspp-tst-$$
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TEMPDIR/valuelabel.stat <<EOF
-DATA LIST notable /n 1 s 2(a).
-VALUE LABELS /n 0 'Very dissatisfied'
- 1 'Dissatisfied'
- 1.5 'Slightly Peeved'
- 2 'Neutral'
- 3 'Satisfied'
- 4 'Very satisfied'.
-VALUE LABELS /s 'a' 'Wouldn''t buy again'
- 'b' 'Unhappy'
- 'c' 'Bored'
- 'd' 'Satiated'
- 'e' 'Elated'.
-STRING nlabel slabel(a10).
-COMPUTE nlabel = VALUELABEL(n).
-COMPUTE slabel = VALUELABEL(s).
-LIST.
-BEGIN DATA.
-
-0a
-1b
-2c
-3d
-4e
-5f
-6g
-END DATA.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TEMPDIR/valuelabel.stat
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare results"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Table: Data List
-n,s,nlabel,slabel
-.,,,
-0,a,Very dissa,Wouldn't b
-1,b,Dissatisfi,Unhappy
-2,c,Neutral ,Bored
-3,d,Satisfied ,Satiated
-4,e,Very satis,Elated
-5,f,,
-6,g,,
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests use of variables in expressions.
-
-TEMPDIR=/tmp/pspp-tst-$$
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TEMPDIR/variables.stat <<EOF
-SET MXERR 1000.
-SET MXWARN 1000.
-
-DATA LIST /N1 TO N5 1-5.
-MISSING VALUES N1 TO N5 (3 THRU 5, 1).
-BEGIN DATA.
-12345
-6789
-END DATA.
-
-COMPUTE P1=N1.
-COMPUTE P2=N2.
-COMPUTE P3=N3.
-COMPUTE P4=N4.
-COMPUTE P5=N5.
-
-COMPUTE MC=NMISS(N1 TO N5).
-COMPUTE VC=NVALID(N1 TO N5).
-
-COMPUTE S1=SYSMIS(N1).
-COMPUTE S2=SYSMIS(N2).
-COMPUTE S3=SYSMIS(N3).
-COMPUTE S4=SYSMIS(N4).
-COMPUTE S5=SYSMIS(N5).
-
-COMPUTE M1=MISSING(N1).
-COMPUTE M2=MISSING(N2).
-COMPUTE M3=MISSING(N3).
-COMPUTE M4=MISSING(N4).
-COMPUTE M5=MISSING(N5).
-
-COMPUTE V1=VALUE(N1).
-COMPUTE V2=VALUE(N2).
-COMPUTE V3=VALUE(N3).
-COMPUTE V4=VALUE(N4).
-COMPUTE V5=VALUE(N5).
-
-FORMATS ALL (F1).
-
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TEMPDIR/variables.stat > $TEMPDIR/variables.err 2> $TEMPDIR/variables.out
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare results"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Table: Reading 1 record from INLINE.
-Variable,Record,Columns,Format
-N1,1,1- 1,F1.0
-N2,1,2- 2,F1.0
-N3,1,3- 3,F1.0
-N4,1,4- 4,F1.0
-N5,1,5- 5,F1.0
-
-Table: Data List
-N1,N2,N3,N4,N5,P1,P2,P3,P4,P5,MC,VC,S1,S2,S3,S4,S5,M1,M2,M3,M4,M5,V1,V2,V3,V4,V5
-1,2,3,4,5,.,2,.,.,.,4,1,0,0,0,0,0,1,0,1,1,1,1,2,3,4,5
-6,7,8,9,.,6,7,8,9,.,1,4,0,0,0,0,1,0,0,0,0,1,6,7,8,9,.
-EOF
-
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-
-pass;
+++ /dev/null
-#!/bin/sh
-
-# This program tests use of vectors in expressions.
-
-TEMPDIR=/tmp/pspp-tst-$$
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create program"
-cat > $TEMPDIR/vectors.stat <<EOF
-DATA LIST /N1 TO N5 1-5.
-MISSING VALUES N1 TO N5 (3 THRU 5, 1).
-BEGIN DATA.
-12345
-6789
-END DATA.
-
-VECTOR N=N1 TO N5.
-VECTOR X(5).
-LOOP I=1 TO 5.
-COMPUTE X(I)=N(I) + 1.
-END LOOP.
-
-FORMATS ALL (F2).
-
-LIST.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TEMPDIR/vectors.stat > $TEMPDIR/vectors.err 2> $TEMPDIR/vectors.out
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare results"
-diff -c $TEMPDIR/pspp.csv - <<EOF
-Table: Reading 1 record from INLINE.
-Variable,Record,Columns,Format
-N1,1,1- 1,F1.0
-N2,1,2- 2,F1.0
-N3,1,3- 3,F1.0
-N4,1,4- 4,F1.0
-N5,1,5- 5,F1.0
-
-Table: Data List
-N1,N2,N3,N4,N5,X1,X2,X3,X4,X5,I
-1,2,3,4,5,.,3,.,.,.,5
-6,7,8,9,.,7,8,9,10,.,5
-EOF
-
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-
-pass;
+++ /dev/null
-#! /bin/sh
-
-# Tests BINARY and 360 data file formats.
-
-TEMPDIR=/tmp/pspp-tst-$$
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-: ${PERL:=perl}
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-
-
-cd $TEMPDIR
-
-activity="create data file"
-cat > $TEMPDIR/input.data <<EOF
-07-22-2007
-10-06-2007
-321
-07-14-1789
-08-26-1789
-4
-01-01-1972
-12-31-1999
-682
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create program to transform data into 360 formats"
-cat > $TEMPDIR/make-360.pl <<'EOF'
-use strict;
-use warnings;
-
-# ASCII to EBCDIC translation table
-our ($ascii2ebcdic) = ""
-. "\x00\x01\x02\x03\x37\x2d\x2e\x2f"
-. "\x16\x05\x25\x0b\x0c\x0d\x0e\x0f"
-. "\x10\x11\x12\x13\x3c\x3d\x32\x26"
-. "\x18\x19\x3f\x27\x1c\x1d\x1e\x1f"
-. "\x40\x5a\x7f\x7b\x5b\x6c\x50\x7d"
-. "\x4d\x5d\x5c\x4e\x6b\x60\x4b\x61"
-. "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
-. "\xf8\xf9\x7a\x5e\x4c\x7e\x6e\x6f"
-. "\x7c\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
-. "\xc8\xc9\xd1\xd2\xd3\xd4\xd5\xd6"
-. "\xd7\xd8\xd9\xe2\xe3\xe4\xe5\xe6"
-. "\xe7\xe8\xe9\xad\xe0\xbd\x9a\x6d"
-. "\x79\x81\x82\x83\x84\x85\x86\x87"
-. "\x88\x89\x91\x92\x93\x94\x95\x96"
-. "\x97\x98\x99\xa2\xa3\xa4\xa5\xa6"
-. "\xa7\xa8\xa9\xc0\x4f\xd0\x5f\x07"
-. "\x20\x21\x22\x23\x24\x15\x06\x17"
-. "\x28\x29\x2a\x2b\x2c\x09\x0a\x1b"
-. "\x30\x31\x1a\x33\x34\x35\x36\x08"
-. "\x38\x39\x3a\x3b\x04\x14\x3e\xe1"
-. "\x41\x42\x43\x44\x45\x46\x47\x48"
-. "\x49\x51\x52\x53\x54\x55\x56\x57"
-. "\x58\x59\x62\x63\x64\x65\x66\x67"
-. "\x68\x69\x70\x71\x72\x73\x74\x75"
-. "\x76\x77\x78\x80\x8a\x8b\x8c\x8d"
-. "\x8e\x8f\x90\x6a\x9b\x9c\x9d\x9e"
-. "\x9f\xa0\xaa\xab\xac\x4a\xae\xaf"
-. "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
-. "\xb8\xb9\xba\xbb\xbc\xa1\xbe\xbf"
-. "\xca\xcb\xcc\xcd\xce\xcf\xda\xdb"
-. "\xdc\xdd\xde\xdf\xea\xeb\xec\xed"
-. "\xee\xef\xfa\xfb\xfc\xfd\xfe\xff";
-length ($ascii2ebcdic) == 256 || die;
-
-open (INPUT, '<', 'input.data') or die "input.data: open: $!\n";
-my (@data) = <INPUT> or die;
-close (INPUT) or die;
-chomp $_ foreach @data;
-
-# Binary mode.
-open (OUTPUT, '>', 'binary.bin') or die "binary.bin: create: $!\n";
-for $_ (@data) {
- my ($reclen) = pack ("V", length);
- print OUTPUT $reclen, $_, $reclen;
-}
-close (OUTPUT) or die;
-
-# Fixed mode.
-open (OUTPUT, '>', 'fixed.bin') or die "fixed.bin: create: $!\n";
-my ($lrecl) = 32;
-for $_ (@data) {
- my ($out) = substr ($_, 0, $lrecl);
- $out .= ' ' x ($lrecl - length ($out));
- length ($out) == 32 or die;
- print OUTPUT a2e ($out);
-}
-close (OUTPUT) or die;
-
-# Variable mode.
-open (OUTPUT, '>', 'variable.bin') or die "variable.bin: create: $!\n";
-our (@records);
-for $_ (@data) {
- push (@records, pack ("n xx", length ($_) + 4) . a2e ($_));
-}
-dump_records ();
-close (OUTPUT) or die;
-
-# Spanned mode.
-open (OUTPUT, '>', 'spanned.bin') or die "spanned.bin: create: $!\n";
-for my $line (@data) {
- local ($_) = $line;
- my (@r);
- while (length) {
- my ($n) = min (int (rand (5)), length);
- push (@r, substr ($_, 0, $n, ''));
- }
- foreach my $i (0...$#r) {
- my $scc = ($#r == 0 ? 0
- : $i == 0 ? 1
- : $i == $#r ? 2
- : 3);
- push (@records,
- pack ("nCx", length ($r[$i]) + 4, $scc) . a2e ($r[$i]));
- }
-}
-dump_records ();
-close (OUTPUT) or die;
-
-sub a2e {
- local ($_) = @_;
- my ($s) = "";
- foreach (split (//)) {
- $s .= substr ($ascii2ebcdic, ord, 1);
- }
- return $s;
-}
-
-sub min {
- my ($a, $b) = @_;
- return $a < $b ? $a : $b
-}
-
-sub dump_records {
- while (@records) {
- my ($n) = min (int (rand (5)) + 1, scalar (@records));
- my (@r) = splice (@records, 0, $n);
- my ($len) = 0;
- $len += length foreach @r;
- print OUTPUT pack ("n xx", $len + 4);
- print OUTPUT foreach @r;
- }
-}
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="running make-360.pl"
-$PERL make-360.pl
-if [ $? -ne 0 ] ; then no_result ; fi
-
-binary_fh='mode=binary'
-fixed_fh='mode=360 /recform=fixed /lrecl=32'
-variable_fh='mode=360 /recform=variable'
-spanned_fh='mode=360 /recform=spanned'
-
-for type in binary fixed variable spanned; do
- activity="create $type.pspp"
- eval fh=\$${type}_fh
- cat > $type.pspp <<EOF
-* Read the original file and list its data, to test reading these formats.
-file handle input/name='$type.bin'/$fh.
-data list fixed file=input notable
- /1 start 1-10 (adate)
- /2 end 1-10 (adate)
- /3 count 1-3.
-list.
-
-* Output the data to a new file in the same format.
-file handle output/name='${type}2.bin'/$fh.
-compute count=count + 1.
-print outfile=output/start end count.
-execute.
-
-* Re-read the new data and list it, to verify that it was written correctly.
-data list fixed file=output notable/
- start 2-11 (adate)
- end 13-22 (adate)
- count 24-26.
-list.
-
-EOF
- if [ $? -ne 0 ] ; then no_result ; fi
-
- # Make sure that pspp.csv isn't left over from another run.
- rm -f pspp.csv
-
- activity="run $type.pspp"
- $SUPERVISOR $PSPP -o pspp.csv $type.pspp
- if [ $? -ne 0 ] ; then fail ; fi
-
- activity="compare $type.pspp output"
- diff -c $TEMPDIR/pspp.csv - << EOF
-Table: Data List
-start,end,count
-07/22/2007,10/06/2007,321
-07/14/1789,08/26/1789,4
-01/01/1972,12/31/1999,682
-
-Table: Data List
-start,end,count
-07/22/2007,10/06/2007,322
-07/14/1789,08/26/1789,5
-01/01/1972,12/31/1999,683
-EOF
- if [ $? -ne 0 ] ; then fail ; fi
-done
-
-pass
+++ /dev/null
-#! /bin/sh
-
-TEMPDIR=/tmp/pspp-tst-$$
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-: ${PERL:=perl}
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="generate data input file"
-$PERL -e 'print pack "n", $_ foreach 0...65535' > bcd-in.data
-
-activity="write pspp syntax"
-cat > bcd-in.pspp <<'EOF'
-SET ERRORS=NONE.
-SET MXWARNS=10000000.
-SET MXERRS=10000000.
-FILE HANDLE data/NAME='bcd-in.data'/MODE=IMAGE/LRECL=2.
-DATA LIST FILE=data/p 1-2 (P) pk 1-2 (PK).
-COMPUTE x=$CASENUM - 1.
-PRINT OUTFILE='bcd-in.out'/x (PIBHEX4) ' ' P PK.
-EXECUTE.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv bcd-in.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="gunzip expected results"
-gzip -cd < $top_srcdir/tests/formats/bcd-in.expected.cmp.gz > bcd-in.expected.cmp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="decompress expected results"
-$PERL -pe "printf ' %04X ', $.-1" < bcd-in.expected.cmp > bcd-in.expected
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -u bcd-in.expected bcd-in.out
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#! /bin/sh
-
-TEMPDIR=/tmp/pspp-tst-$$
-mkdir -p $TEMPDIR
-trap 'cd /; rm -rf $TEMPDIR' 0
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-fail()
-{
- echo $activity
- echo FAILED
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- exit 2;
-}
-
-pass()
-{
- exit 0;
-}
-
-cd $TEMPDIR
-
-activity="write pspp syntax"
-cat > binhex-out.pspp <<EOF
-set errors=none.
-set mxwarns=10000000.
-set wib=msbfirst.
-data list /x 1-10.
-begin data.
-
-2
-11
-123
-1234
-913
-3.14159
-777
-82
-690
--2
--11
--123
--1234
--913
--3.14159
--777
--82
--690
--.1
--.5
--.9
-9999.1
-9999.5
-9999.9
-10000
-18231237
--9999.1
--9999.5
--9999.9
--10000
--8231237
-999.1
-999.5
-999.9
-1000
-8231237
--999.1
--999.5
--999.9
--1000
--8231237
-99.1
-99.5
-99.9
-100
-821237
--99.1
--99.5
--99.9
--100
--831237
-9.1
-9.5
-9.9
-10
-81237
--9.1
--9.5
--9.9
--10
--81237
-1.1
--1.1
-1.5
--1.5
-1.9
--1.9
-end data.
-file handle output/name='binhex.out'/mode=image/lrecl=256.
-write outfile=output/
- x(p1.0) x(p2.0) x(p3.0) x(p4.0) /* 000
- x(p2.1) x(p3.1) x(p4.1) /* 00a
- x(p3.2) x(p4.2) /* 013
- x(p4.3) /* 01a
- x(pk1.0) x(pk2.0) x(pk3.0) x(pk4.0) /* 01e
- x(pk2.1) x(pk3.1) x(pk4.1) /* 028
- x(pk3.2) x(pk4.2) /* 031
- x(pk4.3) /* 038
- x(ib1.0) x(ib2.0) x(ib3.0) x(ib4.0) /* 03c
- x(ib1.1) x(ib2.1) x(ib3.1) x(ib4.1) /* 046
- x(ib1.2) x(ib2.2) x(ib3.2) x(ib4.2) /* 050
- x(ib1.3) x(ib2.3) x(ib3.3) x(ib4.3) /* 05a
- x(ib2.4) x(ib3.4) x(ib4.4) /* 064
- x(ib2.5) x(ib3.5) x(ib4.5) /* 06d
- x(ib3.6) x(ib4.6) /* 076
- x(ib3.7) x(ib4.7) /* 07d
- x(ib3.8) x(ib4.8) /* 084
- x(ib4.9) /* 08b
- x(ib4.10) /* 08f
- x(pib1.0) x(pib2.0) x(pib3.0) x(pib4.0) /* 093
- x(pib1.1) x(pib2.1) x(pib3.1) x(pib4.1) /* 09d
- x(pib1.2) x(pib2.2) x(pib3.2) x(pib4.2) /* 0a7
- x(pib1.3) x(pib2.3) x(pib3.3) x(pib4.3) /* 0b1
- x(pib2.4) x(pib3.4) x(pib4.4) /* 0bb
- x(pib2.5) x(pib3.5) x(pib4.5) /* 0c4
- x(pib3.6) x(pib4.6) /* 0cd
- x(pib3.7) x(pib4.7) /* 0d4
- x(pib3.8) x(pib4.8) /* 0db
- x(pib4.9) /* 0e2
- x(pib4.10) /* 0e6
- x(pibhex2) x(pibhex4) /* 0ea
- x(pibhex6) x(pibhex8). /* 0f0
- /* 0fe
-execute.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv binhex-out.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="gunzip expected results"
-gzip -cd < $top_srcdir/tests/formats/binhex-out.expected.gz > expected.out
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-cmp expected.out binhex.out
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#! /bin/sh
-
-TEMPDIR=/tmp/pspp-tst-$$
-mkdir -p $TEMPDIR
-trap 'cd /; rm -rf $TEMPDIR' 0
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-: ${PERL:=perl}
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-fail()
-{
- echo $activity
- echo FAILED
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- exit 2;
-}
-
-pass()
-{
- exit 0;
-}
-
-cd $TEMPDIR
-
-activity="write PRNG fragment"
-cat > my-rand.pl <<'EOF'
-# This random number generator and the test for it below are drawn
-# from Park and Miller, "Random Number Generators: Good Ones are Hard
-# to Come By", Communications of the ACM 31:10 (October 1988). It is
-# documented to function properly on systems with a 46-bit or longer
-# real significand, which includes systems that have 64-bit IEEE reals
-# (with 53-bit significand). The test should catch any systems for
-# which this is not true, in any case.
-
-our ($seed) = 1;
-sub my_rand {
- my ($modulo) = @_;
- my ($a) = 16807;
- my ($m) = 2147483647;
- my ($tmp) = $a * $seed;
- $seed = $tmp - $m * int ($tmp / $m);
- return $seed % $modulo;
-}
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="write PRNG test program"
-cat > test-my-rand.pl <<'EOF'
-#! /usr/bin/perl
-use strict;
-use warnings;
-do 'my-rand.pl';
-my_rand (1) foreach 1...10000;
-our $seed;
-die $seed if $seed != 1043618065;
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="test PRNG"
-$PERL test-my-rand.pl
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="write program to generate PSPP syntax and data"
-cat > date-in.pl <<'EOF'
-#! /usr/bin/perl
-
-use strict;
-use warnings;
-
-do 'my-rand.pl';
-
-my @formats = (['date', 'd-m-y'],
- ['adate', 'm-d-y'],
- ['edate', 'd-m-y'],
- ['jdate', 'j'],
- ['sdate', 'y-m-d'],
- ['qyr', 'qQy'],
- ['moyr', 'm-y'],
- ['wkyr', 'wWy'],
- ['datetime', 'd-m-y +H:M', 'd-m-y +H:M:S']);
-
-my @dates = (#yyyy mm dd jjj HH MM SS
- [1648, 6, 10, 162, 0, 0, 0],
- [1680, 6, 30, 182, 4, 50, 38],
- [1716, 7, 24, 206, 12, 31, 35],
- [1768, 6, 19, 171, 12, 47, 53],
- [1819, 8, 2, 214, 1, 26, 0],
- [1839, 3, 27, 86, 20, 58, 11],
- [1903, 4, 19, 109, 7, 36, 5],
- [1929, 8, 25, 237, 15, 43, 49],
- [1941, 9, 29, 272, 4, 25, 9],
- [1943, 4, 19, 109, 6, 49, 27],
- [1943, 10, 7, 280, 2, 57, 52],
- [1992, 3, 17, 77, 16, 45, 44],
- [1996, 2, 25, 56, 21, 30, 57],
- [1941, 9, 29, 272, 4, 25, 9],
- [1943, 4, 19, 109, 6, 49, 27],
- [1943, 10, 7, 280, 2, 57, 52],
- [1992, 3, 17, 77, 16, 45, 44],
- [1996, 2, 25, 56, 21, 30, 57],
- [2038, 11, 10, 314, 22, 30, 4],
- [2094, 7, 18, 199, 1, 56, 51]);
-
-open (SYNTAX, '>', 'date-in.pspp') or die "date-in.pspp: create: $!\n";
-print SYNTAX "SET EPOCH 1930.\n";
-for my $format (@formats) {
- my ($name) = @$format;
- print SYNTAX "DATA LIST file='$name.data'/$name 1-40 ($name).\n";
- print SYNTAX "PRINT OUTFILE='$name.out'/$name (F16.2).\n";
- print SYNTAX "EXECUTE.\n";
-}
-close (SYNTAX);
-
-for my $format (@formats) {
- my ($fmt_name, @templates) = @$format;
- my ($fn) = "$fmt_name.data";
- open (DATA, '>', $fn) or die "$fn: create: $!\n";
- select DATA;
- for my $template (@templates) {
- for my $date (@dates) {
- print_date_with_template ($date, $template) for 1...10;
- }
- }
- close (DATA);
-}
-
-sub print_date_with_template {
- my ($date, $template) = @_;
- my ($year, $month, $day, $julian, $hour, $minute, $second) = @$date;
- my ($quarter) = int (($month - 1) / 3) + 1;
- my ($week) = int (($julian - 1) / 7) + 1;
- my (@year_types) = ('full');
- push (@year_types, '2digit') if $year >= 1930 && $year < 2030;
- for my $c (split ('', $template)) {
- if ($c eq 'd') {
- printf (+pick ('%d', '%02d'), $day);
- } elsif ($c eq 'm') {
- my ($type) = pick ('arabic', 'roman', 'abbrev', 'full');
- if ($type eq 'arabic') {
- printf (+pick ('%d', '%02d'), $month);
- } elsif ($type eq 'roman') {
- my ($mmm) = ('i', 'ii', 'iii',
- 'iv', 'v', 'vi',
- 'vii', 'viii', 'ix',
- 'x', 'xi', 'xii')[$month - 1];
- print_rand_case ($mmm);
- } elsif ($type eq 'abbrev') {
- my ($mmm) = qw (jan feb mar apr may jun
- jul aug sep oct nov dec)[$month - 1];
- print_rand_case ($mmm);
- } elsif ($type eq 'full') {
- my ($mmm) = qw (january february march
- april may june
- july august september
- october november december)[$month - 1];
- print_rand_case ($mmm);
- } else {
- die;
- }
- } elsif ($c eq 'y') {
- my ($type) = pick (@year_types);
- if ($type eq '2digit') {
- printf (+pick ('%d', '%02d'), $year % 100);
- } elsif ($type eq 'full') {
- print $year;
- } else {
- die;
- }
- } elsif ($c eq 'j') {
- my ($type) = pick (@year_types);
- if ($type eq '2digit') {
- printf ("%02d%03d", $year % 100, $julian);
- } elsif ($type eq 'full') {
- printf ("%04d%03d", $year, $julian);
- } else {
- die;
- }
- } elsif ($c eq 'q') {
- print $quarter;
- } elsif ($c eq 'w') {
- print $week;
- } elsif ($c eq 'H') {
- printf (+pick ('%d', '%02d'), $hour);
- } elsif ($c eq 'M') {
- printf (+pick ('%d', '%02d'), $minute);
- } elsif ($c eq 'S') {
- printf (+pick ('%d', '%02d'), $second);
- } elsif ($c eq '-') {
- print +pick (' ', '-', '.', ',', '/');
- } elsif ($c eq ':') {
- print +pick (' ', ':');
- } elsif ($c eq ' ') {
- print ' ';
- } elsif ($c eq 'Q') {
- maybe_print_space ();
- print_rand_case ('q');
- maybe_print_space ();
- } elsif ($c eq 'W') {
- maybe_print_space ();
- print_rand_case ('wk');
- maybe_print_space ();
- } elsif ($c eq '+') {
- print +pick ('', '-', '+');
- } else {
- die;
- }
- }
- print "\n";
-}
-
-sub print_rand_case {
- my ($s) = @_;
- my ($case) = pick (qw (uc lc tc));
- if ($case eq 'uc') {
- print uc ($s);
- } elsif ($case eq 'lc') {
- print lc ($s);
- } elsif ($case eq 'tc') {
- print ucfirst ($s);
- } else {
- die;
- }
-}
-
-sub maybe_print_space {
- print +pick ('', ' ');
-}
-
-sub pick {
- return $_[int (my_rand ($#_ + 1))];
-}
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="generate PSPP syntax and data"
-$PERL date-in.pl
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv date-in.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare adate.out output"
-diff -u adate.out - <<EOF
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare date.out output"
-diff -u date.out - <<EOF
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare datetime.out output"
-diff -u datetime.out - <<EOF
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 3083512200.00
- 3083512200.00
- 3083512200.00
- 3083512200.00
- 3083547000.00
- 3083547000.00
- 3083547000.00
- 3083547000.00
- 3083512200.00
- 3083547000.00
- 4221635460.00
- 4221635460.00
- 4221545340.00
- 4221635460.00
- 4221545340.00
- 4221635460.00
- 4221545340.00
- 4221635460.00
- 4221545340.00
- 4221635460.00
- 5859607620.00
- 5859607620.00
- 5859607620.00
- 5859607620.00
- 5859515580.00
- 5859607620.00
- 5859607620.00
- 5859515580.00
- 5859607620.00
- 5859607620.00
- 7472644440.00
- 7472654760.00
- 7472654760.00
- 7472654760.00
- 7472644440.00
- 7472654760.00
- 7472644440.00
- 7472644440.00
- 7472654760.00
- 7472654760.00
- 8092817880.00
- 8092817880.00
- 8092817880.00
- 8092817880.00
- 8092666920.00
- 8092817880.00
- 8092817880.00
- 8092817880.00
- 8092817880.00
- 8092817880.00
- 10114356960.00
- 10114302240.00
- 10114302240.00
- 10114356960.00
- 10114356960.00
- 10114356960.00
- 10114356960.00
- 10114356960.00
- 10114356960.00
- 10114302240.00
- 10945873020.00
- 10945873020.00
- 10945873020.00
- 10945986180.00
- 10945873020.00
- 10945986180.00
- 10945873020.00
- 10945986180.00
- 10945986180.00
- 10945873020.00
- 11327660700.00
- 11327628900.00
- 11327660700.00
- 11327660700.00
- 11327628900.00
- 11327628900.00
- 11327660700.00
- 11327660700.00
- 11327660700.00
- 11327660700.00
- 11376658140.00
- 11376658140.00
- 11376658140.00
- 11376658140.00
- 11376658140.00
- 11376658140.00
- 11376609060.00
- 11376658140.00
- 11376658140.00
- 11376609060.00
- 11391418620.00
- 11391418620.00
- 11391418620.00
- 11391397380.00
- 11391418620.00
- 11391418620.00
- 11391397380.00
- 11391418620.00
- 11391397380.00
- 11391397380.00
- 12920229900.00
- 12920109300.00
- 12920109300.00
- 12920109300.00
- 12920229900.00
- 12920229900.00
- 12920229900.00
- 12920229900.00
- 12920109300.00
- 12920109300.00
- 13044508200.00
- 13044663000.00
- 13044663000.00
- 13044508200.00
- 13044508200.00
- 13044663000.00
- 13044663000.00
- 13044508200.00
- 13044663000.00
- 13044663000.00
- 11327628900.00
- 11327660700.00
- 11327660700.00
- 11327628900.00
- 11327660700.00
- 11327660700.00
- 11327628900.00
- 11327660700.00
- 11327628900.00
- 11327628900.00
- 11376658140.00
- 11376658140.00
- 11376658140.00
- 11376658140.00
- 11376658140.00
- 11376609060.00
- 11376609060.00
- 11376658140.00
- 11376609060.00
- 11376658140.00
- 11391418620.00
- 11391397380.00
- 11391418620.00
- 11391397380.00
- 11391397380.00
- 11391397380.00
- 11391418620.00
- 11391418620.00
- 11391418620.00
- 11391397380.00
- 12920229900.00
- 12920229900.00
- 12920229900.00
- 12920229900.00
- 12920229900.00
- 12920229900.00
- 12920109300.00
- 12920229900.00
- 12920109300.00
- 12920229900.00
- 13044508200.00
- 13044663000.00
- 13044508200.00
- 13044663000.00
- 13044663000.00
- 13044663000.00
- 13044663000.00
- 13044663000.00
- 13044663000.00
- 13044508200.00
- 14392420200.00
- 14392420200.00
- 14392258200.00
- 14392258200.00
- 14392420200.00
- 14392258200.00
- 14392258200.00
- 14392420200.00
- 14392420200.00
- 14392420200.00
- 16149635760.00
- 16149621840.00
- 16149635760.00
- 16149635760.00
- 16149635760.00
- 16149635760.00
- 16149635760.00
- 16149621840.00
- 16149621840.00
- 16149635760.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 3083547038.00
- 3083512162.00
- 3083512162.00
- 3083512162.00
- 3083547038.00
- 3083512162.00
- 3083547038.00
- 3083547038.00
- 3083547038.00
- 3083512162.00
- 4221635495.00
- 4221635495.00
- 4221545305.00
- 4221635495.00
- 4221635495.00
- 4221635495.00
- 4221545305.00
- 4221545305.00
- 4221545305.00
- 4221635495.00
- 5859607673.00
- 5859607673.00
- 5859515527.00
- 5859607673.00
- 5859607673.00
- 5859607673.00
- 5859607673.00
- 5859607673.00
- 5859515527.00
- 5859607673.00
- 7472654760.00
- 7472654760.00
- 7472654760.00
- 7472654760.00
- 7472654760.00
- 7472654760.00
- 7472654760.00
- 7472644440.00
- 7472644440.00
- 7472654760.00
- 8092817891.00
- 8092666909.00
- 8092817891.00
- 8092817891.00
- 8092666909.00
- 8092817891.00
- 8092817891.00
- 8092817891.00
- 8092817891.00
- 8092817891.00
- 10114356965.00
- 10114356965.00
- 10114302235.00
- 10114356965.00
- 10114356965.00
- 10114356965.00
- 10114356965.00
- 10114356965.00
- 10114356965.00
- 10114356965.00
- 10945986229.00
- 10945986229.00
- 10945872971.00
- 10945986229.00
- 10945872971.00
- 10945986229.00
- 10945986229.00
- 10945986229.00
- 10945986229.00
- 10945986229.00
- 11327628891.00
- 11327660709.00
- 11327660709.00
- 11327660709.00
- 11327660709.00
- 11327660709.00
- 11327628891.00
- 11327628891.00
- 11327660709.00
- 11327628891.00
- 11376658167.00
- 11376609033.00
- 11376609033.00
- 11376609033.00
- 11376658167.00
- 11376609033.00
- 11376658167.00
- 11376609033.00
- 11376609033.00
- 11376658167.00
- 11391397328.00
- 11391418672.00
- 11391397328.00
- 11391418672.00
- 11391397328.00
- 11391397328.00
- 11391418672.00
- 11391418672.00
- 11391418672.00
- 11391418672.00
- 12920229944.00
- 12920229944.00
- 12920109256.00
- 12920109256.00
- 12920229944.00
- 12920109256.00
- 12920109256.00
- 12920229944.00
- 12920229944.00
- 12920109256.00
- 13044663057.00
- 13044508143.00
- 13044663057.00
- 13044663057.00
- 13044508143.00
- 13044663057.00
- 13044663057.00
- 13044663057.00
- 13044508143.00
- 13044663057.00
- 11327660709.00
- 11327660709.00
- 11327628891.00
- 11327660709.00
- 11327628891.00
- 11327628891.00
- 11327660709.00
- 11327660709.00
- 11327660709.00
- 11327628891.00
- 11376658167.00
- 11376658167.00
- 11376609033.00
- 11376609033.00
- 11376609033.00
- 11376658167.00
- 11376609033.00
- 11376658167.00
- 11376609033.00
- 11376658167.00
- 11391418672.00
- 11391418672.00
- 11391418672.00
- 11391397328.00
- 11391418672.00
- 11391418672.00
- 11391397328.00
- 11391418672.00
- 11391418672.00
- 11391418672.00
- 12920229944.00
- 12920229944.00
- 12920229944.00
- 12920109256.00
- 12920229944.00
- 12920229944.00
- 12920229944.00
- 12920109256.00
- 12920229944.00
- 12920229944.00
- 13044508143.00
- 13044663057.00
- 13044663057.00
- 13044663057.00
- 13044508143.00
- 13044663057.00
- 13044508143.00
- 13044508143.00
- 13044663057.00
- 13044508143.00
- 14392420204.00
- 14392420204.00
- 14392258196.00
- 14392420204.00
- 14392420204.00
- 14392258196.00
- 14392258196.00
- 14392420204.00
- 14392258196.00
- 14392420204.00
- 16149621789.00
- 16149635811.00
- 16149621789.00
- 16149635811.00
- 16149635811.00
- 16149621789.00
- 16149621789.00
- 16149635811.00
- 16149621789.00
- 16149635811.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare edate.out output"
-diff -u edate.out - <<EOF
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare jdate.out output"
-diff -u jdate.out - <<EOF
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare moyr.out output"
-diff -u moyr.out - <<EOF
- 2071180800.00
- 2071180800.00
- 2071180800.00
- 2071180800.00
- 2071180800.00
- 2071180800.00
- 2071180800.00
- 2071180800.00
- 2071180800.00
- 2071180800.00
- 3081024000.00
- 3081024000.00
- 3081024000.00
- 3081024000.00
- 3081024000.00
- 3081024000.00
- 3081024000.00
- 3081024000.00
- 3081024000.00
- 3081024000.00
- 4219603200.00
- 4219603200.00
- 4219603200.00
- 4219603200.00
- 4219603200.00
- 4219603200.00
- 4219603200.00
- 4219603200.00
- 4219603200.00
- 4219603200.00
- 5858006400.00
- 5858006400.00
- 5858006400.00
- 5858006400.00
- 5858006400.00
- 5858006400.00
- 5858006400.00
- 5858006400.00
- 5858006400.00
- 5858006400.00
- 7472563200.00
- 7472563200.00
- 7472563200.00
- 7472563200.00
- 7472563200.00
- 7472563200.00
- 7472563200.00
- 7472563200.00
- 7472563200.00
- 7472563200.00
- 8090496000.00
- 8090496000.00
- 8090496000.00
- 8090496000.00
- 8090496000.00
- 8090496000.00
- 8090496000.00
- 8090496000.00
- 8090496000.00
- 8090496000.00
- 10112774400.00
- 10112774400.00
- 10112774400.00
- 10112774400.00
- 10112774400.00
- 10112774400.00
- 10112774400.00
- 10112774400.00
- 10112774400.00
- 10112774400.00
- 10943856000.00
- 10943856000.00
- 10943856000.00
- 10943856000.00
- 10943856000.00
- 10943856000.00
- 10943856000.00
- 10943856000.00
- 10943856000.00
- 10943856000.00
- 11325225600.00
- 11325225600.00
- 11325225600.00
- 11325225600.00
- 11325225600.00
- 11325225600.00
- 11325225600.00
- 11325225600.00
- 11325225600.00
- 11325225600.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 12918787200.00
- 12918787200.00
- 12918787200.00
- 12918787200.00
- 12918787200.00
- 12918787200.00
- 12918787200.00
- 12918787200.00
- 12918787200.00
- 12918787200.00
- 13042512000.00
- 13042512000.00
- 13042512000.00
- 13042512000.00
- 13042512000.00
- 13042512000.00
- 13042512000.00
- 13042512000.00
- 13042512000.00
- 13042512000.00
- 11325225600.00
- 11325225600.00
- 11325225600.00
- 11325225600.00
- 11325225600.00
- 11325225600.00
- 11325225600.00
- 11325225600.00
- 11325225600.00
- 11325225600.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 12918787200.00
- 12918787200.00
- 12918787200.00
- 12918787200.00
- 12918787200.00
- 12918787200.00
- 12918787200.00
- 12918787200.00
- 12918787200.00
- 12918787200.00
- 13042512000.00
- 13042512000.00
- 13042512000.00
- 13042512000.00
- 13042512000.00
- 13042512000.00
- 13042512000.00
- 13042512000.00
- 13042512000.00
- 13042512000.00
- 14391561600.00
- 14391561600.00
- 14391561600.00
- 14391561600.00
- 14391561600.00
- 14391561600.00
- 14391561600.00
- 14391561600.00
- 14391561600.00
- 14391561600.00
- 16148160000.00
- 16148160000.00
- 16148160000.00
- 16148160000.00
- 16148160000.00
- 16148160000.00
- 16148160000.00
- 16148160000.00
- 16148160000.00
- 16148160000.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare qyr.out output"
-diff -u qyr.out - <<EOF
- 2065910400.00
- 2065910400.00
- 2065910400.00
- 2065910400.00
- 2065910400.00
- 2065910400.00
- 2065910400.00
- 2065910400.00
- 2065910400.00
- 2065910400.00
- 3075753600.00
- 3075753600.00
- 3075753600.00
- 3075753600.00
- 3075753600.00
- 3075753600.00
- 3075753600.00
- 3075753600.00
- 3075753600.00
- 3075753600.00
- 4219603200.00
- 4219603200.00
- 4219603200.00
- 4219603200.00
- 4219603200.00
- 4219603200.00
- 4219603200.00
- 4219603200.00
- 4219603200.00
- 4219603200.00
- 5852736000.00
- 5852736000.00
- 5852736000.00
- 5852736000.00
- 5852736000.00
- 5852736000.00
- 5852736000.00
- 5852736000.00
- 5852736000.00
- 5852736000.00
- 7469884800.00
- 7469884800.00
- 7469884800.00
- 7469884800.00
- 7469884800.00
- 7469884800.00
- 7469884800.00
- 7469884800.00
- 7469884800.00
- 7469884800.00
- 8085398400.00
- 8085398400.00
- 8085398400.00
- 8085398400.00
- 8085398400.00
- 8085398400.00
- 8085398400.00
- 8085398400.00
- 8085398400.00
- 8085398400.00
- 10112774400.00
- 10112774400.00
- 10112774400.00
- 10112774400.00
- 10112774400.00
- 10112774400.00
- 10112774400.00
- 10112774400.00
- 10112774400.00
- 10112774400.00
- 10941177600.00
- 10941177600.00
- 10941177600.00
- 10941177600.00
- 10941177600.00
- 10941177600.00
- 10941177600.00
- 10941177600.00
- 10941177600.00
- 10941177600.00
- 11319868800.00
- 11319868800.00
- 11319868800.00
- 11319868800.00
- 11319868800.00
- 11319868800.00
- 11319868800.00
- 11319868800.00
- 11319868800.00
- 11319868800.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 12913603200.00
- 12913603200.00
- 12913603200.00
- 12913603200.00
- 12913603200.00
- 12913603200.00
- 12913603200.00
- 12913603200.00
- 12913603200.00
- 12913603200.00
- 13039833600.00
- 13039833600.00
- 13039833600.00
- 13039833600.00
- 13039833600.00
- 13039833600.00
- 13039833600.00
- 13039833600.00
- 13039833600.00
- 13039833600.00
- 11319868800.00
- 11319868800.00
- 11319868800.00
- 11319868800.00
- 11319868800.00
- 11319868800.00
- 11319868800.00
- 11319868800.00
- 11319868800.00
- 11319868800.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11375078400.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 12913603200.00
- 12913603200.00
- 12913603200.00
- 12913603200.00
- 12913603200.00
- 12913603200.00
- 12913603200.00
- 12913603200.00
- 12913603200.00
- 12913603200.00
- 13039833600.00
- 13039833600.00
- 13039833600.00
- 13039833600.00
- 13039833600.00
- 13039833600.00
- 13039833600.00
- 13039833600.00
- 13039833600.00
- 13039833600.00
- 14388883200.00
- 14388883200.00
- 14388883200.00
- 14388883200.00
- 14388883200.00
- 14388883200.00
- 14388883200.00
- 14388883200.00
- 14388883200.00
- 14388883200.00
- 16148160000.00
- 16148160000.00
- 16148160000.00
- 16148160000.00
- 16148160000.00
- 16148160000.00
- 16148160000.00
- 16148160000.00
- 16148160000.00
- 16148160000.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare sdate.out output"
-diff -u sdate.out - <<EOF
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 3083529600.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 4221590400.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 5859561600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 7472649600.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 8092742400.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10114329600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 10945929600.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11327644800.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11376633600.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 11391408000.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 12920169600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 13044585600.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 14392339200.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
- 16149628800.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare wkyr.out output"
-diff -u wkyr.out - <<EOF
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 2071958400.00
- 3083011200.00
- 3083011200.00
- 3083011200.00
- 3083011200.00
- 3083011200.00
- 3083011200.00
- 3083011200.00
- 3083011200.00
- 3083011200.00
- 3083011200.00
- 4221417600.00
- 4221417600.00
- 4221417600.00
- 4221417600.00
- 4221417600.00
- 4221417600.00
- 4221417600.00
- 4221417600.00
- 4221417600.00
- 4221417600.00
- 5859388800.00
- 5859388800.00
- 5859388800.00
- 5859388800.00
- 5859388800.00
- 5859388800.00
- 5859388800.00
- 5859388800.00
- 5859388800.00
- 5859388800.00
- 7472390400.00
- 7472390400.00
- 7472390400.00
- 7472390400.00
- 7472390400.00
- 7472390400.00
- 7472390400.00
- 7472390400.00
- 7472390400.00
- 7472390400.00
- 8092656000.00
- 8092656000.00
- 8092656000.00
- 8092656000.00
- 8092656000.00
- 8092656000.00
- 8092656000.00
- 8092656000.00
- 8092656000.00
- 8092656000.00
- 10114070400.00
- 10114070400.00
- 10114070400.00
- 10114070400.00
- 10114070400.00
- 10114070400.00
- 10114070400.00
- 10114070400.00
- 10114070400.00
- 10114070400.00
- 10945497600.00
- 10945497600.00
- 10945497600.00
- 10945497600.00
- 10945497600.00
- 10945497600.00
- 10945497600.00
- 10945497600.00
- 10945497600.00
- 10945497600.00
- 11327212800.00
- 11327212800.00
- 11327212800.00
- 11327212800.00
- 11327212800.00
- 11327212800.00
- 11327212800.00
- 11327212800.00
- 11327212800.00
- 11327212800.00
- 11376374400.00
- 11376374400.00
- 11376374400.00
- 11376374400.00
- 11376374400.00
- 11376374400.00
- 11376374400.00
- 11376374400.00
- 11376374400.00
- 11376374400.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 12919651200.00
- 12919651200.00
- 12919651200.00
- 12919651200.00
- 12919651200.00
- 12919651200.00
- 12919651200.00
- 12919651200.00
- 12919651200.00
- 12919651200.00
- 13044067200.00
- 13044067200.00
- 13044067200.00
- 13044067200.00
- 13044067200.00
- 13044067200.00
- 13044067200.00
- 13044067200.00
- 13044067200.00
- 13044067200.00
- 11327212800.00
- 11327212800.00
- 11327212800.00
- 11327212800.00
- 11327212800.00
- 11327212800.00
- 11327212800.00
- 11327212800.00
- 11327212800.00
- 11327212800.00
- 11376374400.00
- 11376374400.00
- 11376374400.00
- 11376374400.00
- 11376374400.00
- 11376374400.00
- 11376374400.00
- 11376374400.00
- 11376374400.00
- 11376374400.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 11390889600.00
- 12919651200.00
- 12919651200.00
- 12919651200.00
- 12919651200.00
- 12919651200.00
- 12919651200.00
- 12919651200.00
- 12919651200.00
- 12919651200.00
- 12919651200.00
- 13044067200.00
- 13044067200.00
- 13044067200.00
- 13044067200.00
- 13044067200.00
- 13044067200.00
- 13044067200.00
- 13044067200.00
- 13044067200.00
- 13044067200.00
- 14391907200.00
- 14391907200.00
- 14391907200.00
- 14391907200.00
- 14391907200.00
- 14391907200.00
- 14391907200.00
- 14391907200.00
- 14391907200.00
- 14391907200.00
- 16149456000.00
- 16149456000.00
- 16149456000.00
- 16149456000.00
- 16149456000.00
- 16149456000.00
- 16149456000.00
- 16149456000.00
- 16149456000.00
- 16149456000.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#! /bin/sh
-
-TEMPDIR=/tmp/pspp-tst-$$
-mkdir -p $TEMPDIR
-trap 'cd /; rm -rf $TEMPDIR' 0
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-fail()
-{
- echo $activity
- echo FAILED
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- exit 2;
-}
-
-pass()
-{
- exit 0;
-}
-
-cd $TEMPDIR
-
-activity="write pspp syntax"
-cat > date-out.pspp <<EOF
-set epoch=1930.
-data list /x 1-30 (datetime).
-begin data.
-10-6-1648 0:0:0
-30-6-1680 4:50:38.12301
-24-7-1716 12:31:35.23453
-19-6-1768 12:47:53.34505
-2-8-1819 1:26:0.45615
-27-3-1839 20:58:11.56677
-19-4-1903 7:36:5.18964
-25-8-1929 15:43:49.83132
-29-9-1941 4:25:9.01293
-19-4-1943 6:49:27.52375
-7-10-1943 2:57:52.01565
-17-3-1992 16:45:44.86529
-25-2-1996 21:30:57.82047
-29-9-41 4:25:9.15395
-19-4-43 6:49:27.10533
-7-10-43 2:57:52.48229
-17-3-92 16:45:44.65827
-25-2-96 21:30:57.58219
-10-11-2038 22:30:4.18347
-18-7-2094 1:56:51.59319
-end data.
-print outfile='date-out.out'/x(date9) ' | ' x(date11).
-print outfile='date-out.out'/x(adate8) ' | ' x(adate10).
-print outfile='date-out.out'/x(edate8) ' | ' x(edate10).
-print outfile='date-out.out'/x(jdate5) ' | ' x(jdate7).
-print outfile='date-out.out'/x(sdate8) ' | ' x(sdate10).
-print outfile='date-out.out'/x(qyr6) ' | ' x(qyr8).
-print outfile='date-out.out'/x(moyr6) ' | ' x(moyr8).
-print outfile='date-out.out'/x(wkyr8) ' | ' x(wkyr10).
-print outfile='date-out.out'/x(datetime17).
-print outfile='date-out.out'/x(datetime18).
-print outfile='date-out.out'/x(datetime19).
-print outfile='date-out.out'/x(datetime20).
-print outfile='date-out.out'/x(datetime21).
-print outfile='date-out.out'/x(datetime22).
-print outfile='date-out.out'/x(datetime22.1).
-print outfile='date-out.out'/x(datetime23.2).
-print outfile='date-out.out'/x(datetime24.3).
-print outfile='date-out.out'/x(datetime25.4).
-print outfile='date-out.out'/x(datetime26.5).
-execute.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv date-out.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -u date-out.out - <<EOF
- ********* | 10-JUN-1648
- ******** | 06/10/1648
- ******** | 10.06.1648
- ***** | 1648162
- ******** | 1648/06/10
- ****** | 2 Q 1648
- ****** | JUN 1648
- ******** | 24 WK 1648
- 10-JUN-1648 00:00
- 10-JUN-1648 00:00
- 10-JUN-1648 00:00
- 10-JUN-1648 00:00:00
- 10-JUN-1648 00:00:00
- 10-JUN-1648 00:00:00
- 10-JUN-1648 00:00:00.0
- 10-JUN-1648 00:00:00.00
- 10-JUN-1648 00:00:00.000
- 10-JUN-1648 00:00:00.0000
- 10-JUN-1648 00:00:00.00000
- ********* | 30-JUN-1680
- ******** | 06/30/1680
- ******** | 30.06.1680
- ***** | 1680182
- ******** | 1680/06/30
- ****** | 2 Q 1680
- ****** | JUN 1680
- ******** | 26 WK 1680
- 30-JUN-1680 04:50
- 30-JUN-1680 04:50
- 30-JUN-1680 04:50
- 30-JUN-1680 04:50:38
- 30-JUN-1680 04:50:38
- 30-JUN-1680 04:50:38
- 30-JUN-1680 04:50:38.1
- 30-JUN-1680 04:50:38.12
- 30-JUN-1680 04:50:38.123
- 30-JUN-1680 04:50:38.1230
- 30-JUN-1680 04:50:38.12301
- ********* | 24-JUL-1716
- ******** | 07/24/1716
- ******** | 24.07.1716
- ***** | 1716206
- ******** | 1716/07/24
- ****** | 3 Q 1716
- ****** | JUL 1716
- ******** | 30 WK 1716
- 24-JUL-1716 12:31
- 24-JUL-1716 12:31
- 24-JUL-1716 12:31
- 24-JUL-1716 12:31:35
- 24-JUL-1716 12:31:35
- 24-JUL-1716 12:31:35
- 24-JUL-1716 12:31:35.2
- 24-JUL-1716 12:31:35.23
- 24-JUL-1716 12:31:35.235
- 24-JUL-1716 12:31:35.2345
- 24-JUL-1716 12:31:35.23453
- ********* | 19-JUN-1768
- ******** | 06/19/1768
- ******** | 19.06.1768
- ***** | 1768171
- ******** | 1768/06/19
- ****** | 2 Q 1768
- ****** | JUN 1768
- ******** | 25 WK 1768
- 19-JUN-1768 12:47
- 19-JUN-1768 12:47
- 19-JUN-1768 12:47
- 19-JUN-1768 12:47:53
- 19-JUN-1768 12:47:53
- 19-JUN-1768 12:47:53
- 19-JUN-1768 12:47:53.3
- 19-JUN-1768 12:47:53.35
- 19-JUN-1768 12:47:53.345
- 19-JUN-1768 12:47:53.3450
- 19-JUN-1768 12:47:53.34505
- ********* | 02-AUG-1819
- ******** | 08/02/1819
- ******** | 02.08.1819
- ***** | 1819214
- ******** | 1819/08/02
- ****** | 3 Q 1819
- ****** | AUG 1819
- ******** | 31 WK 1819
- 02-AUG-1819 01:26
- 02-AUG-1819 01:26
- 02-AUG-1819 01:26
- 02-AUG-1819 01:26:00
- 02-AUG-1819 01:26:00
- 02-AUG-1819 01:26:00
- 02-AUG-1819 01:26:00.5
- 02-AUG-1819 01:26:00.46
- 02-AUG-1819 01:26:00.456
- 02-AUG-1819 01:26:00.4562
- 02-AUG-1819 01:26:00.45615
- ********* | 27-MAR-1839
- ******** | 03/27/1839
- ******** | 27.03.1839
- ***** | 1839086
- ******** | 1839/03/27
- ****** | 1 Q 1839
- ****** | MAR 1839
- ******** | 13 WK 1839
- 27-MAR-1839 20:58
- 27-MAR-1839 20:58
- 27-MAR-1839 20:58
- 27-MAR-1839 20:58:11
- 27-MAR-1839 20:58:11
- 27-MAR-1839 20:58:11
- 27-MAR-1839 20:58:11.6
- 27-MAR-1839 20:58:11.57
- 27-MAR-1839 20:58:11.567
- 27-MAR-1839 20:58:11.5668
- 27-MAR-1839 20:58:11.56677
- ********* | 19-APR-1903
- ******** | 04/19/1903
- ******** | 19.04.1903
- ***** | 1903109
- ******** | 1903/04/19
- ****** | 2 Q 1903
- ****** | APR 1903
- ******** | 16 WK 1903
- 19-APR-1903 07:36
- 19-APR-1903 07:36
- 19-APR-1903 07:36
- 19-APR-1903 07:36:05
- 19-APR-1903 07:36:05
- 19-APR-1903 07:36:05
- 19-APR-1903 07:36:05.2
- 19-APR-1903 07:36:05.19
- 19-APR-1903 07:36:05.190
- 19-APR-1903 07:36:05.1896
- 19-APR-1903 07:36:05.18964
- ********* | 25-AUG-1929
- ******** | 08/25/1929
- ******** | 25.08.1929
- ***** | 1929237
- ******** | 1929/08/25
- ****** | 3 Q 1929
- ****** | AUG 1929
- ******** | 34 WK 1929
- 25-AUG-1929 15:43
- 25-AUG-1929 15:43
- 25-AUG-1929 15:43
- 25-AUG-1929 15:43:49
- 25-AUG-1929 15:43:49
- 25-AUG-1929 15:43:49
- 25-AUG-1929 15:43:49.8
- 25-AUG-1929 15:43:49.83
- 25-AUG-1929 15:43:49.831
- 25-AUG-1929 15:43:49.8313
- 25-AUG-1929 15:43:49.83132
- 29-SEP-41 | 29-SEP-1941
- 09/29/41 | 09/29/1941
- 29.09.41 | 29.09.1941
- 41272 | 1941272
- 41/09/29 | 1941/09/29
- 3 Q 41 | 3 Q 1941
- SEP 41 | SEP 1941
- 39 WK 41 | 39 WK 1941
- 29-SEP-1941 04:25
- 29-SEP-1941 04:25
- 29-SEP-1941 04:25
- 29-SEP-1941 04:25:09
- 29-SEP-1941 04:25:09
- 29-SEP-1941 04:25:09
- 29-SEP-1941 04:25:09.0
- 29-SEP-1941 04:25:09.01
- 29-SEP-1941 04:25:09.013
- 29-SEP-1941 04:25:09.0129
- 29-SEP-1941 04:25:09.01293
- 19-APR-43 | 19-APR-1943
- 04/19/43 | 04/19/1943
- 19.04.43 | 19.04.1943
- 43109 | 1943109
- 43/04/19 | 1943/04/19
- 2 Q 43 | 2 Q 1943
- APR 43 | APR 1943
- 16 WK 43 | 16 WK 1943
- 19-APR-1943 06:49
- 19-APR-1943 06:49
- 19-APR-1943 06:49
- 19-APR-1943 06:49:27
- 19-APR-1943 06:49:27
- 19-APR-1943 06:49:27
- 19-APR-1943 06:49:27.5
- 19-APR-1943 06:49:27.52
- 19-APR-1943 06:49:27.524
- 19-APR-1943 06:49:27.5238
- 19-APR-1943 06:49:27.52375
- 07-OCT-43 | 07-OCT-1943
- 10/07/43 | 10/07/1943
- 07.10.43 | 07.10.1943
- 43280 | 1943280
- 43/10/07 | 1943/10/07
- 4 Q 43 | 4 Q 1943
- OCT 43 | OCT 1943
- 40 WK 43 | 40 WK 1943
- 07-OCT-1943 02:57
- 07-OCT-1943 02:57
- 07-OCT-1943 02:57
- 07-OCT-1943 02:57:52
- 07-OCT-1943 02:57:52
- 07-OCT-1943 02:57:52
- 07-OCT-1943 02:57:52.0
- 07-OCT-1943 02:57:52.02
- 07-OCT-1943 02:57:52.016
- 07-OCT-1943 02:57:52.0156
- 07-OCT-1943 02:57:52.01565
- 17-MAR-92 | 17-MAR-1992
- 03/17/92 | 03/17/1992
- 17.03.92 | 17.03.1992
- 92077 | 1992077
- 92/03/17 | 1992/03/17
- 1 Q 92 | 1 Q 1992
- MAR 92 | MAR 1992
- 11 WK 92 | 11 WK 1992
- 17-MAR-1992 16:45
- 17-MAR-1992 16:45
- 17-MAR-1992 16:45
- 17-MAR-1992 16:45:44
- 17-MAR-1992 16:45:44
- 17-MAR-1992 16:45:44
- 17-MAR-1992 16:45:44.9
- 17-MAR-1992 16:45:44.87
- 17-MAR-1992 16:45:44.865
- 17-MAR-1992 16:45:44.8653
- 17-MAR-1992 16:45:44.86529
- 25-FEB-96 | 25-FEB-1996
- 02/25/96 | 02/25/1996
- 25.02.96 | 25.02.1996
- 96056 | 1996056
- 96/02/25 | 1996/02/25
- 1 Q 96 | 1 Q 1996
- FEB 96 | FEB 1996
- 8 WK 96 | 8 WK 1996
- 25-FEB-1996 21:30
- 25-FEB-1996 21:30
- 25-FEB-1996 21:30
- 25-FEB-1996 21:30:57
- 25-FEB-1996 21:30:57
- 25-FEB-1996 21:30:57
- 25-FEB-1996 21:30:57.8
- 25-FEB-1996 21:30:57.82
- 25-FEB-1996 21:30:57.820
- 25-FEB-1996 21:30:57.8205
- 25-FEB-1996 21:30:57.82047
- 29-SEP-41 | 29-SEP-1941
- 09/29/41 | 09/29/1941
- 29.09.41 | 29.09.1941
- 41272 | 1941272
- 41/09/29 | 1941/09/29
- 3 Q 41 | 3 Q 1941
- SEP 41 | SEP 1941
- 39 WK 41 | 39 WK 1941
- 29-SEP-1941 04:25
- 29-SEP-1941 04:25
- 29-SEP-1941 04:25
- 29-SEP-1941 04:25:09
- 29-SEP-1941 04:25:09
- 29-SEP-1941 04:25:09
- 29-SEP-1941 04:25:09.2
- 29-SEP-1941 04:25:09.15
- 29-SEP-1941 04:25:09.154
- 29-SEP-1941 04:25:09.1539
- 29-SEP-1941 04:25:09.15395
- 19-APR-43 | 19-APR-1943
- 04/19/43 | 04/19/1943
- 19.04.43 | 19.04.1943
- 43109 | 1943109
- 43/04/19 | 1943/04/19
- 2 Q 43 | 2 Q 1943
- APR 43 | APR 1943
- 16 WK 43 | 16 WK 1943
- 19-APR-1943 06:49
- 19-APR-1943 06:49
- 19-APR-1943 06:49
- 19-APR-1943 06:49:27
- 19-APR-1943 06:49:27
- 19-APR-1943 06:49:27
- 19-APR-1943 06:49:27.1
- 19-APR-1943 06:49:27.11
- 19-APR-1943 06:49:27.105
- 19-APR-1943 06:49:27.1053
- 19-APR-1943 06:49:27.10533
- 07-OCT-43 | 07-OCT-1943
- 10/07/43 | 10/07/1943
- 07.10.43 | 07.10.1943
- 43280 | 1943280
- 43/10/07 | 1943/10/07
- 4 Q 43 | 4 Q 1943
- OCT 43 | OCT 1943
- 40 WK 43 | 40 WK 1943
- 07-OCT-1943 02:57
- 07-OCT-1943 02:57
- 07-OCT-1943 02:57
- 07-OCT-1943 02:57:52
- 07-OCT-1943 02:57:52
- 07-OCT-1943 02:57:52
- 07-OCT-1943 02:57:52.5
- 07-OCT-1943 02:57:52.48
- 07-OCT-1943 02:57:52.482
- 07-OCT-1943 02:57:52.4823
- 07-OCT-1943 02:57:52.48229
- 17-MAR-92 | 17-MAR-1992
- 03/17/92 | 03/17/1992
- 17.03.92 | 17.03.1992
- 92077 | 1992077
- 92/03/17 | 1992/03/17
- 1 Q 92 | 1 Q 1992
- MAR 92 | MAR 1992
- 11 WK 92 | 11 WK 1992
- 17-MAR-1992 16:45
- 17-MAR-1992 16:45
- 17-MAR-1992 16:45
- 17-MAR-1992 16:45:44
- 17-MAR-1992 16:45:44
- 17-MAR-1992 16:45:44
- 17-MAR-1992 16:45:44.7
- 17-MAR-1992 16:45:44.66
- 17-MAR-1992 16:45:44.658
- 17-MAR-1992 16:45:44.6583
- 17-MAR-1992 16:45:44.65827
- 25-FEB-96 | 25-FEB-1996
- 02/25/96 | 02/25/1996
- 25.02.96 | 25.02.1996
- 96056 | 1996056
- 96/02/25 | 1996/02/25
- 1 Q 96 | 1 Q 1996
- FEB 96 | FEB 1996
- 8 WK 96 | 8 WK 1996
- 25-FEB-1996 21:30
- 25-FEB-1996 21:30
- 25-FEB-1996 21:30
- 25-FEB-1996 21:30:57
- 25-FEB-1996 21:30:57
- 25-FEB-1996 21:30:57
- 25-FEB-1996 21:30:57.6
- 25-FEB-1996 21:30:57.58
- 25-FEB-1996 21:30:57.582
- 25-FEB-1996 21:30:57.5822
- 25-FEB-1996 21:30:57.58219
- ********* | 10-NOV-2038
- ******** | 11/10/2038
- ******** | 10.11.2038
- ***** | 2038314
- ******** | 2038/11/10
- ****** | 4 Q 2038
- ****** | NOV 2038
- ******** | 45 WK 2038
- 10-NOV-2038 22:30
- 10-NOV-2038 22:30
- 10-NOV-2038 22:30
- 10-NOV-2038 22:30:04
- 10-NOV-2038 22:30:04
- 10-NOV-2038 22:30:04
- 10-NOV-2038 22:30:04.2
- 10-NOV-2038 22:30:04.18
- 10-NOV-2038 22:30:04.183
- 10-NOV-2038 22:30:04.1835
- 10-NOV-2038 22:30:04.18347
- ********* | 18-JUL-2094
- ******** | 07/18/2094
- ******** | 18.07.2094
- ***** | 2094199
- ******** | 2094/07/18
- ****** | 3 Q 2094
- ****** | JUL 2094
- ******** | 29 WK 2094
- 18-JUL-2094 01:56
- 18-JUL-2094 01:56
- 18-JUL-2094 01:56
- 18-JUL-2094 01:56:51
- 18-JUL-2094 01:56:51
- 18-JUL-2094 01:56:51
- 18-JUL-2094 01:56:51.6
- 18-JUL-2094 01:56:51.59
- 18-JUL-2094 01:56:51.593
- 18-JUL-2094 01:56:51.5932
- 18-JUL-2094 01:56:51.59319
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="write pspp syntax"
-cat > bad-date-out.pspp <<EOF
-set epoch=1930.
-set errors=none.
-data list list /x.
-begin data.
-0
--1
-3e11
-end data.
-print outfile='bad-date.out'/x(date9) ' | ' x(date11).
-print outfile='bad-date.out'/x(adate8) ' | ' x(adate10).
-print outfile='bad-date.out'/x(edate8) ' | ' x(edate10).
-print outfile='bad-date.out'/x(jdate5) ' | ' x(jdate7).
-print outfile='bad-date.out'/x(sdate8) ' | ' x(sdate10).
-print outfile='bad-date.out'/x(qyr6) ' | ' x(qyr8).
-print outfile='bad-date.out'/x(moyr6) ' | ' x(moyr8).
-print outfile='bad-date.out'/x(wkyr8) ' | ' x(wkyr10).
-print outfile='bad-date.out'/x(datetime17).
-print outfile='bad-date.out'/x(datetime18).
-print outfile='bad-date.out'/x(datetime19).
-print outfile='bad-date.out'/x(datetime20).
-print outfile='bad-date.out'/x(datetime21).
-print outfile='bad-date.out'/x(datetime22).
-print outfile='bad-date.out'/x(datetime22.1).
-print outfile='bad-date.out'/x(datetime23.2).
-print outfile='bad-date.out'/x(datetime24.3).
-print outfile='bad-date.out'/x(datetime25.4).
-print outfile='bad-date.out'/x(datetime26.5).
-execute.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv bad-date-out.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -u bad-date.out - <<EOF
- . | .
- . | .
- . | .
- . | .
- . | .
- . | .
- . | .
- . | .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- . | .
- . | .
- . | .
- . | .
- . | .
- . | .
- . | .
- . | .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- ********* | ***********
- ******** | **********
- ******** | **********
- ***** | *******
- ******** | **********
- ****** | ********
- ****** | ********
- ******** | **********
- 28-MAY-**** 05:20
- 28-MAY-**** 05:20
- 28-MAY-**** 05:20
- 28-MAY-**** 05:20:00
- 28-MAY-**** 05:20:00
- 28-MAY-**** 05:20:00
- 28-MAY-**** 05:20:00.0
- 28-MAY-**** 05:20:00.00
- 28-MAY-**** 05:20:00.000
- 28-MAY-**** 05:20:00.0000
- 28-MAY-**** 05:20:00.00000
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#! /bin/sh
-
-# Tests floating-point format conversions.
-
-TEMPDIR=/tmp/pspp-tst-$$
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-activity="create test program"
-sed -e 's/#.*//' \
- -e 's/^[ ]*//' \
- -e 's/[ ]*$//' \
- -e 's/^\(..*\)$/DEBUG FLOAT FORMAT \1./' \
- > $TEMPDIR/float-format.pspp <<'EOF'
-# Each of the tests below checks that conversion between
-# floating-point formats works correctly. Comparisons that use ==
-# require that conversion from any format on the line to any other
-# format on the line work losslessly. Comparisons that use => only
-# check that conversions work losslessly in the given direction.
-
-# Key to format names:
-# isl: IEEE single-precision, little endian
-# isb: IEEE single-precision, big endian
-# idl: IEEE double-precision, little endian
-# idb: IEEE double-precision, big endian
-# vf: VAX F
-# vd: VAX D
-# vg: VAX G
-# zs: Z architecture short
-# zl: Z architecture long
-# x: hexadecimal digits
-
-# IEEE special values.
- 0 == isb(x'00000000')
-x('Infinity') == isb(x'7f800000')
-x('-Infinity') == isb(x'ff800000')
-x('NaN:') => isb(x'7f800001') # NaN requires nonzero fraction.
-x('NaN:e000000000000000') == isb(x'7ff00000') == idb(x'7ffe000000000000')
-x('NaN:5a5a5e0000000000') == isb(x'7fad2d2f') == idb(x'7ff5a5a5e0000000')
-x('NaN:975612abcdef4000') == idb(x'7ff975612abcdef4')
-x('-NaN:e000000000000000') == isb(x'fff00000') == idb(x'fffe000000000000')
-x('-NaN:5a5a5e0000000000') == isb(x'ffad2d2f') == idb(x'fff5a5a5e0000000')
-x('-NaN:975612abcdef4000') == idb(x'fff975612abcdef4')
-
-# PSPP special values.
-x('Missing') == isb(x'ff7fffff') == idb(x'ffefffffffffffff') == isl(x'ffff7fff') == idl(x'ffffffffffffefff') == vf(x'ffffffff') == vd(x'ffffffffffffffff') == vg(x'ffffffffffffffff') == zs(x'ffffffff') == zl(x'ffffffffffffffff')
-x('Lowest') == isb(x'ff7ffffe') == idb(x'ffeffffffffffffe') == isl(x'feff7fff') == idl(x'feffffffffffefff') == vf(x'fffffeff') == vd(x'fffffeffffffffff') == vg(x'fffffeffffffffff') == zs(x'fffffffe') == zl(x'fffffffffffffffe')
-x('Highest') == isb(x'7f7fffff') == idb(x'7fefffffffffffff') == isl(x'ffff7f7f') == idl(x'ffffffffffffef7f') == vf(x'ff7fffff') == vd(x'ffffffffff7fffff') == vg(x'ffffffffff7fffff') == zs(x'7fffffff') == zl(x'7fffffffffffffff')
-
-# From Wikipedia.
-0.15625 == isb(b'00111110001000000000000000000000')
--118.625 == isb(b'11000010111011010100000000000000')
-
-# http://www.psc.edu/general/software/packages/ieee/ieee.html
-x('NaN:0400000000000000') == isb(b'01111111100000100000000000000000')
-x('-NaN:2225540000000000') == isb(b'11111111100100010001001010101010')
-2 == isb(b'01000000000000000000000000000000')
-6.5 == isb(b'01000000110100000000000000000000')
--6.5 == isb(b'11000000110100000000000000000000')
-x('.4p-124') == isb(b'00000000100000000000000000000000')
-x('.2p-124') == isb(b'00000000010000000000000000000000')
-
-# Using converter at http://babbage.cs.qc.edu/IEEE-754/Decimal.html
-# plus Emacs 'calc' to convert decimal to hexadecimal
-x('.7b74bc6a7ef9db23p8') => isb(x'42f6e979') # 123.456
-x('.7b74bc6a7ef9db23p8') => idb(x'405edd2f1a9fbe77')
-x('.817427d2d4642004p-12') => isb(x'39017428') # .0001234567
-x('.817427d2d4642004p-12') => idb(x'3f202e84fa5a8c84')
-x('.446c3b15f9926688p168') => isb(x'7f800000') # 1e50; overflow
-x('.446c3b15f9926688p168') => idb(x'4a511b0ec57e649a')
-
-# From multiple editions of the z/Architecture Principles of Operation
-# manual.
- 1.0 == zs(x'41100000') == isb(x'3f800000')
- 0.5 == zs(x'40800000') == isb(x'3f000000')
- x('.4p-4') == zs(x'3f400000') == isb(x'3c800000')
- 0 == zs(x'00000000') == isb(x'00000000')
- zs(x'80000000') == isb(x'80000000')
- -15 == zs(x'c1f00000') == isb(x'c1700000')
-# x('.ffffffp252') == zs(x'7fffffff')
- x('.3b4p8') == zs(x'423b4000')
- x('.1p-256') == zs(x'00100000')
- x('.4p-124') == zs(x'21400000') == isb(x'00800000')
- x('.8p-148') == zs(x'1b800000') == isb(x'00000001')
-# x('.ffffffp128') == zs(x'60ffffff') == isb(x'7f7fffff')
- x('.1p-256') == zs(x'00100000')
- x('.1p-256') => isb(x'00000000') # Underflow to zero.
- x('.ffffffp248') == zs(x'7effffff')
- x('.ffffffp248') => isb(x'7f800000') # Overflow to +Infinity.
-
- x('.4p-1020') => zl(x'0000000000000000') # Underflow to zero.
- x('.4p-1020') == idb(x'0010000000000000')
- x('.4p-1072') => zl(x'0000000000000000') # Underflow to zero.
- x('.4p-1072') => idb(x'0000000000000001')
-x('.fffffffffffff8p1024') => zl(x'7fffffffffffffff') # Overflow to maxval.
-x('.fffffffffffff8p1024') => idb(x'7fefffffffffffff')
- x('.1p-256') == zl(x'0010000000000000') == idb(x'2fb0000000000000')
- x('.ffffffffffffffp248') == zl(x'7effffffffffffff')
- x('.ffffffffffffffp248') => idb(x'4f70000000000000') # Loses precision.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP --testing-mode -o pspp.csv $TEMPDIR/float-format.pspp
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#! /bin/sh
-
-# Tests guessing of data formats from data.
-
-TEMPDIR=/tmp/pspp-tst-$$
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-activity="create test data"
-sed -ne 's/#.*//;/^[ ]*$/!p' > $TEMPDIR/test-list <<'EOF'
-# No data.
-=> F8.2
-"" => F8.2
-"." => F8.2
-
-# Numeric formats.
-"1.2" => F3.1
-"$1.2" => DOLLAR4.1
-"1.2%" => PCT4.1
-"$1.2%" => A5
-"1e5" => E3.0
-"1e+5" => E4.0
-"1+5" => E3.0
-"1-5" => E3.0
-"1.2e5" => E5.1
-"1.3e+5" => E6.1
-"1.4+5" => E5.1
-"1e" => A2
-"1e+" => A3
-"1+" => A2
-"1-" => A2
-"1.5-5" => E5.1
-"1,123" => COMMA5.0 # Is , is grouping or decimal? Assume grouping.
-"1.123" => F5.3 # Ditto.
-"1,12" => F4.2 # Not a group of 3, so last delim must be decimal.
-"1.12" => F4.2 # Ditto.
-"1,1234" => F6.4 # Not a group of 3, so last delim must be decimal.
-"1.1234" => F6.4 # Ditto.
-"$1.234" => DOLLAR6.3 # Dollar sign means decimal has to be '.'.
-"$1,234" => DOLLAR6.0 # Ditto.
-"1.234%" => PCT6.3 # Percent sign means decimal has to be '.'.
-"1,234%" => PCT6.0 # Ditto.
-"1,123.456" => COMMA9.3 # Both '.' and ',', so last delim must be decimal.
-"1.123,456" => DOT9.3 # Ditto.
-"1,123,456.45" => COMMA12.2 # Ditto.
-"1.123.456,45" => DOT12.2 # Ditto.
-"1,123,456" => COMMA9.0 # Ditto.
-"1.123.456" => DOT9.0 # Ditto.
-
-# Date and time formats.
-"01-OCT-1978" => DATE11
-"01-x-1978" => EDATE9 # Roman numeral for month.
-"01-13-99" => ADATE8
-"1-13-99" => ADATE7 (ADATE8)
-"13-01-99" => EDATE8
-"13-1-99" => EDATE7 (EDATE8)
-"32-1-1" => SDATE6 (SDATE8)
-"1q01" => QYR4
-"1Q01" => QYR4
-"1 q 01" => QYR6
-"1 Q 01" => QYR6
-"1q2001" => QYR6
-"1Q2001" => QYR6
-"1 q 2001" => QYR8
-"1 Q 2001" => QYR8
-"oct 05" => MOYR6
-"oct 2005" => MOYR8
-"1-1-01 1:2" => A10 # Minute needs at least two digits.
-"1-1-01 1:02" => DATETIME11.0 (DATETIME17.0)
-"1-1-01 1:02:3" => A13 # Second needs at least two digits.
-"1-1-01 1:02:03" => DATETIME20.0
-"1-1-01 1:02:03.1" => DATETIME20.1 (DATETIME22.1)
-"1-1-01 +1:02:03.1" => DATETIME20.1 (DATETIME22.1)
-"1-1-01 -1:02:03.1" => DATETIME20.1 (DATETIME22.1)
-"1:30" => TIME4.0 (TIME5.0)
-"1:30:05" => TIME8.0
-"-1:30" => TIME5.0
-"+1:30" => TIME5.0
-"-1:30:15" => TIME8.0
-"+1:30:15" => TIME8.0
-"-1:30:15.5" => TIME10.1
-"+1:30:15.75" => TIME11.2
-"1 1:30" => DTIME6.0 (DTIME8.0)
-"+1 1:30" => DTIME7.0 (DTIME8.0)
-"-1 1:30" => DTIME7.0 (DTIME8.0)
-"-1-13-99" => A8
-"+1-13-99" => A8
-"1+13+99" => A7
-"1:00:01.03" => TIME10.2 (TIME11.2)
-"12 1:00:01.3" => DTIME12.1 (DTIME13.1)
-"jan" => MONTH3
-"Feb" => MONTH3
-"MAR" => MONTH3
-"i" => A1 # Not detected as MONTH format.
-"v" => A1
-"ix" => A2
-"x" => A1
-"january" => MONTH7
-"janaury" => MONTH7
-"february" => MONTH8
-"febraury" => MONTH8
-"march" => MONTH5
-"marhc" => MONTH5
-"april" => MONTH5
-"may" => MONTH3
-"june" => MONTH4
-"july" => MONTH4
-"august" => MONTH6
-"september" => MONTH9
-"october" => MONTH7
-"november" => MONTH8
-"decmeber" => MONTH8
-"december" => MONTH8
-"monady" => WKDAY6
-"tuseday" => WKDAY7
-"wedensday" => WKDAY9
-"thurdsay" => WKDAY8
-"fridya" => WKDAY6
-"saturady" => WKDAY8
-"sudnay" => WKDAY6
-
-# Ambiguous; bias in favor of more sensible DD/MM/YY format:
-"1/1/1978" => EDATE8
-"01/01/01" => EDATE8
-
-# Several ambiguous dates can be clarified by one unambiguous example:
-"1/1/1978" "1/2/1978" "1/3/1978" "1/13/1978" => ADATE9 # MM/DD/YY
-"01/01/01" "02/01/01" "03/01/01" "13/01/01" => EDATE8 # DD/MM/YY
-"01/01/01" "02/01/01" "03/01/01" "2013/01/01" => SDATE10 # YY/MM/DD
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="create syntax file"
-{
- echo "SET DECIMAL=DOT." &&
- sed < $TEMPDIR/test-list -e 's#^\(.*\)=> \(.*\)$#DEBUG FORMAT GUESSER \1.#'
-} > $TEMPDIR/test.stat
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP --testing-mode -o pspp.csv \
- $TEMPDIR/test.stat >$TEMPDIR/test.err 2> $TEMPDIR/test.out
-
-activity="compare output"
-perl -pi -e 's/^\s*$//g' $TEMPDIR/test-list $TEMPDIR/test.out
-diff -b $TEMPDIR/test-list $TEMPDIR/test.out
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#! /bin/sh
-
-TEMPDIR=/tmp/pspp-tst-$$
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-: ${PERL:=perl}
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="generate data input file"
-$PERL -e 'print pack "n", $_ foreach 0...65535' > ib-in.data
-
-activity="write pspp syntax"
-cat > ib-in.pspp <<'EOF'
-SET RIB=MSBFIRST.
-SET ERRORS=NONE.
-SET MXWARNS=10000000.
-SET MXERRS=10000000.
-FILE HANDLE data/NAME='ib-in.data'/MODE=IMAGE/LRECL=2.
-DATA LIST FILE=data/ib 1-2 (IB) pib 1-2 (PIB) pibhex 1-2 (PIBHEX).
-COMPUTE x=$CASENUM - 1.
-PRINT OUTFILE='ib-in.out'/x (PIBHEX4) ' ' ib pib pibhex.
-EXECUTE.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv ib-in.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="gunzip expected results"
-gzip -cd < $top_srcdir/tests/formats/ib-in.expected.cmp.gz > ib-in.expected.cmp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="decompress expected results"
-$PERL -pe "printf ' %04X ', $.-1" < ib-in.expected.cmp > ib-in.expected
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -u ib-in.expected ib-in.out
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-/* PSPP - a program for statistical analysis.
- Copyright (C) 2006, 2010 Free Software Foundation, Inc.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-#include <ctype.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* Replaces insignificant digits by # to facilitate textual
- comparisons. Not a perfect solution to the general-purpose
- comparison problem, because rounding that affects earlier
- digits can still cause differences. */
-int
-main (void)
-{
- bool in_quotes = false;
- bool in_exponent = false;
- int digits = 0;
-
- for (;;)
- {
- int c = getchar ();
- if (c == EOF)
- break;
- else if (c == '\n')
- in_quotes = false;
- else if (c == '"')
- {
- in_quotes = !in_quotes;
- in_exponent = false;
- digits = 0;
- }
- else if (in_quotes && !in_exponent)
- {
- if (strchr ("+dDeE", c) != NULL || (c == '-' && digits))
- in_exponent = true;
- else if (strchr ("0123456789}JKLMNOPQR", c) != NULL)
- {
- if (digits || c >= '1')
- digits++;
- if (digits > 13)
- c = isdigit (c) ? '#' : '@';
- }
- }
- putchar (c);
- }
- return EXIT_SUCCESS;
-}
+++ /dev/null
-#! /bin/sh
-
-TEMPDIR=/tmp/pspp-tst-$$
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-: ${PERL:=perl}
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="generate data input file"
-$PERL -e 'print pack "n", $_ foreach 0...65535' > legacy-in.data
-
-activity="write pspp syntax"
-cat > legacy-in.pspp <<'EOF'
-SET ERRORS=NONE.
-SET MXWARNS=10000000.
-SET MXERRS=10000000.
-FILE HANDLE data/NAME='legacy-in.data'/MODE=IMAGE/LRECL=2.
-DATA LIST FILE=data/n 1-2 (N) z 1-2 (z).
-COMPUTE x=$CASENUM - 1.
-PRINT OUTFILE='legacy-in.out'/x (PIBHEX4) ' ' N Z.
-EXECUTE.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv legacy-in.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="gunzip expected results"
-gzip -cd < $top_srcdir/tests/formats/legacy-in.expected.cmp.gz > legacy-in.expected.cmp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="decompress expected results"
-$PERL -pe "printf ' %04X ', $.-1" < legacy-in.expected.cmp > legacy-in.expected
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -u legacy-in.expected legacy-in.out
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#! /bin/sh
-
-TEMPDIR=/tmp/pspp-tst-$$
-mkdir -p $TEMPDIR
-trap 'cd /; rm -rf $TEMPDIR' 0
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-fail()
-{
- echo $activity
- echo FAILED
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- exit 2;
-}
-
-pass()
-{
- exit 0;
-}
-
-cd $TEMPDIR
-
-activity="write pspp syntax"
-cat > month-in.pspp <<EOF
-set errors=none.
-set mxwarns=10000000.
-data list /month3 1-3 (month)
- month4 1-4 (month)
- month5 1-5 (month)
- month6 1-6 (month)
- month7 1-7 (month)
- month8 1-8 (month)
- month9 1-9 (month)
- month10 1-10 (month).
-begin data.
-
-.
-i
-ii
-iii
-iiii
-iv
-v
-vi
-vii
-viii
-ix
-viiii
-x
-xi
-xii
-0
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
-january
-janaury
-february
-febraury
-march
-marhc
-april
-may
-june
-july
-august
-september
-october
-november
-decmeber
-december
-end data.
-formats all (month3).
-print outfile='month-in.out'/all.
-execute.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv month-in.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -u month-in.out - <<EOF
- . . . . . . . .
- . . . . . . . .
- JAN JAN JAN JAN JAN JAN JAN JAN
- FEB FEB FEB FEB FEB FEB FEB FEB
- MAR MAR MAR MAR MAR MAR MAR MAR
- MAR . . . . . . .
- APR APR APR APR APR APR APR APR
- MAY MAY MAY MAY MAY MAY MAY MAY
- JUN JUN JUN JUN JUN JUN JUN JUN
- JUL JUL JUL JUL JUL JUL JUL JUL
- JUL AUG AUG AUG AUG AUG AUG AUG
- SEP SEP SEP SEP SEP SEP SEP SEP
- JUL AUG AUG AUG AUG AUG AUG AUG
- OCT OCT OCT OCT OCT OCT OCT OCT
- NOV NOV NOV NOV NOV NOV NOV NOV
- DEC DEC DEC DEC DEC DEC DEC DEC
- . . . . . . . .
- JAN JAN JAN JAN JAN JAN JAN JAN
- FEB FEB FEB FEB FEB FEB FEB FEB
- MAR MAR MAR MAR MAR MAR MAR MAR
- APR APR APR APR APR APR APR APR
- MAY MAY MAY MAY MAY MAY MAY MAY
- JUN JUN JUN JUN JUN JUN JUN JUN
- JUL JUL JUL JUL JUL JUL JUL JUL
- AUG AUG AUG AUG AUG AUG AUG AUG
- SEP SEP SEP SEP SEP SEP SEP SEP
- OCT OCT OCT OCT OCT OCT OCT OCT
- NOV NOV NOV NOV NOV NOV NOV NOV
- DEC DEC DEC DEC DEC DEC DEC DEC
- . . . . . . . .
- JAN JAN JAN JAN JAN JAN JAN JAN
- JAN JAN JAN JAN JAN JAN JAN JAN
- FEB FEB FEB FEB FEB FEB FEB FEB
- FEB FEB FEB FEB FEB FEB FEB FEB
- MAR MAR MAR MAR MAR MAR MAR MAR
- MAR MAR MAR MAR MAR MAR MAR MAR
- APR APR APR APR APR APR APR APR
- MAY MAY MAY MAY MAY MAY MAY MAY
- JUN JUN JUN JUN JUN JUN JUN JUN
- JUL JUL JUL JUL JUL JUL JUL JUL
- AUG AUG AUG AUG AUG AUG AUG AUG
- SEP SEP SEP SEP SEP SEP SEP SEP
- OCT OCT OCT OCT OCT OCT OCT OCT
- NOV NOV NOV NOV NOV NOV NOV NOV
- DEC DEC DEC DEC DEC DEC DEC DEC
- DEC DEC DEC DEC DEC DEC DEC DEC
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#! /bin/sh
-
-TEMPDIR=/tmp/pspp-tst-$$
-mkdir -p $TEMPDIR
-trap 'cd /; rm -rf $TEMPDIR' 0
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-fail()
-{
- echo $activity
- echo FAILED
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- exit 2;
-}
-
-pass()
-{
- exit 0;
-}
-
-cd $TEMPDIR
-
-activity="write pspp syntax"
-cat > month-out.pspp <<EOF
-set errors=none.
-set mxerr=1000000.
-set mxwarns=10000000.
-data list /x 1-10.
-begin data.
-
-0
-0.5
-0.9
-1
-2
-3
-4
-4.1
-4.5
-4.9
-5
-6
-7
-7.1
-7.5
-7.9
-8
-9
-10
-11
-12
-13
-end data.
-print outfile='month-out.out'/x(month3).
-print outfile='month-out.out'/x(month4).
-print outfile='month-out.out'/x(month5).
-print outfile='month-out.out'/x(month6).
-print outfile='month-out.out'/x(month7).
-print outfile='month-out.out'/x(month8).
-print outfile='month-out.out'/x(month9).
-print outfile='month-out.out'/x(month10).
-print outfile='month-out.out'/x(month11).
-print outfile='month-out.out'/x(month12).
-print outfile='month-out.out'/x(month13).
-print outfile='month-out.out'/x(month14).
-print outfile='month-out.out'/x(month15).
-print outfile='month-out.out'/x(month16).
-print outfile='month-out.out'/x(month17).
-print outfile='month-out.out'/x(month18).
-print outfile='month-out.out'/x(month19).
-print outfile='month-out.out'/x(month20).
-print outfile='month-out.out'/x(month21).
-print outfile='month-out.out'/x(month22).
-print outfile='month-out.out'/x(month23).
-print outfile='month-out.out'/x(month24).
-print outfile='month-out.out'/x(month25).
-print outfile='month-out.out'/x(month26).
-print outfile='month-out.out'/x(month27).
-print outfile='month-out.out'/x(month28).
-print outfile='month-out.out'/x(month29).
-print outfile='month-out.out'/x(month30).
-print outfile='month-out.out'/x(month31).
-print outfile='month-out.out'/x(month32).
-print outfile='month-out.out'/x(month33).
-print outfile='month-out.out'/x(month34).
-print outfile='month-out.out'/x(month35).
-print outfile='month-out.out'/x(month36).
-print outfile='month-out.out'/x(month37).
-print outfile='month-out.out'/x(month38).
-print outfile='month-out.out'/x(month39).
-print outfile='month-out.out'/x(month40).
-execute.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv month-out.pspp
-if [ $? -eq 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -u month-out.out - <<EOF
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- JAN
- JANU
- JANUA
- JANUAR
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- JANUARY
- FEB
- FEBR
- FEBRU
- FEBRUA
- FEBRUAR
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- FEBRUARY
- MAR
- MARC
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- MARCH
- APR
- APRI
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APR
- APRI
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APR
- APRI
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APR
- APRI
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- APRIL
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- MAY
- JUN
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUNE
- JUL
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JUL
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JUL
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JUL
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- JULY
- AUG
- AUGU
- AUGUS
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- AUGUST
- SEP
- SEPT
- SEPTE
- SEPTEM
- SEPTEMB
- SEPTEMBE
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- SEPTEMBER
- OCT
- OCTO
- OCTOB
- OCTOBE
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- OCTOBER
- NOV
- NOVE
- NOVEM
- NOVEMB
- NOVEMBE
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- NOVEMBER
- DEC
- DECE
- DECEM
- DECEMB
- DECEMBE
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- DECEMBER
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#! /bin/sh
-
-TEMPDIR=/tmp/pspp-tst-$$
-mkdir -p $TEMPDIR
-trap 'cd /; rm -rf $TEMPDIR' 0
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-: ${PERL:=perl}
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-fail()
-{
- echo $activity
- echo FAILED
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- exit 2;
-}
-
-pass()
-{
- exit 0;
-}
-
-cd $TEMPDIR
-
-activity="write PRNG fragment"
-cat > my-rand.pl <<'EOF'
-# This random number generator and the test for it below are drawn
-# from Park and Miller, "Random Number Generators: Good Ones are Hard
-# to Come By", Communications of the ACM 31:10 (October 1988). It is
-# documented to function properly on systems with a 46-bit or longer
-# real significand, which includes systems that have 64-bit IEEE reals
-# (with 53-bit significand). The test should catch any systems for
-# which this is not true, in any case.
-
-our ($seed) = 1;
-sub my_rand {
- my ($modulo) = @_;
- my ($a) = 16807;
- my ($m) = 2147483647;
- my ($tmp) = $a * $seed;
- $seed = $tmp - $m * int ($tmp / $m);
- return $seed % $modulo;
-}
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="write PRNG test program"
-cat > test-my-rand.pl <<'EOF'
-#! /usr/bin/perl
-use strict;
-use warnings;
-do 'my-rand.pl';
-my_rand (1) foreach 1...10000;
-our $seed;
-die $seed if $seed != 1043618065;
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="test PRNG"
-$PERL test-my-rand.pl
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="write Perl program"
-cat > num-in.pl <<'EOF'
-#! /usr/bin/perl
-
-use POSIX;
-use strict;
-use warnings;
-
-do 'my-rand.pl';
-
-for my $number (0, 1, .5, .015625, 123) {
- my ($base_exp) = floor ($number ? log10 ($number) : 0);
- for my $offset (-3...3) {
- my ($exponent) = $base_exp + $offset;
- my ($fraction) = $number / 10**$offset;
-
- permute_zeros ($fraction, $exponent);
- }
-}
-
-sub permute_zeros {
- my ($fraction, $exponent) = @_;
-
- my ($frac_rep) = sprintf ("%f", $fraction);
- my ($leading_zeros) = length (($frac_rep =~ /^(0*)/)[0]);
- my ($trailing_zeros) = length (($frac_rep =~ /(\.?0*)$/)[0]);
- for my $i (0...$leading_zeros) {
- for my $j (0...$trailing_zeros) {
- my ($trimmed) = substr ($frac_rep, $i,
- length ($frac_rep) - $i - $j);
- next if $trimmed eq '.' || $trimmed eq '';
-
- permute_commas ($trimmed, $exponent);
- }
- }
-}
-
-sub permute_commas {
- my ($frac_rep, $exponent) = @_;
- permute_dot_comma ($frac_rep, $exponent);
- my ($pos) = int (my_rand (length ($frac_rep) + 1));
- $frac_rep = substr ($frac_rep, 0, $pos) . "," . substr ($frac_rep, $pos);
- permute_dot_comma ($frac_rep, $exponent);
-}
-
-sub permute_dot_comma {
- my ($frac_rep, $exponent) = @_;
- permute_exponent_syntax ($frac_rep, $exponent);
- if ($frac_rep =~ /[,.]/) {
- $frac_rep =~ tr/.,/,./;
- permute_exponent_syntax ($frac_rep, $exponent);
- }
-}
-
-sub permute_exponent_syntax {
- my ($frac_rep, $exponent) = @_;
- my (@exp_reps);
- if ($exponent == 0) {
- @exp_reps = pick ('', 'e0', 'e-0', 'e+0', '-0', '+0');
- } elsif ($exponent > 0) {
- @exp_reps = pick ("e$exponent", "e+$exponent", "+$exponent");
- } else {
- my ($abs_exp) = -$exponent;
- @exp_reps = pick ("e-$abs_exp", , "e-$abs_exp", "-$abs_exp");
- }
- permute_sign_and_affix ($frac_rep, $_) foreach @exp_reps;
-}
-
-sub permute_sign_and_affix {
- my ($frac_rep, $exp_rep) = @_;
- for my $prefix (pick ('', '$'),
- pick ('-', '-$', '$-', '$-$'),
- pick ('+', '+$', '$+', '$+$')) {
- for my $suffix ('', '%') {
- permute_spaces ("$prefix$frac_rep$exp_rep$suffix");
- }
- }
-}
-
-sub permute_spaces {
- my ($s) = @_;
- $s =~ s/([-+\$e%])/ $1 /g;
- my (@fields) = split (' ', $s);
- print join ('', @fields), "\n";
-
- if ($#fields > 0) {
- my ($pos) = int (my_rand ($#fields)) + 1;
- print join ('', @fields[0...$pos - 1]);
- print " ";
- print join ('', @fields[$pos...$#fields]);
- print "\n";
- }
-}
-
-sub pick {
- return $_[int (my_rand ($#_ + 1))];
-}
-EOF
-
-activity="generate data"
-$PERL num-in.pl > num-in.data
-if [ $? -ne 0 ] ; then no_result ; fi
-echo -n .
-
-activity="generate pspp syntax"
-cat > num-in.pspp <<EOF
-SET ERRORS=NONE.
-SET MXERRS=10000000.
-SET MXWARNS=10000000.
-DATA LIST FILE='num-in.data' /
- f 1-40 (f)
- comma 1-40 (comma)
- dot 1-40 (dot)
- dollar 1-40 (dollar)
- pct 1-40 (pct)
- e 1-40 (e).
-PRINT OUTFILE='num-in.out'/all (6f10.4).
-EXECUTE.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-echo -n .
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv num-in.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-echo -n .
-
-activity="gunzip expected results"
-gzip -cd < $top_srcdir/tests/formats/num-in.expected.gz > num-in.expected
-if [ $? -ne 0 ] ; then no_result ; fi
-echo -n .
-
-activity="compare output"
-diff -u num-in.expected num-in.out
-if [ $? -ne 0 ] ; then fail ; fi
-
-echo .
-
-pass
+++ /dev/null
-use strict;
-use warnings 'all';
-
-my (@prev) = ();
-our ($n) = 0;
-our ($suffix) = '';
-our ($prefix) = '';
-while (<>) {
- s/^ //;
- if (scalar (my (@line) = /^([A-Z]+)(\d+)([^"]+")( *)([^%"]*)(%?")$/) == 6) {
- if (defined ($prev[0])
- && $line[0] eq $prev[0]
- && $line[1] == $prev[1] + 1
- && $line[2] eq $prev[2]
- && $line[5] eq $prev[5]) {
- if ($line[3] eq " $prev[3]"
- && $line[4] eq $prev[4]) {
- flush_prefix ();
- flush_suffix ();
- $n++;
- } elsif ($line[3] eq $prev[3]
- && length ($line[4]) == length ($prev[4]) + 1
- && $prev[4] eq substr ($line[4], 0, length ($line[4]) - 1)) {
- flush_n ();
- flush_prefix ();
- $suffix .= substr ($line[4], -1);
- } elsif ($line[3] eq $prev[3]
- && $prev[4] eq substr ($line[4], 1)) {
- flush_n ();
- flush_suffix ();
- $prefix .= substr ($line[4], 0, 1);
- } else {
- flush ();
- print $_;
- }
- } else {
- flush ();
- print $_;
- }
- @prev = @line;
- } else {
- flush ();
- print $_;
- @prev = ();
- }
-}
-flush ();
-
-sub flush_suffix {
- if ($suffix ne '') {
- print "\$$suffix\n";
- $suffix = '';
- }
-}
-
-sub flush_prefix {
- if ($prefix ne '') {
- print "^$prefix\n";
- $prefix = '';
- }
-}
-
-sub flush_n {
- if ($n) {
- print "*$n\n";
- $n = 0;
- }
-}
-
-sub flush {
- flush_prefix ();
- flush_suffix ();
- flush_n ();
-}
+++ /dev/null
-#! /usr/bin/perl -w
-
-use strict;
-use warnings 'all';
-use Getopt::Long;
-
-my $exact = 0;
-my $spss = 0;
-my $verbose = 0;
-Getopt::Long::Configure ("bundling");
-GetOptions ("e|exact!" => \$exact,
- "s|spss!" => \$spss,
- "v|verbose+" => \$verbose,
- "h|help" => sub { usage (0) })
- or usage (1);
-
-sub usage {
- print "$0: compare expected and actual numeric formatting output\n";
- print "usage: $0 [OPTION...] EXPECTED ACTUAL\n";
- print "where EXPECTED is the file containing expected output\n";
- print "and ACTUAL is the file containing actual output.\n";
- print "Options:\n";
- print " -e, --exact: Require numbers to be exactly equal.\n";
- print " (By default, small differences are permitted.)\n";
- print " -s, --spss: Ignore most SPSS formatting bugs in EXPECTED.\n";
- print " (A few differences are not compensated)\n";
- print " -v, --verbose: Use once to summarize errors and differences.\n";
- print " Use twice for details of differences.\n";
- exit (@_);
-}
-
-open (EXPECTED, '<', $ARGV[0]) or die "$ARGV[0]: open: $!\n";
-open (ACTUAL, '<', $ARGV[1]) or die "$ARGV[1]: open: $!\n";
-my ($expr);
-my ($bad_round) = 0;
-my ($approximate) = 0;
-my ($spss_wtf1) = 0;
-my ($spss_wtf2) = 0;
-my ($lost_sign) = 0;
-my ($errors) = 0;
-while (defined (my $a = <EXPECTED>) && defined (my $b = <ACTUAL>)) {
- chomp $a;
- chomp $b;
- if ($a eq $b) {
- if ($a !~ /^\s*$/ && $a !~ /:/) {
- $expr = $a;
- $expr =~ s/\s*$//;
- $expr =~ s/^\s*//;
- }
- } else {
- my ($fmt, $a_out) = $a =~ /^ (.*): "(.*)"$/ or die;
- my ($b_fmt, $b_out) = $b =~ /^ (.*): "(.*)"$/ or die;
- die if $fmt ne $b_fmt;
- die if $a_out eq $b_out;
-
- if (!$exact) {
- if (increment ($a_out) eq $b_out || increment ($b_out) eq $a_out) {
- $approximate++;
- next;
- }
- }
- if ($spss) {
- if ($a_out =~ /0.*0/ && $a_out !~ /[1-9]/) {
- $bad_round++;
- next;
- } elsif ($a_out =~ /\*/ && $a_out !~ /^\*+$/) {
- $spss_wtf1++;
- next;
- } elsif ($expr =~ /^-/
- && $a_out =~ /^\*+$/
- && $b_out =~ /-\d(\.\d*#*)?E[-+]\d\d\d/
- && $fmt =~ /^E/) {
- $spss_wtf2++;
- next;
- } elsif ($expr =~ /^-/
- && (($a_out !~ /-/ && $a_out =~ /[1-9]/ && $b_out =~ /-/)
- || ($a_out =~ /^[0-9]+$/ && $b_out =~ /^\*+$/))) {
- $lost_sign++;
- next;
- }
- }
- print "$.: $expr in $fmt: expected \"$a_out\", got \"$b_out\"\n"
- if $verbose > 1;
- $errors++;
- }
-}
-while (<EXPECTED>) {
- print "Extra lines in $ARGV[0]\n";
- $errors++;
- last;
-}
-while (<ACTUAL>) {
- print "Extra lines in $ARGV[1]\n";
- $errors++;
- last;
-}
-if ($verbose) {
- print "$errors errors\n";
- if (!$exact) {
- print "$approximate approximate matches\n";
- }
- if ($spss) {
- print "$bad_round bad rounds\n";
- print "$spss_wtf1 SPSS WTF 1\n";
- print "$spss_wtf2 SPSS WTF 2\n";
- print "$lost_sign lost signs\n";
- }
-}
-exit ($errors > 0);
-
-# Returns the argument value incremented by one unit in its final
-# decimal place.
-sub increment {
- local ($_) = @_;
- my ($last_digit, $i);
- for ($i = 0; $i < length $_; $i++) {
- my ($c) = substr ($_, $i, 1);
- last if ($c eq 'E');
- $last_digit = $i if $c =~ /[0-9]/;
- }
- return $_ if !defined $last_digit;
- for ($i = $last_digit; $i >= 0; $i--) {
- my ($c) = substr ($_, $i, 1);
- if ($c eq '9') {
- substr ($_, $i, 1) = '0';
- } elsif ($c =~ /[0-8]/) {
- substr ($_, $i, 1) = chr (ord ($c) + 1);
- last;
- }
- }
- $_ = "1$_" if $i < 0;
- return $_;
-}
+++ /dev/null
-use strict;
-use warnings 'all';
-
-my (@line);
-while (<>) {
- if (my ($n) = /^\*(\d+)$/) {
- for (1...$n) {
- $line[1]++;
- $line[3] = " $line[3]";
- print ' ', join ('', @line), "\n";
- }
- } elsif (my ($suffix) = /^\$(.*)$/) {
- for my $c (split ('', $suffix)) {
- $line[1]++;
- $line[4] .= $c;
- print ' ', join ('', @line), "\n";
- }
- } elsif (my ($prefix) = /^\^(.*)$/) {
- for my $c (split ('', $prefix)) {
- $line[1]++;
- $line[4] = "$c$line[4]";
- print ' ', join ('', @line), "\n";
- }
- } else {
- @line = /^([A-Z]+)(\d+)([^"]+")( *)([^%"]*)(%?")$/;
- print " $_";
- }
-}
+++ /dev/null
-use strict;
-use warnings 'all';
-
-my @values = qw(0 2 9.5 27 271 999.95 2718 9999.995 27182 271828
-2718281 2**39 2**333 2**-21 -2 -9.5 -27 -271 -999.95 -2718 -9999.995
--27182 -271828 -2718281 -2**39 -2**333 -2**-21 -0 3.125 31.25 314.125
-3141.5 31415.875 314159.25 3141592.625 31415926.5 271828182.25
-3214567890.5 31415926535.875 -3.125 -31.375 -314.125 -3141.5
--31415.875 -314159.25 -3141592.625 -31415926.5 -271828182.25
--3214567890.5 -31415926535.875);
-
-print "SET CCA=',,,'.\n";
-print "SET CCB='-,[[[,]]],-'.\n";
-print "SET CCC='((,[,],))'.\n";
-print "SET CCD=',XXX,,-'.\n";
-print "SET CCE=',,YYY,-'.\n";
-print "INPUT PROGRAM.\n";
-print "STRING EXPR(A16).\n";
-print map ("COMPUTE NUM=$_.\nCOMPUTE EXPR='$_'.\nEND CASE.\n", @values);
-print "END FILE.\n";
-print "END INPUT PROGRAM.\n";
-
-print "PRINT OUTFILE='output.txt'/EXPR.\n";
-for my $format qw (F COMMA DOT DOLLAR PCT E CCA CCB CCC CCD CCE N Z) {
- for my $d (0...16) {
- my ($min_w);
- if ($format ne 'E') {
- $min_w = $d + 1;
- $min_w++ if $format eq 'DOLLAR' || $format eq 'PCT';
- $min_w = 2 if $min_w == 1 && ($format =~ /^CC/);
- } else {
- $min_w = $d + 7;
- }
- for my $w ($min_w...40) {
- my ($f) = "$format$w.$d";
- print "PRINT OUTFILE='output.txt'/'$f: \"' NUM($f) '\"'.\n";
- }
- }
- print "PRINT SPACE OUTFILE='output.txt'.\n";
-}
-print "EXECUTE.\n";
+++ /dev/null
-#! /bin/sh
-
-TEMPDIR=/tmp/pspp-tst-$$
-mkdir -p $TEMPDIR
-trap 'cd /; rm -rf $TEMPDIR' 0
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-: ${PERL:=perl}
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-fail()
-{
- echo $activity
- echo FAILED
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- exit 2;
-}
-
-pass()
-{
- exit 0;
-}
-
-cd $TEMPDIR
-
-activity="generate pspp syntax"
-$PERL $top_srcdir/tests/formats/num-out.pl > num-out.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-echo -n .
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv num-out.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-echo -n .
-
-activity="inexactify results"
-$top_builddir/tests/formats/inexactify$EXEEXT < output.txt > output.inexact
-if [ $? -ne 0 ] ; then no_result ; fi
-echo -n .
-
-activity="gunzip expected results"
-gzip -cd < $top_srcdir/tests/formats/num-out.expected.cmp.gz > expected.txt.cmp
-if [ $? -ne 0 ] ; then no_result ; fi
-echo -n .
-
-activity="decompress expected results"
-$PERL $top_srcdir/tests/formats/num-out-decmp.pl < expected.txt.cmp > expected.txt
-if [ $? -ne 0 ] ; then no_result ; fi
-echo -n .
-
-activity="inexactify expected results"
-$top_builddir/tests/formats/inexactify$EXEEXT < expected.txt > expected.inexact
-if [ $? -ne 0 ] ; then no_result ; fi
-echo -n .
-
-activity="compare output"
-$PERL $top_srcdir/tests/formats/num-out-compare.pl \
- $PSPP_NUM_OUT_COMPARE_FLAGS expected.inexact output.inexact
-if [ $? -ne 0 ] ; then fail ; fi
-
-echo .
-
-pass
+++ /dev/null
-#! /bin/sh
-
-TEMPDIR=/tmp/pspp-tst-$$
-mkdir -p $TEMPDIR
-trap 'cd /; rm -rf $TEMPDIR' 0
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-: ${PERL:=perl}
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-fail()
-{
- echo $activity
- echo FAILED
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- exit 2;
-}
-
-pass()
-{
- exit 0;
-}
-
-cd $TEMPDIR
-
-activity="write PRNG fragment"
-cat > my-rand.pl <<'EOF'
-# This random number generator and the test for it below are drawn
-# from Park and Miller, "Random Number Generators: Good Ones are Hard
-# to Come By", Communications of the ACM 31:10 (October 1988). It is
-# documented to function properly on systems with a 46-bit or longer
-# real significand, which includes systems that have 64-bit IEEE reals
-# (with 53-bit significand). The test should catch any systems for
-# which this is not true, in any case.
-
-our ($seed) = 1;
-sub my_rand {
- my ($modulo) = @_;
- my ($a) = 16807;
- my ($m) = 2147483647;
- my ($tmp) = $a * $seed;
- $seed = $tmp - $m * int ($tmp / $m);
- return $seed % $modulo;
-}
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="write PRNG test program"
-cat > test-my-rand.pl <<'EOF'
-#! /usr/bin/perl
-use strict;
-use warnings;
-do 'my-rand.pl';
-my_rand (1) foreach 1...10000;
-our $seed;
-die $seed if $seed != 1043618065;
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="test PRNG"
-$PERL test-my-rand.pl
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="write program to generate PSPP syntax and data"
-cat > time-in.pl <<'EOF'
-#! /usr/bin/perl
-
-use strict;
-use warnings;
-
-do 'my-rand.pl';
-
-my @formats = (["time", "+H:M", "+H:M:S"],
- ["dtime", "+D H:M", "+D H:M:S"]);
-
-my @times = (# D HH MM SS
- [ 0, 0, 0, 0.00],
- [ 1, 4, 50, 38.68],
- [ 5, 12, 31, 35.82],
- [ 0, 12, 47, 53.41],
- [ 3, 1, 26, 0.69],
- [ 1, 20, 58, 11.19],
- [ 12, 7, 36, 5.98],
- [ 52, 15, 43, 49.27],
- [ 7, 4, 25, 9.24],
- [ 0, 6, 49, 27.89],
- [ 20, 2, 57, 52.56],
- [555, 16, 45, 44.12],
- [120, 21, 30, 57.27],
- [ 0, 4, 25, 9.98],
- [ 3, 6, 49, 27.24],
- [ 5, 2, 57, 52.13],
- [ 0, 16, 45, 44.35],
- [ 1, 21, 30, 57.32],
- [ 10, 22, 30, 4.27],
- [ 22, 1, 56, 51.18]);
-
-open (SYNTAX, '>', 'time-in.pspp') or die "time-in.pspp: create: $!\n";
-for my $format (@formats) {
- my ($name) = @$format;
- print SYNTAX "DATA LIST file='$name.data'/$name 1-40 ($name).\n";
- print SYNTAX "PRINT OUTFILE='$name.out'/$name (F16.2).\n";
- print SYNTAX "EXECUTE.\n";
-}
-close (SYNTAX);
-
-for my $format (@formats) {
- my ($fmt_name, @templates) = @$format;
- my ($fn) = "$fmt_name.data";
- open (DATA, '>', $fn) or die "$fn: create: $!\n";
- select DATA;
- for my $template (@templates) {
- for my $time (@times) {
- print_time_with_template ($time, $template) for 1...10;
- }
- }
- close (DATA);
-}
-
-sub print_time_with_template {
- my ($time, $template) = @_;
- my ($day, $hour, $minute, $second) = @$time;
- for my $c (split ('', $template)) {
- if ($c eq '+') {
- print +pick ('', '-', '+');
- } elsif ($c eq 'D') {
- printf (+pick ('%d', '%02d'), $day);
- $day = 0;
- } elsif ($c eq 'H') {
- printf (+pick ('%d', '%02d'), $hour + 24 * $day);
- } elsif ($c eq 'M') {
- printf (+pick ('%d', '%02d'), $minute);
- } elsif ($c eq 'S') {
- printf (+pick ('%.0f', '%02.0f', '%.1f', '%.2f'), $second);
- } elsif ($c eq ':') {
- print +pick (' ', ':');
- } elsif ($c eq ' ') {
- print ' ';
- } else {
- die;
- }
- }
- print "\n";
-}
-
-sub pick {
- return $_[int (my_rand ($#_ + 1))];
-}
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="generate PSPP syntax and data"
-$PERL time-in.pl
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv time-in.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare time.out output"
-diff -u time.out - <<EOF
- .00
- .00
- .00
- .00
- .00
- .00
- .00
- .00
- .00
- .00
- -103800.00
- 103800.00
- 103800.00
- -103800.00
- 103800.00
- -103800.00
- 103800.00
- 103800.00
- -103800.00
- 103800.00
- 477060.00
- 477060.00
- 477060.00
- 477060.00
- -477060.00
- 477060.00
- 477060.00
- 477060.00
- 477060.00
- -477060.00
- 46020.00
- -46020.00
- -46020.00
- -46020.00
- 46020.00
- 46020.00
- -46020.00
- 46020.00
- 46020.00
- -46020.00
- 264360.00
- 264360.00
- -264360.00
- -264360.00
- 264360.00
- -264360.00
- 264360.00
- -264360.00
- -264360.00
- -264360.00
- 161880.00
- 161880.00
- 161880.00
- 161880.00
- 161880.00
- -161880.00
- 161880.00
- 161880.00
- 161880.00
- -161880.00
- 1064160.00
- 1064160.00
- 1064160.00
- 1064160.00
- 1064160.00
- 1064160.00
- -1064160.00
- 1064160.00
- 1064160.00
- 1064160.00
- -4549380.00
- 4549380.00
- 4549380.00
- 4549380.00
- 4549380.00
- 4549380.00
- 4549380.00
- -4549380.00
- 4549380.00
- 4549380.00
- 620700.00
- -620700.00
- 620700.00
- 620700.00
- -620700.00
- 620700.00
- -620700.00
- -620700.00
- 620700.00
- 620700.00
- 24540.00
- -24540.00
- 24540.00
- 24540.00
- 24540.00
- 24540.00
- 24540.00
- 24540.00
- 24540.00
- 24540.00
- -1738620.00
- 1738620.00
- 1738620.00
- 1738620.00
- 1738620.00
- 1738620.00
- 1738620.00
- 1738620.00
- 1738620.00
- 1738620.00
- 48012300.00
- -48012300.00
- -48012300.00
- 48012300.00
- 48012300.00
- 48012300.00
- 48012300.00
- 48012300.00
- 48012300.00
- 48012300.00
- 10445400.00
- -10445400.00
- -10445400.00
- 10445400.00
- 10445400.00
- 10445400.00
- -10445400.00
- 10445400.00
- 10445400.00
- -10445400.00
- 15900.00
- 15900.00
- -15900.00
- 15900.00
- -15900.00
- -15900.00
- 15900.00
- 15900.00
- 15900.00
- 15900.00
- 283740.00
- -283740.00
- 283740.00
- 283740.00
- 283740.00
- -283740.00
- 283740.00
- 283740.00
- -283740.00
- 283740.00
- 442620.00
- 442620.00
- 442620.00
- 442620.00
- 442620.00
- 442620.00
- 442620.00
- 442620.00
- 442620.00
- -442620.00
- 60300.00
- 60300.00
- 60300.00
- 60300.00
- 60300.00
- -60300.00
- -60300.00
- 60300.00
- -60300.00
- -60300.00
- 163800.00
- -163800.00
- -163800.00
- -163800.00
- 163800.00
- 163800.00
- 163800.00
- 163800.00
- -163800.00
- 163800.00
- 945000.00
- -945000.00
- -945000.00
- -945000.00
- 945000.00
- 945000.00
- 945000.00
- -945000.00
- 945000.00
- 945000.00
- -1907760.00
- 1907760.00
- -1907760.00
- 1907760.00
- -1907760.00
- 1907760.00
- 1907760.00
- 1907760.00
- 1907760.00
- -1907760.00
- .00
- .00
- .00
- .00
- .00
- .00
- .00
- .00
- .00
- .00
- 103839.00
- 103838.68
- -103838.70
- -103838.68
- 103838.70
- 103838.68
- -103839.00
- 103838.68
- 103838.70
- -103839.00
- 477095.82
- 477096.00
- 477096.00
- 477095.82
- 477095.82
- 477095.82
- 477095.80
- -477095.80
- 477095.82
- -477095.82
- -46073.00
- -46073.40
- 46073.00
- 46073.40
- 46073.40
- 46073.00
- -46073.00
- 46073.00
- 46073.00
- 46073.00
- 264360.69
- -264360.70
- 264361.00
- 264360.70
- 264360.69
- 264360.70
- 264361.00
- 264360.70
- -264361.00
- 264361.00
- 161891.00
- -161891.20
- -161891.00
- 161891.00
- -161891.00
- 161891.20
- -161891.20
- -161891.20
- 161891.20
- -161891.19
- -1064166.00
- 1064165.98
- -1064166.00
- -1064166.00
- -1064165.98
- 1064166.00
- 1064166.00
- -1064166.00
- -1064165.98
- 1064166.00
- 4549429.00
- 4549429.27
- 4549429.27
- -4549429.30
- 4549429.00
- -4549429.00
- 4549429.00
- 4549429.27
- 4549429.00
- 4549429.30
- 620709.00
- -620709.24
- 620709.24
- 620709.24
- 620709.24
- 620709.20
- -620709.24
- 620709.20
- 620709.24
- 620709.24
- 24567.90
- 24567.89
- 24567.90
- 24568.00
- 24567.90
- 24568.00
- 24568.00
- -24567.90
- 24567.90
- 24568.00
- 1738672.56
- 1738673.00
- -1738672.60
- -1738672.56
- 1738673.00
- 1738673.00
- 1738673.00
- 1738672.60
- -1738672.56
- 1738672.60
- -48012344.10
- 48012344.12
- -48012344.10
- -48012344.00
- -48012344.00
- 48012344.00
- -48012344.00
- -48012344.00
- -48012344.00
- 48012344.00
- 10445457.27
- 10445457.00
- 10445457.30
- 10445457.00
- 10445457.27
- 10445457.00
- 10445457.27
- 10445457.00
- 10445457.00
- -10445457.30
- -15909.98
- 15910.00
- -15910.00
- 15910.00
- -15909.98
- 15910.00
- -15909.98
- 15909.98
- 15910.00
- 15909.98
- -283767.00
- 283767.20
- 283767.20
- 283767.00
- -283767.00
- 283767.00
- 283767.24
- 283767.00
- 283767.24
- 283767.00
- -442672.00
- 442672.13
- 442672.00
- 442672.13
- 442672.00
- 442672.00
- 442672.00
- 442672.00
- -442672.00
- 442672.13
- -60344.40
- -60344.00
- 60344.00
- 60344.35
- 60344.00
- 60344.40
- 60344.40
- -60344.00
- 60344.00
- 60344.40
- 163857.00
- 163857.00
- 163857.00
- 163857.00
- 163857.30
- -163857.30
- 163857.30
- -163857.00
- -163857.00
- 163857.30
- 945004.30
- 945004.00
- 945004.27
- 945004.30
- 945004.30
- 945004.00
- 945004.30
- 945004.00
- 945004.00
- 945004.00
- 1907811.00
- 1907811.00
- -1907811.00
- 1907811.18
- 1907811.20
- 1907811.00
- -1907811.00
- 1907811.18
- -1907811.00
- -1907811.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="compare dtime.out output"
-diff -u dtime.out - <<EOF
- .00
- .00
- .00
- .00
- .00
- .00
- .00
- .00
- .00
- .00
- 103800.00
- 103800.00
- -103800.00
- 103800.00
- 103800.00
- -103800.00
- 103800.00
- -103800.00
- 103800.00
- -103800.00
- 477060.00
- 477060.00
- 477060.00
- 477060.00
- 477060.00
- 477060.00
- -477060.00
- -477060.00
- -477060.00
- 477060.00
- 46020.00
- 46020.00
- 46020.00
- 46020.00
- -46020.00
- -46020.00
- -46020.00
- 46020.00
- 46020.00
- 46020.00
- 264360.00
- 264360.00
- -264360.00
- 264360.00
- 264360.00
- 264360.00
- 264360.00
- -264360.00
- -264360.00
- -264360.00
- -161880.00
- -161880.00
- 161880.00
- 161880.00
- 161880.00
- -161880.00
- 161880.00
- -161880.00
- 161880.00
- -161880.00
- 1064160.00
- 1064160.00
- 1064160.00
- 1064160.00
- 1064160.00
- 1064160.00
- -1064160.00
- 1064160.00
- 1064160.00
- 1064160.00
- -4549380.00
- 4549380.00
- -4549380.00
- -4549380.00
- -4549380.00
- 4549380.00
- 4549380.00
- 4549380.00
- 4549380.00
- 4549380.00
- -620700.00
- 620700.00
- 620700.00
- -620700.00
- 620700.00
- 620700.00
- 620700.00
- -620700.00
- 620700.00
- 620700.00
- -24540.00
- 24540.00
- 24540.00
- 24540.00
- -24540.00
- 24540.00
- 24540.00
- -24540.00
- 24540.00
- -24540.00
- 1738620.00
- 1738620.00
- 1738620.00
- -1738620.00
- -1738620.00
- -1738620.00
- 1738620.00
- 1738620.00
- 1738620.00
- 1738620.00
- 48012300.00
- 48012300.00
- 48012300.00
- 48012300.00
- 48012300.00
- -48012300.00
- -48012300.00
- 48012300.00
- -48012300.00
- -48012300.00
- -10445400.00
- 10445400.00
- -10445400.00
- 10445400.00
- 10445400.00
- 10445400.00
- 10445400.00
- 10445400.00
- 10445400.00
- 10445400.00
- 15900.00
- 15900.00
- 15900.00
- 15900.00
- 15900.00
- -15900.00
- 15900.00
- 15900.00
- 15900.00
- 15900.00
- -283740.00
- 283740.00
- -283740.00
- -283740.00
- 283740.00
- 283740.00
- 283740.00
- 283740.00
- 283740.00
- -283740.00
- 442620.00
- -442620.00
- -442620.00
- 442620.00
- 442620.00
- -442620.00
- -442620.00
- -442620.00
- 442620.00
- 442620.00
- 60300.00
- -60300.00
- 60300.00
- 60300.00
- 60300.00
- 60300.00
- 60300.00
- 60300.00
- 60300.00
- 60300.00
- 163800.00
- 163800.00
- -163800.00
- 163800.00
- -163800.00
- -163800.00
- -163800.00
- 163800.00
- 163800.00
- -163800.00
- 945000.00
- 945000.00
- 945000.00
- 945000.00
- -945000.00
- 945000.00
- 945000.00
- 945000.00
- 945000.00
- -945000.00
- -1907760.00
- 1907760.00
- 1907760.00
- 1907760.00
- -1907760.00
- -1907760.00
- -1907760.00
- 1907760.00
- -1907760.00
- -1907760.00
- .00
- .00
- .00
- .00
- .00
- .00
- .00
- .00
- .00
- .00
- 103838.70
- 103838.70
- 103839.00
- 103838.68
- 103838.70
- 103839.00
- 103838.70
- -103839.00
- 103839.00
- 103839.00
- 477095.80
- 477095.80
- -477095.80
- 477095.82
- 477095.82
- 477095.82
- -477095.82
- 477095.82
- 477096.00
- -477096.00
- -46073.00
- 46073.00
- -46073.00
- 46073.41
- 46073.00
- 46073.40
- 46073.00
- 46073.41
- 46073.41
- -46073.00
- 264360.70
- 264360.70
- 264360.69
- 264361.00
- -264360.70
- 264360.69
- -264360.70
- 264360.69
- -264361.00
- 264360.69
- 161891.00
- -161891.20
- -161891.19
- 161891.19
- 161891.00
- 161891.20
- 161891.20
- 161891.00
- 161891.00
- 161891.20
- -1064165.98
- 1064166.00
- 1064166.00
- 1064166.00
- 1064165.98
- 1064166.00
- 1064166.00
- -1064165.98
- 1064165.98
- -1064166.00
- 4549429.27
- 4549429.27
- 4549429.27
- 4549429.27
- 4549429.00
- 4549429.27
- -4549429.27
- 4549429.00
- 4549429.27
- 4549429.27
- -620709.00
- 620709.20
- 620709.00
- -620709.20
- -620709.24
- -620709.00
- 620709.00
- 620709.24
- -620709.24
- 620709.00
- -24567.89
- 24567.90
- 24568.00
- 24567.89
- 24568.00
- 24568.00
- 24567.90
- -24568.00
- -24567.89
- -24568.00
- 1738672.56
- -1738672.56
- 1738672.56
- -1738672.60
- -1738673.00
- 1738672.56
- 1738673.00
- -1738672.60
- 1738672.60
- 1738672.56
- 48012344.00
- -48012344.12
- -48012344.00
- 48012344.12
- -48012344.12
- -48012344.00
- 48012344.12
- -48012344.00
- -48012344.00
- -48012344.00
- -10445457.00
- 10445457.00
- 10445457.00
- 10445457.00
- -10445457.00
- -10445457.00
- 10445457.00
- 10445457.00
- 10445457.00
- -10445457.30
- -15909.98
- 15910.00
- -15909.98
- 15910.00
- 15910.00
- -15910.00
- -15910.00
- -15910.00
- -15910.00
- 15909.98
- -283767.24
- 283767.20
- 283767.24
- 283767.24
- 283767.00
- 283767.20
- 283767.20
- 283767.24
- -283767.00
- 283767.24
- 442672.13
- -442672.13
- 442672.00
- 442672.13
- 442672.10
- 442672.00
- 442672.00
- -442672.10
- 442672.00
- -442672.10
- -60344.35
- 60344.00
- 60344.00
- -60344.00
- 60344.00
- 60344.35
- 60344.00
- 60344.35
- 60344.00
- 60344.00
- -163857.00
- -163857.00
- 163857.32
- 163857.00
- -163857.30
- -163857.00
- 163857.30
- 163857.00
- 163857.00
- -163857.00
- -945004.00
- -945004.30
- 945004.27
- 945004.27
- -945004.27
- -945004.27
- -945004.00
- -945004.27
- -945004.00
- 945004.30
- 1907811.00
- 1907811.00
- 1907811.00
- 1907811.00
- 1907811.20
- 1907811.18
- 1907811.18
- 1907811.18
- 1907811.18
- 1907811.00
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#! /bin/sh
-
-TEMPDIR=/tmp/pspp-tst-$$
-mkdir -p $TEMPDIR
-trap 'cd /; rm -rf $TEMPDIR' 0
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-fail()
-{
- echo $activity
- echo FAILED
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- exit 2;
-}
-
-pass()
-{
- exit 0;
-}
-
-cd $TEMPDIR
-
-activity="write pspp syntax"
-cat > time-out.pspp <<EOF
-set epoch=1930.
-data list /x 1-30 (dtime).
-begin data.
-0 0:0:0
-0 4:50:38.12301
-0 12:31:35.23453
-0 12:47:53.34505
-0 1:26:0.45615
-0 20:58:11.56677
-0 7:36:5.18964
-0 15:43:49.83132
-0 4:25:9.01293
-0 6:49:27.52375
-0 2:57:52.01565
-0 16:45:44.86529
-0 21:30:57.82047
-0 4:25:9.15395
-0 6:49:27.10533
-0 2:57:52.48229
-0 16:45:44.65827
-0 21:30:57.58219
-0 22:30:4.18347
-0 1:56:51.59319
-1 0:0:0
-1 4:50:38.12301
-1 12:31:35.23453
-1 12:47:53.34505
-1 1:26:0.45615
-1 20:58:11.56677
-1 7:36:5.18964
-1 15:43:49.83132
-1 4:25:9.01293
-1 6:49:27.52375
-1 2:57:52.01565
-1 16:45:44.86529
-1 21:30:57.82047
-1 4:25:9.15395
-1 6:49:27.10533
-1 2:57:52.48229
-1 16:45:44.65827
-1 21:30:57.58219
-1 22:30:4.18347
-1 1:56:51.59319
-2 0:0:0
-2 4:50:38.12301
-2 12:31:35.23453
-2 12:47:53.34505
-2 1:26:0.45615
-2 20:58:11.56677
-2 7:36:5.18964
-2 15:43:49.83132
-2 4:25:9.01293
-2 6:49:27.52375
-2 2:57:52.01565
-2 16:45:44.86529
-2 21:30:57.82047
-2 4:25:9.15395
-2 6:49:27.10533
-2 2:57:52.48229
-2 16:45:44.65827
-2 21:30:57.58219
-2 22:30:4.18347
-2 1:56:51.59319
-54 0:0:0
-54 4:50:38.12301
-54 12:31:35.23453
-54 12:47:53.34505
-54 1:26:0.45615
-54 20:58:11.56677
-54 7:36:5.18964
-54 15:43:49.83132
-54 4:25:9.01293
-54 6:49:27.52375
-54 2:57:52.01565
-54 16:45:44.86529
-54 21:30:57.82047
-54 4:25:9.15395
-54 6:49:27.10533
-54 2:57:52.48229
-54 16:45:44.65827
-54 21:30:57.58219
-54 22:30:4.18347
-54 1:56:51.59319
-681 0:0:0
-681 4:50:38.12301
-681 12:31:35.23453
-681 12:47:53.34505
-681 1:26:0.45615
-681 20:58:11.56677
-681 7:36:5.18964
-681 15:43:49.83132
-681 4:25:9.01293
-681 6:49:27.52375
-681 2:57:52.01565
-681 16:45:44.86529
-681 21:30:57.82047
-681 4:25:9.15395
-681 6:49:27.10533
-681 2:57:52.48229
-681 16:45:44.65827
-681 21:30:57.58219
-681 22:30:4.18347
-681 1:56:51.59319
--0 0:0:0
--0 4:50:38.12301
--0 12:31:35.23453
--0 12:47:53.34505
--0 1:26:0.45615
--0 20:58:11.56677
--0 7:36:5.18964
--0 15:43:49.83132
--0 4:25:9.01293
--0 6:49:27.52375
--0 2:57:52.01565
--0 16:45:44.86529
--0 21:30:57.82047
--0 4:25:9.15395
--0 6:49:27.10533
--0 2:57:52.48229
--0 16:45:44.65827
--0 21:30:57.58219
--0 22:30:4.18347
--0 1:56:51.59319
--1 0:0:0
--1 4:50:38.12301
--1 12:31:35.23453
--1 12:47:53.34505
--1 1:26:0.45615
--1 20:58:11.56677
--1 7:36:5.18964
--1 15:43:49.83132
--1 4:25:9.01293
--1 6:49:27.52375
--1 2:57:52.01565
--1 16:45:44.86529
--1 21:30:57.82047
--1 4:25:9.15395
--1 6:49:27.10533
--1 2:57:52.48229
--1 16:45:44.65827
--1 21:30:57.58219
--1 22:30:4.18347
--1 1:56:51.59319
--2 0:0:0
--2 4:50:38.12301
--2 12:31:35.23453
--2 12:47:53.34505
--2 1:26:0.45615
--2 20:58:11.56677
--2 7:36:5.18964
--2 15:43:49.83132
--2 4:25:9.01293
--2 6:49:27.52375
--2 2:57:52.01565
--2 16:45:44.86529
--2 21:30:57.82047
--2 4:25:9.15395
--2 6:49:27.10533
--2 2:57:52.48229
--2 16:45:44.65827
--2 21:30:57.58219
--2 22:30:4.18347
--2 1:56:51.59319
--54 0:0:0
--54 4:50:38.12301
--54 12:31:35.23453
--54 12:47:53.34505
--54 1:26:0.45615
--54 20:58:11.56677
--54 7:36:5.18964
--54 15:43:49.83132
--54 4:25:9.01293
--54 6:49:27.52375
--54 2:57:52.01565
--54 16:45:44.86529
--54 21:30:57.82047
--54 4:25:9.15395
--54 6:49:27.10533
--54 2:57:52.48229
--54 16:45:44.65827
--54 21:30:57.58219
--54 22:30:4.18347
--54 1:56:51.59319
--681 0:0:0
--681 4:50:38.12301
--681 12:31:35.23453
--681 12:47:53.34505
--681 1:26:0.45615
--681 20:58:11.56677
--681 7:36:5.18964
--681 15:43:49.83132
--681 4:25:9.01293
--681 6:49:27.52375
--681 2:57:52.01565
--681 16:45:44.86529
--681 21:30:57.82047
--681 4:25:9.15395
--681 6:49:27.10533
--681 2:57:52.48229
--681 16:45:44.65827
--681 21:30:57.58219
--681 22:30:4.18347
--681 1:56:51.59319
-end data.
-print outfile='time-out.out'/x(time5).
-print outfile='time-out.out'/x(time6).
-print outfile='time-out.out'/x(time7).
-print outfile='time-out.out'/x(time8).
-print outfile='time-out.out'/x(time9).
-print outfile='time-out.out'/x(time10).
-print outfile='time-out.out'/x(time10.1).
-print outfile='time-out.out'/x(time11).
-print outfile='time-out.out'/x(time11.1).
-print outfile='time-out.out'/x(time11.2).
-print outfile='time-out.out'/x(time12).
-print outfile='time-out.out'/x(time12.1).
-print outfile='time-out.out'/x(time12.2).
-print outfile='time-out.out'/x(time12.3).
-print outfile='time-out.out'/x(time13).
-print outfile='time-out.out'/x(time13.1).
-print outfile='time-out.out'/x(time13.2).
-print outfile='time-out.out'/x(time13.3).
-print outfile='time-out.out'/x(time13.4).
-print outfile='time-out.out'/x(time14).
-print outfile='time-out.out'/x(time14.1).
-print outfile='time-out.out'/x(time14.2).
-print outfile='time-out.out'/x(time14.3).
-print outfile='time-out.out'/x(time14.4).
-print outfile='time-out.out'/x(time14.5).
-print outfile='time-out.out'/x(time15).
-print outfile='time-out.out'/x(time15.1).
-print outfile='time-out.out'/x(time15.2).
-print outfile='time-out.out'/x(time15.3).
-print outfile='time-out.out'/x(time15.4).
-print outfile='time-out.out'/x(time15.5).
-print outfile='time-out.out'/x(time15.6).
-print outfile='time-out.out'/x(dtime8).
-print outfile='time-out.out'/x(dtime9).
-print outfile='time-out.out'/x(dtime10).
-print outfile='time-out.out'/x(dtime11).
-print outfile='time-out.out'/x(dtime12).
-print outfile='time-out.out'/x(dtime13).
-print outfile='time-out.out'/x(dtime13.1).
-print outfile='time-out.out'/x(dtime14).
-print outfile='time-out.out'/x(dtime14.1).
-print outfile='time-out.out'/x(dtime14.2).
-print outfile='time-out.out'/x(dtime15).
-print outfile='time-out.out'/x(dtime15.1).
-print outfile='time-out.out'/x(dtime15.2).
-print outfile='time-out.out'/x(dtime15.3).
-print outfile='time-out.out'/x(dtime16).
-print outfile='time-out.out'/x(dtime16.1).
-print outfile='time-out.out'/x(dtime16.2).
-print outfile='time-out.out'/x(dtime16.3).
-print outfile='time-out.out'/x(dtime16.4).
-print outfile='time-out.out'/x(dtime17).
-print outfile='time-out.out'/x(dtime17.1).
-print outfile='time-out.out'/x(dtime17.2).
-print outfile='time-out.out'/x(dtime17.3).
-print outfile='time-out.out'/x(dtime17.4).
-print outfile='time-out.out'/x(dtime17.5).
-print outfile='time-out.out'/x(dtime18).
-print outfile='time-out.out'/x(dtime18.1).
-print outfile='time-out.out'/x(dtime18.2).
-print outfile='time-out.out'/x(dtime18.3).
-print outfile='time-out.out'/x(dtime18.4).
-print outfile='time-out.out'/x(dtime18.5).
-print outfile='time-out.out'/x(dtime18.6).
-execute.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv time-out.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -u time-out.out - <<EOF
- 0:00
- 0:00
- 0:00:00
- 0:00:00
- 0:00:00
- 0:00:00
- 0:00:00.0
- 0:00:00
- 0:00:00.0
- 0:00:00.00
- 0:00:00
- 0:00:00.0
- 0:00:00.00
- 0:00:00.000
- 0:00:00
- 0:00:00.0
- 0:00:00.00
- 0:00:00.000
- 0:00:00.0000
- 0:00:00
- 0:00:00.0
- 0:00:00.00
- 0:00:00.000
- 0:00:00.0000
- 0:00:00.00000
- 0:00:00
- 0:00:00.0
- 0:00:00.00
- 0:00:00.000
- 0:00:00.0000
- 0:00:00.00000
- 0:00:00.000000
- 0 00:00
- 0 00:00
- 0 00:00:00
- 0 00:00:00
- 0 00:00:00
- 0 00:00:00
- 0 00:00:00.0
- 0 00:00:00
- 0 00:00:00.0
- 0 00:00:00.00
- 0 00:00:00
- 0 00:00:00.0
- 0 00:00:00.00
- 0 00:00:00.000
- 0 00:00:00
- 0 00:00:00.0
- 0 00:00:00.00
- 0 00:00:00.000
- 0 00:00:00.0000
- 0 00:00:00
- 0 00:00:00.0
- 0 00:00:00.00
- 0 00:00:00.000
- 0 00:00:00.0000
- 0 00:00:00.00000
- 0 00:00:00
- 0 00:00:00.0
- 0 00:00:00.00
- 0 00:00:00.000
- 0 00:00:00.0000
- 0 00:00:00.00000
- 0 00:00:00.000000
- 4:50
- 4:50
- 4:50:38
- 4:50:38
- 4:50:38
- 4:50:38
- 4:50:38.1
- 4:50:38
- 4:50:38.1
- 4:50:38.12
- 4:50:38
- 4:50:38.1
- 4:50:38.12
- 4:50:38.123
- 4:50:38
- 4:50:38.1
- 4:50:38.12
- 4:50:38.123
- 4:50:38.1230
- 4:50:38
- 4:50:38.1
- 4:50:38.12
- 4:50:38.123
- 4:50:38.1230
- 4:50:38.12301
- 4:50:38
- 4:50:38.1
- 4:50:38.12
- 4:50:38.123
- 4:50:38.1230
- 4:50:38.12301
- 4:50:38.123010
- 0 04:50
- 0 04:50
- 0 04:50:38
- 0 04:50:38
- 0 04:50:38
- 0 04:50:38
- 0 04:50:38.1
- 0 04:50:38
- 0 04:50:38.1
- 0 04:50:38.12
- 0 04:50:38
- 0 04:50:38.1
- 0 04:50:38.12
- 0 04:50:38.123
- 0 04:50:38
- 0 04:50:38.1
- 0 04:50:38.12
- 0 04:50:38.123
- 0 04:50:38.1230
- 0 04:50:38
- 0 04:50:38.1
- 0 04:50:38.12
- 0 04:50:38.123
- 0 04:50:38.1230
- 0 04:50:38.12301
- 0 04:50:38
- 0 04:50:38.1
- 0 04:50:38.12
- 0 04:50:38.123
- 0 04:50:38.1230
- 0 04:50:38.12301
- 0 04:50:38.123010
- 12:31
- 12:31
- 12:31
- 12:31:35
- 12:31:35
- 12:31:35
- 12:31:35.2
- 12:31:35
- 12:31:35.2
- 12:31:35.23
- 12:31:35
- 12:31:35.2
- 12:31:35.23
- 12:31:35.235
- 12:31:35
- 12:31:35.2
- 12:31:35.23
- 12:31:35.235
- 12:31:35.2345
- 12:31:35
- 12:31:35.2
- 12:31:35.23
- 12:31:35.235
- 12:31:35.2345
- 12:31:35.23453
- 12:31:35
- 12:31:35.2
- 12:31:35.23
- 12:31:35.235
- 12:31:35.2345
- 12:31:35.23453
- 12:31:35.234530
- 0 12:31
- 0 12:31
- 0 12:31:35
- 0 12:31:35
- 0 12:31:35
- 0 12:31:35
- 0 12:31:35.2
- 0 12:31:35
- 0 12:31:35.2
- 0 12:31:35.23
- 0 12:31:35
- 0 12:31:35.2
- 0 12:31:35.23
- 0 12:31:35.235
- 0 12:31:35
- 0 12:31:35.2
- 0 12:31:35.23
- 0 12:31:35.235
- 0 12:31:35.2345
- 0 12:31:35
- 0 12:31:35.2
- 0 12:31:35.23
- 0 12:31:35.235
- 0 12:31:35.2345
- 0 12:31:35.23453
- 0 12:31:35
- 0 12:31:35.2
- 0 12:31:35.23
- 0 12:31:35.235
- 0 12:31:35.2345
- 0 12:31:35.23453
- 0 12:31:35.234530
- 12:47
- 12:47
- 12:47
- 12:47:53
- 12:47:53
- 12:47:53
- 12:47:53.3
- 12:47:53
- 12:47:53.3
- 12:47:53.35
- 12:47:53
- 12:47:53.3
- 12:47:53.35
- 12:47:53.345
- 12:47:53
- 12:47:53.3
- 12:47:53.35
- 12:47:53.345
- 12:47:53.3451
- 12:47:53
- 12:47:53.3
- 12:47:53.35
- 12:47:53.345
- 12:47:53.3451
- 12:47:53.34505
- 12:47:53
- 12:47:53.3
- 12:47:53.35
- 12:47:53.345
- 12:47:53.3451
- 12:47:53.34505
- 12:47:53.345050
- 0 12:47
- 0 12:47
- 0 12:47:53
- 0 12:47:53
- 0 12:47:53
- 0 12:47:53
- 0 12:47:53.3
- 0 12:47:53
- 0 12:47:53.3
- 0 12:47:53.35
- 0 12:47:53
- 0 12:47:53.3
- 0 12:47:53.35
- 0 12:47:53.345
- 0 12:47:53
- 0 12:47:53.3
- 0 12:47:53.35
- 0 12:47:53.345
- 0 12:47:53.3451
- 0 12:47:53
- 0 12:47:53.3
- 0 12:47:53.35
- 0 12:47:53.345
- 0 12:47:53.3451
- 0 12:47:53.34505
- 0 12:47:53
- 0 12:47:53.3
- 0 12:47:53.35
- 0 12:47:53.345
- 0 12:47:53.3451
- 0 12:47:53.34505
- 0 12:47:53.345050
- 1:26
- 1:26
- 1:26:00
- 1:26:00
- 1:26:00
- 1:26:00
- 1:26:00.5
- 1:26:00
- 1:26:00.5
- 1:26:00.46
- 1:26:00
- 1:26:00.5
- 1:26:00.46
- 1:26:00.456
- 1:26:00
- 1:26:00.5
- 1:26:00.46
- 1:26:00.456
- 1:26:00.4561
- 1:26:00
- 1:26:00.5
- 1:26:00.46
- 1:26:00.456
- 1:26:00.4561
- 1:26:00.45615
- 1:26:00
- 1:26:00.5
- 1:26:00.46
- 1:26:00.456
- 1:26:00.4561
- 1:26:00.45615
- 1:26:00.456150
- 0 01:26
- 0 01:26
- 0 01:26:00
- 0 01:26:00
- 0 01:26:00
- 0 01:26:00
- 0 01:26:00.5
- 0 01:26:00
- 0 01:26:00.5
- 0 01:26:00.46
- 0 01:26:00
- 0 01:26:00.5
- 0 01:26:00.46
- 0 01:26:00.456
- 0 01:26:00
- 0 01:26:00.5
- 0 01:26:00.46
- 0 01:26:00.456
- 0 01:26:00.4561
- 0 01:26:00
- 0 01:26:00.5
- 0 01:26:00.46
- 0 01:26:00.456
- 0 01:26:00.4561
- 0 01:26:00.45615
- 0 01:26:00
- 0 01:26:00.5
- 0 01:26:00.46
- 0 01:26:00.456
- 0 01:26:00.4561
- 0 01:26:00.45615
- 0 01:26:00.456150
- 20:58
- 20:58
- 20:58
- 20:58:11
- 20:58:11
- 20:58:11
- 20:58:11.6
- 20:58:11
- 20:58:11.6
- 20:58:11.57
- 20:58:11
- 20:58:11.6
- 20:58:11.57
- 20:58:11.567
- 20:58:11
- 20:58:11.6
- 20:58:11.57
- 20:58:11.567
- 20:58:11.5668
- 20:58:11
- 20:58:11.6
- 20:58:11.57
- 20:58:11.567
- 20:58:11.5668
- 20:58:11.56677
- 20:58:11
- 20:58:11.6
- 20:58:11.57
- 20:58:11.567
- 20:58:11.5668
- 20:58:11.56677
- 20:58:11.566770
- 0 20:58
- 0 20:58
- 0 20:58:11
- 0 20:58:11
- 0 20:58:11
- 0 20:58:11
- 0 20:58:11.6
- 0 20:58:11
- 0 20:58:11.6
- 0 20:58:11.57
- 0 20:58:11
- 0 20:58:11.6
- 0 20:58:11.57
- 0 20:58:11.567
- 0 20:58:11
- 0 20:58:11.6
- 0 20:58:11.57
- 0 20:58:11.567
- 0 20:58:11.5668
- 0 20:58:11
- 0 20:58:11.6
- 0 20:58:11.57
- 0 20:58:11.567
- 0 20:58:11.5668
- 0 20:58:11.56677
- 0 20:58:11
- 0 20:58:11.6
- 0 20:58:11.57
- 0 20:58:11.567
- 0 20:58:11.5668
- 0 20:58:11.56677
- 0 20:58:11.566770
- 7:36
- 7:36
- 7:36:05
- 7:36:05
- 7:36:05
- 7:36:05
- 7:36:05.2
- 7:36:05
- 7:36:05.2
- 7:36:05.19
- 7:36:05
- 7:36:05.2
- 7:36:05.19
- 7:36:05.190
- 7:36:05
- 7:36:05.2
- 7:36:05.19
- 7:36:05.190
- 7:36:05.1896
- 7:36:05
- 7:36:05.2
- 7:36:05.19
- 7:36:05.190
- 7:36:05.1896
- 7:36:05.18964
- 7:36:05
- 7:36:05.2
- 7:36:05.19
- 7:36:05.190
- 7:36:05.1896
- 7:36:05.18964
- 7:36:05.189640
- 0 07:36
- 0 07:36
- 0 07:36:05
- 0 07:36:05
- 0 07:36:05
- 0 07:36:05
- 0 07:36:05.2
- 0 07:36:05
- 0 07:36:05.2
- 0 07:36:05.19
- 0 07:36:05
- 0 07:36:05.2
- 0 07:36:05.19
- 0 07:36:05.190
- 0 07:36:05
- 0 07:36:05.2
- 0 07:36:05.19
- 0 07:36:05.190
- 0 07:36:05.1896
- 0 07:36:05
- 0 07:36:05.2
- 0 07:36:05.19
- 0 07:36:05.190
- 0 07:36:05.1896
- 0 07:36:05.18964
- 0 07:36:05
- 0 07:36:05.2
- 0 07:36:05.19
- 0 07:36:05.190
- 0 07:36:05.1896
- 0 07:36:05.18964
- 0 07:36:05.189640
- 15:43
- 15:43
- 15:43
- 15:43:49
- 15:43:49
- 15:43:49
- 15:43:49.8
- 15:43:49
- 15:43:49.8
- 15:43:49.83
- 15:43:49
- 15:43:49.8
- 15:43:49.83
- 15:43:49.831
- 15:43:49
- 15:43:49.8
- 15:43:49.83
- 15:43:49.831
- 15:43:49.8313
- 15:43:49
- 15:43:49.8
- 15:43:49.83
- 15:43:49.831
- 15:43:49.8313
- 15:43:49.83132
- 15:43:49
- 15:43:49.8
- 15:43:49.83
- 15:43:49.831
- 15:43:49.8313
- 15:43:49.83132
- 15:43:49.831320
- 0 15:43
- 0 15:43
- 0 15:43:49
- 0 15:43:49
- 0 15:43:49
- 0 15:43:49
- 0 15:43:49.8
- 0 15:43:49
- 0 15:43:49.8
- 0 15:43:49.83
- 0 15:43:49
- 0 15:43:49.8
- 0 15:43:49.83
- 0 15:43:49.831
- 0 15:43:49
- 0 15:43:49.8
- 0 15:43:49.83
- 0 15:43:49.831
- 0 15:43:49.8313
- 0 15:43:49
- 0 15:43:49.8
- 0 15:43:49.83
- 0 15:43:49.831
- 0 15:43:49.8313
- 0 15:43:49.83132
- 0 15:43:49
- 0 15:43:49.8
- 0 15:43:49.83
- 0 15:43:49.831
- 0 15:43:49.8313
- 0 15:43:49.83132
- 0 15:43:49.831320
- 4:25
- 4:25
- 4:25:09
- 4:25:09
- 4:25:09
- 4:25:09
- 4:25:09.0
- 4:25:09
- 4:25:09.0
- 4:25:09.01
- 4:25:09
- 4:25:09.0
- 4:25:09.01
- 4:25:09.013
- 4:25:09
- 4:25:09.0
- 4:25:09.01
- 4:25:09.013
- 4:25:09.0129
- 4:25:09
- 4:25:09.0
- 4:25:09.01
- 4:25:09.013
- 4:25:09.0129
- 4:25:09.01293
- 4:25:09
- 4:25:09.0
- 4:25:09.01
- 4:25:09.013
- 4:25:09.0129
- 4:25:09.01293
- 4:25:09.012930
- 0 04:25
- 0 04:25
- 0 04:25:09
- 0 04:25:09
- 0 04:25:09
- 0 04:25:09
- 0 04:25:09.0
- 0 04:25:09
- 0 04:25:09.0
- 0 04:25:09.01
- 0 04:25:09
- 0 04:25:09.0
- 0 04:25:09.01
- 0 04:25:09.013
- 0 04:25:09
- 0 04:25:09.0
- 0 04:25:09.01
- 0 04:25:09.013
- 0 04:25:09.0129
- 0 04:25:09
- 0 04:25:09.0
- 0 04:25:09.01
- 0 04:25:09.013
- 0 04:25:09.0129
- 0 04:25:09.01293
- 0 04:25:09
- 0 04:25:09.0
- 0 04:25:09.01
- 0 04:25:09.013
- 0 04:25:09.0129
- 0 04:25:09.01293
- 0 04:25:09.012930
- 6:49
- 6:49
- 6:49:27
- 6:49:27
- 6:49:27
- 6:49:27
- 6:49:27.5
- 6:49:27
- 6:49:27.5
- 6:49:27.52
- 6:49:27
- 6:49:27.5
- 6:49:27.52
- 6:49:27.524
- 6:49:27
- 6:49:27.5
- 6:49:27.52
- 6:49:27.524
- 6:49:27.5238
- 6:49:27
- 6:49:27.5
- 6:49:27.52
- 6:49:27.524
- 6:49:27.5238
- 6:49:27.52375
- 6:49:27
- 6:49:27.5
- 6:49:27.52
- 6:49:27.524
- 6:49:27.5238
- 6:49:27.52375
- 6:49:27.523750
- 0 06:49
- 0 06:49
- 0 06:49:27
- 0 06:49:27
- 0 06:49:27
- 0 06:49:27
- 0 06:49:27.5
- 0 06:49:27
- 0 06:49:27.5
- 0 06:49:27.52
- 0 06:49:27
- 0 06:49:27.5
- 0 06:49:27.52
- 0 06:49:27.524
- 0 06:49:27
- 0 06:49:27.5
- 0 06:49:27.52
- 0 06:49:27.524
- 0 06:49:27.5238
- 0 06:49:27
- 0 06:49:27.5
- 0 06:49:27.52
- 0 06:49:27.524
- 0 06:49:27.5238
- 0 06:49:27.52375
- 0 06:49:27
- 0 06:49:27.5
- 0 06:49:27.52
- 0 06:49:27.524
- 0 06:49:27.5238
- 0 06:49:27.52375
- 0 06:49:27.523750
- 2:57
- 2:57
- 2:57:52
- 2:57:52
- 2:57:52
- 2:57:52
- 2:57:52.0
- 2:57:52
- 2:57:52.0
- 2:57:52.02
- 2:57:52
- 2:57:52.0
- 2:57:52.02
- 2:57:52.016
- 2:57:52
- 2:57:52.0
- 2:57:52.02
- 2:57:52.016
- 2:57:52.0156
- 2:57:52
- 2:57:52.0
- 2:57:52.02
- 2:57:52.016
- 2:57:52.0156
- 2:57:52.01565
- 2:57:52
- 2:57:52.0
- 2:57:52.02
- 2:57:52.016
- 2:57:52.0156
- 2:57:52.01565
- 2:57:52.015650
- 0 02:57
- 0 02:57
- 0 02:57:52
- 0 02:57:52
- 0 02:57:52
- 0 02:57:52
- 0 02:57:52.0
- 0 02:57:52
- 0 02:57:52.0
- 0 02:57:52.02
- 0 02:57:52
- 0 02:57:52.0
- 0 02:57:52.02
- 0 02:57:52.016
- 0 02:57:52
- 0 02:57:52.0
- 0 02:57:52.02
- 0 02:57:52.016
- 0 02:57:52.0156
- 0 02:57:52
- 0 02:57:52.0
- 0 02:57:52.02
- 0 02:57:52.016
- 0 02:57:52.0156
- 0 02:57:52.01565
- 0 02:57:52
- 0 02:57:52.0
- 0 02:57:52.02
- 0 02:57:52.016
- 0 02:57:52.0156
- 0 02:57:52.01565
- 0 02:57:52.015650
- 16:45
- 16:45
- 16:45
- 16:45:44
- 16:45:44
- 16:45:44
- 16:45:44.9
- 16:45:44
- 16:45:44.9
- 16:45:44.87
- 16:45:44
- 16:45:44.9
- 16:45:44.87
- 16:45:44.865
- 16:45:44
- 16:45:44.9
- 16:45:44.87
- 16:45:44.865
- 16:45:44.8653
- 16:45:44
- 16:45:44.9
- 16:45:44.87
- 16:45:44.865
- 16:45:44.8653
- 16:45:44.86529
- 16:45:44
- 16:45:44.9
- 16:45:44.87
- 16:45:44.865
- 16:45:44.8653
- 16:45:44.86529
- 16:45:44.865290
- 0 16:45
- 0 16:45
- 0 16:45:44
- 0 16:45:44
- 0 16:45:44
- 0 16:45:44
- 0 16:45:44.9
- 0 16:45:44
- 0 16:45:44.9
- 0 16:45:44.87
- 0 16:45:44
- 0 16:45:44.9
- 0 16:45:44.87
- 0 16:45:44.865
- 0 16:45:44
- 0 16:45:44.9
- 0 16:45:44.87
- 0 16:45:44.865
- 0 16:45:44.8653
- 0 16:45:44
- 0 16:45:44.9
- 0 16:45:44.87
- 0 16:45:44.865
- 0 16:45:44.8653
- 0 16:45:44.86529
- 0 16:45:44
- 0 16:45:44.9
- 0 16:45:44.87
- 0 16:45:44.865
- 0 16:45:44.8653
- 0 16:45:44.86529
- 0 16:45:44.865290
- 21:30
- 21:30
- 21:30
- 21:30:57
- 21:30:57
- 21:30:57
- 21:30:57.8
- 21:30:57
- 21:30:57.8
- 21:30:57.82
- 21:30:57
- 21:30:57.8
- 21:30:57.82
- 21:30:57.820
- 21:30:57
- 21:30:57.8
- 21:30:57.82
- 21:30:57.820
- 21:30:57.8205
- 21:30:57
- 21:30:57.8
- 21:30:57.82
- 21:30:57.820
- 21:30:57.8205
- 21:30:57.82047
- 21:30:57
- 21:30:57.8
- 21:30:57.82
- 21:30:57.820
- 21:30:57.8205
- 21:30:57.82047
- 21:30:57.820470
- 0 21:30
- 0 21:30
- 0 21:30:57
- 0 21:30:57
- 0 21:30:57
- 0 21:30:57
- 0 21:30:57.8
- 0 21:30:57
- 0 21:30:57.8
- 0 21:30:57.82
- 0 21:30:57
- 0 21:30:57.8
- 0 21:30:57.82
- 0 21:30:57.820
- 0 21:30:57
- 0 21:30:57.8
- 0 21:30:57.82
- 0 21:30:57.820
- 0 21:30:57.8205
- 0 21:30:57
- 0 21:30:57.8
- 0 21:30:57.82
- 0 21:30:57.820
- 0 21:30:57.8205
- 0 21:30:57.82047
- 0 21:30:57
- 0 21:30:57.8
- 0 21:30:57.82
- 0 21:30:57.820
- 0 21:30:57.8205
- 0 21:30:57.82047
- 0 21:30:57.820470
- 4:25
- 4:25
- 4:25:09
- 4:25:09
- 4:25:09
- 4:25:09
- 4:25:09.2
- 4:25:09
- 4:25:09.2
- 4:25:09.15
- 4:25:09
- 4:25:09.2
- 4:25:09.15
- 4:25:09.154
- 4:25:09
- 4:25:09.2
- 4:25:09.15
- 4:25:09.154
- 4:25:09.1539
- 4:25:09
- 4:25:09.2
- 4:25:09.15
- 4:25:09.154
- 4:25:09.1539
- 4:25:09.15395
- 4:25:09
- 4:25:09.2
- 4:25:09.15
- 4:25:09.154
- 4:25:09.1539
- 4:25:09.15395
- 4:25:09.153950
- 0 04:25
- 0 04:25
- 0 04:25:09
- 0 04:25:09
- 0 04:25:09
- 0 04:25:09
- 0 04:25:09.2
- 0 04:25:09
- 0 04:25:09.2
- 0 04:25:09.15
- 0 04:25:09
- 0 04:25:09.2
- 0 04:25:09.15
- 0 04:25:09.154
- 0 04:25:09
- 0 04:25:09.2
- 0 04:25:09.15
- 0 04:25:09.154
- 0 04:25:09.1539
- 0 04:25:09
- 0 04:25:09.2
- 0 04:25:09.15
- 0 04:25:09.154
- 0 04:25:09.1539
- 0 04:25:09.15395
- 0 04:25:09
- 0 04:25:09.2
- 0 04:25:09.15
- 0 04:25:09.154
- 0 04:25:09.1539
- 0 04:25:09.15395
- 0 04:25:09.153950
- 6:49
- 6:49
- 6:49:27
- 6:49:27
- 6:49:27
- 6:49:27
- 6:49:27.1
- 6:49:27
- 6:49:27.1
- 6:49:27.11
- 6:49:27
- 6:49:27.1
- 6:49:27.11
- 6:49:27.105
- 6:49:27
- 6:49:27.1
- 6:49:27.11
- 6:49:27.105
- 6:49:27.1053
- 6:49:27
- 6:49:27.1
- 6:49:27.11
- 6:49:27.105
- 6:49:27.1053
- 6:49:27.10533
- 6:49:27
- 6:49:27.1
- 6:49:27.11
- 6:49:27.105
- 6:49:27.1053
- 6:49:27.10533
- 6:49:27.105330
- 0 06:49
- 0 06:49
- 0 06:49:27
- 0 06:49:27
- 0 06:49:27
- 0 06:49:27
- 0 06:49:27.1
- 0 06:49:27
- 0 06:49:27.1
- 0 06:49:27.11
- 0 06:49:27
- 0 06:49:27.1
- 0 06:49:27.11
- 0 06:49:27.105
- 0 06:49:27
- 0 06:49:27.1
- 0 06:49:27.11
- 0 06:49:27.105
- 0 06:49:27.1053
- 0 06:49:27
- 0 06:49:27.1
- 0 06:49:27.11
- 0 06:49:27.105
- 0 06:49:27.1053
- 0 06:49:27.10533
- 0 06:49:27
- 0 06:49:27.1
- 0 06:49:27.11
- 0 06:49:27.105
- 0 06:49:27.1053
- 0 06:49:27.10533
- 0 06:49:27.105330
- 2:57
- 2:57
- 2:57:52
- 2:57:52
- 2:57:52
- 2:57:52
- 2:57:52.5
- 2:57:52
- 2:57:52.5
- 2:57:52.48
- 2:57:52
- 2:57:52.5
- 2:57:52.48
- 2:57:52.482
- 2:57:52
- 2:57:52.5
- 2:57:52.48
- 2:57:52.482
- 2:57:52.4823
- 2:57:52
- 2:57:52.5
- 2:57:52.48
- 2:57:52.482
- 2:57:52.4823
- 2:57:52.48229
- 2:57:52
- 2:57:52.5
- 2:57:52.48
- 2:57:52.482
- 2:57:52.4823
- 2:57:52.48229
- 2:57:52.482290
- 0 02:57
- 0 02:57
- 0 02:57:52
- 0 02:57:52
- 0 02:57:52
- 0 02:57:52
- 0 02:57:52.5
- 0 02:57:52
- 0 02:57:52.5
- 0 02:57:52.48
- 0 02:57:52
- 0 02:57:52.5
- 0 02:57:52.48
- 0 02:57:52.482
- 0 02:57:52
- 0 02:57:52.5
- 0 02:57:52.48
- 0 02:57:52.482
- 0 02:57:52.4823
- 0 02:57:52
- 0 02:57:52.5
- 0 02:57:52.48
- 0 02:57:52.482
- 0 02:57:52.4823
- 0 02:57:52.48229
- 0 02:57:52
- 0 02:57:52.5
- 0 02:57:52.48
- 0 02:57:52.482
- 0 02:57:52.4823
- 0 02:57:52.48229
- 0 02:57:52.482290
- 16:45
- 16:45
- 16:45
- 16:45:44
- 16:45:44
- 16:45:44
- 16:45:44.7
- 16:45:44
- 16:45:44.7
- 16:45:44.66
- 16:45:44
- 16:45:44.7
- 16:45:44.66
- 16:45:44.658
- 16:45:44
- 16:45:44.7
- 16:45:44.66
- 16:45:44.658
- 16:45:44.6583
- 16:45:44
- 16:45:44.7
- 16:45:44.66
- 16:45:44.658
- 16:45:44.6583
- 16:45:44.65827
- 16:45:44
- 16:45:44.7
- 16:45:44.66
- 16:45:44.658
- 16:45:44.6583
- 16:45:44.65827
- 16:45:44.658270
- 0 16:45
- 0 16:45
- 0 16:45:44
- 0 16:45:44
- 0 16:45:44
- 0 16:45:44
- 0 16:45:44.7
- 0 16:45:44
- 0 16:45:44.7
- 0 16:45:44.66
- 0 16:45:44
- 0 16:45:44.7
- 0 16:45:44.66
- 0 16:45:44.658
- 0 16:45:44
- 0 16:45:44.7
- 0 16:45:44.66
- 0 16:45:44.658
- 0 16:45:44.6583
- 0 16:45:44
- 0 16:45:44.7
- 0 16:45:44.66
- 0 16:45:44.658
- 0 16:45:44.6583
- 0 16:45:44.65827
- 0 16:45:44
- 0 16:45:44.7
- 0 16:45:44.66
- 0 16:45:44.658
- 0 16:45:44.6583
- 0 16:45:44.65827
- 0 16:45:44.658270
- 21:30
- 21:30
- 21:30
- 21:30:57
- 21:30:57
- 21:30:57
- 21:30:57.6
- 21:30:57
- 21:30:57.6
- 21:30:57.58
- 21:30:57
- 21:30:57.6
- 21:30:57.58
- 21:30:57.582
- 21:30:57
- 21:30:57.6
- 21:30:57.58
- 21:30:57.582
- 21:30:57.5822
- 21:30:57
- 21:30:57.6
- 21:30:57.58
- 21:30:57.582
- 21:30:57.5822
- 21:30:57.58219
- 21:30:57
- 21:30:57.6
- 21:30:57.58
- 21:30:57.582
- 21:30:57.5822
- 21:30:57.58219
- 21:30:57.582190
- 0 21:30
- 0 21:30
- 0 21:30:57
- 0 21:30:57
- 0 21:30:57
- 0 21:30:57
- 0 21:30:57.6
- 0 21:30:57
- 0 21:30:57.6
- 0 21:30:57.58
- 0 21:30:57
- 0 21:30:57.6
- 0 21:30:57.58
- 0 21:30:57.582
- 0 21:30:57
- 0 21:30:57.6
- 0 21:30:57.58
- 0 21:30:57.582
- 0 21:30:57.5822
- 0 21:30:57
- 0 21:30:57.6
- 0 21:30:57.58
- 0 21:30:57.582
- 0 21:30:57.5822
- 0 21:30:57.58219
- 0 21:30:57
- 0 21:30:57.6
- 0 21:30:57.58
- 0 21:30:57.582
- 0 21:30:57.5822
- 0 21:30:57.58219
- 0 21:30:57.582190
- 22:30
- 22:30
- 22:30
- 22:30:04
- 22:30:04
- 22:30:04
- 22:30:04.2
- 22:30:04
- 22:30:04.2
- 22:30:04.18
- 22:30:04
- 22:30:04.2
- 22:30:04.18
- 22:30:04.183
- 22:30:04
- 22:30:04.2
- 22:30:04.18
- 22:30:04.183
- 22:30:04.1835
- 22:30:04
- 22:30:04.2
- 22:30:04.18
- 22:30:04.183
- 22:30:04.1835
- 22:30:04.18347
- 22:30:04
- 22:30:04.2
- 22:30:04.18
- 22:30:04.183
- 22:30:04.1835
- 22:30:04.18347
- 22:30:04.183470
- 0 22:30
- 0 22:30
- 0 22:30:04
- 0 22:30:04
- 0 22:30:04
- 0 22:30:04
- 0 22:30:04.2
- 0 22:30:04
- 0 22:30:04.2
- 0 22:30:04.18
- 0 22:30:04
- 0 22:30:04.2
- 0 22:30:04.18
- 0 22:30:04.183
- 0 22:30:04
- 0 22:30:04.2
- 0 22:30:04.18
- 0 22:30:04.183
- 0 22:30:04.1835
- 0 22:30:04
- 0 22:30:04.2
- 0 22:30:04.18
- 0 22:30:04.183
- 0 22:30:04.1835
- 0 22:30:04.18347
- 0 22:30:04
- 0 22:30:04.2
- 0 22:30:04.18
- 0 22:30:04.183
- 0 22:30:04.1835
- 0 22:30:04.18347
- 0 22:30:04.183470
- 1:56
- 1:56
- 1:56:51
- 1:56:51
- 1:56:51
- 1:56:51
- 1:56:51.6
- 1:56:51
- 1:56:51.6
- 1:56:51.59
- 1:56:51
- 1:56:51.6
- 1:56:51.59
- 1:56:51.593
- 1:56:51
- 1:56:51.6
- 1:56:51.59
- 1:56:51.593
- 1:56:51.5932
- 1:56:51
- 1:56:51.6
- 1:56:51.59
- 1:56:51.593
- 1:56:51.5932
- 1:56:51.59319
- 1:56:51
- 1:56:51.6
- 1:56:51.59
- 1:56:51.593
- 1:56:51.5932
- 1:56:51.59319
- 1:56:51.593190
- 0 01:56
- 0 01:56
- 0 01:56:51
- 0 01:56:51
- 0 01:56:51
- 0 01:56:51
- 0 01:56:51.6
- 0 01:56:51
- 0 01:56:51.6
- 0 01:56:51.59
- 0 01:56:51
- 0 01:56:51.6
- 0 01:56:51.59
- 0 01:56:51.593
- 0 01:56:51
- 0 01:56:51.6
- 0 01:56:51.59
- 0 01:56:51.593
- 0 01:56:51.5932
- 0 01:56:51
- 0 01:56:51.6
- 0 01:56:51.59
- 0 01:56:51.593
- 0 01:56:51.5932
- 0 01:56:51.59319
- 0 01:56:51
- 0 01:56:51.6
- 0 01:56:51.59
- 0 01:56:51.593
- 0 01:56:51.5932
- 0 01:56:51.59319
- 0 01:56:51.593190
- 24:00
- 24:00
- 24:00
- 24:00:00
- 24:00:00
- 24:00:00
- 24:00:00.0
- 24:00:00
- 24:00:00.0
- 24:00:00.00
- 24:00:00
- 24:00:00.0
- 24:00:00.00
- 24:00:00.000
- 24:00:00
- 24:00:00.0
- 24:00:00.00
- 24:00:00.000
- 24:00:00.0000
- 24:00:00
- 24:00:00.0
- 24:00:00.00
- 24:00:00.000
- 24:00:00.0000
- 24:00:00.00000
- 24:00:00
- 24:00:00.0
- 24:00:00.00
- 24:00:00.000
- 24:00:00.0000
- 24:00:00.00000
- 24:00:00.000000
- 1 00:00
- 1 00:00
- 1 00:00:00
- 1 00:00:00
- 1 00:00:00
- 1 00:00:00
- 1 00:00:00.0
- 1 00:00:00
- 1 00:00:00.0
- 1 00:00:00.00
- 1 00:00:00
- 1 00:00:00.0
- 1 00:00:00.00
- 1 00:00:00.000
- 1 00:00:00
- 1 00:00:00.0
- 1 00:00:00.00
- 1 00:00:00.000
- 1 00:00:00.0000
- 1 00:00:00
- 1 00:00:00.0
- 1 00:00:00.00
- 1 00:00:00.000
- 1 00:00:00.0000
- 1 00:00:00.00000
- 1 00:00:00
- 1 00:00:00.0
- 1 00:00:00.00
- 1 00:00:00.000
- 1 00:00:00.0000
- 1 00:00:00.00000
- 1 00:00:00.000000
- 28:50
- 28:50
- 28:50
- 28:50:38
- 28:50:38
- 28:50:38
- 28:50:38.1
- 28:50:38
- 28:50:38.1
- 28:50:38.12
- 28:50:38
- 28:50:38.1
- 28:50:38.12
- 28:50:38.123
- 28:50:38
- 28:50:38.1
- 28:50:38.12
- 28:50:38.123
- 28:50:38.1230
- 28:50:38
- 28:50:38.1
- 28:50:38.12
- 28:50:38.123
- 28:50:38.1230
- 28:50:38.12301
- 28:50:38
- 28:50:38.1
- 28:50:38.12
- 28:50:38.123
- 28:50:38.1230
- 28:50:38.12301
- 28:50:38.123010
- 1 04:50
- 1 04:50
- 1 04:50:38
- 1 04:50:38
- 1 04:50:38
- 1 04:50:38
- 1 04:50:38.1
- 1 04:50:38
- 1 04:50:38.1
- 1 04:50:38.12
- 1 04:50:38
- 1 04:50:38.1
- 1 04:50:38.12
- 1 04:50:38.123
- 1 04:50:38
- 1 04:50:38.1
- 1 04:50:38.12
- 1 04:50:38.123
- 1 04:50:38.1230
- 1 04:50:38
- 1 04:50:38.1
- 1 04:50:38.12
- 1 04:50:38.123
- 1 04:50:38.1230
- 1 04:50:38.12301
- 1 04:50:38
- 1 04:50:38.1
- 1 04:50:38.12
- 1 04:50:38.123
- 1 04:50:38.1230
- 1 04:50:38.12301
- 1 04:50:38.123010
- 36:31
- 36:31
- 36:31
- 36:31:35
- 36:31:35
- 36:31:35
- 36:31:35.2
- 36:31:35
- 36:31:35.2
- 36:31:35.23
- 36:31:35
- 36:31:35.2
- 36:31:35.23
- 36:31:35.235
- 36:31:35
- 36:31:35.2
- 36:31:35.23
- 36:31:35.235
- 36:31:35.2345
- 36:31:35
- 36:31:35.2
- 36:31:35.23
- 36:31:35.235
- 36:31:35.2345
- 36:31:35.23453
- 36:31:35
- 36:31:35.2
- 36:31:35.23
- 36:31:35.235
- 36:31:35.2345
- 36:31:35.23453
- 36:31:35.234530
- 1 12:31
- 1 12:31
- 1 12:31:35
- 1 12:31:35
- 1 12:31:35
- 1 12:31:35
- 1 12:31:35.2
- 1 12:31:35
- 1 12:31:35.2
- 1 12:31:35.23
- 1 12:31:35
- 1 12:31:35.2
- 1 12:31:35.23
- 1 12:31:35.235
- 1 12:31:35
- 1 12:31:35.2
- 1 12:31:35.23
- 1 12:31:35.235
- 1 12:31:35.2345
- 1 12:31:35
- 1 12:31:35.2
- 1 12:31:35.23
- 1 12:31:35.235
- 1 12:31:35.2345
- 1 12:31:35.23453
- 1 12:31:35
- 1 12:31:35.2
- 1 12:31:35.23
- 1 12:31:35.235
- 1 12:31:35.2345
- 1 12:31:35.23453
- 1 12:31:35.234530
- 36:47
- 36:47
- 36:47
- 36:47:53
- 36:47:53
- 36:47:53
- 36:47:53.3
- 36:47:53
- 36:47:53.3
- 36:47:53.35
- 36:47:53
- 36:47:53.3
- 36:47:53.35
- 36:47:53.345
- 36:47:53
- 36:47:53.3
- 36:47:53.35
- 36:47:53.345
- 36:47:53.3451
- 36:47:53
- 36:47:53.3
- 36:47:53.35
- 36:47:53.345
- 36:47:53.3451
- 36:47:53.34505
- 36:47:53
- 36:47:53.3
- 36:47:53.35
- 36:47:53.345
- 36:47:53.3451
- 36:47:53.34505
- 36:47:53.345050
- 1 12:47
- 1 12:47
- 1 12:47:53
- 1 12:47:53
- 1 12:47:53
- 1 12:47:53
- 1 12:47:53.3
- 1 12:47:53
- 1 12:47:53.3
- 1 12:47:53.35
- 1 12:47:53
- 1 12:47:53.3
- 1 12:47:53.35
- 1 12:47:53.345
- 1 12:47:53
- 1 12:47:53.3
- 1 12:47:53.35
- 1 12:47:53.345
- 1 12:47:53.3451
- 1 12:47:53
- 1 12:47:53.3
- 1 12:47:53.35
- 1 12:47:53.345
- 1 12:47:53.3451
- 1 12:47:53.34505
- 1 12:47:53
- 1 12:47:53.3
- 1 12:47:53.35
- 1 12:47:53.345
- 1 12:47:53.3451
- 1 12:47:53.34505
- 1 12:47:53.345050
- 25:26
- 25:26
- 25:26
- 25:26:00
- 25:26:00
- 25:26:00
- 25:26:00.5
- 25:26:00
- 25:26:00.5
- 25:26:00.46
- 25:26:00
- 25:26:00.5
- 25:26:00.46
- 25:26:00.456
- 25:26:00
- 25:26:00.5
- 25:26:00.46
- 25:26:00.456
- 25:26:00.4561
- 25:26:00
- 25:26:00.5
- 25:26:00.46
- 25:26:00.456
- 25:26:00.4561
- 25:26:00.45615
- 25:26:00
- 25:26:00.5
- 25:26:00.46
- 25:26:00.456
- 25:26:00.4561
- 25:26:00.45615
- 25:26:00.456150
- 1 01:26
- 1 01:26
- 1 01:26:00
- 1 01:26:00
- 1 01:26:00
- 1 01:26:00
- 1 01:26:00.5
- 1 01:26:00
- 1 01:26:00.5
- 1 01:26:00.46
- 1 01:26:00
- 1 01:26:00.5
- 1 01:26:00.46
- 1 01:26:00.456
- 1 01:26:00
- 1 01:26:00.5
- 1 01:26:00.46
- 1 01:26:00.456
- 1 01:26:00.4561
- 1 01:26:00
- 1 01:26:00.5
- 1 01:26:00.46
- 1 01:26:00.456
- 1 01:26:00.4561
- 1 01:26:00.45615
- 1 01:26:00
- 1 01:26:00.5
- 1 01:26:00.46
- 1 01:26:00.456
- 1 01:26:00.4561
- 1 01:26:00.45615
- 1 01:26:00.456150
- 44:58
- 44:58
- 44:58
- 44:58:11
- 44:58:11
- 44:58:11
- 44:58:11.6
- 44:58:11
- 44:58:11.6
- 44:58:11.57
- 44:58:11
- 44:58:11.6
- 44:58:11.57
- 44:58:11.567
- 44:58:11
- 44:58:11.6
- 44:58:11.57
- 44:58:11.567
- 44:58:11.5668
- 44:58:11
- 44:58:11.6
- 44:58:11.57
- 44:58:11.567
- 44:58:11.5668
- 44:58:11.56677
- 44:58:11
- 44:58:11.6
- 44:58:11.57
- 44:58:11.567
- 44:58:11.5668
- 44:58:11.56677
- 44:58:11.566770
- 1 20:58
- 1 20:58
- 1 20:58:11
- 1 20:58:11
- 1 20:58:11
- 1 20:58:11
- 1 20:58:11.6
- 1 20:58:11
- 1 20:58:11.6
- 1 20:58:11.57
- 1 20:58:11
- 1 20:58:11.6
- 1 20:58:11.57
- 1 20:58:11.567
- 1 20:58:11
- 1 20:58:11.6
- 1 20:58:11.57
- 1 20:58:11.567
- 1 20:58:11.5668
- 1 20:58:11
- 1 20:58:11.6
- 1 20:58:11.57
- 1 20:58:11.567
- 1 20:58:11.5668
- 1 20:58:11.56677
- 1 20:58:11
- 1 20:58:11.6
- 1 20:58:11.57
- 1 20:58:11.567
- 1 20:58:11.5668
- 1 20:58:11.56677
- 1 20:58:11.566770
- 31:36
- 31:36
- 31:36
- 31:36:05
- 31:36:05
- 31:36:05
- 31:36:05.2
- 31:36:05
- 31:36:05.2
- 31:36:05.19
- 31:36:05
- 31:36:05.2
- 31:36:05.19
- 31:36:05.190
- 31:36:05
- 31:36:05.2
- 31:36:05.19
- 31:36:05.190
- 31:36:05.1896
- 31:36:05
- 31:36:05.2
- 31:36:05.19
- 31:36:05.190
- 31:36:05.1896
- 31:36:05.18964
- 31:36:05
- 31:36:05.2
- 31:36:05.19
- 31:36:05.190
- 31:36:05.1896
- 31:36:05.18964
- 31:36:05.189640
- 1 07:36
- 1 07:36
- 1 07:36:05
- 1 07:36:05
- 1 07:36:05
- 1 07:36:05
- 1 07:36:05.2
- 1 07:36:05
- 1 07:36:05.2
- 1 07:36:05.19
- 1 07:36:05
- 1 07:36:05.2
- 1 07:36:05.19
- 1 07:36:05.190
- 1 07:36:05
- 1 07:36:05.2
- 1 07:36:05.19
- 1 07:36:05.190
- 1 07:36:05.1896
- 1 07:36:05
- 1 07:36:05.2
- 1 07:36:05.19
- 1 07:36:05.190
- 1 07:36:05.1896
- 1 07:36:05.18964
- 1 07:36:05
- 1 07:36:05.2
- 1 07:36:05.19
- 1 07:36:05.190
- 1 07:36:05.1896
- 1 07:36:05.18964
- 1 07:36:05.189640
- 39:43
- 39:43
- 39:43
- 39:43:49
- 39:43:49
- 39:43:49
- 39:43:49.8
- 39:43:49
- 39:43:49.8
- 39:43:49.83
- 39:43:49
- 39:43:49.8
- 39:43:49.83
- 39:43:49.831
- 39:43:49
- 39:43:49.8
- 39:43:49.83
- 39:43:49.831
- 39:43:49.8313
- 39:43:49
- 39:43:49.8
- 39:43:49.83
- 39:43:49.831
- 39:43:49.8313
- 39:43:49.83132
- 39:43:49
- 39:43:49.8
- 39:43:49.83
- 39:43:49.831
- 39:43:49.8313
- 39:43:49.83132
- 39:43:49.831320
- 1 15:43
- 1 15:43
- 1 15:43:49
- 1 15:43:49
- 1 15:43:49
- 1 15:43:49
- 1 15:43:49.8
- 1 15:43:49
- 1 15:43:49.8
- 1 15:43:49.83
- 1 15:43:49
- 1 15:43:49.8
- 1 15:43:49.83
- 1 15:43:49.831
- 1 15:43:49
- 1 15:43:49.8
- 1 15:43:49.83
- 1 15:43:49.831
- 1 15:43:49.8313
- 1 15:43:49
- 1 15:43:49.8
- 1 15:43:49.83
- 1 15:43:49.831
- 1 15:43:49.8313
- 1 15:43:49.83132
- 1 15:43:49
- 1 15:43:49.8
- 1 15:43:49.83
- 1 15:43:49.831
- 1 15:43:49.8313
- 1 15:43:49.83132
- 1 15:43:49.831320
- 28:25
- 28:25
- 28:25
- 28:25:09
- 28:25:09
- 28:25:09
- 28:25:09.0
- 28:25:09
- 28:25:09.0
- 28:25:09.01
- 28:25:09
- 28:25:09.0
- 28:25:09.01
- 28:25:09.013
- 28:25:09
- 28:25:09.0
- 28:25:09.01
- 28:25:09.013
- 28:25:09.0129
- 28:25:09
- 28:25:09.0
- 28:25:09.01
- 28:25:09.013
- 28:25:09.0129
- 28:25:09.01293
- 28:25:09
- 28:25:09.0
- 28:25:09.01
- 28:25:09.013
- 28:25:09.0129
- 28:25:09.01293
- 28:25:09.012930
- 1 04:25
- 1 04:25
- 1 04:25:09
- 1 04:25:09
- 1 04:25:09
- 1 04:25:09
- 1 04:25:09.0
- 1 04:25:09
- 1 04:25:09.0
- 1 04:25:09.01
- 1 04:25:09
- 1 04:25:09.0
- 1 04:25:09.01
- 1 04:25:09.013
- 1 04:25:09
- 1 04:25:09.0
- 1 04:25:09.01
- 1 04:25:09.013
- 1 04:25:09.0129
- 1 04:25:09
- 1 04:25:09.0
- 1 04:25:09.01
- 1 04:25:09.013
- 1 04:25:09.0129
- 1 04:25:09.01293
- 1 04:25:09
- 1 04:25:09.0
- 1 04:25:09.01
- 1 04:25:09.013
- 1 04:25:09.0129
- 1 04:25:09.01293
- 1 04:25:09.012930
- 30:49
- 30:49
- 30:49
- 30:49:27
- 30:49:27
- 30:49:27
- 30:49:27.5
- 30:49:27
- 30:49:27.5
- 30:49:27.52
- 30:49:27
- 30:49:27.5
- 30:49:27.52
- 30:49:27.524
- 30:49:27
- 30:49:27.5
- 30:49:27.52
- 30:49:27.524
- 30:49:27.5237
- 30:49:27
- 30:49:27.5
- 30:49:27.52
- 30:49:27.524
- 30:49:27.5237
- 30:49:27.52375
- 30:49:27
- 30:49:27.5
- 30:49:27.52
- 30:49:27.524
- 30:49:27.5237
- 30:49:27.52375
- 30:49:27.523750
- 1 06:49
- 1 06:49
- 1 06:49:27
- 1 06:49:27
- 1 06:49:27
- 1 06:49:27
- 1 06:49:27.5
- 1 06:49:27
- 1 06:49:27.5
- 1 06:49:27.52
- 1 06:49:27
- 1 06:49:27.5
- 1 06:49:27.52
- 1 06:49:27.524
- 1 06:49:27
- 1 06:49:27.5
- 1 06:49:27.52
- 1 06:49:27.524
- 1 06:49:27.5237
- 1 06:49:27
- 1 06:49:27.5
- 1 06:49:27.52
- 1 06:49:27.524
- 1 06:49:27.5237
- 1 06:49:27.52375
- 1 06:49:27
- 1 06:49:27.5
- 1 06:49:27.52
- 1 06:49:27.524
- 1 06:49:27.5237
- 1 06:49:27.52375
- 1 06:49:27.523750
- 26:57
- 26:57
- 26:57
- 26:57:52
- 26:57:52
- 26:57:52
- 26:57:52.0
- 26:57:52
- 26:57:52.0
- 26:57:52.02
- 26:57:52
- 26:57:52.0
- 26:57:52.02
- 26:57:52.016
- 26:57:52
- 26:57:52.0
- 26:57:52.02
- 26:57:52.016
- 26:57:52.0157
- 26:57:52
- 26:57:52.0
- 26:57:52.02
- 26:57:52.016
- 26:57:52.0157
- 26:57:52.01565
- 26:57:52
- 26:57:52.0
- 26:57:52.02
- 26:57:52.016
- 26:57:52.0157
- 26:57:52.01565
- 26:57:52.015650
- 1 02:57
- 1 02:57
- 1 02:57:52
- 1 02:57:52
- 1 02:57:52
- 1 02:57:52
- 1 02:57:52.0
- 1 02:57:52
- 1 02:57:52.0
- 1 02:57:52.02
- 1 02:57:52
- 1 02:57:52.0
- 1 02:57:52.02
- 1 02:57:52.016
- 1 02:57:52
- 1 02:57:52.0
- 1 02:57:52.02
- 1 02:57:52.016
- 1 02:57:52.0157
- 1 02:57:52
- 1 02:57:52.0
- 1 02:57:52.02
- 1 02:57:52.016
- 1 02:57:52.0157
- 1 02:57:52.01565
- 1 02:57:52
- 1 02:57:52.0
- 1 02:57:52.02
- 1 02:57:52.016
- 1 02:57:52.0157
- 1 02:57:52.01565
- 1 02:57:52.015650
- 40:45
- 40:45
- 40:45
- 40:45:44
- 40:45:44
- 40:45:44
- 40:45:44.9
- 40:45:44
- 40:45:44.9
- 40:45:44.87
- 40:45:44
- 40:45:44.9
- 40:45:44.87
- 40:45:44.865
- 40:45:44
- 40:45:44.9
- 40:45:44.87
- 40:45:44.865
- 40:45:44.8653
- 40:45:44
- 40:45:44.9
- 40:45:44.87
- 40:45:44.865
- 40:45:44.8653
- 40:45:44.86529
- 40:45:44
- 40:45:44.9
- 40:45:44.87
- 40:45:44.865
- 40:45:44.8653
- 40:45:44.86529
- 40:45:44.865290
- 1 16:45
- 1 16:45
- 1 16:45:44
- 1 16:45:44
- 1 16:45:44
- 1 16:45:44
- 1 16:45:44.9
- 1 16:45:44
- 1 16:45:44.9
- 1 16:45:44.87
- 1 16:45:44
- 1 16:45:44.9
- 1 16:45:44.87
- 1 16:45:44.865
- 1 16:45:44
- 1 16:45:44.9
- 1 16:45:44.87
- 1 16:45:44.865
- 1 16:45:44.8653
- 1 16:45:44
- 1 16:45:44.9
- 1 16:45:44.87
- 1 16:45:44.865
- 1 16:45:44.8653
- 1 16:45:44.86529
- 1 16:45:44
- 1 16:45:44.9
- 1 16:45:44.87
- 1 16:45:44.865
- 1 16:45:44.8653
- 1 16:45:44.86529
- 1 16:45:44.865290
- 45:30
- 45:30
- 45:30
- 45:30:57
- 45:30:57
- 45:30:57
- 45:30:57.8
- 45:30:57
- 45:30:57.8
- 45:30:57.82
- 45:30:57
- 45:30:57.8
- 45:30:57.82
- 45:30:57.820
- 45:30:57
- 45:30:57.8
- 45:30:57.82
- 45:30:57.820
- 45:30:57.8205
- 45:30:57
- 45:30:57.8
- 45:30:57.82
- 45:30:57.820
- 45:30:57.8205
- 45:30:57.82047
- 45:30:57
- 45:30:57.8
- 45:30:57.82
- 45:30:57.820
- 45:30:57.8205
- 45:30:57.82047
- 45:30:57.820470
- 1 21:30
- 1 21:30
- 1 21:30:57
- 1 21:30:57
- 1 21:30:57
- 1 21:30:57
- 1 21:30:57.8
- 1 21:30:57
- 1 21:30:57.8
- 1 21:30:57.82
- 1 21:30:57
- 1 21:30:57.8
- 1 21:30:57.82
- 1 21:30:57.820
- 1 21:30:57
- 1 21:30:57.8
- 1 21:30:57.82
- 1 21:30:57.820
- 1 21:30:57.8205
- 1 21:30:57
- 1 21:30:57.8
- 1 21:30:57.82
- 1 21:30:57.820
- 1 21:30:57.8205
- 1 21:30:57.82047
- 1 21:30:57
- 1 21:30:57.8
- 1 21:30:57.82
- 1 21:30:57.820
- 1 21:30:57.8205
- 1 21:30:57.82047
- 1 21:30:57.820470
- 28:25
- 28:25
- 28:25
- 28:25:09
- 28:25:09
- 28:25:09
- 28:25:09.2
- 28:25:09
- 28:25:09.2
- 28:25:09.15
- 28:25:09
- 28:25:09.2
- 28:25:09.15
- 28:25:09.154
- 28:25:09
- 28:25:09.2
- 28:25:09.15
- 28:25:09.154
- 28:25:09.1540
- 28:25:09
- 28:25:09.2
- 28:25:09.15
- 28:25:09.154
- 28:25:09.1540
- 28:25:09.15395
- 28:25:09
- 28:25:09.2
- 28:25:09.15
- 28:25:09.154
- 28:25:09.1540
- 28:25:09.15395
- 28:25:09.153950
- 1 04:25
- 1 04:25
- 1 04:25:09
- 1 04:25:09
- 1 04:25:09
- 1 04:25:09
- 1 04:25:09.2
- 1 04:25:09
- 1 04:25:09.2
- 1 04:25:09.15
- 1 04:25:09
- 1 04:25:09.2
- 1 04:25:09.15
- 1 04:25:09.154
- 1 04:25:09
- 1 04:25:09.2
- 1 04:25:09.15
- 1 04:25:09.154
- 1 04:25:09.1540
- 1 04:25:09
- 1 04:25:09.2
- 1 04:25:09.15
- 1 04:25:09.154
- 1 04:25:09.1540
- 1 04:25:09.15395
- 1 04:25:09
- 1 04:25:09.2
- 1 04:25:09.15
- 1 04:25:09.154
- 1 04:25:09.1540
- 1 04:25:09.15395
- 1 04:25:09.153950
- 30:49
- 30:49
- 30:49
- 30:49:27
- 30:49:27
- 30:49:27
- 30:49:27.1
- 30:49:27
- 30:49:27.1
- 30:49:27.11
- 30:49:27
- 30:49:27.1
- 30:49:27.11
- 30:49:27.105
- 30:49:27
- 30:49:27.1
- 30:49:27.11
- 30:49:27.105
- 30:49:27.1053
- 30:49:27
- 30:49:27.1
- 30:49:27.11
- 30:49:27.105
- 30:49:27.1053
- 30:49:27.10533
- 30:49:27
- 30:49:27.1
- 30:49:27.11
- 30:49:27.105
- 30:49:27.1053
- 30:49:27.10533
- 30:49:27.105330
- 1 06:49
- 1 06:49
- 1 06:49:27
- 1 06:49:27
- 1 06:49:27
- 1 06:49:27
- 1 06:49:27.1
- 1 06:49:27
- 1 06:49:27.1
- 1 06:49:27.11
- 1 06:49:27
- 1 06:49:27.1
- 1 06:49:27.11
- 1 06:49:27.105
- 1 06:49:27
- 1 06:49:27.1
- 1 06:49:27.11
- 1 06:49:27.105
- 1 06:49:27.1053
- 1 06:49:27
- 1 06:49:27.1
- 1 06:49:27.11
- 1 06:49:27.105
- 1 06:49:27.1053
- 1 06:49:27.10533
- 1 06:49:27
- 1 06:49:27.1
- 1 06:49:27.11
- 1 06:49:27.105
- 1 06:49:27.1053
- 1 06:49:27.10533
- 1 06:49:27.105330
- 26:57
- 26:57
- 26:57
- 26:57:52
- 26:57:52
- 26:57:52
- 26:57:52.5
- 26:57:52
- 26:57:52.5
- 26:57:52.48
- 26:57:52
- 26:57:52.5
- 26:57:52.48
- 26:57:52.482
- 26:57:52
- 26:57:52.5
- 26:57:52.48
- 26:57:52.482
- 26:57:52.4823
- 26:57:52
- 26:57:52.5
- 26:57:52.48
- 26:57:52.482
- 26:57:52.4823
- 26:57:52.48229
- 26:57:52
- 26:57:52.5
- 26:57:52.48
- 26:57:52.482
- 26:57:52.4823
- 26:57:52.48229
- 26:57:52.482290
- 1 02:57
- 1 02:57
- 1 02:57:52
- 1 02:57:52
- 1 02:57:52
- 1 02:57:52
- 1 02:57:52.5
- 1 02:57:52
- 1 02:57:52.5
- 1 02:57:52.48
- 1 02:57:52
- 1 02:57:52.5
- 1 02:57:52.48
- 1 02:57:52.482
- 1 02:57:52
- 1 02:57:52.5
- 1 02:57:52.48
- 1 02:57:52.482
- 1 02:57:52.4823
- 1 02:57:52
- 1 02:57:52.5
- 1 02:57:52.48
- 1 02:57:52.482
- 1 02:57:52.4823
- 1 02:57:52.48229
- 1 02:57:52
- 1 02:57:52.5
- 1 02:57:52.48
- 1 02:57:52.482
- 1 02:57:52.4823
- 1 02:57:52.48229
- 1 02:57:52.482290
- 40:45
- 40:45
- 40:45
- 40:45:44
- 40:45:44
- 40:45:44
- 40:45:44.7
- 40:45:44
- 40:45:44.7
- 40:45:44.66
- 40:45:44
- 40:45:44.7
- 40:45:44.66
- 40:45:44.658
- 40:45:44
- 40:45:44.7
- 40:45:44.66
- 40:45:44.658
- 40:45:44.6583
- 40:45:44
- 40:45:44.7
- 40:45:44.66
- 40:45:44.658
- 40:45:44.6583
- 40:45:44.65827
- 40:45:44
- 40:45:44.7
- 40:45:44.66
- 40:45:44.658
- 40:45:44.6583
- 40:45:44.65827
- 40:45:44.658270
- 1 16:45
- 1 16:45
- 1 16:45:44
- 1 16:45:44
- 1 16:45:44
- 1 16:45:44
- 1 16:45:44.7
- 1 16:45:44
- 1 16:45:44.7
- 1 16:45:44.66
- 1 16:45:44
- 1 16:45:44.7
- 1 16:45:44.66
- 1 16:45:44.658
- 1 16:45:44
- 1 16:45:44.7
- 1 16:45:44.66
- 1 16:45:44.658
- 1 16:45:44.6583
- 1 16:45:44
- 1 16:45:44.7
- 1 16:45:44.66
- 1 16:45:44.658
- 1 16:45:44.6583
- 1 16:45:44.65827
- 1 16:45:44
- 1 16:45:44.7
- 1 16:45:44.66
- 1 16:45:44.658
- 1 16:45:44.6583
- 1 16:45:44.65827
- 1 16:45:44.658270
- 45:30
- 45:30
- 45:30
- 45:30:57
- 45:30:57
- 45:30:57
- 45:30:57.6
- 45:30:57
- 45:30:57.6
- 45:30:57.58
- 45:30:57
- 45:30:57.6
- 45:30:57.58
- 45:30:57.582
- 45:30:57
- 45:30:57.6
- 45:30:57.58
- 45:30:57.582
- 45:30:57.5822
- 45:30:57
- 45:30:57.6
- 45:30:57.58
- 45:30:57.582
- 45:30:57.5822
- 45:30:57.58219
- 45:30:57
- 45:30:57.6
- 45:30:57.58
- 45:30:57.582
- 45:30:57.5822
- 45:30:57.58219
- 45:30:57.582190
- 1 21:30
- 1 21:30
- 1 21:30:57
- 1 21:30:57
- 1 21:30:57
- 1 21:30:57
- 1 21:30:57.6
- 1 21:30:57
- 1 21:30:57.6
- 1 21:30:57.58
- 1 21:30:57
- 1 21:30:57.6
- 1 21:30:57.58
- 1 21:30:57.582
- 1 21:30:57
- 1 21:30:57.6
- 1 21:30:57.58
- 1 21:30:57.582
- 1 21:30:57.5822
- 1 21:30:57
- 1 21:30:57.6
- 1 21:30:57.58
- 1 21:30:57.582
- 1 21:30:57.5822
- 1 21:30:57.58219
- 1 21:30:57
- 1 21:30:57.6
- 1 21:30:57.58
- 1 21:30:57.582
- 1 21:30:57.5822
- 1 21:30:57.58219
- 1 21:30:57.582190
- 46:30
- 46:30
- 46:30
- 46:30:04
- 46:30:04
- 46:30:04
- 46:30:04.2
- 46:30:04
- 46:30:04.2
- 46:30:04.18
- 46:30:04
- 46:30:04.2
- 46:30:04.18
- 46:30:04.183
- 46:30:04
- 46:30:04.2
- 46:30:04.18
- 46:30:04.183
- 46:30:04.1835
- 46:30:04
- 46:30:04.2
- 46:30:04.18
- 46:30:04.183
- 46:30:04.1835
- 46:30:04.18347
- 46:30:04
- 46:30:04.2
- 46:30:04.18
- 46:30:04.183
- 46:30:04.1835
- 46:30:04.18347
- 46:30:04.183470
- 1 22:30
- 1 22:30
- 1 22:30:04
- 1 22:30:04
- 1 22:30:04
- 1 22:30:04
- 1 22:30:04.2
- 1 22:30:04
- 1 22:30:04.2
- 1 22:30:04.18
- 1 22:30:04
- 1 22:30:04.2
- 1 22:30:04.18
- 1 22:30:04.183
- 1 22:30:04
- 1 22:30:04.2
- 1 22:30:04.18
- 1 22:30:04.183
- 1 22:30:04.1835
- 1 22:30:04
- 1 22:30:04.2
- 1 22:30:04.18
- 1 22:30:04.183
- 1 22:30:04.1835
- 1 22:30:04.18347
- 1 22:30:04
- 1 22:30:04.2
- 1 22:30:04.18
- 1 22:30:04.183
- 1 22:30:04.1835
- 1 22:30:04.18347
- 1 22:30:04.183470
- 25:56
- 25:56
- 25:56
- 25:56:51
- 25:56:51
- 25:56:51
- 25:56:51.6
- 25:56:51
- 25:56:51.6
- 25:56:51.59
- 25:56:51
- 25:56:51.6
- 25:56:51.59
- 25:56:51.593
- 25:56:51
- 25:56:51.6
- 25:56:51.59
- 25:56:51.593
- 25:56:51.5932
- 25:56:51
- 25:56:51.6
- 25:56:51.59
- 25:56:51.593
- 25:56:51.5932
- 25:56:51.59319
- 25:56:51
- 25:56:51.6
- 25:56:51.59
- 25:56:51.593
- 25:56:51.5932
- 25:56:51.59319
- 25:56:51.593190
- 1 01:56
- 1 01:56
- 1 01:56:51
- 1 01:56:51
- 1 01:56:51
- 1 01:56:51
- 1 01:56:51.6
- 1 01:56:51
- 1 01:56:51.6
- 1 01:56:51.59
- 1 01:56:51
- 1 01:56:51.6
- 1 01:56:51.59
- 1 01:56:51.593
- 1 01:56:51
- 1 01:56:51.6
- 1 01:56:51.59
- 1 01:56:51.593
- 1 01:56:51.5932
- 1 01:56:51
- 1 01:56:51.6
- 1 01:56:51.59
- 1 01:56:51.593
- 1 01:56:51.5932
- 1 01:56:51.59319
- 1 01:56:51
- 1 01:56:51.6
- 1 01:56:51.59
- 1 01:56:51.593
- 1 01:56:51.5932
- 1 01:56:51.59319
- 1 01:56:51.593190
- 48:00
- 48:00
- 48:00
- 48:00:00
- 48:00:00
- 48:00:00
- 48:00:00.0
- 48:00:00
- 48:00:00.0
- 48:00:00.00
- 48:00:00
- 48:00:00.0
- 48:00:00.00
- 48:00:00.000
- 48:00:00
- 48:00:00.0
- 48:00:00.00
- 48:00:00.000
- 48:00:00.0000
- 48:00:00
- 48:00:00.0
- 48:00:00.00
- 48:00:00.000
- 48:00:00.0000
- 48:00:00.00000
- 48:00:00
- 48:00:00.0
- 48:00:00.00
- 48:00:00.000
- 48:00:00.0000
- 48:00:00.00000
- 48:00:00.000000
- 2 00:00
- 2 00:00
- 2 00:00:00
- 2 00:00:00
- 2 00:00:00
- 2 00:00:00
- 2 00:00:00.0
- 2 00:00:00
- 2 00:00:00.0
- 2 00:00:00.00
- 2 00:00:00
- 2 00:00:00.0
- 2 00:00:00.00
- 2 00:00:00.000
- 2 00:00:00
- 2 00:00:00.0
- 2 00:00:00.00
- 2 00:00:00.000
- 2 00:00:00.0000
- 2 00:00:00
- 2 00:00:00.0
- 2 00:00:00.00
- 2 00:00:00.000
- 2 00:00:00.0000
- 2 00:00:00.00000
- 2 00:00:00
- 2 00:00:00.0
- 2 00:00:00.00
- 2 00:00:00.000
- 2 00:00:00.0000
- 2 00:00:00.00000
- 2 00:00:00.000000
- 52:50
- 52:50
- 52:50
- 52:50:38
- 52:50:38
- 52:50:38
- 52:50:38.1
- 52:50:38
- 52:50:38.1
- 52:50:38.12
- 52:50:38
- 52:50:38.1
- 52:50:38.12
- 52:50:38.123
- 52:50:38
- 52:50:38.1
- 52:50:38.12
- 52:50:38.123
- 52:50:38.1230
- 52:50:38
- 52:50:38.1
- 52:50:38.12
- 52:50:38.123
- 52:50:38.1230
- 52:50:38.12301
- 52:50:38
- 52:50:38.1
- 52:50:38.12
- 52:50:38.123
- 52:50:38.1230
- 52:50:38.12301
- 52:50:38.123010
- 2 04:50
- 2 04:50
- 2 04:50:38
- 2 04:50:38
- 2 04:50:38
- 2 04:50:38
- 2 04:50:38.1
- 2 04:50:38
- 2 04:50:38.1
- 2 04:50:38.12
- 2 04:50:38
- 2 04:50:38.1
- 2 04:50:38.12
- 2 04:50:38.123
- 2 04:50:38
- 2 04:50:38.1
- 2 04:50:38.12
- 2 04:50:38.123
- 2 04:50:38.1230
- 2 04:50:38
- 2 04:50:38.1
- 2 04:50:38.12
- 2 04:50:38.123
- 2 04:50:38.1230
- 2 04:50:38.12301
- 2 04:50:38
- 2 04:50:38.1
- 2 04:50:38.12
- 2 04:50:38.123
- 2 04:50:38.1230
- 2 04:50:38.12301
- 2 04:50:38.123010
- 60:31
- 60:31
- 60:31
- 60:31:35
- 60:31:35
- 60:31:35
- 60:31:35.2
- 60:31:35
- 60:31:35.2
- 60:31:35.23
- 60:31:35
- 60:31:35.2
- 60:31:35.23
- 60:31:35.235
- 60:31:35
- 60:31:35.2
- 60:31:35.23
- 60:31:35.235
- 60:31:35.2345
- 60:31:35
- 60:31:35.2
- 60:31:35.23
- 60:31:35.235
- 60:31:35.2345
- 60:31:35.23453
- 60:31:35
- 60:31:35.2
- 60:31:35.23
- 60:31:35.235
- 60:31:35.2345
- 60:31:35.23453
- 60:31:35.234530
- 2 12:31
- 2 12:31
- 2 12:31:35
- 2 12:31:35
- 2 12:31:35
- 2 12:31:35
- 2 12:31:35.2
- 2 12:31:35
- 2 12:31:35.2
- 2 12:31:35.23
- 2 12:31:35
- 2 12:31:35.2
- 2 12:31:35.23
- 2 12:31:35.235
- 2 12:31:35
- 2 12:31:35.2
- 2 12:31:35.23
- 2 12:31:35.235
- 2 12:31:35.2345
- 2 12:31:35
- 2 12:31:35.2
- 2 12:31:35.23
- 2 12:31:35.235
- 2 12:31:35.2345
- 2 12:31:35.23453
- 2 12:31:35
- 2 12:31:35.2
- 2 12:31:35.23
- 2 12:31:35.235
- 2 12:31:35.2345
- 2 12:31:35.23453
- 2 12:31:35.234530
- 60:47
- 60:47
- 60:47
- 60:47:53
- 60:47:53
- 60:47:53
- 60:47:53.3
- 60:47:53
- 60:47:53.3
- 60:47:53.35
- 60:47:53
- 60:47:53.3
- 60:47:53.35
- 60:47:53.345
- 60:47:53
- 60:47:53.3
- 60:47:53.35
- 60:47:53.345
- 60:47:53.3451
- 60:47:53
- 60:47:53.3
- 60:47:53.35
- 60:47:53.345
- 60:47:53.3451
- 60:47:53.34505
- 60:47:53
- 60:47:53.3
- 60:47:53.35
- 60:47:53.345
- 60:47:53.3451
- 60:47:53.34505
- 60:47:53.345050
- 2 12:47
- 2 12:47
- 2 12:47:53
- 2 12:47:53
- 2 12:47:53
- 2 12:47:53
- 2 12:47:53.3
- 2 12:47:53
- 2 12:47:53.3
- 2 12:47:53.35
- 2 12:47:53
- 2 12:47:53.3
- 2 12:47:53.35
- 2 12:47:53.345
- 2 12:47:53
- 2 12:47:53.3
- 2 12:47:53.35
- 2 12:47:53.345
- 2 12:47:53.3451
- 2 12:47:53
- 2 12:47:53.3
- 2 12:47:53.35
- 2 12:47:53.345
- 2 12:47:53.3451
- 2 12:47:53.34505
- 2 12:47:53
- 2 12:47:53.3
- 2 12:47:53.35
- 2 12:47:53.345
- 2 12:47:53.3451
- 2 12:47:53.34505
- 2 12:47:53.345050
- 49:26
- 49:26
- 49:26
- 49:26:00
- 49:26:00
- 49:26:00
- 49:26:00.5
- 49:26:00
- 49:26:00.5
- 49:26:00.46
- 49:26:00
- 49:26:00.5
- 49:26:00.46
- 49:26:00.456
- 49:26:00
- 49:26:00.5
- 49:26:00.46
- 49:26:00.456
- 49:26:00.4562
- 49:26:00
- 49:26:00.5
- 49:26:00.46
- 49:26:00.456
- 49:26:00.4562
- 49:26:00.45615
- 49:26:00
- 49:26:00.5
- 49:26:00.46
- 49:26:00.456
- 49:26:00.4562
- 49:26:00.45615
- 49:26:00.456150
- 2 01:26
- 2 01:26
- 2 01:26:00
- 2 01:26:00
- 2 01:26:00
- 2 01:26:00
- 2 01:26:00.5
- 2 01:26:00
- 2 01:26:00.5
- 2 01:26:00.46
- 2 01:26:00
- 2 01:26:00.5
- 2 01:26:00.46
- 2 01:26:00.456
- 2 01:26:00
- 2 01:26:00.5
- 2 01:26:00.46
- 2 01:26:00.456
- 2 01:26:00.4562
- 2 01:26:00
- 2 01:26:00.5
- 2 01:26:00.46
- 2 01:26:00.456
- 2 01:26:00.4562
- 2 01:26:00.45615
- 2 01:26:00
- 2 01:26:00.5
- 2 01:26:00.46
- 2 01:26:00.456
- 2 01:26:00.4562
- 2 01:26:00.45615
- 2 01:26:00.456150
- 68:58
- 68:58
- 68:58
- 68:58:11
- 68:58:11
- 68:58:11
- 68:58:11.6
- 68:58:11
- 68:58:11.6
- 68:58:11.57
- 68:58:11
- 68:58:11.6
- 68:58:11.57
- 68:58:11.567
- 68:58:11
- 68:58:11.6
- 68:58:11.57
- 68:58:11.567
- 68:58:11.5668
- 68:58:11
- 68:58:11.6
- 68:58:11.57
- 68:58:11.567
- 68:58:11.5668
- 68:58:11.56677
- 68:58:11
- 68:58:11.6
- 68:58:11.57
- 68:58:11.567
- 68:58:11.5668
- 68:58:11.56677
- 68:58:11.566770
- 2 20:58
- 2 20:58
- 2 20:58:11
- 2 20:58:11
- 2 20:58:11
- 2 20:58:11
- 2 20:58:11.6
- 2 20:58:11
- 2 20:58:11.6
- 2 20:58:11.57
- 2 20:58:11
- 2 20:58:11.6
- 2 20:58:11.57
- 2 20:58:11.567
- 2 20:58:11
- 2 20:58:11.6
- 2 20:58:11.57
- 2 20:58:11.567
- 2 20:58:11.5668
- 2 20:58:11
- 2 20:58:11.6
- 2 20:58:11.57
- 2 20:58:11.567
- 2 20:58:11.5668
- 2 20:58:11.56677
- 2 20:58:11
- 2 20:58:11.6
- 2 20:58:11.57
- 2 20:58:11.567
- 2 20:58:11.5668
- 2 20:58:11.56677
- 2 20:58:11.566770
- 55:36
- 55:36
- 55:36
- 55:36:05
- 55:36:05
- 55:36:05
- 55:36:05.2
- 55:36:05
- 55:36:05.2
- 55:36:05.19
- 55:36:05
- 55:36:05.2
- 55:36:05.19
- 55:36:05.190
- 55:36:05
- 55:36:05.2
- 55:36:05.19
- 55:36:05.190
- 55:36:05.1896
- 55:36:05
- 55:36:05.2
- 55:36:05.19
- 55:36:05.190
- 55:36:05.1896
- 55:36:05.18964
- 55:36:05
- 55:36:05.2
- 55:36:05.19
- 55:36:05.190
- 55:36:05.1896
- 55:36:05.18964
- 55:36:05.189640
- 2 07:36
- 2 07:36
- 2 07:36:05
- 2 07:36:05
- 2 07:36:05
- 2 07:36:05
- 2 07:36:05.2
- 2 07:36:05
- 2 07:36:05.2
- 2 07:36:05.19
- 2 07:36:05
- 2 07:36:05.2
- 2 07:36:05.19
- 2 07:36:05.190
- 2 07:36:05
- 2 07:36:05.2
- 2 07:36:05.19
- 2 07:36:05.190
- 2 07:36:05.1896
- 2 07:36:05
- 2 07:36:05.2
- 2 07:36:05.19
- 2 07:36:05.190
- 2 07:36:05.1896
- 2 07:36:05.18964
- 2 07:36:05
- 2 07:36:05.2
- 2 07:36:05.19
- 2 07:36:05.190
- 2 07:36:05.1896
- 2 07:36:05.18964
- 2 07:36:05.189640
- 63:43
- 63:43
- 63:43
- 63:43:49
- 63:43:49
- 63:43:49
- 63:43:49.8
- 63:43:49
- 63:43:49.8
- 63:43:49.83
- 63:43:49
- 63:43:49.8
- 63:43:49.83
- 63:43:49.831
- 63:43:49
- 63:43:49.8
- 63:43:49.83
- 63:43:49.831
- 63:43:49.8313
- 63:43:49
- 63:43:49.8
- 63:43:49.83
- 63:43:49.831
- 63:43:49.8313
- 63:43:49.83132
- 63:43:49
- 63:43:49.8
- 63:43:49.83
- 63:43:49.831
- 63:43:49.8313
- 63:43:49.83132
- 63:43:49.831320
- 2 15:43
- 2 15:43
- 2 15:43:49
- 2 15:43:49
- 2 15:43:49
- 2 15:43:49
- 2 15:43:49.8
- 2 15:43:49
- 2 15:43:49.8
- 2 15:43:49.83
- 2 15:43:49
- 2 15:43:49.8
- 2 15:43:49.83
- 2 15:43:49.831
- 2 15:43:49
- 2 15:43:49.8
- 2 15:43:49.83
- 2 15:43:49.831
- 2 15:43:49.8313
- 2 15:43:49
- 2 15:43:49.8
- 2 15:43:49.83
- 2 15:43:49.831
- 2 15:43:49.8313
- 2 15:43:49.83132
- 2 15:43:49
- 2 15:43:49.8
- 2 15:43:49.83
- 2 15:43:49.831
- 2 15:43:49.8313
- 2 15:43:49.83132
- 2 15:43:49.831320
- 52:25
- 52:25
- 52:25
- 52:25:09
- 52:25:09
- 52:25:09
- 52:25:09.0
- 52:25:09
- 52:25:09.0
- 52:25:09.01
- 52:25:09
- 52:25:09.0
- 52:25:09.01
- 52:25:09.013
- 52:25:09
- 52:25:09.0
- 52:25:09.01
- 52:25:09.013
- 52:25:09.0129
- 52:25:09
- 52:25:09.0
- 52:25:09.01
- 52:25:09.013
- 52:25:09.0129
- 52:25:09.01293
- 52:25:09
- 52:25:09.0
- 52:25:09.01
- 52:25:09.013
- 52:25:09.0129
- 52:25:09.01293
- 52:25:09.012930
- 2 04:25
- 2 04:25
- 2 04:25:09
- 2 04:25:09
- 2 04:25:09
- 2 04:25:09
- 2 04:25:09.0
- 2 04:25:09
- 2 04:25:09.0
- 2 04:25:09.01
- 2 04:25:09
- 2 04:25:09.0
- 2 04:25:09.01
- 2 04:25:09.013
- 2 04:25:09
- 2 04:25:09.0
- 2 04:25:09.01
- 2 04:25:09.013
- 2 04:25:09.0129
- 2 04:25:09
- 2 04:25:09.0
- 2 04:25:09.01
- 2 04:25:09.013
- 2 04:25:09.0129
- 2 04:25:09.01293
- 2 04:25:09
- 2 04:25:09.0
- 2 04:25:09.01
- 2 04:25:09.013
- 2 04:25:09.0129
- 2 04:25:09.01293
- 2 04:25:09.012930
- 54:49
- 54:49
- 54:49
- 54:49:27
- 54:49:27
- 54:49:27
- 54:49:27.5
- 54:49:27
- 54:49:27.5
- 54:49:27.52
- 54:49:27
- 54:49:27.5
- 54:49:27.52
- 54:49:27.524
- 54:49:27
- 54:49:27.5
- 54:49:27.52
- 54:49:27.524
- 54:49:27.5237
- 54:49:27
- 54:49:27.5
- 54:49:27.52
- 54:49:27.524
- 54:49:27.5237
- 54:49:27.52375
- 54:49:27
- 54:49:27.5
- 54:49:27.52
- 54:49:27.524
- 54:49:27.5237
- 54:49:27.52375
- 54:49:27.523750
- 2 06:49
- 2 06:49
- 2 06:49:27
- 2 06:49:27
- 2 06:49:27
- 2 06:49:27
- 2 06:49:27.5
- 2 06:49:27
- 2 06:49:27.5
- 2 06:49:27.52
- 2 06:49:27
- 2 06:49:27.5
- 2 06:49:27.52
- 2 06:49:27.524
- 2 06:49:27
- 2 06:49:27.5
- 2 06:49:27.52
- 2 06:49:27.524
- 2 06:49:27.5237
- 2 06:49:27
- 2 06:49:27.5
- 2 06:49:27.52
- 2 06:49:27.524
- 2 06:49:27.5237
- 2 06:49:27.52375
- 2 06:49:27
- 2 06:49:27.5
- 2 06:49:27.52
- 2 06:49:27.524
- 2 06:49:27.5237
- 2 06:49:27.52375
- 2 06:49:27.523750
- 50:57
- 50:57
- 50:57
- 50:57:52
- 50:57:52
- 50:57:52
- 50:57:52.0
- 50:57:52
- 50:57:52.0
- 50:57:52.02
- 50:57:52
- 50:57:52.0
- 50:57:52.02
- 50:57:52.016
- 50:57:52
- 50:57:52.0
- 50:57:52.02
- 50:57:52.016
- 50:57:52.0156
- 50:57:52
- 50:57:52.0
- 50:57:52.02
- 50:57:52.016
- 50:57:52.0156
- 50:57:52.01565
- 50:57:52
- 50:57:52.0
- 50:57:52.02
- 50:57:52.016
- 50:57:52.0156
- 50:57:52.01565
- 50:57:52.015650
- 2 02:57
- 2 02:57
- 2 02:57:52
- 2 02:57:52
- 2 02:57:52
- 2 02:57:52
- 2 02:57:52.0
- 2 02:57:52
- 2 02:57:52.0
- 2 02:57:52.02
- 2 02:57:52
- 2 02:57:52.0
- 2 02:57:52.02
- 2 02:57:52.016
- 2 02:57:52
- 2 02:57:52.0
- 2 02:57:52.02
- 2 02:57:52.016
- 2 02:57:52.0156
- 2 02:57:52
- 2 02:57:52.0
- 2 02:57:52.02
- 2 02:57:52.016
- 2 02:57:52.0156
- 2 02:57:52.01565
- 2 02:57:52
- 2 02:57:52.0
- 2 02:57:52.02
- 2 02:57:52.016
- 2 02:57:52.0156
- 2 02:57:52.01565
- 2 02:57:52.015650
- 64:45
- 64:45
- 64:45
- 64:45:44
- 64:45:44
- 64:45:44
- 64:45:44.9
- 64:45:44
- 64:45:44.9
- 64:45:44.87
- 64:45:44
- 64:45:44.9
- 64:45:44.87
- 64:45:44.865
- 64:45:44
- 64:45:44.9
- 64:45:44.87
- 64:45:44.865
- 64:45:44.8653
- 64:45:44
- 64:45:44.9
- 64:45:44.87
- 64:45:44.865
- 64:45:44.8653
- 64:45:44.86529
- 64:45:44
- 64:45:44.9
- 64:45:44.87
- 64:45:44.865
- 64:45:44.8653
- 64:45:44.86529
- 64:45:44.865290
- 2 16:45
- 2 16:45
- 2 16:45:44
- 2 16:45:44
- 2 16:45:44
- 2 16:45:44
- 2 16:45:44.9
- 2 16:45:44
- 2 16:45:44.9
- 2 16:45:44.87
- 2 16:45:44
- 2 16:45:44.9
- 2 16:45:44.87
- 2 16:45:44.865
- 2 16:45:44
- 2 16:45:44.9
- 2 16:45:44.87
- 2 16:45:44.865
- 2 16:45:44.8653
- 2 16:45:44
- 2 16:45:44.9
- 2 16:45:44.87
- 2 16:45:44.865
- 2 16:45:44.8653
- 2 16:45:44.86529
- 2 16:45:44
- 2 16:45:44.9
- 2 16:45:44.87
- 2 16:45:44.865
- 2 16:45:44.8653
- 2 16:45:44.86529
- 2 16:45:44.865290
- 69:30
- 69:30
- 69:30
- 69:30:57
- 69:30:57
- 69:30:57
- 69:30:57.8
- 69:30:57
- 69:30:57.8
- 69:30:57.82
- 69:30:57
- 69:30:57.8
- 69:30:57.82
- 69:30:57.820
- 69:30:57
- 69:30:57.8
- 69:30:57.82
- 69:30:57.820
- 69:30:57.8205
- 69:30:57
- 69:30:57.8
- 69:30:57.82
- 69:30:57.820
- 69:30:57.8205
- 69:30:57.82047
- 69:30:57
- 69:30:57.8
- 69:30:57.82
- 69:30:57.820
- 69:30:57.8205
- 69:30:57.82047
- 69:30:57.820470
- 2 21:30
- 2 21:30
- 2 21:30:57
- 2 21:30:57
- 2 21:30:57
- 2 21:30:57
- 2 21:30:57.8
- 2 21:30:57
- 2 21:30:57.8
- 2 21:30:57.82
- 2 21:30:57
- 2 21:30:57.8
- 2 21:30:57.82
- 2 21:30:57.820
- 2 21:30:57
- 2 21:30:57.8
- 2 21:30:57.82
- 2 21:30:57.820
- 2 21:30:57.8205
- 2 21:30:57
- 2 21:30:57.8
- 2 21:30:57.82
- 2 21:30:57.820
- 2 21:30:57.8205
- 2 21:30:57.82047
- 2 21:30:57
- 2 21:30:57.8
- 2 21:30:57.82
- 2 21:30:57.820
- 2 21:30:57.8205
- 2 21:30:57.82047
- 2 21:30:57.820470
- 52:25
- 52:25
- 52:25
- 52:25:09
- 52:25:09
- 52:25:09
- 52:25:09.2
- 52:25:09
- 52:25:09.2
- 52:25:09.15
- 52:25:09
- 52:25:09.2
- 52:25:09.15
- 52:25:09.154
- 52:25:09
- 52:25:09.2
- 52:25:09.15
- 52:25:09.154
- 52:25:09.1540
- 52:25:09
- 52:25:09.2
- 52:25:09.15
- 52:25:09.154
- 52:25:09.1540
- 52:25:09.15395
- 52:25:09
- 52:25:09.2
- 52:25:09.15
- 52:25:09.154
- 52:25:09.1540
- 52:25:09.15395
- 52:25:09.153950
- 2 04:25
- 2 04:25
- 2 04:25:09
- 2 04:25:09
- 2 04:25:09
- 2 04:25:09
- 2 04:25:09.2
- 2 04:25:09
- 2 04:25:09.2
- 2 04:25:09.15
- 2 04:25:09
- 2 04:25:09.2
- 2 04:25:09.15
- 2 04:25:09.154
- 2 04:25:09
- 2 04:25:09.2
- 2 04:25:09.15
- 2 04:25:09.154
- 2 04:25:09.1540
- 2 04:25:09
- 2 04:25:09.2
- 2 04:25:09.15
- 2 04:25:09.154
- 2 04:25:09.1540
- 2 04:25:09.15395
- 2 04:25:09
- 2 04:25:09.2
- 2 04:25:09.15
- 2 04:25:09.154
- 2 04:25:09.1540
- 2 04:25:09.15395
- 2 04:25:09.153950
- 54:49
- 54:49
- 54:49
- 54:49:27
- 54:49:27
- 54:49:27
- 54:49:27.1
- 54:49:27
- 54:49:27.1
- 54:49:27.11
- 54:49:27
- 54:49:27.1
- 54:49:27.11
- 54:49:27.105
- 54:49:27
- 54:49:27.1
- 54:49:27.11
- 54:49:27.105
- 54:49:27.1053
- 54:49:27
- 54:49:27.1
- 54:49:27.11
- 54:49:27.105
- 54:49:27.1053
- 54:49:27.10533
- 54:49:27
- 54:49:27.1
- 54:49:27.11
- 54:49:27.105
- 54:49:27.1053
- 54:49:27.10533
- 54:49:27.105330
- 2 06:49
- 2 06:49
- 2 06:49:27
- 2 06:49:27
- 2 06:49:27
- 2 06:49:27
- 2 06:49:27.1
- 2 06:49:27
- 2 06:49:27.1
- 2 06:49:27.11
- 2 06:49:27
- 2 06:49:27.1
- 2 06:49:27.11
- 2 06:49:27.105
- 2 06:49:27
- 2 06:49:27.1
- 2 06:49:27.11
- 2 06:49:27.105
- 2 06:49:27.1053
- 2 06:49:27
- 2 06:49:27.1
- 2 06:49:27.11
- 2 06:49:27.105
- 2 06:49:27.1053
- 2 06:49:27.10533
- 2 06:49:27
- 2 06:49:27.1
- 2 06:49:27.11
- 2 06:49:27.105
- 2 06:49:27.1053
- 2 06:49:27.10533
- 2 06:49:27.105330
- 50:57
- 50:57
- 50:57
- 50:57:52
- 50:57:52
- 50:57:52
- 50:57:52.5
- 50:57:52
- 50:57:52.5
- 50:57:52.48
- 50:57:52
- 50:57:52.5
- 50:57:52.48
- 50:57:52.482
- 50:57:52
- 50:57:52.5
- 50:57:52.48
- 50:57:52.482
- 50:57:52.4823
- 50:57:52
- 50:57:52.5
- 50:57:52.48
- 50:57:52.482
- 50:57:52.4823
- 50:57:52.48229
- 50:57:52
- 50:57:52.5
- 50:57:52.48
- 50:57:52.482
- 50:57:52.4823
- 50:57:52.48229
- 50:57:52.482290
- 2 02:57
- 2 02:57
- 2 02:57:52
- 2 02:57:52
- 2 02:57:52
- 2 02:57:52
- 2 02:57:52.5
- 2 02:57:52
- 2 02:57:52.5
- 2 02:57:52.48
- 2 02:57:52
- 2 02:57:52.5
- 2 02:57:52.48
- 2 02:57:52.482
- 2 02:57:52
- 2 02:57:52.5
- 2 02:57:52.48
- 2 02:57:52.482
- 2 02:57:52.4823
- 2 02:57:52
- 2 02:57:52.5
- 2 02:57:52.48
- 2 02:57:52.482
- 2 02:57:52.4823
- 2 02:57:52.48229
- 2 02:57:52
- 2 02:57:52.5
- 2 02:57:52.48
- 2 02:57:52.482
- 2 02:57:52.4823
- 2 02:57:52.48229
- 2 02:57:52.482290
- 64:45
- 64:45
- 64:45
- 64:45:44
- 64:45:44
- 64:45:44
- 64:45:44.7
- 64:45:44
- 64:45:44.7
- 64:45:44.66
- 64:45:44
- 64:45:44.7
- 64:45:44.66
- 64:45:44.658
- 64:45:44
- 64:45:44.7
- 64:45:44.66
- 64:45:44.658
- 64:45:44.6583
- 64:45:44
- 64:45:44.7
- 64:45:44.66
- 64:45:44.658
- 64:45:44.6583
- 64:45:44.65827
- 64:45:44
- 64:45:44.7
- 64:45:44.66
- 64:45:44.658
- 64:45:44.6583
- 64:45:44.65827
- 64:45:44.658270
- 2 16:45
- 2 16:45
- 2 16:45:44
- 2 16:45:44
- 2 16:45:44
- 2 16:45:44
- 2 16:45:44.7
- 2 16:45:44
- 2 16:45:44.7
- 2 16:45:44.66
- 2 16:45:44
- 2 16:45:44.7
- 2 16:45:44.66
- 2 16:45:44.658
- 2 16:45:44
- 2 16:45:44.7
- 2 16:45:44.66
- 2 16:45:44.658
- 2 16:45:44.6583
- 2 16:45:44
- 2 16:45:44.7
- 2 16:45:44.66
- 2 16:45:44.658
- 2 16:45:44.6583
- 2 16:45:44.65827
- 2 16:45:44
- 2 16:45:44.7
- 2 16:45:44.66
- 2 16:45:44.658
- 2 16:45:44.6583
- 2 16:45:44.65827
- 2 16:45:44.658270
- 69:30
- 69:30
- 69:30
- 69:30:57
- 69:30:57
- 69:30:57
- 69:30:57.6
- 69:30:57
- 69:30:57.6
- 69:30:57.58
- 69:30:57
- 69:30:57.6
- 69:30:57.58
- 69:30:57.582
- 69:30:57
- 69:30:57.6
- 69:30:57.58
- 69:30:57.582
- 69:30:57.5822
- 69:30:57
- 69:30:57.6
- 69:30:57.58
- 69:30:57.582
- 69:30:57.5822
- 69:30:57.58219
- 69:30:57
- 69:30:57.6
- 69:30:57.58
- 69:30:57.582
- 69:30:57.5822
- 69:30:57.58219
- 69:30:57.582190
- 2 21:30
- 2 21:30
- 2 21:30:57
- 2 21:30:57
- 2 21:30:57
- 2 21:30:57
- 2 21:30:57.6
- 2 21:30:57
- 2 21:30:57.6
- 2 21:30:57.58
- 2 21:30:57
- 2 21:30:57.6
- 2 21:30:57.58
- 2 21:30:57.582
- 2 21:30:57
- 2 21:30:57.6
- 2 21:30:57.58
- 2 21:30:57.582
- 2 21:30:57.5822
- 2 21:30:57
- 2 21:30:57.6
- 2 21:30:57.58
- 2 21:30:57.582
- 2 21:30:57.5822
- 2 21:30:57.58219
- 2 21:30:57
- 2 21:30:57.6
- 2 21:30:57.58
- 2 21:30:57.582
- 2 21:30:57.5822
- 2 21:30:57.58219
- 2 21:30:57.582190
- 70:30
- 70:30
- 70:30
- 70:30:04
- 70:30:04
- 70:30:04
- 70:30:04.2
- 70:30:04
- 70:30:04.2
- 70:30:04.18
- 70:30:04
- 70:30:04.2
- 70:30:04.18
- 70:30:04.183
- 70:30:04
- 70:30:04.2
- 70:30:04.18
- 70:30:04.183
- 70:30:04.1835
- 70:30:04
- 70:30:04.2
- 70:30:04.18
- 70:30:04.183
- 70:30:04.1835
- 70:30:04.18347
- 70:30:04
- 70:30:04.2
- 70:30:04.18
- 70:30:04.183
- 70:30:04.1835
- 70:30:04.18347
- 70:30:04.183470
- 2 22:30
- 2 22:30
- 2 22:30:04
- 2 22:30:04
- 2 22:30:04
- 2 22:30:04
- 2 22:30:04.2
- 2 22:30:04
- 2 22:30:04.2
- 2 22:30:04.18
- 2 22:30:04
- 2 22:30:04.2
- 2 22:30:04.18
- 2 22:30:04.183
- 2 22:30:04
- 2 22:30:04.2
- 2 22:30:04.18
- 2 22:30:04.183
- 2 22:30:04.1835
- 2 22:30:04
- 2 22:30:04.2
- 2 22:30:04.18
- 2 22:30:04.183
- 2 22:30:04.1835
- 2 22:30:04.18347
- 2 22:30:04
- 2 22:30:04.2
- 2 22:30:04.18
- 2 22:30:04.183
- 2 22:30:04.1835
- 2 22:30:04.18347
- 2 22:30:04.183470
- 49:56
- 49:56
- 49:56
- 49:56:51
- 49:56:51
- 49:56:51
- 49:56:51.6
- 49:56:51
- 49:56:51.6
- 49:56:51.59
- 49:56:51
- 49:56:51.6
- 49:56:51.59
- 49:56:51.593
- 49:56:51
- 49:56:51.6
- 49:56:51.59
- 49:56:51.593
- 49:56:51.5932
- 49:56:51
- 49:56:51.6
- 49:56:51.59
- 49:56:51.593
- 49:56:51.5932
- 49:56:51.59319
- 49:56:51
- 49:56:51.6
- 49:56:51.59
- 49:56:51.593
- 49:56:51.5932
- 49:56:51.59319
- 49:56:51.593190
- 2 01:56
- 2 01:56
- 2 01:56:51
- 2 01:56:51
- 2 01:56:51
- 2 01:56:51
- 2 01:56:51.6
- 2 01:56:51
- 2 01:56:51.6
- 2 01:56:51.59
- 2 01:56:51
- 2 01:56:51.6
- 2 01:56:51.59
- 2 01:56:51.593
- 2 01:56:51
- 2 01:56:51.6
- 2 01:56:51.59
- 2 01:56:51.593
- 2 01:56:51.5932
- 2 01:56:51
- 2 01:56:51.6
- 2 01:56:51.59
- 2 01:56:51.593
- 2 01:56:51.5932
- 2 01:56:51.59319
- 2 01:56:51
- 2 01:56:51.6
- 2 01:56:51.59
- 2 01:56:51.593
- 2 01:56:51.5932
- 2 01:56:51.59319
- 2 01:56:51.593190
- *****
- ******
- 1296:00
- 1296:00
- 1296:00
- 1296:00:00
- 1296:00:00
- 1296:00:00
- 1296:00:00
- 1296:00:00
- 1296:00:00
- 1296:00:00.0
- 1296:00:00.0
- 1296:00:00.0
- 1296:00:00
- 1296:00:00.0
- 1296:00:00.00
- 1296:00:00.00
- 1296:00:00.00
- 1296:00:00
- 1296:00:00.0
- 1296:00:00.00
- 1296:00:00.000
- 1296:00:00.000
- 1296:00:00.000
- 1296:00:00
- 1296:00:00.0
- 1296:00:00.00
- 1296:00:00.000
- 1296:00:00.0000
- 1296:00:00.0000
- 1296:00:00.0000
- 54 00:00
- 54 00:00
- 54 00:00
- 54 00:00:00
- 54 00:00:00
- 54 00:00:00
- 54 00:00:00.0
- 54 00:00:00
- 54 00:00:00.0
- 54 00:00:00.00
- 54 00:00:00
- 54 00:00:00.0
- 54 00:00:00.00
- 54 00:00:00.000
- 54 00:00:00
- 54 00:00:00.0
- 54 00:00:00.00
- 54 00:00:00.000
- 54 00:00:00.0000
- 54 00:00:00
- 54 00:00:00.0
- 54 00:00:00.00
- 54 00:00:00.000
- 54 00:00:00.0000
- 54 00:00:00.00000
- 54 00:00:00
- 54 00:00:00.0
- 54 00:00:00.00
- 54 00:00:00.000
- 54 00:00:00.0000
- 54 00:00:00.00000
- 54 00:00:00.000000
- *****
- ******
- 1300:50
- 1300:50
- 1300:50
- 1300:50:38
- 1300:50:38
- 1300:50:38
- 1300:50:38
- 1300:50:38
- 1300:50:38
- 1300:50:38.1
- 1300:50:38.1
- 1300:50:38.1
- 1300:50:38
- 1300:50:38.1
- 1300:50:38.12
- 1300:50:38.12
- 1300:50:38.12
- 1300:50:38
- 1300:50:38.1
- 1300:50:38.12
- 1300:50:38.123
- 1300:50:38.123
- 1300:50:38.123
- 1300:50:38
- 1300:50:38.1
- 1300:50:38.12
- 1300:50:38.123
- 1300:50:38.1230
- 1300:50:38.1230
- 1300:50:38.1230
- 54 04:50
- 54 04:50
- 54 04:50
- 54 04:50:38
- 54 04:50:38
- 54 04:50:38
- 54 04:50:38.1
- 54 04:50:38
- 54 04:50:38.1
- 54 04:50:38.12
- 54 04:50:38
- 54 04:50:38.1
- 54 04:50:38.12
- 54 04:50:38.123
- 54 04:50:38
- 54 04:50:38.1
- 54 04:50:38.12
- 54 04:50:38.123
- 54 04:50:38.1230
- 54 04:50:38
- 54 04:50:38.1
- 54 04:50:38.12
- 54 04:50:38.123
- 54 04:50:38.1230
- 54 04:50:38.12301
- 54 04:50:38
- 54 04:50:38.1
- 54 04:50:38.12
- 54 04:50:38.123
- 54 04:50:38.1230
- 54 04:50:38.12301
- 54 04:50:38.123010
- *****
- ******
- 1308:31
- 1308:31
- 1308:31
- 1308:31:35
- 1308:31:35
- 1308:31:35
- 1308:31:35
- 1308:31:35
- 1308:31:35
- 1308:31:35.2
- 1308:31:35.2
- 1308:31:35.2
- 1308:31:35
- 1308:31:35.2
- 1308:31:35.23
- 1308:31:35.23
- 1308:31:35.23
- 1308:31:35
- 1308:31:35.2
- 1308:31:35.23
- 1308:31:35.235
- 1308:31:35.235
- 1308:31:35.235
- 1308:31:35
- 1308:31:35.2
- 1308:31:35.23
- 1308:31:35.235
- 1308:31:35.2345
- 1308:31:35.2345
- 1308:31:35.2345
- 54 12:31
- 54 12:31
- 54 12:31
- 54 12:31:35
- 54 12:31:35
- 54 12:31:35
- 54 12:31:35.2
- 54 12:31:35
- 54 12:31:35.2
- 54 12:31:35.23
- 54 12:31:35
- 54 12:31:35.2
- 54 12:31:35.23
- 54 12:31:35.235
- 54 12:31:35
- 54 12:31:35.2
- 54 12:31:35.23
- 54 12:31:35.235
- 54 12:31:35.2345
- 54 12:31:35
- 54 12:31:35.2
- 54 12:31:35.23
- 54 12:31:35.235
- 54 12:31:35.2345
- 54 12:31:35.23453
- 54 12:31:35
- 54 12:31:35.2
- 54 12:31:35.23
- 54 12:31:35.235
- 54 12:31:35.2345
- 54 12:31:35.23453
- 54 12:31:35.234530
- *****
- ******
- 1308:47
- 1308:47
- 1308:47
- 1308:47:53
- 1308:47:53
- 1308:47:53
- 1308:47:53
- 1308:47:53
- 1308:47:53
- 1308:47:53.3
- 1308:47:53.3
- 1308:47:53.3
- 1308:47:53
- 1308:47:53.3
- 1308:47:53.35
- 1308:47:53.35
- 1308:47:53.35
- 1308:47:53
- 1308:47:53.3
- 1308:47:53.35
- 1308:47:53.345
- 1308:47:53.345
- 1308:47:53.345
- 1308:47:53
- 1308:47:53.3
- 1308:47:53.35
- 1308:47:53.345
- 1308:47:53.3450
- 1308:47:53.3450
- 1308:47:53.3450
- 54 12:47
- 54 12:47
- 54 12:47
- 54 12:47:53
- 54 12:47:53
- 54 12:47:53
- 54 12:47:53.3
- 54 12:47:53
- 54 12:47:53.3
- 54 12:47:53.35
- 54 12:47:53
- 54 12:47:53.3
- 54 12:47:53.35
- 54 12:47:53.345
- 54 12:47:53
- 54 12:47:53.3
- 54 12:47:53.35
- 54 12:47:53.345
- 54 12:47:53.3450
- 54 12:47:53
- 54 12:47:53.3
- 54 12:47:53.35
- 54 12:47:53.345
- 54 12:47:53.3450
- 54 12:47:53.34505
- 54 12:47:53
- 54 12:47:53.3
- 54 12:47:53.35
- 54 12:47:53.345
- 54 12:47:53.3450
- 54 12:47:53.34505
- 54 12:47:53.345050
- *****
- ******
- 1297:26
- 1297:26
- 1297:26
- 1297:26:00
- 1297:26:00
- 1297:26:00
- 1297:26:00
- 1297:26:00
- 1297:26:00
- 1297:26:00.5
- 1297:26:00.5
- 1297:26:00.5
- 1297:26:00
- 1297:26:00.5
- 1297:26:00.46
- 1297:26:00.46
- 1297:26:00.46
- 1297:26:00
- 1297:26:00.5
- 1297:26:00.46
- 1297:26:00.456
- 1297:26:00.456
- 1297:26:00.456
- 1297:26:00
- 1297:26:00.5
- 1297:26:00.46
- 1297:26:00.456
- 1297:26:00.4561
- 1297:26:00.4561
- 1297:26:00.4561
- 54 01:26
- 54 01:26
- 54 01:26
- 54 01:26:00
- 54 01:26:00
- 54 01:26:00
- 54 01:26:00.5
- 54 01:26:00
- 54 01:26:00.5
- 54 01:26:00.46
- 54 01:26:00
- 54 01:26:00.5
- 54 01:26:00.46
- 54 01:26:00.456
- 54 01:26:00
- 54 01:26:00.5
- 54 01:26:00.46
- 54 01:26:00.456
- 54 01:26:00.4561
- 54 01:26:00
- 54 01:26:00.5
- 54 01:26:00.46
- 54 01:26:00.456
- 54 01:26:00.4561
- 54 01:26:00.45615
- 54 01:26:00
- 54 01:26:00.5
- 54 01:26:00.46
- 54 01:26:00.456
- 54 01:26:00.4561
- 54 01:26:00.45615
- 54 01:26:00.456150
- *****
- ******
- 1316:58
- 1316:58
- 1316:58
- 1316:58:11
- 1316:58:11
- 1316:58:11
- 1316:58:11
- 1316:58:11
- 1316:58:11
- 1316:58:11.6
- 1316:58:11.6
- 1316:58:11.6
- 1316:58:11
- 1316:58:11.6
- 1316:58:11.57
- 1316:58:11.57
- 1316:58:11.57
- 1316:58:11
- 1316:58:11.6
- 1316:58:11.57
- 1316:58:11.567
- 1316:58:11.567
- 1316:58:11.567
- 1316:58:11
- 1316:58:11.6
- 1316:58:11.57
- 1316:58:11.567
- 1316:58:11.5668
- 1316:58:11.5668
- 1316:58:11.5668
- 54 20:58
- 54 20:58
- 54 20:58
- 54 20:58:11
- 54 20:58:11
- 54 20:58:11
- 54 20:58:11.6
- 54 20:58:11
- 54 20:58:11.6
- 54 20:58:11.57
- 54 20:58:11
- 54 20:58:11.6
- 54 20:58:11.57
- 54 20:58:11.567
- 54 20:58:11
- 54 20:58:11.6
- 54 20:58:11.57
- 54 20:58:11.567
- 54 20:58:11.5668
- 54 20:58:11
- 54 20:58:11.6
- 54 20:58:11.57
- 54 20:58:11.567
- 54 20:58:11.5668
- 54 20:58:11.56677
- 54 20:58:11
- 54 20:58:11.6
- 54 20:58:11.57
- 54 20:58:11.567
- 54 20:58:11.5668
- 54 20:58:11.56677
- 54 20:58:11.566770
- *****
- ******
- 1303:36
- 1303:36
- 1303:36
- 1303:36:05
- 1303:36:05
- 1303:36:05
- 1303:36:05
- 1303:36:05
- 1303:36:05
- 1303:36:05.2
- 1303:36:05.2
- 1303:36:05.2
- 1303:36:05
- 1303:36:05.2
- 1303:36:05.19
- 1303:36:05.19
- 1303:36:05.19
- 1303:36:05
- 1303:36:05.2
- 1303:36:05.19
- 1303:36:05.190
- 1303:36:05.190
- 1303:36:05.190
- 1303:36:05
- 1303:36:05.2
- 1303:36:05.19
- 1303:36:05.190
- 1303:36:05.1896
- 1303:36:05.1896
- 1303:36:05.1896
- 54 07:36
- 54 07:36
- 54 07:36
- 54 07:36:05
- 54 07:36:05
- 54 07:36:05
- 54 07:36:05.2
- 54 07:36:05
- 54 07:36:05.2
- 54 07:36:05.19
- 54 07:36:05
- 54 07:36:05.2
- 54 07:36:05.19
- 54 07:36:05.190
- 54 07:36:05
- 54 07:36:05.2
- 54 07:36:05.19
- 54 07:36:05.190
- 54 07:36:05.1896
- 54 07:36:05
- 54 07:36:05.2
- 54 07:36:05.19
- 54 07:36:05.190
- 54 07:36:05.1896
- 54 07:36:05.18964
- 54 07:36:05
- 54 07:36:05.2
- 54 07:36:05.19
- 54 07:36:05.190
- 54 07:36:05.1896
- 54 07:36:05.18964
- 54 07:36:05.189640
- *****
- ******
- 1311:43
- 1311:43
- 1311:43
- 1311:43:49
- 1311:43:49
- 1311:43:49
- 1311:43:49
- 1311:43:49
- 1311:43:49
- 1311:43:49.8
- 1311:43:49.8
- 1311:43:49.8
- 1311:43:49
- 1311:43:49.8
- 1311:43:49.83
- 1311:43:49.83
- 1311:43:49.83
- 1311:43:49
- 1311:43:49.8
- 1311:43:49.83
- 1311:43:49.831
- 1311:43:49.831
- 1311:43:49.831
- 1311:43:49
- 1311:43:49.8
- 1311:43:49.83
- 1311:43:49.831
- 1311:43:49.8313
- 1311:43:49.8313
- 1311:43:49.8313
- 54 15:43
- 54 15:43
- 54 15:43
- 54 15:43:49
- 54 15:43:49
- 54 15:43:49
- 54 15:43:49.8
- 54 15:43:49
- 54 15:43:49.8
- 54 15:43:49.83
- 54 15:43:49
- 54 15:43:49.8
- 54 15:43:49.83
- 54 15:43:49.831
- 54 15:43:49
- 54 15:43:49.8
- 54 15:43:49.83
- 54 15:43:49.831
- 54 15:43:49.8313
- 54 15:43:49
- 54 15:43:49.8
- 54 15:43:49.83
- 54 15:43:49.831
- 54 15:43:49.8313
- 54 15:43:49.83132
- 54 15:43:49
- 54 15:43:49.8
- 54 15:43:49.83
- 54 15:43:49.831
- 54 15:43:49.8313
- 54 15:43:49.83132
- 54 15:43:49.831320
- *****
- ******
- 1300:25
- 1300:25
- 1300:25
- 1300:25:09
- 1300:25:09
- 1300:25:09
- 1300:25:09
- 1300:25:09
- 1300:25:09
- 1300:25:09.0
- 1300:25:09.0
- 1300:25:09.0
- 1300:25:09
- 1300:25:09.0
- 1300:25:09.01
- 1300:25:09.01
- 1300:25:09.01
- 1300:25:09
- 1300:25:09.0
- 1300:25:09.01
- 1300:25:09.013
- 1300:25:09.013
- 1300:25:09.013
- 1300:25:09
- 1300:25:09.0
- 1300:25:09.01
- 1300:25:09.013
- 1300:25:09.0129
- 1300:25:09.0129
- 1300:25:09.0129
- 54 04:25
- 54 04:25
- 54 04:25
- 54 04:25:09
- 54 04:25:09
- 54 04:25:09
- 54 04:25:09.0
- 54 04:25:09
- 54 04:25:09.0
- 54 04:25:09.01
- 54 04:25:09
- 54 04:25:09.0
- 54 04:25:09.01
- 54 04:25:09.013
- 54 04:25:09
- 54 04:25:09.0
- 54 04:25:09.01
- 54 04:25:09.013
- 54 04:25:09.0129
- 54 04:25:09
- 54 04:25:09.0
- 54 04:25:09.01
- 54 04:25:09.013
- 54 04:25:09.0129
- 54 04:25:09.01293
- 54 04:25:09
- 54 04:25:09.0
- 54 04:25:09.01
- 54 04:25:09.013
- 54 04:25:09.0129
- 54 04:25:09.01293
- 54 04:25:09.012930
- *****
- ******
- 1302:49
- 1302:49
- 1302:49
- 1302:49:27
- 1302:49:27
- 1302:49:27
- 1302:49:27
- 1302:49:27
- 1302:49:27
- 1302:49:27.5
- 1302:49:27.5
- 1302:49:27.5
- 1302:49:27
- 1302:49:27.5
- 1302:49:27.52
- 1302:49:27.52
- 1302:49:27.52
- 1302:49:27
- 1302:49:27.5
- 1302:49:27.52
- 1302:49:27.524
- 1302:49:27.524
- 1302:49:27.524
- 1302:49:27
- 1302:49:27.5
- 1302:49:27.52
- 1302:49:27.524
- 1302:49:27.5237
- 1302:49:27.5237
- 1302:49:27.5237
- 54 06:49
- 54 06:49
- 54 06:49
- 54 06:49:27
- 54 06:49:27
- 54 06:49:27
- 54 06:49:27.5
- 54 06:49:27
- 54 06:49:27.5
- 54 06:49:27.52
- 54 06:49:27
- 54 06:49:27.5
- 54 06:49:27.52
- 54 06:49:27.524
- 54 06:49:27
- 54 06:49:27.5
- 54 06:49:27.52
- 54 06:49:27.524
- 54 06:49:27.5237
- 54 06:49:27
- 54 06:49:27.5
- 54 06:49:27.52
- 54 06:49:27.524
- 54 06:49:27.5237
- 54 06:49:27.52375
- 54 06:49:27
- 54 06:49:27.5
- 54 06:49:27.52
- 54 06:49:27.524
- 54 06:49:27.5237
- 54 06:49:27.52375
- 54 06:49:27.523750
- *****
- ******
- 1298:57
- 1298:57
- 1298:57
- 1298:57:52
- 1298:57:52
- 1298:57:52
- 1298:57:52
- 1298:57:52
- 1298:57:52
- 1298:57:52.0
- 1298:57:52.0
- 1298:57:52.0
- 1298:57:52
- 1298:57:52.0
- 1298:57:52.02
- 1298:57:52.02
- 1298:57:52.02
- 1298:57:52
- 1298:57:52.0
- 1298:57:52.02
- 1298:57:52.016
- 1298:57:52.016
- 1298:57:52.016
- 1298:57:52
- 1298:57:52.0
- 1298:57:52.02
- 1298:57:52.016
- 1298:57:52.0157
- 1298:57:52.0157
- 1298:57:52.0157
- 54 02:57
- 54 02:57
- 54 02:57
- 54 02:57:52
- 54 02:57:52
- 54 02:57:52
- 54 02:57:52.0
- 54 02:57:52
- 54 02:57:52.0
- 54 02:57:52.02
- 54 02:57:52
- 54 02:57:52.0
- 54 02:57:52.02
- 54 02:57:52.016
- 54 02:57:52
- 54 02:57:52.0
- 54 02:57:52.02
- 54 02:57:52.016
- 54 02:57:52.0157
- 54 02:57:52
- 54 02:57:52.0
- 54 02:57:52.02
- 54 02:57:52.016
- 54 02:57:52.0157
- 54 02:57:52.01565
- 54 02:57:52
- 54 02:57:52.0
- 54 02:57:52.02
- 54 02:57:52.016
- 54 02:57:52.0157
- 54 02:57:52.01565
- 54 02:57:52.015650
- *****
- ******
- 1312:45
- 1312:45
- 1312:45
- 1312:45:44
- 1312:45:44
- 1312:45:44
- 1312:45:44
- 1312:45:44
- 1312:45:44
- 1312:45:44.9
- 1312:45:44.9
- 1312:45:44.9
- 1312:45:44
- 1312:45:44.9
- 1312:45:44.87
- 1312:45:44.87
- 1312:45:44.87
- 1312:45:44
- 1312:45:44.9
- 1312:45:44.87
- 1312:45:44.865
- 1312:45:44.865
- 1312:45:44.865
- 1312:45:44
- 1312:45:44.9
- 1312:45:44.87
- 1312:45:44.865
- 1312:45:44.8653
- 1312:45:44.8653
- 1312:45:44.8653
- 54 16:45
- 54 16:45
- 54 16:45
- 54 16:45:44
- 54 16:45:44
- 54 16:45:44
- 54 16:45:44.9
- 54 16:45:44
- 54 16:45:44.9
- 54 16:45:44.87
- 54 16:45:44
- 54 16:45:44.9
- 54 16:45:44.87
- 54 16:45:44.865
- 54 16:45:44
- 54 16:45:44.9
- 54 16:45:44.87
- 54 16:45:44.865
- 54 16:45:44.8653
- 54 16:45:44
- 54 16:45:44.9
- 54 16:45:44.87
- 54 16:45:44.865
- 54 16:45:44.8653
- 54 16:45:44.86529
- 54 16:45:44
- 54 16:45:44.9
- 54 16:45:44.87
- 54 16:45:44.865
- 54 16:45:44.8653
- 54 16:45:44.86529
- 54 16:45:44.865290
- *****
- ******
- 1317:30
- 1317:30
- 1317:30
- 1317:30:57
- 1317:30:57
- 1317:30:57
- 1317:30:57
- 1317:30:57
- 1317:30:57
- 1317:30:57.8
- 1317:30:57.8
- 1317:30:57.8
- 1317:30:57
- 1317:30:57.8
- 1317:30:57.82
- 1317:30:57.82
- 1317:30:57.82
- 1317:30:57
- 1317:30:57.8
- 1317:30:57.82
- 1317:30:57.820
- 1317:30:57.820
- 1317:30:57.820
- 1317:30:57
- 1317:30:57.8
- 1317:30:57.82
- 1317:30:57.820
- 1317:30:57.8205
- 1317:30:57.8205
- 1317:30:57.8205
- 54 21:30
- 54 21:30
- 54 21:30
- 54 21:30:57
- 54 21:30:57
- 54 21:30:57
- 54 21:30:57.8
- 54 21:30:57
- 54 21:30:57.8
- 54 21:30:57.82
- 54 21:30:57
- 54 21:30:57.8
- 54 21:30:57.82
- 54 21:30:57.820
- 54 21:30:57
- 54 21:30:57.8
- 54 21:30:57.82
- 54 21:30:57.820
- 54 21:30:57.8205
- 54 21:30:57
- 54 21:30:57.8
- 54 21:30:57.82
- 54 21:30:57.820
- 54 21:30:57.8205
- 54 21:30:57.82047
- 54 21:30:57
- 54 21:30:57.8
- 54 21:30:57.82
- 54 21:30:57.820
- 54 21:30:57.8205
- 54 21:30:57.82047
- 54 21:30:57.820470
- *****
- ******
- 1300:25
- 1300:25
- 1300:25
- 1300:25:09
- 1300:25:09
- 1300:25:09
- 1300:25:09
- 1300:25:09
- 1300:25:09
- 1300:25:09.2
- 1300:25:09.2
- 1300:25:09.2
- 1300:25:09
- 1300:25:09.2
- 1300:25:09.15
- 1300:25:09.15
- 1300:25:09.15
- 1300:25:09
- 1300:25:09.2
- 1300:25:09.15
- 1300:25:09.154
- 1300:25:09.154
- 1300:25:09.154
- 1300:25:09
- 1300:25:09.2
- 1300:25:09.15
- 1300:25:09.154
- 1300:25:09.1540
- 1300:25:09.1540
- 1300:25:09.1540
- 54 04:25
- 54 04:25
- 54 04:25
- 54 04:25:09
- 54 04:25:09
- 54 04:25:09
- 54 04:25:09.2
- 54 04:25:09
- 54 04:25:09.2
- 54 04:25:09.15
- 54 04:25:09
- 54 04:25:09.2
- 54 04:25:09.15
- 54 04:25:09.154
- 54 04:25:09
- 54 04:25:09.2
- 54 04:25:09.15
- 54 04:25:09.154
- 54 04:25:09.1540
- 54 04:25:09
- 54 04:25:09.2
- 54 04:25:09.15
- 54 04:25:09.154
- 54 04:25:09.1540
- 54 04:25:09.15395
- 54 04:25:09
- 54 04:25:09.2
- 54 04:25:09.15
- 54 04:25:09.154
- 54 04:25:09.1540
- 54 04:25:09.15395
- 54 04:25:09.153950
- *****
- ******
- 1302:49
- 1302:49
- 1302:49
- 1302:49:27
- 1302:49:27
- 1302:49:27
- 1302:49:27
- 1302:49:27
- 1302:49:27
- 1302:49:27.1
- 1302:49:27.1
- 1302:49:27.1
- 1302:49:27
- 1302:49:27.1
- 1302:49:27.11
- 1302:49:27.11
- 1302:49:27.11
- 1302:49:27
- 1302:49:27.1
- 1302:49:27.11
- 1302:49:27.105
- 1302:49:27.105
- 1302:49:27.105
- 1302:49:27
- 1302:49:27.1
- 1302:49:27.11
- 1302:49:27.105
- 1302:49:27.1053
- 1302:49:27.1053
- 1302:49:27.1053
- 54 06:49
- 54 06:49
- 54 06:49
- 54 06:49:27
- 54 06:49:27
- 54 06:49:27
- 54 06:49:27.1
- 54 06:49:27
- 54 06:49:27.1
- 54 06:49:27.11
- 54 06:49:27
- 54 06:49:27.1
- 54 06:49:27.11
- 54 06:49:27.105
- 54 06:49:27
- 54 06:49:27.1
- 54 06:49:27.11
- 54 06:49:27.105
- 54 06:49:27.1053
- 54 06:49:27
- 54 06:49:27.1
- 54 06:49:27.11
- 54 06:49:27.105
- 54 06:49:27.1053
- 54 06:49:27.10533
- 54 06:49:27
- 54 06:49:27.1
- 54 06:49:27.11
- 54 06:49:27.105
- 54 06:49:27.1053
- 54 06:49:27.10533
- 54 06:49:27.105330
- *****
- ******
- 1298:57
- 1298:57
- 1298:57
- 1298:57:52
- 1298:57:52
- 1298:57:52
- 1298:57:52
- 1298:57:52
- 1298:57:52
- 1298:57:52.5
- 1298:57:52.5
- 1298:57:52.5
- 1298:57:52
- 1298:57:52.5
- 1298:57:52.48
- 1298:57:52.48
- 1298:57:52.48
- 1298:57:52
- 1298:57:52.5
- 1298:57:52.48
- 1298:57:52.482
- 1298:57:52.482
- 1298:57:52.482
- 1298:57:52
- 1298:57:52.5
- 1298:57:52.48
- 1298:57:52.482
- 1298:57:52.4823
- 1298:57:52.4823
- 1298:57:52.4823
- 54 02:57
- 54 02:57
- 54 02:57
- 54 02:57:52
- 54 02:57:52
- 54 02:57:52
- 54 02:57:52.5
- 54 02:57:52
- 54 02:57:52.5
- 54 02:57:52.48
- 54 02:57:52
- 54 02:57:52.5
- 54 02:57:52.48
- 54 02:57:52.482
- 54 02:57:52
- 54 02:57:52.5
- 54 02:57:52.48
- 54 02:57:52.482
- 54 02:57:52.4823
- 54 02:57:52
- 54 02:57:52.5
- 54 02:57:52.48
- 54 02:57:52.482
- 54 02:57:52.4823
- 54 02:57:52.48229
- 54 02:57:52
- 54 02:57:52.5
- 54 02:57:52.48
- 54 02:57:52.482
- 54 02:57:52.4823
- 54 02:57:52.48229
- 54 02:57:52.482290
- *****
- ******
- 1312:45
- 1312:45
- 1312:45
- 1312:45:44
- 1312:45:44
- 1312:45:44
- 1312:45:44
- 1312:45:44
- 1312:45:44
- 1312:45:44.7
- 1312:45:44.7
- 1312:45:44.7
- 1312:45:44
- 1312:45:44.7
- 1312:45:44.66
- 1312:45:44.66
- 1312:45:44.66
- 1312:45:44
- 1312:45:44.7
- 1312:45:44.66
- 1312:45:44.658
- 1312:45:44.658
- 1312:45:44.658
- 1312:45:44
- 1312:45:44.7
- 1312:45:44.66
- 1312:45:44.658
- 1312:45:44.6583
- 1312:45:44.6583
- 1312:45:44.6583
- 54 16:45
- 54 16:45
- 54 16:45
- 54 16:45:44
- 54 16:45:44
- 54 16:45:44
- 54 16:45:44.7
- 54 16:45:44
- 54 16:45:44.7
- 54 16:45:44.66
- 54 16:45:44
- 54 16:45:44.7
- 54 16:45:44.66
- 54 16:45:44.658
- 54 16:45:44
- 54 16:45:44.7
- 54 16:45:44.66
- 54 16:45:44.658
- 54 16:45:44.6583
- 54 16:45:44
- 54 16:45:44.7
- 54 16:45:44.66
- 54 16:45:44.658
- 54 16:45:44.6583
- 54 16:45:44.65827
- 54 16:45:44
- 54 16:45:44.7
- 54 16:45:44.66
- 54 16:45:44.658
- 54 16:45:44.6583
- 54 16:45:44.65827
- 54 16:45:44.658270
- *****
- ******
- 1317:30
- 1317:30
- 1317:30
- 1317:30:57
- 1317:30:57
- 1317:30:57
- 1317:30:57
- 1317:30:57
- 1317:30:57
- 1317:30:57.6
- 1317:30:57.6
- 1317:30:57.6
- 1317:30:57
- 1317:30:57.6
- 1317:30:57.58
- 1317:30:57.58
- 1317:30:57.58
- 1317:30:57
- 1317:30:57.6
- 1317:30:57.58
- 1317:30:57.582
- 1317:30:57.582
- 1317:30:57.582
- 1317:30:57
- 1317:30:57.6
- 1317:30:57.58
- 1317:30:57.582
- 1317:30:57.5822
- 1317:30:57.5822
- 1317:30:57.5822
- 54 21:30
- 54 21:30
- 54 21:30
- 54 21:30:57
- 54 21:30:57
- 54 21:30:57
- 54 21:30:57.6
- 54 21:30:57
- 54 21:30:57.6
- 54 21:30:57.58
- 54 21:30:57
- 54 21:30:57.6
- 54 21:30:57.58
- 54 21:30:57.582
- 54 21:30:57
- 54 21:30:57.6
- 54 21:30:57.58
- 54 21:30:57.582
- 54 21:30:57.5822
- 54 21:30:57
- 54 21:30:57.6
- 54 21:30:57.58
- 54 21:30:57.582
- 54 21:30:57.5822
- 54 21:30:57.58219
- 54 21:30:57
- 54 21:30:57.6
- 54 21:30:57.58
- 54 21:30:57.582
- 54 21:30:57.5822
- 54 21:30:57.58219
- 54 21:30:57.582190
- *****
- ******
- 1318:30
- 1318:30
- 1318:30
- 1318:30:04
- 1318:30:04
- 1318:30:04
- 1318:30:04
- 1318:30:04
- 1318:30:04
- 1318:30:04.2
- 1318:30:04.2
- 1318:30:04.2
- 1318:30:04
- 1318:30:04.2
- 1318:30:04.18
- 1318:30:04.18
- 1318:30:04.18
- 1318:30:04
- 1318:30:04.2
- 1318:30:04.18
- 1318:30:04.183
- 1318:30:04.183
- 1318:30:04.183
- 1318:30:04
- 1318:30:04.2
- 1318:30:04.18
- 1318:30:04.183
- 1318:30:04.1835
- 1318:30:04.1835
- 1318:30:04.1835
- 54 22:30
- 54 22:30
- 54 22:30
- 54 22:30:04
- 54 22:30:04
- 54 22:30:04
- 54 22:30:04.2
- 54 22:30:04
- 54 22:30:04.2
- 54 22:30:04.18
- 54 22:30:04
- 54 22:30:04.2
- 54 22:30:04.18
- 54 22:30:04.183
- 54 22:30:04
- 54 22:30:04.2
- 54 22:30:04.18
- 54 22:30:04.183
- 54 22:30:04.1835
- 54 22:30:04
- 54 22:30:04.2
- 54 22:30:04.18
- 54 22:30:04.183
- 54 22:30:04.1835
- 54 22:30:04.18347
- 54 22:30:04
- 54 22:30:04.2
- 54 22:30:04.18
- 54 22:30:04.183
- 54 22:30:04.1835
- 54 22:30:04.18347
- 54 22:30:04.183470
- *****
- ******
- 1297:56
- 1297:56
- 1297:56
- 1297:56:51
- 1297:56:51
- 1297:56:51
- 1297:56:51
- 1297:56:51
- 1297:56:51
- 1297:56:51.6
- 1297:56:51.6
- 1297:56:51.6
- 1297:56:51
- 1297:56:51.6
- 1297:56:51.59
- 1297:56:51.59
- 1297:56:51.59
- 1297:56:51
- 1297:56:51.6
- 1297:56:51.59
- 1297:56:51.593
- 1297:56:51.593
- 1297:56:51.593
- 1297:56:51
- 1297:56:51.6
- 1297:56:51.59
- 1297:56:51.593
- 1297:56:51.5932
- 1297:56:51.5932
- 1297:56:51.5932
- 54 01:56
- 54 01:56
- 54 01:56
- 54 01:56:51
- 54 01:56:51
- 54 01:56:51
- 54 01:56:51.6
- 54 01:56:51
- 54 01:56:51.6
- 54 01:56:51.59
- 54 01:56:51
- 54 01:56:51.6
- 54 01:56:51.59
- 54 01:56:51.593
- 54 01:56:51
- 54 01:56:51.6
- 54 01:56:51.59
- 54 01:56:51.593
- 54 01:56:51.5932
- 54 01:56:51
- 54 01:56:51.6
- 54 01:56:51.59
- 54 01:56:51.593
- 54 01:56:51.5932
- 54 01:56:51.59319
- 54 01:56:51
- 54 01:56:51.6
- 54 01:56:51.59
- 54 01:56:51.593
- 54 01:56:51.5932
- 54 01:56:51.59319
- 54 01:56:51.593190
- *****
- ******
- *******
- 16344:00
- 16344:00
- 16344:00
- 16344:00
- 16344:00:00
- 16344:00:00
- 16344:00:00
- 16344:00:00
- 16344:00:00
- 16344:00:00
- 16344:00:00
- 16344:00:00
- 16344:00:00.0
- 16344:00:00.0
- 16344:00:00.0
- 16344:00:00.0
- 16344:00:00
- 16344:00:00.0
- 16344:00:00.00
- 16344:00:00.00
- 16344:00:00.00
- 16344:00:00.00
- 16344:00:00
- 16344:00:00.0
- 16344:00:00.00
- 16344:00:00.000
- 16344:00:00.000
- 16344:00:00.000
- 16344:00:00.000
- ********
- 681 00:00
- 681 00:00
- 681 00:00
- 681 00:00:00
- 681 00:00:00
- 681 00:00:00
- 681 00:00:00
- 681 00:00:00.0
- 681 00:00:00.0
- 681 00:00:00
- 681 00:00:00.0
- 681 00:00:00.00
- 681 00:00:00.00
- 681 00:00:00
- 681 00:00:00.0
- 681 00:00:00.00
- 681 00:00:00.000
- 681 00:00:00.000
- 681 00:00:00
- 681 00:00:00.0
- 681 00:00:00.00
- 681 00:00:00.000
- 681 00:00:00.0000
- 681 00:00:00.0000
- 681 00:00:00
- 681 00:00:00.0
- 681 00:00:00.00
- 681 00:00:00.000
- 681 00:00:00.0000
- 681 00:00:00.00000
- 681 00:00:00.00000
- *****
- ******
- *******
- 16348:50
- 16348:50
- 16348:50
- 16348:50
- 16348:50:38
- 16348:50:38
- 16348:50:38
- 16348:50:38
- 16348:50:38
- 16348:50:38
- 16348:50:38
- 16348:50:38
- 16348:50:38.1
- 16348:50:38.1
- 16348:50:38.1
- 16348:50:38.1
- 16348:50:38
- 16348:50:38.1
- 16348:50:38.12
- 16348:50:38.12
- 16348:50:38.12
- 16348:50:38.12
- 16348:50:38
- 16348:50:38.1
- 16348:50:38.12
- 16348:50:38.123
- 16348:50:38.123
- 16348:50:38.123
- 16348:50:38.123
- ********
- 681 04:50
- 681 04:50
- 681 04:50
- 681 04:50:38
- 681 04:50:38
- 681 04:50:38
- 681 04:50:38
- 681 04:50:38.1
- 681 04:50:38.1
- 681 04:50:38
- 681 04:50:38.1
- 681 04:50:38.12
- 681 04:50:38.12
- 681 04:50:38
- 681 04:50:38.1
- 681 04:50:38.12
- 681 04:50:38.123
- 681 04:50:38.123
- 681 04:50:38
- 681 04:50:38.1
- 681 04:50:38.12
- 681 04:50:38.123
- 681 04:50:38.1230
- 681 04:50:38.1230
- 681 04:50:38
- 681 04:50:38.1
- 681 04:50:38.12
- 681 04:50:38.123
- 681 04:50:38.1230
- 681 04:50:38.12301
- 681 04:50:38.12301
- *****
- ******
- *******
- 16356:31
- 16356:31
- 16356:31
- 16356:31
- 16356:31:35
- 16356:31:35
- 16356:31:35
- 16356:31:35
- 16356:31:35
- 16356:31:35
- 16356:31:35
- 16356:31:35
- 16356:31:35.2
- 16356:31:35.2
- 16356:31:35.2
- 16356:31:35.2
- 16356:31:35
- 16356:31:35.2
- 16356:31:35.23
- 16356:31:35.23
- 16356:31:35.23
- 16356:31:35.23
- 16356:31:35
- 16356:31:35.2
- 16356:31:35.23
- 16356:31:35.235
- 16356:31:35.235
- 16356:31:35.235
- 16356:31:35.235
- ********
- 681 12:31
- 681 12:31
- 681 12:31
- 681 12:31:35
- 681 12:31:35
- 681 12:31:35
- 681 12:31:35
- 681 12:31:35.2
- 681 12:31:35.2
- 681 12:31:35
- 681 12:31:35.2
- 681 12:31:35.23
- 681 12:31:35.23
- 681 12:31:35
- 681 12:31:35.2
- 681 12:31:35.23
- 681 12:31:35.235
- 681 12:31:35.235
- 681 12:31:35
- 681 12:31:35.2
- 681 12:31:35.23
- 681 12:31:35.235
- 681 12:31:35.2345
- 681 12:31:35.2345
- 681 12:31:35
- 681 12:31:35.2
- 681 12:31:35.23
- 681 12:31:35.235
- 681 12:31:35.2345
- 681 12:31:35.23453
- 681 12:31:35.23453
- *****
- ******
- *******
- 16356:47
- 16356:47
- 16356:47
- 16356:47
- 16356:47:53
- 16356:47:53
- 16356:47:53
- 16356:47:53
- 16356:47:53
- 16356:47:53
- 16356:47:53
- 16356:47:53
- 16356:47:53.3
- 16356:47:53.3
- 16356:47:53.3
- 16356:47:53.3
- 16356:47:53
- 16356:47:53.3
- 16356:47:53.35
- 16356:47:53.35
- 16356:47:53.35
- 16356:47:53.35
- 16356:47:53
- 16356:47:53.3
- 16356:47:53.35
- 16356:47:53.345
- 16356:47:53.345
- 16356:47:53.345
- 16356:47:53.345
- ********
- 681 12:47
- 681 12:47
- 681 12:47
- 681 12:47:53
- 681 12:47:53
- 681 12:47:53
- 681 12:47:53
- 681 12:47:53.3
- 681 12:47:53.3
- 681 12:47:53
- 681 12:47:53.3
- 681 12:47:53.35
- 681 12:47:53.35
- 681 12:47:53
- 681 12:47:53.3
- 681 12:47:53.35
- 681 12:47:53.345
- 681 12:47:53.345
- 681 12:47:53
- 681 12:47:53.3
- 681 12:47:53.35
- 681 12:47:53.345
- 681 12:47:53.3450
- 681 12:47:53.3450
- 681 12:47:53
- 681 12:47:53.3
- 681 12:47:53.35
- 681 12:47:53.345
- 681 12:47:53.3450
- 681 12:47:53.34505
- 681 12:47:53.34505
- *****
- ******
- *******
- 16345:26
- 16345:26
- 16345:26
- 16345:26
- 16345:26:00
- 16345:26:00
- 16345:26:00
- 16345:26:00
- 16345:26:00
- 16345:26:00
- 16345:26:00
- 16345:26:00
- 16345:26:00.5
- 16345:26:00.5
- 16345:26:00.5
- 16345:26:00.5
- 16345:26:00
- 16345:26:00.5
- 16345:26:00.46
- 16345:26:00.46
- 16345:26:00.46
- 16345:26:00.46
- 16345:26:00
- 16345:26:00.5
- 16345:26:00.46
- 16345:26:00.456
- 16345:26:00.456
- 16345:26:00.456
- 16345:26:00.456
- ********
- 681 01:26
- 681 01:26
- 681 01:26
- 681 01:26:00
- 681 01:26:00
- 681 01:26:00
- 681 01:26:00
- 681 01:26:00.5
- 681 01:26:00.5
- 681 01:26:00
- 681 01:26:00.5
- 681 01:26:00.46
- 681 01:26:00.46
- 681 01:26:00
- 681 01:26:00.5
- 681 01:26:00.46
- 681 01:26:00.456
- 681 01:26:00.456
- 681 01:26:00
- 681 01:26:00.5
- 681 01:26:00.46
- 681 01:26:00.456
- 681 01:26:00.4562
- 681 01:26:00.4562
- 681 01:26:00
- 681 01:26:00.5
- 681 01:26:00.46
- 681 01:26:00.456
- 681 01:26:00.4562
- 681 01:26:00.45615
- 681 01:26:00.45615
- *****
- ******
- *******
- 16364:58
- 16364:58
- 16364:58
- 16364:58
- 16364:58:11
- 16364:58:11
- 16364:58:11
- 16364:58:11
- 16364:58:11
- 16364:58:11
- 16364:58:11
- 16364:58:11
- 16364:58:11.6
- 16364:58:11.6
- 16364:58:11.6
- 16364:58:11.6
- 16364:58:11
- 16364:58:11.6
- 16364:58:11.57
- 16364:58:11.57
- 16364:58:11.57
- 16364:58:11.57
- 16364:58:11
- 16364:58:11.6
- 16364:58:11.57
- 16364:58:11.567
- 16364:58:11.567
- 16364:58:11.567
- 16364:58:11.567
- ********
- 681 20:58
- 681 20:58
- 681 20:58
- 681 20:58:11
- 681 20:58:11
- 681 20:58:11
- 681 20:58:11
- 681 20:58:11.6
- 681 20:58:11.6
- 681 20:58:11
- 681 20:58:11.6
- 681 20:58:11.57
- 681 20:58:11.57
- 681 20:58:11
- 681 20:58:11.6
- 681 20:58:11.57
- 681 20:58:11.567
- 681 20:58:11.567
- 681 20:58:11
- 681 20:58:11.6
- 681 20:58:11.57
- 681 20:58:11.567
- 681 20:58:11.5668
- 681 20:58:11.5668
- 681 20:58:11
- 681 20:58:11.6
- 681 20:58:11.57
- 681 20:58:11.567
- 681 20:58:11.5668
- 681 20:58:11.56677
- 681 20:58:11.56677
- *****
- ******
- *******
- 16351:36
- 16351:36
- 16351:36
- 16351:36
- 16351:36:05
- 16351:36:05
- 16351:36:05
- 16351:36:05
- 16351:36:05
- 16351:36:05
- 16351:36:05
- 16351:36:05
- 16351:36:05.2
- 16351:36:05.2
- 16351:36:05.2
- 16351:36:05.2
- 16351:36:05
- 16351:36:05.2
- 16351:36:05.19
- 16351:36:05.19
- 16351:36:05.19
- 16351:36:05.19
- 16351:36:05
- 16351:36:05.2
- 16351:36:05.19
- 16351:36:05.190
- 16351:36:05.190
- 16351:36:05.190
- 16351:36:05.190
- ********
- 681 07:36
- 681 07:36
- 681 07:36
- 681 07:36:05
- 681 07:36:05
- 681 07:36:05
- 681 07:36:05
- 681 07:36:05.2
- 681 07:36:05.2
- 681 07:36:05
- 681 07:36:05.2
- 681 07:36:05.19
- 681 07:36:05.19
- 681 07:36:05
- 681 07:36:05.2
- 681 07:36:05.19
- 681 07:36:05.190
- 681 07:36:05.190
- 681 07:36:05
- 681 07:36:05.2
- 681 07:36:05.19
- 681 07:36:05.190
- 681 07:36:05.1896
- 681 07:36:05.1896
- 681 07:36:05
- 681 07:36:05.2
- 681 07:36:05.19
- 681 07:36:05.190
- 681 07:36:05.1896
- 681 07:36:05.18964
- 681 07:36:05.18964
- *****
- ******
- *******
- 16359:43
- 16359:43
- 16359:43
- 16359:43
- 16359:43:49
- 16359:43:49
- 16359:43:49
- 16359:43:49
- 16359:43:49
- 16359:43:49
- 16359:43:49
- 16359:43:49
- 16359:43:49.8
- 16359:43:49.8
- 16359:43:49.8
- 16359:43:49.8
- 16359:43:49
- 16359:43:49.8
- 16359:43:49.83
- 16359:43:49.83
- 16359:43:49.83
- 16359:43:49.83
- 16359:43:49
- 16359:43:49.8
- 16359:43:49.83
- 16359:43:49.831
- 16359:43:49.831
- 16359:43:49.831
- 16359:43:49.831
- ********
- 681 15:43
- 681 15:43
- 681 15:43
- 681 15:43:49
- 681 15:43:49
- 681 15:43:49
- 681 15:43:49
- 681 15:43:49.8
- 681 15:43:49.8
- 681 15:43:49
- 681 15:43:49.8
- 681 15:43:49.83
- 681 15:43:49.83
- 681 15:43:49
- 681 15:43:49.8
- 681 15:43:49.83
- 681 15:43:49.831
- 681 15:43:49.831
- 681 15:43:49
- 681 15:43:49.8
- 681 15:43:49.83
- 681 15:43:49.831
- 681 15:43:49.8313
- 681 15:43:49.8313
- 681 15:43:49
- 681 15:43:49.8
- 681 15:43:49.83
- 681 15:43:49.831
- 681 15:43:49.8313
- 681 15:43:49.83132
- 681 15:43:49.83132
- *****
- ******
- *******
- 16348:25
- 16348:25
- 16348:25
- 16348:25
- 16348:25:09
- 16348:25:09
- 16348:25:09
- 16348:25:09
- 16348:25:09
- 16348:25:09
- 16348:25:09
- 16348:25:09
- 16348:25:09.0
- 16348:25:09.0
- 16348:25:09.0
- 16348:25:09.0
- 16348:25:09
- 16348:25:09.0
- 16348:25:09.01
- 16348:25:09.01
- 16348:25:09.01
- 16348:25:09.01
- 16348:25:09
- 16348:25:09.0
- 16348:25:09.01
- 16348:25:09.013
- 16348:25:09.013
- 16348:25:09.013
- 16348:25:09.013
- ********
- 681 04:25
- 681 04:25
- 681 04:25
- 681 04:25:09
- 681 04:25:09
- 681 04:25:09
- 681 04:25:09
- 681 04:25:09.0
- 681 04:25:09.0
- 681 04:25:09
- 681 04:25:09.0
- 681 04:25:09.01
- 681 04:25:09.01
- 681 04:25:09
- 681 04:25:09.0
- 681 04:25:09.01
- 681 04:25:09.013
- 681 04:25:09.013
- 681 04:25:09
- 681 04:25:09.0
- 681 04:25:09.01
- 681 04:25:09.013
- 681 04:25:09.0129
- 681 04:25:09.0129
- 681 04:25:09
- 681 04:25:09.0
- 681 04:25:09.01
- 681 04:25:09.013
- 681 04:25:09.0129
- 681 04:25:09.01293
- 681 04:25:09.01293
- *****
- ******
- *******
- 16350:49
- 16350:49
- 16350:49
- 16350:49
- 16350:49:27
- 16350:49:27
- 16350:49:27
- 16350:49:27
- 16350:49:27
- 16350:49:27
- 16350:49:27
- 16350:49:27
- 16350:49:27.5
- 16350:49:27.5
- 16350:49:27.5
- 16350:49:27.5
- 16350:49:27
- 16350:49:27.5
- 16350:49:27.52
- 16350:49:27.52
- 16350:49:27.52
- 16350:49:27.52
- 16350:49:27
- 16350:49:27.5
- 16350:49:27.52
- 16350:49:27.524
- 16350:49:27.524
- 16350:49:27.524
- 16350:49:27.524
- ********
- 681 06:49
- 681 06:49
- 681 06:49
- 681 06:49:27
- 681 06:49:27
- 681 06:49:27
- 681 06:49:27
- 681 06:49:27.5
- 681 06:49:27.5
- 681 06:49:27
- 681 06:49:27.5
- 681 06:49:27.52
- 681 06:49:27.52
- 681 06:49:27
- 681 06:49:27.5
- 681 06:49:27.52
- 681 06:49:27.524
- 681 06:49:27.524
- 681 06:49:27
- 681 06:49:27.5
- 681 06:49:27.52
- 681 06:49:27.524
- 681 06:49:27.5237
- 681 06:49:27.5237
- 681 06:49:27
- 681 06:49:27.5
- 681 06:49:27.52
- 681 06:49:27.524
- 681 06:49:27.5237
- 681 06:49:27.52375
- 681 06:49:27.52375
- *****
- ******
- *******
- 16346:57
- 16346:57
- 16346:57
- 16346:57
- 16346:57:52
- 16346:57:52
- 16346:57:52
- 16346:57:52
- 16346:57:52
- 16346:57:52
- 16346:57:52
- 16346:57:52
- 16346:57:52.0
- 16346:57:52.0
- 16346:57:52.0
- 16346:57:52.0
- 16346:57:52
- 16346:57:52.0
- 16346:57:52.02
- 16346:57:52.02
- 16346:57:52.02
- 16346:57:52.02
- 16346:57:52
- 16346:57:52.0
- 16346:57:52.02
- 16346:57:52.016
- 16346:57:52.016
- 16346:57:52.016
- 16346:57:52.016
- ********
- 681 02:57
- 681 02:57
- 681 02:57
- 681 02:57:52
- 681 02:57:52
- 681 02:57:52
- 681 02:57:52
- 681 02:57:52.0
- 681 02:57:52.0
- 681 02:57:52
- 681 02:57:52.0
- 681 02:57:52.02
- 681 02:57:52.02
- 681 02:57:52
- 681 02:57:52.0
- 681 02:57:52.02
- 681 02:57:52.016
- 681 02:57:52.016
- 681 02:57:52
- 681 02:57:52.0
- 681 02:57:52.02
- 681 02:57:52.016
- 681 02:57:52.0156
- 681 02:57:52.0156
- 681 02:57:52
- 681 02:57:52.0
- 681 02:57:52.02
- 681 02:57:52.016
- 681 02:57:52.0156
- 681 02:57:52.01565
- 681 02:57:52.01565
- *****
- ******
- *******
- 16360:45
- 16360:45
- 16360:45
- 16360:45
- 16360:45:44
- 16360:45:44
- 16360:45:44
- 16360:45:44
- 16360:45:44
- 16360:45:44
- 16360:45:44
- 16360:45:44
- 16360:45:44.9
- 16360:45:44.9
- 16360:45:44.9
- 16360:45:44.9
- 16360:45:44
- 16360:45:44.9
- 16360:45:44.87
- 16360:45:44.87
- 16360:45:44.87
- 16360:45:44.87
- 16360:45:44
- 16360:45:44.9
- 16360:45:44.87
- 16360:45:44.865
- 16360:45:44.865
- 16360:45:44.865
- 16360:45:44.865
- ********
- 681 16:45
- 681 16:45
- 681 16:45
- 681 16:45:44
- 681 16:45:44
- 681 16:45:44
- 681 16:45:44
- 681 16:45:44.9
- 681 16:45:44.9
- 681 16:45:44
- 681 16:45:44.9
- 681 16:45:44.87
- 681 16:45:44.87
- 681 16:45:44
- 681 16:45:44.9
- 681 16:45:44.87
- 681 16:45:44.865
- 681 16:45:44.865
- 681 16:45:44
- 681 16:45:44.9
- 681 16:45:44.87
- 681 16:45:44.865
- 681 16:45:44.8653
- 681 16:45:44.8653
- 681 16:45:44
- 681 16:45:44.9
- 681 16:45:44.87
- 681 16:45:44.865
- 681 16:45:44.8653
- 681 16:45:44.86529
- 681 16:45:44.86529
- *****
- ******
- *******
- 16365:30
- 16365:30
- 16365:30
- 16365:30
- 16365:30:57
- 16365:30:57
- 16365:30:57
- 16365:30:57
- 16365:30:57
- 16365:30:57
- 16365:30:57
- 16365:30:57
- 16365:30:57.8
- 16365:30:57.8
- 16365:30:57.8
- 16365:30:57.8
- 16365:30:57
- 16365:30:57.8
- 16365:30:57.82
- 16365:30:57.82
- 16365:30:57.82
- 16365:30:57.82
- 16365:30:57
- 16365:30:57.8
- 16365:30:57.82
- 16365:30:57.820
- 16365:30:57.820
- 16365:30:57.820
- 16365:30:57.820
- ********
- 681 21:30
- 681 21:30
- 681 21:30
- 681 21:30:57
- 681 21:30:57
- 681 21:30:57
- 681 21:30:57
- 681 21:30:57.8
- 681 21:30:57.8
- 681 21:30:57
- 681 21:30:57.8
- 681 21:30:57.82
- 681 21:30:57.82
- 681 21:30:57
- 681 21:30:57.8
- 681 21:30:57.82
- 681 21:30:57.820
- 681 21:30:57.820
- 681 21:30:57
- 681 21:30:57.8
- 681 21:30:57.82
- 681 21:30:57.820
- 681 21:30:57.8205
- 681 21:30:57.8205
- 681 21:30:57
- 681 21:30:57.8
- 681 21:30:57.82
- 681 21:30:57.820
- 681 21:30:57.8205
- 681 21:30:57.82047
- 681 21:30:57.82047
- *****
- ******
- *******
- 16348:25
- 16348:25
- 16348:25
- 16348:25
- 16348:25:09
- 16348:25:09
- 16348:25:09
- 16348:25:09
- 16348:25:09
- 16348:25:09
- 16348:25:09
- 16348:25:09
- 16348:25:09.2
- 16348:25:09.2
- 16348:25:09.2
- 16348:25:09.2
- 16348:25:09
- 16348:25:09.2
- 16348:25:09.15
- 16348:25:09.15
- 16348:25:09.15
- 16348:25:09.15
- 16348:25:09
- 16348:25:09.2
- 16348:25:09.15
- 16348:25:09.154
- 16348:25:09.154
- 16348:25:09.154
- 16348:25:09.154
- ********
- 681 04:25
- 681 04:25
- 681 04:25
- 681 04:25:09
- 681 04:25:09
- 681 04:25:09
- 681 04:25:09
- 681 04:25:09.2
- 681 04:25:09.2
- 681 04:25:09
- 681 04:25:09.2
- 681 04:25:09.15
- 681 04:25:09.15
- 681 04:25:09
- 681 04:25:09.2
- 681 04:25:09.15
- 681 04:25:09.154
- 681 04:25:09.154
- 681 04:25:09
- 681 04:25:09.2
- 681 04:25:09.15
- 681 04:25:09.154
- 681 04:25:09.1539
- 681 04:25:09.1539
- 681 04:25:09
- 681 04:25:09.2
- 681 04:25:09.15
- 681 04:25:09.154
- 681 04:25:09.1539
- 681 04:25:09.15395
- 681 04:25:09.15395
- *****
- ******
- *******
- 16350:49
- 16350:49
- 16350:49
- 16350:49
- 16350:49:27
- 16350:49:27
- 16350:49:27
- 16350:49:27
- 16350:49:27
- 16350:49:27
- 16350:49:27
- 16350:49:27
- 16350:49:27.1
- 16350:49:27.1
- 16350:49:27.1
- 16350:49:27.1
- 16350:49:27
- 16350:49:27.1
- 16350:49:27.11
- 16350:49:27.11
- 16350:49:27.11
- 16350:49:27.11
- 16350:49:27
- 16350:49:27.1
- 16350:49:27.11
- 16350:49:27.105
- 16350:49:27.105
- 16350:49:27.105
- 16350:49:27.105
- ********
- 681 06:49
- 681 06:49
- 681 06:49
- 681 06:49:27
- 681 06:49:27
- 681 06:49:27
- 681 06:49:27
- 681 06:49:27.1
- 681 06:49:27.1
- 681 06:49:27
- 681 06:49:27.1
- 681 06:49:27.11
- 681 06:49:27.11
- 681 06:49:27
- 681 06:49:27.1
- 681 06:49:27.11
- 681 06:49:27.105
- 681 06:49:27.105
- 681 06:49:27
- 681 06:49:27.1
- 681 06:49:27.11
- 681 06:49:27.105
- 681 06:49:27.1053
- 681 06:49:27.1053
- 681 06:49:27
- 681 06:49:27.1
- 681 06:49:27.11
- 681 06:49:27.105
- 681 06:49:27.1053
- 681 06:49:27.10533
- 681 06:49:27.10533
- *****
- ******
- *******
- 16346:57
- 16346:57
- 16346:57
- 16346:57
- 16346:57:52
- 16346:57:52
- 16346:57:52
- 16346:57:52
- 16346:57:52
- 16346:57:52
- 16346:57:52
- 16346:57:52
- 16346:57:52.5
- 16346:57:52.5
- 16346:57:52.5
- 16346:57:52.5
- 16346:57:52
- 16346:57:52.5
- 16346:57:52.48
- 16346:57:52.48
- 16346:57:52.48
- 16346:57:52.48
- 16346:57:52
- 16346:57:52.5
- 16346:57:52.48
- 16346:57:52.482
- 16346:57:52.482
- 16346:57:52.482
- 16346:57:52.482
- ********
- 681 02:57
- 681 02:57
- 681 02:57
- 681 02:57:52
- 681 02:57:52
- 681 02:57:52
- 681 02:57:52
- 681 02:57:52.5
- 681 02:57:52.5
- 681 02:57:52
- 681 02:57:52.5
- 681 02:57:52.48
- 681 02:57:52.48
- 681 02:57:52
- 681 02:57:52.5
- 681 02:57:52.48
- 681 02:57:52.482
- 681 02:57:52.482
- 681 02:57:52
- 681 02:57:52.5
- 681 02:57:52.48
- 681 02:57:52.482
- 681 02:57:52.4823
- 681 02:57:52.4823
- 681 02:57:52
- 681 02:57:52.5
- 681 02:57:52.48
- 681 02:57:52.482
- 681 02:57:52.4823
- 681 02:57:52.48229
- 681 02:57:52.48229
- *****
- ******
- *******
- 16360:45
- 16360:45
- 16360:45
- 16360:45
- 16360:45:44
- 16360:45:44
- 16360:45:44
- 16360:45:44
- 16360:45:44
- 16360:45:44
- 16360:45:44
- 16360:45:44
- 16360:45:44.7
- 16360:45:44.7
- 16360:45:44.7
- 16360:45:44.7
- 16360:45:44
- 16360:45:44.7
- 16360:45:44.66
- 16360:45:44.66
- 16360:45:44.66
- 16360:45:44.66
- 16360:45:44
- 16360:45:44.7
- 16360:45:44.66
- 16360:45:44.658
- 16360:45:44.658
- 16360:45:44.658
- 16360:45:44.658
- ********
- 681 16:45
- 681 16:45
- 681 16:45
- 681 16:45:44
- 681 16:45:44
- 681 16:45:44
- 681 16:45:44
- 681 16:45:44.7
- 681 16:45:44.7
- 681 16:45:44
- 681 16:45:44.7
- 681 16:45:44.66
- 681 16:45:44.66
- 681 16:45:44
- 681 16:45:44.7
- 681 16:45:44.66
- 681 16:45:44.658
- 681 16:45:44.658
- 681 16:45:44
- 681 16:45:44.7
- 681 16:45:44.66
- 681 16:45:44.658
- 681 16:45:44.6583
- 681 16:45:44.6583
- 681 16:45:44
- 681 16:45:44.7
- 681 16:45:44.66
- 681 16:45:44.658
- 681 16:45:44.6583
- 681 16:45:44.65827
- 681 16:45:44.65827
- *****
- ******
- *******
- 16365:30
- 16365:30
- 16365:30
- 16365:30
- 16365:30:57
- 16365:30:57
- 16365:30:57
- 16365:30:57
- 16365:30:57
- 16365:30:57
- 16365:30:57
- 16365:30:57
- 16365:30:57.6
- 16365:30:57.6
- 16365:30:57.6
- 16365:30:57.6
- 16365:30:57
- 16365:30:57.6
- 16365:30:57.58
- 16365:30:57.58
- 16365:30:57.58
- 16365:30:57.58
- 16365:30:57
- 16365:30:57.6
- 16365:30:57.58
- 16365:30:57.582
- 16365:30:57.582
- 16365:30:57.582
- 16365:30:57.582
- ********
- 681 21:30
- 681 21:30
- 681 21:30
- 681 21:30:57
- 681 21:30:57
- 681 21:30:57
- 681 21:30:57
- 681 21:30:57.6
- 681 21:30:57.6
- 681 21:30:57
- 681 21:30:57.6
- 681 21:30:57.58
- 681 21:30:57.58
- 681 21:30:57
- 681 21:30:57.6
- 681 21:30:57.58
- 681 21:30:57.582
- 681 21:30:57.582
- 681 21:30:57
- 681 21:30:57.6
- 681 21:30:57.58
- 681 21:30:57.582
- 681 21:30:57.5822
- 681 21:30:57.5822
- 681 21:30:57
- 681 21:30:57.6
- 681 21:30:57.58
- 681 21:30:57.582
- 681 21:30:57.5822
- 681 21:30:57.58219
- 681 21:30:57.58219
- *****
- ******
- *******
- 16366:30
- 16366:30
- 16366:30
- 16366:30
- 16366:30:04
- 16366:30:04
- 16366:30:04
- 16366:30:04
- 16366:30:04
- 16366:30:04
- 16366:30:04
- 16366:30:04
- 16366:30:04.2
- 16366:30:04.2
- 16366:30:04.2
- 16366:30:04.2
- 16366:30:04
- 16366:30:04.2
- 16366:30:04.18
- 16366:30:04.18
- 16366:30:04.18
- 16366:30:04.18
- 16366:30:04
- 16366:30:04.2
- 16366:30:04.18
- 16366:30:04.183
- 16366:30:04.183
- 16366:30:04.183
- 16366:30:04.183
- ********
- 681 22:30
- 681 22:30
- 681 22:30
- 681 22:30:04
- 681 22:30:04
- 681 22:30:04
- 681 22:30:04
- 681 22:30:04.2
- 681 22:30:04.2
- 681 22:30:04
- 681 22:30:04.2
- 681 22:30:04.18
- 681 22:30:04.18
- 681 22:30:04
- 681 22:30:04.2
- 681 22:30:04.18
- 681 22:30:04.183
- 681 22:30:04.183
- 681 22:30:04
- 681 22:30:04.2
- 681 22:30:04.18
- 681 22:30:04.183
- 681 22:30:04.1835
- 681 22:30:04.1835
- 681 22:30:04
- 681 22:30:04.2
- 681 22:30:04.18
- 681 22:30:04.183
- 681 22:30:04.1835
- 681 22:30:04.18347
- 681 22:30:04.18347
- *****
- ******
- *******
- 16345:56
- 16345:56
- 16345:56
- 16345:56
- 16345:56:51
- 16345:56:51
- 16345:56:51
- 16345:56:51
- 16345:56:51
- 16345:56:51
- 16345:56:51
- 16345:56:51
- 16345:56:51.6
- 16345:56:51.6
- 16345:56:51.6
- 16345:56:51.6
- 16345:56:51
- 16345:56:51.6
- 16345:56:51.59
- 16345:56:51.59
- 16345:56:51.59
- 16345:56:51.59
- 16345:56:51
- 16345:56:51.6
- 16345:56:51.59
- 16345:56:51.593
- 16345:56:51.593
- 16345:56:51.593
- 16345:56:51.593
- ********
- 681 01:56
- 681 01:56
- 681 01:56
- 681 01:56:51
- 681 01:56:51
- 681 01:56:51
- 681 01:56:51
- 681 01:56:51.6
- 681 01:56:51.6
- 681 01:56:51
- 681 01:56:51.6
- 681 01:56:51.59
- 681 01:56:51.59
- 681 01:56:51
- 681 01:56:51.6
- 681 01:56:51.59
- 681 01:56:51.593
- 681 01:56:51.593
- 681 01:56:51
- 681 01:56:51.6
- 681 01:56:51.59
- 681 01:56:51.593
- 681 01:56:51.5932
- 681 01:56:51.5932
- 681 01:56:51
- 681 01:56:51.6
- 681 01:56:51.59
- 681 01:56:51.593
- 681 01:56:51.5932
- 681 01:56:51.59319
- 681 01:56:51.59319
- 0:00
- 0:00
- 0:00:00
- 0:00:00
- 0:00:00
- 0:00:00
- 0:00:00.0
- 0:00:00
- 0:00:00.0
- 0:00:00.00
- 0:00:00
- 0:00:00.0
- 0:00:00.00
- 0:00:00.000
- 0:00:00
- 0:00:00.0
- 0:00:00.00
- 0:00:00.000
- 0:00:00.0000
- 0:00:00
- 0:00:00.0
- 0:00:00.00
- 0:00:00.000
- 0:00:00.0000
- 0:00:00.00000
- 0:00:00
- 0:00:00.0
- 0:00:00.00
- 0:00:00.000
- 0:00:00.0000
- 0:00:00.00000
- 0:00:00.000000
- 0 00:00
- 0 00:00
- 0 00:00:00
- 0 00:00:00
- 0 00:00:00
- 0 00:00:00
- 0 00:00:00.0
- 0 00:00:00
- 0 00:00:00.0
- 0 00:00:00.00
- 0 00:00:00
- 0 00:00:00.0
- 0 00:00:00.00
- 0 00:00:00.000
- 0 00:00:00
- 0 00:00:00.0
- 0 00:00:00.00
- 0 00:00:00.000
- 0 00:00:00.0000
- 0 00:00:00
- 0 00:00:00.0
- 0 00:00:00.00
- 0 00:00:00.000
- 0 00:00:00.0000
- 0 00:00:00.00000
- 0 00:00:00
- 0 00:00:00.0
- 0 00:00:00.00
- 0 00:00:00.000
- 0 00:00:00.0000
- 0 00:00:00.00000
- 0 00:00:00.000000
- -4:50
- -4:50
- -4:50
- -4:50:38
- -4:50:38
- -4:50:38
- -4:50:38.1
- -4:50:38
- -4:50:38.1
- -4:50:38.12
- -4:50:38
- -4:50:38.1
- -4:50:38.12
- -4:50:38.123
- -4:50:38
- -4:50:38.1
- -4:50:38.12
- -4:50:38.123
- -4:50:38.1230
- -4:50:38
- -4:50:38.1
- -4:50:38.12
- -4:50:38.123
- -4:50:38.1230
- -4:50:38.12301
- -4:50:38
- -4:50:38.1
- -4:50:38.12
- -4:50:38.123
- -4:50:38.1230
- -4:50:38.12301
- -4:50:38.123010
- -0 04:50
- -0 04:50
- -0 04:50
- -0 04:50:38
- -0 04:50:38
- -0 04:50:38
- -0 04:50:38.1
- -0 04:50:38
- -0 04:50:38.1
- -0 04:50:38.12
- -0 04:50:38
- -0 04:50:38.1
- -0 04:50:38.12
- -0 04:50:38.123
- -0 04:50:38
- -0 04:50:38.1
- -0 04:50:38.12
- -0 04:50:38.123
- -0 04:50:38.1230
- -0 04:50:38
- -0 04:50:38.1
- -0 04:50:38.12
- -0 04:50:38.123
- -0 04:50:38.1230
- -0 04:50:38.12301
- -0 04:50:38
- -0 04:50:38.1
- -0 04:50:38.12
- -0 04:50:38.123
- -0 04:50:38.1230
- -0 04:50:38.12301
- -0 04:50:38.123010
- *****
- -12:31
- -12:31
- -12:31
- -12:31:35
- -12:31:35
- -12:31:35
- -12:31:35
- -12:31:35.2
- -12:31:35.2
- -12:31:35
- -12:31:35.2
- -12:31:35.23
- -12:31:35.23
- -12:31:35
- -12:31:35.2
- -12:31:35.23
- -12:31:35.235
- -12:31:35.235
- -12:31:35
- -12:31:35.2
- -12:31:35.23
- -12:31:35.235
- -12:31:35.2345
- -12:31:35.2345
- -12:31:35
- -12:31:35.2
- -12:31:35.23
- -12:31:35.235
- -12:31:35.2345
- -12:31:35.23453
- -12:31:35.23453
- -0 12:31
- -0 12:31
- -0 12:31
- -0 12:31:35
- -0 12:31:35
- -0 12:31:35
- -0 12:31:35.2
- -0 12:31:35
- -0 12:31:35.2
- -0 12:31:35.23
- -0 12:31:35
- -0 12:31:35.2
- -0 12:31:35.23
- -0 12:31:35.235
- -0 12:31:35
- -0 12:31:35.2
- -0 12:31:35.23
- -0 12:31:35.235
- -0 12:31:35.2345
- -0 12:31:35
- -0 12:31:35.2
- -0 12:31:35.23
- -0 12:31:35.235
- -0 12:31:35.2345
- -0 12:31:35.23453
- -0 12:31:35
- -0 12:31:35.2
- -0 12:31:35.23
- -0 12:31:35.235
- -0 12:31:35.2345
- -0 12:31:35.23453
- -0 12:31:35.234530
- *****
- -12:47
- -12:47
- -12:47
- -12:47:53
- -12:47:53
- -12:47:53
- -12:47:53
- -12:47:53.3
- -12:47:53.3
- -12:47:53
- -12:47:53.3
- -12:47:53.35
- -12:47:53.35
- -12:47:53
- -12:47:53.3
- -12:47:53.35
- -12:47:53.345
- -12:47:53.345
- -12:47:53
- -12:47:53.3
- -12:47:53.35
- -12:47:53.345
- -12:47:53.3451
- -12:47:53.3451
- -12:47:53
- -12:47:53.3
- -12:47:53.35
- -12:47:53.345
- -12:47:53.3451
- -12:47:53.34505
- -12:47:53.34505
- -0 12:47
- -0 12:47
- -0 12:47
- -0 12:47:53
- -0 12:47:53
- -0 12:47:53
- -0 12:47:53.3
- -0 12:47:53
- -0 12:47:53.3
- -0 12:47:53.35
- -0 12:47:53
- -0 12:47:53.3
- -0 12:47:53.35
- -0 12:47:53.345
- -0 12:47:53
- -0 12:47:53.3
- -0 12:47:53.35
- -0 12:47:53.345
- -0 12:47:53.3451
- -0 12:47:53
- -0 12:47:53.3
- -0 12:47:53.35
- -0 12:47:53.345
- -0 12:47:53.3451
- -0 12:47:53.34505
- -0 12:47:53
- -0 12:47:53.3
- -0 12:47:53.35
- -0 12:47:53.345
- -0 12:47:53.3451
- -0 12:47:53.34505
- -0 12:47:53.345050
- -1:26
- -1:26
- -1:26
- -1:26:00
- -1:26:00
- -1:26:00
- -1:26:00.5
- -1:26:00
- -1:26:00.5
- -1:26:00.46
- -1:26:00
- -1:26:00.5
- -1:26:00.46
- -1:26:00.456
- -1:26:00
- -1:26:00.5
- -1:26:00.46
- -1:26:00.456
- -1:26:00.4561
- -1:26:00
- -1:26:00.5
- -1:26:00.46
- -1:26:00.456
- -1:26:00.4561
- -1:26:00.45615
- -1:26:00
- -1:26:00.5
- -1:26:00.46
- -1:26:00.456
- -1:26:00.4561
- -1:26:00.45615
- -1:26:00.456150
- -0 01:26
- -0 01:26
- -0 01:26
- -0 01:26:00
- -0 01:26:00
- -0 01:26:00
- -0 01:26:00.5
- -0 01:26:00
- -0 01:26:00.5
- -0 01:26:00.46
- -0 01:26:00
- -0 01:26:00.5
- -0 01:26:00.46
- -0 01:26:00.456
- -0 01:26:00
- -0 01:26:00.5
- -0 01:26:00.46
- -0 01:26:00.456
- -0 01:26:00.4561
- -0 01:26:00
- -0 01:26:00.5
- -0 01:26:00.46
- -0 01:26:00.456
- -0 01:26:00.4561
- -0 01:26:00.45615
- -0 01:26:00
- -0 01:26:00.5
- -0 01:26:00.46
- -0 01:26:00.456
- -0 01:26:00.4561
- -0 01:26:00.45615
- -0 01:26:00.456150
- *****
- -20:58
- -20:58
- -20:58
- -20:58:11
- -20:58:11
- -20:58:11
- -20:58:11
- -20:58:11.6
- -20:58:11.6
- -20:58:11
- -20:58:11.6
- -20:58:11.57
- -20:58:11.57
- -20:58:11
- -20:58:11.6
- -20:58:11.57
- -20:58:11.567
- -20:58:11.567
- -20:58:11
- -20:58:11.6
- -20:58:11.57
- -20:58:11.567
- -20:58:11.5668
- -20:58:11.5668
- -20:58:11
- -20:58:11.6
- -20:58:11.57
- -20:58:11.567
- -20:58:11.5668
- -20:58:11.56677
- -20:58:11.56677
- -0 20:58
- -0 20:58
- -0 20:58
- -0 20:58:11
- -0 20:58:11
- -0 20:58:11
- -0 20:58:11.6
- -0 20:58:11
- -0 20:58:11.6
- -0 20:58:11.57
- -0 20:58:11
- -0 20:58:11.6
- -0 20:58:11.57
- -0 20:58:11.567
- -0 20:58:11
- -0 20:58:11.6
- -0 20:58:11.57
- -0 20:58:11.567
- -0 20:58:11.5668
- -0 20:58:11
- -0 20:58:11.6
- -0 20:58:11.57
- -0 20:58:11.567
- -0 20:58:11.5668
- -0 20:58:11.56677
- -0 20:58:11
- -0 20:58:11.6
- -0 20:58:11.57
- -0 20:58:11.567
- -0 20:58:11.5668
- -0 20:58:11.56677
- -0 20:58:11.566770
- -7:36
- -7:36
- -7:36
- -7:36:05
- -7:36:05
- -7:36:05
- -7:36:05.2
- -7:36:05
- -7:36:05.2
- -7:36:05.19
- -7:36:05
- -7:36:05.2
- -7:36:05.19
- -7:36:05.190
- -7:36:05
- -7:36:05.2
- -7:36:05.19
- -7:36:05.190
- -7:36:05.1896
- -7:36:05
- -7:36:05.2
- -7:36:05.19
- -7:36:05.190
- -7:36:05.1896
- -7:36:05.18964
- -7:36:05
- -7:36:05.2
- -7:36:05.19
- -7:36:05.190
- -7:36:05.1896
- -7:36:05.18964
- -7:36:05.189640
- -0 07:36
- -0 07:36
- -0 07:36
- -0 07:36:05
- -0 07:36:05
- -0 07:36:05
- -0 07:36:05.2
- -0 07:36:05
- -0 07:36:05.2
- -0 07:36:05.19
- -0 07:36:05
- -0 07:36:05.2
- -0 07:36:05.19
- -0 07:36:05.190
- -0 07:36:05
- -0 07:36:05.2
- -0 07:36:05.19
- -0 07:36:05.190
- -0 07:36:05.1896
- -0 07:36:05
- -0 07:36:05.2
- -0 07:36:05.19
- -0 07:36:05.190
- -0 07:36:05.1896
- -0 07:36:05.18964
- -0 07:36:05
- -0 07:36:05.2
- -0 07:36:05.19
- -0 07:36:05.190
- -0 07:36:05.1896
- -0 07:36:05.18964
- -0 07:36:05.189640
- *****
- -15:43
- -15:43
- -15:43
- -15:43:49
- -15:43:49
- -15:43:49
- -15:43:49
- -15:43:49.8
- -15:43:49.8
- -15:43:49
- -15:43:49.8
- -15:43:49.83
- -15:43:49.83
- -15:43:49
- -15:43:49.8
- -15:43:49.83
- -15:43:49.831
- -15:43:49.831
- -15:43:49
- -15:43:49.8
- -15:43:49.83
- -15:43:49.831
- -15:43:49.8313
- -15:43:49.8313
- -15:43:49
- -15:43:49.8
- -15:43:49.83
- -15:43:49.831
- -15:43:49.8313
- -15:43:49.83132
- -15:43:49.83132
- -0 15:43
- -0 15:43
- -0 15:43
- -0 15:43:49
- -0 15:43:49
- -0 15:43:49
- -0 15:43:49.8
- -0 15:43:49
- -0 15:43:49.8
- -0 15:43:49.83
- -0 15:43:49
- -0 15:43:49.8
- -0 15:43:49.83
- -0 15:43:49.831
- -0 15:43:49
- -0 15:43:49.8
- -0 15:43:49.83
- -0 15:43:49.831
- -0 15:43:49.8313
- -0 15:43:49
- -0 15:43:49.8
- -0 15:43:49.83
- -0 15:43:49.831
- -0 15:43:49.8313
- -0 15:43:49.83132
- -0 15:43:49
- -0 15:43:49.8
- -0 15:43:49.83
- -0 15:43:49.831
- -0 15:43:49.8313
- -0 15:43:49.83132
- -0 15:43:49.831320
- -4:25
- -4:25
- -4:25
- -4:25:09
- -4:25:09
- -4:25:09
- -4:25:09.0
- -4:25:09
- -4:25:09.0
- -4:25:09.01
- -4:25:09
- -4:25:09.0
- -4:25:09.01
- -4:25:09.013
- -4:25:09
- -4:25:09.0
- -4:25:09.01
- -4:25:09.013
- -4:25:09.0129
- -4:25:09
- -4:25:09.0
- -4:25:09.01
- -4:25:09.013
- -4:25:09.0129
- -4:25:09.01293
- -4:25:09
- -4:25:09.0
- -4:25:09.01
- -4:25:09.013
- -4:25:09.0129
- -4:25:09.01293
- -4:25:09.012930
- -0 04:25
- -0 04:25
- -0 04:25
- -0 04:25:09
- -0 04:25:09
- -0 04:25:09
- -0 04:25:09.0
- -0 04:25:09
- -0 04:25:09.0
- -0 04:25:09.01
- -0 04:25:09
- -0 04:25:09.0
- -0 04:25:09.01
- -0 04:25:09.013
- -0 04:25:09
- -0 04:25:09.0
- -0 04:25:09.01
- -0 04:25:09.013
- -0 04:25:09.0129
- -0 04:25:09
- -0 04:25:09.0
- -0 04:25:09.01
- -0 04:25:09.013
- -0 04:25:09.0129
- -0 04:25:09.01293
- -0 04:25:09
- -0 04:25:09.0
- -0 04:25:09.01
- -0 04:25:09.013
- -0 04:25:09.0129
- -0 04:25:09.01293
- -0 04:25:09.012930
- -6:49
- -6:49
- -6:49
- -6:49:27
- -6:49:27
- -6:49:27
- -6:49:27.5
- -6:49:27
- -6:49:27.5
- -6:49:27.52
- -6:49:27
- -6:49:27.5
- -6:49:27.52
- -6:49:27.524
- -6:49:27
- -6:49:27.5
- -6:49:27.52
- -6:49:27.524
- -6:49:27.5238
- -6:49:27
- -6:49:27.5
- -6:49:27.52
- -6:49:27.524
- -6:49:27.5238
- -6:49:27.52375
- -6:49:27
- -6:49:27.5
- -6:49:27.52
- -6:49:27.524
- -6:49:27.5238
- -6:49:27.52375
- -6:49:27.523750
- -0 06:49
- -0 06:49
- -0 06:49
- -0 06:49:27
- -0 06:49:27
- -0 06:49:27
- -0 06:49:27.5
- -0 06:49:27
- -0 06:49:27.5
- -0 06:49:27.52
- -0 06:49:27
- -0 06:49:27.5
- -0 06:49:27.52
- -0 06:49:27.524
- -0 06:49:27
- -0 06:49:27.5
- -0 06:49:27.52
- -0 06:49:27.524
- -0 06:49:27.5238
- -0 06:49:27
- -0 06:49:27.5
- -0 06:49:27.52
- -0 06:49:27.524
- -0 06:49:27.5238
- -0 06:49:27.52375
- -0 06:49:27
- -0 06:49:27.5
- -0 06:49:27.52
- -0 06:49:27.524
- -0 06:49:27.5238
- -0 06:49:27.52375
- -0 06:49:27.523750
- -2:57
- -2:57
- -2:57
- -2:57:52
- -2:57:52
- -2:57:52
- -2:57:52.0
- -2:57:52
- -2:57:52.0
- -2:57:52.02
- -2:57:52
- -2:57:52.0
- -2:57:52.02
- -2:57:52.016
- -2:57:52
- -2:57:52.0
- -2:57:52.02
- -2:57:52.016
- -2:57:52.0156
- -2:57:52
- -2:57:52.0
- -2:57:52.02
- -2:57:52.016
- -2:57:52.0156
- -2:57:52.01565
- -2:57:52
- -2:57:52.0
- -2:57:52.02
- -2:57:52.016
- -2:57:52.0156
- -2:57:52.01565
- -2:57:52.015650
- -0 02:57
- -0 02:57
- -0 02:57
- -0 02:57:52
- -0 02:57:52
- -0 02:57:52
- -0 02:57:52.0
- -0 02:57:52
- -0 02:57:52.0
- -0 02:57:52.02
- -0 02:57:52
- -0 02:57:52.0
- -0 02:57:52.02
- -0 02:57:52.016
- -0 02:57:52
- -0 02:57:52.0
- -0 02:57:52.02
- -0 02:57:52.016
- -0 02:57:52.0156
- -0 02:57:52
- -0 02:57:52.0
- -0 02:57:52.02
- -0 02:57:52.016
- -0 02:57:52.0156
- -0 02:57:52.01565
- -0 02:57:52
- -0 02:57:52.0
- -0 02:57:52.02
- -0 02:57:52.016
- -0 02:57:52.0156
- -0 02:57:52.01565
- -0 02:57:52.015650
- *****
- -16:45
- -16:45
- -16:45
- -16:45:44
- -16:45:44
- -16:45:44
- -16:45:44
- -16:45:44.9
- -16:45:44.9
- -16:45:44
- -16:45:44.9
- -16:45:44.87
- -16:45:44.87
- -16:45:44
- -16:45:44.9
- -16:45:44.87
- -16:45:44.865
- -16:45:44.865
- -16:45:44
- -16:45:44.9
- -16:45:44.87
- -16:45:44.865
- -16:45:44.8653
- -16:45:44.8653
- -16:45:44
- -16:45:44.9
- -16:45:44.87
- -16:45:44.865
- -16:45:44.8653
- -16:45:44.86529
- -16:45:44.86529
- -0 16:45
- -0 16:45
- -0 16:45
- -0 16:45:44
- -0 16:45:44
- -0 16:45:44
- -0 16:45:44.9
- -0 16:45:44
- -0 16:45:44.9
- -0 16:45:44.87
- -0 16:45:44
- -0 16:45:44.9
- -0 16:45:44.87
- -0 16:45:44.865
- -0 16:45:44
- -0 16:45:44.9
- -0 16:45:44.87
- -0 16:45:44.865
- -0 16:45:44.8653
- -0 16:45:44
- -0 16:45:44.9
- -0 16:45:44.87
- -0 16:45:44.865
- -0 16:45:44.8653
- -0 16:45:44.86529
- -0 16:45:44
- -0 16:45:44.9
- -0 16:45:44.87
- -0 16:45:44.865
- -0 16:45:44.8653
- -0 16:45:44.86529
- -0 16:45:44.865290
- *****
- -21:30
- -21:30
- -21:30
- -21:30:57
- -21:30:57
- -21:30:57
- -21:30:57
- -21:30:57.8
- -21:30:57.8
- -21:30:57
- -21:30:57.8
- -21:30:57.82
- -21:30:57.82
- -21:30:57
- -21:30:57.8
- -21:30:57.82
- -21:30:57.820
- -21:30:57.820
- -21:30:57
- -21:30:57.8
- -21:30:57.82
- -21:30:57.820
- -21:30:57.8205
- -21:30:57.8205
- -21:30:57
- -21:30:57.8
- -21:30:57.82
- -21:30:57.820
- -21:30:57.8205
- -21:30:57.82047
- -21:30:57.82047
- -0 21:30
- -0 21:30
- -0 21:30
- -0 21:30:57
- -0 21:30:57
- -0 21:30:57
- -0 21:30:57.8
- -0 21:30:57
- -0 21:30:57.8
- -0 21:30:57.82
- -0 21:30:57
- -0 21:30:57.8
- -0 21:30:57.82
- -0 21:30:57.820
- -0 21:30:57
- -0 21:30:57.8
- -0 21:30:57.82
- -0 21:30:57.820
- -0 21:30:57.8205
- -0 21:30:57
- -0 21:30:57.8
- -0 21:30:57.82
- -0 21:30:57.820
- -0 21:30:57.8205
- -0 21:30:57.82047
- -0 21:30:57
- -0 21:30:57.8
- -0 21:30:57.82
- -0 21:30:57.820
- -0 21:30:57.8205
- -0 21:30:57.82047
- -0 21:30:57.820470
- -4:25
- -4:25
- -4:25
- -4:25:09
- -4:25:09
- -4:25:09
- -4:25:09.2
- -4:25:09
- -4:25:09.2
- -4:25:09.15
- -4:25:09
- -4:25:09.2
- -4:25:09.15
- -4:25:09.154
- -4:25:09
- -4:25:09.2
- -4:25:09.15
- -4:25:09.154
- -4:25:09.1539
- -4:25:09
- -4:25:09.2
- -4:25:09.15
- -4:25:09.154
- -4:25:09.1539
- -4:25:09.15395
- -4:25:09
- -4:25:09.2
- -4:25:09.15
- -4:25:09.154
- -4:25:09.1539
- -4:25:09.15395
- -4:25:09.153950
- -0 04:25
- -0 04:25
- -0 04:25
- -0 04:25:09
- -0 04:25:09
- -0 04:25:09
- -0 04:25:09.2
- -0 04:25:09
- -0 04:25:09.2
- -0 04:25:09.15
- -0 04:25:09
- -0 04:25:09.2
- -0 04:25:09.15
- -0 04:25:09.154
- -0 04:25:09
- -0 04:25:09.2
- -0 04:25:09.15
- -0 04:25:09.154
- -0 04:25:09.1539
- -0 04:25:09
- -0 04:25:09.2
- -0 04:25:09.15
- -0 04:25:09.154
- -0 04:25:09.1539
- -0 04:25:09.15395
- -0 04:25:09
- -0 04:25:09.2
- -0 04:25:09.15
- -0 04:25:09.154
- -0 04:25:09.1539
- -0 04:25:09.15395
- -0 04:25:09.153950
- -6:49
- -6:49
- -6:49
- -6:49:27
- -6:49:27
- -6:49:27
- -6:49:27.1
- -6:49:27
- -6:49:27.1
- -6:49:27.11
- -6:49:27
- -6:49:27.1
- -6:49:27.11
- -6:49:27.105
- -6:49:27
- -6:49:27.1
- -6:49:27.11
- -6:49:27.105
- -6:49:27.1053
- -6:49:27
- -6:49:27.1
- -6:49:27.11
- -6:49:27.105
- -6:49:27.1053
- -6:49:27.10533
- -6:49:27
- -6:49:27.1
- -6:49:27.11
- -6:49:27.105
- -6:49:27.1053
- -6:49:27.10533
- -6:49:27.105330
- -0 06:49
- -0 06:49
- -0 06:49
- -0 06:49:27
- -0 06:49:27
- -0 06:49:27
- -0 06:49:27.1
- -0 06:49:27
- -0 06:49:27.1
- -0 06:49:27.11
- -0 06:49:27
- -0 06:49:27.1
- -0 06:49:27.11
- -0 06:49:27.105
- -0 06:49:27
- -0 06:49:27.1
- -0 06:49:27.11
- -0 06:49:27.105
- -0 06:49:27.1053
- -0 06:49:27
- -0 06:49:27.1
- -0 06:49:27.11
- -0 06:49:27.105
- -0 06:49:27.1053
- -0 06:49:27.10533
- -0 06:49:27
- -0 06:49:27.1
- -0 06:49:27.11
- -0 06:49:27.105
- -0 06:49:27.1053
- -0 06:49:27.10533
- -0 06:49:27.105330
- -2:57
- -2:57
- -2:57
- -2:57:52
- -2:57:52
- -2:57:52
- -2:57:52.5
- -2:57:52
- -2:57:52.5
- -2:57:52.48
- -2:57:52
- -2:57:52.5
- -2:57:52.48
- -2:57:52.482
- -2:57:52
- -2:57:52.5
- -2:57:52.48
- -2:57:52.482
- -2:57:52.4823
- -2:57:52
- -2:57:52.5
- -2:57:52.48
- -2:57:52.482
- -2:57:52.4823
- -2:57:52.48229
- -2:57:52
- -2:57:52.5
- -2:57:52.48
- -2:57:52.482
- -2:57:52.4823
- -2:57:52.48229
- -2:57:52.482290
- -0 02:57
- -0 02:57
- -0 02:57
- -0 02:57:52
- -0 02:57:52
- -0 02:57:52
- -0 02:57:52.5
- -0 02:57:52
- -0 02:57:52.5
- -0 02:57:52.48
- -0 02:57:52
- -0 02:57:52.5
- -0 02:57:52.48
- -0 02:57:52.482
- -0 02:57:52
- -0 02:57:52.5
- -0 02:57:52.48
- -0 02:57:52.482
- -0 02:57:52.4823
- -0 02:57:52
- -0 02:57:52.5
- -0 02:57:52.48
- -0 02:57:52.482
- -0 02:57:52.4823
- -0 02:57:52.48229
- -0 02:57:52
- -0 02:57:52.5
- -0 02:57:52.48
- -0 02:57:52.482
- -0 02:57:52.4823
- -0 02:57:52.48229
- -0 02:57:52.482290
- *****
- -16:45
- -16:45
- -16:45
- -16:45:44
- -16:45:44
- -16:45:44
- -16:45:44
- -16:45:44.7
- -16:45:44.7
- -16:45:44
- -16:45:44.7
- -16:45:44.66
- -16:45:44.66
- -16:45:44
- -16:45:44.7
- -16:45:44.66
- -16:45:44.658
- -16:45:44.658
- -16:45:44
- -16:45:44.7
- -16:45:44.66
- -16:45:44.658
- -16:45:44.6583
- -16:45:44.6583
- -16:45:44
- -16:45:44.7
- -16:45:44.66
- -16:45:44.658
- -16:45:44.6583
- -16:45:44.65827
- -16:45:44.65827
- -0 16:45
- -0 16:45
- -0 16:45
- -0 16:45:44
- -0 16:45:44
- -0 16:45:44
- -0 16:45:44.7
- -0 16:45:44
- -0 16:45:44.7
- -0 16:45:44.66
- -0 16:45:44
- -0 16:45:44.7
- -0 16:45:44.66
- -0 16:45:44.658
- -0 16:45:44
- -0 16:45:44.7
- -0 16:45:44.66
- -0 16:45:44.658
- -0 16:45:44.6583
- -0 16:45:44
- -0 16:45:44.7
- -0 16:45:44.66
- -0 16:45:44.658
- -0 16:45:44.6583
- -0 16:45:44.65827
- -0 16:45:44
- -0 16:45:44.7
- -0 16:45:44.66
- -0 16:45:44.658
- -0 16:45:44.6583
- -0 16:45:44.65827
- -0 16:45:44.658270
- *****
- -21:30
- -21:30
- -21:30
- -21:30:57
- -21:30:57
- -21:30:57
- -21:30:57
- -21:30:57.6
- -21:30:57.6
- -21:30:57
- -21:30:57.6
- -21:30:57.58
- -21:30:57.58
- -21:30:57
- -21:30:57.6
- -21:30:57.58
- -21:30:57.582
- -21:30:57.582
- -21:30:57
- -21:30:57.6
- -21:30:57.58
- -21:30:57.582
- -21:30:57.5822
- -21:30:57.5822
- -21:30:57
- -21:30:57.6
- -21:30:57.58
- -21:30:57.582
- -21:30:57.5822
- -21:30:57.58219
- -21:30:57.58219
- -0 21:30
- -0 21:30
- -0 21:30
- -0 21:30:57
- -0 21:30:57
- -0 21:30:57
- -0 21:30:57.6
- -0 21:30:57
- -0 21:30:57.6
- -0 21:30:57.58
- -0 21:30:57
- -0 21:30:57.6
- -0 21:30:57.58
- -0 21:30:57.582
- -0 21:30:57
- -0 21:30:57.6
- -0 21:30:57.58
- -0 21:30:57.582
- -0 21:30:57.5822
- -0 21:30:57
- -0 21:30:57.6
- -0 21:30:57.58
- -0 21:30:57.582
- -0 21:30:57.5822
- -0 21:30:57.58219
- -0 21:30:57
- -0 21:30:57.6
- -0 21:30:57.58
- -0 21:30:57.582
- -0 21:30:57.5822
- -0 21:30:57.58219
- -0 21:30:57.582190
- *****
- -22:30
- -22:30
- -22:30
- -22:30:04
- -22:30:04
- -22:30:04
- -22:30:04
- -22:30:04.2
- -22:30:04.2
- -22:30:04
- -22:30:04.2
- -22:30:04.18
- -22:30:04.18
- -22:30:04
- -22:30:04.2
- -22:30:04.18
- -22:30:04.183
- -22:30:04.183
- -22:30:04
- -22:30:04.2
- -22:30:04.18
- -22:30:04.183
- -22:30:04.1835
- -22:30:04.1835
- -22:30:04
- -22:30:04.2
- -22:30:04.18
- -22:30:04.183
- -22:30:04.1835
- -22:30:04.18347
- -22:30:04.18347
- -0 22:30
- -0 22:30
- -0 22:30
- -0 22:30:04
- -0 22:30:04
- -0 22:30:04
- -0 22:30:04.2
- -0 22:30:04
- -0 22:30:04.2
- -0 22:30:04.18
- -0 22:30:04
- -0 22:30:04.2
- -0 22:30:04.18
- -0 22:30:04.183
- -0 22:30:04
- -0 22:30:04.2
- -0 22:30:04.18
- -0 22:30:04.183
- -0 22:30:04.1835
- -0 22:30:04
- -0 22:30:04.2
- -0 22:30:04.18
- -0 22:30:04.183
- -0 22:30:04.1835
- -0 22:30:04.18347
- -0 22:30:04
- -0 22:30:04.2
- -0 22:30:04.18
- -0 22:30:04.183
- -0 22:30:04.1835
- -0 22:30:04.18347
- -0 22:30:04.183470
- -1:56
- -1:56
- -1:56
- -1:56:51
- -1:56:51
- -1:56:51
- -1:56:51.6
- -1:56:51
- -1:56:51.6
- -1:56:51.59
- -1:56:51
- -1:56:51.6
- -1:56:51.59
- -1:56:51.593
- -1:56:51
- -1:56:51.6
- -1:56:51.59
- -1:56:51.593
- -1:56:51.5932
- -1:56:51
- -1:56:51.6
- -1:56:51.59
- -1:56:51.593
- -1:56:51.5932
- -1:56:51.59319
- -1:56:51
- -1:56:51.6
- -1:56:51.59
- -1:56:51.593
- -1:56:51.5932
- -1:56:51.59319
- -1:56:51.593190
- -0 01:56
- -0 01:56
- -0 01:56
- -0 01:56:51
- -0 01:56:51
- -0 01:56:51
- -0 01:56:51.6
- -0 01:56:51
- -0 01:56:51.6
- -0 01:56:51.59
- -0 01:56:51
- -0 01:56:51.6
- -0 01:56:51.59
- -0 01:56:51.593
- -0 01:56:51
- -0 01:56:51.6
- -0 01:56:51.59
- -0 01:56:51.593
- -0 01:56:51.5932
- -0 01:56:51
- -0 01:56:51.6
- -0 01:56:51.59
- -0 01:56:51.593
- -0 01:56:51.5932
- -0 01:56:51.59319
- -0 01:56:51
- -0 01:56:51.6
- -0 01:56:51.59
- -0 01:56:51.593
- -0 01:56:51.5932
- -0 01:56:51.59319
- -0 01:56:51.593190
- *****
- -24:00
- -24:00
- -24:00
- -24:00:00
- -24:00:00
- -24:00:00
- -24:00:00
- -24:00:00.0
- -24:00:00.0
- -24:00:00
- -24:00:00.0
- -24:00:00.00
- -24:00:00.00
- -24:00:00
- -24:00:00.0
- -24:00:00.00
- -24:00:00.000
- -24:00:00.000
- -24:00:00
- -24:00:00.0
- -24:00:00.00
- -24:00:00.000
- -24:00:00.0000
- -24:00:00.0000
- -24:00:00
- -24:00:00.0
- -24:00:00.00
- -24:00:00.000
- -24:00:00.0000
- -24:00:00.00000
- -24:00:00.00000
- -1 00:00
- -1 00:00
- -1 00:00
- -1 00:00:00
- -1 00:00:00
- -1 00:00:00
- -1 00:00:00.0
- -1 00:00:00
- -1 00:00:00.0
- -1 00:00:00.00
- -1 00:00:00
- -1 00:00:00.0
- -1 00:00:00.00
- -1 00:00:00.000
- -1 00:00:00
- -1 00:00:00.0
- -1 00:00:00.00
- -1 00:00:00.000
- -1 00:00:00.0000
- -1 00:00:00
- -1 00:00:00.0
- -1 00:00:00.00
- -1 00:00:00.000
- -1 00:00:00.0000
- -1 00:00:00.00000
- -1 00:00:00
- -1 00:00:00.0
- -1 00:00:00.00
- -1 00:00:00.000
- -1 00:00:00.0000
- -1 00:00:00.00000
- -1 00:00:00.000000
- *****
- -28:50
- -28:50
- -28:50
- -28:50:38
- -28:50:38
- -28:50:38
- -28:50:38
- -28:50:38.1
- -28:50:38.1
- -28:50:38
- -28:50:38.1
- -28:50:38.12
- -28:50:38.12
- -28:50:38
- -28:50:38.1
- -28:50:38.12
- -28:50:38.123
- -28:50:38.123
- -28:50:38
- -28:50:38.1
- -28:50:38.12
- -28:50:38.123
- -28:50:38.1230
- -28:50:38.1230
- -28:50:38
- -28:50:38.1
- -28:50:38.12
- -28:50:38.123
- -28:50:38.1230
- -28:50:38.12301
- -28:50:38.12301
- -1 04:50
- -1 04:50
- -1 04:50
- -1 04:50:38
- -1 04:50:38
- -1 04:50:38
- -1 04:50:38.1
- -1 04:50:38
- -1 04:50:38.1
- -1 04:50:38.12
- -1 04:50:38
- -1 04:50:38.1
- -1 04:50:38.12
- -1 04:50:38.123
- -1 04:50:38
- -1 04:50:38.1
- -1 04:50:38.12
- -1 04:50:38.123
- -1 04:50:38.1230
- -1 04:50:38
- -1 04:50:38.1
- -1 04:50:38.12
- -1 04:50:38.123
- -1 04:50:38.1230
- -1 04:50:38.12301
- -1 04:50:38
- -1 04:50:38.1
- -1 04:50:38.12
- -1 04:50:38.123
- -1 04:50:38.1230
- -1 04:50:38.12301
- -1 04:50:38.123010
- *****
- -36:31
- -36:31
- -36:31
- -36:31:35
- -36:31:35
- -36:31:35
- -36:31:35
- -36:31:35.2
- -36:31:35.2
- -36:31:35
- -36:31:35.2
- -36:31:35.23
- -36:31:35.23
- -36:31:35
- -36:31:35.2
- -36:31:35.23
- -36:31:35.235
- -36:31:35.235
- -36:31:35
- -36:31:35.2
- -36:31:35.23
- -36:31:35.235
- -36:31:35.2345
- -36:31:35.2345
- -36:31:35
- -36:31:35.2
- -36:31:35.23
- -36:31:35.235
- -36:31:35.2345
- -36:31:35.23453
- -36:31:35.23453
- -1 12:31
- -1 12:31
- -1 12:31
- -1 12:31:35
- -1 12:31:35
- -1 12:31:35
- -1 12:31:35.2
- -1 12:31:35
- -1 12:31:35.2
- -1 12:31:35.23
- -1 12:31:35
- -1 12:31:35.2
- -1 12:31:35.23
- -1 12:31:35.235
- -1 12:31:35
- -1 12:31:35.2
- -1 12:31:35.23
- -1 12:31:35.235
- -1 12:31:35.2345
- -1 12:31:35
- -1 12:31:35.2
- -1 12:31:35.23
- -1 12:31:35.235
- -1 12:31:35.2345
- -1 12:31:35.23453
- -1 12:31:35
- -1 12:31:35.2
- -1 12:31:35.23
- -1 12:31:35.235
- -1 12:31:35.2345
- -1 12:31:35.23453
- -1 12:31:35.234530
- *****
- -36:47
- -36:47
- -36:47
- -36:47:53
- -36:47:53
- -36:47:53
- -36:47:53
- -36:47:53.3
- -36:47:53.3
- -36:47:53
- -36:47:53.3
- -36:47:53.35
- -36:47:53.35
- -36:47:53
- -36:47:53.3
- -36:47:53.35
- -36:47:53.345
- -36:47:53.345
- -36:47:53
- -36:47:53.3
- -36:47:53.35
- -36:47:53.345
- -36:47:53.3451
- -36:47:53.3451
- -36:47:53
- -36:47:53.3
- -36:47:53.35
- -36:47:53.345
- -36:47:53.3451
- -36:47:53.34505
- -36:47:53.34505
- -1 12:47
- -1 12:47
- -1 12:47
- -1 12:47:53
- -1 12:47:53
- -1 12:47:53
- -1 12:47:53.3
- -1 12:47:53
- -1 12:47:53.3
- -1 12:47:53.35
- -1 12:47:53
- -1 12:47:53.3
- -1 12:47:53.35
- -1 12:47:53.345
- -1 12:47:53
- -1 12:47:53.3
- -1 12:47:53.35
- -1 12:47:53.345
- -1 12:47:53.3451
- -1 12:47:53
- -1 12:47:53.3
- -1 12:47:53.35
- -1 12:47:53.345
- -1 12:47:53.3451
- -1 12:47:53.34505
- -1 12:47:53
- -1 12:47:53.3
- -1 12:47:53.35
- -1 12:47:53.345
- -1 12:47:53.3451
- -1 12:47:53.34505
- -1 12:47:53.345050
- *****
- -25:26
- -25:26
- -25:26
- -25:26:00
- -25:26:00
- -25:26:00
- -25:26:00
- -25:26:00.5
- -25:26:00.5
- -25:26:00
- -25:26:00.5
- -25:26:00.46
- -25:26:00.46
- -25:26:00
- -25:26:00.5
- -25:26:00.46
- -25:26:00.456
- -25:26:00.456
- -25:26:00
- -25:26:00.5
- -25:26:00.46
- -25:26:00.456
- -25:26:00.4561
- -25:26:00.4561
- -25:26:00
- -25:26:00.5
- -25:26:00.46
- -25:26:00.456
- -25:26:00.4561
- -25:26:00.45615
- -25:26:00.45615
- -1 01:26
- -1 01:26
- -1 01:26
- -1 01:26:00
- -1 01:26:00
- -1 01:26:00
- -1 01:26:00.5
- -1 01:26:00
- -1 01:26:00.5
- -1 01:26:00.46
- -1 01:26:00
- -1 01:26:00.5
- -1 01:26:00.46
- -1 01:26:00.456
- -1 01:26:00
- -1 01:26:00.5
- -1 01:26:00.46
- -1 01:26:00.456
- -1 01:26:00.4561
- -1 01:26:00
- -1 01:26:00.5
- -1 01:26:00.46
- -1 01:26:00.456
- -1 01:26:00.4561
- -1 01:26:00.45615
- -1 01:26:00
- -1 01:26:00.5
- -1 01:26:00.46
- -1 01:26:00.456
- -1 01:26:00.4561
- -1 01:26:00.45615
- -1 01:26:00.456150
- *****
- -44:58
- -44:58
- -44:58
- -44:58:11
- -44:58:11
- -44:58:11
- -44:58:11
- -44:58:11.6
- -44:58:11.6
- -44:58:11
- -44:58:11.6
- -44:58:11.57
- -44:58:11.57
- -44:58:11
- -44:58:11.6
- -44:58:11.57
- -44:58:11.567
- -44:58:11.567
- -44:58:11
- -44:58:11.6
- -44:58:11.57
- -44:58:11.567
- -44:58:11.5668
- -44:58:11.5668
- -44:58:11
- -44:58:11.6
- -44:58:11.57
- -44:58:11.567
- -44:58:11.5668
- -44:58:11.56677
- -44:58:11.56677
- -1 20:58
- -1 20:58
- -1 20:58
- -1 20:58:11
- -1 20:58:11
- -1 20:58:11
- -1 20:58:11.6
- -1 20:58:11
- -1 20:58:11.6
- -1 20:58:11.57
- -1 20:58:11
- -1 20:58:11.6
- -1 20:58:11.57
- -1 20:58:11.567
- -1 20:58:11
- -1 20:58:11.6
- -1 20:58:11.57
- -1 20:58:11.567
- -1 20:58:11.5668
- -1 20:58:11
- -1 20:58:11.6
- -1 20:58:11.57
- -1 20:58:11.567
- -1 20:58:11.5668
- -1 20:58:11.56677
- -1 20:58:11
- -1 20:58:11.6
- -1 20:58:11.57
- -1 20:58:11.567
- -1 20:58:11.5668
- -1 20:58:11.56677
- -1 20:58:11.566770
- *****
- -31:36
- -31:36
- -31:36
- -31:36:05
- -31:36:05
- -31:36:05
- -31:36:05
- -31:36:05.2
- -31:36:05.2
- -31:36:05
- -31:36:05.2
- -31:36:05.19
- -31:36:05.19
- -31:36:05
- -31:36:05.2
- -31:36:05.19
- -31:36:05.190
- -31:36:05.190
- -31:36:05
- -31:36:05.2
- -31:36:05.19
- -31:36:05.190
- -31:36:05.1896
- -31:36:05.1896
- -31:36:05
- -31:36:05.2
- -31:36:05.19
- -31:36:05.190
- -31:36:05.1896
- -31:36:05.18964
- -31:36:05.18964
- -1 07:36
- -1 07:36
- -1 07:36
- -1 07:36:05
- -1 07:36:05
- -1 07:36:05
- -1 07:36:05.2
- -1 07:36:05
- -1 07:36:05.2
- -1 07:36:05.19
- -1 07:36:05
- -1 07:36:05.2
- -1 07:36:05.19
- -1 07:36:05.190
- -1 07:36:05
- -1 07:36:05.2
- -1 07:36:05.19
- -1 07:36:05.190
- -1 07:36:05.1896
- -1 07:36:05
- -1 07:36:05.2
- -1 07:36:05.19
- -1 07:36:05.190
- -1 07:36:05.1896
- -1 07:36:05.18964
- -1 07:36:05
- -1 07:36:05.2
- -1 07:36:05.19
- -1 07:36:05.190
- -1 07:36:05.1896
- -1 07:36:05.18964
- -1 07:36:05.189640
- *****
- -39:43
- -39:43
- -39:43
- -39:43:49
- -39:43:49
- -39:43:49
- -39:43:49
- -39:43:49.8
- -39:43:49.8
- -39:43:49
- -39:43:49.8
- -39:43:49.83
- -39:43:49.83
- -39:43:49
- -39:43:49.8
- -39:43:49.83
- -39:43:49.831
- -39:43:49.831
- -39:43:49
- -39:43:49.8
- -39:43:49.83
- -39:43:49.831
- -39:43:49.8313
- -39:43:49.8313
- -39:43:49
- -39:43:49.8
- -39:43:49.83
- -39:43:49.831
- -39:43:49.8313
- -39:43:49.83132
- -39:43:49.83132
- -1 15:43
- -1 15:43
- -1 15:43
- -1 15:43:49
- -1 15:43:49
- -1 15:43:49
- -1 15:43:49.8
- -1 15:43:49
- -1 15:43:49.8
- -1 15:43:49.83
- -1 15:43:49
- -1 15:43:49.8
- -1 15:43:49.83
- -1 15:43:49.831
- -1 15:43:49
- -1 15:43:49.8
- -1 15:43:49.83
- -1 15:43:49.831
- -1 15:43:49.8313
- -1 15:43:49
- -1 15:43:49.8
- -1 15:43:49.83
- -1 15:43:49.831
- -1 15:43:49.8313
- -1 15:43:49.83132
- -1 15:43:49
- -1 15:43:49.8
- -1 15:43:49.83
- -1 15:43:49.831
- -1 15:43:49.8313
- -1 15:43:49.83132
- -1 15:43:49.831320
- *****
- -28:25
- -28:25
- -28:25
- -28:25:09
- -28:25:09
- -28:25:09
- -28:25:09
- -28:25:09.0
- -28:25:09.0
- -28:25:09
- -28:25:09.0
- -28:25:09.01
- -28:25:09.01
- -28:25:09
- -28:25:09.0
- -28:25:09.01
- -28:25:09.013
- -28:25:09.013
- -28:25:09
- -28:25:09.0
- -28:25:09.01
- -28:25:09.013
- -28:25:09.0129
- -28:25:09.0129
- -28:25:09
- -28:25:09.0
- -28:25:09.01
- -28:25:09.013
- -28:25:09.0129
- -28:25:09.01293
- -28:25:09.01293
- -1 04:25
- -1 04:25
- -1 04:25
- -1 04:25:09
- -1 04:25:09
- -1 04:25:09
- -1 04:25:09.0
- -1 04:25:09
- -1 04:25:09.0
- -1 04:25:09.01
- -1 04:25:09
- -1 04:25:09.0
- -1 04:25:09.01
- -1 04:25:09.013
- -1 04:25:09
- -1 04:25:09.0
- -1 04:25:09.01
- -1 04:25:09.013
- -1 04:25:09.0129
- -1 04:25:09
- -1 04:25:09.0
- -1 04:25:09.01
- -1 04:25:09.013
- -1 04:25:09.0129
- -1 04:25:09.01293
- -1 04:25:09
- -1 04:25:09.0
- -1 04:25:09.01
- -1 04:25:09.013
- -1 04:25:09.0129
- -1 04:25:09.01293
- -1 04:25:09.012930
- *****
- -30:49
- -30:49
- -30:49
- -30:49:27
- -30:49:27
- -30:49:27
- -30:49:27
- -30:49:27.5
- -30:49:27.5
- -30:49:27
- -30:49:27.5
- -30:49:27.52
- -30:49:27.52
- -30:49:27
- -30:49:27.5
- -30:49:27.52
- -30:49:27.524
- -30:49:27.524
- -30:49:27
- -30:49:27.5
- -30:49:27.52
- -30:49:27.524
- -30:49:27.5237
- -30:49:27.5237
- -30:49:27
- -30:49:27.5
- -30:49:27.52
- -30:49:27.524
- -30:49:27.5237
- -30:49:27.52375
- -30:49:27.52375
- -1 06:49
- -1 06:49
- -1 06:49
- -1 06:49:27
- -1 06:49:27
- -1 06:49:27
- -1 06:49:27.5
- -1 06:49:27
- -1 06:49:27.5
- -1 06:49:27.52
- -1 06:49:27
- -1 06:49:27.5
- -1 06:49:27.52
- -1 06:49:27.524
- -1 06:49:27
- -1 06:49:27.5
- -1 06:49:27.52
- -1 06:49:27.524
- -1 06:49:27.5237
- -1 06:49:27
- -1 06:49:27.5
- -1 06:49:27.52
- -1 06:49:27.524
- -1 06:49:27.5237
- -1 06:49:27.52375
- -1 06:49:27
- -1 06:49:27.5
- -1 06:49:27.52
- -1 06:49:27.524
- -1 06:49:27.5237
- -1 06:49:27.52375
- -1 06:49:27.523750
- *****
- -26:57
- -26:57
- -26:57
- -26:57:52
- -26:57:52
- -26:57:52
- -26:57:52
- -26:57:52.0
- -26:57:52.0
- -26:57:52
- -26:57:52.0
- -26:57:52.02
- -26:57:52.02
- -26:57:52
- -26:57:52.0
- -26:57:52.02
- -26:57:52.016
- -26:57:52.016
- -26:57:52
- -26:57:52.0
- -26:57:52.02
- -26:57:52.016
- -26:57:52.0157
- -26:57:52.0157
- -26:57:52
- -26:57:52.0
- -26:57:52.02
- -26:57:52.016
- -26:57:52.0157
- -26:57:52.01565
- -26:57:52.01565
- -1 02:57
- -1 02:57
- -1 02:57
- -1 02:57:52
- -1 02:57:52
- -1 02:57:52
- -1 02:57:52.0
- -1 02:57:52
- -1 02:57:52.0
- -1 02:57:52.02
- -1 02:57:52
- -1 02:57:52.0
- -1 02:57:52.02
- -1 02:57:52.016
- -1 02:57:52
- -1 02:57:52.0
- -1 02:57:52.02
- -1 02:57:52.016
- -1 02:57:52.0157
- -1 02:57:52
- -1 02:57:52.0
- -1 02:57:52.02
- -1 02:57:52.016
- -1 02:57:52.0157
- -1 02:57:52.01565
- -1 02:57:52
- -1 02:57:52.0
- -1 02:57:52.02
- -1 02:57:52.016
- -1 02:57:52.0157
- -1 02:57:52.01565
- -1 02:57:52.015650
- *****
- -40:45
- -40:45
- -40:45
- -40:45:44
- -40:45:44
- -40:45:44
- -40:45:44
- -40:45:44.9
- -40:45:44.9
- -40:45:44
- -40:45:44.9
- -40:45:44.87
- -40:45:44.87
- -40:45:44
- -40:45:44.9
- -40:45:44.87
- -40:45:44.865
- -40:45:44.865
- -40:45:44
- -40:45:44.9
- -40:45:44.87
- -40:45:44.865
- -40:45:44.8653
- -40:45:44.8653
- -40:45:44
- -40:45:44.9
- -40:45:44.87
- -40:45:44.865
- -40:45:44.8653
- -40:45:44.86529
- -40:45:44.86529
- -1 16:45
- -1 16:45
- -1 16:45
- -1 16:45:44
- -1 16:45:44
- -1 16:45:44
- -1 16:45:44.9
- -1 16:45:44
- -1 16:45:44.9
- -1 16:45:44.87
- -1 16:45:44
- -1 16:45:44.9
- -1 16:45:44.87
- -1 16:45:44.865
- -1 16:45:44
- -1 16:45:44.9
- -1 16:45:44.87
- -1 16:45:44.865
- -1 16:45:44.8653
- -1 16:45:44
- -1 16:45:44.9
- -1 16:45:44.87
- -1 16:45:44.865
- -1 16:45:44.8653
- -1 16:45:44.86529
- -1 16:45:44
- -1 16:45:44.9
- -1 16:45:44.87
- -1 16:45:44.865
- -1 16:45:44.8653
- -1 16:45:44.86529
- -1 16:45:44.865290
- *****
- -45:30
- -45:30
- -45:30
- -45:30:57
- -45:30:57
- -45:30:57
- -45:30:57
- -45:30:57.8
- -45:30:57.8
- -45:30:57
- -45:30:57.8
- -45:30:57.82
- -45:30:57.82
- -45:30:57
- -45:30:57.8
- -45:30:57.82
- -45:30:57.820
- -45:30:57.820
- -45:30:57
- -45:30:57.8
- -45:30:57.82
- -45:30:57.820
- -45:30:57.8205
- -45:30:57.8205
- -45:30:57
- -45:30:57.8
- -45:30:57.82
- -45:30:57.820
- -45:30:57.8205
- -45:30:57.82047
- -45:30:57.82047
- -1 21:30
- -1 21:30
- -1 21:30
- -1 21:30:57
- -1 21:30:57
- -1 21:30:57
- -1 21:30:57.8
- -1 21:30:57
- -1 21:30:57.8
- -1 21:30:57.82
- -1 21:30:57
- -1 21:30:57.8
- -1 21:30:57.82
- -1 21:30:57.820
- -1 21:30:57
- -1 21:30:57.8
- -1 21:30:57.82
- -1 21:30:57.820
- -1 21:30:57.8205
- -1 21:30:57
- -1 21:30:57.8
- -1 21:30:57.82
- -1 21:30:57.820
- -1 21:30:57.8205
- -1 21:30:57.82047
- -1 21:30:57
- -1 21:30:57.8
- -1 21:30:57.82
- -1 21:30:57.820
- -1 21:30:57.8205
- -1 21:30:57.82047
- -1 21:30:57.820470
- *****
- -28:25
- -28:25
- -28:25
- -28:25:09
- -28:25:09
- -28:25:09
- -28:25:09
- -28:25:09.2
- -28:25:09.2
- -28:25:09
- -28:25:09.2
- -28:25:09.15
- -28:25:09.15
- -28:25:09
- -28:25:09.2
- -28:25:09.15
- -28:25:09.154
- -28:25:09.154
- -28:25:09
- -28:25:09.2
- -28:25:09.15
- -28:25:09.154
- -28:25:09.1540
- -28:25:09.1540
- -28:25:09
- -28:25:09.2
- -28:25:09.15
- -28:25:09.154
- -28:25:09.1540
- -28:25:09.15395
- -28:25:09.15395
- -1 04:25
- -1 04:25
- -1 04:25
- -1 04:25:09
- -1 04:25:09
- -1 04:25:09
- -1 04:25:09.2
- -1 04:25:09
- -1 04:25:09.2
- -1 04:25:09.15
- -1 04:25:09
- -1 04:25:09.2
- -1 04:25:09.15
- -1 04:25:09.154
- -1 04:25:09
- -1 04:25:09.2
- -1 04:25:09.15
- -1 04:25:09.154
- -1 04:25:09.1540
- -1 04:25:09
- -1 04:25:09.2
- -1 04:25:09.15
- -1 04:25:09.154
- -1 04:25:09.1540
- -1 04:25:09.15395
- -1 04:25:09
- -1 04:25:09.2
- -1 04:25:09.15
- -1 04:25:09.154
- -1 04:25:09.1540
- -1 04:25:09.15395
- -1 04:25:09.153950
- *****
- -30:49
- -30:49
- -30:49
- -30:49:27
- -30:49:27
- -30:49:27
- -30:49:27
- -30:49:27.1
- -30:49:27.1
- -30:49:27
- -30:49:27.1
- -30:49:27.11
- -30:49:27.11
- -30:49:27
- -30:49:27.1
- -30:49:27.11
- -30:49:27.105
- -30:49:27.105
- -30:49:27
- -30:49:27.1
- -30:49:27.11
- -30:49:27.105
- -30:49:27.1053
- -30:49:27.1053
- -30:49:27
- -30:49:27.1
- -30:49:27.11
- -30:49:27.105
- -30:49:27.1053
- -30:49:27.10533
- -30:49:27.10533
- -1 06:49
- -1 06:49
- -1 06:49
- -1 06:49:27
- -1 06:49:27
- -1 06:49:27
- -1 06:49:27.1
- -1 06:49:27
- -1 06:49:27.1
- -1 06:49:27.11
- -1 06:49:27
- -1 06:49:27.1
- -1 06:49:27.11
- -1 06:49:27.105
- -1 06:49:27
- -1 06:49:27.1
- -1 06:49:27.11
- -1 06:49:27.105
- -1 06:49:27.1053
- -1 06:49:27
- -1 06:49:27.1
- -1 06:49:27.11
- -1 06:49:27.105
- -1 06:49:27.1053
- -1 06:49:27.10533
- -1 06:49:27
- -1 06:49:27.1
- -1 06:49:27.11
- -1 06:49:27.105
- -1 06:49:27.1053
- -1 06:49:27.10533
- -1 06:49:27.105330
- *****
- -26:57
- -26:57
- -26:57
- -26:57:52
- -26:57:52
- -26:57:52
- -26:57:52
- -26:57:52.5
- -26:57:52.5
- -26:57:52
- -26:57:52.5
- -26:57:52.48
- -26:57:52.48
- -26:57:52
- -26:57:52.5
- -26:57:52.48
- -26:57:52.482
- -26:57:52.482
- -26:57:52
- -26:57:52.5
- -26:57:52.48
- -26:57:52.482
- -26:57:52.4823
- -26:57:52.4823
- -26:57:52
- -26:57:52.5
- -26:57:52.48
- -26:57:52.482
- -26:57:52.4823
- -26:57:52.48229
- -26:57:52.48229
- -1 02:57
- -1 02:57
- -1 02:57
- -1 02:57:52
- -1 02:57:52
- -1 02:57:52
- -1 02:57:52.5
- -1 02:57:52
- -1 02:57:52.5
- -1 02:57:52.48
- -1 02:57:52
- -1 02:57:52.5
- -1 02:57:52.48
- -1 02:57:52.482
- -1 02:57:52
- -1 02:57:52.5
- -1 02:57:52.48
- -1 02:57:52.482
- -1 02:57:52.4823
- -1 02:57:52
- -1 02:57:52.5
- -1 02:57:52.48
- -1 02:57:52.482
- -1 02:57:52.4823
- -1 02:57:52.48229
- -1 02:57:52
- -1 02:57:52.5
- -1 02:57:52.48
- -1 02:57:52.482
- -1 02:57:52.4823
- -1 02:57:52.48229
- -1 02:57:52.482290
- *****
- -40:45
- -40:45
- -40:45
- -40:45:44
- -40:45:44
- -40:45:44
- -40:45:44
- -40:45:44.7
- -40:45:44.7
- -40:45:44
- -40:45:44.7
- -40:45:44.66
- -40:45:44.66
- -40:45:44
- -40:45:44.7
- -40:45:44.66
- -40:45:44.658
- -40:45:44.658
- -40:45:44
- -40:45:44.7
- -40:45:44.66
- -40:45:44.658
- -40:45:44.6583
- -40:45:44.6583
- -40:45:44
- -40:45:44.7
- -40:45:44.66
- -40:45:44.658
- -40:45:44.6583
- -40:45:44.65827
- -40:45:44.65827
- -1 16:45
- -1 16:45
- -1 16:45
- -1 16:45:44
- -1 16:45:44
- -1 16:45:44
- -1 16:45:44.7
- -1 16:45:44
- -1 16:45:44.7
- -1 16:45:44.66
- -1 16:45:44
- -1 16:45:44.7
- -1 16:45:44.66
- -1 16:45:44.658
- -1 16:45:44
- -1 16:45:44.7
- -1 16:45:44.66
- -1 16:45:44.658
- -1 16:45:44.6583
- -1 16:45:44
- -1 16:45:44.7
- -1 16:45:44.66
- -1 16:45:44.658
- -1 16:45:44.6583
- -1 16:45:44.65827
- -1 16:45:44
- -1 16:45:44.7
- -1 16:45:44.66
- -1 16:45:44.658
- -1 16:45:44.6583
- -1 16:45:44.65827
- -1 16:45:44.658270
- *****
- -45:30
- -45:30
- -45:30
- -45:30:57
- -45:30:57
- -45:30:57
- -45:30:57
- -45:30:57.6
- -45:30:57.6
- -45:30:57
- -45:30:57.6
- -45:30:57.58
- -45:30:57.58
- -45:30:57
- -45:30:57.6
- -45:30:57.58
- -45:30:57.582
- -45:30:57.582
- -45:30:57
- -45:30:57.6
- -45:30:57.58
- -45:30:57.582
- -45:30:57.5822
- -45:30:57.5822
- -45:30:57
- -45:30:57.6
- -45:30:57.58
- -45:30:57.582
- -45:30:57.5822
- -45:30:57.58219
- -45:30:57.58219
- -1 21:30
- -1 21:30
- -1 21:30
- -1 21:30:57
- -1 21:30:57
- -1 21:30:57
- -1 21:30:57.6
- -1 21:30:57
- -1 21:30:57.6
- -1 21:30:57.58
- -1 21:30:57
- -1 21:30:57.6
- -1 21:30:57.58
- -1 21:30:57.582
- -1 21:30:57
- -1 21:30:57.6
- -1 21:30:57.58
- -1 21:30:57.582
- -1 21:30:57.5822
- -1 21:30:57
- -1 21:30:57.6
- -1 21:30:57.58
- -1 21:30:57.582
- -1 21:30:57.5822
- -1 21:30:57.58219
- -1 21:30:57
- -1 21:30:57.6
- -1 21:30:57.58
- -1 21:30:57.582
- -1 21:30:57.5822
- -1 21:30:57.58219
- -1 21:30:57.582190
- *****
- -46:30
- -46:30
- -46:30
- -46:30:04
- -46:30:04
- -46:30:04
- -46:30:04
- -46:30:04.2
- -46:30:04.2
- -46:30:04
- -46:30:04.2
- -46:30:04.18
- -46:30:04.18
- -46:30:04
- -46:30:04.2
- -46:30:04.18
- -46:30:04.183
- -46:30:04.183
- -46:30:04
- -46:30:04.2
- -46:30:04.18
- -46:30:04.183
- -46:30:04.1835
- -46:30:04.1835
- -46:30:04
- -46:30:04.2
- -46:30:04.18
- -46:30:04.183
- -46:30:04.1835
- -46:30:04.18347
- -46:30:04.18347
- -1 22:30
- -1 22:30
- -1 22:30
- -1 22:30:04
- -1 22:30:04
- -1 22:30:04
- -1 22:30:04.2
- -1 22:30:04
- -1 22:30:04.2
- -1 22:30:04.18
- -1 22:30:04
- -1 22:30:04.2
- -1 22:30:04.18
- -1 22:30:04.183
- -1 22:30:04
- -1 22:30:04.2
- -1 22:30:04.18
- -1 22:30:04.183
- -1 22:30:04.1835
- -1 22:30:04
- -1 22:30:04.2
- -1 22:30:04.18
- -1 22:30:04.183
- -1 22:30:04.1835
- -1 22:30:04.18347
- -1 22:30:04
- -1 22:30:04.2
- -1 22:30:04.18
- -1 22:30:04.183
- -1 22:30:04.1835
- -1 22:30:04.18347
- -1 22:30:04.183470
- *****
- -25:56
- -25:56
- -25:56
- -25:56:51
- -25:56:51
- -25:56:51
- -25:56:51
- -25:56:51.6
- -25:56:51.6
- -25:56:51
- -25:56:51.6
- -25:56:51.59
- -25:56:51.59
- -25:56:51
- -25:56:51.6
- -25:56:51.59
- -25:56:51.593
- -25:56:51.593
- -25:56:51
- -25:56:51.6
- -25:56:51.59
- -25:56:51.593
- -25:56:51.5932
- -25:56:51.5932
- -25:56:51
- -25:56:51.6
- -25:56:51.59
- -25:56:51.593
- -25:56:51.5932
- -25:56:51.59319
- -25:56:51.59319
- -1 01:56
- -1 01:56
- -1 01:56
- -1 01:56:51
- -1 01:56:51
- -1 01:56:51
- -1 01:56:51.6
- -1 01:56:51
- -1 01:56:51.6
- -1 01:56:51.59
- -1 01:56:51
- -1 01:56:51.6
- -1 01:56:51.59
- -1 01:56:51.593
- -1 01:56:51
- -1 01:56:51.6
- -1 01:56:51.59
- -1 01:56:51.593
- -1 01:56:51.5932
- -1 01:56:51
- -1 01:56:51.6
- -1 01:56:51.59
- -1 01:56:51.593
- -1 01:56:51.5932
- -1 01:56:51.59319
- -1 01:56:51
- -1 01:56:51.6
- -1 01:56:51.59
- -1 01:56:51.593
- -1 01:56:51.5932
- -1 01:56:51.59319
- -1 01:56:51.593190
- *****
- -48:00
- -48:00
- -48:00
- -48:00:00
- -48:00:00
- -48:00:00
- -48:00:00
- -48:00:00.0
- -48:00:00.0
- -48:00:00
- -48:00:00.0
- -48:00:00.00
- -48:00:00.00
- -48:00:00
- -48:00:00.0
- -48:00:00.00
- -48:00:00.000
- -48:00:00.000
- -48:00:00
- -48:00:00.0
- -48:00:00.00
- -48:00:00.000
- -48:00:00.0000
- -48:00:00.0000
- -48:00:00
- -48:00:00.0
- -48:00:00.00
- -48:00:00.000
- -48:00:00.0000
- -48:00:00.00000
- -48:00:00.00000
- -2 00:00
- -2 00:00
- -2 00:00
- -2 00:00:00
- -2 00:00:00
- -2 00:00:00
- -2 00:00:00.0
- -2 00:00:00
- -2 00:00:00.0
- -2 00:00:00.00
- -2 00:00:00
- -2 00:00:00.0
- -2 00:00:00.00
- -2 00:00:00.000
- -2 00:00:00
- -2 00:00:00.0
- -2 00:00:00.00
- -2 00:00:00.000
- -2 00:00:00.0000
- -2 00:00:00
- -2 00:00:00.0
- -2 00:00:00.00
- -2 00:00:00.000
- -2 00:00:00.0000
- -2 00:00:00.00000
- -2 00:00:00
- -2 00:00:00.0
- -2 00:00:00.00
- -2 00:00:00.000
- -2 00:00:00.0000
- -2 00:00:00.00000
- -2 00:00:00.000000
- *****
- -52:50
- -52:50
- -52:50
- -52:50:38
- -52:50:38
- -52:50:38
- -52:50:38
- -52:50:38.1
- -52:50:38.1
- -52:50:38
- -52:50:38.1
- -52:50:38.12
- -52:50:38.12
- -52:50:38
- -52:50:38.1
- -52:50:38.12
- -52:50:38.123
- -52:50:38.123
- -52:50:38
- -52:50:38.1
- -52:50:38.12
- -52:50:38.123
- -52:50:38.1230
- -52:50:38.1230
- -52:50:38
- -52:50:38.1
- -52:50:38.12
- -52:50:38.123
- -52:50:38.1230
- -52:50:38.12301
- -52:50:38.12301
- -2 04:50
- -2 04:50
- -2 04:50
- -2 04:50:38
- -2 04:50:38
- -2 04:50:38
- -2 04:50:38.1
- -2 04:50:38
- -2 04:50:38.1
- -2 04:50:38.12
- -2 04:50:38
- -2 04:50:38.1
- -2 04:50:38.12
- -2 04:50:38.123
- -2 04:50:38
- -2 04:50:38.1
- -2 04:50:38.12
- -2 04:50:38.123
- -2 04:50:38.1230
- -2 04:50:38
- -2 04:50:38.1
- -2 04:50:38.12
- -2 04:50:38.123
- -2 04:50:38.1230
- -2 04:50:38.12301
- -2 04:50:38
- -2 04:50:38.1
- -2 04:50:38.12
- -2 04:50:38.123
- -2 04:50:38.1230
- -2 04:50:38.12301
- -2 04:50:38.123010
- *****
- -60:31
- -60:31
- -60:31
- -60:31:35
- -60:31:35
- -60:31:35
- -60:31:35
- -60:31:35.2
- -60:31:35.2
- -60:31:35
- -60:31:35.2
- -60:31:35.23
- -60:31:35.23
- -60:31:35
- -60:31:35.2
- -60:31:35.23
- -60:31:35.235
- -60:31:35.235
- -60:31:35
- -60:31:35.2
- -60:31:35.23
- -60:31:35.235
- -60:31:35.2345
- -60:31:35.2345
- -60:31:35
- -60:31:35.2
- -60:31:35.23
- -60:31:35.235
- -60:31:35.2345
- -60:31:35.23453
- -60:31:35.23453
- -2 12:31
- -2 12:31
- -2 12:31
- -2 12:31:35
- -2 12:31:35
- -2 12:31:35
- -2 12:31:35.2
- -2 12:31:35
- -2 12:31:35.2
- -2 12:31:35.23
- -2 12:31:35
- -2 12:31:35.2
- -2 12:31:35.23
- -2 12:31:35.235
- -2 12:31:35
- -2 12:31:35.2
- -2 12:31:35.23
- -2 12:31:35.235
- -2 12:31:35.2345
- -2 12:31:35
- -2 12:31:35.2
- -2 12:31:35.23
- -2 12:31:35.235
- -2 12:31:35.2345
- -2 12:31:35.23453
- -2 12:31:35
- -2 12:31:35.2
- -2 12:31:35.23
- -2 12:31:35.235
- -2 12:31:35.2345
- -2 12:31:35.23453
- -2 12:31:35.234530
- *****
- -60:47
- -60:47
- -60:47
- -60:47:53
- -60:47:53
- -60:47:53
- -60:47:53
- -60:47:53.3
- -60:47:53.3
- -60:47:53
- -60:47:53.3
- -60:47:53.35
- -60:47:53.35
- -60:47:53
- -60:47:53.3
- -60:47:53.35
- -60:47:53.345
- -60:47:53.345
- -60:47:53
- -60:47:53.3
- -60:47:53.35
- -60:47:53.345
- -60:47:53.3451
- -60:47:53.3451
- -60:47:53
- -60:47:53.3
- -60:47:53.35
- -60:47:53.345
- -60:47:53.3451
- -60:47:53.34505
- -60:47:53.34505
- -2 12:47
- -2 12:47
- -2 12:47
- -2 12:47:53
- -2 12:47:53
- -2 12:47:53
- -2 12:47:53.3
- -2 12:47:53
- -2 12:47:53.3
- -2 12:47:53.35
- -2 12:47:53
- -2 12:47:53.3
- -2 12:47:53.35
- -2 12:47:53.345
- -2 12:47:53
- -2 12:47:53.3
- -2 12:47:53.35
- -2 12:47:53.345
- -2 12:47:53.3451
- -2 12:47:53
- -2 12:47:53.3
- -2 12:47:53.35
- -2 12:47:53.345
- -2 12:47:53.3451
- -2 12:47:53.34505
- -2 12:47:53
- -2 12:47:53.3
- -2 12:47:53.35
- -2 12:47:53.345
- -2 12:47:53.3451
- -2 12:47:53.34505
- -2 12:47:53.345050
- *****
- -49:26
- -49:26
- -49:26
- -49:26:00
- -49:26:00
- -49:26:00
- -49:26:00
- -49:26:00.5
- -49:26:00.5
- -49:26:00
- -49:26:00.5
- -49:26:00.46
- -49:26:00.46
- -49:26:00
- -49:26:00.5
- -49:26:00.46
- -49:26:00.456
- -49:26:00.456
- -49:26:00
- -49:26:00.5
- -49:26:00.46
- -49:26:00.456
- -49:26:00.4562
- -49:26:00.4562
- -49:26:00
- -49:26:00.5
- -49:26:00.46
- -49:26:00.456
- -49:26:00.4562
- -49:26:00.45615
- -49:26:00.45615
- -2 01:26
- -2 01:26
- -2 01:26
- -2 01:26:00
- -2 01:26:00
- -2 01:26:00
- -2 01:26:00.5
- -2 01:26:00
- -2 01:26:00.5
- -2 01:26:00.46
- -2 01:26:00
- -2 01:26:00.5
- -2 01:26:00.46
- -2 01:26:00.456
- -2 01:26:00
- -2 01:26:00.5
- -2 01:26:00.46
- -2 01:26:00.456
- -2 01:26:00.4562
- -2 01:26:00
- -2 01:26:00.5
- -2 01:26:00.46
- -2 01:26:00.456
- -2 01:26:00.4562
- -2 01:26:00.45615
- -2 01:26:00
- -2 01:26:00.5
- -2 01:26:00.46
- -2 01:26:00.456
- -2 01:26:00.4562
- -2 01:26:00.45615
- -2 01:26:00.456150
- *****
- -68:58
- -68:58
- -68:58
- -68:58:11
- -68:58:11
- -68:58:11
- -68:58:11
- -68:58:11.6
- -68:58:11.6
- -68:58:11
- -68:58:11.6
- -68:58:11.57
- -68:58:11.57
- -68:58:11
- -68:58:11.6
- -68:58:11.57
- -68:58:11.567
- -68:58:11.567
- -68:58:11
- -68:58:11.6
- -68:58:11.57
- -68:58:11.567
- -68:58:11.5668
- -68:58:11.5668
- -68:58:11
- -68:58:11.6
- -68:58:11.57
- -68:58:11.567
- -68:58:11.5668
- -68:58:11.56677
- -68:58:11.56677
- -2 20:58
- -2 20:58
- -2 20:58
- -2 20:58:11
- -2 20:58:11
- -2 20:58:11
- -2 20:58:11.6
- -2 20:58:11
- -2 20:58:11.6
- -2 20:58:11.57
- -2 20:58:11
- -2 20:58:11.6
- -2 20:58:11.57
- -2 20:58:11.567
- -2 20:58:11
- -2 20:58:11.6
- -2 20:58:11.57
- -2 20:58:11.567
- -2 20:58:11.5668
- -2 20:58:11
- -2 20:58:11.6
- -2 20:58:11.57
- -2 20:58:11.567
- -2 20:58:11.5668
- -2 20:58:11.56677
- -2 20:58:11
- -2 20:58:11.6
- -2 20:58:11.57
- -2 20:58:11.567
- -2 20:58:11.5668
- -2 20:58:11.56677
- -2 20:58:11.566770
- *****
- -55:36
- -55:36
- -55:36
- -55:36:05
- -55:36:05
- -55:36:05
- -55:36:05
- -55:36:05.2
- -55:36:05.2
- -55:36:05
- -55:36:05.2
- -55:36:05.19
- -55:36:05.19
- -55:36:05
- -55:36:05.2
- -55:36:05.19
- -55:36:05.190
- -55:36:05.190
- -55:36:05
- -55:36:05.2
- -55:36:05.19
- -55:36:05.190
- -55:36:05.1896
- -55:36:05.1896
- -55:36:05
- -55:36:05.2
- -55:36:05.19
- -55:36:05.190
- -55:36:05.1896
- -55:36:05.18964
- -55:36:05.18964
- -2 07:36
- -2 07:36
- -2 07:36
- -2 07:36:05
- -2 07:36:05
- -2 07:36:05
- -2 07:36:05.2
- -2 07:36:05
- -2 07:36:05.2
- -2 07:36:05.19
- -2 07:36:05
- -2 07:36:05.2
- -2 07:36:05.19
- -2 07:36:05.190
- -2 07:36:05
- -2 07:36:05.2
- -2 07:36:05.19
- -2 07:36:05.190
- -2 07:36:05.1896
- -2 07:36:05
- -2 07:36:05.2
- -2 07:36:05.19
- -2 07:36:05.190
- -2 07:36:05.1896
- -2 07:36:05.18964
- -2 07:36:05
- -2 07:36:05.2
- -2 07:36:05.19
- -2 07:36:05.190
- -2 07:36:05.1896
- -2 07:36:05.18964
- -2 07:36:05.189640
- *****
- -63:43
- -63:43
- -63:43
- -63:43:49
- -63:43:49
- -63:43:49
- -63:43:49
- -63:43:49.8
- -63:43:49.8
- -63:43:49
- -63:43:49.8
- -63:43:49.83
- -63:43:49.83
- -63:43:49
- -63:43:49.8
- -63:43:49.83
- -63:43:49.831
- -63:43:49.831
- -63:43:49
- -63:43:49.8
- -63:43:49.83
- -63:43:49.831
- -63:43:49.8313
- -63:43:49.8313
- -63:43:49
- -63:43:49.8
- -63:43:49.83
- -63:43:49.831
- -63:43:49.8313
- -63:43:49.83132
- -63:43:49.83132
- -2 15:43
- -2 15:43
- -2 15:43
- -2 15:43:49
- -2 15:43:49
- -2 15:43:49
- -2 15:43:49.8
- -2 15:43:49
- -2 15:43:49.8
- -2 15:43:49.83
- -2 15:43:49
- -2 15:43:49.8
- -2 15:43:49.83
- -2 15:43:49.831
- -2 15:43:49
- -2 15:43:49.8
- -2 15:43:49.83
- -2 15:43:49.831
- -2 15:43:49.8313
- -2 15:43:49
- -2 15:43:49.8
- -2 15:43:49.83
- -2 15:43:49.831
- -2 15:43:49.8313
- -2 15:43:49.83132
- -2 15:43:49
- -2 15:43:49.8
- -2 15:43:49.83
- -2 15:43:49.831
- -2 15:43:49.8313
- -2 15:43:49.83132
- -2 15:43:49.831320
- *****
- -52:25
- -52:25
- -52:25
- -52:25:09
- -52:25:09
- -52:25:09
- -52:25:09
- -52:25:09.0
- -52:25:09.0
- -52:25:09
- -52:25:09.0
- -52:25:09.01
- -52:25:09.01
- -52:25:09
- -52:25:09.0
- -52:25:09.01
- -52:25:09.013
- -52:25:09.013
- -52:25:09
- -52:25:09.0
- -52:25:09.01
- -52:25:09.013
- -52:25:09.0129
- -52:25:09.0129
- -52:25:09
- -52:25:09.0
- -52:25:09.01
- -52:25:09.013
- -52:25:09.0129
- -52:25:09.01293
- -52:25:09.01293
- -2 04:25
- -2 04:25
- -2 04:25
- -2 04:25:09
- -2 04:25:09
- -2 04:25:09
- -2 04:25:09.0
- -2 04:25:09
- -2 04:25:09.0
- -2 04:25:09.01
- -2 04:25:09
- -2 04:25:09.0
- -2 04:25:09.01
- -2 04:25:09.013
- -2 04:25:09
- -2 04:25:09.0
- -2 04:25:09.01
- -2 04:25:09.013
- -2 04:25:09.0129
- -2 04:25:09
- -2 04:25:09.0
- -2 04:25:09.01
- -2 04:25:09.013
- -2 04:25:09.0129
- -2 04:25:09.01293
- -2 04:25:09
- -2 04:25:09.0
- -2 04:25:09.01
- -2 04:25:09.013
- -2 04:25:09.0129
- -2 04:25:09.01293
- -2 04:25:09.012930
- *****
- -54:49
- -54:49
- -54:49
- -54:49:27
- -54:49:27
- -54:49:27
- -54:49:27
- -54:49:27.5
- -54:49:27.5
- -54:49:27
- -54:49:27.5
- -54:49:27.52
- -54:49:27.52
- -54:49:27
- -54:49:27.5
- -54:49:27.52
- -54:49:27.524
- -54:49:27.524
- -54:49:27
- -54:49:27.5
- -54:49:27.52
- -54:49:27.524
- -54:49:27.5237
- -54:49:27.5237
- -54:49:27
- -54:49:27.5
- -54:49:27.52
- -54:49:27.524
- -54:49:27.5237
- -54:49:27.52375
- -54:49:27.52375
- -2 06:49
- -2 06:49
- -2 06:49
- -2 06:49:27
- -2 06:49:27
- -2 06:49:27
- -2 06:49:27.5
- -2 06:49:27
- -2 06:49:27.5
- -2 06:49:27.52
- -2 06:49:27
- -2 06:49:27.5
- -2 06:49:27.52
- -2 06:49:27.524
- -2 06:49:27
- -2 06:49:27.5
- -2 06:49:27.52
- -2 06:49:27.524
- -2 06:49:27.5237
- -2 06:49:27
- -2 06:49:27.5
- -2 06:49:27.52
- -2 06:49:27.524
- -2 06:49:27.5237
- -2 06:49:27.52375
- -2 06:49:27
- -2 06:49:27.5
- -2 06:49:27.52
- -2 06:49:27.524
- -2 06:49:27.5237
- -2 06:49:27.52375
- -2 06:49:27.523750
- *****
- -50:57
- -50:57
- -50:57
- -50:57:52
- -50:57:52
- -50:57:52
- -50:57:52
- -50:57:52.0
- -50:57:52.0
- -50:57:52
- -50:57:52.0
- -50:57:52.02
- -50:57:52.02
- -50:57:52
- -50:57:52.0
- -50:57:52.02
- -50:57:52.016
- -50:57:52.016
- -50:57:52
- -50:57:52.0
- -50:57:52.02
- -50:57:52.016
- -50:57:52.0156
- -50:57:52.0156
- -50:57:52
- -50:57:52.0
- -50:57:52.02
- -50:57:52.016
- -50:57:52.0156
- -50:57:52.01565
- -50:57:52.01565
- -2 02:57
- -2 02:57
- -2 02:57
- -2 02:57:52
- -2 02:57:52
- -2 02:57:52
- -2 02:57:52.0
- -2 02:57:52
- -2 02:57:52.0
- -2 02:57:52.02
- -2 02:57:52
- -2 02:57:52.0
- -2 02:57:52.02
- -2 02:57:52.016
- -2 02:57:52
- -2 02:57:52.0
- -2 02:57:52.02
- -2 02:57:52.016
- -2 02:57:52.0156
- -2 02:57:52
- -2 02:57:52.0
- -2 02:57:52.02
- -2 02:57:52.016
- -2 02:57:52.0156
- -2 02:57:52.01565
- -2 02:57:52
- -2 02:57:52.0
- -2 02:57:52.02
- -2 02:57:52.016
- -2 02:57:52.0156
- -2 02:57:52.01565
- -2 02:57:52.015650
- *****
- -64:45
- -64:45
- -64:45
- -64:45:44
- -64:45:44
- -64:45:44
- -64:45:44
- -64:45:44.9
- -64:45:44.9
- -64:45:44
- -64:45:44.9
- -64:45:44.87
- -64:45:44.87
- -64:45:44
- -64:45:44.9
- -64:45:44.87
- -64:45:44.865
- -64:45:44.865
- -64:45:44
- -64:45:44.9
- -64:45:44.87
- -64:45:44.865
- -64:45:44.8653
- -64:45:44.8653
- -64:45:44
- -64:45:44.9
- -64:45:44.87
- -64:45:44.865
- -64:45:44.8653
- -64:45:44.86529
- -64:45:44.86529
- -2 16:45
- -2 16:45
- -2 16:45
- -2 16:45:44
- -2 16:45:44
- -2 16:45:44
- -2 16:45:44.9
- -2 16:45:44
- -2 16:45:44.9
- -2 16:45:44.87
- -2 16:45:44
- -2 16:45:44.9
- -2 16:45:44.87
- -2 16:45:44.865
- -2 16:45:44
- -2 16:45:44.9
- -2 16:45:44.87
- -2 16:45:44.865
- -2 16:45:44.8653
- -2 16:45:44
- -2 16:45:44.9
- -2 16:45:44.87
- -2 16:45:44.865
- -2 16:45:44.8653
- -2 16:45:44.86529
- -2 16:45:44
- -2 16:45:44.9
- -2 16:45:44.87
- -2 16:45:44.865
- -2 16:45:44.8653
- -2 16:45:44.86529
- -2 16:45:44.865290
- *****
- -69:30
- -69:30
- -69:30
- -69:30:57
- -69:30:57
- -69:30:57
- -69:30:57
- -69:30:57.8
- -69:30:57.8
- -69:30:57
- -69:30:57.8
- -69:30:57.82
- -69:30:57.82
- -69:30:57
- -69:30:57.8
- -69:30:57.82
- -69:30:57.820
- -69:30:57.820
- -69:30:57
- -69:30:57.8
- -69:30:57.82
- -69:30:57.820
- -69:30:57.8205
- -69:30:57.8205
- -69:30:57
- -69:30:57.8
- -69:30:57.82
- -69:30:57.820
- -69:30:57.8205
- -69:30:57.82047
- -69:30:57.82047
- -2 21:30
- -2 21:30
- -2 21:30
- -2 21:30:57
- -2 21:30:57
- -2 21:30:57
- -2 21:30:57.8
- -2 21:30:57
- -2 21:30:57.8
- -2 21:30:57.82
- -2 21:30:57
- -2 21:30:57.8
- -2 21:30:57.82
- -2 21:30:57.820
- -2 21:30:57
- -2 21:30:57.8
- -2 21:30:57.82
- -2 21:30:57.820
- -2 21:30:57.8205
- -2 21:30:57
- -2 21:30:57.8
- -2 21:30:57.82
- -2 21:30:57.820
- -2 21:30:57.8205
- -2 21:30:57.82047
- -2 21:30:57
- -2 21:30:57.8
- -2 21:30:57.82
- -2 21:30:57.820
- -2 21:30:57.8205
- -2 21:30:57.82047
- -2 21:30:57.820470
- *****
- -52:25
- -52:25
- -52:25
- -52:25:09
- -52:25:09
- -52:25:09
- -52:25:09
- -52:25:09.2
- -52:25:09.2
- -52:25:09
- -52:25:09.2
- -52:25:09.15
- -52:25:09.15
- -52:25:09
- -52:25:09.2
- -52:25:09.15
- -52:25:09.154
- -52:25:09.154
- -52:25:09
- -52:25:09.2
- -52:25:09.15
- -52:25:09.154
- -52:25:09.1540
- -52:25:09.1540
- -52:25:09
- -52:25:09.2
- -52:25:09.15
- -52:25:09.154
- -52:25:09.1540
- -52:25:09.15395
- -52:25:09.15395
- -2 04:25
- -2 04:25
- -2 04:25
- -2 04:25:09
- -2 04:25:09
- -2 04:25:09
- -2 04:25:09.2
- -2 04:25:09
- -2 04:25:09.2
- -2 04:25:09.15
- -2 04:25:09
- -2 04:25:09.2
- -2 04:25:09.15
- -2 04:25:09.154
- -2 04:25:09
- -2 04:25:09.2
- -2 04:25:09.15
- -2 04:25:09.154
- -2 04:25:09.1540
- -2 04:25:09
- -2 04:25:09.2
- -2 04:25:09.15
- -2 04:25:09.154
- -2 04:25:09.1540
- -2 04:25:09.15395
- -2 04:25:09
- -2 04:25:09.2
- -2 04:25:09.15
- -2 04:25:09.154
- -2 04:25:09.1540
- -2 04:25:09.15395
- -2 04:25:09.153950
- *****
- -54:49
- -54:49
- -54:49
- -54:49:27
- -54:49:27
- -54:49:27
- -54:49:27
- -54:49:27.1
- -54:49:27.1
- -54:49:27
- -54:49:27.1
- -54:49:27.11
- -54:49:27.11
- -54:49:27
- -54:49:27.1
- -54:49:27.11
- -54:49:27.105
- -54:49:27.105
- -54:49:27
- -54:49:27.1
- -54:49:27.11
- -54:49:27.105
- -54:49:27.1053
- -54:49:27.1053
- -54:49:27
- -54:49:27.1
- -54:49:27.11
- -54:49:27.105
- -54:49:27.1053
- -54:49:27.10533
- -54:49:27.10533
- -2 06:49
- -2 06:49
- -2 06:49
- -2 06:49:27
- -2 06:49:27
- -2 06:49:27
- -2 06:49:27.1
- -2 06:49:27
- -2 06:49:27.1
- -2 06:49:27.11
- -2 06:49:27
- -2 06:49:27.1
- -2 06:49:27.11
- -2 06:49:27.105
- -2 06:49:27
- -2 06:49:27.1
- -2 06:49:27.11
- -2 06:49:27.105
- -2 06:49:27.1053
- -2 06:49:27
- -2 06:49:27.1
- -2 06:49:27.11
- -2 06:49:27.105
- -2 06:49:27.1053
- -2 06:49:27.10533
- -2 06:49:27
- -2 06:49:27.1
- -2 06:49:27.11
- -2 06:49:27.105
- -2 06:49:27.1053
- -2 06:49:27.10533
- -2 06:49:27.105330
- *****
- -50:57
- -50:57
- -50:57
- -50:57:52
- -50:57:52
- -50:57:52
- -50:57:52
- -50:57:52.5
- -50:57:52.5
- -50:57:52
- -50:57:52.5
- -50:57:52.48
- -50:57:52.48
- -50:57:52
- -50:57:52.5
- -50:57:52.48
- -50:57:52.482
- -50:57:52.482
- -50:57:52
- -50:57:52.5
- -50:57:52.48
- -50:57:52.482
- -50:57:52.4823
- -50:57:52.4823
- -50:57:52
- -50:57:52.5
- -50:57:52.48
- -50:57:52.482
- -50:57:52.4823
- -50:57:52.48229
- -50:57:52.48229
- -2 02:57
- -2 02:57
- -2 02:57
- -2 02:57:52
- -2 02:57:52
- -2 02:57:52
- -2 02:57:52.5
- -2 02:57:52
- -2 02:57:52.5
- -2 02:57:52.48
- -2 02:57:52
- -2 02:57:52.5
- -2 02:57:52.48
- -2 02:57:52.482
- -2 02:57:52
- -2 02:57:52.5
- -2 02:57:52.48
- -2 02:57:52.482
- -2 02:57:52.4823
- -2 02:57:52
- -2 02:57:52.5
- -2 02:57:52.48
- -2 02:57:52.482
- -2 02:57:52.4823
- -2 02:57:52.48229
- -2 02:57:52
- -2 02:57:52.5
- -2 02:57:52.48
- -2 02:57:52.482
- -2 02:57:52.4823
- -2 02:57:52.48229
- -2 02:57:52.482290
- *****
- -64:45
- -64:45
- -64:45
- -64:45:44
- -64:45:44
- -64:45:44
- -64:45:44
- -64:45:44.7
- -64:45:44.7
- -64:45:44
- -64:45:44.7
- -64:45:44.66
- -64:45:44.66
- -64:45:44
- -64:45:44.7
- -64:45:44.66
- -64:45:44.658
- -64:45:44.658
- -64:45:44
- -64:45:44.7
- -64:45:44.66
- -64:45:44.658
- -64:45:44.6583
- -64:45:44.6583
- -64:45:44
- -64:45:44.7
- -64:45:44.66
- -64:45:44.658
- -64:45:44.6583
- -64:45:44.65827
- -64:45:44.65827
- -2 16:45
- -2 16:45
- -2 16:45
- -2 16:45:44
- -2 16:45:44
- -2 16:45:44
- -2 16:45:44.7
- -2 16:45:44
- -2 16:45:44.7
- -2 16:45:44.66
- -2 16:45:44
- -2 16:45:44.7
- -2 16:45:44.66
- -2 16:45:44.658
- -2 16:45:44
- -2 16:45:44.7
- -2 16:45:44.66
- -2 16:45:44.658
- -2 16:45:44.6583
- -2 16:45:44
- -2 16:45:44.7
- -2 16:45:44.66
- -2 16:45:44.658
- -2 16:45:44.6583
- -2 16:45:44.65827
- -2 16:45:44
- -2 16:45:44.7
- -2 16:45:44.66
- -2 16:45:44.658
- -2 16:45:44.6583
- -2 16:45:44.65827
- -2 16:45:44.658270
- *****
- -69:30
- -69:30
- -69:30
- -69:30:57
- -69:30:57
- -69:30:57
- -69:30:57
- -69:30:57.6
- -69:30:57.6
- -69:30:57
- -69:30:57.6
- -69:30:57.58
- -69:30:57.58
- -69:30:57
- -69:30:57.6
- -69:30:57.58
- -69:30:57.582
- -69:30:57.582
- -69:30:57
- -69:30:57.6
- -69:30:57.58
- -69:30:57.582
- -69:30:57.5822
- -69:30:57.5822
- -69:30:57
- -69:30:57.6
- -69:30:57.58
- -69:30:57.582
- -69:30:57.5822
- -69:30:57.58219
- -69:30:57.58219
- -2 21:30
- -2 21:30
- -2 21:30
- -2 21:30:57
- -2 21:30:57
- -2 21:30:57
- -2 21:30:57.6
- -2 21:30:57
- -2 21:30:57.6
- -2 21:30:57.58
- -2 21:30:57
- -2 21:30:57.6
- -2 21:30:57.58
- -2 21:30:57.582
- -2 21:30:57
- -2 21:30:57.6
- -2 21:30:57.58
- -2 21:30:57.582
- -2 21:30:57.5822
- -2 21:30:57
- -2 21:30:57.6
- -2 21:30:57.58
- -2 21:30:57.582
- -2 21:30:57.5822
- -2 21:30:57.58219
- -2 21:30:57
- -2 21:30:57.6
- -2 21:30:57.58
- -2 21:30:57.582
- -2 21:30:57.5822
- -2 21:30:57.58219
- -2 21:30:57.582190
- *****
- -70:30
- -70:30
- -70:30
- -70:30:04
- -70:30:04
- -70:30:04
- -70:30:04
- -70:30:04.2
- -70:30:04.2
- -70:30:04
- -70:30:04.2
- -70:30:04.18
- -70:30:04.18
- -70:30:04
- -70:30:04.2
- -70:30:04.18
- -70:30:04.183
- -70:30:04.183
- -70:30:04
- -70:30:04.2
- -70:30:04.18
- -70:30:04.183
- -70:30:04.1835
- -70:30:04.1835
- -70:30:04
- -70:30:04.2
- -70:30:04.18
- -70:30:04.183
- -70:30:04.1835
- -70:30:04.18347
- -70:30:04.18347
- -2 22:30
- -2 22:30
- -2 22:30
- -2 22:30:04
- -2 22:30:04
- -2 22:30:04
- -2 22:30:04.2
- -2 22:30:04
- -2 22:30:04.2
- -2 22:30:04.18
- -2 22:30:04
- -2 22:30:04.2
- -2 22:30:04.18
- -2 22:30:04.183
- -2 22:30:04
- -2 22:30:04.2
- -2 22:30:04.18
- -2 22:30:04.183
- -2 22:30:04.1835
- -2 22:30:04
- -2 22:30:04.2
- -2 22:30:04.18
- -2 22:30:04.183
- -2 22:30:04.1835
- -2 22:30:04.18347
- -2 22:30:04
- -2 22:30:04.2
- -2 22:30:04.18
- -2 22:30:04.183
- -2 22:30:04.1835
- -2 22:30:04.18347
- -2 22:30:04.183470
- *****
- -49:56
- -49:56
- -49:56
- -49:56:51
- -49:56:51
- -49:56:51
- -49:56:51
- -49:56:51.6
- -49:56:51.6
- -49:56:51
- -49:56:51.6
- -49:56:51.59
- -49:56:51.59
- -49:56:51
- -49:56:51.6
- -49:56:51.59
- -49:56:51.593
- -49:56:51.593
- -49:56:51
- -49:56:51.6
- -49:56:51.59
- -49:56:51.593
- -49:56:51.5932
- -49:56:51.5932
- -49:56:51
- -49:56:51.6
- -49:56:51.59
- -49:56:51.593
- -49:56:51.5932
- -49:56:51.59319
- -49:56:51.59319
- -2 01:56
- -2 01:56
- -2 01:56
- -2 01:56:51
- -2 01:56:51
- -2 01:56:51
- -2 01:56:51.6
- -2 01:56:51
- -2 01:56:51.6
- -2 01:56:51.59
- -2 01:56:51
- -2 01:56:51.6
- -2 01:56:51.59
- -2 01:56:51.593
- -2 01:56:51
- -2 01:56:51.6
- -2 01:56:51.59
- -2 01:56:51.593
- -2 01:56:51.5932
- -2 01:56:51
- -2 01:56:51.6
- -2 01:56:51.59
- -2 01:56:51.593
- -2 01:56:51.5932
- -2 01:56:51.59319
- -2 01:56:51
- -2 01:56:51.6
- -2 01:56:51.59
- -2 01:56:51.593
- -2 01:56:51.5932
- -2 01:56:51.59319
- -2 01:56:51.593190
- *****
- ******
- *******
- -1296:00
- -1296:00
- -1296:00
- -1296:00
- -1296:00:00
- -1296:00:00
- -1296:00:00
- -1296:00:00
- -1296:00:00
- -1296:00:00
- -1296:00:00
- -1296:00:00
- -1296:00:00.0
- -1296:00:00.0
- -1296:00:00.0
- -1296:00:00.0
- -1296:00:00
- -1296:00:00.0
- -1296:00:00.00
- -1296:00:00.00
- -1296:00:00.00
- -1296:00:00.00
- -1296:00:00
- -1296:00:00.0
- -1296:00:00.00
- -1296:00:00.000
- -1296:00:00.000
- -1296:00:00.000
- -1296:00:00.000
- ********
- -54 00:00
- -54 00:00
- -54 00:00
- -54 00:00:00
- -54 00:00:00
- -54 00:00:00
- -54 00:00:00
- -54 00:00:00.0
- -54 00:00:00.0
- -54 00:00:00
- -54 00:00:00.0
- -54 00:00:00.00
- -54 00:00:00.00
- -54 00:00:00
- -54 00:00:00.0
- -54 00:00:00.00
- -54 00:00:00.000
- -54 00:00:00.000
- -54 00:00:00
- -54 00:00:00.0
- -54 00:00:00.00
- -54 00:00:00.000
- -54 00:00:00.0000
- -54 00:00:00.0000
- -54 00:00:00
- -54 00:00:00.0
- -54 00:00:00.00
- -54 00:00:00.000
- -54 00:00:00.0000
- -54 00:00:00.00000
- -54 00:00:00.00000
- *****
- ******
- *******
- -1300:50
- -1300:50
- -1300:50
- -1300:50
- -1300:50:38
- -1300:50:38
- -1300:50:38
- -1300:50:38
- -1300:50:38
- -1300:50:38
- -1300:50:38
- -1300:50:38
- -1300:50:38.1
- -1300:50:38.1
- -1300:50:38.1
- -1300:50:38.1
- -1300:50:38
- -1300:50:38.1
- -1300:50:38.12
- -1300:50:38.12
- -1300:50:38.12
- -1300:50:38.12
- -1300:50:38
- -1300:50:38.1
- -1300:50:38.12
- -1300:50:38.123
- -1300:50:38.123
- -1300:50:38.123
- -1300:50:38.123
- ********
- -54 04:50
- -54 04:50
- -54 04:50
- -54 04:50:38
- -54 04:50:38
- -54 04:50:38
- -54 04:50:38
- -54 04:50:38.1
- -54 04:50:38.1
- -54 04:50:38
- -54 04:50:38.1
- -54 04:50:38.12
- -54 04:50:38.12
- -54 04:50:38
- -54 04:50:38.1
- -54 04:50:38.12
- -54 04:50:38.123
- -54 04:50:38.123
- -54 04:50:38
- -54 04:50:38.1
- -54 04:50:38.12
- -54 04:50:38.123
- -54 04:50:38.1230
- -54 04:50:38.1230
- -54 04:50:38
- -54 04:50:38.1
- -54 04:50:38.12
- -54 04:50:38.123
- -54 04:50:38.1230
- -54 04:50:38.12301
- -54 04:50:38.12301
- *****
- ******
- *******
- -1308:31
- -1308:31
- -1308:31
- -1308:31
- -1308:31:35
- -1308:31:35
- -1308:31:35
- -1308:31:35
- -1308:31:35
- -1308:31:35
- -1308:31:35
- -1308:31:35
- -1308:31:35.2
- -1308:31:35.2
- -1308:31:35.2
- -1308:31:35.2
- -1308:31:35
- -1308:31:35.2
- -1308:31:35.23
- -1308:31:35.23
- -1308:31:35.23
- -1308:31:35.23
- -1308:31:35
- -1308:31:35.2
- -1308:31:35.23
- -1308:31:35.235
- -1308:31:35.235
- -1308:31:35.235
- -1308:31:35.235
- ********
- -54 12:31
- -54 12:31
- -54 12:31
- -54 12:31:35
- -54 12:31:35
- -54 12:31:35
- -54 12:31:35
- -54 12:31:35.2
- -54 12:31:35.2
- -54 12:31:35
- -54 12:31:35.2
- -54 12:31:35.23
- -54 12:31:35.23
- -54 12:31:35
- -54 12:31:35.2
- -54 12:31:35.23
- -54 12:31:35.235
- -54 12:31:35.235
- -54 12:31:35
- -54 12:31:35.2
- -54 12:31:35.23
- -54 12:31:35.235
- -54 12:31:35.2345
- -54 12:31:35.2345
- -54 12:31:35
- -54 12:31:35.2
- -54 12:31:35.23
- -54 12:31:35.235
- -54 12:31:35.2345
- -54 12:31:35.23453
- -54 12:31:35.23453
- *****
- ******
- *******
- -1308:47
- -1308:47
- -1308:47
- -1308:47
- -1308:47:53
- -1308:47:53
- -1308:47:53
- -1308:47:53
- -1308:47:53
- -1308:47:53
- -1308:47:53
- -1308:47:53
- -1308:47:53.3
- -1308:47:53.3
- -1308:47:53.3
- -1308:47:53.3
- -1308:47:53
- -1308:47:53.3
- -1308:47:53.35
- -1308:47:53.35
- -1308:47:53.35
- -1308:47:53.35
- -1308:47:53
- -1308:47:53.3
- -1308:47:53.35
- -1308:47:53.345
- -1308:47:53.345
- -1308:47:53.345
- -1308:47:53.345
- ********
- -54 12:47
- -54 12:47
- -54 12:47
- -54 12:47:53
- -54 12:47:53
- -54 12:47:53
- -54 12:47:53
- -54 12:47:53.3
- -54 12:47:53.3
- -54 12:47:53
- -54 12:47:53.3
- -54 12:47:53.35
- -54 12:47:53.35
- -54 12:47:53
- -54 12:47:53.3
- -54 12:47:53.35
- -54 12:47:53.345
- -54 12:47:53.345
- -54 12:47:53
- -54 12:47:53.3
- -54 12:47:53.35
- -54 12:47:53.345
- -54 12:47:53.3450
- -54 12:47:53.3450
- -54 12:47:53
- -54 12:47:53.3
- -54 12:47:53.35
- -54 12:47:53.345
- -54 12:47:53.3450
- -54 12:47:53.34505
- -54 12:47:53.34505
- *****
- ******
- *******
- -1297:26
- -1297:26
- -1297:26
- -1297:26
- -1297:26:00
- -1297:26:00
- -1297:26:00
- -1297:26:00
- -1297:26:00
- -1297:26:00
- -1297:26:00
- -1297:26:00
- -1297:26:00.5
- -1297:26:00.5
- -1297:26:00.5
- -1297:26:00.5
- -1297:26:00
- -1297:26:00.5
- -1297:26:00.46
- -1297:26:00.46
- -1297:26:00.46
- -1297:26:00.46
- -1297:26:00
- -1297:26:00.5
- -1297:26:00.46
- -1297:26:00.456
- -1297:26:00.456
- -1297:26:00.456
- -1297:26:00.456
- ********
- -54 01:26
- -54 01:26
- -54 01:26
- -54 01:26:00
- -54 01:26:00
- -54 01:26:00
- -54 01:26:00
- -54 01:26:00.5
- -54 01:26:00.5
- -54 01:26:00
- -54 01:26:00.5
- -54 01:26:00.46
- -54 01:26:00.46
- -54 01:26:00
- -54 01:26:00.5
- -54 01:26:00.46
- -54 01:26:00.456
- -54 01:26:00.456
- -54 01:26:00
- -54 01:26:00.5
- -54 01:26:00.46
- -54 01:26:00.456
- -54 01:26:00.4561
- -54 01:26:00.4561
- -54 01:26:00
- -54 01:26:00.5
- -54 01:26:00.46
- -54 01:26:00.456
- -54 01:26:00.4561
- -54 01:26:00.45615
- -54 01:26:00.45615
- *****
- ******
- *******
- -1316:58
- -1316:58
- -1316:58
- -1316:58
- -1316:58:11
- -1316:58:11
- -1316:58:11
- -1316:58:11
- -1316:58:11
- -1316:58:11
- -1316:58:11
- -1316:58:11
- -1316:58:11.6
- -1316:58:11.6
- -1316:58:11.6
- -1316:58:11.6
- -1316:58:11
- -1316:58:11.6
- -1316:58:11.57
- -1316:58:11.57
- -1316:58:11.57
- -1316:58:11.57
- -1316:58:11
- -1316:58:11.6
- -1316:58:11.57
- -1316:58:11.567
- -1316:58:11.567
- -1316:58:11.567
- -1316:58:11.567
- ********
- -54 20:58
- -54 20:58
- -54 20:58
- -54 20:58:11
- -54 20:58:11
- -54 20:58:11
- -54 20:58:11
- -54 20:58:11.6
- -54 20:58:11.6
- -54 20:58:11
- -54 20:58:11.6
- -54 20:58:11.57
- -54 20:58:11.57
- -54 20:58:11
- -54 20:58:11.6
- -54 20:58:11.57
- -54 20:58:11.567
- -54 20:58:11.567
- -54 20:58:11
- -54 20:58:11.6
- -54 20:58:11.57
- -54 20:58:11.567
- -54 20:58:11.5668
- -54 20:58:11.5668
- -54 20:58:11
- -54 20:58:11.6
- -54 20:58:11.57
- -54 20:58:11.567
- -54 20:58:11.5668
- -54 20:58:11.56677
- -54 20:58:11.56677
- *****
- ******
- *******
- -1303:36
- -1303:36
- -1303:36
- -1303:36
- -1303:36:05
- -1303:36:05
- -1303:36:05
- -1303:36:05
- -1303:36:05
- -1303:36:05
- -1303:36:05
- -1303:36:05
- -1303:36:05.2
- -1303:36:05.2
- -1303:36:05.2
- -1303:36:05.2
- -1303:36:05
- -1303:36:05.2
- -1303:36:05.19
- -1303:36:05.19
- -1303:36:05.19
- -1303:36:05.19
- -1303:36:05
- -1303:36:05.2
- -1303:36:05.19
- -1303:36:05.190
- -1303:36:05.190
- -1303:36:05.190
- -1303:36:05.190
- ********
- -54 07:36
- -54 07:36
- -54 07:36
- -54 07:36:05
- -54 07:36:05
- -54 07:36:05
- -54 07:36:05
- -54 07:36:05.2
- -54 07:36:05.2
- -54 07:36:05
- -54 07:36:05.2
- -54 07:36:05.19
- -54 07:36:05.19
- -54 07:36:05
- -54 07:36:05.2
- -54 07:36:05.19
- -54 07:36:05.190
- -54 07:36:05.190
- -54 07:36:05
- -54 07:36:05.2
- -54 07:36:05.19
- -54 07:36:05.190
- -54 07:36:05.1896
- -54 07:36:05.1896
- -54 07:36:05
- -54 07:36:05.2
- -54 07:36:05.19
- -54 07:36:05.190
- -54 07:36:05.1896
- -54 07:36:05.18964
- -54 07:36:05.18964
- *****
- ******
- *******
- -1311:43
- -1311:43
- -1311:43
- -1311:43
- -1311:43:49
- -1311:43:49
- -1311:43:49
- -1311:43:49
- -1311:43:49
- -1311:43:49
- -1311:43:49
- -1311:43:49
- -1311:43:49.8
- -1311:43:49.8
- -1311:43:49.8
- -1311:43:49.8
- -1311:43:49
- -1311:43:49.8
- -1311:43:49.83
- -1311:43:49.83
- -1311:43:49.83
- -1311:43:49.83
- -1311:43:49
- -1311:43:49.8
- -1311:43:49.83
- -1311:43:49.831
- -1311:43:49.831
- -1311:43:49.831
- -1311:43:49.831
- ********
- -54 15:43
- -54 15:43
- -54 15:43
- -54 15:43:49
- -54 15:43:49
- -54 15:43:49
- -54 15:43:49
- -54 15:43:49.8
- -54 15:43:49.8
- -54 15:43:49
- -54 15:43:49.8
- -54 15:43:49.83
- -54 15:43:49.83
- -54 15:43:49
- -54 15:43:49.8
- -54 15:43:49.83
- -54 15:43:49.831
- -54 15:43:49.831
- -54 15:43:49
- -54 15:43:49.8
- -54 15:43:49.83
- -54 15:43:49.831
- -54 15:43:49.8313
- -54 15:43:49.8313
- -54 15:43:49
- -54 15:43:49.8
- -54 15:43:49.83
- -54 15:43:49.831
- -54 15:43:49.8313
- -54 15:43:49.83132
- -54 15:43:49.83132
- *****
- ******
- *******
- -1300:25
- -1300:25
- -1300:25
- -1300:25
- -1300:25:09
- -1300:25:09
- -1300:25:09
- -1300:25:09
- -1300:25:09
- -1300:25:09
- -1300:25:09
- -1300:25:09
- -1300:25:09.0
- -1300:25:09.0
- -1300:25:09.0
- -1300:25:09.0
- -1300:25:09
- -1300:25:09.0
- -1300:25:09.01
- -1300:25:09.01
- -1300:25:09.01
- -1300:25:09.01
- -1300:25:09
- -1300:25:09.0
- -1300:25:09.01
- -1300:25:09.013
- -1300:25:09.013
- -1300:25:09.013
- -1300:25:09.013
- ********
- -54 04:25
- -54 04:25
- -54 04:25
- -54 04:25:09
- -54 04:25:09
- -54 04:25:09
- -54 04:25:09
- -54 04:25:09.0
- -54 04:25:09.0
- -54 04:25:09
- -54 04:25:09.0
- -54 04:25:09.01
- -54 04:25:09.01
- -54 04:25:09
- -54 04:25:09.0
- -54 04:25:09.01
- -54 04:25:09.013
- -54 04:25:09.013
- -54 04:25:09
- -54 04:25:09.0
- -54 04:25:09.01
- -54 04:25:09.013
- -54 04:25:09.0129
- -54 04:25:09.0129
- -54 04:25:09
- -54 04:25:09.0
- -54 04:25:09.01
- -54 04:25:09.013
- -54 04:25:09.0129
- -54 04:25:09.01293
- -54 04:25:09.01293
- *****
- ******
- *******
- -1302:49
- -1302:49
- -1302:49
- -1302:49
- -1302:49:27
- -1302:49:27
- -1302:49:27
- -1302:49:27
- -1302:49:27
- -1302:49:27
- -1302:49:27
- -1302:49:27
- -1302:49:27.5
- -1302:49:27.5
- -1302:49:27.5
- -1302:49:27.5
- -1302:49:27
- -1302:49:27.5
- -1302:49:27.52
- -1302:49:27.52
- -1302:49:27.52
- -1302:49:27.52
- -1302:49:27
- -1302:49:27.5
- -1302:49:27.52
- -1302:49:27.524
- -1302:49:27.524
- -1302:49:27.524
- -1302:49:27.524
- ********
- -54 06:49
- -54 06:49
- -54 06:49
- -54 06:49:27
- -54 06:49:27
- -54 06:49:27
- -54 06:49:27
- -54 06:49:27.5
- -54 06:49:27.5
- -54 06:49:27
- -54 06:49:27.5
- -54 06:49:27.52
- -54 06:49:27.52
- -54 06:49:27
- -54 06:49:27.5
- -54 06:49:27.52
- -54 06:49:27.524
- -54 06:49:27.524
- -54 06:49:27
- -54 06:49:27.5
- -54 06:49:27.52
- -54 06:49:27.524
- -54 06:49:27.5237
- -54 06:49:27.5237
- -54 06:49:27
- -54 06:49:27.5
- -54 06:49:27.52
- -54 06:49:27.524
- -54 06:49:27.5237
- -54 06:49:27.52375
- -54 06:49:27.52375
- *****
- ******
- *******
- -1298:57
- -1298:57
- -1298:57
- -1298:57
- -1298:57:52
- -1298:57:52
- -1298:57:52
- -1298:57:52
- -1298:57:52
- -1298:57:52
- -1298:57:52
- -1298:57:52
- -1298:57:52.0
- -1298:57:52.0
- -1298:57:52.0
- -1298:57:52.0
- -1298:57:52
- -1298:57:52.0
- -1298:57:52.02
- -1298:57:52.02
- -1298:57:52.02
- -1298:57:52.02
- -1298:57:52
- -1298:57:52.0
- -1298:57:52.02
- -1298:57:52.016
- -1298:57:52.016
- -1298:57:52.016
- -1298:57:52.016
- ********
- -54 02:57
- -54 02:57
- -54 02:57
- -54 02:57:52
- -54 02:57:52
- -54 02:57:52
- -54 02:57:52
- -54 02:57:52.0
- -54 02:57:52.0
- -54 02:57:52
- -54 02:57:52.0
- -54 02:57:52.02
- -54 02:57:52.02
- -54 02:57:52
- -54 02:57:52.0
- -54 02:57:52.02
- -54 02:57:52.016
- -54 02:57:52.016
- -54 02:57:52
- -54 02:57:52.0
- -54 02:57:52.02
- -54 02:57:52.016
- -54 02:57:52.0157
- -54 02:57:52.0157
- -54 02:57:52
- -54 02:57:52.0
- -54 02:57:52.02
- -54 02:57:52.016
- -54 02:57:52.0157
- -54 02:57:52.01565
- -54 02:57:52.01565
- *****
- ******
- *******
- -1312:45
- -1312:45
- -1312:45
- -1312:45
- -1312:45:44
- -1312:45:44
- -1312:45:44
- -1312:45:44
- -1312:45:44
- -1312:45:44
- -1312:45:44
- -1312:45:44
- -1312:45:44.9
- -1312:45:44.9
- -1312:45:44.9
- -1312:45:44.9
- -1312:45:44
- -1312:45:44.9
- -1312:45:44.87
- -1312:45:44.87
- -1312:45:44.87
- -1312:45:44.87
- -1312:45:44
- -1312:45:44.9
- -1312:45:44.87
- -1312:45:44.865
- -1312:45:44.865
- -1312:45:44.865
- -1312:45:44.865
- ********
- -54 16:45
- -54 16:45
- -54 16:45
- -54 16:45:44
- -54 16:45:44
- -54 16:45:44
- -54 16:45:44
- -54 16:45:44.9
- -54 16:45:44.9
- -54 16:45:44
- -54 16:45:44.9
- -54 16:45:44.87
- -54 16:45:44.87
- -54 16:45:44
- -54 16:45:44.9
- -54 16:45:44.87
- -54 16:45:44.865
- -54 16:45:44.865
- -54 16:45:44
- -54 16:45:44.9
- -54 16:45:44.87
- -54 16:45:44.865
- -54 16:45:44.8653
- -54 16:45:44.8653
- -54 16:45:44
- -54 16:45:44.9
- -54 16:45:44.87
- -54 16:45:44.865
- -54 16:45:44.8653
- -54 16:45:44.86529
- -54 16:45:44.86529
- *****
- ******
- *******
- -1317:30
- -1317:30
- -1317:30
- -1317:30
- -1317:30:57
- -1317:30:57
- -1317:30:57
- -1317:30:57
- -1317:30:57
- -1317:30:57
- -1317:30:57
- -1317:30:57
- -1317:30:57.8
- -1317:30:57.8
- -1317:30:57.8
- -1317:30:57.8
- -1317:30:57
- -1317:30:57.8
- -1317:30:57.82
- -1317:30:57.82
- -1317:30:57.82
- -1317:30:57.82
- -1317:30:57
- -1317:30:57.8
- -1317:30:57.82
- -1317:30:57.820
- -1317:30:57.820
- -1317:30:57.820
- -1317:30:57.820
- ********
- -54 21:30
- -54 21:30
- -54 21:30
- -54 21:30:57
- -54 21:30:57
- -54 21:30:57
- -54 21:30:57
- -54 21:30:57.8
- -54 21:30:57.8
- -54 21:30:57
- -54 21:30:57.8
- -54 21:30:57.82
- -54 21:30:57.82
- -54 21:30:57
- -54 21:30:57.8
- -54 21:30:57.82
- -54 21:30:57.820
- -54 21:30:57.820
- -54 21:30:57
- -54 21:30:57.8
- -54 21:30:57.82
- -54 21:30:57.820
- -54 21:30:57.8205
- -54 21:30:57.8205
- -54 21:30:57
- -54 21:30:57.8
- -54 21:30:57.82
- -54 21:30:57.820
- -54 21:30:57.8205
- -54 21:30:57.82047
- -54 21:30:57.82047
- *****
- ******
- *******
- -1300:25
- -1300:25
- -1300:25
- -1300:25
- -1300:25:09
- -1300:25:09
- -1300:25:09
- -1300:25:09
- -1300:25:09
- -1300:25:09
- -1300:25:09
- -1300:25:09
- -1300:25:09.2
- -1300:25:09.2
- -1300:25:09.2
- -1300:25:09.2
- -1300:25:09
- -1300:25:09.2
- -1300:25:09.15
- -1300:25:09.15
- -1300:25:09.15
- -1300:25:09.15
- -1300:25:09
- -1300:25:09.2
- -1300:25:09.15
- -1300:25:09.154
- -1300:25:09.154
- -1300:25:09.154
- -1300:25:09.154
- ********
- -54 04:25
- -54 04:25
- -54 04:25
- -54 04:25:09
- -54 04:25:09
- -54 04:25:09
- -54 04:25:09
- -54 04:25:09.2
- -54 04:25:09.2
- -54 04:25:09
- -54 04:25:09.2
- -54 04:25:09.15
- -54 04:25:09.15
- -54 04:25:09
- -54 04:25:09.2
- -54 04:25:09.15
- -54 04:25:09.154
- -54 04:25:09.154
- -54 04:25:09
- -54 04:25:09.2
- -54 04:25:09.15
- -54 04:25:09.154
- -54 04:25:09.1540
- -54 04:25:09.1540
- -54 04:25:09
- -54 04:25:09.2
- -54 04:25:09.15
- -54 04:25:09.154
- -54 04:25:09.1540
- -54 04:25:09.15395
- -54 04:25:09.15395
- *****
- ******
- *******
- -1302:49
- -1302:49
- -1302:49
- -1302:49
- -1302:49:27
- -1302:49:27
- -1302:49:27
- -1302:49:27
- -1302:49:27
- -1302:49:27
- -1302:49:27
- -1302:49:27
- -1302:49:27.1
- -1302:49:27.1
- -1302:49:27.1
- -1302:49:27.1
- -1302:49:27
- -1302:49:27.1
- -1302:49:27.11
- -1302:49:27.11
- -1302:49:27.11
- -1302:49:27.11
- -1302:49:27
- -1302:49:27.1
- -1302:49:27.11
- -1302:49:27.105
- -1302:49:27.105
- -1302:49:27.105
- -1302:49:27.105
- ********
- -54 06:49
- -54 06:49
- -54 06:49
- -54 06:49:27
- -54 06:49:27
- -54 06:49:27
- -54 06:49:27
- -54 06:49:27.1
- -54 06:49:27.1
- -54 06:49:27
- -54 06:49:27.1
- -54 06:49:27.11
- -54 06:49:27.11
- -54 06:49:27
- -54 06:49:27.1
- -54 06:49:27.11
- -54 06:49:27.105
- -54 06:49:27.105
- -54 06:49:27
- -54 06:49:27.1
- -54 06:49:27.11
- -54 06:49:27.105
- -54 06:49:27.1053
- -54 06:49:27.1053
- -54 06:49:27
- -54 06:49:27.1
- -54 06:49:27.11
- -54 06:49:27.105
- -54 06:49:27.1053
- -54 06:49:27.10533
- -54 06:49:27.10533
- *****
- ******
- *******
- -1298:57
- -1298:57
- -1298:57
- -1298:57
- -1298:57:52
- -1298:57:52
- -1298:57:52
- -1298:57:52
- -1298:57:52
- -1298:57:52
- -1298:57:52
- -1298:57:52
- -1298:57:52.5
- -1298:57:52.5
- -1298:57:52.5
- -1298:57:52.5
- -1298:57:52
- -1298:57:52.5
- -1298:57:52.48
- -1298:57:52.48
- -1298:57:52.48
- -1298:57:52.48
- -1298:57:52
- -1298:57:52.5
- -1298:57:52.48
- -1298:57:52.482
- -1298:57:52.482
- -1298:57:52.482
- -1298:57:52.482
- ********
- -54 02:57
- -54 02:57
- -54 02:57
- -54 02:57:52
- -54 02:57:52
- -54 02:57:52
- -54 02:57:52
- -54 02:57:52.5
- -54 02:57:52.5
- -54 02:57:52
- -54 02:57:52.5
- -54 02:57:52.48
- -54 02:57:52.48
- -54 02:57:52
- -54 02:57:52.5
- -54 02:57:52.48
- -54 02:57:52.482
- -54 02:57:52.482
- -54 02:57:52
- -54 02:57:52.5
- -54 02:57:52.48
- -54 02:57:52.482
- -54 02:57:52.4823
- -54 02:57:52.4823
- -54 02:57:52
- -54 02:57:52.5
- -54 02:57:52.48
- -54 02:57:52.482
- -54 02:57:52.4823
- -54 02:57:52.48229
- -54 02:57:52.48229
- *****
- ******
- *******
- -1312:45
- -1312:45
- -1312:45
- -1312:45
- -1312:45:44
- -1312:45:44
- -1312:45:44
- -1312:45:44
- -1312:45:44
- -1312:45:44
- -1312:45:44
- -1312:45:44
- -1312:45:44.7
- -1312:45:44.7
- -1312:45:44.7
- -1312:45:44.7
- -1312:45:44
- -1312:45:44.7
- -1312:45:44.66
- -1312:45:44.66
- -1312:45:44.66
- -1312:45:44.66
- -1312:45:44
- -1312:45:44.7
- -1312:45:44.66
- -1312:45:44.658
- -1312:45:44.658
- -1312:45:44.658
- -1312:45:44.658
- ********
- -54 16:45
- -54 16:45
- -54 16:45
- -54 16:45:44
- -54 16:45:44
- -54 16:45:44
- -54 16:45:44
- -54 16:45:44.7
- -54 16:45:44.7
- -54 16:45:44
- -54 16:45:44.7
- -54 16:45:44.66
- -54 16:45:44.66
- -54 16:45:44
- -54 16:45:44.7
- -54 16:45:44.66
- -54 16:45:44.658
- -54 16:45:44.658
- -54 16:45:44
- -54 16:45:44.7
- -54 16:45:44.66
- -54 16:45:44.658
- -54 16:45:44.6583
- -54 16:45:44.6583
- -54 16:45:44
- -54 16:45:44.7
- -54 16:45:44.66
- -54 16:45:44.658
- -54 16:45:44.6583
- -54 16:45:44.65827
- -54 16:45:44.65827
- *****
- ******
- *******
- -1317:30
- -1317:30
- -1317:30
- -1317:30
- -1317:30:57
- -1317:30:57
- -1317:30:57
- -1317:30:57
- -1317:30:57
- -1317:30:57
- -1317:30:57
- -1317:30:57
- -1317:30:57.6
- -1317:30:57.6
- -1317:30:57.6
- -1317:30:57.6
- -1317:30:57
- -1317:30:57.6
- -1317:30:57.58
- -1317:30:57.58
- -1317:30:57.58
- -1317:30:57.58
- -1317:30:57
- -1317:30:57.6
- -1317:30:57.58
- -1317:30:57.582
- -1317:30:57.582
- -1317:30:57.582
- -1317:30:57.582
- ********
- -54 21:30
- -54 21:30
- -54 21:30
- -54 21:30:57
- -54 21:30:57
- -54 21:30:57
- -54 21:30:57
- -54 21:30:57.6
- -54 21:30:57.6
- -54 21:30:57
- -54 21:30:57.6
- -54 21:30:57.58
- -54 21:30:57.58
- -54 21:30:57
- -54 21:30:57.6
- -54 21:30:57.58
- -54 21:30:57.582
- -54 21:30:57.582
- -54 21:30:57
- -54 21:30:57.6
- -54 21:30:57.58
- -54 21:30:57.582
- -54 21:30:57.5822
- -54 21:30:57.5822
- -54 21:30:57
- -54 21:30:57.6
- -54 21:30:57.58
- -54 21:30:57.582
- -54 21:30:57.5822
- -54 21:30:57.58219
- -54 21:30:57.58219
- *****
- ******
- *******
- -1318:30
- -1318:30
- -1318:30
- -1318:30
- -1318:30:04
- -1318:30:04
- -1318:30:04
- -1318:30:04
- -1318:30:04
- -1318:30:04
- -1318:30:04
- -1318:30:04
- -1318:30:04.2
- -1318:30:04.2
- -1318:30:04.2
- -1318:30:04.2
- -1318:30:04
- -1318:30:04.2
- -1318:30:04.18
- -1318:30:04.18
- -1318:30:04.18
- -1318:30:04.18
- -1318:30:04
- -1318:30:04.2
- -1318:30:04.18
- -1318:30:04.183
- -1318:30:04.183
- -1318:30:04.183
- -1318:30:04.183
- ********
- -54 22:30
- -54 22:30
- -54 22:30
- -54 22:30:04
- -54 22:30:04
- -54 22:30:04
- -54 22:30:04
- -54 22:30:04.2
- -54 22:30:04.2
- -54 22:30:04
- -54 22:30:04.2
- -54 22:30:04.18
- -54 22:30:04.18
- -54 22:30:04
- -54 22:30:04.2
- -54 22:30:04.18
- -54 22:30:04.183
- -54 22:30:04.183
- -54 22:30:04
- -54 22:30:04.2
- -54 22:30:04.18
- -54 22:30:04.183
- -54 22:30:04.1835
- -54 22:30:04.1835
- -54 22:30:04
- -54 22:30:04.2
- -54 22:30:04.18
- -54 22:30:04.183
- -54 22:30:04.1835
- -54 22:30:04.18347
- -54 22:30:04.18347
- *****
- ******
- *******
- -1297:56
- -1297:56
- -1297:56
- -1297:56
- -1297:56:51
- -1297:56:51
- -1297:56:51
- -1297:56:51
- -1297:56:51
- -1297:56:51
- -1297:56:51
- -1297:56:51
- -1297:56:51.6
- -1297:56:51.6
- -1297:56:51.6
- -1297:56:51.6
- -1297:56:51
- -1297:56:51.6
- -1297:56:51.59
- -1297:56:51.59
- -1297:56:51.59
- -1297:56:51.59
- -1297:56:51
- -1297:56:51.6
- -1297:56:51.59
- -1297:56:51.593
- -1297:56:51.593
- -1297:56:51.593
- -1297:56:51.593
- ********
- -54 01:56
- -54 01:56
- -54 01:56
- -54 01:56:51
- -54 01:56:51
- -54 01:56:51
- -54 01:56:51
- -54 01:56:51.6
- -54 01:56:51.6
- -54 01:56:51
- -54 01:56:51.6
- -54 01:56:51.59
- -54 01:56:51.59
- -54 01:56:51
- -54 01:56:51.6
- -54 01:56:51.59
- -54 01:56:51.593
- -54 01:56:51.593
- -54 01:56:51
- -54 01:56:51.6
- -54 01:56:51.59
- -54 01:56:51.593
- -54 01:56:51.5932
- -54 01:56:51.5932
- -54 01:56:51
- -54 01:56:51.6
- -54 01:56:51.59
- -54 01:56:51.593
- -54 01:56:51.5932
- -54 01:56:51.59319
- -54 01:56:51.59319
- *****
- ******
- *******
- ********
- -16344:00
- -16344:00
- -16344:00
- -16344:00
- -16344:00
- -16344:00
- -16344:00:00
- -16344:00:00
- -16344:00:00
- -16344:00:00
- -16344:00:00
- -16344:00:00
- -16344:00:00
- -16344:00:00
- -16344:00:00
- -16344:00:00
- -16344:00:00.0
- -16344:00:00.0
- -16344:00:00.0
- -16344:00:00.0
- -16344:00:00.0
- -16344:00:00
- -16344:00:00.0
- -16344:00:00.00
- -16344:00:00.00
- -16344:00:00.00
- -16344:00:00.00
- -16344:00:00.00
- ********
- *********
- -681 00:00
- -681 00:00
- -681 00:00
- -681 00:00:00
- -681 00:00:00
- -681 00:00:00
- -681 00:00:00
- -681 00:00:00
- -681 00:00:00
- -681 00:00:00.0
- -681 00:00:00.0
- -681 00:00:00.0
- -681 00:00:00
- -681 00:00:00.0
- -681 00:00:00.00
- -681 00:00:00.00
- -681 00:00:00.00
- -681 00:00:00
- -681 00:00:00.0
- -681 00:00:00.00
- -681 00:00:00.000
- -681 00:00:00.000
- -681 00:00:00.000
- -681 00:00:00
- -681 00:00:00.0
- -681 00:00:00.00
- -681 00:00:00.000
- -681 00:00:00.0000
- -681 00:00:00.0000
- -681 00:00:00.0000
- *****
- ******
- *******
- ********
- -16348:50
- -16348:50
- -16348:50
- -16348:50
- -16348:50
- -16348:50
- -16348:50:38
- -16348:50:38
- -16348:50:38
- -16348:50:38
- -16348:50:38
- -16348:50:38
- -16348:50:38
- -16348:50:38
- -16348:50:38
- -16348:50:38
- -16348:50:38.1
- -16348:50:38.1
- -16348:50:38.1
- -16348:50:38.1
- -16348:50:38.1
- -16348:50:38
- -16348:50:38.1
- -16348:50:38.12
- -16348:50:38.12
- -16348:50:38.12
- -16348:50:38.12
- -16348:50:38.12
- ********
- *********
- -681 04:50
- -681 04:50
- -681 04:50
- -681 04:50:38
- -681 04:50:38
- -681 04:50:38
- -681 04:50:38
- -681 04:50:38
- -681 04:50:38
- -681 04:50:38.1
- -681 04:50:38.1
- -681 04:50:38.1
- -681 04:50:38
- -681 04:50:38.1
- -681 04:50:38.12
- -681 04:50:38.12
- -681 04:50:38.12
- -681 04:50:38
- -681 04:50:38.1
- -681 04:50:38.12
- -681 04:50:38.123
- -681 04:50:38.123
- -681 04:50:38.123
- -681 04:50:38
- -681 04:50:38.1
- -681 04:50:38.12
- -681 04:50:38.123
- -681 04:50:38.1230
- -681 04:50:38.1230
- -681 04:50:38.1230
- *****
- ******
- *******
- ********
- -16356:31
- -16356:31
- -16356:31
- -16356:31
- -16356:31
- -16356:31
- -16356:31:35
- -16356:31:35
- -16356:31:35
- -16356:31:35
- -16356:31:35
- -16356:31:35
- -16356:31:35
- -16356:31:35
- -16356:31:35
- -16356:31:35
- -16356:31:35.2
- -16356:31:35.2
- -16356:31:35.2
- -16356:31:35.2
- -16356:31:35.2
- -16356:31:35
- -16356:31:35.2
- -16356:31:35.23
- -16356:31:35.23
- -16356:31:35.23
- -16356:31:35.23
- -16356:31:35.23
- ********
- *********
- -681 12:31
- -681 12:31
- -681 12:31
- -681 12:31:35
- -681 12:31:35
- -681 12:31:35
- -681 12:31:35
- -681 12:31:35
- -681 12:31:35
- -681 12:31:35.2
- -681 12:31:35.2
- -681 12:31:35.2
- -681 12:31:35
- -681 12:31:35.2
- -681 12:31:35.23
- -681 12:31:35.23
- -681 12:31:35.23
- -681 12:31:35
- -681 12:31:35.2
- -681 12:31:35.23
- -681 12:31:35.235
- -681 12:31:35.235
- -681 12:31:35.235
- -681 12:31:35
- -681 12:31:35.2
- -681 12:31:35.23
- -681 12:31:35.235
- -681 12:31:35.2345
- -681 12:31:35.2345
- -681 12:31:35.2345
- *****
- ******
- *******
- ********
- -16356:47
- -16356:47
- -16356:47
- -16356:47
- -16356:47
- -16356:47
- -16356:47:53
- -16356:47:53
- -16356:47:53
- -16356:47:53
- -16356:47:53
- -16356:47:53
- -16356:47:53
- -16356:47:53
- -16356:47:53
- -16356:47:53
- -16356:47:53.3
- -16356:47:53.3
- -16356:47:53.3
- -16356:47:53.3
- -16356:47:53.3
- -16356:47:53
- -16356:47:53.3
- -16356:47:53.35
- -16356:47:53.35
- -16356:47:53.35
- -16356:47:53.35
- -16356:47:53.35
- ********
- *********
- -681 12:47
- -681 12:47
- -681 12:47
- -681 12:47:53
- -681 12:47:53
- -681 12:47:53
- -681 12:47:53
- -681 12:47:53
- -681 12:47:53
- -681 12:47:53.3
- -681 12:47:53.3
- -681 12:47:53.3
- -681 12:47:53
- -681 12:47:53.3
- -681 12:47:53.35
- -681 12:47:53.35
- -681 12:47:53.35
- -681 12:47:53
- -681 12:47:53.3
- -681 12:47:53.35
- -681 12:47:53.345
- -681 12:47:53.345
- -681 12:47:53.345
- -681 12:47:53
- -681 12:47:53.3
- -681 12:47:53.35
- -681 12:47:53.345
- -681 12:47:53.3450
- -681 12:47:53.3450
- -681 12:47:53.3450
- *****
- ******
- *******
- ********
- -16345:26
- -16345:26
- -16345:26
- -16345:26
- -16345:26
- -16345:26
- -16345:26:00
- -16345:26:00
- -16345:26:00
- -16345:26:00
- -16345:26:00
- -16345:26:00
- -16345:26:00
- -16345:26:00
- -16345:26:00
- -16345:26:00
- -16345:26:00.5
- -16345:26:00.5
- -16345:26:00.5
- -16345:26:00.5
- -16345:26:00.5
- -16345:26:00
- -16345:26:00.5
- -16345:26:00.46
- -16345:26:00.46
- -16345:26:00.46
- -16345:26:00.46
- -16345:26:00.46
- ********
- *********
- -681 01:26
- -681 01:26
- -681 01:26
- -681 01:26:00
- -681 01:26:00
- -681 01:26:00
- -681 01:26:00
- -681 01:26:00
- -681 01:26:00
- -681 01:26:00.5
- -681 01:26:00.5
- -681 01:26:00.5
- -681 01:26:00
- -681 01:26:00.5
- -681 01:26:00.46
- -681 01:26:00.46
- -681 01:26:00.46
- -681 01:26:00
- -681 01:26:00.5
- -681 01:26:00.46
- -681 01:26:00.456
- -681 01:26:00.456
- -681 01:26:00.456
- -681 01:26:00
- -681 01:26:00.5
- -681 01:26:00.46
- -681 01:26:00.456
- -681 01:26:00.4562
- -681 01:26:00.4562
- -681 01:26:00.4562
- *****
- ******
- *******
- ********
- -16364:58
- -16364:58
- -16364:58
- -16364:58
- -16364:58
- -16364:58
- -16364:58:11
- -16364:58:11
- -16364:58:11
- -16364:58:11
- -16364:58:11
- -16364:58:11
- -16364:58:11
- -16364:58:11
- -16364:58:11
- -16364:58:11
- -16364:58:11.6
- -16364:58:11.6
- -16364:58:11.6
- -16364:58:11.6
- -16364:58:11.6
- -16364:58:11
- -16364:58:11.6
- -16364:58:11.57
- -16364:58:11.57
- -16364:58:11.57
- -16364:58:11.57
- -16364:58:11.57
- ********
- *********
- -681 20:58
- -681 20:58
- -681 20:58
- -681 20:58:11
- -681 20:58:11
- -681 20:58:11
- -681 20:58:11
- -681 20:58:11
- -681 20:58:11
- -681 20:58:11.6
- -681 20:58:11.6
- -681 20:58:11.6
- -681 20:58:11
- -681 20:58:11.6
- -681 20:58:11.57
- -681 20:58:11.57
- -681 20:58:11.57
- -681 20:58:11
- -681 20:58:11.6
- -681 20:58:11.57
- -681 20:58:11.567
- -681 20:58:11.567
- -681 20:58:11.567
- -681 20:58:11
- -681 20:58:11.6
- -681 20:58:11.57
- -681 20:58:11.567
- -681 20:58:11.5668
- -681 20:58:11.5668
- -681 20:58:11.5668
- *****
- ******
- *******
- ********
- -16351:36
- -16351:36
- -16351:36
- -16351:36
- -16351:36
- -16351:36
- -16351:36:05
- -16351:36:05
- -16351:36:05
- -16351:36:05
- -16351:36:05
- -16351:36:05
- -16351:36:05
- -16351:36:05
- -16351:36:05
- -16351:36:05
- -16351:36:05.2
- -16351:36:05.2
- -16351:36:05.2
- -16351:36:05.2
- -16351:36:05.2
- -16351:36:05
- -16351:36:05.2
- -16351:36:05.19
- -16351:36:05.19
- -16351:36:05.19
- -16351:36:05.19
- -16351:36:05.19
- ********
- *********
- -681 07:36
- -681 07:36
- -681 07:36
- -681 07:36:05
- -681 07:36:05
- -681 07:36:05
- -681 07:36:05
- -681 07:36:05
- -681 07:36:05
- -681 07:36:05.2
- -681 07:36:05.2
- -681 07:36:05.2
- -681 07:36:05
- -681 07:36:05.2
- -681 07:36:05.19
- -681 07:36:05.19
- -681 07:36:05.19
- -681 07:36:05
- -681 07:36:05.2
- -681 07:36:05.19
- -681 07:36:05.190
- -681 07:36:05.190
- -681 07:36:05.190
- -681 07:36:05
- -681 07:36:05.2
- -681 07:36:05.19
- -681 07:36:05.190
- -681 07:36:05.1896
- -681 07:36:05.1896
- -681 07:36:05.1896
- *****
- ******
- *******
- ********
- -16359:43
- -16359:43
- -16359:43
- -16359:43
- -16359:43
- -16359:43
- -16359:43:49
- -16359:43:49
- -16359:43:49
- -16359:43:49
- -16359:43:49
- -16359:43:49
- -16359:43:49
- -16359:43:49
- -16359:43:49
- -16359:43:49
- -16359:43:49.8
- -16359:43:49.8
- -16359:43:49.8
- -16359:43:49.8
- -16359:43:49.8
- -16359:43:49
- -16359:43:49.8
- -16359:43:49.83
- -16359:43:49.83
- -16359:43:49.83
- -16359:43:49.83
- -16359:43:49.83
- ********
- *********
- -681 15:43
- -681 15:43
- -681 15:43
- -681 15:43:49
- -681 15:43:49
- -681 15:43:49
- -681 15:43:49
- -681 15:43:49
- -681 15:43:49
- -681 15:43:49.8
- -681 15:43:49.8
- -681 15:43:49.8
- -681 15:43:49
- -681 15:43:49.8
- -681 15:43:49.83
- -681 15:43:49.83
- -681 15:43:49.83
- -681 15:43:49
- -681 15:43:49.8
- -681 15:43:49.83
- -681 15:43:49.831
- -681 15:43:49.831
- -681 15:43:49.831
- -681 15:43:49
- -681 15:43:49.8
- -681 15:43:49.83
- -681 15:43:49.831
- -681 15:43:49.8313
- -681 15:43:49.8313
- -681 15:43:49.8313
- *****
- ******
- *******
- ********
- -16348:25
- -16348:25
- -16348:25
- -16348:25
- -16348:25
- -16348:25
- -16348:25:09
- -16348:25:09
- -16348:25:09
- -16348:25:09
- -16348:25:09
- -16348:25:09
- -16348:25:09
- -16348:25:09
- -16348:25:09
- -16348:25:09
- -16348:25:09.0
- -16348:25:09.0
- -16348:25:09.0
- -16348:25:09.0
- -16348:25:09.0
- -16348:25:09
- -16348:25:09.0
- -16348:25:09.01
- -16348:25:09.01
- -16348:25:09.01
- -16348:25:09.01
- -16348:25:09.01
- ********
- *********
- -681 04:25
- -681 04:25
- -681 04:25
- -681 04:25:09
- -681 04:25:09
- -681 04:25:09
- -681 04:25:09
- -681 04:25:09
- -681 04:25:09
- -681 04:25:09.0
- -681 04:25:09.0
- -681 04:25:09.0
- -681 04:25:09
- -681 04:25:09.0
- -681 04:25:09.01
- -681 04:25:09.01
- -681 04:25:09.01
- -681 04:25:09
- -681 04:25:09.0
- -681 04:25:09.01
- -681 04:25:09.013
- -681 04:25:09.013
- -681 04:25:09.013
- -681 04:25:09
- -681 04:25:09.0
- -681 04:25:09.01
- -681 04:25:09.013
- -681 04:25:09.0129
- -681 04:25:09.0129
- -681 04:25:09.0129
- *****
- ******
- *******
- ********
- -16350:49
- -16350:49
- -16350:49
- -16350:49
- -16350:49
- -16350:49
- -16350:49:27
- -16350:49:27
- -16350:49:27
- -16350:49:27
- -16350:49:27
- -16350:49:27
- -16350:49:27
- -16350:49:27
- -16350:49:27
- -16350:49:27
- -16350:49:27.5
- -16350:49:27.5
- -16350:49:27.5
- -16350:49:27.5
- -16350:49:27.5
- -16350:49:27
- -16350:49:27.5
- -16350:49:27.52
- -16350:49:27.52
- -16350:49:27.52
- -16350:49:27.52
- -16350:49:27.52
- ********
- *********
- -681 06:49
- -681 06:49
- -681 06:49
- -681 06:49:27
- -681 06:49:27
- -681 06:49:27
- -681 06:49:27
- -681 06:49:27
- -681 06:49:27
- -681 06:49:27.5
- -681 06:49:27.5
- -681 06:49:27.5
- -681 06:49:27
- -681 06:49:27.5
- -681 06:49:27.52
- -681 06:49:27.52
- -681 06:49:27.52
- -681 06:49:27
- -681 06:49:27.5
- -681 06:49:27.52
- -681 06:49:27.524
- -681 06:49:27.524
- -681 06:49:27.524
- -681 06:49:27
- -681 06:49:27.5
- -681 06:49:27.52
- -681 06:49:27.524
- -681 06:49:27.5237
- -681 06:49:27.5237
- -681 06:49:27.5237
- *****
- ******
- *******
- ********
- -16346:57
- -16346:57
- -16346:57
- -16346:57
- -16346:57
- -16346:57
- -16346:57:52
- -16346:57:52
- -16346:57:52
- -16346:57:52
- -16346:57:52
- -16346:57:52
- -16346:57:52
- -16346:57:52
- -16346:57:52
- -16346:57:52
- -16346:57:52.0
- -16346:57:52.0
- -16346:57:52.0
- -16346:57:52.0
- -16346:57:52.0
- -16346:57:52
- -16346:57:52.0
- -16346:57:52.02
- -16346:57:52.02
- -16346:57:52.02
- -16346:57:52.02
- -16346:57:52.02
- ********
- *********
- -681 02:57
- -681 02:57
- -681 02:57
- -681 02:57:52
- -681 02:57:52
- -681 02:57:52
- -681 02:57:52
- -681 02:57:52
- -681 02:57:52
- -681 02:57:52.0
- -681 02:57:52.0
- -681 02:57:52.0
- -681 02:57:52
- -681 02:57:52.0
- -681 02:57:52.02
- -681 02:57:52.02
- -681 02:57:52.02
- -681 02:57:52
- -681 02:57:52.0
- -681 02:57:52.02
- -681 02:57:52.016
- -681 02:57:52.016
- -681 02:57:52.016
- -681 02:57:52
- -681 02:57:52.0
- -681 02:57:52.02
- -681 02:57:52.016
- -681 02:57:52.0156
- -681 02:57:52.0156
- -681 02:57:52.0156
- *****
- ******
- *******
- ********
- -16360:45
- -16360:45
- -16360:45
- -16360:45
- -16360:45
- -16360:45
- -16360:45:44
- -16360:45:44
- -16360:45:44
- -16360:45:44
- -16360:45:44
- -16360:45:44
- -16360:45:44
- -16360:45:44
- -16360:45:44
- -16360:45:44
- -16360:45:44.9
- -16360:45:44.9
- -16360:45:44.9
- -16360:45:44.9
- -16360:45:44.9
- -16360:45:44
- -16360:45:44.9
- -16360:45:44.87
- -16360:45:44.87
- -16360:45:44.87
- -16360:45:44.87
- -16360:45:44.87
- ********
- *********
- -681 16:45
- -681 16:45
- -681 16:45
- -681 16:45:44
- -681 16:45:44
- -681 16:45:44
- -681 16:45:44
- -681 16:45:44
- -681 16:45:44
- -681 16:45:44.9
- -681 16:45:44.9
- -681 16:45:44.9
- -681 16:45:44
- -681 16:45:44.9
- -681 16:45:44.87
- -681 16:45:44.87
- -681 16:45:44.87
- -681 16:45:44
- -681 16:45:44.9
- -681 16:45:44.87
- -681 16:45:44.865
- -681 16:45:44.865
- -681 16:45:44.865
- -681 16:45:44
- -681 16:45:44.9
- -681 16:45:44.87
- -681 16:45:44.865
- -681 16:45:44.8653
- -681 16:45:44.8653
- -681 16:45:44.8653
- *****
- ******
- *******
- ********
- -16365:30
- -16365:30
- -16365:30
- -16365:30
- -16365:30
- -16365:30
- -16365:30:57
- -16365:30:57
- -16365:30:57
- -16365:30:57
- -16365:30:57
- -16365:30:57
- -16365:30:57
- -16365:30:57
- -16365:30:57
- -16365:30:57
- -16365:30:57.8
- -16365:30:57.8
- -16365:30:57.8
- -16365:30:57.8
- -16365:30:57.8
- -16365:30:57
- -16365:30:57.8
- -16365:30:57.82
- -16365:30:57.82
- -16365:30:57.82
- -16365:30:57.82
- -16365:30:57.82
- ********
- *********
- -681 21:30
- -681 21:30
- -681 21:30
- -681 21:30:57
- -681 21:30:57
- -681 21:30:57
- -681 21:30:57
- -681 21:30:57
- -681 21:30:57
- -681 21:30:57.8
- -681 21:30:57.8
- -681 21:30:57.8
- -681 21:30:57
- -681 21:30:57.8
- -681 21:30:57.82
- -681 21:30:57.82
- -681 21:30:57.82
- -681 21:30:57
- -681 21:30:57.8
- -681 21:30:57.82
- -681 21:30:57.820
- -681 21:30:57.820
- -681 21:30:57.820
- -681 21:30:57
- -681 21:30:57.8
- -681 21:30:57.82
- -681 21:30:57.820
- -681 21:30:57.8205
- -681 21:30:57.8205
- -681 21:30:57.8205
- *****
- ******
- *******
- ********
- -16348:25
- -16348:25
- -16348:25
- -16348:25
- -16348:25
- -16348:25
- -16348:25:09
- -16348:25:09
- -16348:25:09
- -16348:25:09
- -16348:25:09
- -16348:25:09
- -16348:25:09
- -16348:25:09
- -16348:25:09
- -16348:25:09
- -16348:25:09.2
- -16348:25:09.2
- -16348:25:09.2
- -16348:25:09.2
- -16348:25:09.2
- -16348:25:09
- -16348:25:09.2
- -16348:25:09.15
- -16348:25:09.15
- -16348:25:09.15
- -16348:25:09.15
- -16348:25:09.15
- ********
- *********
- -681 04:25
- -681 04:25
- -681 04:25
- -681 04:25:09
- -681 04:25:09
- -681 04:25:09
- -681 04:25:09
- -681 04:25:09
- -681 04:25:09
- -681 04:25:09.2
- -681 04:25:09.2
- -681 04:25:09.2
- -681 04:25:09
- -681 04:25:09.2
- -681 04:25:09.15
- -681 04:25:09.15
- -681 04:25:09.15
- -681 04:25:09
- -681 04:25:09.2
- -681 04:25:09.15
- -681 04:25:09.154
- -681 04:25:09.154
- -681 04:25:09.154
- -681 04:25:09
- -681 04:25:09.2
- -681 04:25:09.15
- -681 04:25:09.154
- -681 04:25:09.1539
- -681 04:25:09.1539
- -681 04:25:09.1539
- *****
- ******
- *******
- ********
- -16350:49
- -16350:49
- -16350:49
- -16350:49
- -16350:49
- -16350:49
- -16350:49:27
- -16350:49:27
- -16350:49:27
- -16350:49:27
- -16350:49:27
- -16350:49:27
- -16350:49:27
- -16350:49:27
- -16350:49:27
- -16350:49:27
- -16350:49:27.1
- -16350:49:27.1
- -16350:49:27.1
- -16350:49:27.1
- -16350:49:27.1
- -16350:49:27
- -16350:49:27.1
- -16350:49:27.11
- -16350:49:27.11
- -16350:49:27.11
- -16350:49:27.11
- -16350:49:27.11
- ********
- *********
- -681 06:49
- -681 06:49
- -681 06:49
- -681 06:49:27
- -681 06:49:27
- -681 06:49:27
- -681 06:49:27
- -681 06:49:27
- -681 06:49:27
- -681 06:49:27.1
- -681 06:49:27.1
- -681 06:49:27.1
- -681 06:49:27
- -681 06:49:27.1
- -681 06:49:27.11
- -681 06:49:27.11
- -681 06:49:27.11
- -681 06:49:27
- -681 06:49:27.1
- -681 06:49:27.11
- -681 06:49:27.105
- -681 06:49:27.105
- -681 06:49:27.105
- -681 06:49:27
- -681 06:49:27.1
- -681 06:49:27.11
- -681 06:49:27.105
- -681 06:49:27.1053
- -681 06:49:27.1053
- -681 06:49:27.1053
- *****
- ******
- *******
- ********
- -16346:57
- -16346:57
- -16346:57
- -16346:57
- -16346:57
- -16346:57
- -16346:57:52
- -16346:57:52
- -16346:57:52
- -16346:57:52
- -16346:57:52
- -16346:57:52
- -16346:57:52
- -16346:57:52
- -16346:57:52
- -16346:57:52
- -16346:57:52.5
- -16346:57:52.5
- -16346:57:52.5
- -16346:57:52.5
- -16346:57:52.5
- -16346:57:52
- -16346:57:52.5
- -16346:57:52.48
- -16346:57:52.48
- -16346:57:52.48
- -16346:57:52.48
- -16346:57:52.48
- ********
- *********
- -681 02:57
- -681 02:57
- -681 02:57
- -681 02:57:52
- -681 02:57:52
- -681 02:57:52
- -681 02:57:52
- -681 02:57:52
- -681 02:57:52
- -681 02:57:52.5
- -681 02:57:52.5
- -681 02:57:52.5
- -681 02:57:52
- -681 02:57:52.5
- -681 02:57:52.48
- -681 02:57:52.48
- -681 02:57:52.48
- -681 02:57:52
- -681 02:57:52.5
- -681 02:57:52.48
- -681 02:57:52.482
- -681 02:57:52.482
- -681 02:57:52.482
- -681 02:57:52
- -681 02:57:52.5
- -681 02:57:52.48
- -681 02:57:52.482
- -681 02:57:52.4823
- -681 02:57:52.4823
- -681 02:57:52.4823
- *****
- ******
- *******
- ********
- -16360:45
- -16360:45
- -16360:45
- -16360:45
- -16360:45
- -16360:45
- -16360:45:44
- -16360:45:44
- -16360:45:44
- -16360:45:44
- -16360:45:44
- -16360:45:44
- -16360:45:44
- -16360:45:44
- -16360:45:44
- -16360:45:44
- -16360:45:44.7
- -16360:45:44.7
- -16360:45:44.7
- -16360:45:44.7
- -16360:45:44.7
- -16360:45:44
- -16360:45:44.7
- -16360:45:44.66
- -16360:45:44.66
- -16360:45:44.66
- -16360:45:44.66
- -16360:45:44.66
- ********
- *********
- -681 16:45
- -681 16:45
- -681 16:45
- -681 16:45:44
- -681 16:45:44
- -681 16:45:44
- -681 16:45:44
- -681 16:45:44
- -681 16:45:44
- -681 16:45:44.7
- -681 16:45:44.7
- -681 16:45:44.7
- -681 16:45:44
- -681 16:45:44.7
- -681 16:45:44.66
- -681 16:45:44.66
- -681 16:45:44.66
- -681 16:45:44
- -681 16:45:44.7
- -681 16:45:44.66
- -681 16:45:44.658
- -681 16:45:44.658
- -681 16:45:44.658
- -681 16:45:44
- -681 16:45:44.7
- -681 16:45:44.66
- -681 16:45:44.658
- -681 16:45:44.6583
- -681 16:45:44.6583
- -681 16:45:44.6583
- *****
- ******
- *******
- ********
- -16365:30
- -16365:30
- -16365:30
- -16365:30
- -16365:30
- -16365:30
- -16365:30:57
- -16365:30:57
- -16365:30:57
- -16365:30:57
- -16365:30:57
- -16365:30:57
- -16365:30:57
- -16365:30:57
- -16365:30:57
- -16365:30:57
- -16365:30:57.6
- -16365:30:57.6
- -16365:30:57.6
- -16365:30:57.6
- -16365:30:57.6
- -16365:30:57
- -16365:30:57.6
- -16365:30:57.58
- -16365:30:57.58
- -16365:30:57.58
- -16365:30:57.58
- -16365:30:57.58
- ********
- *********
- -681 21:30
- -681 21:30
- -681 21:30
- -681 21:30:57
- -681 21:30:57
- -681 21:30:57
- -681 21:30:57
- -681 21:30:57
- -681 21:30:57
- -681 21:30:57.6
- -681 21:30:57.6
- -681 21:30:57.6
- -681 21:30:57
- -681 21:30:57.6
- -681 21:30:57.58
- -681 21:30:57.58
- -681 21:30:57.58
- -681 21:30:57
- -681 21:30:57.6
- -681 21:30:57.58
- -681 21:30:57.582
- -681 21:30:57.582
- -681 21:30:57.582
- -681 21:30:57
- -681 21:30:57.6
- -681 21:30:57.58
- -681 21:30:57.582
- -681 21:30:57.5822
- -681 21:30:57.5822
- -681 21:30:57.5822
- *****
- ******
- *******
- ********
- -16366:30
- -16366:30
- -16366:30
- -16366:30
- -16366:30
- -16366:30
- -16366:30:04
- -16366:30:04
- -16366:30:04
- -16366:30:04
- -16366:30:04
- -16366:30:04
- -16366:30:04
- -16366:30:04
- -16366:30:04
- -16366:30:04
- -16366:30:04.2
- -16366:30:04.2
- -16366:30:04.2
- -16366:30:04.2
- -16366:30:04.2
- -16366:30:04
- -16366:30:04.2
- -16366:30:04.18
- -16366:30:04.18
- -16366:30:04.18
- -16366:30:04.18
- -16366:30:04.18
- ********
- *********
- -681 22:30
- -681 22:30
- -681 22:30
- -681 22:30:04
- -681 22:30:04
- -681 22:30:04
- -681 22:30:04
- -681 22:30:04
- -681 22:30:04
- -681 22:30:04.2
- -681 22:30:04.2
- -681 22:30:04.2
- -681 22:30:04
- -681 22:30:04.2
- -681 22:30:04.18
- -681 22:30:04.18
- -681 22:30:04.18
- -681 22:30:04
- -681 22:30:04.2
- -681 22:30:04.18
- -681 22:30:04.183
- -681 22:30:04.183
- -681 22:30:04.183
- -681 22:30:04
- -681 22:30:04.2
- -681 22:30:04.18
- -681 22:30:04.183
- -681 22:30:04.1835
- -681 22:30:04.1835
- -681 22:30:04.1835
- *****
- ******
- *******
- ********
- -16345:56
- -16345:56
- -16345:56
- -16345:56
- -16345:56
- -16345:56
- -16345:56:51
- -16345:56:51
- -16345:56:51
- -16345:56:51
- -16345:56:51
- -16345:56:51
- -16345:56:51
- -16345:56:51
- -16345:56:51
- -16345:56:51
- -16345:56:51.6
- -16345:56:51.6
- -16345:56:51.6
- -16345:56:51.6
- -16345:56:51.6
- -16345:56:51
- -16345:56:51.6
- -16345:56:51.59
- -16345:56:51.59
- -16345:56:51.59
- -16345:56:51.59
- -16345:56:51.59
- ********
- *********
- -681 01:56
- -681 01:56
- -681 01:56
- -681 01:56:51
- -681 01:56:51
- -681 01:56:51
- -681 01:56:51
- -681 01:56:51
- -681 01:56:51
- -681 01:56:51.6
- -681 01:56:51.6
- -681 01:56:51.6
- -681 01:56:51
- -681 01:56:51.6
- -681 01:56:51.59
- -681 01:56:51.59
- -681 01:56:51.59
- -681 01:56:51
- -681 01:56:51.6
- -681 01:56:51.59
- -681 01:56:51.593
- -681 01:56:51.593
- -681 01:56:51.593
- -681 01:56:51
- -681 01:56:51.6
- -681 01:56:51.59
- -681 01:56:51.593
- -681 01:56:51.5932
- -681 01:56:51.5932
- -681 01:56:51.5932
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#! /bin/sh
-
-TEMPDIR=/tmp/pspp-tst-$$
-mkdir -p $TEMPDIR
-trap 'cd /; rm -rf $TEMPDIR' 0
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-fail()
-{
- echo $activity
- echo FAILED
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- exit 2;
-}
-
-pass()
-{
- exit 0;
-}
-
-cd $TEMPDIR
-
-activity="write pspp syntax"
-cat > wkday-in.pspp <<EOF
-set errors=none.
-set mxwarns=10000000.
-data list /wkday2 1-2 (wkday)
- wkday3 1-3 (wkday)
- wkday4 1-4 (wkday)
- wkday5 1-5 (wkday)
- wkday6 1-6 (wkday)
- wkday7 1-7 (wkday)
- wkday8 1-8 (wkday)
- wkday9 1-9 (wkday)
- wkday10 1-10 (wkday).
-begin data.
-
-.
-monady
-tuseday
-wedensday
-thurdsay
-fridya
-saturady
-sudnay
-end data.
-formats all (wkday2).
-print outfile='wkday-in.out'/all.
-execute.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv wkday-in.pspp
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -u wkday-in.out - <<EOF
- . . . . . . . . .
- . . . . . . . . .
- MO MO MO MO MO MO MO MO MO
- TU TU TU TU TU TU TU TU TU
- WE WE WE WE WE WE WE WE WE
- TH TH TH TH TH TH TH TH TH
- FR FR FR FR FR FR FR FR FR
- SA SA SA SA SA SA SA SA SA
- SU SU SU SU SU SU SU SU SU
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
+++ /dev/null
-#! /bin/sh
-
-TEMPDIR=/tmp/pspp-tst-$$
-mkdir -p $TEMPDIR
-trap 'cd /; rm -rf $TEMPDIR' 0
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-fail()
-{
- echo $activity
- echo FAILED
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- exit 2;
-}
-
-pass()
-{
- exit 0;
-}
-
-cd $TEMPDIR
-
-activity="write pspp syntax"
-cat > wkday-out.pspp <<EOF
-set errors=none.
-set mxwarns=10000000.
-set mxerrs=10000000.
-data list /x 1-10.
-begin data.
-
-0
-0.5
-0.9
-1
-2
-3
-4
-4.1
-4.5
-4.9
-5
-6
-7
-7.1
-7.5
-7.9
-8
-end data.
-do repeat format=wkday2 to wkday40.
-print outfile='wkday-out.out'/x(format).
-end repeat.
-execute.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv wkday-out.pspp
-if [ $? -eq 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -u wkday-out.out - <<EOF
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- SU
- SUN
- SUND
- SUNDA
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- SUNDAY
- MO
- MON
- MOND
- MONDA
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- MONDAY
- TU
- TUE
- TUES
- TUESD
- TUESDA
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- TUESDAY
- WE
- WED
- WEDN
- WEDNE
- WEDNES
- WEDNESD
- WEDNESDA
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WE
- WED
- WEDN
- WEDNE
- WEDNES
- WEDNESD
- WEDNESDA
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WE
- WED
- WEDN
- WEDNE
- WEDNES
- WEDNESD
- WEDNESDA
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WE
- WED
- WEDN
- WEDNE
- WEDNES
- WEDNESD
- WEDNESDA
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- WEDNESDAY
- TH
- THU
- THUR
- THURS
- THURSD
- THURSDA
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- THURSDAY
- FR
- FRI
- FRID
- FRIDA
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- FRIDAY
- SA
- SAT
- SATU
- SATUR
- SATURD
- SATURDA
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SA
- SAT
- SATU
- SATUR
- SATURD
- SATURDA
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SA
- SAT
- SATU
- SATUR
- SATURD
- SATURDA
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SA
- SAT
- SATU
- SATUR
- SATURD
- SATURDA
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- SATURDAY
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
- .
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass
--- /dev/null
+AT_BANNER([command parser])
+
+dnl Tests for a bug which crashed pspp when given certain invalid input.
+AT_SETUP([command parser crash bug])
+AT_DATA([command.sps], [dnl
+DATA rubbish.
+EXECUTE.
+])
+AT_CHECK([pspp -O format=csv command.sps], [1], [dnl
+command.sps:1: error: Unknown command DATA RUBBISH.
+
+command.sps:2: error: EXECUTE: EXECUTE is allowed only after the active file has been defined.
+])
+AT_CLEANUP
+
+AT_BANNER([ERASE])
+
+AT_SETUP([ERASE -- safer mode])
+AT_DATA([foobar], [contents
+])
+AT_DATA([erase.sps], [dnl
+set safer on
+
+erase FILE='foobar'.
+])
+AT_CHECK([pspp -O format=csv erase.sps], [1], [dnl
+erase.sps:3: error: ERASE: This command not allowed when the SAFER option is set.
+])
+AT_CHECK([cat foobar], [0], [contents
+])
+AT_CLEANUP
+
+AT_SETUP([ERASE -- not safer mode])
+AT_DATA([foobar], [contents
+])
+AT_CHECK([test -e foobar])
+AT_DATA([erase.sps], [dnl
+erase FILE='foobar'.
+])
+AT_CHECK([pspp -O format=csv erase.sps])
+AT_CHECK([test ! -e foobar])
+AT_CLEANUP
+
+AT_BANNER([N OF CASES])
+
+AT_SETUP([N OF CASES])
+AT_DATA([n-of-cases.sps], [dnl
+INPUT PROGRAM.
+LOOP #i = 1 TO 100.
+COMPUTE x=#i.
+END CASE.
+END LOOP.
+END FILE.
+END INPUT PROGRAM.
+
+N OF CASES 15.
+
+LIST.
+])
+AT_CHECK([pspp -O format=csv n-of-cases.sps], [0], [dnl
+Table: Data List
+x
+1.00
+2.00
+3.00
+4.00
+5.00
+6.00
+7.00
+8.00
+9.00
+10.00
+11.00
+12.00
+13.00
+14.00
+15.00
+])
+AT_CLEANUP
+
+AT_BANNER([COMMENT])
+
+dnl Tests for a bug wherein a comment just before end-of-file caused an
+dnl infinite loop.
+AT_SETUP([COMMENT at end of file])
+AT_DATA([comment.sps], [dnl
+COMMENT this is a comment at end of file.
+])
+AT_CHECK([pspp -O format=csv comment.sps])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([DO IF])
+
+AT_SETUP([DO IF])
+(for a in 0 1 ' '; do
+ for b in 0 1 ' '; do
+ for c in 0 1 ' '; do
+ for d in 0 1 ' '; do
+ abcd=$a$b$c$d
+ echo "$abcd" 1>&3
+ if test "$a" = "1"; then
+ echo " $abcd A"
+ elif test "$a" = " "; then
+ :
+ elif test "$b" = "1"; then
+ echo " $abcd B"
+ elif test "$b" = " "; then
+ :
+ elif test "$c" = "1"; then
+ echo " $abcd C"
+ elif test "$c" = " "; then
+ :
+ elif test "$d" = "1"; then
+ echo " $abcd D"
+ elif test "$d" = " "; then
+ :
+ else
+ echo " $abcd E"
+ fi
+ done
+ done
+ done
+done) >expout 3>do-if.txt || exit 99
+AT_DATA([do-if.sps], [dnl
+DATA LIST FILE="do-if.txt"/A B C D 1-4 ABCD 1-4 (A).
+DO IF A.
+PRINT OUTFILE="do-if.out"/ABCD 'A'.
+ELSE IF B.
+PRINT OUTFILE="do-if.out"/ABCD 'B'.
+ELSE IF C.
+PRINT OUTFILE="do-if.out"/ABCD 'C'.
+ELSE IF D.
+PRINT OUTFILE="do-if.out"/ABCD 'D'.
+ELSE.
+PRINT OUTFILE="do-if.out"/ABCD 'E'.
+END IF.
+EXECUTE.
+])
+AT_CHECK([pspp do-if.sps], [0], [ignore])
+AT_CHECK([cat do-if.out], [0], [expout])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([DO REPEAT])
+
+AT_SETUP([DO REPEAT -- ordinary])
+AT_DATA([do-repeat.sps], [dnl
+DATA LIST NOTABLE /a 1.
+BEGIN DATA.
+0
+END DATA.
+
+DO REPEAT h = h0 TO h3 / x = 0 TO 3 / y = 8, 7.5, 6, 5.
+ COMPUTE h = x + y.
+END REPEAT.
+
+VECTOR v(6).
+COMPUTE #idx = 0.
+DO REPEAT i = 1 TO 2.
+ DO REPEAT j = 3 TO 5.
+ COMPUTE #x = i + j.
+ COMPUTE #idx = #idx + 1.
+ COMPUTE v(#idx) = #x.
+ END REPEAT.
+END REPEAT.
+
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv do-repeat.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+a,h0,h1,h2,h3,v1,v2,v3,v4,v5,v6
+0,8.00,8.50,8.00,8.00,4.00,5.00,6.00,5.00,6.00,7.00
+])
+AT_CLEANUP
+
+dnl This program tests for a bug that crashed PSPP given an empty DO
+dnl REPEAT...END REPEAT block. See bug #18407.
+AT_SETUP([DO REPEAT -- empty])
+AT_DATA([do-repeat.sps], [dnl
+DATA LIST NOTABLE /a 1.
+BEGIN DATA.
+0
+END DATA.
+
+DO REPEAT h = a.
+END REPEAT.
+])
+AT_CHECK([pspp -o pspp.csv do-repeat.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+])
+AT_CLEANUP
+
+dnl This program tests for a bug that crashed PSPP when END REPEAT
+dnl was missing. See bug #31016.
+AT_SETUP([DO REPEAT -- missing END REPEAT])
+AT_DATA([do-repeat.sps], [dnl
+DATA LIST NOTABLE /x 1.
+DO REPEAT y = 1 TO 10.
+])
+AT_CHECK([pspp -o pspp.csv do-repeat.sps], [1], [dnl
+error: DO REPEAT: DO REPEAT without END REPEAT.
+error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
+])
+AT_CHECK([cat pspp.csv], [0], [dnl
+error: DO REPEAT: DO REPEAT without END REPEAT.
+
+error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([LOOP])
+
+m4_define([LOOP_DATA], [dnl
+data list notable /x 1 y 2 z 3.
+begin data.
+121
+252
+393
+404
+end data.
+])
+
+AT_SETUP([LOOP with index])
+AT_DATA([loop.sps], [dnl
+LOOP_DATA
+loop #i=x to y by z.
+print /#i.
+end loop.
+print/'--------'.
+execute.
+])
+AT_CHECK([pspp -o pspp.csv loop.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+1.00 @&t@
+
+2.00 @&t@
+
+--------
+
+2.00 @&t@
+
+4.00 @&t@
+
+--------
+
+3.00 @&t@
+
+6.00 @&t@
+
+9.00 @&t@
+
+--------
+
+--------
+])
+AT_CLEANUP
+
+AT_SETUP([LOOP with IF condition])
+AT_DATA([loop.sps], [dnl
+LOOP_DATA
+compute #j=x.
+loop if #j <= y.
+print /#j.
+compute #j = #j + z.
+end loop.
+print/'--------'.
+execute.
+])
+AT_CHECK([pspp -o pspp.csv loop.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+1.00 @&t@
+
+2.00 @&t@
+
+--------
+
+2.00 @&t@
+
+4.00 @&t@
+
+--------
+
+3.00 @&t@
+
+6.00 @&t@
+
+9.00 @&t@
+
+--------
+
+--------
+])
+AT_CLEANUP
+
+AT_SETUP([LOOP with END IF condition])
+AT_DATA([loop.sps], [dnl
+LOOP_DATA
+compute #k=x.
+loop.
+print /#k.
+compute #k = #k + z.
+end loop if #k > y.
+print/'--------'.
+execute.
+])
+AT_CHECK([pspp -o pspp.csv loop.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+1.00 @&t@
+
+2.00 @&t@
+
+--------
+
+2.00 @&t@
+
+4.00 @&t@
+
+--------
+
+3.00 @&t@
+
+6.00 @&t@
+
+9.00 @&t@
+
+--------
+
+4.00 @&t@
+
+--------
+])
+AT_CLEANUP
+
+AT_SETUP([LOOP with index and IF based on index])
+AT_DATA([loop.sps], [dnl
+LOOP_DATA
+loop #m=x to y by z if #m < 4.
+print /#m.
+end loop.
+print/'--------'.
+execute.
+])
+AT_CHECK([pspp -o pspp.csv loop.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+1.00 @&t@
+
+2.00 @&t@
+
+--------
+
+2.00 @&t@
+
+--------
+
+3.00 @&t@
+
+--------
+
+--------
+])
+AT_CLEANUP
+
+AT_SETUP([LOOP with index and END IF based on index])
+AT_DATA([loop.sps], [dnl
+LOOP_DATA
+loop #n=x to y by z.
+print /#n.
+end loop if #n >= 4.
+print/'--------'.
+execute.
+])
+AT_CHECK([pspp -o pspp.csv loop.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+1.00 @&t@
+
+2.00 @&t@
+
+--------
+
+2.00 @&t@
+
+4.00 @&t@
+
+--------
+
+3.00 @&t@
+
+6.00 @&t@
+
+--------
+
+--------
+])
+AT_CLEANUP
+
+AT_SETUP([LOOP with index and IF and END IF based on index])
+AT_DATA([loop.sps], [dnl
+LOOP_DATA
+loop #o=x to y by z if mod(#o,2) = 0.
+print /#o.
+end loop if #o >= 4.
+print/'--------'.
+execute.
+])
+AT_CHECK([pspp -o pspp.csv loop.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+--------
+
+2.00 @&t@
+
+4.00 @&t@
+
+--------
+
+--------
+
+--------
+])
+AT_CLEANUP
+
+AT_SETUP([LOOP with no conditions])
+AT_DATA([loop.sps], [dnl
+LOOP_DATA
+set mxloops = 2.
+compute #p = x.
+loop.
+print /#p.
+compute #p = #p + z.
+do if #p >= y.
+break.
+end if.
+end loop.
+print/'--------'.
+execute.
+])
+AT_CHECK([pspp -o pspp.csv loop.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+1.00 @&t@
+
+--------
+
+2.00 @&t@
+
+4.00 @&t@
+
+--------
+
+3.00 @&t@
+
+6.00 @&t@
+
+--------
+
+4.00 @&t@
+
+--------
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([TEMPORARY])
+
+dnl Tests for a bug that manifested when all transformations are temporary.
+AT_SETUP([TEMPORARY as first transformation])
+AT_DATA([temporary.sps], [dnl
+DATA LIST LIST NOTABLE /X *.
+BEGIN DATA.
+1
+2
+3
+4
+5
+6
+7
+8
+9
+END DATA.
+
+TEMPORARY.
+SELECT IF x > 5 .
+LIST.
+
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv temporary.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+X
+6.00
+7.00
+8.00
+9.00
+
+Table: Data List
+X
+1.00
+2.00
+3.00
+4.00
+5.00
+6.00
+7.00
+8.00
+9.00
+])
+AT_CLEANUP
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<gnm:Workbook xmlns:gnm="http://www.gnumeric.org/v10.dtd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gnumeric.org/v8.xsd">
+ <gnm:Version Epoch="1" Major="6" Minor="3" Full="1.6.3"/>
+ <gnm:Attributes>
+ <gnm:Attribute>
+ <gnm:type>4</gnm:type>
+ <gnm:name>WorkbookView::show_horizontal_scrollbar</gnm:name>
+ <gnm:value>TRUE</gnm:value>
+ </gnm:Attribute>
+ <gnm:Attribute>
+ <gnm:type>4</gnm:type>
+ <gnm:name>WorkbookView::show_vertical_scrollbar</gnm:name>
+ <gnm:value>TRUE</gnm:value>
+ </gnm:Attribute>
+ <gnm:Attribute>
+ <gnm:type>4</gnm:type>
+ <gnm:name>WorkbookView::show_notebook_tabs</gnm:name>
+ <gnm:value>TRUE</gnm:value>
+ </gnm:Attribute>
+ <gnm:Attribute>
+ <gnm:type>4</gnm:type>
+ <gnm:name>WorkbookView::do_auto_completion</gnm:name>
+ <gnm:value>TRUE</gnm:value>
+ </gnm:Attribute>
+ <gnm:Attribute>
+ <gnm:type>4</gnm:type>
+ <gnm:name>WorkbookView::is_protected</gnm:name>
+ <gnm:value>FALSE</gnm:value>
+ </gnm:Attribute>
+ </gnm:Attributes>
+ <gnm:Summary>
+ <gnm:Item>
+ <gnm:name>application</gnm:name>
+ <gnm:val-string>gnumeric</gnm:val-string>
+ </gnm:Item>
+ <gnm:Item>
+ <gnm:name>author</gnm:name>
+ <gnm:val-string>John Darrington</gnm:val-string>
+ </gnm:Item>
+ </gnm:Summary>
+ <gnm:SheetNameIndex>
+ <gnm:SheetName>This</gnm:SheetName>
+ <gnm:SheetName>vars</gnm:SheetName>
+ <gnm:SheetName>That</gnm:SheetName>
+ <gnm:SheetName>Empty</gnm:SheetName>
+ <gnm:SheetName>Blank</gnm:SheetName>
+ </gnm:SheetNameIndex>
+ <gnm:Geometry Width="1278" Height="633"/>
+ <gnm:Sheets>
+ <gnm:Sheet DisplayFormulas="0" HideZero="0" HideGrid="0" HideColHeader="0" HideRowHeader="0" DisplayOutlines="1" OutlineSymbolsBelow="1" OutlineSymbolsRight="1" Visibility="GNM_SHEET_VISIBILITY_VISIBLE">
+ <gnm:Name>This</gnm:Name>
+ <gnm:MaxCol>9</gnm:MaxCol>
+ <gnm:MaxRow>17</gnm:MaxRow>
+ <gnm:Zoom>1</gnm:Zoom>
+ <gnm:PrintInformation>
+ <gnm:Margins>
+ <gnm:top Points="120" PrefUnit="cm"/>
+ <gnm:bottom Points="120" PrefUnit="cm"/>
+ </gnm:Margins>
+ <gnm:Scale type="percentage" percentage="100"/>
+ <gnm:vcenter value="0"/>
+ <gnm:hcenter value="0"/>
+ <gnm:grid value="0"/>
+ <gnm:even_if_only_styles value="0"/>
+ <gnm:monochrome value="0"/>
+ <gnm:draft value="0"/>
+ <gnm:titles value="0"/>
+ <gnm:order>d_then_r</gnm:order>
+ <gnm:orientation>portrait</gnm:orientation>
+ <gnm:Header Left="" Middle="&[TAB]" Right=""/>
+ <gnm:Footer Left="" Middle="Page &[PAGE]" Right=""/>
+ </gnm:PrintInformation>
+ <gnm:Styles>
+ <gnm:StyleRegion startCol="0" startRow="0" endCol="255" endRow="65535">
+ <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
+ <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
+ <gnm:StyleBorder>
+ <gnm:Top Style="0"/>
+ <gnm:Bottom Style="0"/>
+ <gnm:Left Style="0"/>
+ <gnm:Right Style="0"/>
+ <gnm:Diagonal Style="0"/>
+ <gnm:Rev-Diagonal Style="0"/>
+ </gnm:StyleBorder>
+ </gnm:Style>
+ </gnm:StyleRegion>
+ </gnm:Styles>
+ <gnm:Cols DefaultSizePts="48">
+ <gnm:ColInfo No="0" Unit="48" MarginA="2" MarginB="2" Count="10"/>
+ </gnm:Cols>
+ <gnm:Rows DefaultSizePts="12.75">
+ <gnm:RowInfo No="0" Unit="12.75" MarginA="0" MarginB="0" Count="15"/>
+ <gnm:RowInfo No="15" Unit="9.75" MarginA="0" MarginB="0" HardSize="1"/>
+ <gnm:RowInfo No="17" Unit="12.75" MarginA="0" MarginB="0"/>
+ </gnm:Rows>
+ <gnm:Selections CursorCol="7" CursorRow="7">
+ <gnm:Selection startCol="7" startRow="7" endCol="7" endRow="7"/>
+ </gnm:Selections>
+ <gnm:Cells>
+ <gnm:Cell Col="0" Row="0" ValueType="60">numeral</gnm:Cell>
+ <gnm:Cell Col="1" Row="0" ValueType="60">eng_name</gnm:Cell>
+ <gnm:Cell Col="2" Row="0" ValueType="60">xxx</gnm:Cell>
+ <gnm:Cell Col="0" Row="1" ValueType="30">1</gnm:Cell>
+ <gnm:Cell Col="1" Row="1" ValueType="60">One</gnm:Cell>
+ <gnm:Cell Col="2" Row="1" ValueType="60">Eins</gnm:Cell>
+ <gnm:Cell Col="0" Row="2" ValueType="30">2</gnm:Cell>
+ <gnm:Cell Col="1" Row="2" ValueType="60">Two</gnm:Cell>
+ <gnm:Cell Col="2" Row="2" ValueType="60">Zwei</gnm:Cell>
+ <gnm:Cell Col="0" Row="3" ValueType="30">3</gnm:Cell>
+ <gnm:Cell Col="1" Row="3" ValueType="60">Three</gnm:Cell>
+ <gnm:Cell Col="2" Row="3" ValueType="60">Drei</gnm:Cell>
+ <gnm:Cell Col="2" Row="4" ValueType="60">Vier</gnm:Cell>
+ <gnm:Cell Col="5" Row="6" ValueType="60">XY</gnm:Cell>
+ <gnm:Cell Col="6" Row="6" ValueType="60">xxx</gnm:Cell>
+ <gnm:Cell Col="7" Row="6" ValueType="60">xxxx</gnm:Cell>
+ <gnm:Cell Col="8" Row="6" ValueType="60">xxxx</gnm:Cell>
+ <gnm:Cell Col="5" Row="7" ValueType="60">yyy</gnm:Cell>
+ <gnm:Cell Col="6" Row="7" ValueType="60">V1</gnm:Cell>
+ <gnm:Cell Col="7" Row="7" ValueType="60">V2</gnm:Cell>
+ <gnm:Cell Col="5" Row="8" ValueType="60">yyy</gnm:Cell>
+ <gnm:Cell Col="6" Row="8" ValueType="30">0</gnm:Cell>
+ <gnm:Cell Col="7" Row="8" ValueType="60">fred</gnm:Cell>
+ <gnm:Cell Col="8" Row="8" ValueType="30">20</gnm:Cell>
+ <gnm:Cell Col="9" Row="8" ValueType="60">$$$$</gnm:Cell>
+ <gnm:Cell Col="5" Row="9" ValueType="60">yyy</gnm:Cell>
+ <gnm:Cell Col="6" Row="9" ValueType="30">1</gnm:Cell>
+ <gnm:Cell Col="7" Row="9" ValueType="30">11</gnm:Cell>
+ <gnm:Cell Col="8" Row="9" ValueType="30">21</gnm:Cell>
+ <gnm:Cell Col="9" Row="9" ValueType="60">$$$$</gnm:Cell>
+ <gnm:Cell Col="5" Row="10" ValueType="60">yyyy</gnm:Cell>
+ <gnm:Cell Col="6" Row="10" ValueType="30">2</gnm:Cell>
+ <gnm:Cell Col="7" Row="10" ValueType="60">twelve</gnm:Cell>
+ <gnm:Cell Col="8" Row="10" ValueType="30">22</gnm:Cell>
+ <gnm:Cell Col="9" Row="10" ValueType="60">$$$$</gnm:Cell>
+ <gnm:Cell Col="5" Row="11" ValueType="60">yyyy</gnm:Cell>
+ <gnm:Cell Col="6" Row="11" ValueType="30">3</gnm:Cell>
+ <gnm:Cell Col="7" Row="11" ValueType="30">13</gnm:Cell>
+ <gnm:Cell Col="8" Row="11" ValueType="30">23</gnm:Cell>
+ <gnm:Cell Col="9" Row="11" ValueType="60">$$$$</gnm:Cell>
+ <gnm:Cell Col="1" Row="12" ValueType="60">Eleven</gnm:Cell>
+ <gnm:Cell Col="5" Row="12" ValueType="60">yyyy</gnm:Cell>
+ <gnm:Cell Col="6" Row="12" ValueType="30">4</gnm:Cell>
+ <gnm:Cell Col="7" Row="12" ValueType="30">14</gnm:Cell>
+ <gnm:Cell Col="8" Row="12" ValueType="30">24</gnm:Cell>
+ <gnm:Cell Col="9" Row="12" ValueType="60">$$$$</gnm:Cell>
+ <gnm:Cell Col="5" Row="13" ValueType="60">zzz</gnm:Cell>
+ <gnm:Cell Col="6" Row="13" ValueType="60">zzz</gnm:Cell>
+ <gnm:Cell Col="7" Row="13" ValueType="60">zzz</gnm:Cell>
+ <gnm:Cell Col="8" Row="13" ValueType="60">zzz</gnm:Cell>
+ <gnm:Cell Col="9" Row="13" ValueType="60">zzz</gnm:Cell>
+ <gnm:Cell Col="1" Row="17" ValueType="60">Seventeen</gnm:Cell>
+ </gnm:Cells>
+ <gnm:SheetLayout TopLeft="A1"/>
+ <gnm:Solver ProblemType="1" Inputs="" MaxTime="0" MaxIter="0" NonNeg="1" Discr="0" AutoScale="0" ShowIter="0" AnswerR="0" SensitivityR="0" LimitsR="0" PerformR="0" ProgramR="0"/>
+ </gnm:Sheet>
+ <gnm:Sheet DisplayFormulas="0" HideZero="0" HideGrid="0" HideColHeader="0" HideRowHeader="0" DisplayOutlines="1" OutlineSymbolsBelow="1" OutlineSymbolsRight="1" Visibility="GNM_SHEET_VISIBILITY_VISIBLE">
+ <gnm:Name>vars</gnm:Name>
+ <gnm:MaxCol>4</gnm:MaxCol>
+ <gnm:MaxRow>8</gnm:MaxRow>
+ <gnm:Zoom>1</gnm:Zoom>
+ <gnm:PrintInformation>
+ <gnm:Margins>
+ <gnm:top Points="120" PrefUnit="cm"/>
+ <gnm:bottom Points="120" PrefUnit="cm"/>
+ </gnm:Margins>
+ <gnm:Scale type="percentage" percentage="100"/>
+ <gnm:vcenter value="0"/>
+ <gnm:hcenter value="0"/>
+ <gnm:grid value="0"/>
+ <gnm:even_if_only_styles value="0"/>
+ <gnm:monochrome value="0"/>
+ <gnm:draft value="0"/>
+ <gnm:titles value="0"/>
+ <gnm:order>d_then_r</gnm:order>
+ <gnm:orientation>portrait</gnm:orientation>
+ <gnm:Header Left="" Middle="&[TAB]" Right=""/>
+ <gnm:Footer Left="" Middle="Page &[PAGE]" Right=""/>
+ </gnm:PrintInformation>
+ <gnm:Styles>
+ <gnm:StyleRegion startCol="0" startRow="0" endCol="255" endRow="65535">
+ <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
+ <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
+ <gnm:StyleBorder>
+ <gnm:Top Style="0"/>
+ <gnm:Bottom Style="0"/>
+ <gnm:Left Style="0"/>
+ <gnm:Right Style="0"/>
+ <gnm:Diagonal Style="0"/>
+ <gnm:Rev-Diagonal Style="0"/>
+ </gnm:StyleBorder>
+ </gnm:Style>
+ </gnm:StyleRegion>
+ </gnm:Styles>
+ <gnm:Cols DefaultSizePts="48">
+ <gnm:ColInfo No="0" Unit="48" MarginA="2" MarginB="2" Count="5"/>
+ </gnm:Cols>
+ <gnm:Rows DefaultSizePts="12.75">
+ <gnm:RowInfo No="0" Unit="12.75" MarginA="0" MarginB="0" Count="5"/>
+ </gnm:Rows>
+ <gnm:Selections CursorCol="0" CursorRow="0">
+ <gnm:Selection startCol="0" startRow="0" endCol="0" endRow="0"/>
+ </gnm:Selections>
+ <gnm:Cells>
+ <gnm:Cell Col="0" Row="0" ValueType="60">1v12</gnm:Cell>
+ <gnm:Cell Col="1" Row="0" ValueType="60">var&x@</gnm:Cell>
+ <gnm:Cell Col="2" Row="0" ValueType="60">a(43)</gnm:Cell>
+ <gnm:Cell Col="3" Row="0" ValueType="60">varx</gnm:Cell>
+ <gnm:Cell Col="4" Row="0" ValueType="60">varx</gnm:Cell>
+ <gnm:Cell Col="0" Row="1" ValueType="30">1</gnm:Cell>
+ <gnm:Cell Col="1" Row="1" ValueType="30">2</gnm:Cell>
+ <gnm:Cell Col="2" Row="1" ValueType="30">23</gnm:Cell>
+ <gnm:Cell Col="3" Row="1" ValueType="30">2</gnm:Cell>
+ <gnm:Cell Col="4" Row="1" ValueType="30">4</gnm:Cell>
+ <gnm:Cell Col="0" Row="2" ValueType="30">3</gnm:Cell>
+ <gnm:Cell Col="1" Row="2" ValueType="30">4</gnm:Cell>
+ <gnm:Cell Col="2" Row="2" ValueType="30">23</gnm:Cell>
+ <gnm:Cell Col="3" Row="2" ValueType="30">3</gnm:Cell>
+ <gnm:Cell Col="4" Row="2" ValueType="30">4</gnm:Cell>
+ <gnm:Cell Col="1" Row="8" ValueType="10"></gnm:Cell>
+ </gnm:Cells>
+ <gnm:SheetLayout TopLeft="A1"/>
+ <gnm:Solver ProblemType="1" Inputs="" MaxTime="0" MaxIter="0" NonNeg="1" Discr="0" AutoScale="0" ShowIter="0" AnswerR="0" SensitivityR="0" LimitsR="0" PerformR="0" ProgramR="0"/>
+ </gnm:Sheet>
+ <gnm:Sheet DisplayFormulas="0" HideZero="0" HideGrid="0" HideColHeader="0" HideRowHeader="0" DisplayOutlines="1" OutlineSymbolsBelow="1" OutlineSymbolsRight="1" Visibility="GNM_SHEET_VISIBILITY_VISIBLE">
+ <gnm:Name>That</gnm:Name>
+ <gnm:MaxCol>3</gnm:MaxCol>
+ <gnm:MaxRow>4</gnm:MaxRow>
+ <gnm:Zoom>1</gnm:Zoom>
+ <gnm:PrintInformation>
+ <gnm:Margins>
+ <gnm:top Points="120" PrefUnit="cm"/>
+ <gnm:bottom Points="120" PrefUnit="cm"/>
+ </gnm:Margins>
+ <gnm:Scale type="percentage" percentage="100"/>
+ <gnm:vcenter value="0"/>
+ <gnm:hcenter value="0"/>
+ <gnm:grid value="0"/>
+ <gnm:even_if_only_styles value="0"/>
+ <gnm:monochrome value="0"/>
+ <gnm:draft value="0"/>
+ <gnm:titles value="0"/>
+ <gnm:order>d_then_r</gnm:order>
+ <gnm:orientation>portrait</gnm:orientation>
+ <gnm:Header Left="" Middle="&[TAB]" Right=""/>
+ <gnm:Footer Left="" Middle="Page &[PAGE]" Right=""/>
+ </gnm:PrintInformation>
+ <gnm:Styles>
+ <gnm:StyleRegion startCol="0" startRow="4096" endCol="63" endRow="65535">
+ <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
+ <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
+ <gnm:StyleBorder>
+ <gnm:Top Style="0"/>
+ <gnm:Bottom Style="0"/>
+ <gnm:Left Style="0"/>
+ <gnm:Right Style="0"/>
+ <gnm:Diagonal Style="0"/>
+ <gnm:Rev-Diagonal Style="0"/>
+ </gnm:StyleBorder>
+ </gnm:Style>
+ </gnm:StyleRegion>
+ <gnm:StyleRegion startCol="4" startRow="0" endCol="15" endRow="255">
+ <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
+ <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
+ <gnm:StyleBorder>
+ <gnm:Top Style="0"/>
+ <gnm:Bottom Style="0"/>
+ <gnm:Left Style="0"/>
+ <gnm:Right Style="0"/>
+ <gnm:Diagonal Style="0"/>
+ <gnm:Rev-Diagonal Style="0"/>
+ </gnm:StyleBorder>
+ </gnm:Style>
+ </gnm:StyleRegion>
+ <gnm:StyleRegion startCol="0" startRow="16" endCol="3" endRow="255">
+ <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
+ <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
+ <gnm:StyleBorder>
+ <gnm:Top Style="0"/>
+ <gnm:Bottom Style="0"/>
+ <gnm:Left Style="0"/>
+ <gnm:Right Style="0"/>
+ <gnm:Diagonal Style="0"/>
+ <gnm:Rev-Diagonal Style="0"/>
+ </gnm:StyleBorder>
+ </gnm:Style>
+ </gnm:StyleRegion>
+ <gnm:StyleRegion startCol="16" startRow="0" endCol="63" endRow="4095">
+ <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
+ <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
+ <gnm:StyleBorder>
+ <gnm:Top Style="0"/>
+ <gnm:Bottom Style="0"/>
+ <gnm:Left Style="0"/>
+ <gnm:Right Style="0"/>
+ <gnm:Diagonal Style="0"/>
+ <gnm:Rev-Diagonal Style="0"/>
+ </gnm:StyleBorder>
+ </gnm:Style>
+ </gnm:StyleRegion>
+ <gnm:StyleRegion startCol="64" startRow="0" endCol="255" endRow="65535">
+ <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
+ <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
+ <gnm:StyleBorder>
+ <gnm:Top Style="0"/>
+ <gnm:Bottom Style="0"/>
+ <gnm:Left Style="0"/>
+ <gnm:Right Style="0"/>
+ <gnm:Diagonal Style="0"/>
+ <gnm:Rev-Diagonal Style="0"/>
+ </gnm:StyleBorder>
+ </gnm:Style>
+ </gnm:StyleRegion>
+ <gnm:StyleRegion startCol="3" startRow="0" endCol="3" endRow="15">
+ <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
+ <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
+ <gnm:StyleBorder>
+ <gnm:Top Style="0"/>
+ <gnm:Bottom Style="0"/>
+ <gnm:Left Style="0"/>
+ <gnm:Right Style="0"/>
+ <gnm:Diagonal Style="0"/>
+ <gnm:Rev-Diagonal Style="0"/>
+ </gnm:StyleBorder>
+ </gnm:Style>
+ </gnm:StyleRegion>
+ <gnm:StyleRegion startCol="2" startRow="5" endCol="2" endRow="15">
+ <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
+ <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
+ <gnm:StyleBorder>
+ <gnm:Top Style="0"/>
+ <gnm:Bottom Style="0"/>
+ <gnm:Left Style="0"/>
+ <gnm:Right Style="0"/>
+ <gnm:Diagonal Style="0"/>
+ <gnm:Rev-Diagonal Style="0"/>
+ </gnm:StyleBorder>
+ </gnm:Style>
+ </gnm:StyleRegion>
+ <gnm:StyleRegion startCol="2" startRow="1" endCol="2" endRow="4">
+ <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="0.00">
+ <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
+ <gnm:StyleBorder>
+ <gnm:Top Style="0"/>
+ <gnm:Bottom Style="0"/>
+ <gnm:Left Style="0"/>
+ <gnm:Right Style="0"/>
+ <gnm:Diagonal Style="0"/>
+ <gnm:Rev-Diagonal Style="0"/>
+ </gnm:StyleBorder>
+ </gnm:Style>
+ </gnm:StyleRegion>
+ <gnm:StyleRegion startCol="0" startRow="256" endCol="15" endRow="4095">
+ <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
+ <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
+ <gnm:StyleBorder>
+ <gnm:Top Style="0"/>
+ <gnm:Bottom Style="0"/>
+ <gnm:Left Style="0"/>
+ <gnm:Right Style="0"/>
+ <gnm:Diagonal Style="0"/>
+ <gnm:Rev-Diagonal Style="0"/>
+ </gnm:StyleBorder>
+ </gnm:Style>
+ </gnm:StyleRegion>
+ <gnm:StyleRegion startCol="0" startRow="0" endCol="1" endRow="15">
+ <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
+ <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
+ <gnm:StyleBorder>
+ <gnm:Top Style="0"/>
+ <gnm:Bottom Style="0"/>
+ <gnm:Left Style="0"/>
+ <gnm:Right Style="0"/>
+ <gnm:Diagonal Style="0"/>
+ <gnm:Rev-Diagonal Style="0"/>
+ </gnm:StyleBorder>
+ </gnm:Style>
+ </gnm:StyleRegion>
+ <gnm:StyleRegion startCol="2" startRow="0" endCol="2" endRow="0">
+ <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
+ <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
+ <gnm:StyleBorder>
+ <gnm:Top Style="0"/>
+ <gnm:Bottom Style="0"/>
+ <gnm:Left Style="0"/>
+ <gnm:Right Style="0"/>
+ <gnm:Diagonal Style="0"/>
+ <gnm:Rev-Diagonal Style="0"/>
+ </gnm:StyleBorder>
+ </gnm:Style>
+ </gnm:StyleRegion>
+ </gnm:Styles>
+ <gnm:Cols DefaultSizePts="48">
+ <gnm:ColInfo No="0" Unit="48" MarginA="2" MarginB="2" Count="2"/>
+ <gnm:ColInfo No="2" Unit="90.75" MarginA="2" MarginB="2" HardSize="1"/>
+ <gnm:ColInfo No="3" Unit="81" MarginA="2" MarginB="2" HardSize="1"/>
+ </gnm:Cols>
+ <gnm:Rows DefaultSizePts="12.75">
+ <gnm:RowInfo No="0" Unit="12.75" MarginA="0" MarginB="0" Count="5"/>
+ </gnm:Rows>
+ <gnm:Selections CursorCol="0" CursorRow="5">
+ <gnm:Selection startCol="0" startRow="5" endCol="0" endRow="5"/>
+ </gnm:Selections>
+ <gnm:Cells>
+ <gnm:Cell Col="0" Row="0" ValueType="60">name</gnm:Cell>
+ <gnm:Cell Col="1" Row="0" ValueType="60">id</gnm:Cell>
+ <gnm:Cell Col="2" Row="0" ValueType="60">height</gnm:Cell>
+ <gnm:Cell Col="0" Row="1" ValueType="60">fred</gnm:Cell>
+ <gnm:Cell Col="1" Row="1" ValueType="30">0</gnm:Cell>
+ <gnm:Cell Col="2" Row="1" ValueType="40">23.4</gnm:Cell>
+ <gnm:Cell Col="0" Row="2" ValueType="60">bert </gnm:Cell>
+ <gnm:Cell Col="1" Row="2" ValueType="30">1</gnm:Cell>
+ <gnm:Cell Col="2" Row="2" ValueType="40">0.56</gnm:Cell>
+ <gnm:Cell Col="0" Row="3" ValueType="60">charlie</gnm:Cell>
+ <gnm:Cell Col="1" Row="3" ValueType="30">2</gnm:Cell>
+ <gnm:Cell Col="2" Row="3" ValueType="60">n/a</gnm:Cell>
+ <gnm:Cell Col="0" Row="4" ValueType="60">dick</gnm:Cell>
+ <gnm:Cell Col="1" Row="4" ValueType="30">3</gnm:Cell>
+ <gnm:Cell Col="2" Row="4" ValueType="40" ValueFormat="0.00">-34.09</gnm:Cell>
+ </gnm:Cells>
+ <gnm:SheetLayout TopLeft="A1"/>
+ <gnm:Solver ProblemType="1" Inputs="" MaxTime="0" MaxIter="0" NonNeg="1" Discr="0" AutoScale="0" ShowIter="0" AnswerR="0" SensitivityR="0" LimitsR="0" PerformR="0" ProgramR="0"/>
+ </gnm:Sheet>
+ <gnm:Sheet DisplayFormulas="0" HideZero="0" HideGrid="0" HideColHeader="0" HideRowHeader="0" DisplayOutlines="1" OutlineSymbolsBelow="1" OutlineSymbolsRight="1" Visibility="GNM_SHEET_VISIBILITY_VISIBLE">
+ <gnm:Name>Empty</gnm:Name>
+ <gnm:MaxCol>-1</gnm:MaxCol>
+ <gnm:MaxRow>-1</gnm:MaxRow>
+ <gnm:Zoom>1</gnm:Zoom>
+ <gnm:PrintInformation>
+ <gnm:Margins>
+ <gnm:top Points="120" PrefUnit="cm"/>
+ <gnm:bottom Points="120" PrefUnit="cm"/>
+ </gnm:Margins>
+ <gnm:Scale type="percentage" percentage="100"/>
+ <gnm:vcenter value="0"/>
+ <gnm:hcenter value="0"/>
+ <gnm:grid value="0"/>
+ <gnm:even_if_only_styles value="0"/>
+ <gnm:monochrome value="0"/>
+ <gnm:draft value="0"/>
+ <gnm:titles value="0"/>
+ <gnm:order>d_then_r</gnm:order>
+ <gnm:orientation>portrait</gnm:orientation>
+ <gnm:Header Left="" Middle="&[TAB]" Right=""/>
+ <gnm:Footer Left="" Middle="Page &[PAGE]" Right=""/>
+ </gnm:PrintInformation>
+ <gnm:Styles>
+ <gnm:StyleRegion startCol="0" startRow="0" endCol="255" endRow="65535">
+ <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
+ <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
+ <gnm:StyleBorder>
+ <gnm:Top Style="0"/>
+ <gnm:Bottom Style="0"/>
+ <gnm:Left Style="0"/>
+ <gnm:Right Style="0"/>
+ <gnm:Diagonal Style="0"/>
+ <gnm:Rev-Diagonal Style="0"/>
+ </gnm:StyleBorder>
+ </gnm:Style>
+ </gnm:StyleRegion>
+ </gnm:Styles>
+ <gnm:Cols DefaultSizePts="48"/>
+ <gnm:Rows DefaultSizePts="12.75"/>
+ <gnm:Selections CursorCol="0" CursorRow="0">
+ <gnm:Selection startCol="0" startRow="0" endCol="0" endRow="0"/>
+ </gnm:Selections>
+ <gnm:Cells/>
+ <gnm:SheetLayout TopLeft="A1"/>
+ <gnm:Solver ProblemType="1" Inputs="" MaxTime="0" MaxIter="0" NonNeg="1" Discr="0" AutoScale="0" ShowIter="0" AnswerR="0" SensitivityR="0" LimitsR="0" PerformR="0" ProgramR="0"/>
+ </gnm:Sheet>
+ <gnm:Sheet DisplayFormulas="0" HideZero="0" HideGrid="0" HideColHeader="0" HideRowHeader="0" DisplayOutlines="1" OutlineSymbolsBelow="1" OutlineSymbolsRight="1" Visibility="GNM_SHEET_VISIBILITY_VISIBLE">
+ <gnm:Name>Blank</gnm:Name>
+ <gnm:MaxCol>3</gnm:MaxCol>
+ <gnm:MaxRow>2</gnm:MaxRow>
+ <gnm:Zoom>1</gnm:Zoom>
+ <gnm:PrintInformation>
+ <gnm:Margins>
+ <gnm:top Points="120" PrefUnit="cm"/>
+ <gnm:bottom Points="120" PrefUnit="cm"/>
+ </gnm:Margins>
+ <gnm:Scale type="percentage" percentage="100"/>
+ <gnm:vcenter value="0"/>
+ <gnm:hcenter value="0"/>
+ <gnm:grid value="0"/>
+ <gnm:even_if_only_styles value="0"/>
+ <gnm:monochrome value="0"/>
+ <gnm:draft value="0"/>
+ <gnm:titles value="0"/>
+ <gnm:order>d_then_r</gnm:order>
+ <gnm:orientation>portrait</gnm:orientation>
+ <gnm:Header Left="" Middle="&[TAB]" Right=""/>
+ <gnm:Footer Left="" Middle="Page &[PAGE]" Right=""/>
+ </gnm:PrintInformation>
+ <gnm:Styles>
+ <gnm:StyleRegion startCol="0" startRow="0" endCol="255" endRow="65535">
+ <gnm:Style HAlign="1" VAlign="2" WrapText="0" ShrinkToFit="0" Rotation="0" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
+ <gnm:Font Unit="10" Bold="0" Italic="0" Underline="0" StrikeThrough="0" Script="0">Sans</gnm:Font>
+ <gnm:StyleBorder>
+ <gnm:Top Style="0"/>
+ <gnm:Bottom Style="0"/>
+ <gnm:Left Style="0"/>
+ <gnm:Right Style="0"/>
+ <gnm:Diagonal Style="0"/>
+ <gnm:Rev-Diagonal Style="0"/>
+ </gnm:StyleBorder>
+ </gnm:Style>
+ </gnm:StyleRegion>
+ </gnm:Styles>
+ <gnm:Cols DefaultSizePts="48">
+ <gnm:ColInfo No="0" Unit="48" MarginA="2" MarginB="2" Count="4"/>
+ </gnm:Cols>
+ <gnm:Rows DefaultSizePts="12.75">
+ <gnm:RowInfo No="0" Unit="12.75" MarginA="0" MarginB="0" Count="3"/>
+ </gnm:Rows>
+ <gnm:Selections CursorCol="3" CursorRow="1">
+ <gnm:Selection startCol="3" startRow="1" endCol="3" endRow="1"/>
+ </gnm:Selections>
+ <gnm:Cells>
+ <gnm:Cell Col="0" Row="0" ValueType="60">vone</gnm:Cell>
+ <gnm:Cell Col="1" Row="0" ValueType="60">vtwo</gnm:Cell>
+ <gnm:Cell Col="2" Row="0" ValueType="60">vthree</gnm:Cell>
+ <gnm:Cell Col="3" Row="0" ValueType="60">v4</gnm:Cell>
+ <gnm:Cell Col="0" Row="1" ValueType="30">1</gnm:Cell>
+ <gnm:Cell Col="1" Row="1" ValueType="30">3</gnm:Cell>
+ <gnm:Cell Col="3" Row="1" ValueType="30">5</gnm:Cell>
+ <gnm:Cell Col="0" Row="2" ValueType="30">2</gnm:Cell>
+ <gnm:Cell Col="1" Row="2" ValueType="30">4</gnm:Cell>
+ <gnm:Cell Col="3" Row="2" ValueType="30">6</gnm:Cell>
+ </gnm:Cells>
+ <gnm:SheetLayout TopLeft="A1"/>
+ <gnm:Solver ProblemType="1" Inputs="" MaxTime="0" MaxIter="0" NonNeg="1" Discr="0" AutoScale="0" ShowIter="0" AnswerR="0" SensitivityR="0" LimitsR="0" PerformR="0" ProgramR="0"/>
+ </gnm:Sheet>
+ </gnm:Sheets>
+ <gnm:UIData SelectedTab="4"/>
+ <gnm:Calculation ManualRecalc="0" EnableIteration="1" MaxIterations="100" IterationTolerance="0.001"/>
+</gnm:Workbook>
C,F8.0
D,F8.0
-"data-list.pspp:3: warning: (columns 9-13, F field) Number followed by garbage."
+data-list.pspp:3.9-13: warning: Data for variable D is not valid as format F: Number followed by garbage.
Table: Data List
A,B,C,D
list.
])
AT_CHECK([pspp -O format=csv data-list.pspp], [0], [dnl
-"data-list.pspp:4: warning: (column 6, F field) Field contents are not numeric."
+data-list.pspp:4.6: warning: Data for variable D is not valid as format F: Field contents are not numeric.
Table: Data List
A,B,C,D
list.
])
AT_CHECK([pspp -O format=csv data-list.pspp], [0], [dnl
-"data-list.pspp:8: warning: (columns 1-3, F field) Field contents are not numeric."
+data-list.pspp:8.1-3: warning: Data for variable count is not valid as format F: Field contents are not numeric.
-"data-list.pspp:11: warning: (columns 1-3, F field) Field contents are not numeric."
+data-list.pspp:11.1-3: warning: Data for variable count is not valid as format F: Field contents are not numeric.
Table: Data List
start,end,count
9,0
])
AT_CLEANUP
+
+dnl Test that PSPP accepts LF and CR LF as line ends, but
+dnl treats isolated CR as linear whitespace.
+AT_SETUP([DATA LIST with various line-ends])
+AT_DATA([data-list.sps], [dnl
+data list list notable file='input.txt'/a b c.
+list.
+])
+printf '1 2 3\n4 5 6\r\n7\r8\r9\r\n10 11 12\n13 14 15 \r\n16\r\r17\r18\n' > input.txt
+dnl Make sure that input.txt actually received the data that we expect.
+dnl It might not have, if we're running on a system that translates \n
+dnl into some other sequence.
+AT_CHECK([cksum input.txt], [0], [1732021750 50 input.txt
+])
+AT_CHECK([pspp -o pspp.csv data-list.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+a,b,c
+1.00,2.00,3.00
+4.00,5.00,6.00
+7.00,8.00,9.00
+10.00,11.00,12.00
+13.00,14.00,15.00
+16.00,17.00,18.00
+])
+AT_CLEANUP
+
+AT_SETUP([DATA LIST properly expands tabs in input])
+AT_DATA([data-list.sps], [dnl
+data list notable /X 1-50 (a).
+begin data.
+ 1 12 123 1234 12345 .
+end data.
+print /x.
+print outfile='print.txt' /x.
+write outfile='write.txt' /x.
+execute.
+])
+AT_CHECK([sed -n '/12345/l' data-list.sps], [0], [dnl
+\t1\t12\t123\t1234\t12345 .$
+])
+AT_CHECK([pspp -o pspp.csv data-list.sps])
+dnl The CSV driver drops leading spaces so they don't appear here:
+AT_CHECK([cat pspp.csv], [0], [dnl
+1 12 123 1234 12345 . @&t@
+])
+dnl But they do appear in print.txt. The PRINT command also puts a space
+dnl at the beginning of the line and after the variable:
+AT_CHECK([cat print.txt], [0], [dnl
+ 1 12 123 1234 12345 . @&t@
+])
+dnl WRITE doesn't add spaces at the beginning or end of lines:
+AT_CHECK([cat write.txt], [0], [dnl
+ 1 12 123 1234 12345 .
+])
+AT_CLEANUP
2,1
])
AT_CLEANUP
+
+m4_define([DATA_READER_BINARY],
+ [AT_SETUP([read and write files with $1])
+ AT_DATA([input.txt], [dnl
+07-22-2007
+10-06-2007
+321
+07-14-1789
+08-26-1789
+4
+01-01-1972
+12-31-1999
+682
+])
+ AT_DATA([make-binary.pl], [dnl
+use strict;
+use warnings;
+
+# ASCII to EBCDIC translation table
+our ($ascii2ebcdic) = ""
+. "\x00\x01\x02\x03\x37\x2d\x2e\x2f"
+. "\x16\x05\x25\x0b\x0c\x0d\x0e\x0f"
+. "\x10\x11\x12\x13\x3c\x3d\x32\x26"
+. "\x18\x19\x3f\x27\x1c\x1d\x1e\x1f"
+. "\x40\x5a\x7f\x7b\x5b\x6c\x50\x7d"
+. "\x4d\x5d\x5c\x4e\x6b\x60\x4b\x61"
+. "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
+. "\xf8\xf9\x7a\x5e\x4c\x7e\x6e\x6f"
+. "\x7c\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
+. "\xc8\xc9\xd1\xd2\xd3\xd4\xd5\xd6"
+. "\xd7\xd8\xd9\xe2\xe3\xe4\xe5\xe6"
+. "\xe7\xe8\xe9\xad\xe0\xbd\x9a\x6d"
+. "\x79\x81\x82\x83\x84\x85\x86\x87"
+. "\x88\x89\x91\x92\x93\x94\x95\x96"
+. "\x97\x98\x99\xa2\xa3\xa4\xa5\xa6"
+. "\xa7\xa8\xa9\xc0\x4f\xd0\x5f\x07"
+. "\x20\x21\x22\x23\x24\x15\x06\x17"
+. "\x28\x29\x2a\x2b\x2c\x09\x0a\x1b"
+. "\x30\x31\x1a\x33\x34\x35\x36\x08"
+. "\x38\x39\x3a\x3b\x04\x14\x3e\xe1"
+. "\x41\x42\x43\x44\x45\x46\x47\x48"
+. "\x49\x51\x52\x53\x54\x55\x56\x57"
+. "\x58\x59\x62\x63\x64\x65\x66\x67"
+. "\x68\x69\x70\x71\x72\x73\x74\x75"
+. "\x76\x77\x78\x80\x8a\x8b\x8c\x8d"
+. "\x8e\x8f\x90\x6a\x9b\x9c\x9d\x9e"
+. "\x9f\xa0\xaa\xab\xac\x4a\xae\xaf"
+. "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
+. "\xb8\xb9\xba\xbb\xbc\xa1\xbe\xbf"
+. "\xca\xcb\xcc\xcd\xce\xcf\xda\xdb"
+. "\xdc\xdd\xde\xdf\xea\xeb\xec\xed"
+. "\xee\xef\xfa\xfb\xfc\xfd\xfe\xff";
+length ($ascii2ebcdic) == 256 || die;
+
+open (INPUT, '<', 'input.txt') or die "input.txt: open: $!\n";
+my (@data) = <INPUT> or die;
+close (INPUT) or die;
+chomp $_ foreach @data;
+
+our @records;
+
+$2
+
+sub a2e {
+ local ($_) = @_;
+ my ($s) = "";
+ foreach (split (//)) {
+ $s .= substr ($ascii2ebcdic, ord, 1);
+ }
+ return $s;
+}
+
+sub min {
+ my ($a, $b) = @_;
+ return $a < $b ? $a : $b
+}
+
+sub dump_records {
+ while (@records) {
+ my ($n) = min (int (rand (5)) + 1, scalar (@records));
+ my (@r) = splice (@records, 0, $n);
+ my ($len) = 0;
+ $len += length foreach @r;
+ print pack ("n xx", $len + 4);
+ print foreach @r;
+ }
+}
+])
+ AT_CHECK([$PERL make-binary.pl < input.txt > input.bin])
+ AT_DATA([data-reader.sps], [dnl
+FILE HANDLE input/NAME='input.bin'/$1.
+DATA LIST FIXED FILE=input NOTABLE
+ /1 start 1-10 (ADATE)
+ /2 end 1-10 (ADATE)
+ /3 count 1-3.
+LIST.
+
+* Output the data to a new file in the same format.
+FILE HANDLE OUTPUT/NAME='output.bin'/$1.
+COMPUTE count=count + 1.
+PRINT OUTFILE=output/start end count.
+EXECUTE.
+])
+ AT_CHECK([pspp -O format=csv data-reader.sps], [0], [dnl
+Table: Data List
+start,end,count
+07/22/2007,10/06/2007,321
+07/14/1789,08/26/1789,4
+01/01/1972,12/31/1999,682
+])
+ AT_CHECK([test -s output.bin])
+ AT_DATA([data-reader-2.sps], [dnl
+* Re-read the new data and list it, to verify that it was written correctly.
+FILE HANDLE OUTPUT/NAME='output.bin'/$1.
+DATA LIST FIXED FILE=output NOTABLE/
+ start 2-11 (ADATE)
+ end 13-22 (ADATE)
+ count 24-26.
+LIST.
+])
+ AT_CHECK([pspp -O format=csv data-reader-2.sps], [0], [dnl
+Table: Data List
+start,end,count
+07/22/2007,10/06/2007,322
+07/14/1789,08/26/1789,5
+01/01/1972,12/31/1999,683
+])
+ AT_CLEANUP])
+
+DATA_READER_BINARY([MODE=BINARY],
+ [for $_ (@data) {
+ my ($reclen) = pack ("V", length);
+ print $reclen, $_, $reclen;
+ }])
+
+DATA_READER_BINARY([MODE=360 /RECFORM=FIXED /LRECL=32],
+ [my ($lrecl) = 32;
+ for $_ (@data) {
+ my ($out) = substr ($_, 0, $lrecl);
+ $out .= ' ' x ($lrecl - length ($out));
+ length ($out) == 32 or die;
+ print +a2e ($out);
+ }])
+
+DATA_READER_BINARY([MODE=360 /RECFORM=VARIABLE],
+ [for $_ (@data) {
+ push (@records, pack ("n xx", length ($_) + 4) . a2e ($_));
+ }
+ dump_records ();])
+
+DATA_READER_BINARY([MODE=360 /RECFORM=SPANNED],
+ [[for my $line (@data) {
+ local ($_) = $line;
+ my (@r);
+ while (length) {
+ my ($n) = min (int (rand (5)), length);
+ push (@r, substr ($_, 0, $n, ''));
+ }
+ foreach my $i (0...$#r) {
+ my $scc = ($#r == 0 ? 0
+ : $i == 0 ? 1
+ : $i == $#r ? 2
+ : 3);
+ push (@records,
+ pack ("nCx", length ($r[$i]) + 4, $scc) . a2e ($r[$i]));
+ }
+ }
+ dump_records ();]])
--- /dev/null
+AT_BANNER([FILE HANDLE])
+
+AT_SETUP([FILE HANDLE])
+AT_DATA([wiggle.txt], [dnl
+1
+2
+5
+109
+])
+AT_DATA([file-handle.sps], [dnl
+FILE HANDLE myhandle /NAME='wiggle.txt'.
+DATA LIST LIST FILE=myhandle /x *.
+LIST.
+])
+AT_CHECK([pspp -O format=csv file-handle.sps], [0], [dnl
+Table: Reading free-form data from myhandle.
+Variable,Format
+x,F8.0
+
+Table: Data List
+x
+1.00
+2.00
+5.00
+109.00
+])
+AT_CLEANUP
+
--- /dev/null
+AT_BANNER([GET DATA /TYPE=GNM])
+
+AT_SETUP([GET DATA /TYPE=GNM with CELLRANGE])
+AT_SKIP_IF([test "$GNM_SUPPORT" = no])
+AT_CHECK([gzip -c $top_srcdir/tests/language/data-io/Book1.gnm.unzipped > Book1.gnumeric])
+AT_DATA([get-data.sps], [dnl
+GET DATA /TYPE=gnm /FILE='Book1.gnumeric' /READNAMES=off /SHEET=name 'This' /CELLRANGE=range 'g9:i13' .
+DISPLAY VARIABLES.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv get-data.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variable,Description,,Position
+VAR001,Format: F8.2,,1
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+VAR002,Format: A8,,2
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 8,,
+VAR003,Format: F8.2,,3
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+
+Table: Data List
+VAR001,VAR002,VAR003
+.00,fred ,20.00
+1.00,11 ,21.00
+2.00,twelve ,22.00
+3.00,13 ,23.00
+4.00,14 ,24.00
+])
+AT_CLEANUP
+
+AT_SETUP([GET DATA /TYPE=GNM with CELLRANGE and READNAMES])
+AT_SKIP_IF([test "$GNM_SUPPORT" = no])
+AT_CHECK([gzip -c $top_srcdir/tests/language/data-io/Book1.gnm.unzipped > Book1.gnumeric])
+AT_DATA([get-data.sps], [dnl
+GET DATA /TYPE=gnm /FILE='Book1.gnumeric' /READNAMES=on /SHEET=name 'This' /CELLRANGE=range 'g8:i13' .
+DISPLAY VARIABLES.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv get-data.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variable,Description,,Position
+V1,Format: F8.2,,1
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+V2,Format: A8,,2
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 8,,
+VAR001,Format: F8.2,,3
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+
+Table: Data List
+V1,V2,VAR001
+.00,fred ,20.00
+1.00,11 ,21.00
+2.00,twelve ,22.00
+3.00,13 ,23.00
+4.00,14 ,24.00
+])
+AT_CLEANUP
+
+AT_SETUP([GET DATA /TYPE=GNM without CELLRANGE])
+AT_SKIP_IF([test "$GNM_SUPPORT" = no])
+AT_CHECK([gzip -c $top_srcdir/tests/language/data-io/Book1.gnm.unzipped > Book1.gnumeric])
+AT_DATA([get-data.sps], [dnl
+GET DATA /TYPE=gnm /FILE='Book1.gnumeric' /SHEET=index 3.
+DISPLAY VARIABLES.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv get-data.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variable,Description,,Position
+name,Format: A8,,1
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 8,,
+id,Format: F8.2,,2
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+height,Format: F8.2,,3
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+
+Table: Data List
+name,id,height
+fred ,.00,23.40
+bert ,1.00,.56
+charlie ,2.00,. @&t@
+dick ,3.00,-34.09
+])
+AT_CLEANUP
+
+AT_SETUP([GET DATA /TYPE=GNM with missing data])
+AT_SKIP_IF([test "$GNM_SUPPORT" = no])
+AT_CHECK([gzip -c $top_srcdir/tests/language/data-io/Book1.gnm.unzipped > Book1.gnumeric])
+AT_DATA([get-data.sps], [dnl
+* This sheet has no data in one of its variables
+GET DATA /TYPE=gnm /FILE='Book1.gnumeric' /READNAMES=on /SHEET=index 5.
+DISPLAY VARIABLES.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv get-data.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variable,Description,,Position
+vone,Format: F8.2,,1
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+vtwo,Format: F8.2,,2
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+vthree,Format: A8,,3
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 8,,
+v4,Format: F8.2,,4
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+
+Table: Data List
+vone,vtwo,vthree,v4
+1.00,3.00,,5.00
+2.00,4.00,,6.00
+])
+AT_CLEANUP
+
+AT_SETUP([GET DATA /TYPE=GNM with empty sheet])
+AT_SKIP_IF([test "$GNM_SUPPORT" = no])
+AT_CHECK([gzip -c $top_srcdir/tests/language/data-io/Book1.gnm.unzipped > Book1.gnumeric])
+AT_DATA([get-data.sps], [dnl
+* This sheet is empty
+GET DATA /TYPE=gnm /FILE='Book1.gnumeric' /SHEET=name 'Empty'.
+])
+AT_CHECK([pspp -o pspp.csv get-data.sps], [0], [dnl
+warning: Selected sheet or range of spreadsheet `Book1.gnumeric' is empty.
+])
+AT_CLEANUP
+
+AT_SETUP([GET DATA /TYPE=GNM with nonexistent sheet])
+AT_SKIP_IF([test "$GNM_SUPPORT" = no])
+AT_CHECK([gzip -c $top_srcdir/tests/language/data-io/Book1.gnm.unzipped > Book1.gnumeric])
+AT_DATA([get-data.sps], [dnl
+* This sheet doesnt exist.
+GET DATA /TYPE=gnm /FILE='Book1.gnumeric' /SHEET=name 'foobarxx'.
+])
+AT_CHECK([pspp -o pspp.csv get-data.sps], [0], [dnl
+warning: Selected sheet or range of spreadsheet `Book1.gnumeric' is empty.
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([GET DATA /TYPE=PSQL])
+
+m4_define([INIT_PSQL],
+ [AT_SKIP_IF([test "$PSQL_SUPPORT" = no])
+ PATH=$PG_PATH:$PATH
+ export PATH
+ PGDATA=`pwd`/cluster
+ export PGDATA
+ PGHOST=`pwd`
+ export PGHOST
+ PGPORT=$PG_PORT
+ export PGPORT
+ AT_CHECK([initdb -A trust], [0], [ignore])
+ AT_CHECK([pg_ctl start -w -o "-k `pwd` -h ''"], [0], [ignore])
+ trap 'CLEANUP_PSQL' 0
+ AT_CHECK([createdb -h "`pwd`" -p $PG_PORT $PG_DBASE],
+ [0], [ignore], [ignore])
+ AT_DATA([populate.sql],
+ [CREATE TABLE empty (a int, b date, c numeric(23, 4));
+
+ -- a largeish table to check big queries work ok.
+ CREATE TABLE large (x int);
+ INSERT INTO large (select * from generate_series(1, 1000));
+
+
+ CREATE TABLE thing (
+ bool bool ,
+ bytea bytea ,
+ char char ,
+ int8 int8 ,
+ int2 int2 ,
+ int4 int4 ,
+ numeric numeric(50,6) ,
+ text text ,
+ oid oid ,
+ float4 float4 ,
+ float8 float8 ,
+ money money ,
+ pbchar bpchar ,
+ varchar varchar ,
+ date date ,
+ time time ,
+ timestamp timestamp ,
+ timestamptz timestamptz ,
+ interval interval ,
+ timetz timetz
+ );
+
+ INSERT INTO thing VALUES (
+ false,
+ '0',
+ 'a',
+ '0',
+ 0,
+ 0,
+ -256.098,
+ 'this-long-text',
+ 0,
+ 0,
+ 0,
+ '0.01',
+ 'a',
+ 'A',
+ '1-Jan-2000',
+ '00:00',
+ 'January 8 04:05:06 1999',
+ 'January 8 04:05:06 1999 PST',
+ '1 minutes',
+ '10:09 UTC+4'
+ );
+
+ INSERT INTO thing VALUES (
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ );
+
+ INSERT INTO thing VALUES (
+ true,
+ '1',
+ 'b',
+ '1',
+ 1,
+ 1,
+ 65535.00001,
+ 'that-long-text',
+ 1,
+ 1,
+ 1,
+ '1.23',
+ 'b',
+ 'B',
+ '10-Jan-1963',
+ '01:05:02',
+ '10-Jan-1963 23:58:00',
+ '10-Jan-1963 23:58:00 CET',
+ '2 year 1 month 12 days 1 hours 3 minutes 4 seconds',
+ '01:05:02 UTC-7'
+ );
+])
+ AT_CHECK([psql -h "`pwd`" -p $PG_PORT $PG_DBASE < populate.sql],
+ [0], [ignore])])
+
+m4_define([CLEANUP_PSQL], [pg_ctl stop -W -o "-k `pwd` -h ''"])
+
+AT_SETUP([GET DATA /TYPE=PSQL])
+INIT_PSQL
+
+dnl Test with an ordinary query.
+AT_CHECK([cat > ordinary-query.sps <<EOF
+GET DATA /TYPE=psql
+ /CONNECT="host=$PGHOST port=$PGPORT dbname=$PG_DBASE"
+ /UNENCRYPTED
+ /SQL="select * from thing".
+
+DISPLAY DICTIONARY.
+
+LIST.
+EOF
+])
+AT_CHECK([pspp -o pspp.csv ordinary-query.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variable,Description,,Position
+bool,Format: F8.2,,1
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+bytea,Format: AHEX2,,2
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 1,,
+char,Format: A8,,3
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 8,,
+int8,Format: F8.2,,4
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+int2,Format: F8.2,,5
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+int4,Format: F8.2,,6
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+numeric,Format: E40.6,,7
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+text,Format: A16,,8
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 16,,
+oid,Format: F8.2,,9
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+float4,Format: F8.2,,10
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+float8,Format: F8.2,,11
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+money,Format: DOLLAR8.2,,12
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+pbchar,Format: A8,,13
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 8,,
+varchar,Format: A8,,14
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 8,,
+date,Format: DATE11,,15
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+time,Format: TIME11.0,,16
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+timestamp,Format: DATETIME22.0,,17
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+timestamptz,Format: DATETIME22.0,,18
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+interval,Format: DTIME13.0,,19
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+interval_months,Format: F3.0,,20
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+timetz,Format: TIME11.0,,21
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+timetz_zone,Format: F8.2,,22
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+
+Table: Data List
+bool,bytea,char,int8,int2,int4,numeric,text,oid,float4,float8,money,pbchar,varchar,date,time,timestamp,timestamptz,interval,interval_months,timetz,timetz_zone
+.00,30,a ,.00,.00,.00,-2.560980E+002,this-long-text ,.00,.00,.00,$.01,a ,A ,01-JAN-2000,0:00:00,08-JAN-1999 04:05:06,08-JAN-1999 12:05:06,0 00:01:00,0,10:09:00,4.00
+. ,20,,. ,. ,. ,. ,,. ,. ,. ,. ,,,.,.,.,.,.,.,.,. @&t@
+1.00,31,b ,1.00,1.00,1.00,6.553500E+004,that-long-text ,.00,1.00,1.00,$1.23,b ,B ,10-JAN-1963,1:05:02,10-JAN-1963 23:58:00,10-JAN-1963 22:58:00,12 01:03:04,25,1:05:02,-7.00
+])
+
+dnl Test query with empty result set.
+AT_CHECK([cat > empty-result.sps <<EOF
+GET DATA /TYPE=psql
+ /CONNECT="host=$PGHOST port=$PGPORT dbname=$PG_DBASE"
+ /UNENCRYPTED
+ /SQL="select * from empty".
+
+DISPLAY DICTIONARY.
+
+LIST.
+EOF
+])
+AT_CHECK([pspp -o pspp.csv empty-result.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variable,Description,,Position
+a,Format: F8.2,,1
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+b,Format: DATE11,,2
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+c,Format: E40.2,,3
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+])
+
+dnl Test query with large result set.
+AT_CHECK([cat > large-result.sps <<EOF
+GET DATA /TYPE=psql
+ /CONNECT="host=$PGHOST port=$PGPORT dbname=$PG_DBASE"
+ /UNENCRYPTED
+ /SQL="select * from large".
+
+NUMERIC diff.
+COMPUTE diff = x - lag (x).
+
+TEMPORARY.
+SELECT IF (diff <> 1).
+LIST.
+
+TEMPORARY.
+N OF CASES 6.
+LIST.
+
+SORT CASES BY x (D).
+
+TEMPORARY.
+N OF CASES 6.
+LIST.
+EOF
+])
+AT_CHECK([pspp -o pspp.csv large-result.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+x,diff
+1.00,. @&t@
+2.00,1.00
+3.00,1.00
+4.00,1.00
+5.00,1.00
+6.00,1.00
+
+Table: Data List
+x,diff
+1000.00,1.00
+999.00,1.00
+998.00,1.00
+997.00,1.00
+996.00,1.00
+995.00,1.00
+])
+
+dnl Check for a bug caused by having string variables in the database,
+dnl all of which are null.
+AT_DATA([all-null-string.sql],
+ [-- a table which has a text field containing only null, or zero
+ -- length entries.
+
+ CREATE TABLE foo (int4 int4, text text);
+
+ INSERT INTO foo VALUES ('12', '');
+
+ INSERT INTO foo VALUES (null, '');
+])
+AT_CHECK([psql -h "`pwd`" -p $PG_PORT $PG_DBASE < all-null-string.sql],
+ [0], [ignore])
+AT_CAPTURE_FILE([get-data.sps])
+AT_CHECK([cat > get-data.sps <<EOF
+GET DATA /TYPE=psql
+ /CONNECT="host=$PGHOST port=$PGPORT dbname=$PG_DBASE"
+ /UNENCRYPTED
+ /SQL="select * from foo".
+
+DISPLAY DICTIONARY.
+
+LIST.
+EOF
+])
+AT_CHECK([pspp -o pspp.csv get-data.sps])
+AT_CAPTURE_FILE([pspp.csv])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([GET DATA /TYPE=TXT])
+
+dnl These tests exercise features of GET DATA /TYPE=TXT that
+dnl it has in common with DATA LIST, using tests drawn from
+dnl DATA LIST.
+
+AT_SETUP([GET DATA /TYPE=TXT with explicit delimiters])
+AT_DATA([get-data.sps], [dnl
+get data /type=txt /file=inline /delimiters="|X"
+ /variables=A f7.2 B f7.2 C f7.2 D f7.2.
+begin data.
+1|23X45|2.03
+2X22|34|23|
+3|34|34X34
+end data.
+
+list.
+])
+AT_CHECK([pspp -o pspp.csv get-data.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+A,B,C,D
+1.00,23.00,45.00,2.03
+2.00,22.00,34.00,23.00
+3.00,34.00,34.00,34.00
+])
+AT_CLEANUP
+
+AT_SETUP([GET DATA /TYPE=TXT with FIRSTCASE])
+AT_DATA([get-data.sps], [dnl
+get data /type=txt /file=inline /delimiters=', ' /delcase=variables 4
+ /firstcase=2 /variables=A f7.2 B f7.2 C f7.2 D f7.2.
+begin data.
+# This record is ignored.
+,1,2,3
+,4,,5
+6
+7,
+8 9
+0,1,,,
+,,,,
+2
+
+3
+4
+5
+end data.
+list.
+])
+AT_CHECK([pspp -o pspp.csv get-data.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+A,B,C,D
+. ,1.00,2.00,3.00
+. ,4.00,. ,5.00
+6.00,7.00,. ,8.00
+9.00,.00,1.00,. @&t@
+. ,. ,. ,. @&t@
+. ,. ,. ,2.00
+. ,3.00,4.00,5.00
+])
+AT_CLEANUP
+
+AT_SETUP([GET DATA /TYPE=TXT with FIRSTCASE and tab delimiter])
+AT_DATA([get-data.sps], [dnl
+get data /type=txt /file=inline /delimiters='\t' /delcase=variables 4
+ /firstcase=3 /variables=A f7.2 B f7.2 C f7.2 D f7.2.
+begin data.
+# These records
+# are skipped.
+1 2 3 4
+1 2 3 @&t@
+1 2 4
+1 2 @&t@
+1 3 4
+1 3 @&t@
+1 4
+1 @&t@
+ 2 3 4
+ 2 3 @&t@
+ 2 4
+ 2 @&t@
+ 3 4
+ 3 @&t@
+ 4
+ @&t@
+end data.
+list.
+])
+AT_CHECK([pspp -o pspp.csv get-data.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+A,B,C,D
+1.00,2.00,3.00,4.00
+1.00,2.00,3.00,. @&t@
+1.00,2.00,. ,4.00
+1.00,2.00,. ,. @&t@
+1.00,. ,3.00,4.00
+1.00,. ,3.00,. @&t@
+1.00,. ,. ,4.00
+1.00,. ,. ,. @&t@
+. ,2.00,3.00,4.00
+. ,2.00,3.00,. @&t@
+. ,2.00,. ,4.00
+. ,2.00,. ,. @&t@
+. ,. ,3.00,4.00
+. ,. ,3.00,. @&t@
+. ,. ,. ,4.00
+. ,. ,. ,. @&t@
+])
+AT_CLEANUP
+
+AT_SETUP([GET DATA /TYPE=TXT with multiple records per case])
+AT_DATA([get-data.sps], [dnl
+get data /type=txt /file=inline /arrangement=fixed /fixcase=3 /variables=
+ /1 start 0-19 adate
+ /2 end 0-19 adate
+ /3 count 0-2 f.
+begin data.
+07-22-2007
+10-06-2007
+321
+07-14-1789
+08-26-1789
+4
+01-01-1972
+12-31-1999
+682
+end data.
+list.
+])
+AT_CHECK([pspp -o pspp.csv get-data.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+start,end,count
+07/22/2007,10/06/2007,321
+07/14/1789,08/26/1789,4
+01/01/1972,12/31/1999,682
+])
+AT_CLEANUP
+
+AT_SETUP([GET DATA /TYPE=TXT with empty trailing record])
+AT_DATA([get-data.sps], [dnl
+get data /type=txt /file=inline /arrangement=fixed /fixcase=2 /variables=
+ /1 x 0 f
+ y 1 f.
+begin data.
+12
+
+34
+
+56
+
+78
+
+90
+
+end data.
+list.
+])
+AT_CHECK([pspp -o pspp.csv get-data.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+x,y
+1,2
+3,4
+5,6
+7,8
+9,0
+])
+AT_CLEANUP
+
+dnl This test is a copy of an example given in the manual
+dnl in doc/files.texi.
+AT_SETUP([GET DATA /TYPE=TXT password example])
+AT_DATA([passwd.data], [dnl
+root:$1$nyeSP5gD$pDq/:0:0:,,,:/root:/bin/bash
+blp:$1$BrP/pFg4$g7OG:1000:1000:Ben Pfaff,,,:/home/blp:/bin/bash
+john:$1$JBuq/Fioq$g4A:1001:1001:John Darrington,,,:/home/john:/bin/bash
+jhs:$1$D3li4hPL$88X1:1002:1002:Jason Stover,,,:/home/jhs:/bin/csh
+])
+AT_DATA([passwd.sps], [dnl
+GET DATA /TYPE=TXT /FILE='passwd.data' /DELIMITERS=':'
+ /VARIABLES=username A20
+ password A40
+ uid F10
+ gid F10
+ gecos A40
+ home A40
+ shell A40.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv passwd.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+username,password,uid,gid,gecos,home,shell
+root ,$1$nyeSP5gD$pDq/ ,0,0,",,, ",/root ,/bin/bash @&t@
+blp ,$1$BrP/pFg4$g7OG ,1000,1000,"Ben Pfaff,,, ",/home/blp ,/bin/bash @&t@
+john ,$1$JBuq/Fioq$g4A ,1001,1001,"John Darrington,,, ",/home/john ,/bin/bash @&t@
+jhs ,$1$D3li4hPL$88X1 ,1002,1002,"Jason Stover,,, ",/home/jhs ,/bin/csh @&t@
+])
+AT_CLEANUP
+
+dnl This test is a copy of an example given in the manual
+dnl in doc/files.texi.
+AT_SETUP([GET DATA /TYPE=TXT cars example])
+AT_DATA([cars.data], [dnl
+model year mileage price type age
+Civic 2002 29883 15900 Si 2
+Civic 2003 13415 15900 EX 1
+Civic 1992 107000 3800 n/a 12
+Accord 2002 26613 17900 EX 1
+])
+AT_DATA([cars.sps], [dnl
+GET DATA /TYPE=TXT /FILE='cars.data' /DELIMITERS=' ' /FIRSTCASE=2
+ /VARIABLES=model A8
+ year F4
+ mileage F6
+ price F5
+ type A4
+ age F2.
+LIST.
+
+GET DATA /TYPE=TXT /FILE='cars.data' /ARRANGEMENT=FIXED /FIRSTCASE=2
+ /VARIABLES=model 0-7 A
+ year 8-15 F
+ mileage 16-23 F
+ price 24-31 F
+ type 32-39 A
+ age 40-47 F.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv cars.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+model,year,mileage,price,type,age
+Civic ,2002,29883,15900,Si ,2
+Civic ,2003,13415,15900,EX ,1
+Civic ,1992,107000,3800,n/a ,12
+Accord ,2002,26613,17900,EX ,1
+
+Table: Data List
+model,year,mileage,price,type,age
+Civic ,2002,29883,15900,Si ,2
+Civic ,2003,13415,15900,EX ,1
+Civic ,1992,107000,3800,n/a ,12
+Accord ,2002,26613,17900,EX ,1
+])
+AT_CLEANUP
+
+dnl This test is a copy of an example given in the manual
+dnl in doc/files.texi.
+AT_SETUP([GET DATA /TYPE=TXT pets example])
+AT_DATA([pets.data], [dnl
+'Pet''s Name', "Age", "Color", "Date Received", "Price", "Height", "Type"
+, (Years), , , (Dollars), ,
+"Rover", 4.5, Brown, "12 Feb 2004", 80, '1''4"', "Dog"
+"Charlie", , Gold, "5 Apr 2007", 12.3, "3""", "Fish"
+"Molly", 2, Black, "12 Dec 2006", 25, '5"', "Cat"
+"Gilly", , White, "10 Apr 2007", 10, "3""", "Guinea Pig"
+])
+AT_DATA([pets.sps], [dnl
+GET DATA /TYPE=TXT /FILE='pets.data' /DELIMITERS=', ' /QUALIFIER='''"' /ESCAPE
+ /FIRSTCASE=3
+ /VARIABLES=name A10
+ age F3.1
+ color A5
+ received EDATE10
+ price F5.2
+ height a5
+ type a10.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv pets.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+name,age,color,received,price,height,type
+Rover ,4.5,Brown,12.02.2004,80.00,"1'4"" ",Dog @&t@
+Charlie ,. ,Gold ,05.04.2007,12.30,"3"" ",Fish @&t@
+Molly ,2.0,Black,12.12.2006,25.00,"5"" ",Cat @&t@
+Gilly ,. ,White,10.04.2007,10.00,"3"" ",Guinea Pig
+])
+AT_CLEANUP
+dnl " (fixes Emacs highlighting)
+
+AT_SETUP([GET DATA /TYPE=TXT with IMPORTCASES])
+AT_CHECK([$PERL > test.data <<'EOF'
+for ($i = 1; $i <= 100; $i++) {
+ printf "%02d\n", $i;
+}
+EOF
+])
+AT_DATA([get-data.sps], [dnl
+get data /type=txt /file='test.data' /importcases=first 10 /variables x f8.0.
+list.
+
+get data /type=txt /file='test.data' /importcases=percent 1 /variables x f8.0.
+list.
+
+get data /type=txt /file='test.data' /importcases=percent 35 /variables x f8.0.
+list.
+
+get data /type=txt /file='test.data' /importcases=percent 95 /variables x f8.0.
+list.
+
+get data /type=txt /file='test.data' /importcases=percent 100 /variables x f8.0.
+list.
+])
+AT_CHECK([pspp -o pspp.csv get-data.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+x
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+
+Table: Data List
+x
+1
+2
+
+Table: Data List
+x
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+
+Table: Data List
+x
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+
+Table: Data List
+x
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([GET])
+
+dnl Tests for a bug which caused the second procedure
+dnl after GET to have corrupt input.
+AT_SETUP([GET data works in multiple procedures])
+AT_DATA([get.sps], [dnl
+DATA LIST LIST NOTABLE /LOCATION * EDITOR * SHELL * FREQ * .
+BEGIN DATA.
+ 1.00 1.00 1.0 2.00
+ 1.00 1.00 2.0 30.00
+ 1.00 2.00 1.0 8.00
+ 1.00 2.00 2.0 20.00
+ 2.00 1.00 1.0 2.00
+ 2.00 1.00 2.0 22.00
+ 2.00 2.00 1.0 1.00
+ 2.00 2.00 2.0 3.00
+END DATA.
+
+SAVE /OUTFILE='foo.sav'.
+
+GET /FILE='foo.sav'.
+
+* This one's ok
+LIST.
+
+* But this one get rubbish
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv get.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+LOCATION,EDITOR,SHELL,FREQ
+1.00,1.00,1.00,2.00
+1.00,1.00,2.00,30.00
+1.00,2.00,1.00,8.00
+1.00,2.00,2.00,20.00
+2.00,1.00,1.00,2.00
+2.00,1.00,2.00,22.00
+2.00,2.00,1.00,1.00
+2.00,2.00,2.00,3.00
+
+Table: Data List
+LOCATION,EDITOR,SHELL,FREQ
+1.00,1.00,1.00,2.00
+1.00,1.00,2.00,30.00
+1.00,2.00,1.00,8.00
+1.00,2.00,2.00,20.00
+2.00,1.00,1.00,2.00
+2.00,1.00,2.00,22.00
+2.00,2.00,1.00,1.00
+2.00,2.00,2.00,3.00
+])
+AT_CLEANUP
+
+dnl Tests for a bug that crashed when GET specified a nonexistent file.
+AT_SETUP([GET nonexistent file doesn't crash])
+dnl We use stdin here, because the bug seems to manifest itself only in
+dnl interactive mode.
+AT_CHECK([echo "GET /FILE='nonexistent.sav'." | pspp -O format=csv], [1], [dnl
+error: An error occurred while opening `nonexistent.sav': No such file or directory.
+
+-:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
+])
+AT_CLEANUP
+
+dnl Tests for bug #15766 (/KEEP subcommand on SAVE doesn't
+dnl fully support ALL) and underlying problems.
+m4_define([GET_KEEP_ALL],
+ [AT_SETUP([GET with /KEEP=ALL crashes -- $1])
+ AT_DATA([get.sps], [dnl
+DATA LIST LIST NOTABLE
+ /a b c d e f g h i j k l m n o p q r s t u v w x y z (F2.0).
+BEGIN DATA.
+1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
+END DATA.
+LIST.
+SAVE OUTFILE='test.sav'/$1.
+GET FILE='test.sav'/KEEP=x y z all.
+LIST.
+])
+ AT_CHECK([pspp -o pspp.csv get.sps])
+ AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26
+
+Table: Data List
+x,y,z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w
+24,25,26,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
+])
+ AT_CLEANUP])
+GET_KEEP_ALL([uncompressed])
+GET_KEEP_ALL([compressed])
+
--- /dev/null
+AT_BANNER([INPUT PROGRAM])
+
+dnl Tests for a bug which caused a crash when
+dnl reading invalid INPUT PROGRAM syntax.
+AT_SETUP([INPUT PROGRAM invalid syntax crash])
+AT_DATA([input-program.sps], [dnl
+INPUT PROGRAM.
+DATA LIST NOTABLE /a 1-9.
+BEGIN DATA
+123456789
+END DATA.
+END INPUT PROGRAM.
+])
+AT_CHECK([pspp -O format=csv input-program.sps], [1], [dnl
+input-program.sps:3: error: BEGIN DATA: BEGIN DATA is not allowed inside INPUT PROGRAM.
+
+input-program.sps:4: error: Syntax error at `123456789': expecting command name.
+
+input-program.sps:5: error: Unknown command END DATA.
+])
+AT_CLEANUP
+
+dnl Tests for bug #21108, a crash when
+dnl reading invalid INPUT PROGRAM syntax.
+AT_SETUP([INPUT PROGRAM invalid syntax crash])
+AT_DATA([input-program.sps], [dnl
+INPUT PROGRAM.
+DATA LIST LIST NOTABLE /x.
+END FILE.
+END INPUT PROGRAM.
+
+DESCRIPTIVES x.
+])
+AT_CHECK([pspp -O format=csv input-program.sps], [1], [dnl
+error: DESCRIPTIVES: Syntax error at end of file: expecting `BEGIN'.
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([LIST])
+
+AT_SETUP([LIST plain cases])
+AT_DATA([data.txt], [dnl
+ 18 1
+ 19 7
+ 20 26
+ 21 76
+ 22 57
+ 23 58
+ 24 38
+ 25 38
+ 26 30
+ 27 21
+ 28 23
+])
+AT_DATA([list.sps], [dnl
+DATA LIST FILE='data.txt'/avar 1-5 bvar 6-10.
+WEIGHT BY bvar.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv list.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading 1 record from `data.txt'.
+Variable,Record,Columns,Format
+avar,1,1- 5,F5.0
+bvar,1,6- 10,F5.0
+
+Table: Data List
+avar,bvar
+18,1
+19,7
+20,26
+21,76
+22,57
+23,58
+24,38
+25,38
+26,30
+27,21
+28,23
+])
+AT_CLEANUP
+
+AT_SETUP([LIST numbered cases])
+AT_DATA([data.txt], [dnl
+ 18 1
+ 19 7
+ 20 26
+ 21 76
+ 22 57
+ 23 58
+ 24 38
+ 25 38
+ 26 30
+ 27 21
+ 28 23
+])
+AT_DATA([list.sps], [dnl
+DATA LIST FILE='data.txt'/avar 1-5 bvar 6-10.
+WEIGHT BY bvar.
+LIST/FORMAT NUMBERED.
+])
+AT_CHECK([pspp -o pspp.csv list.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading 1 record from `data.txt'.
+Variable,Record,Columns,Format
+avar,1,1- 5,F5.0
+bvar,1,6- 10,F5.0
+
+Table: Data List
+Case Number,avar,bvar
+1,18,1
+2,19,7
+3,20,26
+4,21,76
+5,22,57
+6,23,58
+7,24,38
+8,25,38
+9,26,30
+10,27,21
+11,28,23
+])
+AT_CLEANUP
+
+AT_SETUP([LIST lots of variables])
+AT_DATA([data.txt], [dnl
+767532466348513789073483106409
+888693089424177542378334186760
+492611507909187152726427852242
+819848892023195875879332001491
+452777898709563729845541516650
+239961967077732760663525115073
+])
+AT_DATA([list.sps], [dnl
+DATA LIST FILE='data.txt' NOTABLE/x01 to x30 1-30.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv list.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+x01,x02,x03,x04,x05,x06,x07,x08,x09,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x30
+7,6,7,5,3,2,4,6,6,3,4,8,5,1,3,7,8,9,0,7,3,4,8,3,1,0,6,4,0,9
+8,8,8,6,9,3,0,8,9,4,2,4,1,7,7,5,4,2,3,7,8,3,3,4,1,8,6,7,6,0
+4,9,2,6,1,1,5,0,7,9,0,9,1,8,7,1,5,2,7,2,6,4,2,7,8,5,2,2,4,2
+8,1,9,8,4,8,8,9,2,0,2,3,1,9,5,8,7,5,8,7,9,3,3,2,0,0,1,4,9,1
+4,5,2,7,7,7,8,9,8,7,0,9,5,6,3,7,2,9,8,4,5,5,4,1,5,1,6,6,5,0
+2,3,9,9,6,1,9,6,7,0,7,7,7,3,2,7,6,0,6,6,3,5,2,5,1,1,5,0,7,3
+])
+AT_CLEANUP
+
+AT_SETUP([LIST selected cases])
+AT_DATA([data.txt], [dnl
+7675324663
+8886930894
+4926115079
+8198488920
+4527778987
+2399619670
+1667799691
+1623914684
+3681393233
+6418731145
+2284534083
+6617637452
+9865713582
+1163234537
+9981663637
+6821567746
+0952774952
+1641790193
+3763182871
+2046820753
+7970620091
+4841176017
+6949973797
+1396285996
+0700489524
+])
+AT_DATA([list.sps], [dnl
+DATA LIST FILE='data.txt' NOTABLE/x0 to x9 1-10.
+LIST /CASES=FROM 1 TO 25 BY 5.
+])
+AT_CHECK([pspp -o pspp.csv list.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+x0,x1,x2,x3,x4,x5,x6,x7,x8,x9
+7,6,7,5,3,2,4,6,6,3
+2,3,9,9,6,1,9,6,7,0
+2,2,8,4,5,3,4,0,8,3
+6,8,2,1,5,6,7,7,4,6
+7,9,7,0,6,2,0,0,9,1
+])
+AT_CLEANUP
+
+dnl This program tests for a bug which caused a buffer overflow
+dnl when the list command attempted to write very long strings.
+AT_SETUP([LIST very long string])
+AT_DATA([list.sps], [dnl
+INPUT PROGRAM.
+STRING foo (a2000).
++ COMPUTE foo=CONCAT(RPAD('A',1999, 'x'), 'Z').
+END CASE.
+END FILE.
+END INPUT PROGRAM.
+
+EXECUTE.
+
+DISPLAY VARIABLES.
+
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv list.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variable,Description,,Position
+foo,Format: A2000,,1
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 32,,
+
+Table: Data List
+foo
+AxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxZ
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([MATCH FILES])
+
+m4_define([PREPARE_MATCH_FILES],
+ [AT_DATA([data1.txt], [dnl
+1aB
+8aM
+3aE
+5aG
+0aA
+5aH
+6aI
+7aJ
+2aD
+7aK
+1aC
+7aL
+4aF
+])
+
+ AT_DATA([data2.txt], [dnl
+1bN
+3bO
+4bP
+6bQ
+7bR
+9bS
+])
+
+ AT_DATA([prepare.sps], [dnl
+DATA LIST NOTABLE FILE='data1.txt' /a b c 1-3 (A).
+SAVE OUTFILE='data1.sav'.
+DATA LIST NOTABLE FILE='data2.txt' /a b c 1-3 (A).
+SAVE OUTFILE='data2.sav'.
+])
+ AT_CHECK([pspp -O format=csv prepare.sps])
+ AT_CHECK([test -f data1.sav && test -f data2.sav])])
+
+dnl CHECK_MATCH_FILES(TYPE2, SOURCE1, SOURCE2)
+dnl
+dnl Checks the MATCH FILES procedure with the specified combination of:
+dnl
+dnl - TYPE2: Either "file" or "table" for the type of matching used for
+dnl the second data source. (The first data source is always "file").
+dnl
+dnl - SOURCE1: Either "system" or "active" for the source of data for
+dnl the first data source.
+dnl
+dnl - SOURCE2: Either "system" or "active" for the source of data for
+dnl the second data source. (SOURCE1 and SOURCE2 may not both be
+dnl "active".)
+m4_define([CHECK_MATCH_FILES],
+ [AT_SETUP([MATCH FILES -- $2 file and $3 $1])
+ PREPARE_MATCH_FILES
+ AT_DATA([expout],
+ [m4_if([$1], [file], [dnl
+Table: Data List
+a,b,c,d,ina,inb,first,last
+0,a,A,,1,0,1,1
+1,a,B,N,1,1,1,0
+1,a,C,,1,0,0,1
+2,a,D,,1,0,1,1
+3,a,E,O,1,1,1,1
+4,a,F,P,1,1,1,1
+5,a,G,,1,0,1,0
+5,a,H,,1,0,0,1
+6,a,I,Q,1,1,1,1
+7,a,J,R,1,1,1,0
+7,a,K,,1,0,0,0
+7,a,L,,1,0,0,1
+8,a,M,,1,0,1,1
+9,b,,S,0,1,1,1
+], [dnl
+Table: Data List
+a,b,c,d,ina,inb,first,last
+0,a,A,,1,0,1,1
+1,a,B,N,1,1,1,0
+1,a,C,N,1,1,0,1
+2,a,D,,1,0,1,1
+3,a,E,O,1,1,1,1
+4,a,F,P,1,1,1,1
+5,a,G,,1,0,1,0
+5,a,H,,1,0,0,1
+6,a,I,Q,1,1,1,1
+7,a,J,R,1,1,1,0
+7,a,K,R,1,1,0,0
+7,a,L,R,1,1,0,1
+8,a,M,,1,0,1,1
+])])
+
+ AT_DATA([match-files.sps], [dnl
+m4_if([$2], [active], [GET FILE='data1.sav'.],
+ [$3], [active], [GET FILE='data2.sav'.],
+ [])
+MATCH FILES
+ FILE=m4_if([$2], [active], [*], ['data1.sav']) /IN=ina /SORT
+ $1=m4_if([$3], [active], [*], ['data2.sav']) /in=inb /rename c=d
+ /BY a /FIRST=first /LAST=last.
+LIST.
+])
+ AT_CHECK([pspp -o pspp.csv match-files.sps])
+ AT_CHECK([cat pspp.csv], [0], [expout])
+ AT_CLEANUP])
+
+CHECK_MATCH_FILES([file], [system], [system])
+CHECK_MATCH_FILES([file], [system], [active])
+CHECK_MATCH_FILES([file], [active], [system])
+CHECK_MATCH_FILES([table], [system], [system])
+CHECK_MATCH_FILES([table], [system], [active])
+CHECK_MATCH_FILES([table], [active], [system])
+
+AT_SETUP([MATCH FILES parallel match])
+PREPARE_MATCH_FILES
+AT_DATA([match-files.sps], [dnl
+MATCH FILES FILE='data1.sav' /FILE='data2.sav' /RENAME (a b c=d e f).
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv match-files.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+a,b,c,d,e,f
+1,a,B,1,b,N
+8,a,M,3,b,O
+3,a,E,4,b,P
+5,a,G,6,b,Q
+0,a,A,7,b,R
+5,a,H,9,b,S
+6,a,I,,,
+7,a,J,,,
+2,a,D,,,
+7,a,K,,,
+1,a,C,,,
+7,a,L,,,
+4,a,F,,,
+])
+AT_CLEANUP
+
+dnl Test bug handling TABLE from active file found by John Darrington.
+AT_SETUP([MATCH FILES bug with TABLE from active file])
+AT_DATA([match-files.sps], [dnl
+DATA LIST LIST NOTABLE /x * y *.
+BEGIN DATA
+3 30
+2 21
+1 22
+END DATA.
+
+SAVE OUTFILE='bar.sav'.
+
+DATA LIST LIST NOTABLE /x * z *.
+BEGIN DATA
+3 8
+2 9
+END DATA.
+
+MATCH FILES TABLE=* /FILE='bar.sav' /BY=x.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv match-files.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+x,z,y
+3.00,8.00,30.00
+2.00,. ,21.00
+1.00,. ,22.00
+])
+AT_CLEANUP
+
+dnl Tests for a bug which caused MATCH FILES to crash
+dnl when used with scratch variables.
+AT_SETUP([MATCH FILES bug with scratch variables])
+AT_DATA([match-files.sps], [dnl
+DATA LIST LIST /w * x * y * .
+BEGIN DATA
+4 5 6
+1 2 3
+END DATA.
+
+COMPUTE j=0.
+LOOP #k = 1 to 10.
+COMPUTE j=#k + j.
+END LOOP.
+
+MATCH FILES FILE=* /DROP=w.
+LIST.
+FINISH.
+])
+AT_CHECK([pspp -o pspp.csv match-files.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+w,F8.0
+x,F8.0
+y,F8.0
+
+Table: Data List
+x,y,j
+5.00,6.00,55.00
+2.00,3.00,55.00
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([PRINT and WRITE])
+
+dnl These tests check unusual aspects of the PRINT and WRITE
+dnl transformations:
+dnl
+dnl - PRINT puts spaces between variables, unless a format
+dnl is specified explicitly.
+dnl
+dnl - WRITE doesn't put space between variables.
+dnl
+dnl - PRINT to an external file prefixes each line with a space.
+dnl
+dnl - PRINT EJECT to an external file indicates a formfeed by a "1"
+dnl in the first column.
+dnl
+dnl - WRITE writes out spaces for system-missing values, not a period.
+dnl
+dnl - When no output is specified, an empty record is output.
+
+AT_SETUP([PRINT numeric variables])
+AT_DATA([print.sps], [dnl
+data list notable /x y 1-2.
+begin data.
+12
+34
+ 6
+7
+90
+end data.
+
+print /x y.
+print eject /x y 1-2.
+print /x '-' y.
+print.
+
+execute.
+])
+AT_CHECK([pspp -O format=csv print.sps], [0], [dnl
+1 2 @&t@
+
+
+
+12
+
+1 -2 @&t@
+
+
+
+3 4 @&t@
+
+
+
+34
+
+3 -4 @&t@
+
+
+
+. 6 @&t@
+
+
+
+.6
+
+. -6 @&t@
+
+
+
+7 . @&t@
+
+
+
+7.
+
+7 -. @&t@
+
+
+
+9 0 @&t@
+
+
+
+90
+
+9 -0 @&t@
+
+
+])
+AT_CLEANUP
+
+AT_SETUP([PRINT string variables])
+AT_DATA([print.sps], [dnl
+DATA LIST FREE /s8 (a8) s10 (a10) vl255 (a255) vl258 (a258).
+BEGIN DATA.
+12345678
+AaaaaaaaaZ
+AbbbbMaryHadALittleLambbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbZ
+AccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccZ
+87654321
+AnnnnnnnnZ
+AmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmZ
+AoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooWhyIsItSoZ
+END DATA.
+
+print
+ outfile='print.txt'
+ /s10 * vl255 * vl258 *.
+
+EXECUTE.
+])
+AT_CHECK([pspp -O format=csv print.sps])
+AT_CHECK([cat print.txt], [0], [dnl
+ AaaaaaaaaZ AbbbbMaryHadALittleLambbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbZ AccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccZ @&t@
+ AnnnnnnnnZ AmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmZ AoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooWhyIsItSoZ @&t@
+])
+AT_CLEANUP
+
+AT_SETUP([PRINT to file])
+AT_DATA([print.sps], [dnl
+data list notable /x y 1-2.
+begin data.
+12
+34
+ 6
+7
+90
+end data.
+
+print outfile='print.out' /x y.
+print eject outfile='print.out' /x y (f1,f1).
+print outfile='print.out' /x '-' y.
+print outfile='print.out'.
+
+execute.
+])
+AT_CHECK([pspp -O format=csv print.sps])
+AT_CHECK([cat print.out], [0], [dnl
+ 1 2 @&t@
+112
+ 1 -2 @&t@
+ @&t@
+ 3 4 @&t@
+134
+ 3 -4 @&t@
+ @&t@
+ . 6 @&t@
+1.6
+ . -6 @&t@
+ @&t@
+ 7 . @&t@
+17.
+ 7 -. @&t@
+ @&t@
+ 9 0 @&t@
+190
+ 9 -0 @&t@
+ @&t@
+])
+AT_CLEANUP
+
+dnl Tests for a bug which crashed when deallocating after a bad PRINT
+dnl command.
+AT_SETUP([PRINT crash bug])
+AT_DATA([print.sps], [dnl
+DATA LIST LIST NOTABLE /a * b *.
+BEGIN DATA.
+1 2
+3 4
+END DATA.
+
+PRINT F8.2
+LIST.
+])
+AT_CHECK([pspp -O format=csv print.sps], [1], [dnl
+print.sps:7: error: PRINT: Syntax error at `F8.2': expecting a valid subcommand.
+
+Table: Data List
+a,b
+1.00,2.00
+3.00,4.00
+])
+AT_CLEANUP
+
+AT_SETUP([WRITE to file])
+AT_DATA([write.sps], [dnl
+data list notable /x y 1-2.
+begin data.
+12
+34
+ 6
+7
+90
+end data.
+
+write outfile='write.out' /x y.
+write outfile='write.out' /x y (2(f1)).
+write outfile='write.out' /x '-' y.
+write outfile='write.out'.
+
+execute.
+])
+AT_CHECK([pspp -O format=csv write.sps])
+AT_CHECK([cat write.out], [0], [dnl
+12
+12
+1-2
+
+34
+34
+3-4
+
+ 6
+ 6
+ -6
+
+7 @&t@
+7 @&t@
+7- @&t@
+
+90
+90
+9-0
+
+])
+AT_CLEANUP
+
+AT_SETUP([PRINT overwrites file])
+AT_DATA([output.txt], [abcdef
+])
+AT_DATA([print.sps], [dnl
+DATA LIST NOTABLE/x 1.
+BEGIN DATA.
+5
+END DATA.
+PRINT OUTFILE='output.txt'/x.
+EXECUTE.
+])
+AT_CHECK([pspp -O format=csv print.sps])
+AT_CHECK([cat output.txt], [0], [ 5 @&t@
+])
+AT_CLEANUP
+
+AT_SETUP([PRINT overwrites file atomically])
+AT_DATA([output.txt], [abcdef
+])
+AT_DATA([print.sps],
+[[DATA LIST NOTABLE/x 1.
+BEGIN DATA.
+5
+END DATA.
+PRINT OUTFILE='output.txt'/x.
+HOST COMMAND=['kill -TERM $PPID'].
+]])
+AT_CHECK([pspp -O format=csv print.sps], [143], [], [ignore])
+AT_CHECK([cat output.txt], [0], [abcdef
+])
+AT_CHECK(
+ [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
+AT_CLEANUP
+
+AT_SETUP([PRINT to same file being read])
+AT_DATA([data.txt], [5
+])
+AT_DATA([print.sps], [dnl
+DATA LIST FILE='data.txt' NOTABLE/x 1.
+COMPUTE y = x + 1.
+PRINT OUTFILE='data.txt'/y.
+EXECUTE.
+])
+AT_CHECK([pspp -O format=csv print.sps])
+AT_CHECK([cat data.txt], [0], [ 6.00 @&t@
+])
+AT_CHECK(
+ [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
+AT_CLEANUP
+
+AT_SETUP([PRINT to special file])
+AT_SKIP_IF([test ! -c /dev/null])
+AT_CHECK([ln -s /dev/null foo.out || exit 77])
+AT_SKIP_IF([test ! -c foo.out])
+AT_DATA([print.sps], [dnl
+DATA LIST NOTABLE /x 1.
+BEGIN DATA.
+1
+2
+3
+4
+5
+END DATA.
+PRINT OUTFILE='foo.out'/x.
+PRINT OUTFILE='foo2.out'/x.
+EXECUTE.
+])
+AT_CHECK([pspp -O format=csv print.sps])
+AT_CHECK([cat foo2.out], [0], [dnl
+ 1 @&t@
+ 2 @&t@
+ 3 @&t@
+ 4 @&t@
+ 5 @&t@
+])
+ls -l foo.out foo2.out
+AT_CHECK([test -c foo.out])
+AT_CLEANUP
+AT_BANNER([IMPORT and EXPORT])
+
+AT_SETUP([IMPORT and EXPORT])
+AT_DATA([import-export.sps], [dnl
+DATA LIST LIST NOTABLE /X Y.
+BEGIN DATA.
+1 2
+3 .
+5 6
+END DATA.
+
+EXPORT /OUTFILE='wiz.por'.
+IMPORT /FILE='wiz.por'.
+
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv import-export.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+X,Y
+1.00,2.00
+3.00,. @&t@
+5.00,6.00
+])
+AT_CLEANUP
+
AT_BANNER([SAVE])
# UNSELECTED=DELETE used to cause a crash if there was actually a
--- /dev/null
+m4_define([CHECK_UPDATE],
+ [AT_SETUP([UPDATE $1 with $2])
+ AT_DATA([a.data], [dnl
+1aB
+8aM
+3aE
+5aG
+0aA
+5aH
+6aI
+7aJ
+2aD
+7aK
+1aC
+7aL
+4aF
+])
+ AT_DATA([b.data], [dnl
+1bN
+3bO
+4bP
+6bQ
+7bR
+9bS
+])
+ m4_if([$1], [sav],
+ [AT_DATA([save-a.sps], [dnl
+DATA LIST NOTABLE FILE='a.data' /a b c 1-3 (A).
+SAVE OUTFILE='a.sav'.
+])
+ AT_CHECK([pspp -O format=csv save-a.sps])])
+ m4_if([$2], [sav],
+ [AT_DATA([save-b.sps], [dnl
+DATA LIST NOTABLE FILE='b.data' /a b c 1-3 (A).
+SAVE OUTFILE='b.sav'.
+])
+ AT_CHECK([pspp -O format=csv save-b.sps])])
+ AT_DATA([update.sps], [dnl
+m4_if([$1], [sav], [], [DATA LIST NOTABLE FILE='a.data' /a b c 1-3 (A).])
+m4_if([$2], [sav], [], [DATA LIST NOTABLE FILE='b.data' /a b c 1-3 (A).])
+UPDATE
+ m4_if([$1], [sav], [FILE='a.sav'], [FILE=*]) /IN=InA /SORT
+ m4_if([$2], [sav], [FILE='b.sav'], [FILE=*]) /IN=InB /RENAME c=d
+ BY a.
+LIST.
+])
+ AT_CHECK([pspp -O format=csv update.sps], [0], [dnl
+update.sps:6: warning: UPDATE: Encountered 3 sets of duplicate cases in the master file.
+
+Table: Data List
+a,b,c,d,InA,InB
+0,a,A,,1,0
+1,b,B,N,1,1
+1,a,C,,1,0
+2,a,D,,1,0
+3,b,E,O,1,1
+4,b,F,P,1,1
+5,a,G,,1,0
+5,a,H,,1,0
+6,b,I,Q,1,1
+7,b,J,R,1,1
+7,a,K,,1,0
+7,a,L,,1,0
+8,a,M,,1,0
+9,b,,S,0,1
+])
+AT_CLEANUP
+])
+
+AT_BANNER([UPDATE])
+
+CHECK_UPDATE([sav], [sav])
+CHECK_UPDATE([sav], [inline])
+CHECK_UPDATE([inline], [sav])
--- /dev/null
+AT_BANNER([MISSING VALUES])
+
+AT_SETUP([MISSING VALUES valid cases])
+AT_DATA([missing-values.sps], [dnl
+DATA LIST NOTABLE/str1 1-5 (A) str2 6-8 (A) date1 9-19 (DATE) num1 20-25
+ longstr 26-36 (A).
+
+* Numeric missing values.
+MISSING VALUES date1 num1 (1).
+MISSING VALUES date1 num1 (1, 2).
+MISSING VALUES date1 num1 (1, 2, 3).
+
+* Numeric missing values using the first variable's format.
+MISSING VALUES num1 date1 ('1').
+MISSING VALUES num1 date1 ('1', '2').
+MISSING VALUES num1 date1 ('1', '2', '3').
+MISSING VALUES date1 num1 ('06-AUG-05').
+MISSING VALUES date1 num1 ('06-AUG-05', '01-OCT-78').
+MISSING VALUES date1 num1 ('06-AUG-05', '01-OCT-78', '14-FEB-81').
+
+* Ranges of numeric missing values.
+MISSING VALUES num1 (1 THRU 2).
+MISSING VALUES num1 (LO THRU 2).
+MISSING VALUES num1 (LOWEST THRU 2).
+MISSING VALUES num1 (1 THRU HI).
+MISSING VALUES num1 (1 THRU HIGHEST).
+
+* A range of numeric missing values, plus an individual value.
+MISSING VALUES num1 (1 THRU 2, 3).
+MISSING VALUES num1 (LO THRU 2, 3).
+MISSING VALUES num1 (LOWEST THRU 2, 3).
+MISSING VALUES num1 (1 THRU HI, -1).
+MISSING VALUES num1 (1 THRU HIGHEST, -1).
+
+* String missing values.
+MISSING VALUES str1 str2 longstr ('abc ','def').
+
+* May mix variable types when clearing missing values.
+MISSING VALUES ALL ().
+])
+AT_CHECK([pspp -O format=csv missing-values.sps])
+AT_CLEANUP
+
+AT_SETUP([MISSING VALUES invalid cases])
+AT_DATA([missing-values.sps], [dnl
+DATA LIST NOTABLE/str1 1-5 (A) str2 6-8 (A) date1 9-19 (DATE) num1 20-25
+ longstr 26-36 (A).
+
+* Too long for str2.
+MISSING VALUES str1 str2 longstr ('abcde').
+
+* Long string missing value longer than 8 bytes.
+MISSING VALUES longstr ('abcdefghijk').
+
+* No string ranges.
+MISSING VALUES str1 ('a' THRU 'z').
+
+* Mixing string and numeric variables.
+MISSING VALUES str1 num1 ('123').
+])
+AT_CHECK([pspp -O format=csv missing-values.sps], [1], [dnl
+missing-values.sps:5: error: MISSING VALUES: Missing values provided are too long to assign to variable of width 3.
+
+missing-values.sps:8: error: MISSING VALUES: Truncating missing value to maximum acceptable length (8 bytes).
+
+missing-values.sps:11: error: MISSING VALUES: Syntax error at `THRU': expecting string.
+
+missing-values.sps:11: error: MISSING VALUES: THRU is not a variable name.
+
+missing-values.sps:14: error: MISSING VALUES: Cannot mix numeric variables (e.g. num1) and string variables (e.g. str1) within a single list.
+])
+AT_CLEANUP
c
d
","Multiple dichotomy set
-Counted value: ""c""
+Counted value: `c'
Category label source: Variable labels
"
$e,"w
c
d
","Multiple dichotomy set
-Counted value: ""c""
+Counted value: `c'
Category label source: Variable labels
"
$e,"w
--- /dev/null
+AT_BANNER([RENAME VARIABLES])
+
+AT_SETUP([RENAME VARIABLES])
+AT_DATA([rename-variables.sps], [dnl
+DATA LIST LIST /brakeFluid * y * .
+BEGIN DATA.
+1 3
+2 3
+3 3
+4 3
+END DATA.
+
+LIST.
+
+RENAME VARIABLES (brakeFluid=applecarts).
+
+LIST.
+
+SAVE /OUTFILE='rename.sav'.
+])
+AT_CHECK([pspp -o pspp.csv rename-variables.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+brakeFluid,F8.0
+y,F8.0
+
+Table: Data List
+brakeFluid,y
+1.00,3.00
+2.00,3.00
+3.00,3.00
+4.00,3.00
+
+Table: Data List
+applecarts,y
+1.00,3.00
+2.00,3.00
+3.00,3.00
+4.00,3.00
+])
+AT_CHECK([grep '[bB][rR][aA][kK][eE]' rename.sav], [1], [ignore-nolog])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([SPLIT FILE])
+
+AT_SETUP([SPLIT FILE])
+AT_DATA([split-file.sps], [dnl
+title 'Test SPLIT FILE utility'.
+
+data list notable /X 1 Y 2.
+begin data.
+12
+16
+17
+19
+15
+14
+27
+20
+26
+25
+28
+29
+24
+end data.
+split file by x.
+list.
+])
+AT_CHECK([pspp -o pspp.csv split-file.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Title: Test SPLIT FILE utility
+
+Variable,Value,Label
+X,1,
+
+Table: Data List
+X,Y
+1,2
+1,6
+1,7
+1,9
+1,5
+1,4
+
+Variable,Value,Label
+X,2,
+
+Table: Data List
+X,Y
+2,7
+2,0
+2,6
+2,5
+2,8
+2,9
+2,4
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([SYSFILE INFO])
+
+AT_SETUP([SYSFILE INFO])
+AT_DATA([sysfile-info.sps], [dnl
+DATA LIST LIST /x * name (a10) .
+BEGIN DATA
+1 one
+2 two
+3 three
+END DATA.
+SAVE OUTFILE='pro.sav'.
+
+sysfile info file='pro.sav'.
+])
+AT_CHECK([pspp -o pspp.csv sysfile-info.sps])
+AT_CHECK(
+ [sed -e '/^Created:,/d' \
+ -e '/^Endian:,/d' \
+ -e '/^Integer Format:,/d' \
+ -e '/^Real Format:,/d' pspp.csv],
+ [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+x,F8.0
+name,A10
+
+File:,pro.sav
+Label:,No label.
+Variables:,2
+Cases:,3
+Type:,System File
+Weight:,Not weighted.
+Mode:,Compression on.
+Charset:,Unknown
+
+Variable,Description,,Position
+x,Format: F8.2,,1
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+name,Format: A10,,2
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 10,,
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([VALUE LABELS])
+
+dnl Tests for a bug which caused VALUE LABELS to
+dnl crash when given invalid syntax.
+AT_SETUP([VALUE LABELS invalid syntax bug])
+AT_DATA([value-labels.sps], [dnl
+DATA LIST LIST NOTABLE /a * pref * .
+BEGIN DATA.
+ 1.00 1.00
+ 1.00 2.00
+ 2.00 1.00
+ 2.00 2.00
+END DATA.
+
+VALUE LABELS /var=a 'label for a'.
+])
+AT_CHECK([pspp -O format=csv value-labels.sps], [1], [dnl
+value-labels.sps:9: error: VALUE LABELS: var is not a variable name.
+])
+AT_CLEANUP
+
+# Tests for a bug which caused a crash if VALUE LABELS had a trailing /.
+AT_SETUP([VALUE LABELS trailing `/' bug])
+AT_DATA([value-labels.sps], [dnl
+DATA LIST LIST NOTABLE /X * .
+BEGIN DATA.
+1
+2
+3
+4
+END DATA.
+
+
+VALUE LABELS X 1 'one' 2 'two' 3 'three'/
+
+
+LIST VARIABLES=X.
+])
+AT_CHECK([pspp -O format=csv value-labels.sps], [0], [dnl
+Table: Data List
+X
+1.00
+2.00
+3.00
+4.00
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([variable display attributes])
+
+AT_SETUP([variable display attribute commands])
+AT_DATA([var-display.sps], [dnl
+DATA LIST FREE /x y z.
+VARIABLE ALIGNMENT x (LEFT)/y (RIGHT)/z (CENTER).
+VARIABLE WIDTH x (10)/y (12)/z (14).
+VARIABLE LEVEL x (SCALE)/y (ORDINAL)/z (NOMINAL).
+DISPLAY DICTIONARY.
+])
+AT_CHECK([pspp -o pspp.csv var-display.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variable,Description,,Position
+x,Format: F8.2,,1
+,Measure: Scale,,
+,Display Alignment: Left,,
+,Display Width: 10,,
+y,Format: F8.2,,2
+,Measure: Ordinal,,
+,Display Alignment: Right,,
+,Display Width: 12,,
+z,Format: F8.2,,3
+,Measure: Nominal,,
+,Display Alignment: Center,,
+,Display Width: 14,,
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([VECTOR])
+
+AT_SETUP([VECTOR short form])
+AT_DATA([vector.sps], [dnl
+data list notable/x 1.
+vector v(4).
+display vector.
+])
+AT_CHECK([pspp -o pspp.csv vector.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Vector,Position,Variable,Print Format
+v,1,v1,F8.2
+,2,v2,F8.2
+,3,v3,F8.2
+,4,v4,F8.2
+])
+AT_CLEANUP
+
+AT_SETUP([VECTOR short form with format specification])
+AT_DATA([vector.sps], [dnl
+data list notable/x 1.
+vector #vec(4, comma10.2).
+display vector.
+])
+AT_CHECK([pspp -o pspp.csv vector.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Vector,Position,Variable,Print Format
+#vec,1,#vec1,COMMA10.2
+,2,#vec2,COMMA10.2
+,3,#vec3,COMMA10.2
+,4,#vec4,COMMA10.2
+])
+AT_CLEANUP
+
+AT_SETUP([VECTOR short form in INPUT PROGRAM])
+AT_DATA([vector.sps], [dnl
+input program.
+vector x(5).
+data list notable/x5 x2 x3 x1 x4 1-5.
+end input program.
+display vector.
+])
+AT_CHECK([pspp -o pspp.csv vector.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Vector,Position,Variable,Print Format
+x,1,x1,F8.2
+,2,x2,F8.2
+,3,x3,F8.2
+,4,x4,F8.2
+,5,x5,F8.2
+])
+AT_CLEANUP
+
+AT_SETUP([VECTOR long form])
+AT_DATA([vector.sps], [dnl
+data list notable/u w x y z 1-5.
+vector a=u to y.
+vector b=x to z.
+vector c=all.
+display vector.
+])
+AT_CHECK([pspp -o pspp.csv vector.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Vector,Position,Variable,Print Format
+a,1,u,F1.0
+,2,w,F1.0
+,3,x,F1.0
+,4,y,F1.0
+b,1,x,F1.0
+,2,y,F1.0
+,3,z,F1.0
+c,1,u,F1.0
+,2,w,F1.0
+,3,x,F1.0
+,4,y,F1.0
+,5,z,F1.0
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([WEIGHT])
+
+AT_SETUP([WEIGHT])
+AT_DATA([weight.txt], [dnl
+ 18 1
+ 19 7
+ 20 26
+ 21 76
+ 22 57
+ 23 58
+ 24 38
+ 25 38
+ 26 30
+ 27 21
+ 28 23
+ 29 24
+ 30 23
+ 31 14
+ 32 21
+ 33 21
+ 34 14
+ 35 14
+ 36 17
+ 37 11
+ 38 16
+ 39 14
+ 40 15
+ 41 14
+ 42 14
+ 43 8
+ 44 15
+ 45 10
+ 46 12
+ 47 13
+ 48 13
+ 49 5
+ 50 5
+ 51 3
+ 52 7
+ 53 6
+ 54 2
+ 55 2
+ 56 2
+ 57 3
+ 58 1
+ 59 3
+ 61 1
+ 62 3
+ 63 1
+ 64 1
+ 65 2
+ 70 1
+ 78 1
+ 79 1
+ 80 1
+ 94 1
+])
+AT_DATA([weight.sps], [dnl
+SET FORMAT F8.3.
+data list file='weight.txt'/AVAR 1-5 BVAR 6-10.
+weight by BVAR.
+
+descriptives AVAR /statistics all /format serial.
+frequencies AVAR /statistics all.
+])
+AT_CHECK([pspp -o pspp.csv weight.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading 1 record from `weight.txt'.
+Variable,Record,Columns,Format
+AVAR,1,1- 5,F5.0
+BVAR,1,6- 10,F5.0
+
+Table: Valid cases = 730; cases with missing value(s) = 0.
+Variable,Valid N,Missing N,Mean,S.E. Mean,Std Dev,Variance,Kurtosis,S.E. Kurt,Skewness,S.E. Skew,Range,Minimum,Maximum,Sum
+AVAR,730,0,31.515,.405,10.937,119.608,2.411,.181,1.345,.090,76.000,18.000,94.000,23006.00
+
+Table: AVAR
+Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
+,18,1,.137,.137,.137
+,19,7,.959,.959,1.096
+,20,26,3.562,3.562,4.658
+,21,76,10.411,10.411,15.068
+,22,57,7.808,7.808,22.877
+,23,58,7.945,7.945,30.822
+,24,38,5.205,5.205,36.027
+,25,38,5.205,5.205,41.233
+,26,30,4.110,4.110,45.342
+,27,21,2.877,2.877,48.219
+,28,23,3.151,3.151,51.370
+,29,24,3.288,3.288,54.658
+,30,23,3.151,3.151,57.808
+,31,14,1.918,1.918,59.726
+,32,21,2.877,2.877,62.603
+,33,21,2.877,2.877,65.479
+,34,14,1.918,1.918,67.397
+,35,14,1.918,1.918,69.315
+,36,17,2.329,2.329,71.644
+,37,11,1.507,1.507,73.151
+,38,16,2.192,2.192,75.342
+,39,14,1.918,1.918,77.260
+,40,15,2.055,2.055,79.315
+,41,14,1.918,1.918,81.233
+,42,14,1.918,1.918,83.151
+,43,8,1.096,1.096,84.247
+,44,15,2.055,2.055,86.301
+,45,10,1.370,1.370,87.671
+,46,12,1.644,1.644,89.315
+,47,13,1.781,1.781,91.096
+,48,13,1.781,1.781,92.877
+,49,5,.685,.685,93.562
+,50,5,.685,.685,94.247
+,51,3,.411,.411,94.658
+,52,7,.959,.959,95.616
+,53,6,.822,.822,96.438
+,54,2,.274,.274,96.712
+,55,2,.274,.274,96.986
+,56,2,.274,.274,97.260
+,57,3,.411,.411,97.671
+,58,1,.137,.137,97.808
+,59,3,.411,.411,98.219
+,61,1,.137,.137,98.356
+,62,3,.411,.411,98.767
+,63,1,.137,.137,98.904
+,64,1,.137,.137,99.041
+,65,2,.274,.274,99.315
+,70,1,.137,.137,99.452
+,78,1,.137,.137,99.589
+,79,1,.137,.137,99.726
+,80,1,.137,.137,99.863
+,94,1,.137,.137,100.000
+Total,,730,100.0,100.0,
+
+Table: AVAR
+N,Valid,730
+,Missing,0
+Mean,,31.515
+S.E. Mean,,.405
+Mode,,21.000
+Std Dev,,10.937
+Variance,,119.608
+Kurtosis,,2.411
+S.E. Kurt,,.181
+Skewness,,1.345
+S.E. Skew,,.090
+Range,,76.000
+Minimum,,18.000
+Maximum,,94.000
+Sum,,23006.00
+Percentiles,50 (Median),29
+])
+AT_CLEANUP
[[1 OR $false], [true]],
[[1 OR $sysmis], [true]],
[[2 OR $sysmis], [sysmis],
- [error: DEBUG EVALUATE: An operand of the logical disjunction ("OR") operator was found to have a value other than 0 (false), 1 (true), or the system-missing value. The result was forced to 0.]],
+ [error: DEBUG EVALUATE: An operand of the logical disjunction (`OR') operator was found to have a value other than 0 (false), 1 (true), or the system-missing value. The result was forced to 0.]],
[[2 AND $sysmis], [false],
- [error: DEBUG EVALUATE: An operand of the logical conjunction ("AND") operator was found to have a value other than 0 (false), 1 (true), or the system-missing value. The result was forced to 0.]],
+ [error: DEBUG EVALUATE: An operand of the logical conjunction (`AND') operator was found to have a value other than 0 (false), 1 (true), or the system-missing value. The result was forced to 0.]],
[['string' AND $sysmis], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying logical conjunction ("AND") operator: cannot convert string to boolean.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying logical conjunction (`AND') operator: cannot convert string to boolean.]],
[[0 AND $sysmis], [false]],
[[(1>2) + 1], [1.00]],
[[$true + $false], [1.00]])
[[$sysmis + 1], [sysmis]],
[[7676 + $sysmis], [sysmis]],
[[('foo') + 5], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying addition ("+") operator: cannot convert string to number.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying addition (`+') operator: cannot convert string to number.]],
dnl Arithmetic concatenation requires CONCAT:
[[('foo') + ('bar')], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying addition ("+") operator: cannot convert string to number.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying addition (`+') operator: cannot convert string to number.]],
dnl Lexical concatenation succeeds:
[['foo' + 'bar'], ["foobar"]],
[[1 +3 - 2 +4 -5], [1.00]],
[[1 - $true], [0.00]],
[[$true - 4/3], [-0.33]],
[['string' - 1e10], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying subtraction ("-") operator: cannot convert string to number.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying subtraction (`-') operator: cannot convert string to number.]],
[[9.5 - ''], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying subtraction ("-") operator: cannot convert string to number.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying subtraction (`-') operator: cannot convert string to number.]],
[[1 - 2], [-1.00]],
[[52 -23], [29.00]])
[[2**8], [256.00]],
[[(2**3)**4], [4096.00]],
[[2**3**4], [4096.00],
- [warning: DEBUG EVALUATE: The exponentiation operator ("**") is left-associative, even though right-associative semantics are more useful. That is, "a**b**c" equals "(a**b)**c", not as "a**(b**c)". To disable this warning, insert parentheses.]])
+ [warning: DEBUG EVALUATE: The exponentiation operator (`**') is left-associative, even though right-associative semantics are more useful. That is, `a**b**c' equals `(a**b)**c', not as `a**(b**c)'. To disable this warning, insert parentheses.]])
CHECK_EXPR_EVAL([unary minus],
[[2+-3], [-1.00]],
[[not $false], [true]],
[[not 0], [true]],
[[not 2.5], [true],
- [error: DEBUG EVALUATE: An operand of the logical negation ("NOT") operator was found to have a value other than 0 (false), 1 (true), or the system-missing value. The result was forced to 0.]],
+ [error: DEBUG EVALUATE: An operand of the logical negation (`NOT') operator was found to have a value other than 0 (false), 1 (true), or the system-missing value. The result was forced to 0.]],
[[not $true], [false]],
[[not 1], [false]],
[[not $sysmis], [sysmis]],
[[~ $false], [true]],
[[~ 0], [true]],
[[~ 2.5], [true],
- [error: DEBUG EVALUATE: An operand of the logical negation ("NOT") operator was found to have a value other than 0 (false), 1 (true), or the system-missing value. The result was forced to 0.]],
+ [error: DEBUG EVALUATE: An operand of the logical negation (`NOT') operator was found to have a value other than 0 (false), 1 (true), or the system-missing value. The result was forced to 0.]],
[[~ $true], [false]],
[[~ 1], [false]],
[[~ $sysmis], [sysmis]])
[[1 eq 2], [false]],
[[2 = 3], [false]],
[[1 eq 'foobar'], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying numeric equality ("EQ") operator: cannot convert string to number.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying numeric equality (`EQ') operator: cannot convert string to number.]],
[[5 eq 'foobar'], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying numeric equality ("EQ") operator: cannot convert string to number.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying numeric equality (`EQ') operator: cannot convert string to number.]],
[['baz' = 10], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying string equality ("=") operator: cannot convert number to string.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying string equality (`=') operator: cannot convert number to string.]],
[['quux' = 5.55], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying string equality ("=") operator: cannot convert number to string.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying string equality (`=') operator: cannot convert number to string.]],
[['foobar' = 'foobar'], [true]],
[['quux' = 'bar'], [false]],
[['bar ' = 'bar'], [true]],
dnl Check precedence:
[[1 + 2 = 3], [true]],
[[1 >= 2 = 2 ge 3], [false],
- [warning: DEBUG EVALUATE: Chaining relational operators (e.g. "a < b < c") will not produce the mathematically expected result. Use the AND logical operator to fix the problem (e.g. "a < b AND b < c"). If chaining is really intended, parentheses will disable this warning (e.g. "(a < b) < c".)]],
+ [warning: DEBUG EVALUATE: Chaining relational operators (e.g. `a < b < c') will not produce the mathematically expected result. Use the AND logical operator to fix the problem (e.g. `a < b AND b < c'). If chaining is really intended, parentheses will disable this warning (e.g. `(a < b) < c'.)]],
dnl Mathematically true:
[[3 ne 2 ~= 1], [false],
- [warning: DEBUG EVALUATE: Chaining relational operators (e.g. "a < b < c") will not produce the mathematically expected result. Use the AND logical operator to fix the problem (e.g. "a < b AND b < c"). If chaining is really intended, parentheses will disable this warning (e.g. "(a < b) < c".)]],
+ [warning: DEBUG EVALUATE: Chaining relational operators (e.g. `a < b < c') will not produce the mathematically expected result. Use the AND logical operator to fix the problem (e.g. `a < b AND b < c'). If chaining is really intended, parentheses will disable this warning (e.g. `(a < b) < c'.)]],
[[3 > 2 > 1], [false],
- [warning: DEBUG EVALUATE: Chaining relational operators (e.g. "a < b < c") will not produce the mathematically expected result. Use the AND logical operator to fix the problem (e.g. "a < b AND b < c"). If chaining is really intended, parentheses will disable this warning (e.g. "(a < b) < c".)]],
+ [warning: DEBUG EVALUATE: Chaining relational operators (e.g. `a < b < c') will not produce the mathematically expected result. Use the AND logical operator to fix the problem (e.g. `a < b AND b < c'). If chaining is really intended, parentheses will disable this warning (e.g. `(a < b) < c'.)]],
[[1 <= 2], [true]],
[[2.5 <= 1.5], [false]],
[[2 le 2], [true]],
dnl Make sure <= token can't be split:
[[2 < = 2], [error],
- [error: DEBUG EVALUATE: Syntax error in expression at `='.]],
+ [error: DEBUG EVALUATE: Syntax error at `='.]],
[[1 <= 'foobar'], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying numeric less-than-or-equal-to ("<=") operator: cannot convert string to number.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying numeric less-than-or-equal-to (`<=') operator: cannot convert string to number.]],
[[5 <= 'foobar'], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying numeric less-than-or-equal-to ("<=") operator: cannot convert string to number.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying numeric less-than-or-equal-to (`<=') operator: cannot convert string to number.]],
[['baz' <= 10], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying string less-than-or-equal-to ("<=") operator: cannot convert number to string.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying string less-than-or-equal-to (`<=') operator: cannot convert number to string.]],
[['quux' <= 5.55], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying string less-than-or-equal-to ("<=") operator: cannot convert number to string.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying string less-than-or-equal-to (`<=') operator: cannot convert number to string.]],
[['0123' <= '0123'], [true]],
[['0123' <= '0124'], [true]],
[['0124' le '0123'], [false]],
[[3.5 lt 4], [true]],
[[4 lt 3.5], [false]],
[[1 lt 'foobar'], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying numeric less than ("<") operator: cannot convert string to number.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying numeric less than (`<') operator: cannot convert string to number.]],
[[5 lt 'foobar'], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying numeric less than ("<") operator: cannot convert string to number.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying numeric less than (`<') operator: cannot convert string to number.]],
[['baz' < 10], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying string less than ("<") operator: cannot convert number to string.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying string less than (`<') operator: cannot convert number to string.]],
[['quux' < 5.55], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying string less than ("<") operator: cannot convert number to string.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying string less than (`<') operator: cannot convert number to string.]],
[['0123' lt '0123'], [false]],
[['0123' < '0124'], [true]],
[['0124' lt '0123'], [false]],
[[2 ge 2], [true]],
dnl Make sure >= token can't be split:
[[2 > = 2], [error],
- [error: DEBUG EVALUATE: Syntax error in expression at `='.]],
+ [error: DEBUG EVALUATE: Syntax error at `='.]],
[[1 >= 'foobar'], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying numeric greater-than-or-equal-to (">=") operator: cannot convert string to number.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying numeric greater-than-or-equal-to (`>=') operator: cannot convert string to number.]],
[[5 ge 'foobar'], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying numeric greater-than-or-equal-to (">=") operator: cannot convert string to number.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying numeric greater-than-or-equal-to (`>=') operator: cannot convert string to number.]],
[['baz' ge 10], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying string greater-than-or-equal-to (">=") operator: cannot convert number to string.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying string greater-than-or-equal-to (`>=') operator: cannot convert number to string.]],
[['quux' >= 5.55], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying string greater-than-or-equal-to (">=") operator: cannot convert number to string.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying string greater-than-or-equal-to (`>=') operator: cannot convert number to string.]],
[['0123' ge '0123'], [true]],
[['0123' >= '0124'], [false]],
[['0124' >= '0123'], [true]],
[[3.5 gt 4], [false]],
[[4 gt 3.5], [true]],
[[1 gt 'foobar'], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying numeric greater than (">") operator: cannot convert string to number.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying numeric greater than (`>') operator: cannot convert string to number.]],
[[5 gt 'foobar'], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying numeric greater than (">") operator: cannot convert string to number.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying numeric greater than (`>') operator: cannot convert string to number.]],
[['baz' > 10], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying string greater than (">") operator: cannot convert number to string.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying string greater than (`>') operator: cannot convert number to string.]],
[['quux' > 5.55], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying string greater than (">") operator: cannot convert number to string.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying string greater than (`>') operator: cannot convert number to string.]],
[['0123' gt '0123'], [false]],
[['0123' > '0124'], [false]],
[['0124' gt '0123'], [true]],
[[1 <> 2], [true]],
[[2 ne 3], [true]],
[[1 ~= 'foobar'], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying numeric inequality ("<>") operator: cannot convert string to number.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying numeric inequality (`<>') operator: cannot convert string to number.]],
[[5 <> 'foobar'], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying numeric inequality ("<>") operator: cannot convert string to number.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying numeric inequality (`<>') operator: cannot convert string to number.]],
[['baz' ne 10], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying string inequality ("<>") operator: cannot convert number to string.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying string inequality (`<>') operator: cannot convert number to string.]],
[['quux' ~= 5.55], [error],
- [error: DEBUG EVALUATE: Type mismatch while applying string inequality ("<>") operator: cannot convert number to string.]],
+ [error: DEBUG EVALUATE: Type mismatch while applying string inequality (`<>') operator: cannot convert number to string.]],
[['foobar' <> 'foobar'], [false]],
[['quux' ne 'bar'], [true]],
[['bar ' <> 'bar'], [false]],
[['asdfj ' ne 'asdf'], [true]],
dnl <> token can't be split:
[[1 < > 1], [error],
- [error: DEBUG EVALUATE: Syntax error in expression at `GT'.]],
+ [error: DEBUG EVALUATE: Syntax error at `GT'.]],
dnl # ~= token can't be split:
[[1 ~ = 1], [error],
- [error: DEBUG EVALUATE: Syntax error expecting end of command at `NOT'.]])
+ [error: DEBUG EVALUATE: Syntax error at `NOT': expecting end of command.]])
CHECK_EXPR_EVAL([exp lg10 ln sqrt abs mod mod10 rnd trunc],
[[exp(10)], [22026.47]],
[[mod(0, x)], [0.00], [], [(X = 5.00)]],
[[x ** 1], [5.00], [], [(X = 5.00)]],
[[x ** 2], [25.00], [], [(X = 5.00)]])
+
+AT_SETUP([LAG function])
+AT_DATA([lag.sps], [dnl
+data list /W 1.
+begin data.
+1
+2
+3
+4
+5
+end data.
+
+compute X=lag(w,1).
+compute Y=lag(x).
+compute Z=lag(w,2).
+list.
+])
+AT_CHECK([pspp -o pspp.csv lag.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading 1 record from INLINE.
+Variable,Record,Columns,Format
+W,1,1- 1,F1.0
+
+Table: Data List
+W,X,Y,Z
+1,. ,. ,. @&t@
+2,1.00,. ,. @&t@
+3,2.00,1.00,1.00
+4,3.00,2.00,2.00
+5,4.00,3.00,3.00
+])
+AT_CLEANUP
+
+AT_SETUP([LAG crash bug])
+AT_DATA([lag.sps], [dnl
+DATA LIST LIST /x.
+BEGIN DATA
+1
+2
+END DATA.
+
+DO IF (x <> LAG(x) ).
+ ECHO 'hello'.
+END IF.
+
+EXECUTE.
+])
+AT_CHECK([pspp -o pspp.csv lag.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+x,F8.0
+
+hello
+])
+AT_CLEANUP
+
+dnl Tests for a bug which caused UNIFORM(x) to always return zero.
+AT_SETUP([UNIFORM function])
+AT_DATA([uniform.sps], [dnl
+set seed=10.
+input program.
++ loop #i = 1 to 20.
++ do repeat response=R1.
++ compute response = uniform(10).
++ end repeat.
++ end case.
++ end loop.
++ end file.
+end input program.
+
+list.
+])
+AT_CHECK([pspp -o pspp.csv uniform.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+R1
+7.71
+2.99
+.21
+4.95
+6.34
+4.43
+7.49
+8.32
+4.99
+5.83
+2.25
+.25
+1.98
+7.09
+7.61
+2.66
+1.69
+2.64
+.88
+1.50
+])
+AT_CLEANUP
+
+AT_SETUP([VALUELABEL function])
+AT_DATA([valuelabel.sps], [dnl
+DATA LIST notable /n 1 s 2(a).
+VALUE LABELS /n 0 'Very dissatisfied'
+ 1 'Dissatisfied'
+ 1.5 'Slightly Peeved'
+ 2 'Neutral'
+ 3 'Satisfied'
+ 4 'Very satisfied'.
+VALUE LABELS /s 'a' 'Wouldn''t buy again'
+ 'b' 'Unhappy'
+ 'c' 'Bored'
+ 'd' 'Satiated'
+ 'e' 'Elated'.
+STRING nlabel slabel(a10).
+COMPUTE nlabel = VALUELABEL(n).
+COMPUTE slabel = VALUELABEL(s).
+LIST.
+BEGIN DATA.
+
+0a
+1b
+2c
+3d
+4e
+5f
+6g
+END DATA.
+])
+AT_CHECK([pspp -o pspp.csv valuelabel.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+n,s,nlabel,slabel
+.,,,
+0,a,Very dissa,Wouldn't b
+1,b,Dissatisfi,Unhappy @&t@
+2,c,Neutral ,Bored @&t@
+3,d,Satisfied ,Satiated @&t@
+4,e,Very satis,Elated @&t@
+5,f,,
+6,g,,
+])
+AT_CLEANUP
+
+AT_SETUP([variables in expressions])
+AT_DATA([variables.sps], [dnl
+DATA LIST NOTABLE/N1 TO N5 1-5.
+MISSING VALUES N1 TO N5 (3 THRU 5, 1).
+BEGIN DATA.
+12345
+6789
+END DATA.
+
+COMPUTE P1=N1.
+COMPUTE P2=N2.
+COMPUTE P3=N3.
+COMPUTE P4=N4.
+COMPUTE P5=N5.
+
+COMPUTE MC=NMISS(N1 TO N5).
+COMPUTE VC=NVALID(N1 TO N5).
+
+COMPUTE S1=SYSMIS(N1).
+COMPUTE S2=SYSMIS(N2).
+COMPUTE S3=SYSMIS(N3).
+COMPUTE S4=SYSMIS(N4).
+COMPUTE S5=SYSMIS(N5).
+
+COMPUTE M1=MISSING(N1).
+COMPUTE M2=MISSING(N2).
+COMPUTE M3=MISSING(N3).
+COMPUTE M4=MISSING(N4).
+COMPUTE M5=MISSING(N5).
+
+COMPUTE V1=VALUE(N1).
+COMPUTE V2=VALUE(N2).
+COMPUTE V3=VALUE(N3).
+COMPUTE V4=VALUE(N4).
+COMPUTE V5=VALUE(N5).
+
+FORMATS ALL (F1).
+
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv variables.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+N1,N2,N3,N4,N5,P1,P2,P3,P4,P5,MC,VC,S1,S2,S3,S4,S5,M1,M2,M3,M4,M5,V1,V2,V3,V4,V5
+1,2,3,4,5,.,2,.,.,.,4,1,0,0,0,0,0,1,0,1,1,1,1,2,3,4,5
+6,7,8,9,.,6,7,8,9,.,1,4,0,0,0,0,1,0,0,0,0,1,6,7,8,9,.
+])
+AT_CLEANUP
+
+AT_SETUP([vectors in expressions])
+AT_DATA([vectors.sps], [dnl
+DATA LIST NOTABLE /N1 TO N5 1-5.
+MISSING VALUES N1 TO N5 (3 THRU 5, 1).
+BEGIN DATA.
+12345
+6789
+END DATA.
+
+VECTOR N=N1 TO N5.
+VECTOR X(5).
+LOOP I=1 TO 5.
+COMPUTE X(I)=N(I) + 1.
+END LOOP.
+
+FORMATS ALL (F2).
+
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv vectors.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+N1,N2,N3,N4,N5,X1,X2,X3,X4,X5,I
+1,2,3,4,5,.,3,.,.,.,5
+6,7,8,9,.,7,8,9,10,.,5
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([expression parsing])
+
+AT_SETUP([parse expression with unknown variable crash])
+AT_DATA([parse.sps], [dnl
+INPUT PROGRAM.
+LOOP c=1 to 10.
+COMPUTE var1=NORMAL(100).
+END CASE.
+END LOOP.
+END FILE.
+END INPUT PROGRAM.
+
+
+IF ( y > 0 ) .
+COMPUTE x=y.
+END IF.
+])
+AT_CHECK([pspp -O format=csv parse.sps], [1], [dnl
+parse.sps:10: error: IF: Unknown identifier y.
+
+parse.sps:10: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([lexer])
+
+AT_SETUP([lexer ignores initial @%:@! line])
+AT_DATA([lexer.sps], [dnl
+#! /usr/local/bin/pspp
+DATA LIST LIST NOTABLE /a.
+BEGIN DATA.
+1
+2
+END DATA.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv lexer.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+a
+1.00
+2.00
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([q2c])
+
+AT_SETUP([q2c enforces mandatory subcommands])
+AT_DATA([q2c.sps], [dnl
+DATA LIST LIST NOTABLE /x *.
+BEGIN DATA.
+1
+2
+3
+END DATA.
+
+EXAMINE.
+ONEWAY.
+CROSSTABS.
+])
+AT_CHECK([pspp -O format=csv q2c.sps], [1], [dnl
+q2c.sps:8: error: EXAMINE: VARIABLES subcommand must be given.
+
+q2c.sps:9: error: ONEWAY: Syntax error at end of command: expecting variable name.
+
+q2c.sps:10: error: CROSSTABS: TABLES subcommand must be given.
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([Variable parser])
+
+dnl This program tests that both long and short variable names are parsed OK.
+dnl It use CROSSTABS, since its TABLES subcommand exercises the array var set
+dnl feature.
+AT_SETUP([Long variable names])
+AT_DATA([longvars.sps], [dnl
+DATA LIST LIST /AlphaBetaGamma * B * X * Yabbadabbadoo * .
+BEGIN DATA.
+2 3 4 5
+END DATA.
+
+LIST.
+
+CROSSTABS
+ VARIABLES X (1,7) Yabbadabbadoo (1,7)
+ /TABLES X BY Yabbadabbadoo.
+])
+AT_CHECK([pspp -o pspp.csv longvars.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+AlphaBetaGamma,F8.0
+B,F8.0
+X,F8.0
+Yabbadabbadoo,F8.0
+
+Table: Data List
+AlphaBetaGamma,B,X,Yabbadabbadoo
+2.00,3.00,4.00,5.00
+
+Table: Summary.
+,Cases,,,,,
+,Valid,,Missing,,Total,
+,N,Percent,N,Percent,N,Percent
+X * Yabbadabbadoo,1,100.0%,0,0.0%,1,100.0%
+
+Table: X * Yabbadabbadoo [[count]].
+,Yabbadabbadoo,,,,,,,
+X,1.00,2.00,3.00,4.00,5.00,6.00,7.00,Total
+1.00,.0,.0,.0,.0,.0,.0,.0,.0
+2.00,.0,.0,.0,.0,.0,.0,.0,.0
+3.00,.0,.0,.0,.0,.0,.0,.0,.0
+4.00,.0,.0,.0,.0,1.0,.0,.0,1.0
+5.00,.0,.0,.0,.0,.0,.0,.0,.0
+6.00,.0,.0,.0,.0,.0,.0,.0,.0
+7.00,.0,.0,.0,.0,.0,.0,.0,.0
+Total,.0,.0,.0,.0,1.0,.0,.0,1.0
+])
+AT_CLEANUP
asdfk,1,3.00,3.00,.00,1.00
])
AT_CLEANUP
+
+
+
+AT_SETUP([AUTORECODE long strings and check the value labels])
+AT_DATA([ar.sps],
+ [data list notable list /s (a16) x *.
+begin data.
+widgets 1
+thingummies 2
+oojars 3
+widgets 4
+oojars 5
+thingummies 6
+oojimiflips 7
+end data.
+
+autorecode s into new.
+
+list.
+
+display dictionary.
+])
+
+AT_CHECK([pspp -O format=csv ar.sps], [0],
+ [Table: Data List
+s,x,new
+widgets ,1.00,4.00
+thingummies ,2.00,3.00
+oojars ,3.00,1.00
+widgets ,4.00,4.00
+oojars ,5.00,1.00
+thingummies ,6.00,3.00
+oojimiflips ,7.00,2.00
+
+Variable,Description,,Position
+s,Format: A16,,1
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 16,,
+x,Format: F8.2,,2
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+new,Format: F8.2,,3
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+,1,oojars,
+,2,oojimiflips,
+,3,thingummies,
+,4,widgets,
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([AUTORECODE group subcommand])
+AT_DATA([ar-group.sps],
+[data list notable list /x * y *.
+begin data.
+11 10
+12 12
+13 15
+14 11
+15 12
+16 18
+end data.
+
+autorecode
+ x y into a b
+ /group.
+
+list.
+])
+
+AT_CHECK([pspp -O format=csv ar-group.sps], [0],
+[Table: Data List
+x,y,a,b
+11.00,10.00,2.00,1.00
+12.00,12.00,3.00,3.00
+13.00,15.00,4.00,6.00
+14.00,11.00,5.00,2.00
+15.00,12.00,6.00,3.00
+16.00,18.00,7.00,8.00
+])
+
+AT_CLEANUP
+
+
+
+AT_SETUP([AUTORECODE group - string variables])
+AT_DATA([strings.sps],
+[data list notable list /x (a8) y (a16).
+begin data.
+fred bert
+charlie " "
+delta echo
+" " windows
+" " nothing
+end data.
+
+
+autorecode x y into a b
+ /group.
+
+delete variables x y.
+
+list.
+
+])
+
+AT_CHECK([pspp -O format=csv strings.sps], [0],
+[Table: Data List
+a,b
+7.00,3.00
+4.00,1.00
+5.00,6.00
+2.00,9.00
+2.00,8.00
+])
+
+AT_CLEANUP
+
+
+dnl Tests for a crash which happened when the /GROUP subcommand
+dnl appeared with string variables of different widths.
+AT_SETUP([AUTORECODE group vs. strings])
+AT_DATA([ar-strings.sps],
+ [data list notable list /a (a12) b (a6).
+begin data.
+one nine
+two ten
+three eleven
+four nought
+end data.
+
+autorecode a b into x y
+ /group.
+
+list.
+])
+
+AT_CHECK([pspp -O format=csv ar-strings.sps], [0],
+[dnl
+Table: Data List
+a,b,x,y
+one ,nine ,5.00,3.00
+two ,ten ,8.00,6.00
+three ,eleven,7.00,1.00
+four ,nought,2.00,4.00
+])
+
+AT_CLEANUP
--- /dev/null
+AT_BANNER([CORRELATIONS])
+
+AT_SETUP([CORRELATIONS -- unweighted])
+AT_DATA([correlations.sps], [dnl
+set format = F11.3.
+data list notable list /foo * bar * wiz * bang *.
+begin data.
+1 0 3 1
+3 9 -50 5
+3 4 3 203
+4 -9 0 -4
+98 78 104 2
+3 50 -49 200
+. 4 4 4
+5 3 0 .
+end data.
+
+correlations
+ variables = foo bar wiz bang
+ /print nosig
+ /missing = listwise
+ .
+
+correlations
+ variables = bar wiz
+ /print nosig
+ /missing = listwise
+ .
+
+correlations
+ variables = foo bar wiz bang
+ /print nosig
+ /missing = pairwise
+ .
+])
+AT_CHECK([pspp -o pspp.csv correlations.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Correlations
+,,foo,bar,wiz,bang
+foo,Pearson Correlation,1.000,.802,.890,-.308
+,Sig. (2-tailed),,.055,.017,.553
+bar,Pearson Correlation,.802,1.000,.519,.118
+,Sig. (2-tailed),.055,,.291,.824
+wiz,Pearson Correlation,.890,.519,1.000,-.344
+,Sig. (2-tailed),.017,.291,,.505
+bang,Pearson Correlation,-.308,.118,-.344,1.000
+,Sig. (2-tailed),.553,.824,.505,
+
+Table: Correlations
+,,bar,wiz
+bar,Pearson Correlation,1.000,.497
+,Sig. (2-tailed),,.210
+wiz,Pearson Correlation,.497,1.000
+,Sig. (2-tailed),.210,
+
+Table: Correlations
+,,foo,bar,wiz,bang
+foo,Pearson Correlation,1.000,.805,.883,-.308
+,Sig. (2-tailed),,.029,.008,.553
+,N,7,7,7,6
+bar,Pearson Correlation,.805,1.000,.497,.164
+,Sig. (2-tailed),.029,,.210,.725
+,N,7,8,8,7
+wiz,Pearson Correlation,.883,.497,1.000,-.337
+,Sig. (2-tailed),.008,.210,,.460
+,N,7,8,8,7
+bang,Pearson Correlation,-.308,.164,-.337,1.000
+,Sig. (2-tailed),.553,.725,.460,
+,N,6,7,7,7
+])
+AT_CLEANUP
+
+AT_SETUP([CORRELATIONS -- weighted])
+AT_DATA([correlations1.sps], [dnl
+set format = F11.3.
+data list notable list /foo * bar * wiz * bang * w *.
+begin data.
+1 0 3 1 1
+3 9 -50 5 2
+3 4 3 203 1
+4 -9 0 -4 1
+98 78 104 2 3
+3 50 -49 200 1
+end data.
+
+weight by w.
+
+correlations
+ variables = foo bar wiz bang
+ /statistics=descriptives xprod
+ .
+])
+AT_DATA([correlations2.sps], [dnl
+set format = F11.3.
+data list notable list /foo * bar * wiz * bang * w *.
+begin data.
+1 0 3 1 1
+3 9 -50 5 1
+3 9 -50 5 1
+3 4 3 203 1
+4 -9 0 -4 1
+98 78 104 2 1
+98 78 104 2 1
+98 78 104 2 1
+3 50 -49 200 1
+end data.
+
+weight by w.
+
+correlations
+ variables = foo bar wiz bang
+ /statistics=descriptives xprod
+ .
+])
+AT_CHECK([pspp -O format=csv correlations1.sps], [0], [stdout])
+mv stdout expout
+AT_CHECK([pspp -O format=csv correlations2.sps], [0], [expout])
+AT_CLEANUP
X,6,2.500
])
AT_CLEANUP
+
+dnl Git history shows that this was probably a bug in the PSPP
+dnl core regarding multipass procedures, not anything specific
+dnl to DESCRIPTIVES.
+AT_SETUP([DESCRIPTIVES bug with TEMPORARY])
+AT_DATA([descriptives.sps], [dnl
+DATA LIST LIST NOTABLE /id * abc *.
+BEGIN DATA.
+1 3.5
+2 2.0
+3 2.0
+4 3.5
+5 3.0
+6 4.0
+7 5.0
+END DATA.
+
+TEMPORARY.
+SELECT IF id < 7 .
+
+DESCRIPTIVES /VAR=abc.
+])
+AT_CHECK([pspp -O format=csv descriptives.sps], [0], [dnl
+Table: Valid cases = 6; cases with missing value(s) = 0.
+Variable,N,Mean,Std Dev,Minimum,Maximum
+abc,6,3.00,.84,2.00,4.00
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([EXAMINE])
+
+AT_SETUP([EXAMINE])
+AT_DATA([examine.sps], [
+DATA LIST LIST /QUALITY * W * BRAND * .
+BEGIN DATA
+3 1 1
+2 2 1
+1 2 1
+1 1 1
+4 1 1
+4 1 1
+5 1 2
+2 1 2
+4 4 2
+2 1 2
+3 1 2
+7 1 3
+4 2 3
+5 3 3
+3 1 3
+6 1 3
+END DATA
+
+WEIGHT BY w.
+
+VARIABLE LABELS brand 'Manufacturer'.
+VARIABLE LABELS quality 'Breaking Strain'.
+
+VALUE LABELS /brand 1 'Aspeger' 2 'Bloggs' 3 'Charlies'.
+
+LIST /FORMAT=NUMBERED.
+
+EXAMINE
+ quality BY brand
+ /STATISTICS descriptives extreme(3)
+ .
+])
+AT_CHECK([pspp -o pspp.csv examine.sps])
+dnl In the following data, only the extreme values have been checked.
+dnl The descriptives have been blindly pasted.
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+QUALITY,F8.0
+W,F8.0
+BRAND,F8.0
+
+Table: Data List
+Case Number,QUALITY,W,BRAND
+1,3.00,1.00,1.00
+2,2.00,2.00,1.00
+3,1.00,2.00,1.00
+4,1.00,1.00,1.00
+5,4.00,1.00,1.00
+6,4.00,1.00,1.00
+7,5.00,1.00,2.00
+8,2.00,1.00,2.00
+9,4.00,4.00,2.00
+10,2.00,1.00,2.00
+11,3.00,1.00,2.00
+12,7.00,1.00,3.00
+13,4.00,2.00,3.00
+14,5.00,3.00,3.00
+15,3.00,1.00,3.00
+16,6.00,1.00,3.00
+
+Table: Case Processing Summary
+,Cases,,,,,
+,Valid,,Missing,,Total,
+,N,Percent,N,Percent,N,Percent
+Breaking Strain,24.00,100%,.00,0%,24.00,100%
+
+Table: Extreme Values
+,,,Case Number,Value
+Breaking Strain,Highest,1,12,7.00
+,,2,16,6.00
+,,3,7,5.00
+,Lowest,1,3,1.00
+,,2,3,1.00
+,,3,4,1.00
+
+Table: Descriptives
+,,,Statistic,Std. Error
+Breaking Strain,Mean,,3.54,.32
+,95% Confidence Interval for Mean,Lower Bound,2.87,
+,,Upper Bound,4.21,
+,5% Trimmed Mean,,3.50,
+,Median,,4.00,
+,Variance,,2.52,
+,Std. Deviation,,1.59,
+,Minimum,,1.00,
+,Maximum,,7.00,
+,Range,,6.00,
+,Interquartile Range,,2.75,
+,Skewness,,.06,.47
+,Kurtosis,,-.36,.92
+
+Table: Case Processing Summary
+,,Cases,,,,,
+,,Valid,,Missing,,Total,
+,Manufacturer,N,Percent,N,Percent,N,Percent
+Breaking Strain,Aspeger,8.00,100%,.00,0%,8.00,100%
+,Bloggs,8.00,100%,.00,0%,8.00,100%
+,Charlies,8.00,100%,.00,0%,8.00,100%
+
+Table: Extreme Values
+,Manufacturer,,,Case Number,Value
+Breaking Strain,Aspeger,Highest,1,5,4.00
+,,,2,6,4.00
+,,,3,1,3.00
+,,Lowest,1,3,1.00
+,,,2,3,1.00
+,,,3,4,1.00
+,Bloggs,Highest,1,7,5.00
+,,,2,9,4.00
+,,,3,9,4.00
+,,Lowest,1,8,2.00
+,,,2,10,2.00
+,,,3,11,3.00
+,Charlies,Highest,1,12,7.00
+,,,2,16,6.00
+,,,3,14,5.00
+,,Lowest,1,15,3.00
+,,,2,13,4.00
+,,,3,13,4.00
+
+Table: Descriptives
+,Manufacturer,,,Statistic,Std. Error
+Breaking Strain,Aspeger,Mean,,2.25,.45
+,,95% Confidence Interval for Mean,Lower Bound,1.18,
+,,,Upper Bound,3.32,
+,,5% Trimmed Mean,,2.22,
+,,Median,,2.00,
+,,Variance,,1.64,
+,,Std. Deviation,,1.28,
+,,Minimum,,1.00,
+,,Maximum,,4.00,
+,,Range,,3.00,
+,,Interquartile Range,,2.75,
+,,Skewness,,.47,.75
+,,Kurtosis,,-1.55,1.48
+,Bloggs,Mean,,3.50,.38
+,,95% Confidence Interval for Mean,Lower Bound,2.61,
+,,,Upper Bound,4.39,
+,,5% Trimmed Mean,,3.50,
+,,Median,,4.00,
+,,Variance,,1.14,
+,,Std. Deviation,,1.07,
+,,Minimum,,2.00,
+,,Maximum,,5.00,
+,,Range,,3.00,
+,,Interquartile Range,,1.75,
+,,Skewness,,-.47,.75
+,,Kurtosis,,-.83,1.48
+,Charlies,Mean,,4.88,.44
+,,95% Confidence Interval for Mean,Lower Bound,3.83,
+,,,Upper Bound,5.92,
+,,5% Trimmed Mean,,4.86,
+,,Median,,5.00,
+,,Variance,,1.55,
+,,Std. Deviation,,1.25,
+,,Minimum,,3.00,
+,,Maximum,,7.00,
+,,Range,,4.00,
+,,Interquartile Range,,1.75,
+,,Skewness,,.30,.75
+,,Kurtosis,,.15,1.48
+])
+AT_CLEANUP
+
+AT_SETUP([EXAMINE -- extremes])
+AT_DATA([examine.sps], [dnl
+data list free /V1 W
+begin data.
+1 1
+2 1
+3 2
+3 1
+4 1
+5 1
+6 1
+7 1
+8 1
+9 1
+10 1
+11 1
+12 1
+13 1
+14 1
+15 1
+16 1
+17 1
+18 2
+19 1
+20 1
+end data.
+
+weight by w.
+
+examine v1
+ /statistics=extreme(6)
+ .
+])
+AT_CHECK([pspp -o pspp.csv examine.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Case Processing Summary
+,Cases,,,,,
+,Valid,,Missing,,Total,
+,N,Percent,N,Percent,N,Percent
+V1,23.00,100%,.00,0%,23.00,100%
+
+Table: Extreme Values
+,,,Case Number,Value
+V1,Highest,1,21,20.00
+,,2,20,19.00
+,,3,19,18.00
+,,4,19,18.00
+,,5,18,17.00
+,,6,17,16.00
+,Lowest,1,1,1.00
+,,2,2,2.00
+,,3,3,3.00
+,,4,3,3.00
+,,5,4,3.00
+,,6,5,4.00
+])
+AT_CLEANUP
+
+dnl Test the PERCENTILES subcommand of the EXAMINE command.
+dnl In particular test that it behaves properly when there are only
+dnl a few cases.
+AT_SETUP([EXAMINE -- percentiles])
+AT_DATA([examine.sps], [dnl
+DATA LIST LIST /X *.
+BEGIN DATA.
+2.00
+8.00
+5.00
+END DATA.
+
+EXAMINE /x
+ /PERCENTILES=HAVERAGE.
+
+EXAMINE /x
+ /PERCENTILES=WAVERAGE.
+
+EXAMINE /x
+ /PERCENTILES=ROUND.
+
+EXAMINE /x
+ /PERCENTILES=EMPIRICAL.
+
+EXAMINE /x
+ /PERCENTILES=AEMPIRICAL.
+])
+AT_CHECK([pspp -o pspp.csv examine.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+X,F8.0
+
+Table: Case Processing Summary
+,Cases,,,,,
+,Valid,,Missing,,Total,
+,N,Percent,N,Percent,N,Percent
+X,3,100%,0,0%,3,100%
+
+Table: Percentiles
+,,Percentiles,,,,,,
+,,5,10,25,50,75,90,95
+X,HAverage,.40,.80,2.00,5.00,8.00,8.00,8.00
+,Tukey's Hinges,,,3.50,5.00,6.50,,
+
+Table: Case Processing Summary
+,Cases,,,,,
+,Valid,,Missing,,Total,
+,N,Percent,N,Percent,N,Percent
+X,3,100%,0,0%,3,100%
+
+Table: Percentiles
+,,Percentiles,,,,,,
+,,5,10,25,50,75,90,95
+X,Weighted Average,.30,.60,1.50,3.50,5.75,7.10,7.55
+,Tukey's Hinges,,,3.50,5.00,6.50,,
+
+Table: Case Processing Summary
+,Cases,,,,,
+,Valid,,Missing,,Total,
+,N,Percent,N,Percent,N,Percent
+X,3,100%,0,0%,3,100%
+
+Table: Percentiles
+,,Percentiles,,,,,,
+,,5,10,25,50,75,90,95
+X,Rounded,.00,.00,2.00,5.00,5.00,8.00,8.00
+,Tukey's Hinges,,,3.50,5.00,6.50,,
+
+Table: Case Processing Summary
+,Cases,,,,,
+,Valid,,Missing,,Total,
+,N,Percent,N,Percent,N,Percent
+X,3,100%,0,0%,3,100%
+
+Table: Percentiles
+,,Percentiles,,,,,,
+,,5,10,25,50,75,90,95
+X,Empirical,2.00,2.00,2.00,5.00,8.00,8.00,8.00
+,Tukey's Hinges,,,3.50,5.00,6.50,,
+
+Table: Case Processing Summary
+,Cases,,,,,
+,Valid,,Missing,,Total,
+,N,Percent,N,Percent,N,Percent
+X,3,100%,0,0%,3,100%
+
+Table: Percentiles
+,,Percentiles,,,,,,
+,,5,10,25,50,75,90,95
+X,Empirical with averaging,2.00,2.00,2.00,5.00,8.00,8.00,8.00
+,Tukey's Hinges,,,3.50,5.00,6.50,,
+])
+AT_CLEANUP
+
+AT_SETUP([EXAMINE -- missing values])
+AT_DATA([examine.sps], [dnl
+DATA LIST LIST /x * y *.
+BEGIN DATA.
+1 1
+2 1
+3 1
+4 1
+5 2
+6 2
+. 2
+END DATA
+
+EXAMINE /x by y.
+])
+AT_CHECK([pspp -o pspp.csv examine.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+x,F8.0
+y,F8.0
+
+Table: Case Processing Summary
+,Cases,,,,,
+,Valid,,Missing,,Total,
+,N,Percent,N,Percent,N,Percent
+x,6,85.7143%,1,14.2857%,7,100%
+
+Table: Case Processing Summary
+,,Cases,,,,,
+,,Valid,,Missing,,Total,
+,y,N,Percent,N,Percent,N,Percent
+x,1.00,4,100%,0,0%,4,100%
+,2.00,2,66.6667%,1,33.3333%,3,100%
+])
+AT_CLEANUP
+
+AT_SETUP([EXAMINE -- missing values and percentiles])
+AT_DATA([examine.sps], [dnl
+DATA LIST LIST /X *.
+BEGIN DATA.
+99
+99
+5.00
+END DATA.
+
+MISSING VALUE X (99).
+
+EXAMINE /x
+ /PERCENTILES=HAVERAGE.
+])
+AT_CHECK([pspp -o pspp.csv examine.sps])
+dnl Ignore output -- this is just a no-crash check.
+AT_CLEANUP
+
+dnl Tests the trimmed mean calculation in the case
+dnl where the data is weighted towards the centre.
+AT_SETUP([EXAMINE -- trimmed mean])
+AT_DATA([examine.sps], [dnl
+DATA LIST LIST /X * C *.
+BEGIN DATA.
+1 1
+2 49
+3 2
+END DATA.
+
+WEIGHT BY c.
+
+EXAMINE
+ x
+ /STATISTICS=DESCRIPTIVES
+ .
+])
+AT_CHECK([pspp -o pspp.csv examine.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+X,F8.0
+C,F8.0
+
+Table: Case Processing Summary
+,Cases,,,,,
+,Valid,,Missing,,Total,
+,N,Percent,N,Percent,N,Percent
+X,52.00,100%,.00,0%,52.00,100%
+
+Table: Descriptives
+,,,Statistic,Std. Error
+X,Mean,,2.02,.03
+,95% Confidence Interval for Mean,Lower Bound,1.95,
+,,Upper Bound,2.09,
+,5% Trimmed Mean,,2.00,
+,Median,,2.00,
+,Variance,,.06,
+,Std. Deviation,,.24,
+,Minimum,,1.00,
+,Maximum,,3.00,
+,Range,,2.00,
+,Interquartile Range,,.00,
+,Skewness,,1.19,.33
+,Kurtosis,,15.73,.65
+])
+AT_CLEANUP
+
+AT_SETUP([EXAMINE -- crash bug])
+AT_DATA([examine.sps], [dnl
+data list list /a * x * y *.
+begin data.
+3 1 3
+5 1 4
+7 2 3
+end data.
+
+examine a by x by y
+ /statistics=DESCRIPTIVES
+ .
+])
+AT_CHECK([pspp -o pspp.csv examine.sps])
+dnl Ignore output -- this is just a no-crash check.
+AT_CLEANUP
+
+dnl Test that two consecutive EXAMINE commands don't crash PSPP.
+AT_SETUP([EXAMINE -- consecutive runs don't crash])
+AT_DATA([examine.sps], [dnl
+data list list /y * z *.
+begin data.
+6 4
+5 3
+7 6
+end data.
+
+EXAMINE /VARIABLES= z BY y.
+
+EXAMINE /VARIABLES= z.
+])
+AT_CHECK([pspp -o pspp.csv examine.sps])
+dnl Ignore output -- this is just a no-crash check.
+AT_CLEANUP
+
+dnl Test that /DESCRIPTIVES does not crash in presence of missing values.
+AT_SETUP([EXAMINE -- missing values don't crash])
+AT_DATA([examine.sps], [dnl
+data list list /x * y *.
+begin data.
+1 0
+2 0
+. 0
+3 1
+4 1
+end data.
+examine x by y /statistics=descriptives.
+])
+AT_CHECK([pspp -o pspp.csv examine.sps])
+dnl Ignore output -- this is just a no-crash check.
+AT_CLEANUP
+
+dnl Test that having only a single case doesn't crash.
+AT_SETUP([EXAMINE -- single case doesn't crash])
+AT_DATA([examine.sps], [dnl
+DATA LIST LIST /quality * .
+BEGIN DATA
+3
+END DATA
+
+
+EXAMINE
+ quality
+ /STATISTICS descriptives
+ .
+])
+AT_CHECK([pspp -o pspp.csv examine.sps])
+dnl Ignore output -- this is just a no-crash check.
+AT_CLEANUP
+
+dnl Test that all-missing data doesn't crash.
+AT_SETUP([EXAMINE -- all-missing data doesn't crash])
+AT_DATA([examine.sps], [dnl
+DATA LIST LIST /x *.
+BEGIN DATA.
+.
+.
+.
+.
+END DATA.
+
+EXAMINE /x PLOT=HISTOGRAM.
+])
+AT_CHECK([pspp -o pspp.csv examine.sps], [0], [dnl
+warning: Not creating plot because data set is empty.
+])
+dnl Ignore output -- this is just a no-crash check.
+AT_CLEANUP
+
+dnl Test that big input doesn't crash (bug 11307).
+AT_SETUP([EXAMINE -- big input doesn't crash])
+AT_DATA([examine.sps], [dnl
+INPUT PROGRAM.
+ LOOP #I=1 TO 50000.
+ COMPUTE X=NORMAL(10).
+ END CASE.
+ END LOOP.
+ END FILE.
+END INPUT PROGRAM.
+
+
+EXAMINE /x
+ /STATISTICS=DESCRIPTIVES.
+])
+AT_CHECK([pspp -o pspp.csv examine.sps])
+dnl Ignore output -- this is just a no-crash check.
+AT_CLEANUP
+
+dnl Another test that big input doesn't crash.
+dnl The actual bug that this checks for has been lost.
+AT_SETUP([EXAMINE -- big input doesn't crash 2])
+AT_DATA([make-big-input.pl],
+ [for ($i=0; $i<100000; $i++) { print "AB12\n" };
+ for ($i=0; $i<100000; $i++) { print "AB04\n" };
+])
+AT_CHECK([$PERL make-big-input.pl > large.txt])
+AT_DATA([examine.sps], [dnl
+DATA LIST FILE='large.txt' /S 1-2 (A) X 3 .
+
+
+AGGREGATE OUTFILE=* /BREAK=X /A=N.
+
+
+EXAMINE /A BY /X.
+])
+AT_CHECK([pspp -o pspp.csv examine.sps])
+dnl Ignore output -- this is just a no-crash check.
+AT_DATA([more-big-input.pl],
+ [for ($i=0; $i<25000; $i++) { print "AB04\nAB12\n" };
+])
+AT_CHECK([$PERL more-big-input.pl >> large.txt])
+AT_CHECK([pspp -o pspp.csv examine.sps])
+dnl Ignore output -- this is just a no-crash check.
+AT_CLEANUP
AT_SETUP([FLIP with NEWNAMES])
AT_DATA([flip.sps], [dnl
-data list notable /N 1 (a) A B C D 2-9.
+data list notable /N 1 (a) a b c d 2-9.
list.
begin data.
v 1 2 3 4 5
])
AT_CHECK([pspp -O format=csv flip.sps], [0], [dnl
Table: Data List
-N,A,B,C,D
+N,a,b,c,d
v,1,2,3,4
w,6,7,8,9
x,11,12,13,14
z,21,22,23,24
Table: Data List
-CASE_LBL,V,W,X,Y,Z
-A ,1.00,6.00,11.00,16.00,21.00
-B ,2.00,7.00,12.00,17.00,22.00
-C ,3.00,8.00,13.00,18.00,23.00
-D ,4.00,9.00,14.00,19.00,24.00
+CASE_LBL,v,w,x,y,z
+a ,1.00,6.00,11.00,16.00,21.00
+b ,2.00,7.00,12.00,17.00,22.00
+c ,3.00,8.00,13.00,18.00,23.00
+d ,4.00,9.00,14.00,19.00,24.00
Table: Data List
-CASE_LBL,A,B,C,D
-V ,1.00,2.00,3.00,4.00
-W ,6.00,7.00,8.00,9.00
-X ,11.00,12.00,13.00,14.00
-Y ,16.00,17.00,18.00,19.00
-Z ,21.00,22.00,23.00,24.00
+CASE_LBL,a,b,c,d
+v ,1.00,2.00,3.00,4.00
+w ,6.00,7.00,8.00,9.00
+x ,11.00,12.00,13.00,14.00
+y ,16.00,17.00,18.00,19.00
+z ,21.00,22.00,23.00,24.00
])
AT_CLEANUP
--- /dev/null
+AT_BANNER([NPAR TESTS])
+
+AT_SETUP([NPAR TESTS BINOMIAL, P < 0.5; N1/N2 < 1])
+AT_DATA([npar.sps], [dnl
+SET FORMAT F8.3.
+
+DATA LIST LIST NOTABLE /x * w *.
+BEGIN DATA.
+1 6
+2 15
+END DATA.
+
+WEIGHT BY w.
+
+NPAR TESTS
+ /BINOMIAL(0.3) = x
+ .
+])
+AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl
+Table: Binomial Test
+,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
+x,Group1,1.000,6.000,.286,.300,.551
+,Group2,2.000,15.000,.714,,
+,Total,,21.000,1.000,,
+])
+AT_CLEANUP
+
+AT_SETUP([NPAR TESTS BINOMIAL, P < 0.5; N1/N2 > 1])
+AT_DATA([npar.sps], [dnl
+SET FORMAT F8.3.
+
+DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
+BEGIN DATA.
+1 7
+2 6
+END DATA.
+
+WEIGHT BY w.
+
+NPAR TESTS
+ /BINOMIAL(0.4) = x
+ .
+])
+AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl
+Table: Binomial Test
+,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
+x,Group1,1,7,.538,.400,.229
+,Group2,2,6,.462,,
+,Total,,13,1.000,,
+])
+AT_CLEANUP
+
+AT_SETUP([NPAR TESTS BINOMIAL, P < 0.5; N1/N2 = 1])
+AT_DATA([npar.sps], [dnl
+SET FORMAT F8.3.
+
+DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
+BEGIN DATA.
+1 8
+2 8
+END DATA.
+
+WEIGHT BY w.
+
+NPAR TESTS
+ /BINOMIAL(0.4) = x
+ .
+])
+AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl
+Table: Binomial Test
+,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
+x,Group1,1,8,.500,.400,.284
+,Group2,2,8,.500,,
+,Total,,16,1.000,,
+])
+AT_CLEANUP
+
+AT_SETUP([NPAR TESTS BINOMIAL, P > 0.5; N1/N2 < 1])
+AT_DATA([npar.sps], [dnl
+SET FORMAT F8.3.
+
+DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
+BEGIN DATA.
+1 11
+2 12
+END DATA.
+
+WEIGHT BY w.
+
+NPAR TESTS
+ /BINOMIAL(0.6) = x
+ .
+])
+AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl
+Table: Binomial Test
+,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
+x,Group1,1,11,.478,.600,.164
+,Group2,2,12,.522,,
+,Total,,23,1.000,,
+])
+AT_CLEANUP
+
+AT_SETUP([NPAR TESTS BINOMIAL, P > 0.5; N1/N2 > 1])
+AT_DATA([npar.sps], [dnl
+SET FORMAT F8.3.
+
+DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
+BEGIN DATA.
+1 11
+2 9
+END DATA.
+
+WEIGHT BY w.
+
+NPAR TESTS
+ /BINOMIAL(0.6) = x.
+])
+AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl
+Table: Binomial Test
+,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
+x,Group1,1,11,.550,.600,.404
+,Group2,2,9,.450,,
+,Total,,20,1.000,,
+])
+AT_CLEANUP
+
+AT_SETUP([NPAR TESTS BINOMIAL, P > 0.5; N1/N2 = 1])
+AT_DATA([npar.sps], [dnl
+SET FORMAT F8.3.
+
+DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
+BEGIN DATA.
+1 11
+2 11
+END DATA.
+
+WEIGHT BY w.
+
+NPAR TESTS
+ /BINOMIAL(0.6) = x.
+])
+AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl
+Table: Binomial Test
+,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
+x,Group1,1,11,.500,.600,.228
+,Group2,2,11,.500,,
+,Total,,22,1.000,,
+])
+AT_CLEANUP
+
+AT_SETUP([NPAR TESTS BINOMIAL, P = 0.5; N1/N2 < 1])
+AT_DATA([npar.sps], [dnl
+SET FORMAT F8.3.
+
+DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
+BEGIN DATA.
+1 8
+2 15
+END DATA.
+
+WEIGHT BY w.
+
+NPAR TESTS
+ /BINOMIAL = x
+ .
+])
+AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl
+Table: Binomial Test
+,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
+x,Group1,1,8,.348,.500,.210
+,Group2,2,15,.652,,
+,Total,,23,1.000,,
+])
+AT_CLEANUP
+
+AT_SETUP([NPAR TESTS BINOMIAL, P = 0.5; N1/N2 > 1])
+AT_DATA([npar.sps], [dnl
+SET FORMAT F8.3.
+
+DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
+BEGIN DATA.
+1 12
+2 6
+END DATA.
+
+WEIGHT BY w.
+
+NPAR TESTS
+ /BINOMIAL(0.5) = x.
+])
+AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl
+Table: Binomial Test
+,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
+x,Group1,1,12,.667,.500,.238
+,Group2,2,6,.333,,
+,Total,,18,1.000,,
+])
+AT_CLEANUP
+
+AT_SETUP([NPAR TESTS BINOMIAL, P = 0.5; N1/N2 = 1])
+AT_DATA([npar.sps], [dnl
+SET FORMAT F8.3.
+
+DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
+BEGIN DATA.
+1 10
+2 10
+END DATA.
+
+WEIGHT BY w.
+
+NPAR TESTS
+ /BINOMIAL(0.5) = x
+ .
+])
+AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl
+Table: Binomial Test
+,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
+x,Group1,1,10,.500,.500,1.000
+,Group2,2,10,.500,,
+,Total,,20,1.000,,
+])
+AT_CLEANUP
+
+AT_SETUP([NPAR TESTS BINOMIAL, P = 0.5; N1/N2 = 1 Cutpoint])
+AT_DATA([npar.sps], [dnl
+SET FORMAT F8.3.
+
+DATA LIST LIST NOTABLE /x * w *.
+BEGIN DATA.
+9 3
+10 7
+11 16
+END DATA.
+
+WEIGHT BY w.
+
+NPAR TESTS
+ /BINOMIAL(0.5) = x (10)
+ .
+])
+AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl
+Table: Binomial Test
+,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
+x,Group1,<= 10,10.000,.385,.500,.327
+,Group2,,16.000,.615,,
+,Total,,26.000,1.000,,
+])
+AT_CLEANUP
+
+AT_SETUP([NPAR TESTS BINOMIAL, P = 0.5; N1/N2 = 1 Named values])
+AT_DATA([npar.sps], [dnl
+SET FORMAT F8.3.
+
+DATA LIST LIST NOTABLE /x * w *.
+BEGIN DATA.
+10 10
+15 45
+20 13
+END DATA.
+
+WEIGHT BY w.
+
+NPAR TESTS
+ /BINOMIAL(0.5) = x (10, 20)
+ .
+])
+AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl
+Table: Binomial Test
+,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
+x,Group1,10.000,10.000,.435,.500,.678
+,Group2,20.000,13.000,.565,,
+,Total,,23.000,1.000,,
+])
+AT_CLEANUP
+
+AT_SETUP([NPAR TESTS CHISQUARE])
+AT_DATA([npar.sps], [dnl
+DATA LIST NOTABLE LIST /x * y * w *.
+BEGIN DATA.
+1 2 1
+2 1 3
+3.1 1 4
+3.2 2 1
+4 2 2
+5 3 1
+1 4 2
+END DATA.
+
+WEIGHT BY w.
+
+NPAR TESTS
+ CHISQUARE=x y
+ .
+
+NPAR TESTS
+ CHISQUARE=y
+ /EXPECTED=3 4 5 4
+ .
+
+NPAR TESTS
+ CHISQUARE=x y(2, 4)
+ /EXPECTED = 6 10 3
+ .
+])
+AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl
+Table: x
+,Observed N,Expected N,Residual
+1.00,3.00,2.33,.67
+2.00,3.00,2.33,.67
+3.10,4.00,2.33,1.67
+3.20,1.00,2.33,-1.33
+4.00,2.00,2.33,-.33
+5.00,1.00,2.33,-1.33
+Total,14.00,,
+
+Table: y
+,Observed N,Expected N,Residual
+1.00,7.00,3.50,3.50
+2.00,4.00,3.50,.50
+3.00,1.00,3.50,-2.50
+4.00,2.00,3.50,-1.50
+Total,14.00,,
+
+Table: Test Statistics
+,x,y
+Chi-Square,3.14,6.00
+df,5,3
+Asymp. Sig.,.68,.11
+
+Table: y
+,Observed N,Expected N,Residual
+1.00,7.00,2.63,4.38
+2.00,4.00,3.50,.50
+3.00,1.00,4.38,-3.38
+4.00,2.00,3.50,-1.50
+Total,14.00,,
+
+Table: Test Statistics
+,y
+Chi-Square,10.61
+df,3
+Asymp. Sig.,.01
+
+Table: Frequencies
+,x,,,,y,,,
+,Category,Observed N,Expected N,Residual,Category,Observed N,Expected N,Residual
+1,2.00,3.00,3.16,-.16,2.00,4.00,2.21,1.79
+2,3.00,5.00,5.26,-.26,3.00,1.00,3.68,-2.68
+3,4.00,2.00,1.58,.42,4.00,2.00,1.11,.89
+Total,,10.00,,,,7.00,,
+
+Table: Test Statistics
+,x,y
+Chi-Square,.13,4.13
+df,2,2
+Asymp. Sig.,.94,.13
+])
+AT_CLEANUP
+
+AT_SETUP([NPAR TESTS CHISQUARE expected values missing])
+AT_DATA([npar.sps], [dnl
+DATA LIST NOTABLE LIST /x * y * w *.
+BEGIN DATA.
+1 2 1
+2 1 3
+3.1 1 4
+3.2 2 1
+4 2 2
+5 3 1
+1 4 2
+END DATA.
+
+WEIGHT BY w.
+
+NPAR TESTS
+ CHISQUARE=y
+ /EXPECTED = 3 4 5 4 3 1
+ .
+])
+AT_CHECK([pspp -O format=csv npar.sps], [1], [dnl
+"error: CHISQUARE test specified 6 expected values, but 4 distinct values were encountered in variable y."
+
+Table: Test Statistics
+,y
+Chi-Square,.00
+df,0
+Asymp. Sig.,1.00
+])
+AT_CLEANUP
+
+AT_SETUP([NPAR TESTS CHISQUARE with DESCRIPTIVES])
+AT_DATA([npar.sps], [dnl
+DATA LIST NOTABLE LIST /x * y * w * .
+BEGIN DATA.
+1 2 1
+2 1 3
+3.1 1 4
+3.2 2 1
+4 2 2
+5 3 1
+1 4 2
+. 5 1
+END DATA.
+
+WEIGHT BY w.
+
+MISSING VALUES x (4).
+
+NPAR TESTS
+ CHISQUARE=x y(-2,5)
+ /MISSING=ANALYSIS
+ /STATISTICS=DESCRIPTIVES
+ .
+])
+AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl
+Table: Frequencies
+,x,,,,y,,,
+,Category,Observed N,Expected N,Residual,Category,Observed N,Expected N,Residual
+1,-2.00,.00,1.50,-1.50,-2.00,.00,1.88,-1.88
+2,-1.00,.00,1.50,-1.50,-1.00,.00,1.88,-1.88
+3,.00,.00,1.50,-1.50,.00,.00,1.88,-1.88
+4,1.00,3.00,1.50,1.50,1.00,7.00,1.88,5.13
+5,2.00,3.00,1.50,1.50,2.00,4.00,1.88,2.13
+6,3.00,5.00,1.50,3.50,3.00,1.00,1.88,-.88
+7,4.00,.00,1.50,-1.50,4.00,2.00,1.88,.13
+8,5.00,1.00,1.50,-.50,5.00,1.00,1.88,-.88
+Total,,12.00,,,,15.00,,
+
+Table: Test Statistics
+,x,y
+Chi-Square,17.33,22.87
+df,7,7
+Asymp. Sig.,.02,.00
+
+Table: Descriptive Statistics
+,N,Mean,Std. Deviation,Minimum,Maximum
+,,,,,
+x,12.00,2.47,1.19,1.00,5.00
+y,15.00,2.07,1.33,1.00,5.00
+])
+AT_CLEANUP
+
+AT_SETUP([NPAR TESTS CHISQUARE, listwise missing])
+AT_DATA([npar.sps], [dnl
+DATA LIST NOTABLE LIST /x * y * w * .
+BEGIN DATA.
+1 2 1
+2 1 3
+3.1 1 4
+3.2 2 1
+4 2 2
+5 3 1
+1 4 2
+. 5 1
+END DATA.
+
+WEIGHT BY w.
+
+* MISSING VALUES x (4).
+
+NPAR TESTS
+ CHISQUARE=x y(-2,5)
+ /MISSING=LISTWISE
+ /STATISTICS=DESCRIPTIVES
+ .
+])
+AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl
+Table: Frequencies
+,x,,,,y,,,
+,Category,Observed N,Expected N,Residual,Category,Observed N,Expected N,Residual
+1,-2.00,.00,1.75,-1.75,-2.00,.00,1.75,-1.75
+2,-1.00,.00,1.75,-1.75,-1.00,.00,1.75,-1.75
+3,.00,.00,1.75,-1.75,.00,.00,1.75,-1.75
+4,1.00,3.00,1.75,1.25,1.00,7.00,1.75,5.25
+5,2.00,3.00,1.75,1.25,2.00,4.00,1.75,2.25
+6,3.00,5.00,1.75,3.25,3.00,1.00,1.75,-.75
+7,4.00,2.00,1.75,.25,4.00,2.00,1.75,.25
+8,5.00,1.00,1.75,-.75,5.00,.00,1.75,-1.75
+Total,,14.00,,,,14.00,,
+
+Table: Test Statistics
+,x,y
+Chi-Square,13.43,26.00
+df,7,7
+Asymp. Sig.,.06,.00
+
+Table: Descriptive Statistics
+,N,Mean,Std. Deviation,Minimum,Maximum
+,,,,,
+x,14.00,2.69,1.23,1.00,5.00
+y,14.00,1.86,1.10,1.00,4.00
+])
+AT_CLEANUP
+
+AT_SETUP([NPAR TESTS WILCOXON])
+AT_DATA([npar.sps], [dnl
+data list notable list /foo * bar * w (f8.0).
+begin data.
+1.00 1.00 1
+1.00 2.00 1
+2.00 1.00 1
+1.00 4.00 1
+2.00 5.00 1
+1.00 19.00 1
+2.00 7.00 1
+4.00 5.00 1
+1.00 12.00 1
+2.00 13.00 1
+2.00 2.00 1
+12.00 .00 2
+12.00 1.00 1
+13.00 1.00 1
+end data
+
+variable labels foo "first" bar "second".
+
+weight by w.
+
+npar test
+ /wilcoxon=foo with bar (paired)
+ /missing analysis
+ /method=exact.
+])
+AT_CHECK([pspp -o pspp.csv npar.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Ranks
+,,N,Mean Rank,Sum of Ranks
+second - first,Negative Ranks,5,8.60,43.00
+,Positive Ranks,8,6.00,48.00
+,Ties,2,,
+,Total,15,,
+
+Table: Test Statistics
+,second - first
+Z,-.18
+Asymp. Sig. (2-tailed),.86
+Exact Sig. (2-tailed),.89
+Exact Sig. (1-tailed),.45
+])
+AT_CLEANUP
+
+AT_SETUP([NPAR TESTS WILCOXON with missing values])
+AT_DATA([npar.sps], [dnl
+data list notable list /foo * bar * dummy *.
+begin data.
+1.00 1.00 1
+1.00 2.00 1
+2.00 1.00 1
+1.00 4.00 .
+2.00 5.00 .
+1.00 19.00 .
+2.00 7.00 1
+4.00 5.00 1
+1.00 12.00 1
+2.00 13.00 1
+2.00 2.00 1
+12.00 .00 1
+12.00 .00 1
+34.2 . 1
+12.00 1.00 1
+13.00 1.00 1
+end data
+
+variable labels foo "first" bar "second".
+
+npar test
+ /wilcoxon=foo with bar (paired)
+ /missing analysis
+ /method=exact.
+
+])
+AT_CHECK([pspp -o pspp.csv npar.sps])
+dnl This is the same output as the previous test.
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Ranks
+,,N,Mean Rank,Sum of Ranks
+second - first,Negative Ranks,5,8.60,43.00
+,Positive Ranks,8,6.00,48.00
+,Ties,2,,
+,Total,15,,
+
+Table: Test Statistics
+,second - first
+Z,-.18
+Asymp. Sig. (2-tailed),.86
+Exact Sig. (2-tailed),.89
+Exact Sig. (1-tailed),.45
+])
+AT_CLEANUP
+
+AT_SETUP([NPAR TESTS SIGN])
+AT_DATA([npar.sps], [dnl
+set format = F9.3.
+
+data list notable list /age * height rank *.
+begin data.
+10 12 11
+12 13 13
+13 14 12
+12 12 10
+9 9 10
+10.3 10.2 12
+end data.
+
+npar tests
+ /sign=age height WITH height rank (PAIRED)
+ /MISSING ANALYSIS
+ /METHOD=EXACT
+ .
+])
+AT_CHECK([pspp -o pspp.csv npar.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Frequencies
+,,N
+height - age,Negative Differences,1
+,Positive Differences,3
+,Ties,2
+,Total,6
+rank - height,Negative Differences,3
+,Positive Differences,2
+,Ties,1
+,Total,6
+
+Table: Test Statistics
+,height - age,rank - height
+Exact Sig. (2-tailed),.625,1.000
+Exact Sig. (1-tailed),.312,.500
+Point Probability,.250,.312
+])
+AT_CLEANUP
+
+
+AT_SETUP([NPAR Kruskal-Wallis test])
+
+dnl Simple case
+AT_DATA([kw-simple.sps], [dnl
+set format = F9.3.
+
+data list notable list /gv * xscore *.
+begin data
+1 96
+1 128
+1 83
+2 132
+2 135
+2 109
+3 115
+1 61
+1 101
+2 82
+2 124
+3 149
+3 166
+3 147
+end data.
+
+value label /gv
+ 1 "timed out"
+ 2 "hit wicket"
+ 3 "handled the ball".
+
+npar tests
+ /kruskal-wallis xscore by gv (1, 3)
+ .
+])
+
+AT_CHECK([pspp -o pspp.csv kw-simple.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Ranks
+,gv,N,Mean Rank
+xscore,timed out,5,4.400
+,handled the ball,4,11.500
+,hit wicket,5,7.400
+,Total,14,
+
+Table: Test Statistics
+,,xscore
+Chi-Square,,6.406
+df,,2
+Asymp. Sig.,,.041
+])
+
+
+dnl Now try a missing value in the group variable
+AT_DATA([kw-missing-group.sps], [dnl
+set format = F9.3.
+
+data list notable list /gv * xscore *.
+begin data
+1 96
+1 128
+1 83
+1 61
+1 101
+2 82
+2 124
+2 132
+2 135
+2 109
+3 115
+3 149
+3 166
+3 147
+2.5 344
+end data.
+
+missing values gv (2.5).
+
+value label /gv
+ 1 "timed out"
+ 2 "hit wicket"
+ 3 "handled the ball".
+
+npar tests
+ /kruskal-wallis xscore by gv (1, 3)
+ /missing=exclude
+ .
+])
+
+AT_CHECK([pspp -o pspp2.csv kw-missing-group.sps])
+
+dnl The result should be the same as before
+AT_CHECK([diff pspp.csv pspp2.csv], [0])
+
+AT_CLEANUP
+
+
+AT_SETUP([NPAR Kruskal-Wallis multiple-variables])
+
+AT_DATA([kw-multi.sps], [dnl
+set format = F9.3.
+
+data list notable list /gv * xscore * yscore.
+begin data
+1 96 .
+1 128 .
+1 83 .
+2 132 132
+2 135 135
+2 109 109
+3 115 115
+1 61 .
+1 101 .
+2 82 82
+2 124 124
+3 149 149
+3 166 166
+3 147 147
+4 . 96
+4 . 128
+4 . 83
+4 . 61
+4 . 101
+end data.
+
+value label /gv
+ 1 "timed out"
+ 2 "hit wicket"
+ 3 "handled the ball"
+ 4 "bowled"
+ 5 "lbw"
+ .
+
+npar tests
+ /k-w xscore yscore by gv (1, 5)
+ .
+
+])
+
+
+AT_CHECK([pspp -o pspp.csv kw-multi.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Ranks
+,gv,N,Mean Rank
+xscore,timed out,5,4.400
+,handled the ball,4,11.500
+,hit wicket,5,7.400
+,Total,14,
+yscore,handled the ball,4,11.500
+,bowled,5,4.400
+,hit wicket,5,7.400
+,Total,14,
+
+Table: Test Statistics
+,,xscore,yscore,
+Chi-Square,,6.406,6.406,
+df,,2,2,
+Asymp. Sig.,,.041,.041,
+])
+
+AT_CLEANUP
\ No newline at end of file
AT_DATA([oneway.sps],
[DATA LIST NOTABLE LIST /QUALITY * BRAND * .
BEGIN DATA
-3 1
-2 1
-1 1
-1 1
-4 1
-5 2
-2 2
-4 2
-2 2
-3 2
7 3
4 3
+3 1
+2 1
+1 1
+4 2
+2 2
+3 2
5 3
+1 1
+4 1
+5 2
+2 2
3 3
6 3
END DATA
])
AT_CLEANUP
+
+
+
+AT_SETUP([ONEWAY multiple variables])
+dnl check that everything works ok when several different dependent variables are specified.
+dnl This of course does not mean that we're doing a multivariate analysis. It's just like
+dnl running several tests at once.
+AT_DATA([multivar.sps],
+[DATA LIST notable LIST /x * y * z * g *.
+begin data.
+1 1 0 10
+1 1 9 10
+9 1 2 10
+1 1 3 20
+1 1 8 20
+1 1 1 20
+1 1 2 20
+0 1 3 20
+1 1 4 30
+0 1 5 30
+1 1 6 30
+0 1 7 30
+1 2 8 30
+2 2 9 30
+1 2 1 30
+1 2 0 30
+1 2 2 40
+8 2 3 40
+1 2 4 40
+1 2 9 40
+9 2 8 40
+7 3 7 40
+2 3 6 40
+3 3 5 40
+end data.
+
+ONEWAY x y z by g
+ /STATISTICS = DESCRIPTIVES HOMOGENEITY
+ /CONTRAST 3 2 0 -5
+ /CONTRAST 2 -9 7 0
+ .
+])
+
+
+AT_CHECK([pspp -O format=csv multivar.sps], [0],
+[Table: Descriptives
+,,,,,,95% Confidence Interval for Mean,,,
+,,N,Mean,Std. Deviation,Std. Error,Lower Bound,Upper Bound,Minimum,Maximum
+x,10.00,3,3.67,4.62,2.67,-7.81,15.14,1.00,9.00
+,20.00,5,.80,.45,.20,.24,1.36,.00,1.00
+,30.00,8,.88,.64,.23,.34,1.41,.00,2.00
+,40.00,8,4.00,3.42,1.21,1.14,6.86,1.00,9.00
+,Total,24,2.25,2.83,.58,1.05,3.45,.00,9.00
+y,10.00,3,1.00,.00,.00,1.00,1.00,1.00,1.00
+,20.00,5,1.00,.00,.00,1.00,1.00,1.00,1.00
+,30.00,8,1.50,.53,.19,1.05,1.95,1.00,2.00
+,40.00,8,2.38,.52,.18,1.94,2.81,2.00,3.00
+,Total,24,1.63,.71,.15,1.32,1.93,1.00,3.00
+z,10.00,3,3.67,4.73,2.73,-8.07,15.41,.00,9.00
+,20.00,5,3.40,2.70,1.21,.05,6.75,1.00,8.00
+,30.00,8,5.00,3.21,1.13,2.32,7.68,.00,9.00
+,40.00,8,5.50,2.45,.87,3.45,7.55,2.00,9.00
+,Total,24,4.67,2.99,.61,3.40,5.93,.00,9.00
+
+Table: Test of Homogeneity of Variances
+,Levene Statistic,df1,df2,Significance
+x,18.76,3,20,.00
+y,71.41,3,20,.00
+z,.89,3,20,.46
+
+Table: ANOVA
+,,Sum of Squares,df,Mean Square,F,Significance
+x,Between Groups,56.16,3,18.72,2.92,.06
+,Within Groups,128.34,20,6.42,,
+,Total,184.50,23,,,
+y,Between Groups,7.75,3,2.58,13.33,.00
+,Within Groups,3.87,20,.19,,
+,Total,11.63,23,,,
+z,Between Groups,17.47,3,5.82,.62,.61
+,Within Groups,187.87,20,9.39,,
+,Total,205.33,23,,,
+
+Table: Contrast Coefficients
+,,g,,,
+,,10.00,20.00,30.00,40.00
+Contrast,1,3,2,0,-5
+,2,2,-9,7,0
+
+Table: Contrast Tests
+,,Contrast,Value of Contrast,Std. Error,t,df,Sig. (2-tailed)
+x,Assume equal variances,1,-7.40,6.67,1.11,20,.28
+,,2,6.26,12.32,.51,20,.62
+,Does not assume equal,1,-7.40,10.04,-.74,4.53,1.50
+,,2,6.26,5.85,1.07,2.87,.37
+y,Assume equal variances,1,-6.88,1.16,5.94,20,.00
+,,2,3.50,2.14,1.63,20,.12
+,Does not assume equal,1,-6.88,.91,-7.51,7.00,2.00
+,,2,3.50,1.32,2.65,7.00,.03
+z,Assume equal variances,1,-9.70,8.07,1.20,20,.24
+,,2,11.73,14.91,.79,20,.44
+,Does not assume equal,1,-9.70,9.57,-1.01,3.64,1.63
+,,2,11.73,14.53,.81,9.88,.44
+])
+
+AT_CLEANUP
+
+
+
+dnl Tests that everything treats weights properly
+AT_SETUP([ONEWAY vs. weights])
+
+AT_DATA([oneway-unweighted.sps],
+[DATA LIST NOTABLE LIST /QUALITY * BRAND * W *.
+BEGIN DATA
+3 1 1
+2 1 1
+1 1 1
+1 1 1
+4 1 1
+5 2 1
+2 2 1
+4 2 1
+4 2 1
+4 2 1
+2 2 1
+2 2 1
+3 2 1
+7 3 1
+4 3 1
+5 3 1
+5 3 1
+3 3 1
+6 3 1
+END DATA.
+
+WEIGHT BY W.
+
+ONEWAY
+ quality BY brand
+ /STATISTICS descriptives homogeneity
+ .
+])
+
+AT_CHECK([pspp -o pspp-unweighted.csv oneway-unweighted.sps], [0], [ignore], [ignore])
+
+AT_DATA([oneway-weighted.sps],
+[DATA LIST NOTABLE LIST /QUALITY * BRAND * W *.
+BEGIN DATA
+3 1 1
+2 1 1
+1 1 2
+4 1 1
+5 2 1
+2 2 1
+4 2 3
+2 2 2
+3 2 1
+7 3 1
+4 3 1
+5 3 2
+3 3 1
+6 3 1
+END DATA.
+
+WEIGHT BY W.
+
+ONEWAY
+ quality BY brand
+ /STATISTICS descriptives homogeneity
+ .
+])
+
+AT_CHECK([pspp -o pspp-weighted.csv oneway-weighted.sps], [0], [ignore], [ignore])
+
+
+AT_CHECK([diff pspp-weighted.csv pspp-unweighted.csv], [0])
+
+
+AT_CLEANUP
--- /dev/null
+AT_BANNER([RANK])
+
+AT_SETUP([RANK simple case with defaults])
+AT_DATA([rank.sps], [dnl
+DATA LIST LIST NOTABLE /x (f8).
+BEGIN DATA.
+-1
+0
+1
+2
+2
+4
+5
+END DATA.
+
+RANK x.
+
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv rank.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variables Created By RANK
+
+
+
+x into Rx(RANK of x)
+
+Table: Data List
+x,Rx
+-1,1.000
+0,2.000
+1,3.000
+2,4.500
+2,4.500
+4,6.000
+5,7.000
+])
+AT_CLEANUP
+
+AT_SETUP([RANK with RANK, RFRACTION, N])
+AT_DATA([rank.sps], [dnl
+DATA LIST LIST NOTABLE /a * b *.
+BEGIN DATA.
+0 24
+1 32
+2 31
+2 32
+4 30
+5 29
+6 1
+7 43
+8 .
+9 45
+END DATA.
+
+RANK a b (D)
+ /PRINT=YES
+ /RANK
+ /TIES=HIGH
+ /RFRACTION
+ /N INTO count
+ .
+
+DISPLAY DICTIONARY.
+
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv rank.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variables Created By RANK
+
+
+
+a into Ra(RANK of a)
+
+b into Rb(RANK of b)
+
+a into RFR001(RFRACTION of a)
+
+b into RFR002(RFRACTION of b)
+
+a into count(N of a)
+
+b into Nb(N of b)
+
+Variable,Description,,Position
+a,Format: F8.2,,1
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+b,Format: F8.2,,2
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+count,N of a,,3
+,Format: F6.0,,
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+Ra,RANK of a,,4
+,Format: F9.3,,
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+Rb,RANK of b,,5
+,Format: F9.3,,
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+RFR001,RFRACTION of a,,6
+,Format: F6.4,,
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+RFR002,RFRACTION of b,,7
+,Format: F6.4,,
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+Nb,N of b,,8
+,Format: F6.0,,
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+
+Table: Data List
+a,b,count,Ra,Rb,RFR001,RFR002,Nb
+.00,24.00,10,10.000,8.000,1.0000,.8889,9
+1.00,32.00,10,9.000,4.000,.9000,.4444,9
+2.00,31.00,10,8.000,5.000,.8000,.5556,9
+2.00,32.00,10,8.000,4.000,.8000,.4444,9
+4.00,30.00,10,6.000,6.000,.6000,.6667,9
+5.00,29.00,10,5.000,7.000,.5000,.7778,9
+6.00,1.00,10,4.000,9.000,.4000,1.0000,9
+7.00,43.00,10,3.000,2.000,.3000,.2222,9
+8.00,. ,10,2.000,. ,.2000,. ,.
+9.00,45.00,10,1.000,1.000,.1000,.1111,9
+])
+AT_CLEANUP
+
+AT_SETUP([RANK with SAVAGE, PERCENT, PROPORTION, NTILES])
+AT_DATA([rank.sps], [dnl
+DATA LIST LIST NOTABLE /a * b *.
+BEGIN DATA.
+0 24
+1 32
+2 31
+2 32
+4 30
+5 29
+6 1
+7 43
+8 8
+9 45
+END DATA.
+
+RANK a
+ /PRINT=YES
+ /TIES=CONDENSE
+ /SAVAGE
+ /PERCENT
+ /PROPORTION
+ /NTILES(4)
+ /NORMAL
+.
+
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv rank.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variables Created By RANK
+
+
+
+a into Sa(SAVAGE of a)
+
+a into Pa(PERCENT of a)
+
+a into PRO001(PROPORTION of a using BLOM)
+
+a into Na(NTILES of a)
+
+a into NOR001(NORMAL of a using BLOM)
+
+Table: Data List
+a,b,Sa,Pa,PRO001,Na,NOR001
+.00,24.00,-.9000,10.00,.0610,1,-1.547
+1.00,32.00,-.7889,20.00,.1585,1,-1.000
+2.00,31.00,-.5925,30.00,.2561,2,-.6554
+2.00,32.00,-.5925,30.00,.2561,2,-.6554
+4.00,30.00,-.3544,40.00,.3537,2,-.3755
+5.00,29.00,-.1544,50.00,.4512,2,-.1226
+6.00,1.00,.0956,60.00,.5488,3,.1226
+7.00,43.00,.4290,70.00,.6463,3,.3755
+8.00,8.00,.9290,80.00,.7439,3,.6554
+9.00,45.00,1.9290,90.00,.8415,4,1.0005
+])
+AT_CLEANUP
+
+AT_SETUP([RANK with SPLIT FILE])
+AT_DATA([rank.sps], [dnl
+DATA LIST LIST NOTABLE /a * g1 g2 *.
+BEGIN DATA.
+2 1 2
+2 1 2
+3 1 2
+4 1 2
+5 1 2
+1 0 2
+2 0 2
+3 0 2
+4 0 2
+5 0 2
+6 0 2
+7 0 2
+8 0 2
+6 1 2
+7 1 2
+7 1 2
+8 1 2
+9 1 1
+END DATA.
+
+RANK a (D) BY g2 g1
+ /PRINT=YES
+ /TIES=LOW
+ /MISSING=INCLUDE
+ /FRACTION=RANKIT
+ /RANK
+ /NORMAL
+ .
+
+SPLIT FILE BY g1.
+
+RANK a (D) BY g2
+ /PRINT=YES
+ /TIES=LOW
+ /MISSING=INCLUDE
+ /FRACTION=RANKIT
+ /RANK
+ /NORMAL
+ .
+
+SPLIT FILE OFF.
+
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv rank.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variables Created By RANK
+
+
+
+a into Ra(RANK of a BY g2 g1)
+
+a into Na(NORMAL of a using RANKIT BY g2 g1)
+
+Variables Created By RANK
+
+
+
+a into RAN001(RANK of a BY g2)
+
+a into NOR001(NORMAL of a using RANKIT BY g2)
+
+Table: Data List
+a,g1,g2,Ra,Na,RAN001,NOR001
+2.00,1.00,2.00,8.000,.9674,4.000,.5244
+2.00,1.00,2.00,8.000,.9674,4.000,.5244
+3.00,1.00,2.00,7.000,.5895,3.000,.0000
+4.00,1.00,2.00,6.000,.2822,2.000,-.5244
+5.00,1.00,2.00,5.000,.0000,1.000,-1.282
+1.00,.00,2.00,8.000,1.5341,8.000,1.5341
+2.00,.00,2.00,7.000,.8871,7.000,.8871
+3.00,.00,2.00,6.000,.4888,6.000,.4888
+4.00,.00,2.00,5.000,.1573,5.000,.1573
+5.00,.00,2.00,4.000,-.1573,4.000,-.1573
+6.00,.00,2.00,3.000,-.4888,3.000,-.4888
+7.00,.00,2.00,2.000,-.8871,2.000,-.8871
+8.00,.00,2.00,1.000,-1.534,1.000,-1.534
+6.00,1.00,2.00,4.000,-.2822,4.000,1.1503
+7.00,1.00,2.00,2.000,-.9674,2.000,-.3186
+7.00,1.00,2.00,2.000,-.9674,2.000,-.3186
+8.00,1.00,2.00,1.000,-1.593,1.000,-1.150
+9.00,1.00,1.00,1.000,.0000,1.000,.0000
+])
+AT_CLEANUP
+
+# Also tests small ranks for special case of SAVAGE ranks.
+AT_SETUP([RANK with fractional ranks])
+AT_DATA([rank.sps], [dnl
+DATA LIST LIST NOTABLE /a * w * .
+BEGIN DATA.
+1 1.5
+2 0.2
+3 0.1
+4 1
+5 1
+6 1
+7 1
+8 1
+END DATA.
+
+WEIGHT BY w.
+
+RANK a
+ /FRACTION=TUKEY
+ /PROPORTION
+ /SAVAGE
+.
+
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv rank.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variables Created By RANK
+
+
+
+a into Pa(PROPORTION of a using TUKEY)
+
+a into Sa(SAVAGE of a)
+
+Table: Data List
+a,w,Pa,Sa
+1.00,1.50,.1285,-.8016
+2.00,.20,.1776,-.6905
+3.00,.10,.1986,-.6905
+4.00,1.00,.3458,-.5305
+5.00,1.00,.4860,-.2905
+6.00,1.00,.6262,.0262
+7.00,1.00,.7664,.4929
+8.00,1.00,.9065,1.3929
+])
+AT_CLEANUP
+
+AT_SETUP([RANK all-ties due to tiny weights])
+AT_DATA([rank.sps], [dnl
+DATA LIST LIST NOTABLE /x * w *.
+BEGIN DATA.
+1 0.1
+2 0.1
+3 0.1
+4 0.2
+5 0.1
+6 0.1
+7 0.1
+8 0.1
+END DATA.
+
+WEIGHT BY w.
+
+RANK x
+ /TIES=low
+ /RANK into xl.
+
+
+RANK x
+ /TIES=high
+ /RANK into xh.
+
+RANK x
+ /TIES=condense
+ /RANK into xc.
+
+
+* Test VW fraction
+
+RANK x
+ /FRACTION=VW
+ /NORMAL.
+
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv rank.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variables Created By RANK
+
+
+
+x into xl(RANK of x)
+
+Variables Created By RANK
+
+
+
+x into xh(RANK of x)
+
+Variables Created By RANK
+
+
+
+x into xc(RANK of x)
+
+Variables Created By RANK
+
+
+
+x into Nx(NORMAL of x using VW)
+
+Table: Data List
+x,w,xl,xh,xc,Nx
+1.00,.10,.000,.100,1.000,-1.938
+2.00,.10,.100,.200,2.000,-1.412
+3.00,.10,.200,.300,3.000,-1.119
+4.00,.20,.300,.500,4.000,-.8046
+5.00,.10,.500,.600,5.000,-.5549
+6.00,.10,.600,.700,6.000,-.4067
+7.00,.10,.700,.800,7.000,-.2670
+8.00,.10,.800,.900,8.000,-.1323
+])
+AT_CLEANUP
+
+AT_SETUP([RANK variable name fallback])
+AT_DATA([rank.sps], [dnl
+DATA LIST LIST NOTABLE /foo * rfoo * ran003 *.
+BEGIN DATA.
+0 3 2
+1 3 2
+2 3 2
+2 3 2
+4 3 2
+5 3 2
+6 3 2
+7 3 2
+8 3 2
+9 3 2
+END DATA.
+
+RANK foo.
+
+
+DISPLAY DICTIONARY.
+])
+AT_CHECK([pspp -o pspp.csv rank.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Variables Created By RANK
+
+
+
+foo into RAN001(RANK of foo)
+
+Variable,Description,,Position
+foo,Format: F8.2,,1
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+rfoo,Format: F8.2,,2
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+ran003,Format: F8.2,,3
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+RAN001,RANK of foo,,4
+,Format: F9.3,,
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+])
+AT_CLEANUP
+
+AT_SETUP([RANK robust variable name creation])
+AT_DATA([rank.sps], [dnl
+DATA LIST LIST notable /x * rx * ran001 TO ran999.
+BEGIN DATA.
+1
+2
+3
+4
+5
+6
+7
+END DATA.
+
+RANK x.
+
+DELETE VAR ran001 TO ran999.
+
+LIST.
+])
+AT_CHECK([pspp -O format=csv rank.sps], [0], [dnl
+"rank.sps:3: warning: BEGIN DATA: Missing value(s) for all variables from rx onward. These will be filled with the system-missing value or blanks, as appropriate."
+
+"rank.sps:4: warning: BEGIN DATA: Missing value(s) for all variables from rx onward. These will be filled with the system-missing value or blanks, as appropriate."
+
+"rank.sps:5: warning: BEGIN DATA: Missing value(s) for all variables from rx onward. These will be filled with the system-missing value or blanks, as appropriate."
+
+"rank.sps:6: warning: BEGIN DATA: Missing value(s) for all variables from rx onward. These will be filled with the system-missing value or blanks, as appropriate."
+
+"rank.sps:7: warning: BEGIN DATA: Missing value(s) for all variables from rx onward. These will be filled with the system-missing value or blanks, as appropriate."
+
+"rank.sps:8: warning: BEGIN DATA: Missing value(s) for all variables from rx onward. These will be filled with the system-missing value or blanks, as appropriate."
+
+"rank.sps:9: warning: BEGIN DATA: Missing value(s) for all variables from rx onward. These will be filled with the system-missing value or blanks, as appropriate."
+
+Variables Created By RANK
+
+
+
+x into RNKRA01(RANK of x)
+
+Table: Data List
+x,rx,RNKRA01
+1.00,. ,1.000
+2.00,. ,2.000
+3.00,. ,3.000
+4.00,. ,4.000
+5.00,. ,5.000
+6.00,. ,6.000
+7.00,. ,7.000
+])
+AT_CLEANUP
+
+dnl Test for proper behaviour in the face of invalid input.
+AT_SETUP([RANK handling of invalid input])
+AT_DATA([rank.sps], [dnl
+DATA LIST LIST NOTABLE /x * a (a2).
+BEGIN DATA.
+-1 s
+0 s
+1 s
+2 s
+2 s
+4 s
+5 s
+END DATA.
+
+DEBUG XFORM FAIL.
+
+RANK x.
+])
+AT_CHECK([pspp -O format=csv --testing-mode rank.sps], [1], [dnl
+Variables Created By RANK
+
+
+
+x into Rx(RANK of x)
+
+rank.sps:14: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
+])
+AT_CLEANUP
+
+AT_SETUP([RANK handling of invalid syntax])
+AT_DATA([rank.sps], [dnl
+DATA LIST LIST NOTABLE /x * a (a2).
+BEGIN DATA.
+-1 s
+0 s
+1 s
+2 s
+2 s
+4 s
+5 s
+END DATA.
+
+* invalid NTILES (no parameter)
+RANK x
+ /NTILES
+.
+
+* invalid NTILES (not an integer)
+RANK x
+ /NTILES(d)
+.
+
+
+* destination variable already exists
+RANK x
+ /RANK INTO x.
+
+
+* Too many variables in INTO
+RANK x
+ /RANK INTO foo bar wiz.
+])
+AT_CHECK([pspp -O format=csv rank.sps], [1], [dnl
+rank.sps:15: error: RANK: Syntax error at end of command: expecting `@{:@'.
+
+rank.sps:19: error: RANK: Syntax error at `d': expecting integer.
+
+rank.sps:25: error: RANK: Variable x already exists.
+
+rank.sps:30: error: RANK: Too many variables in INTO clause.
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([REGRESSION])
+
+AT_SETUP([REGRESSION])
+AT_DATA([regression.sps], [dnl
+data list list / v0 to v2.
+begin data
+ 0.65377128 7.735648 -23.97588
+-0.13087553 6.142625 -19.63854
+ 0.34880368 7.651430 -25.26557
+ 0.69249021 6.125125 -16.57090
+-0.07368178 8.245789 -25.80001
+-0.34404919 6.031540 -17.56743
+ 0.75981559 9.832291 -28.35977
+-0.46958313 5.343832 -16.79548
+-0.06108490 8.838262 -29.25689
+ 0.56154863 6.200189 -18.58219
+end data
+regression /variables=v0 v1 v2 /statistics defaults /dependent=v2 /method=enter /save=pred resid.
+list.
+])
+AT_CHECK([pspp -o pspp.csv regression.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+v0,F8.0
+v1,F8.0
+v2,F8.0
+
+Table: Model Summary
+,R,R Square,Adjusted R Square,Std. Error of the Estimate
+,.97,.94,.93,1.34
+
+Table: ANOVA
+,,Sum of Squares,df,Mean Square,F,Significance
+,Regression,202.75,2,101.38,56.75,.00
+,Residual,12.50,7,1.79,,
+,Total,215.26,9,,,
+
+Table: Coefficients
+,,B,Std. Error,Beta,t,Significance
+,(Constant),2.19,2.36,.00,.93,.52
+,v0,1.81,1.05,.17,1.72,.12
+,v1,-3.43,.33,-1.03,-10.33,.00
+,,,,,,
+
+Table: Data List
+v0,v1,v2,RES1,PRED1
+.65,7.74,-23.98,-.84,-23.13
+-.13,6.14,-19.64,-.54,-19.10
+.35,7.65,-25.27,-1.87,-23.40
+.69,6.13,-16.57,.97,-17.54
+-.07,8.25,-25.80,.40,-26.20
+-.34,6.03,-17.57,1.53,-19.10
+.76,9.83,-28.36,1.77,-30.13
+-.47,5.34,-16.80,.18,-16.97
+-.06,8.84,-29.26,-1.05,-28.21
+.56,6.20,-18.58,-.54,-18.04
+])
+AT_CLEANUP
+
+# Tests the QR decomposition used by the REGRESSION command.
+AT_SETUP([REGRESSION test of QR decomposition])
+AT_DATA([regression.sps], [dnl
+data list list / v0 to v1.
+begin data
+-12.84099361 0.873270778
+ 16.64932538 0.371315664
+ -1.88061907 0.505503722
+ -6.20952354 0.734698282
+ 0.33272576 0.891224610
+ -5.54912717 0.052318165
+ 6.11832417 0.448853404
+ 11.78124974 0.470447593
+ 0.75960353 0.565082303
+ 6.06432768 0.149316743
+ -2.64919436 0.752532411
+-10.32250712 0.798263603
+ 2.06355038 0.469129797
+ -9.71851742 0.927162270
+ 4.65582553 0.250629262
+ 9.54574474 0.847032310
+ 7.35544368 0.197028541
+ -2.09609740 0.400584261
+ 10.30101161 0.671546480
+ -5.24501039 0.929962876
+ 1.73412473 0.758161354
+ -3.12732732 0.569785505
+ 12.66261501 0.630640223
+ -2.90956805 0.576067804
+ 4.89649177 0.624483995
+ 13.64613114 0.591089881
+ 14.03198397 0.544587572
+ 2.23566810 0.967898139
+ 5.37367760 0.916246929
+ 9.01346888 0.451702743
+ 0.75378683 0.235544137
+ -3.47470624 0.742668194
+ -1.02063266 0.860311687
+ -2.67132813 0.082460702
+ 23.67661680 0.932553932
+ 7.95061359 0.430161125
+ 2.05300558 0.066331375
+ -2.01332644 0.163705417
+ 20.00663784 0.587292630
+ 3.06099417 0.161411889
+ -3.46115358 0.216684625
+ -6.85287183 0.548714855
+ -4.27923809 0.630997663
+ -0.94863395 0.880612945
+ 4.47481747 0.359885215
+-12.80962955 0.886070341
+ 9.35753086 0.187176558
+ 2.81002235 0.063035095
+ 0.01532424 0.964327101
+ 0.29867732 0.866408063
+ -2.89035649 0.812135868
+ 4.17352811 0.608884061
+ 18.15502183 0.920568258
+ -2.92662792 0.550792959
+ -6.08090449 0.965036595
+ -1.09135397 0.862548019
+ 7.02816784 0.042277017
+-21.20245068 0.430673493
+ -8.83397584 0.724976162
+ -0.89055843 0.017934904
+ 7.03871587 0.308829557
+ 3.84286316 0.685105924
+ 4.50280692 0.447635420
+ 11.39207346 0.875177896
+ 10.86673874 0.518530912
+ 7.09853081 0.588367569
+-12.82864915 0.184667098
+ 13.74888760 0.610891139
+ 0.37379146 0.557720134
+ -9.79020267 0.942839981
+ 0.71574466 0.564570338
+-17.56040637 0.182061777
+ 2.52620466 0.306875011
+ 5.37718673 0.366807049
+ -1.83964300 0.465772898
+ 6.04848363 0.644501799
+ 4.57402403 0.121419591
+ 8.55606848 0.373011464
+ -8.46827907 0.491176571
+ -1.77989798 0.734722847
+ -0.68661121 0.540984182
+ 1.55798880 0.822587656
+ 5.22810831 0.333747878
+ 9.50280477 0.068100934
+ -3.74521465 0.248537644
+ 1.36045068 0.851827791
+ 4.41604088 0.197207162
+ -3.72568327 0.726916693
+ -5.36123334 0.906513529
+ 3.61594583 0.414340595
+-10.01952852 0.140372658
+ 25.48681482 0.354309660
+ -3.34529093 0.090075388
+-18.00437582 0.461438059
+ -5.29782460 0.004362856
+ 2.79608522 0.861294398
+ -1.64076209 0.345775481
+ 6.82802334 0.137933862
+ -0.45416818 0.404379208
+ -1.66868582 0.797685201
+-10.02820292 0.075876582
+ 5.68232031 0.404815042
+ 8.25113850 0.769173748
+ -2.83544237 0.076583474
+ 0.87659945 0.092751009
+ 6.60270870 0.530444351
+-12.63924989 0.362099960
+ -6.24451253 0.641993458
+ 3.53339015 0.461991892
+ -0.74012232 0.437409755
+ 15.37311996 0.974913038
+ -8.09464797 0.543308711
+ -9.61320222 0.221564578
+ 0.21843662 0.856512540
+ -1.56958954 0.610709221
+ 6.44977372 0.200382138
+-13.29136274 0.093222309
+ 6.46257214 0.024135196
+ -3.82727990 0.601335801
+ 0.43081953 0.268230667
+ 19.06654416 0.219972815
+ 17.02906651 0.996849502
+-10.18073139 0.012543080
+ 12.72088788 0.910600764
+ 10.45328185 0.331285901
+ 7.14370922 0.896312020
+ -2.81754334 0.048741266
+ 6.40217095 0.075796756
+ -3.18030478 0.666325307
+ 8.64585957 0.120549153
+ 1.37952764 0.899991932
+-11.81143886 0.601949630
+ 0.03899706 0.363808260
+-10.63828243 0.031092967
+ -6.66940972 0.246204205
+ -5.07374962 0.951272057
+ 4.82281566 0.063928187
+-21.93693564 0.050972680
+ -4.54569883 0.225839693
+ -0.92422779 0.437796785
+ -1.11683029 0.740215139
+ 16.77765554 0.851072372
+ 9.73614597 0.388180586
+ 14.05345168 0.063760129
+ 1.20512012 0.665964184
+ 8.00307080 0.102447114
+ 8.01252623 0.580929209
+-13.54924183 0.438420739
+ 9.87164361 0.970859344
+ 17.63437095 0.250501797
+ -3.42503574 0.873290220
+ -2.45873197 0.847756049
+ 17.29212092 0.411683187
+ 1.15496098 0.530658504
+ -2.14438907 0.592255367
+ -1.79942021 0.517773009
+ -1.30677990 0.830860762
+ 1.70233874 0.291826660
+ -3.05532536 0.801767829
+ -4.06732625 0.092294501
+ 6.34665476 0.270426235
+ 9.46946411 0.196915311
+ 14.50919907 0.480357167
+ 8.93767237 0.778228613
+ 1.90298854 0.903146151
+ 18.50500507 0.598561307
+ 4.45123027 0.555898218
+ 11.37344114 0.616557707
+-12.14693218 0.409187285
+ 18.27198688 0.141619222
+ -5.75939569 0.056989619
+ -4.05515382 0.369281201
+ 16.69882098 0.946885257
+ 6.39050536 0.679704228
+ 4.04213339 0.662792380
+ 6.89608366 0.419877433
+ 1.56496633 0.358227958
+ 5.16679947 0.095144366
+ -3.06280456 0.883265975
+ 2.76279175 0.866571973
+ 1.84969249 0.264869828
+ 21.79840498 0.702650979
+ 1.42450528 0.719308635
+ 0.96797046 0.111937435
+ 18.26840323 0.075621738
+ 13.38288377 0.573399086
+ 2.41101500 0.766238677
+ 3.83866337 0.499888953
+ -1.56577367 0.695244089
+ -0.90342790 0.671654151
+ 10.83775583 0.026041124
+ -9.89767935 0.745297991
+ 11.74840150 0.309144074
+ 1.73069359 0.814063985
+ -5.27966183 0.591005828
+ 3.33030043 0.559401806
+ 1.31427975 0.520950237
+-10.04588558 0.507008362
+ 10.41228345 0.425867272
+ 1.71961097 0.595783108
+-17.54904427 0.328788939
+ -2.23545419 0.223377350
+ -8.68774333 0.980964240
+ -3.48048220 0.008877675
+ -3.69635326 0.090236718
+ 9.76114237 0.769375983
+-10.25662038 0.508137553
+ 0.11155446 0.468504431
+ -8.06824580 0.414098962
+ 3.10031660 0.327130207
+ -3.33393146 0.756896774
+ -3.96276749 0.530956360
+ 14.53610268 0.846474699
+ 1.70505918 0.754662464
+ -1.93495001 0.656650411
+ 5.01974522 0.745337633
+ 13.41249973 0.489362476
+ 11.49288744 0.335924476
+ 12.59019763 0.155560469
+-10.17947298 0.677318449
+ 0.05556115 0.655090105
+ 3.82092860 0.051838719
+ 8.23041456 0.918272190
+ -0.50314649 0.772015826
+ 20.05162157 0.880265258
+ 8.98816884 0.666646668
+ -6.28312120 0.138534416
+ 3.68589909 0.274559458
+ 0.59699510 0.253180863
+ -2.74783135 0.983525221
+ 0.32515065 0.839969577
+ -3.60606166 0.330646732
+ -0.82037740 0.129591173
+ 6.12444860 0.098536516
+ 10.95671074 0.033546728
+ -2.84911174 0.720288722
+ 6.04597572 0.577061422
+ -0.60147150 0.674096868
+ -5.30458364 0.291468008
+ 2.68044943 0.379853840
+ 0.85986585 0.984214339
+-12.77906359 0.882390290
+ 7.21420144 0.550884826
+ 2.31817022 0.231021556
+ 11.60161950 0.888496654
+ -0.19346228 0.242609713
+ 5.07478120 0.759161318
+ 14.54155003 0.040387654
+ 3.81039636 0.874572741
+ 2.23233049 0.448317248
+ 0.19481869 0.201906051
+ 2.81530451 0.132131690
+ 12.39893259 0.674693704
+ 0.47054642 0.632959494
+ 2.16152913 0.734480632
+ 0.33398836 0.315024718
+ 7.35509037 0.304570986
+ -2.92336559 0.539062343
+ 5.79622573 0.392393310
+ -2.37607425 0.403380474
+ 0.04498550 0.756875541
+ -1.63674414 0.613789514
+ 11.80310547 0.832651469
+ 6.30630243 0.850689403
+ 1.48394652 0.096243229
+ 4.03361865 0.799660045
+ 3.54707273 0.408520520
+ 2.00327040 0.702944912
+ 17.30761707 0.380542812
+ 5.72738968 0.105447516
+-13.64604891 0.328506659
+ 8.35976334 0.702173924
+ -7.41197443 0.134396488
+-15.95683040 0.618526462
+ 8.76889573 0.950243069
+ -1.13482624 0.113477080
+ -0.60311407 0.090444247
+ 4.95508365 0.612511543
+ 5.36934491 0.979213258
+ -0.03554882 0.807185690
+-11.58131144 0.183341373
+ 4.46809041 0.796330582
+ 12.49741067 0.346860912
+ 8.63824488 0.073684997
+ 0.49990913 0.732519306
+ 12.82688360 0.109400213
+ 13.20375065 0.850369092
+ -8.41110869 0.177717087
+ 16.31959963 0.727704840
+ 17.59203613 0.235311681
+ 0.32148420 0.842195936
+ 5.43148331 0.670904647
+ 7.14649727 0.028190029
+ 0.25410683 0.421535783
+-12.41047826 0.086404379
+-10.64180909 0.229659236
+ -6.40185653 0.876365242
+ 15.63063324 0.667672536
+ 1.94280423 0.799266628
+ -5.76507450 0.367344192
+ 8.60895533 0.154109357
+ 9.38306751 0.788742770
+ 3.43573528 0.284535277
+ 4.81848966 0.872283177
+ 11.65839314 0.234109111
+ -5.57884822 0.030363060
+ -3.94238060 0.325320686
+ 9.38133340 0.201141788
+ -7.65003459 0.647734396
+ 11.23091019 0.084927159
+ -6.07705432 0.037273791
+ 7.46380750 0.506897136
+ 7.42034855 0.869351148
+ -4.43031973 0.231191152
+ -1.07351537 0.480234836
+ -1.40653281 0.690620421
+ -3.82710168 0.990191328
+ 5.04583490 0.543427375
+-11.54265099 0.270542185
+ 0.49059479 0.991447248
+ -1.40871469 0.555998766
+ 3.64241437 0.743840673
+-18.30031589 0.357478210
+ 4.27487959 0.770619738
+ 1.28805821 0.654787106
+ -3.19542768 0.218110139
+ 12.53375654 0.011857644
+ 11.78889419 0.054127726
+ -5.38392310 0.839309080
+ 16.38024181 0.228801038
+ -0.59622631 0.134381782
+ -0.74107258 0.258146632
+-12.31429450 0.020524447
+ -0.79785028 0.968028764
+ 6.39899711 0.038162566
+ 7.42024044 0.716163692
+ -3.62470664 0.018201813
+ -2.55049724 0.162446610
+-10.79888854 0.683070478
+ 10.18490144 0.546461234
+ -2.76979044 0.198830067
+ 4.85164813 0.094100357
+ 0.96477200 0.381801756
+ 8.13344336 0.639730450
+ 9.04684412 0.786084368
+ 10.41746272 0.828304181
+ 0.94334368 0.798419831
+ 10.13116556 0.191715972
+ -4.12728628 0.575178239
+ -9.59222379 0.876405375
+ 1.64680258 0.391003085
+ -4.58897613 0.039176486
+ 0.38394379 0.511577564
+ -4.80428215 0.222785463
+ 0.35363661 0.681658725
+ -9.63685708 0.183035382
+ 3.54363414 0.766127414
+ 6.89610808 0.967514568
+ -2.03781105 0.464416752
+ 8.67956196 0.421424078
+ -1.09959038 0.061231448
+ 7.12587456 0.028601318
+ -6.93064672 0.402561175
+ 8.57989199 0.925089270
+ -9.55071810 0.454993099
+ -8.11914736 0.509644286
+ -5.41909698 0.077813151
+-17.03336572 0.875713545
+ -1.27438609 0.602163625
+ 3.09834374 0.105599007
+ -1.59865741 0.439939102
+ 11.82272089 0.754984309
+ 4.30969696 0.483834579
+-10.76886192 0.222486992
+ 7.05419803 0.903020271
+ 7.36096847 0.440357053
+ -2.05864869 0.581170147
+ -9.08366913 0.318677911
+ 8.57119930 0.605668919
+ 7.87702340 0.570206991
+ 5.22035786 0.542344385
+ 2.37238850 0.595969470
+ -4.29809941 0.634313781
+ 4.51647479 0.796663089
+ -0.62478780 0.562099444
+ 8.50866078 0.490014249
+ 3.46694991 0.122890089
+ -7.31956453 0.885170890
+ 2.20259268 0.167180856
+ -1.81003626 0.702563515
+ 8.44526939 0.973495019
+ 8.19767069 0.881261264
+ -5.92422578 0.686557351
+ -0.11826129 0.712798344
+ 5.66132869 0.922826429
+ -5.40845018 0.642183516
+ 6.67839036 0.680978989
+ 11.88962825 0.487904896
+ 3.32266332 0.931709581
+ 0.24234019 0.405641313
+-12.79023339 0.361005489
+-13.57875491 0.266289733
+ 1.81304596 0.775093821
+ 0.36755600 0.400225605
+ -9.15574205 0.518040748
+ -3.90436548 0.396869908
+ 9.24764042 0.669374848
+ 0.74869385 0.609881390
+ -3.62958907 0.928867495
+ -0.02527232 0.557679930
+ 0.04433418 0.152565816
+ 11.76152632 0.865663501
+ -4.62181124 0.007000650
+ 5.82271403 0.389678502
+ 0.33289002 0.532940826
+ -7.65647076 0.681574524
+ 11.81023732 0.107165912
+ 11.42121999 0.989580324
+ -5.47120641 0.762285550
+ 3.82311561 0.388755074
+ 16.91059711 0.461236022
+ 4.14012105 0.802420151
+ -1.35278659 0.036646959
+-12.81733350 0.179096148
+ -0.94395134 0.450959878
+ -5.39002376 0.264783062
+ 4.16227017 0.780743762
+ 7.26179625 0.821382454
+ 15.10062276 0.469253936
+ 1.45877225 0.685434405
+ -9.87966760 0.767201511
+ 7.03156071 0.195142483
+-11.71327419 0.774014869
+ -4.55518706 0.973103604
+ -1.75221406 0.175172193
+ 10.35631400 0.080670414
+ 4.97650495 0.597478189
+ 2.25703939 0.585949751
+ 10.72500409 0.339720931
+ -5.02901029 0.997874377
+ 6.24398637 0.655067479
+ -5.83880059 0.184948259
+ 2.17256077 0.746741866
+ -5.59809380 0.277523381
+ 8.19384177 0.334565607
+ 3.35250431 0.952057263
+ 16.20874892 0.901400446
+ 1.63205839 0.235388475
+ -1.07921163 0.608376332
+ 0.24315118 0.862639830
+ 15.61923078 0.050955422
+ 1.99639207 0.358905687
+ 8.14825538 0.190069662
+ 4.55210835 0.784025901
+ 13.51582298 0.973572910
+ 15.42415796 0.969080992
+ 2.23978124 0.551857514
+ 1.00858991 0.919566804
+ -2.77293574 0.906998180
+ 7.10750420 0.934792213
+ -8.01377290 0.682306063
+ 9.67873875 0.239576806
+ 7.54867950 0.065860266
+ 13.85701962 0.733823443
+ 8.48212853 0.285731085
+ 3.55278843 0.998255904
+ 21.94592206 0.205463912
+ -2.07957143 0.948665109
+ 1.54169997 0.200109744
+-11.36934275 0.447122472
+ 3.07094572 0.815147945
+ 6.45818709 0.007849948
+ 1.85594578 0.818796540
+ -2.43799564 0.962013689
+-17.96539549 0.654190963
+ -0.93433746 0.454930236
+-11.06904368 0.898560975
+ 14.89733742 0.479152492
+ -5.72390675 0.136197255
+ 9.46781102 0.669006610
+ 5.35954546 0.259381138
+ 3.78388994 0.933778797
+ 1.95373423 0.517555994
+ 10.96772341 0.666138826
+ 9.40585102 0.779906833
+ 0.75347502 0.142656741
+ 7.64803672 0.734297119
+ -0.40051164 0.362230232
+ 10.00747057 0.660820381
+-12.86024975 0.072988046
+ 1.43515528 0.229672223
+ -6.75981709 0.658534537
+ -5.61355474 0.795897133
+ -4.40596595 0.038787666
+ -1.37033650 0.371835229
+ 6.66666573 0.560963737
+ 8.18430044 0.284787698
+ -0.55742330 0.622783662
+ -0.39757686 0.673551753
+-12.68628005 0.373038561
+ 4.06416215 0.760546238
+ 4.65859855 0.516761886
+ 3.55304076 0.266856843
+ -7.35294817 0.615783196
+ 1.01222898 0.158266779
+ 9.91052610 0.285619547
+ -6.42966726 0.573689954
+ 10.97425098 0.985095061
+ 5.79394599 0.404333309
+ 10.09106608 0.441037857
+ -1.47295537 0.577661077
+ -2.07959719 0.547176133
+ -8.76910940 0.498979558
+-11.15658312 0.135862745
+ -0.88456783 0.326480064
+ 9.71607440 0.998076370
+ -8.76072622 0.386244511
+-19.26823092 0.461833959
+ -0.11280313 0.064155908
+ 0.64625887 0.172078148
+ -5.35323428 0.331153163
+ -1.71034509 0.330955888
+ 4.27104744 0.590544244
+ 7.33843789 0.263171531
+ -5.38121637 0.539675802
+ -6.87566548 0.127313096
+ -2.50161298 0.269417630
+ 10.99076986 0.097362729
+ 6.34017269 0.318528587
+ -4.63672382 0.451038055
+-11.55122495 0.987073278
+ 4.78618612 0.297342215
+ 2.97547390 0.197312152
+ -5.54495280 0.499701114
+ 17.67606173 0.810316588
+ 16.01578815 0.643667608
+ -0.16258467 0.228284761
+ 7.92123340 0.784289369
+ -2.26303900 0.270764770
+ 5.84136933 0.437763291
+ 4.96955217 0.389720490
+ -8.09516710 0.829068548
+ 14.59207207 0.513593803
+ 2.80954688 0.650799867
+ 4.53653552 0.672326278
+ 4.49116737 0.807447691
+ 18.87549709 0.647303378
+ 9.80118464 0.932576117
+-13.02124969 0.038651904
+ -6.15189291 0.697593318
+ 15.81920283 0.249825051
+ 10.81503188 0.152372300
+-23.58738366 0.593560367
+ 8.15716338 0.411680007
+ 3.45349379 0.351061414
+ -6.39345334 0.374926213
+ 8.72924585 0.165759028
+ 22.17948804 0.003736780
+ -4.73053410 0.582425257
+ 16.88289626 0.484899167
+ -1.78826142 0.663273340
+ -0.78106025 0.337039969
+ -2.92461669 0.810174719
+-13.89224399 0.177428986
+ 4.56809819 0.025010350
+ -1.07452825 0.649632933
+ 0.58148751 0.829606422
+ 12.13329525 0.354819526
+ 17.35605568 0.284862590
+-12.43678107 0.827661083
+ -1.89492796 0.574929572
+ 2.18520382 0.846299917
+ 18.11449649 0.603173531
+ 4.34508582 0.484049042
+ 17.49394569 0.094811656
+ 10.67752350 0.166176400
+ 17.13374502 0.547208197
+ 4.42138123 0.768691494
+ 5.38445574 0.788597361
+ 0.79946671 0.851883720
+ -4.67547904 0.995621191
+ -5.61496422 0.523793593
+-20.52093126 0.881207308
+ -8.95996814 0.851078124
+ -7.63483710 0.739657373
+ 11.02131097 0.678060014
+-10.56228517 0.202393048
+ 6.48841788 0.143946271
+ 3.44853632 0.913249620
+ -0.02080024 0.070765134
+ 2.08654297 0.032468089
+ 8.13415912 0.439470874
+ 11.19028936 0.944954026
+ 0.26670866 0.492724593
+ -9.33692734 0.982611921
+ 17.23967092 0.313428994
+ 0.36906670 0.660669528
+ 7.89735684 0.977628886
+ -4.00171487 0.379327632
+ 5.01615432 0.735627296
+ 0.42214214 0.092461754
+ 13.60634772 0.218359635
+ 6.57431413 0.067653525
+ -1.77668341 0.717799276
+ 5.16227422 0.325502093
+-15.29091550 0.332815338
+ 3.33602480 0.594168551
+ 13.80131443 0.817724470
+ 5.92111679 0.947854666
+ 3.59747624 0.330860216
+ -6.79722403 0.093518715
+ -1.86606213 0.824179728
+ 17.05226458 0.466573672
+ 10.39712467 0.409067778
+ -4.78536386 0.891470739
+ 11.92963128 0.719633060
+ -1.44230992 0.232628002
+-12.31860616 0.834134222
+ 2.93439660 0.957842480
+ 14.27963295 0.546264646
+ 2.17488820 0.701170328
+ 10.78772417 0.612332448
+ -0.47049341 0.378564293
+ -0.35140634 0.034337429
+ 5.04887868 0.211697132
+ -3.51562580 0.663243607
+ -0.82013387 0.602497174
+ 2.78954743 0.325294790
+ 8.67905777 0.820296625
+-12.70343389 0.315467361
+ -2.59373236 0.015571904
+ -4.60369241 0.293737716
+ 1.58669084 0.671091860
+-10.44245103 0.501340276
+ 4.85215578 0.141572007
+ 10.46303284 0.801814632
+ 1.27898298 0.236929983
+ -1.72225479 0.608500539
+ 20.18685735 0.827124630
+ 3.27308817 0.542065179
+ 1.01596956 0.254672115
+ -8.88872881 0.460876757
+-11.31397349 0.636168639
+ 0.85294367 0.816417328
+ 3.54262337 0.944147626
+-10.53603202 0.675775741
+ 4.34832198 0.121988381
+ 11.56451662 0.283063133
+ -7.36454369 0.500596540
+ -8.23701113 0.379483261
+ -8.36081323 0.219730782
+ -6.39158860 0.739171315
+ -1.40518544 0.478709398
+ -4.01314821 0.460476388
+ -7.34814047 0.406242873
+ -7.80836711 0.730648091
+ -0.57729135 0.152336258
+ 4.98352832 0.026424939
+ -3.78181635 0.453598432
+ 20.16821827 0.845273124
+ 5.20758271 0.573569671
+ -3.05534245 0.286828574
+ -5.31306254 0.961990401
+ 1.09307567 0.006478724
+ -3.75412572 0.598277695
+ -2.38444245 0.777900122
+ 2.46837742 0.280363751
+ 9.72195519 0.041094463
+ 3.96271247 0.604775284
+ 2.14105354 0.400315328
+ 7.88645912 0.404573389
+ -4.03565076 0.798377309
+ 10.80180959 0.932152434
+-10.89359212 0.446813857
+ 1.43144578 0.310194540
+ 4.79825196 0.504826858
+ 10.73201365 0.384306369
+ -4.07526187 0.893893643
+ -2.84330198 0.390202663
+ 5.81825057 0.830581384
+ -2.77842745 0.382966910
+ -7.70333673 0.157692966
+ -3.25753058 0.726303603
+ 8.50032387 0.556524444
+ 2.35027236 0.857076526
+ -1.70740565 0.194760923
+ -3.40693880 0.696420946
+ -8.03983352 0.514393263
+ -1.85105344 0.609459979
+ -9.01148029 0.526019631
+ 18.37344635 0.690793045
+ 16.46079416 0.811535334
+ 4.10224315 0.043403618
+ 7.06657672 0.831274577
+ 15.31421824 0.434558881
+-12.36760970 0.004215634
+ 1.95473415 0.277788662
+ -0.93207006 0.368433415
+ 15.39919341 0.843189783
+ 5.23452387 0.626226925
+ 11.40805770 0.002417288
+ -1.30282837 0.072493756
+ 3.92130690 0.675355182
+ 2.53148399 0.027222295
+ 4.92705318 0.934429364
+ 5.54978818 0.042268708
+ -2.19608977 0.246743834
+ -0.62565550 0.858214200
+ -8.98329365 0.646827226
+ 12.78468146 0.533966352
+ 2.01061290 0.418710227
+ 1.03689579 0.019241741
+ 8.01166696 0.992268130
+ -4.49786437 0.694127903
+ -8.15387184 0.066275002
+ 2.22256207 0.083301613
+-12.27145086 0.535369809
+ 9.95709112 0.227692557
+ 14.58198717 0.667298058
+ 5.98046083 0.922503625
+ 1.25640725 0.632933575
+ 9.77623752 0.136171032
+ 5.57068426 0.374916651
+-10.07048336 0.470411379
+ 3.69267954 0.897278365
+ 2.22185354 0.212539549
+ 7.96155623 0.720525208
+ -6.21272358 0.771491819
+ 2.63054735 0.474989115
+ -2.81488890 0.675381020
+ 4.52747191 0.118615879
+ -3.22975936 0.783991133
+ 11.42834761 0.423344824
+ 0.26512464 0.617515445
+ -5.84322807 0.210915613
+ 9.61073028 0.988117333
+ -6.11878012 0.492318959
+ 5.30581443 0.339379499
+ -6.40132703 0.903540026
+ 1.22921808 0.122161655
+ 8.08547837 0.197296588
+ -0.77943801 0.935963718
+ 11.43194858 0.828270943
+ -5.41689395 0.556863468
+ 15.14667847 0.565186375
+ -5.15327419 0.542802437
+ -3.95903082 0.643379366
+ 5.78847793 0.391369361
+ 11.54430873 0.158789330
+ 1.90340148 0.841316129
+ 14.69680285 0.532022770
+ 0.68552840 0.367073827
+ -8.72287967 0.250127491
+ 9.35401445 0.836083158
+ 5.32139524 0.996712598
+-14.53387897 0.825434481
+ -2.93925146 0.513153861
+ 12.54386493 0.713306793
+ 2.04842442 0.993893406
+ 2.87461954 0.049843312
+ 4.89765230 0.376710062
+ -6.23945314 0.321108142
+ -3.45840168 0.854710947
+ 9.05807160 0.199992188
+ 3.33815006 0.787302467
+ 4.22244242 0.351841910
+ 15.75879160 0.268699469
+ 2.78549859 0.920299974
+ -4.46643118 0.727283862
+ 0.48021298 0.428672083
+ 2.55814938 0.130915212
+ 5.00692968 0.062266047
+ 4.78801127 0.325124688
+ 6.39524485 0.693406744
+-10.46792584 0.458128441
+ 10.14111908 0.353412759
+-10.56424183 0.821588957
+ 7.60967746 0.267669137
+ -2.34956688 0.434855697
+ 23.82269027 0.802311880
+ 8.37170447 0.445185000
+ 10.05024769 0.778687843
+ -9.15753018 0.957292819
+ 12.17438228 0.774769426
+ 1.57960028 0.783591989
+ 0.06719501 0.849073924
+ 16.21114558 0.243444943
+ -3.79808298 0.842994720
+ 8.98927715 0.020537113
+ 7.72362992 0.984168340
+ 11.25158442 0.152385348
+-21.23936903 0.909204114
+ 7.34995949 0.987249305
+ -7.99435203 0.335456401
+ -2.78218185 0.768517548
+ 11.59547596 0.466617637
+ 15.90870706 0.071892573
+ 5.58160897 0.554485703
+ 16.05253351 0.815206562
+ -3.23103465 0.280495460
+ -4.61108636 0.035757819
+ 5.41596511 0.746146856
+ 2.92445613 0.136743821
+ 11.23628254 0.681316365
+-12.93714705 0.838791576
+ 9.94668264 0.084457395
+ -4.56061529 0.983605894
+ -4.24795688 0.601732731
+ -2.83740044 0.375102341
+ -0.43078317 0.403870303
+ 15.19689584 0.114826374
+-10.29920266 0.731582141
+ 6.01686515 0.641655876
+ 6.69431335 0.496723697
+ 4.62223602 0.328118236
+ -1.74309026 0.072604771
+ 14.31971261 0.827101483
+ -1.86629155 0.613346722
+ 8.30971428 0.274948560
+ 8.50080711 0.059822908
+ -7.94061422 0.121069240
+ -2.72096492 0.710791774
+ 3.33259421 0.398621625
+ 1.73248470 0.488581205
+ 9.56008489 0.011104565
+ 12.71499762 0.038568985
+ 4.11512127 0.219846314
+ -0.96707584 0.822646857
+ 4.98621667 0.633779997
+ 4.69384821 0.295708955
+ 10.16008645 0.778287787
+ -7.72973800 0.097096969
+ 2.87264210 0.796538177
+ 4.56095440 0.862952770
+ 5.02621658 0.934628629
+ 3.18138681 0.805600816
+ -1.02245780 0.317640678
+ 18.16001652 0.992503640
+ 4.13729026 0.941910149
+ 1.61211303 0.377271914
+ 1.71520009 0.735196094
+ 3.26325421 0.514432564
+ 12.94663819 0.591190711
+ 10.53239931 0.005877708
+ 8.06705056 0.340779884
+ -5.09007267 0.332516161
+ 12.31973355 0.323119296
+ -2.69957650 0.633232996
+ 12.51207803 0.377641090
+ 8.02081444 0.859293157
+ -0.13098726 0.099370804
+ -0.97757546 0.852873609
+ 16.73605399 0.595854575
+ 3.63219184 0.329310613
+ -4.79105630 0.247760146
+ -4.77209495 0.708235587
+ 0.92107647 0.924567254
+ 12.12724271 0.433550712
+ -5.07731478 0.200109463
+ 9.16019579 0.897456586
+ 18.33260560 0.649877409
+ 1.93596773 0.584401505
+ 8.51254631 0.283154523
+ 11.41092928 0.698703314
+ 10.85035748 0.351078210
+ 12.62749979 0.570101319
+ -2.32028296 0.313842122
+ -2.45778301 0.007943144
+ 6.93102526 0.108737491
+ -0.67304654 0.245399613
+ 9.27294774 0.204010286
+ 14.29292826 0.396294626
+ 14.05843185 0.864613328
+ -3.73515954 0.305862948
+ 0.36606339 0.116802407
+ -5.79235478 0.457308058
+ 8.70346900 0.858244380
+ -8.91321043 0.077001581
+ 0.58499566 0.503209780
+ 0.39160153 0.324883353
+ 7.46715326 0.343451039
+ 12.36256009 0.679483638
+ 8.84283689 0.687359177
+ -6.39396909 0.113065562
+ -3.67844896 0.667335667
+ 9.36904962 0.009815419
+ -3.25244888 0.213105120
+ 19.09389976 0.593130536
+ 7.28826611 0.829483570
+ -5.44565944 0.956490203
+ 7.96993416 0.770961635
+ 0.20683778 0.006497153
+ -3.73273760 0.037042812
+-10.64745846 0.813594448
+ 5.70578906 0.157678242
+ 4.05282218 0.224663656
+ 14.77711159 0.577586777
+ 0.89685942 0.297213941
+ 3.92600687 0.672347849
+-12.29347477 0.367072171
+ -9.33603480 0.456544225
+ -0.86683190 0.088696811
+ 4.65685745 0.779783359
+ 1.24438030 0.712958633
+ 11.43533814 0.920345548
+-10.18380242 0.044456697
+ -1.20684029 0.992051648
+ -9.78059038 0.611477837
+ 3.05588762 0.581933667
+ 3.47419279 0.769325101
+ 0.87528245 0.455214184
+ -3.13185655 0.805887381
+ -0.82283965 0.707668384
+ -1.86717272 0.984060013
+ 16.56357048 0.217369677
+ -2.11052646 0.474156371
+ -1.39795364 0.958554209
+ 4.87468692 0.328779186
+ 2.69163553 0.401633221
+ 6.08640626 0.599963560
+ 7.41420081 0.240202007
+ 5.73729928 0.696034193
+ 7.31747120 0.569520861
+ -6.20465547 0.214005920
+ 17.52477873 0.667125450
+ 12.97855692 0.796977778
+ -3.35883428 0.379721403
+ -2.90306972 0.552454626
+ 5.31617371 0.401625473
+ -3.86414389 0.830986352
+-14.94107832 0.702705123
+ -5.74060402 0.833328045
+ -8.10116203 0.078855027
+ 23.48247017 0.568666620
+ 20.22005082 0.357069809
+ -2.53387193 0.637455425
+ 15.72048831 0.845354124
+ -4.41494567 0.934471473
+ -8.02254420 0.378467959
+ -0.13398716 0.489382793
+ 0.95967155 0.813667919
+ 0.14835664 0.215786848
+ 14.31875579 0.675145039
+ -6.36589196 0.822037848
+ 8.25942906 0.156787526
+ -7.33597529 0.051076292
+ 12.58936771 0.666507807
+ 2.34653798 0.626196518
+ -0.69351398 0.050664564
+ 7.08738260 0.808776877
+ 5.19653521 0.779008623
+ 3.20900427 0.197212774
+ 7.81171331 0.744975548
+ 6.49008186 0.991318119
+ 7.27471854 0.839642650
+ -7.68367290 0.880500743
+ 12.04846713 0.797754890
+ 14.93435279 0.190527791
+ -3.83641079 0.075995951
+ 2.15090497 0.426560973
+ -3.61166623 0.777188818
+ 8.49333248 0.891445999
+ -7.46936100 0.148607446
+ 13.85406193 0.983656455
+ 12.20477754 0.499345090
+ 10.09415710 0.638127733
+ 5.37134772 0.110929011
+ 8.17660840 0.879411588
+ -4.38804367 0.608933700
+-11.78145902 0.265134740
+ 6.18940186 0.970982743
+-16.24831477 0.844983635
+ 9.52790402 0.578152651
+ 16.44372225 0.264144422
+ -2.48286428 0.893865621
+ 5.33297280 0.512990215
+ -2.68912507 0.851636020
+ 9.94607707 0.644483197
+ -1.93526852 0.550759844
+ 2.34310539 0.787853650
+ 11.79131608 0.983668283
+ 3.16689104 0.605394987
+ 10.47759320 0.919442774
+ 2.86973133 0.557835916
+ 10.30674302 0.442504870
+ 10.92820575 0.976183635
+ 7.98050212 0.139334994
+ -0.64719705 0.981199028
+ -2.63625596 0.341524563
+ 11.38799583 0.858987904
+ 1.37321916 0.202373294
+ 12.66698520 0.142127091
+ 5.83599540 0.864497670
+ 4.88659560 0.472598564
+ 13.00108599 0.961629827
+ 5.79514791 0.408377170
+ -1.47807631 0.536772872
+ -3.38142805 0.288956265
+ 6.25154986 0.828695103
+ 2.40919373 0.478123848
+ 3.72990486 0.056539500
+ -9.90915815 0.603356617
+ 0.21737084 0.737251896
+ 5.36929388 0.026920178
+ -1.05027354 0.034992509
+ -4.97887624 0.506301429
+ -6.40058435 0.014061876
+ -0.14610837 0.619699963
+ 3.78483619 0.653952701
+ 3.84143365 0.162122572
+ 2.66030676 0.196542503
+-10.56809462 0.386200215
+ -5.01140125 0.711703654
+ -3.09809005 0.118120179
+ -2.76110171 0.118809515
+ 2.85825107 0.129646974
+ 2.75993661 0.171779333
+ 11.55931169 0.372165133
+ 9.21211486 0.969079819
+ 6.02207148 0.498965865
+ -3.52883224 0.954619249
+ -2.60190803 0.069405278
+ 1.34183694 0.569402487
+-11.35155228 0.766344735
+ 1.04661568 0.023673810
+ -1.90461932 0.179728300
+ 13.72465582 0.467775796
+ 19.14882438 0.476924297
+ -1.07480326 0.944407858
+ -8.44289331 0.059804028
+ 1.89732882 0.743225795
+ -7.87832463 0.672539050
+-12.24163608 0.916803014
+-12.77212790 0.648129714
+ 6.39197262 0.622954436
+ 5.26261666 0.494421400
+-10.65239640 0.695527931
+ 4.63841458 0.499519163
+ -2.94276544 0.429201572
+ 4.68788953 0.639613685
+ -1.03031400 0.349342009
+ -2.69946354 0.221796918
+-15.32237714 0.631289988
+ -8.31962698 0.925363812
+ -5.80897714 0.833536878
+ 7.16070989 0.832098478
+-10.99679727 0.794048223
+ 0.84514458 0.748014415
+ 2.23308495 0.111176288
+ 3.56351018 0.599805508
+ 0.88336430 0.746908710
+-14.63461670 0.314391808
+ 4.39039715 0.079604833
+ -7.07001439 0.633705345
+ 2.11252583 0.461468123
+ 7.60219364 0.497389476
+ -4.87713428 0.039952736
+ 2.17515292 0.421830084
+ 0.64302362 0.267982804
+-22.29371533 0.646257366
+ 0.31652779 0.060548371
+ 7.93445046 0.343570449
+ 0.28292029 0.651909785
+ 2.77775640 0.637679287
+ 6.22941586 0.291132945
+ 23.68567532 0.708513840
+ 9.49503014 0.645200206
+ 0.87405420 0.063154289
+ -4.04931224 0.110797498
+ 8.91607239 0.732917195
+ -5.77728018 0.635435595
+-16.37296319 0.343727613
+ 9.87409940 0.774177478
+ -8.11360210 0.377765616
+ 14.54242540 0.204343527
+ 0.36239636 0.115528352
+ 19.51009176 0.181365423
+ 1.23592729 0.011676577
+-15.81877035 0.767155028
+ -0.05911251 0.737944231
+ -6.55395965 0.214062137
+ -7.85591487 0.539865054
+ -9.73010882 0.730924287
+ 11.79433862 0.267116856
+ -8.84308360 0.088069165
+ -5.56689174 0.405987947
+ 7.59010135 0.655631611
+ 10.07629305 0.031106157
+ -6.19331485 0.052350502
+ -4.58626710 0.326901540
+ -5.19431549 0.125740555
+ -2.08129025 0.034657174
+-10.48798034 0.153632237
+ 13.04657686 0.317295703
+ 1.94142067 0.731437668
+ -1.62470735 0.701070475
+-12.27046912 0.505781742
+ -2.96095228 0.122808075
+ -2.91847765 0.372668438
+-14.83230131 0.100749725
+ 16.57350659 0.707854947
+ 10.05473238 0.244046174
+ 5.50858969 0.070691273
+ 7.65309196 0.245393047
+ 7.16359996 0.056261015
+ 4.33026356 0.318855549
+ -4.65721575 0.271249938
+ 2.85909691 0.309377566
+ 3.02736080 0.553944209
+ 6.22796768 0.763945813
+ -4.47036396 0.197721195
+ 2.78901176 0.441166128
+ -9.94574794 0.964660659
+ 1.86451969 0.704635530
+-10.38926659 0.772304221
+ -5.36565800 0.029527218
+ 1.99230152 0.578448308
+ 13.65547415 0.936050102
+ -2.05229879 0.851521142
+ 0.99504588 0.974891334
+ -1.46027404 0.320227281
+ -8.45614275 0.727910071
+ -0.95201934 0.199101032
+ -2.46642929 0.462252060
+ -6.44060430 0.703637604
+ -2.58115910 0.084948525
+ 0.76248197 0.125769097
+ 12.00603845 0.675927328
+ 1.97538215 0.782502470
+ 2.23331320 0.870228155
+ -3.10226060 0.485056198
+ 12.59337170 0.584729095
+ -2.42247402 0.387588168
+ 9.41981063 0.374604221
+ 6.26806243 0.727453335
+ -5.30630356 0.427294265
+ 13.81542647 0.394246994
+ 1.05647858 0.646684666
+-12.25005208 0.010531726
+ -4.58162076 0.077133994
+ 0.58094190 0.400275636
+ 5.79443858 0.641731247
+ 8.87635216 0.913593476
+ 9.71048520 0.955285711
+ 13.10563373 0.908471848
+ 4.99194220 0.967014095
+ 15.88178853 0.041518216
+ 9.35962068 0.864770023
+ -7.53095731 0.300106124
+ 12.18427585 0.248876997
+ 9.22034502 0.450149366
+ -1.02861237 0.684246939
+ -2.98140404 0.326901490
+ -4.64316598 0.425381055
+ 15.35233259 0.630774937
+ -1.85655250 0.226889991
+ 15.43748330 0.584219351
+ 10.39060893 0.387854461
+ 2.80705696 0.564024865
+ 3.48201221 0.787103673
+ 7.03787977 0.112019552
+ 8.41853061 0.798376796
+ 15.63925527 0.873984550
+ -4.05742183 0.699131238
+ 6.56954685 0.720018710
+ 2.44007265 0.232697343
+ 3.75597926 0.975133449
+ 2.92362149 0.290975435
+ -4.74372257 0.003738451
+ 1.28365940 0.987536495
+ 15.65288265 0.179629701
+-11.76385004 0.850614822
+ 1.56331228 0.592017435
+ -9.64774741 0.024951969
+ -9.44879860 0.993960270
+ 29.33340056 0.913358233
+ 7.97233120 0.021820585
+-12.10837953 0.401535846
+ -1.20729618 0.984977268
+ 3.63219301 0.491142613
+ 2.79853507 0.663823888
+ 3.19584583 0.612511282
+ -0.81790885 0.908769330
+ -1.67795944 0.611690031
+ 2.55137163 0.109447998
+ 4.36572889 0.382049700
+ -6.35667866 0.162787163
+ -0.76239101 0.892383562
+ -3.99558996 0.466572017
+ -0.47513018 0.457760464
+-10.69568261 0.544872910
+ 4.30943512 0.982456072
+ 2.91825703 0.823403368
+ 0.10753188 0.945676881
+ -8.38623073 0.923085521
+ 4.95690232 0.188128654
+ 5.39956649 0.331692462
+ -1.47421789 0.327711090
+ -1.81689665 0.713285385
+ 5.15137860 0.414906436
+ 5.68897151 0.110799415
+ 0.78825159 0.396824099
+ -1.78376652 0.929264595
+ 0.76991060 0.950124414
+ 15.81469073 0.951245195
+ -4.33820920 0.009896093
+ 1.67174323 0.821983745
+ 0.38997945 0.928857784
+ 1.97848484 0.175680230
+ -5.81067801 0.772580245
+-10.45208478 0.418845035
+ 13.34024524 0.905645046
+ -8.79585122 0.906516178
+ 2.89093397 0.113010960
+ 2.22324289 0.799940482
+ 8.95497981 0.984663669
+ 0.93288527 0.277914575
+-17.35306978 0.455587022
+ -3.26914604 0.406757639
+ 8.75871227 0.067059659
+ 1.79914932 0.784879863
+ -0.67305388 0.006393497
+ 1.66805704 0.039614073
+ 9.03868439 0.601066847
+ 4.29458670 0.015772820
+ -8.15564320 0.939633197
+ 12.50538902 0.766347628
+ -0.45547258 0.464314122
+ -9.47180656 0.640114882
+-13.25567198 0.125841930
+ 2.87660101 0.381931128
+ 7.37834152 0.648958712
+ -0.45874073 0.303139498
+ 4.87941450 0.500090729
+ 4.50344891 0.311329309
+ -6.14257896 0.061368838
+ 5.98243271 0.873804882
+ -2.64694079 0.080493398
+-17.79727796 0.188420116
+-13.52552336 0.798403568
+ 2.29086373 0.518700767
+ 5.21493652 0.788828533
+ -8.09641615 0.775041349
+ 5.87005782 0.079447757
+ 10.74795720 0.955691540
+ -8.01115709 0.004508053
+ -7.53735064 0.054195934
+ -6.79130165 0.877193354
+ -1.26419539 0.837772170
+ 8.31082852 0.967509866
+ 21.83090247 0.261529880
+ 11.20453234 0.913858875
+ 7.19128396 0.541942489
+ -2.93623595 0.860095891
+ -3.61446403 0.022418065
+ -6.59997709 0.532998307
+ 3.71486934 0.522669434
+ 18.03420874 0.295064126
+ -8.75452291 0.390175021
+ -7.83680812 0.263760724
+ -1.10263921 0.501819826
+ 2.05633484 0.338684642
+ 5.25636848 0.558667384
+ -7.33260497 0.457327559
+ 3.86721296 0.612182242
+-15.94331373 0.478329365
+ 3.71501899 0.264241588
+ 18.26175822 0.023212661
+ -5.21093378 0.184378036
+ -2.44074986 0.297114134
+-11.88339919 0.875956945
+ 7.52127093 0.927322099
+ 5.31597834 0.416344968
+ 11.42012314 0.952491078
+ 13.64950955 0.794183413
+ 12.50861255 0.390723282
+ -3.48142207 0.538708662
+ 14.32910902 0.085221990
+ 5.76196699 0.313860477
+ 2.63751452 0.917424732
+ 2.99975231 0.208662214
+ 7.09852825 0.798246964
+ -1.95742636 0.352166210
+ 7.80534904 0.386523123
+ -4.47229047 0.290188493
+ -4.35535158 0.761527294
+ 1.47083860 0.447897289
+ 3.09504296 0.048513534
+ 3.50446804 0.925072429
+ 12.00487617 0.574499971
+ 10.35171466 0.934193962
+ -5.63256003 0.968833982
+ 7.15625220 0.467160468
+ -7.81378393 0.790220187
+ 4.52101003 0.014459969
+ 12.90773453 0.990835752
+ 7.70737851 0.785329264
+ -3.37196794 0.066025357
+ -5.12793918 0.347459322
+ -7.96083724 0.216608294
+ 12.81247279 0.287880308
+ 4.63872463 0.426881173
+ -3.85439309 0.336532356
+ 4.55633320 0.108001536
+ -2.40824634 0.135247519
+ 1.65932541 0.005108006
+ 3.26129578 0.093163961
+ -3.52114597 0.544041275
+ -9.08479260 0.111212700
+ 7.75150456 0.942726234
+ 7.44829768 0.396996218
+ 14.44430576 0.525470762
+ -2.13457508 0.207577358
+ 9.74871681 0.537177845
+ -4.53338693 0.625854028
+ 16.15962824 0.947933141
+ -0.17711664 0.480940902
+ -7.21470818 0.006952612
+ -6.27644212 0.737909602
+ -0.81648165 0.230003567
+ -2.10429152 0.209671398
+ 7.69291241 0.987903443
+ -0.32284504 0.183904658
+ -0.90833921 0.782169770
+ 10.35542238 0.201758865
+ 10.40788689 0.540802365
+ 10.80011849 0.298263948
+ 7.39943598 0.785716539
+-12.71674257 0.154135834
+ 16.67139866 0.116794235
+ 12.47832985 0.998179468
+ 3.24041348 0.653080096
+ -5.50381593 0.995396942
+-10.41952811 0.576472768
+ 4.33514092 0.146434686
+ 4.41294276 0.507165968
+ -0.14746982 0.698144836
+ -1.33323051 0.466481571
+ -7.01201350 0.797150114
+ 6.58669848 0.942287809
+ 7.19444974 0.053569397
+ -5.66046997 0.435728340
+ -5.07828702 0.497727572
+ 13.72045272 0.324222944
+ 9.99111984 0.355713969
+ -4.42363728 0.071790181
+ -2.34300923 0.618434528
+ 4.98594041 0.605667438
+ -2.45307721 0.894546647
+ -3.52276424 0.760086779
+ -3.69489441 0.960758209
+ 13.04792817 0.511273320
+ 21.61433486 0.236270637
+ -9.57303968 0.964235539
+ 11.70400744 0.391045695
+ 4.25170422 0.411577090
+ 7.87516537 0.952858161
+ 9.89202673 0.971106687
+ 7.51554467 0.505791978
+ 2.17944879 0.893835908
+ 0.82420351 0.213912155
+ 2.47121932 0.688019842
+-14.88503628 0.640950883
+ 8.16032283 0.277742858
+ -4.65776244 0.129415853
+ 7.48274838 0.074213153
+ 7.70537066 0.476778957
+ 5.88202944 0.351838898
+ 1.95618325 0.106331699
+ 7.22064623 0.511434587
+-18.64632081 0.009314188
+ -6.16794611 0.526204245
+ 2.14042033 0.675800465
+ -1.89535048 0.916845690
+ -7.77156605 0.069742819
+ -6.84078801 0.865082345
+ 8.17539904 0.095895629
+ 10.75170309 0.821383078
+ 14.31498805 0.117893208
+ -2.82264467 0.809086411
+ 0.11117380 0.400587471
+ 6.43898314 0.333163663
+ 9.48110784 0.465173316
+ 5.39395511 0.695273081
+ -2.05636570 0.508060862
+ 0.68666117 0.647109494
+ -6.41880322 0.267530762
+ -0.12096589 0.986901165
+ 6.46062643 0.588580914
+ -4.20926136 0.550783675
+ 4.07354300 0.907963701
+ 10.84045143 0.900920521
+ 2.64504664 0.767700269
+ 10.34578229 0.197810342
+ -0.19222273 0.281932395
+ 3.47400952 0.977555902
+ 11.04549389 0.694010579
+ 6.79729856 0.056652433
+ 9.28300628 0.598930531
+ -3.53453282 0.183412212
+ 8.04028248 0.250746943
+ 5.75964045 0.424692336
+ -4.98252741 0.867446071
+ 12.00352175 0.289615080
+ 7.53497791 0.350915526
+ 2.54579776 0.655113837
+ -9.29572208 0.900136667
+ 6.41659249 0.100570650
+ 7.37095646 0.907179211
+-12.78417775 0.262214556
+ 0.87962107 0.624657444
+ -5.96939907 0.296725805
+ -2.56857339 0.604065931
+ 4.27131811 0.962952479
+ 21.72603838 0.442485270
+ 6.10056565 0.418383130
+ 10.48099521 0.333593221
+ 19.28363092 0.382408442
+ 2.12080726 0.601206970
+ -6.82450704 0.740158518
+ 11.32395692 0.627015570
+ 5.00040701 0.476274658
+-11.64750733 0.105099095
+ 5.77442654 0.576560214
+ 0.31340364 0.516479036
+ -2.09881449 0.146089191
+ 5.12411327 0.368130477
+ 1.70530391 0.621828438
+-12.95649749 0.355726301
+ 8.43735652 0.275383759
+-15.56161079 0.413160084
+ 5.28942694 0.069125495
+ 5.96040877 0.438716686
+ -2.59318107 0.571116303
+ 6.95988992 0.650760909
+ 14.00074797 0.623645969
+ 1.66101456 0.558763985
+ -2.57968349 0.648185379
+ -5.47584253 0.716901151
+ 6.37222581 0.060563130
+ 2.83664864 0.842419730
+ 1.48926558 0.620280308
+ 0.33471689 0.170312461
+ 5.21648412 0.317639631
+ 0.51733642 0.843867329
+ 9.86005834 0.306036746
+ -5.81145791 0.975655452
+ -5.43219061 0.303385368
+ 5.87157118 0.677369776
+ 2.08889926 0.310200439
+ -2.53433085 0.194730908
+ 7.01359575 0.674259533
+ -2.00936260 0.682056466
+ -2.98240739 0.787899917
+ -7.43289210 0.357483044
+-12.58905988 0.981387385
+ 5.78095517 0.533526274
+ -1.23065889 0.687266774
+ -6.82309960 0.293249774
+ 8.47000829 0.842056399
+ -5.81624772 0.303700280
+-14.83571031 0.311387926
+ 4.66808472 0.091222946
+ -2.90144463 0.438301785
+ 10.62458662 0.828335698
+ 7.88002491 0.990156110
+ 10.27680283 0.251087079
+ -9.42498970 0.292462244
+ 6.73027640 0.213065205
+ 1.28169895 0.353152789
+-14.29203733 0.264563048
+ 20.35772711 0.265208837
+ 3.55095071 0.242905653
+-17.97067670 0.373951756
+ 10.53141139 0.247520698
+ 0.05293205 0.579940423
+ 12.79674707 0.288031751
+ -5.44235185 0.075899079
+ 14.29464811 0.960707538
+ -1.36753291 0.124265178
+ -4.25946974 0.521720352
+-12.46519252 0.385503339
+ -6.65343143 0.540942219
+ 5.55949184 0.143194404
+ -1.20480594 0.515905644
+ -4.13839908 0.164461445
+ -2.21345425 0.812969725
+ 3.94223380 0.229238952
+-10.78661097 0.395049514
+ 3.06997341 0.791234255
+ 24.82205477 0.110859039
+ 6.28791249 0.867125744
+ -2.80296119 0.703583849
+ 13.24274039 0.425951975
+ -0.19577471 0.361568727
+ -2.34894781 0.954814545
+ 19.76339577 0.635462177
+ -1.87591480 0.149121567
+ -7.70962391 0.711708342
+ -2.46291902 0.390902746
+end data
+regression /variables=v0 v1 /statistics defaults /dependent=v0 /method=enter.
+])
+AT_CHECK([pspp -o pspp.csv regression.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+v0,F8.0
+v1,F8.0
+
+Table: Model Summary
+,R,R Square,Adjusted R Square,Std. Error of the Estimate
+,.05,.00,.00,8.11
+
+Table: ANOVA
+,,Sum of Squares,df,Mean Square,F,Significance
+,Regression,235.23,1,235.23,3.58,.06
+,Residual,98438.40,1498,65.71,,
+,Total,98673.63,1499,,,
+
+Table: Coefficients
+,,B,Std. Error,Beta,t,Significance
+,(Constant),1.24,.42,.00,2.95,.21
+,v1,1.37,.72,.05,1.89,.06
+,,,,,,
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([RELIABILITY])
+
+AT_SETUP([RELIABILITY])
+AT_DATA([reliability.sps], [dnl
+data list notable list /var1 *
+ var2 *
+ var6 *
+ var7 *
+ var8 *
+ var9 *
+ var11 *
+ var12 *
+ var15 *
+ var16 *
+ var17 *
+ var19 *
+ .
+
+begin data.
+6 7 7 5 7 7 7 7 7 7 6 6
+6 7 7 6 7 6 7 5 6 5 7 7
+6 6 7 6 5 3 6 4 5 6 4 5
+4 6 5 6 6 5 4 3 5 6 5 6
+5 6 5 5 6 5 4 4 6 6 5 5
+6 6 7 6 6 5 6 5 6 6 5 6
+5 6 6 5 6 5 5 4 6 5 5 5
+5 7 7 7 7 7 6 5 7 7 7 7
+6 6 6 5 5 7 6 5 6 6 5 6
+. . . . . . . . . . . .
+6 6 5 5 5 6 6 4 6 5 5 5
+7 7 7 6 7 6 7 6 6 6 7 6
+4 7 6 6 6 5 5 4 4 5 5 6
+5 6 3 5 4 1 4 6 2 3 3 2
+3 6 6 5 6 2 4 2 2 4 4 5
+6 6 7 5 6 5 7 6 5 6 6 5
+6 5 6 6 5 6 6 6 6 4 5 5
+5 7 7 . 6 6 6 5 6 6 6 6
+5 7 5 5 4 6 7 6 5 4 6 5
+7 7 7 6 7 7 7 6 7 7 7 6
+3 6 5 6 5 7 7 3 4 7 5 7
+6 7 7 6 5 6 5 5 6 6 6 6
+5 5 6 5 5 5 5 4 5 5 5 6
+6 6 7 4 5 6 6 6 6 5 5 6
+6 5 6 6 4 4 5 4 5 6 4 5
+5 6 7 6 6 7 7 5 6 6 6 5
+5 6 5 7 4 6 6 5 7 7 5 6
+. . . . . . . . . . . .
+7 6 6 5 6 6 7 6 6 5 5 6
+6 6 7 7 7 7 7 6 7 6 6 7
+7 5 5 . 5 . 7 3 5 4 5 3
+7 6 7 5 4 5 7 5 7 5 5 6
+6 5 6 6 6 5 5 5 5 6 5 6
+7 7 7 7 7 7 7 7 5 6 7 7
+. . . . . . . . . . . .
+5 5 6 7 5 6 6 4 6 6 6 5
+6 6 5 7 5 6 7 5 6 5 4 6
+7 6 7 6 7 5 6 7 7 6 6 6
+5 6 5 6 5 6 7 2 5 7 3 7
+6 6 5 6 5 6 6 6 6 6 5 6
+7 6 7 6 6 6 6 6 6 7 6 7
+7 7 6 5 6 6 7 7 7 4 6 5
+3 7 7 6 6 7 7 7 6 6 6 4
+3 5 3 4 3 3 3 3 3 3 3 5
+5 7 7 7 5 7 6 2 6 7 6 7
+7 7 7 7 7 7 7 6 7 7 7 6
+6 5 7 4 4 4 5 6 5 5 4 5
+4 7 7 4 4 3 6 3 5 3 4 5
+7 7 7 7 7 7 7 7 7 7 7 5
+3 6 5 5 4 5 4 4 5 5 3 5
+6 7 6 6 6 7 7 6 6 6 7 6
+2 5 4 6 3 2 2 2 2 7 2 2
+4 6 6 5 5 5 6 5 5 6 6 5
+5 7 4 5 6 6 6 5 6 6 5 6
+5 7 7 5 6 5 6 5 5 4 5 4
+4 5 6 5 6 4 5 5 5 4 5 5
+7 6 6 5 5 6 7 5 6 5 7 6
+5 6 6 5 4 5 5 3 4 5 5 5
+5 7 6 4 4 5 6 5 6 4 4 6
+6 6 6 6 5 7 7 6 5 5 6 6
+6 6 7 6 7 6 6 5 6 7 6 5
+7 6 7 6 7 6 7 7 5 5 6 6
+5 6 6 5 5 5 6 5 6 7 7 5
+5 6 6 5 6 5 6 6 6 6 6 6
+5 5 5 5 6 4 5 3 4 7 6 5
+5 7 7 6 6 6 6 5 6 7 6 7
+6 6 7 7 7 5 6 5 5 5 5 4
+2 7 5 4 6 5 5 2 5 6 4 6
+6 7 7 5 6 6 7 6 6 7 5 7
+5 6 7 6 6 3 5 7 6 6 5 6
+6 6 6 3 5 5 5 6 6 6 4 5
+4 7 7 4 7 4 5 5 5 7 4 4
+. . . . . . . . . . . .
+6 6 7 6 7 6 7 7 6 7 7 6
+. . . . . . . . . . . .
+5 6 5 7 6 5 6 6 5 6 4 6
+5 5 5 5 4 5 5 5 7 5 5 5
+6 6 6 4 5 4 6 6 6 4 5 4
+6 5 7 4 6 4 6 5 6 6 6 3
+5 7 6 5 5 5 5 5 6 7 6 6
+5 5 7 7 5 5 6 6 5 5 5 7
+5 6 7 6 7 5 6 4 6 7 6 7
+4 5 5 5 6 5 6 5 6 6 5 6
+6 5 5 5 6 3 4 5 5 4 5 3
+6 6 6 5 5 5 4 3 4 5 5 5
+6 7 7 6 2 3 6 6 6 5 7 7
+6 7 5 5 6 6 6 5 6 6 6 6
+6 7 7 6 7 7 7 5 5 6 6 6
+6 6 6 6 7 6 6 7 6 6 6 6
+5 6 6 6 3 5 6 6 5 5 4 6
+4 6 5 6 6 5 6 5 6 6 5 5
+6 4 6 5 4 6 7 4 5 6 5 5
+6 7 6 4 6 5 7 6 7 7 6 5
+6 7 7 6 7 6 7 7 7 6 6 6
+6 6 6 4 5 6 7 7 5 6 4 4
+3 3 5 3 3 1 5 6 3 2 3 3
+7 7 5 6 6 7 7 6 7 7 7 7
+5 6 6 6 7 5 4 5 4 7 6 7
+3 6 5 4 3 3 3 5 5 6 3 4
+5 7 6 4 6 5 5 6 6 7 5 6
+5 7 6 6 6 6 6 5 6 7 7 6
+7 7 5 6 7 7 7 7 6 5 7 7
+6 7 6 6 5 6 7 7 6 5 6 6
+6 7 7 7 7 6 6 7 6 7 7 7
+4 6 4 7 3 6 5 5 4 3 5 6
+5 5 7 5 4 6 7 5 4 6 6 5
+5 5 6 4 6 5 7 6 5 5 5 6
+. . . . . . . . . . . .
+. . . . . . . . . . . .
+5 7 7 5 6 6 7 7 6 6 6 7
+6 7 7 1 2 1 7 7 5 5 5 2
+. . . . . . . . . . . .
+3 7 4 6 4 7 4 6 4 7 4 7
+5 7 3 5 5 6 7 5 4 7 7 4
+4 7 7 5 4 6 7 7 6 5 4 4
+6 6 2 2 6 4 6 5 5 1 5 2
+5 5 6 4 5 4 6 5 5 6 5 5
+. . . . . . . . . . . .
+5 7 6 6 6 6 6 6 5 6 6 6
+6 6 6 5 6 6 6 6 7 5 6 7
+3 6 3 3 5 3 3 5 3 5 7 4
+4 4 6 3 3 3 4 3 4 2 3 6
+5 7 7 6 5 4 7 5 7 7 3 7
+4 5 4 4 4 4 3 3 3 4 3 3
+6 7 7 5 6 6 7 5 4 5 5 5
+3 5 3 3 1 3 4 3 4 7 6 7
+4 5 4 4 4 3 4 5 6 6 4 5
+5 6 3 4 5 3 5 3 4 5 6 4
+5 5 5 6 6 6 6 4 5 6 6 5
+6 7 7 2 2 6 7 7 7 7 5 7
+5 7 7 4 6 5 7 5 5 5 6 6
+6 6 7 7 5 5 5 7 6 7 7 7
+6 5 7 3 6 5 6 5 5 6 5 4
+5 7 6 5 6 6 6 5 6 5 5 6
+4 5 5 5 6 3 5 3 3 6 5 5
+. . . . . . . . . . . .
+5 6 6 4 4 4 5 3 5 5 2 6
+5 6 7 5 5 6 6 5 5 6 6 6
+6 7 7 6 4 7 7 6 7 5 6 7
+6 6 5 4 5 2 7 6 6 5 6 6
+2 2 2 2 2 2 3 2 3 1 1 2
+end data.
+
+RELIABILITY
+ /VARIABLES=var2 var8 var15 var17 var6
+ /SCALE('Everything') var6 var8 var15 var17
+ /MODEL=ALPHA.
+
+RELIABILITY
+ /VARIABLES=var6 var8 var15 var17
+ /SCALE('Nothing') ALL
+ /MODEL=SPLIT(2)
+ .
+
+RELIABILITY
+ /VARIABLES=var2 var6 var8 var15 var17 var19
+ /SCALE('Totals') var6 var8 var15 var17
+ /SUMMARY = total
+ .
+
+
+RELIABILITY
+ /VARIABLES=var6 var8 var15 var17
+ .
+])
+AT_CHECK([pspp -o pspp.csv reliability.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Scale: Everything
+
+Table: Case Processing Summary
+,,N,%
+Cases,Valid,131,92.91
+,Excluded,10,7.09
+,Total,141,100.00
+
+Table: Reliability Statistics
+Cronbach's Alpha,N of Items
+.75,4
+
+Scale: Nothing
+
+Table: Case Processing Summary
+,,N,%
+Cases,Valid,131,92.91
+,Excluded,10,7.09
+,Total,141,100.00
+
+Table: Reliability Statistics
+Cronbach's Alpha,Part 1,Value,.55
+,,N of Items,2
+,Part 2,Value,.63
+,,N of Items,2
+,Total N of Items,,4
+Correlation Between Forms,,,.61
+Spearman-Brown Coefficient,Equal Length,,.75
+,Unequal Length,,.75
+Guttman Split-Half Coefficient,,,.75
+
+Scale: Totals
+
+Table: Case Processing Summary
+,,N,%
+Cases,Valid,131,92.91
+,Excluded,10,7.09
+,Total,141,100.00
+
+Table: Reliability Statistics
+Cronbach's Alpha,N of Items
+.75,4
+
+Table: Item-Total Statistics
+,Scale Mean if Item Deleted,Scale Variance if Item Deleted,Corrected Item-Total Correlation,Cronbach's Alpha if Item Deleted
+var6,15.97,8.43,.51,.71
+var8,16.56,7.86,.53,.70
+var15,16.47,8.45,.56,.68
+var17,16.60,8.00,.57,.67
+
+Scale: ANY
+
+Table: Case Processing Summary
+,,N,%
+Cases,Valid,131,92.91
+,Excluded,10,7.09
+,Total,141,100.00
+
+Table: Reliability Statistics
+Cronbach's Alpha,N of Items
+.75,4
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([ROC])
+
+AT_SETUP([ROC, free distribution])
+AT_DATA([roc.sps], [dnl
+set format F10.3.
+data list notable list /x * y * w * a *.
+begin data.
+1 1 2 1
+1 2 28 0
+2 3 4 1
+2 4 14 0
+3 5 10 1
+. . 1 0
+3 1 5 0
+4 2 14 1
+4 3 2 0
+5 4 20 1
+5 4 20 .
+5 5 1 0
+end data.
+
+weight by w.
+
+roc x by a (1)
+ /plot = none
+ /print = se coordinates
+ /criteria = testpos(large) distribution(free) ci(99)
+ /missing = exclude .
+])
+AT_CHECK([pspp -o pspp.csv roc.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Case Summary
+,Valid N (listwise),
+a,Unweighted,Weighted
+Positive,5,50.000
+Negative,5,50.000
+
+Table: Area Under the Curve (x)
+,,,Asymp. 99% Confidence Interval,
+Area,Std. Error,Asymptotic Sig.,Lower Bound,Upper Bound
+.910,.030,.000,.839,.981
+
+Table: Coordinates of the Curve (x)
+Positive if greater than or equal to,Sensitivity,1 - Specificity
+.000,1.000,1.000
+1.500,.960,.440
+2.500,.880,.160
+3.500,.680,.060
+4.500,.400,.020
+6.000,.000,.000
+])
+AT_CLEANUP
+
+AT_SETUP([ROC, negative exponential distribution])
+AT_DATA([roc.sps], [dnl
+set format F10.3.
+data list notable list /x * y * w * a *.
+begin data.
+1 1 2 1
+1 2 28 0
+2 3 4 1
+2 4 14 0
+3 5 10 1
+. . 1 0
+3 1 5 0
+4 2 14 1
+4 3 2 0
+5 4 20 1
+5 4 20 .
+5 5 1 0
+end data.
+
+weight by w.
+
+roc x y by a (1)
+ /plot = curve(reference)
+ /print = se coordinates
+ /criteria = testpos(large) distribution(negexpo) ci(95)
+ /missing = exclude .
+])
+AT_CHECK([pspp -o pspp.csv roc.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Case Summary
+,Valid N (listwise),
+a,Unweighted,Weighted
+Positive,5,50.000
+Negative,5,50.000
+
+Table: Area Under the Curve
+,,,,Asymp. 95% Confidence Interval,
+Variable under test,Area,Std. Error,Asymptotic Sig.,Lower Bound,Upper Bound
+x,.910,.030,.000,.860,.960
+y,.697,.052,.001,.611,.783
+
+Table: Coordinates of the Curve
+Test variable,Positive if greater than or equal to,Sensitivity,1 - Specificity
+x,.000,1.000,1.000
+,1.500,.960,.440
+,2.500,.880,.160
+,3.500,.680,.060
+,4.500,.400,.020
+,6.000,.000,.000
+y,.000,1.000,1.000
+,1.500,.960,.900
+,2.500,.680,.340
+,3.000,.600,.340
+,3.500,.600,.300
+,4.500,.200,.020
+,6.000,.000,.000
+])
+AT_CLEANUP
+
+AT_SETUP([ROC, with anomaly])
+AT_DATA([roc.sps], [dnl
+set format F10.3.
+data list notable list /x * a * comment (a20).
+begin data.
+0 1 ""
+0 0 ""
+1 1 ""
+1 0 ""
+2 1 ""
+2 0 ""
+5 1 ""
+5 0 ""
+10 1 ""
+10 0 ""
+15 1 ""
+15 0 ""
+20 1 ""
+20 1 ""
+22 0 "here and"
+22 0 "here is the anomoly"
+25 1 ""
+25 0 ""
+30 1 ""
+30 0 ""
+35 1 ""
+35 0 ""
+38 1 ""
+38 0 ""
+39 1 ""
+39 0 ""
+40 1 ""
+40 0 ""
+end data.
+
+roc x by a (1)
+ /plot = none
+ print = se
+ .
+])
+AT_CHECK([pspp -o pspp.csv roc.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Case Summary
+,Valid N (listwise),
+a,Unweighted,Weighted
+Positive,14,14.000
+Negative,14,14.000
+
+Table: Area Under the Curve (x)
+,,,Asymp. 95% Confidence Interval,
+Area,Std. Error,Asymptotic Sig.,Lower Bound,Upper Bound
+.490,.111,.927,.307,.673
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([SORT CASES])
+
+m4_divert_push([PREPARE_TESTS])
+[sort_cases_gen_data () {
+ cat > gen-data.pl <<'EOF'
+use strict;
+use warnings;
+
+# Generate shuffled data.
+my (@data);
+for my $i (0...$ARGV[0] - 1) {
+ push (@data, ($i) x $ARGV[1]);
+}
+fisher_yates_shuffle (\@data);
+
+# Output shuffled data.
+my (@shuffled) = map ([$data[$_], $_], 0...$#data);
+open (SHUFFLED, ">data.txt");
+print SHUFFLED "$data[$_] $_\n" foreach 0...$#data;
+
+# Output sorted data.
+my (@sorted) = sort { $a->[0] <=> $b->[0] || $a->[1] <=> $b->[1] } @shuffled;
+open (SORTED, ">expout");
+printf SORTED " %8d %8d \n", $_->[0], $_->[1] foreach @sorted;
+
+# From perlfaq4.
+sub fisher_yates_shuffle {
+ my $deck = shift; # $deck is a reference to an array
+ my $i = @$deck;
+ while ($i--) {
+ my $j = int rand ($i+1);
+ @$deck[$i,$j] = @$deck[$j,$i];
+ }
+}
+EOF
+ $PERL gen-data.pl "$@"]
+}
+m4_divert_pop([PREPARE_TESTS])
+
+m4_define([SORT_CASES_TEST],
+ [AT_SETUP([sort m4_eval([$1 * $2]) cases[]m4_if([$2], [1], [], [ ($1 unique)])[]m4_if([$3], [], [], [ with $3 buffers])])
+ AT_KEYWORDS([SORT CASES])
+ AT_CHECK([sort_cases_gen_data $1 $2 $3])
+ AT_CAPTURE_FILE([data.txt])
+ AT_CAPTURE_FILE([output.txt])
+ AT_CAPTURE_FILE([sort-cases.sps])
+ AT_DATA([sort-cases.sps], [dnl
+DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
+SORT BY x[]m4_if([$3], [], [], [/BUFFERS=$3]).
+PRINT OUTFILE='output.txt'/x y.
+EXECUTE.
+])
+ AT_CHECK([pspp --testing-mode -o pspp.csv sort-cases.sps])
+ AT_CHECK([cat output.txt], [0], [expout])
+ AT_CLEANUP])
+
+SORT_CASES_TEST(100, 5, 2)
+SORT_CASES_TEST(100, 5, 3)
+SORT_CASES_TEST(100, 5, 4)
+SORT_CASES_TEST(100, 5, 5)
+SORT_CASES_TEST(100, 5, 10)
+SORT_CASES_TEST(100, 5, 50)
+SORT_CASES_TEST(100, 5, 100)
+SORT_CASES_TEST(100, 5)
+
+SORT_CASES_TEST(100, 10, 2)
+SORT_CASES_TEST(100, 10, 3)
+SORT_CASES_TEST(100, 10, 5)
+SORT_CASES_TEST(100, 10)
+
+SORT_CASES_TEST(1000, 5, 5)
+SORT_CASES_TEST(1000, 5, 50)
+SORT_CASES_TEST(1000, 5)
+
+SORT_CASES_TEST(100, 100, 3)
+SORT_CASES_TEST(100, 100, 5)
+SORT_CASES_TEST(100, 100)
+
+SORT_CASES_TEST(10000, 5, 500)
+
+SORT_CASES_TEST(50000, 1)
+
--- /dev/null
+AT_BANNER([T-TEST])
+
+AT_SETUP([T-TEST /PAIRS])
+AT_DATA([t-test.sps], [dnl
+data list list /ID * A * B *.
+begin data.
+1 2.0 3.0
+2 1.0 2.0
+3 2.0 4.5
+4 2.0 4.5
+5 3.0 6.0
+end data.
+
+t-test /PAIRS a with b (PAIRED).
+])
+AT_CHECK([pspp -o pspp.csv t-test.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+ID,F8.0
+A,F8.0
+B,F8.0
+
+Table: Paired Sample Statistics
+,,Mean,N,Std. Deviation,S.E. Mean
+Pair 0,A,2.00,5,.71,.32
+,B,4.00,5,1.54,.69
+
+Table: Paired Samples Correlations
+,,N,Correlation,Sig.
+Pair 0,A & B,5,.92,.03
+
+Table: Paired Samples Test
+,,Paired Differences,,,,,,,
+,,,,,95% Confidence Interval of the Difference,,,,
+,,Mean,Std. Deviation,Std. Error Mean,Lower,Upper,t,df,Sig. (2-tailed)
+Pair 0,A - B,-2.00,.94,.42,-3.16,-.84,-4.78,4,.01
+])
+AT_CLEANUP
+
+AT_SETUP([T-TEST /PAIRS with per-analysis missing values])
+AT_DATA([ref.sps], [dnl
+data list list /id * a * b * c * d *.
+begin data.
+1 2.0 3.0 4.0 4.0
+2 1.0 2.0 5.1 3.9
+3 2.0 4.5 5.2 3.8
+4 2.0 4.5 5.3 3.7
+56 3.0 6.0 5.9 3.6
+end data.
+
+t-test /PAIRS a c with b d (PAIRED).
+])
+AT_DATA([expout], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+id,F8.0
+a,F8.0
+b,F8.0
+c,F8.0
+d,F8.0
+
+Table: Paired Sample Statistics
+,,Mean,N,Std. Deviation,S.E. Mean
+Pair 0,a,2.00,5,.71,.32
+,b,4.00,5,1.54,.69
+Pair 1,c,5.10,5,.69,.31
+,d,3.80,5,.16,.07
+
+Table: Paired Samples Correlations
+,,N,Correlation,Sig.
+Pair 0,a & b,5,.92,.03
+Pair 1,c & d,5,-.92,.03
+
+Table: Paired Samples Test
+,,Paired Differences,,,,,,,
+,,,,,95% Confidence Interval of the Difference,,,,
+,,Mean,Std. Deviation,Std. Error Mean,Lower,Upper,t,df,Sig. (2-tailed)
+Pair 0,a - b,-2.00,.94,.42,-3.16,-.84,-4.78,4,.01
+Pair 1,c - d,1.30,.84,.37,.26,2.34,3.47,4,.03
+])
+AT_CHECK([pspp -o ref.csv ref.sps])
+AT_CHECK([cat ref.csv], [0], [expout])
+AT_DATA([missing.sps], [dnl
+data list list /id * a * b * c * d *.
+begin data.
+1 2.0 3.0 4.0 4.0
+2 1.0 2.0 5.1 3.9
+3 2.0 4.5 5.2 3.8
+4 2.0 4.5 5.3 3.7
+5 3.0 6.0 5.9 .
+6 3.0 . 5.9 3.6
+end data.
+
+
+t-test /MISSING=analysis /PAIRS a c with b d (PAIRED).
+])
+AT_CHECK([pspp -o missing.csv missing.sps])
+AT_CHECK([cat missing.csv], [0], [expout])
+AT_CLEANUP
+
+AT_SETUP([T-TEST /PAIRS with listwise missing values])
+AT_DATA([ref.sps], [dnl
+data list list /id * a * b * c * d *.
+begin data.
+1 2.0 3.0 4.0 4.0
+2 1.0 2.0 5.1 3.9
+3 2.0 4.5 5.2 3.8
+4 2.0 4.5 5.3 3.7
+5 3.0 6.0 5.9 3.6
+end data.
+
+t-test /PAIRS a b with c d (PAIRED).
+])
+AT_DATA([expout], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+id,F8.0
+a,F8.0
+b,F8.0
+c,F8.0
+d,F8.0
+
+Table: Paired Sample Statistics
+,,Mean,N,Std. Deviation,S.E. Mean
+Pair 0,a,2.00,5,.71,.32
+,c,5.10,5,.69,.31
+Pair 1,b,4.00,5,1.54,.69
+,d,3.80,5,.16,.07
+
+Table: Paired Samples Correlations
+,,N,Correlation,Sig.
+Pair 0,a & c,5,.41,.49
+Pair 1,b & d,5,-.87,.05
+
+Table: Paired Samples Test
+,,Paired Differences,,,,,,,
+,,,,,95% Confidence Interval of the Difference,,,,
+,,Mean,Std. Deviation,Std. Error Mean,Lower,Upper,t,df,Sig. (2-tailed)
+Pair 0,a - c,-3.10,.76,.34,-4.04,-2.16,-9.14,4,.00
+Pair 1,b - d,.20,1.68,.75,-1.89,2.29,.27,4,.80
+])
+AT_CHECK([pspp -o ref.csv ref.sps])
+AT_CHECK([cat ref.csv], [0], [expout])
+AT_DATA([missing.sps], [dnl
+data list list /id * a * b * c * d *.
+begin data.
+1 2.0 3.0 4.0 4.0
+2 1.0 2.0 5.1 3.9
+3 2.0 4.5 5.2 3.8
+4 2.0 4.5 5.3 3.7
+5 3.0 6.0 5.9 3.6
+6 3.0 6.0 5.9 .
+end data.
+
+
+t-test /MISSING=listwise /PAIRS a b with c d (PAIRED).
+])
+AT_CHECK([pspp -o missing.csv missing.sps])
+AT_CHECK([cat missing.csv], [0], [expout])
+AT_CLEANUP
+
+dnl Tests for a bug in the paired samples T test.
+dnl Thanks to Mike Griffiths for reporting this problem.
+AT_SETUP([T-TEST /PAIRS bug])
+AT_DATA([t-test.sps], [dnl
+set format f8.3.
+data list list /A * B *.
+begin data.
+11 2
+1 1
+1 1
+end data.
+
+t-test pairs = a with b (paired).
+])
+AT_CHECK([pspp -o pspp.csv t-test.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+A,F8.0
+B,F8.0
+
+Table: Paired Sample Statistics
+,,Mean,N,Std. Deviation,S.E. Mean
+Pair 0,A,4.333,3,5.774,3.333
+,B,1.333,3,.577,.333
+
+Table: Paired Samples Correlations
+,,N,Correlation,Sig.
+Pair 0,A & B,3,1.000,.000
+
+Table: Paired Samples Test
+,,Paired Differences,,,,,,,
+,,,,,95% Confidence Interval of the Difference,,,,
+,,Mean,Std. Deviation,Std. Error Mean,Lower,Upper,t,df,Sig. (2-tailed)
+Pair 0,A - B,3.000,5.196,3.000,-9.908,15.908,1.000,2,.423
+])
+AT_CLEANUP
+
+AT_SETUP([T-TEST /GROUPS])
+AT_DATA([t-test.sps], [dnl
+data list list /ID * INDEP * DEP1 * DEP2 *.
+begin data.
+1 1.1 1 3
+2 1.1 2 4
+3 1.1 2 4
+4 1.1 2 4
+5 1.1 3 5
+6 2.1 3 1
+7 2.1 4 2
+8 2.1 4 2
+9 2.1 4 2
+10 2.1 5 3
+11 3.1 2 2
+end data.
+
+* Note that the last case should be IGNORED since it doesn't have a
+ dependent variable of either 1.1 or 2.1.
+
+t-test /GROUPS=indep(1.1,2.1) /var=dep1 dep2.
+])
+AT_CHECK([pspp -o pspp.csv t-test.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+ID,F8.0
+INDEP,F8.0
+DEP1,F8.0
+DEP2,F8.0
+
+Table: Group Statistics
+,INDEP,N,Mean,Std. Deviation,S.E. Mean
+DEP1,1.1,5,2.00,.71,.32
+,2.1,5,4.00,.71,.32
+DEP2,1.1,5,4.00,.71,.32
+,2.1,5,2.00,.71,.32
+
+Table: Independent Samples Test
+,,Levene's Test for Equality of Variances,,t-test for Equality of Means,,,,,,
+,,,,,,,,,95% Confidence Interval of the Difference,
+,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,Lower,Upper
+DEP1,Equal variances assumed,.00,1.00,-4.47,8.00,.00,-2.00,.45,-3.03,-.97
+,Equal variances not assumed,,,-4.47,8.00,.00,-2.00,.45,-3.03,-.97
+DEP2,Equal variances assumed,.00,1.00,4.47,8.00,.00,2.00,.45,.97,3.03
+,Equal variances not assumed,,,4.47,8.00,.00,2.00,.45,.97,3.03
+])
+AT_CLEANUP
+
+AT_SETUP([T-TEST /GROUPS with one value for independent variable])
+AT_DATA([t-test.sps], [dnl
+data list list /INDEP * DEP *.
+begin data.
+ 1 6
+ 1 6
+ 1 7
+ 1 6
+ 1 13
+ 1 4
+ 1 7
+ 1 9
+ 1 7
+ 1 12
+ 1 11
+ 2 11
+ 2 9
+ 2 8
+ 2 4
+ 2 16
+ 2 9
+ 2 9
+ 2 5
+ 2 4
+ 2 10
+ 2 14
+end data.
+t-test /groups=indep(1.514) /var=dep.
+])
+AT_CHECK([pspp -o pspp.csv t-test.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+INDEP,F8.0
+DEP,F8.0
+
+Table: Group Statistics
+,INDEP,N,Mean,Std. Deviation,S.E. Mean
+DEP,>=1.514,11,9.00,3.82,1.15
+,<1.514,11,8.00,2.86,.86
+
+Table: Independent Samples Test
+,,Levene's Test for Equality of Variances,,t-test for Equality of Means,,,,,,
+,,,,,,,,,95% Confidence Interval of the Difference,
+,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,Lower,Upper
+DEP,Equal variances assumed,.17,.68,-.69,20.00,.50,-1.00,1.44,-4.00,2.00
+,Equal variances not assumed,,,-.69,18.54,.50,-1.00,1.44,-4.02,2.02
+])
+AT_CLEANUP
+
+AT_SETUP([T-TEST /GROUPS with per-analysis missing values])
+AT_DATA([ref.sps], [dnl
+data list list /id * indep * dep1 * dep2 *.
+begin data.
+1 1.0 3.5 6
+2 1.0 2.0 5
+3 1.0 2.0 4
+4 2.0 3.5 3
+56 2.0 3.0 1
+end data.
+
+t-test /group=indep /var=dep1, dep2.
+])
+AT_DATA([expout], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+id,F8.0
+indep,F8.0
+dep1,F8.0
+dep2,F8.0
+
+Table: Group Statistics
+,indep,N,Mean,Std. Deviation,S.E. Mean
+dep1,1,3,2.50,.87,.50
+,2,2,3.25,.35,.25
+dep2,1,3,5.00,1.00,.58
+,2,2,2.00,1.41,1.00
+
+Table: Independent Samples Test
+,,Levene's Test for Equality of Variances,,t-test for Equality of Means,,,,,,
+,,,,,,,,,95% Confidence Interval of the Difference,
+,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,Lower,Upper
+dep1,Equal variances assumed,3.75,.15,-1.12,3.00,.35,-.75,.56,-2.53,1.03
+,Equal variances not assumed,,,-1.34,2.78,.28,-.75,.56,-2.61,1.11
+dep2,Equal variances assumed,.60,.50,2.85,3.00,.07,3.00,1.15,-.67,6.67
+,Equal variances not assumed,,,2.60,1.68,.14,3.00,1.15,-2.98,8.98
+])
+AT_CHECK([pspp -o ref.csv ref.sps])
+AT_CHECK([cat ref.csv], [0], [expout])
+AT_DATA([missing.sps], [dnl
+data list list /id * indep * dep1 * dep2.
+begin data.
+1 1.0 3.5 6
+2 1.0 2.0 5
+3 1.0 2.0 4
+4 2.0 3.5 3
+5 2.0 3.0 .
+6 2.0 . 1
+7 . 3.1 5
+end data.
+
+* Note that if the independent variable is missing, then it's implicitly
+* listwise missing.
+
+t-test /missing=analysis /group=indep /var=dep1 dep2.
+])
+AT_CHECK([pspp -o missing.csv missing.sps])
+AT_CHECK([cat missing.csv], [0], [expout])
+AT_CLEANUP
+
+AT_SETUP([T-TEST /GROUPS with listwise missing values])
+AT_DATA([ref.sps], [dnl
+data list list /id * indep * dep1 * dep2.
+begin data.
+1 1.0 3.5 6
+2 1.0 2.0 5
+3 1.0 2.0 4
+4 2.0 3.5 3
+5 2.0 3.0 2
+6 2.0 4.0 1
+end data.
+
+t-test /group=indep /var=dep1 dep2.
+])
+AT_DATA([expout], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+id,F8.0
+indep,F8.0
+dep1,F8.0
+dep2,F8.0
+
+Table: Group Statistics
+,indep,N,Mean,Std. Deviation,S.E. Mean
+dep1,1,3,2.50,.87,.50
+,2,3,3.50,.50,.29
+dep2,1,3,5.00,1.00,.58
+,2,3,2.00,1.00,.58
+
+Table: Independent Samples Test
+,,Levene's Test for Equality of Variances,,t-test for Equality of Means,,,,,,
+,,,,,,,,,95% Confidence Interval of the Difference,
+,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,Lower,Upper
+dep1,Equal variances assumed,2.00,.23,-1.73,4.00,.16,-1.00,.58,-2.60,.60
+,Equal variances not assumed,,,-1.73,3.20,.18,-1.00,.58,-2.77,.77
+dep2,Equal variances assumed,.00,1.00,3.67,4.00,.02,3.00,.82,.73,5.27
+,Equal variances not assumed,,,3.67,4.00,.02,3.00,.82,.73,5.27
+])
+AT_CHECK([pspp -o ref.csv ref.sps])
+AT_CHECK([cat ref.csv], [0], [expout])
+AT_DATA([missing.sps], [dnl
+data list list /id * indep * dep1 * dep2 *.
+begin data.
+1 1.0 3.5 6
+2 1.0 2.0 5
+3 1.0 2.0 4
+4 2.0 3.5 3
+5 2.0 3.0 2
+6 2.0 4.0 1
+7 2.0 . 0
+end data.
+
+t-test /missing=listwise,exclude /group=indep /var=dep1, dep2.
+])
+AT_CHECK([pspp -o missing.csv missing.sps])
+AT_CHECK([cat missing.csv], [0], [expout])
+AT_CLEANUP
+
+AT_SETUP([T-TEST /TESTVAL])
+AT_DATA([t-test.sps], [dnl
+data list list /ID * ABC *.
+begin data.
+1 3.5
+2 2.0
+3 2.0
+4 3.5
+5 3.0
+6 4.0
+end data.
+
+t-test /testval=2.0 /var=abc.
+])
+AT_CHECK([pspp -o pspp.csv t-test.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+ID,F8.0
+ABC,F8.0
+
+Table: One-Sample Statistics
+,N,Mean,Std. Deviation,S.E. Mean
+ABC,6,3.00,.84,.34
+
+Table: One-Sample Test
+,Test Value = 2.000000,,,,,
+,,,,,95% Confidence Interval of the Difference,
+,t,df,Sig. (2-tailed),Mean Difference,Lower,Upper
+ABC,2.93,5,.03,1.00,.12,1.88
+])
+AT_CLEANUP
+
+AT_SETUP([T-TEST /TESTVAL with per-analysis missing values])
+AT_DATA([ref.sps], [dnl
+data list list /id * x1 * x2.
+begin data.
+1 3.5 34
+2 2.0 10
+3 2.0 23
+4 3.5 98
+5 3.0 23
+67 4.0 8
+end data.
+
+t-test /testval=3.0 /var=x1 x2.
+])
+AT_DATA([expout], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+id,F8.0
+x1,F8.0
+x2,F8.0
+
+Table: One-Sample Statistics
+,N,Mean,Std. Deviation,S.E. Mean
+x1,6,3.00,.84,.34
+x2,6,32.67,33.40,13.64
+
+Table: One-Sample Test
+,Test Value = 3.000000,,,,,
+,,,,,95% Confidence Interval of the Difference,
+,t,df,Sig. (2-tailed),Mean Difference,Lower,Upper
+x1,.00,5,1.00,.00,-.88,.88
+x2,2.18,5,.08,29.67,-5.39,64.72
+])
+AT_CHECK([pspp -o ref.csv ref.sps])
+AT_CHECK([cat ref.csv], [0], [expout])
+AT_DATA([missing.sps], [dnl
+data list list /id * x1 * x2.
+begin data.
+1 3.5 34
+2 2.0 10
+3 2.0 23
+4 3.5 98
+5 3.0 23
+6 4.0 .
+7 . 8
+end data.
+
+t-test /missing=analysis /testval=3.0 /var=x1 x2.
+])
+AT_CHECK([pspp -o missing.csv missing.sps])
+AT_CHECK([cat missing.csv], [0], [expout])
+AT_CLEANUP
+
+AT_SETUP([T-TEST /TESTVAL with listwise missing values])
+AT_DATA([ref.sps], [dnl
+data list list /id * x1 * x2.
+begin data.
+1 3.5 34
+2 2.0 10
+3 2.0 23
+4 3.5 98
+5 3.0 23
+end data.
+
+t-test /testval=3.0 /var=x1 x2.
+])
+AT_DATA([expout], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+id,F8.0
+x1,F8.0
+x2,F8.0
+
+Table: One-Sample Statistics
+,N,Mean,Std. Deviation,S.E. Mean
+x1,5,2.80,.76,.34
+x2,5,37.60,34.82,15.57
+
+Table: One-Sample Test
+,Test Value = 3.000000,,,,,
+,,,,,95% Confidence Interval of the Difference,
+,t,df,Sig. (2-tailed),Mean Difference,Lower,Upper
+x1,-.59,4,.59,-.20,-1.14,.74
+x2,2.22,4,.09,34.60,-8.63,77.83
+])
+AT_CHECK([pspp -o ref.csv ref.sps])
+AT_CHECK([cat ref.csv], [0], [expout])
+AT_DATA([missing.sps], [dnl
+data list list /id * x1 * x2.
+begin data.
+1 3.5 34
+2 2.0 10
+3 2.0 23
+4 3.5 98
+5 3.0 23
+6 4.0 99
+end data.
+
+MISSING VALUES x2(99).
+
+t-test /missing=listwise /testval=3.0 /var=x1 x2.
+])
+AT_CHECK([pspp -o missing.csv missing.sps])
+AT_CHECK([cat missing.csv], [0], [expout])
+AT_CLEANUP
+
+AT_SETUP([T-TEST wih TEMPORARY transformation])
+AT_DATA([ref.sps], [dnl
+data list list /ind * x * .
+begin data.
+1 3.5
+1 2.0
+1 2.0
+2 3.5
+2 3.0
+2 4.0
+end data.
+
+t-test /groups=ind(1,2) /var x.
+])
+AT_DATA([expout], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+ind,F8.0
+x,F8.0
+
+Table: Group Statistics
+,ind,N,Mean,Std. Deviation,S.E. Mean
+x,1,3,2.50,.87,.50
+,2,3,3.50,.50,.29
+
+Table: Independent Samples Test
+,,Levene's Test for Equality of Variances,,t-test for Equality of Means,,,,,,
+,,,,,,,,,95% Confidence Interval of the Difference,
+,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,Lower,Upper
+x,Equal variances assumed,2.00,.23,-1.73,4.00,.16,-1.00,.58,-2.60,.60
+,Equal variances not assumed,,,-1.73,3.20,.18,-1.00,.58,-2.77,.77
+])
+AT_CHECK([pspp -o ref.csv ref.sps])
+AT_CHECK([cat ref.csv], [0], [expout])
+AT_DATA([temporary.sps], [dnl
+data list list /ind * x * .
+begin data.
+1 3.5
+1 2.0
+1 2.0
+2 3.5
+2 3.0
+2 4.0
+2 9.0
+end data.
+
+TEMPORARY.
+SELECT IF x < 7.
+
+t-test /groups=ind(1,2) /var x.
+])
+AT_CHECK([pspp -o temporary.csv temporary.sps])
+AT_CHECK([cat temporary.csv], [0], [expout])
+AT_CLEANUP
+
+dnl Tests for a bug which caused T-TEST to crash when given invalid syntax.
+AT_SETUP([T-TEST invalid syntax])
+AT_DATA([t-test.sps], [dnl
+DATA LIST LIST NOTABLE /id * a * .
+BEGIN DATA.
+1 3.5
+2 2.0
+3 2.0
+4 3.5
+5 3.0
+6 4.0
+END DATA.
+
+T-TEST /testval=2.0 .
+T-TEST /groups=id(3) .
+])
+AT_CHECK([pspp -O format=csv t-test.sps], [1], [dnl
+t-test.sps:11: error: T-TEST: One or more VARIABLES must be specified.
+
+t-test.sps:12: error: T-TEST: One or more VARIABLES must be specified.
+])
+AT_CLEANUP
+
+dnl Tests for bug #11227, exhibited when the independent variable is a string.
+AT_SETUP([T-TEST string variable])
+AT_DATA([t-test.sps], [dnl
+data list list /ID * INDEP (a1) DEP1 * DEP2 *.
+begin data.
+1 'a' 1 3
+2 'a' 2 4
+3 'a' 2 4
+4 'a' 2 4
+5 'a' 3 5
+6 'b' 3 1
+7 'b' 4 2
+8 'b' 4 2
+9 'b' 4 2
+10 'b' 5 3
+11 'c' 2 2
+end data.
+
+
+t-test /GROUPS=indep('a','b') /var=dep1 dep2.
+])
+AT_CHECK([pspp -o pspp.csv t-test.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+ID,F8.0
+INDEP,A1
+DEP1,F8.0
+DEP2,F8.0
+
+Table: Group Statistics
+,INDEP,N,Mean,Std. Deviation,S.E. Mean
+DEP1,a,5,2.00,.71,.32
+,b,5,4.00,.71,.32
+DEP2,a,5,4.00,.71,.32
+,b,5,2.00,.71,.32
+
+Table: Independent Samples Test
+,,Levene's Test for Equality of Variances,,t-test for Equality of Means,,,,,,
+,,,,,,,,,95% Confidence Interval of the Difference,
+,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,Lower,Upper
+DEP1,Equal variances assumed,.00,1.00,-4.47,8.00,.00,-2.00,.45,-3.03,-.97
+,Equal variances not assumed,,,-4.47,8.00,.00,-2.00,.45,-3.03,-.97
+DEP2,Equal variances assumed,.00,1.00,4.47,8.00,.00,2.00,.45,.97,3.03
+,Equal variances not assumed,,,4.47,8.00,.00,2.00,.45,.97,3.03
+])
+AT_CLEANUP
+
+AT_SETUP([T-TEST string variable, only one value])
+AT_DATA([t-test.sps], [dnl
+data list list notable /id * indep (a1) dep1 * dep2 *.
+begin data.
+1 'a' 1 3
+2 'a' 2 4
+3 'a' 2 4
+4 'a' 2 4
+5 'a' 3 5
+6 'b' 3 1
+7 'b' 4 2
+8 'b' 4 2
+9 'b' 4 2
+10 'b' 5 3
+11 'c' 2 2
+end data.
+
+
+t-test /GROUPS=indep('a') /var=dep1 dep2.
+])
+AT_CHECK([pspp -O format=csv t-test.sps], [1], [dnl
+"t-test.sps:17: error: T-TEST: When applying GROUPS to a string variable, two values must be specified."
+])
+AT_CLEANUP
+
+dnl Tests for a bug which didn't properly compare string values.
+AT_SETUP([T-TEST string variable comparison bug])
+AT_DATA([t-test.sps], [dnl
+data list list /x * gv (a8).
+begin data.
+3 One
+2 One
+3 One
+2 One
+3 One
+4 Two
+3.5 Two
+3.0 Two
+end data.
+
+t-test group=gv('One', 'Two')
+ /variables = x.
+])
+AT_CHECK([pspp -o pspp.csv t-test.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+x,F8.0
+gv,A8
+
+Table: Group Statistics
+,gv,N,Mean,Std. Deviation,S.E. Mean
+x,One ,5,2.60,.55,.24
+,Two ,3,3.50,.50,.29
+
+Table: Independent Samples Test
+,,Levene's Test for Equality of Variances,,t-test for Equality of Means,,,,,,
+,,,,,,,,,95% Confidence Interval of the Difference,
+,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,Lower,Upper
+x,Equal variances assumed,1.13,.33,-2.32,6.00,.06,-.90,.38,-1.83,.03
+,Equal variances not assumed,,,-2.38,4.70,.07,-.90,.38,-1.89,.09
+])
+AT_CLEANUP
+
--- /dev/null
+AT_BANNER([USE])
+
+AT_SETUP([USE ALL])
+AT_DATA([use.sps], [dnl
+data list notable /X 1-2.
+begin data.
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+end data.
+use all.
+list.
+])
+AT_CHECK([pspp -o pspp.csv use.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+X
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([INSERT])
+
+dnl Create a file "batch.sps" that is valid syntax only in batch mode.
+m4_define([CREATE_BATCH_SPS],
+ [AT_DATA([batch.sps], [dnl
+input program.
++ loop #i = 1 to 5.
++ compute z = #i
++ end case.
++ end loop
+end file.
+end input program.
+])])
+
+AT_SETUP([INSERT SYNTAX=INTERACTIVE])
+CREATE_BATCH_SPS
+AT_DATA([insert.sps], [dnl
+INSERT
+ FILE='batch.sps'
+ SYNTAX=INTERACTIVE.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv insert.sps], [1], [dnl
+batch.sps:2: error: INPUT PROGRAM: Syntax error at `+': expecting command name.
+batch.sps:3: error: INPUT PROGRAM: Syntax error at `+': expecting command name.
+batch.sps:5: error: INPUT PROGRAM: Syntax error at `+': expecting command name.
+batch.sps:7: error: Input program did not create any variables.
+insert.sps:4: error: LIST: LIST is allowed only after the active file has been defined.
+])
+AT_CLEANUP
+
+AT_SETUP([INSERT SYNTAX=BATCH])
+CREATE_BATCH_SPS
+AT_DATA([insert.sps], [dnl
+INSERT
+ FILE='batch.sps'
+ SYNTAX=BATCH.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv insert.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+z
+1.00
+2.00
+3.00
+4.00
+5.00
+])
+AT_CLEANUP
+
+AT_SETUP([INSERT CD=NO])
+AT_DATA([insert.sps], [INSERT FILE='Dir1/foo.sps'.
+LIST.
+])
+mkdir Dir1
+AT_DATA([Dir1/foo.sps], [INSERT FILE='bar.sps' CD=NO.
+])
+AT_DATA([Dir1/bar.sps],
+ [DATA LIST LIST /x *.
+BEGIN DATA.
+1
+2
+3
+END DATA.
+])
+AT_CHECK([pspp -o pspp.csv insert.sps], [1], [dnl
+Dir1/foo.sps:1: error: INSERT: Can't find `bar.sps' in include file search path.
+insert.sps:2: error: LIST: LIST is allowed only after the active file has been defined.
+])
+AT_CLEANUP
+
+AT_SETUP([INSERT CD=YES])
+AT_DATA([insert.sps], [INSERT FILE='Dir1/foo.sps' CD=YES.
+LIST.
+])
+mkdir Dir1
+AT_DATA([Dir1/foo.sps], [INSERT FILE='bar.sps'.
+])
+AT_DATA([Dir1/bar.sps],
+ [DATA LIST LIST /x *.
+BEGIN DATA.
+1
+2
+3
+END DATA.
+])
+AT_CHECK([pspp -o pspp.csv insert.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+x,F8.0
+
+Table: Data List
+x
+1.00
+2.00
+3.00
+])
+AT_CLEANUP
+
+m4_define([CREATE_ERROR_SPS],
+ [AT_DATA([error.sps], [dnl
+DATA LIST NOTABLE LIST /x *.
+BEGIN DATA.
+1
+2
+3
+END DATA.
+
+* The following line is erroneous
+
+DISPLAY AKSDJ.
+])])
+
+AT_SETUP([INSERT ERROR=STOP])
+CREATE_ERROR_SPS
+AT_DATA([insert.sps], [INSERT FILE='error.sps' ERROR=STOP.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv insert.sps], [1], [dnl
+error.sps:10: error: DISPLAY: AKSDJ is not a variable name.
+warning: Error encountered while ERROR=STOP is effective.
+error.sps:10: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
+])
+AT_CLEANUP
+
+AT_SETUP([INSERT ERROR=CONTINUE])
+CREATE_ERROR_SPS
+AT_DATA([insert.sps], [INSERT FILE='error.sps' ERROR=CONTINUE.
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv insert.sps], [1], [dnl
+error.sps:10: error: DISPLAY: AKSDJ is not a variable name.
+])
+AT_CHECK([cat pspp.csv], [0], [dnl
+error.sps:10: error: DISPLAY: AKSDJ is not a variable name.
+
+Table: Data List
+x
+1.00
+2.00
+3.00
+])
+AT_CLEANUP
+
+dnl Test for regression against bug #24569 in which PSPP crashed
+dnl upon attempt to insert a nonexistent file.
+AT_SETUP([INSERT nonexistent file])
+AT_DATA([insert.sps], [dnl
+INSERT
+ FILE='nonexistent'
+ ERROR=CONTINUE.
+ .
+
+LIST.
+])
+AT_CHECK([pspp -O format=csv insert.sps], [1], [dnl
+insert.sps:3: error: INSERT: Can't find `nonexistent' in include file search path.
+
+insert.sps:6: error: LIST: LIST is allowed only after the active file has been defined.
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([PERMISSIONS])
+
+AT_SETUP([PERMISSIONS])
+AT_DATA([foobar], [Hello
+])
+
+chmod 666 foobar
+AT_CHECK([ls -l foobar], [0], [stdout])
+AT_CHECK([sed 's/^\(..........\).*/\1/' stdout], [0], [-rw-rw-rw-
+])
+
+AT_DATA([permissions.sps], [PERMISSIONS /FILE='foobar' PERMISSIONS=READONLY.
+])
+AT_CHECK([pspp -O format=csv permissions.sps])
+AT_CHECK([ls -l foobar], [0], [stdout])
+AT_CHECK([sed 's/^\(..........\).*/\1/' stdout], [0], [-r--r--r--
+])
+
+AT_DATA([permissions.sps], [PERMISSIONS /FILE='foobar' PERMISSIONS=WRITEABLE.
+])
+AT_CHECK([pspp -O format=csv permissions.sps])
+AT_CHECK([ls -l foobar], [0], [stdout])
+AT_CHECK([sed 's/^\(..........\).*/\1/' stdout], [0], [-rw-r--r--
+])
+AT_CLEANUP
])
AT_CHECK([pspp -O format=csv set.pspp], [0], [dnl
-"set.pspp:5: warning: (column 3, F field) Field contents are not numeric."
+set.pspp:5.3: warning: Data for variable y is not valid as format F: Field contents are not numeric.
-"set.pspp:6: warning: (column 3, F field) Field contents are not numeric."
+set.pspp:6.3: warning: Data for variable y is not valid as format F: Field contents are not numeric.
-"set.pspp:7: warning: (column 1, F field) Field contents are not numeric."
+set.pspp:7.1: warning: Data for variable x is not valid as format F: Field contents are not numeric.
note: Warnings (3) exceed limit (2). Syntax processing will be halted.
])
])
AT_CLEANUP
+\f
+AT_BANNER([PRESERVE and RESTORE])
+
+AT_SETUP([PRESERVE of SET FORMAT])
+AT_DATA([set.pspp], [dnl
+SHOW FORMAT.
+PRESERVE.
+SET FORMAT F10.0.
+SHOW FORMAT
+RESTORE.
+SHOW FORMAT.
+])
+AT_CHECK([pspp -O format=csv set.pspp], [0], [dnl
+set.pspp:1: note: SHOW: FORMAT is F8.2.
+
+set.pspp:5: note: SHOW: FORMAT is F10.0.
+
+set.pspp:6: note: SHOW: FORMAT is F8.2.
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([TITLE and related commands])
+
+AT_SETUP([FILE LABEL and (ADD) DOCUMENT])
+AT_DATA([file-label.sps], [dnl
+/* Set up a dummy active file in memory.
+data list /X 1 Y 2.
+begin data.
+16
+27
+38
+49
+50
+end data.
+
+/* Add value labels for some further testing of value labels.
+value labels x y 1 'first label' 2 'second label' 3 'third label'.
+add value labels x 1 'first label mark two'.
+
+/* Add a file label and a few documents.
+file label This is a test file label.
+document First line of a document
+Second line of a document
+The last line should end with a period: .
+
+
+/* Display the documents.
+display documents.
+display file label.
+
+ADD DOCUMENT 'Line one' 'Line two'.
+
+/* Save the active file then get it and display the documents again.
+save /OUTFILE='foo.save'.
+get /FILE='foo.save'.
+display documents.
+display file label.
+
+/* There is an interesting interaction that occurs if the 'execute'
+/* command below. What happens is that an error message is output
+/* at the next 'save' command that 'foo.save' is already open for
+/* input. This is because the 'get' hasn't been executed yet and
+/* therefore PSPP would be reading from and writing to the same
+/* file at once, which is obviously a Bad Thing. But 'execute'
+/* here clears up that potential problem.
+execute.
+
+/* Add another (shorter) document and try again.
+document There should be another document now.
+display documents.
+
+/* Save and get.
+save /OUTFILE='foo.save'.
+get /FILE='foo.save'.
+display documents.
+display file label.
+
+/* Done.
+])
+AT_CHECK([pspp -o pspp.csv file-label.sps])
+dnl Filter out the dates/times
+AT_CHECK([[sed 's/(Entered [^)]*)/(Entered <date>)/' pspp.csv]], [0], [dnl
+Table: Reading 1 record from INLINE.
+Variable,Record,Columns,Format
+X,1,1- 1,F1.0
+Y,1,2- 2,F1.0
+
+Documents in the active file:
+
+document First line of a document
+
+Second line of a document
+
+The last line should end with a period: .
+
+(Entered <date>)
+
+File label:
+
+This is a test file label
+
+Documents in the active file:
+
+document First line of a document
+
+Second line of a document
+
+The last line should end with a period: .
+
+(Entered <date>)
+
+Line one
+
+Line two
+
+(Entered <date>)
+
+File label:
+
+This is a test file label
+
+Documents in the active file:
+
+document First line of a document
+
+Second line of a document
+
+The last line should end with a period: .
+
+(Entered <date>)
+
+Line one
+
+Line two
+
+(Entered <date>)
+
+document There should be another document now.
+
+(Entered <date>)
+
+Documents in the active file:
+
+document First line of a document
+
+Second line of a document
+
+The last line should end with a period: .
+
+(Entered <date>)
+
+Line one
+
+Line two
+
+(Entered <date>)
+
+document There should be another document now.
+
+(Entered <date>)
+
+File label:
+
+This is a test file label
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([SAMPLE])
+
+AT_SETUP([SAMPLE])
+AT_DATA([sample.sps], [dnl
+set seed=3
+
+data list notable /A 1-2.
+begin data.
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+end data.
+sample .5.
+list.
+])
+AT_CHECK([pspp -o pspp.csv sample.sps])
+AT_CAPTURE_FILE([pspp.csv])
+AT_CHECK(
+ [n=0
+ while read line; do
+ n=`expr $n + 1`
+ case $line in # (
+ "Table: Data List" | A | [[0-9]] | 10) ;; # (
+ *) echo $line; exit 1;
+ esac
+ done < pspp.csv
+ if test $n -ge 11; then exit 1; fi
+ ])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([FILTER])
+
+AT_SETUP([FILTER])
+AT_DATA([filter.sps], [dnl
+data list notable /X 1-2.
+begin data.
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+end data.
+compute FILTER_$ = mod(x,2).
+
+filter by filter_$.
+list.
+filter off.
+list.
+compute filter_$ = 1 - filter_$.
+filter by filter_$.
+list.
+])
+AT_CHECK([pspp -o pspp.csv filter.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+X,FILTER_$
+1,1.00
+3,1.00
+5,1.00
+7,1.00
+9,1.00
+
+Table: Data List
+X,FILTER_$
+1,1.00
+2,.00
+3,1.00
+4,.00
+5,1.00
+6,.00
+7,1.00
+8,.00
+9,1.00
+10,.00
+
+Table: Data List
+X,FILTER_$
+2,1.00
+4,1.00
+6,1.00
+8,1.00
+10,1.00
+])
+AT_CLEANUP
/* PSPP - a program for statistical analysis.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <libpspp/compiler.h>
\f
-/* Currently running test. */
-static const char *test_name;
-
/* Exit with a failure code.
(Place a breakpoint on this function while debugging.) */
static void
{
if (!ok)
{
- printf ("Check failed in %s test at %s, line %d\n",
- test_name, __FILE__, line);
+ fprintf (stderr, "%s:%d: check failed\n", __FILE__, line);
check_die ();
}
}
\f
/* Main program. */
-/* Runs TEST_FUNCTION and prints a message about NAME. */
-static void
-run_test (void (*test_function) (void), const char *name)
-{
- test_name = name;
- putchar ('.');
- fflush (stdout);
- test_function ();
-}
+struct test
+ {
+ const char *name;
+ const char *description;
+ void (*function) (void);
+ };
+
+static const struct test tests[] =
+ {
+ {
+ "insert-any-remove-any",
+ "insert any order, delete any order",
+ test_insert_any_remove_any
+ },
+ {
+ "insert-any-remove-same",
+ "insert any order, delete same order",
+ test_insert_any_remove_same
+ },
+ {
+ "insert-any-remove-reverse",
+ "insert any order, delete reverse order",
+ test_insert_any_remove_reverse
+ },
+ {
+ "random-sequence",
+ "insert and delete in random sequence",
+ test_random_sequence
+ },
+ {
+ "insert-ordered",
+ "insert in ascending order",
+ test_insert_ordered
+ },
+ {
+ "moved",
+ "move elements around in memory",
+ test_moved
+ },
+ {
+ "changed",
+ "change key data in nodes",
+ test_changed
+ }
+ };
+
+enum { N_TESTS = sizeof tests / sizeof *tests };
int
-main (void)
+main (int argc, char *argv[])
{
- run_test (test_insert_any_remove_any,
- "insert any order, delete any order");
- run_test (test_insert_any_remove_same,
- "insert any order, delete same order");
- run_test (test_insert_any_remove_reverse,
- "insert any order, delete reverse order");
- run_test (test_random_sequence,
- "insert and delete in random sequence");
- run_test (test_insert_ordered,
- "insert in ascending order");
- run_test (test_moved, "move elements around in memory");
- run_test (test_changed, "change key data in nodes");
- putchar ('\n');
-
- return 0;
+ int i;
+
+ if (argc != 2)
+ {
+ fprintf (stderr, "exactly one argument required; use --help for help\n");
+ return EXIT_FAILURE;
+ }
+ else if (!strcmp (argv[1], "--help"))
+ {
+ printf ("%s: test augmented binary tree\n"
+ "usage: %s TEST-NAME\n"
+ "where TEST-NAME is one of the following:\n",
+ argv[0], argv[0]);
+ for (i = 0; i < N_TESTS; i++)
+ printf (" %s\n %s\n", tests[i].name, tests[i].description);
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < N_TESTS; i++)
+ if (!strcmp (argv[1], tests[i].name))
+ {
+ tests[i].function ();
+ return 0;
+ }
+
+ fprintf (stderr, "unknown test %s; use --help for help\n", argv[1]);
+ return EXIT_FAILURE;
+ }
}
--- /dev/null
+AT_BANNER([Augmented binary tree (ABT) library])
+
+m4_define([CHECK_ABT],
+ [AT_SETUP([ABT -- $1])
+ AT_CHECK([abt-test $1])
+ AT_CLEANUP])
+
+CHECK_ABT([insert-any-remove-any])
+CHECK_ABT([insert-any-remove-same])
+CHECK_ABT([insert-any-remove-reverse])
+CHECK_ABT([random-sequence])
+CHECK_ABT([insert-ordered])
+CHECK_ABT([moved])
+CHECK_ABT([changed])
/* PSPP - a program for statistical analysis.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <libpspp/compiler.h>
\f
-/* Currently running test. */
-static const char *test_name;
-
/* Exit with a failure code.
(Place a breakpoint on this function while debugging.) */
static void
{
if (!ok)
{
- printf ("Check failed in %s test at %s, line %d\n",
- test_name, __FILE__, line);
+ fprintf (stderr, "%s:%d: check failed\n", __FILE__, line);
check_die ();
}
}
\f
/* Main program. */
-/* Runs TEST_FUNCTION and prints a message about NAME. */
-static void
-run_test (void (*test_function) (void), const char *name)
-{
- test_name = name;
- putchar ('.');
- fflush (stdout);
- test_function ();
-}
+struct test
+ {
+ const char *name;
+ const char *description;
+ void (*function) (void);
+ };
+
+static const struct test tests[] =
+ {
+ {
+ "insert-any-remove-any",
+ "insert any order, delete any order",
+ test_insert_any_remove_any
+ },
+ {
+ "insert-any-remove-same",
+ "insert any order, delete same order",
+ test_insert_any_remove_same
+ },
+ {
+ "insert-any-remove-reverse",
+ "insert any order, delete reverse order",
+ test_insert_any_remove_reverse
+ },
+ {
+ "random-sequence",
+ "insert and delete in random sequence",
+ test_random_sequence
+ },
+ {
+ "insert-ordered",
+ "insert in ascending order",
+ test_insert_ordered
+ },
+ {
+ "find-ge-le",
+ "find_ge and find_le",
+ test_find_ge_le
+ },
+ {
+ "moved",
+ "move elements around in memory",
+ test_moved
+ },
+ {
+ "changed",
+ "change key data in nodes",
+ test_changed
+ }
+ };
+
+enum { N_TESTS = sizeof tests / sizeof *tests };
int
-main (void)
+main (int argc, char *argv[])
{
- run_test (test_insert_any_remove_any,
- "insert any order, delete any order");
- run_test (test_insert_any_remove_same,
- "insert any order, delete same order");
- run_test (test_insert_any_remove_reverse,
- "insert any order, delete reverse order");
- run_test (test_random_sequence,
- "insert and delete in random sequence");
- run_test (test_insert_ordered,
- "insert in ascending order");
- run_test (test_find_ge_le, "find_ge and find_le");
- run_test (test_moved, "move elements around in memory");
- run_test (test_changed, "change key data in nodes");
- putchar ('\n');
-
- return 0;
+ int i;
+
+ if (argc != 2)
+ {
+ fprintf (stderr, "exactly one argument required; use --help for help\n");
+ return EXIT_FAILURE;
+ }
+ else if (!strcmp (argv[1], "--help"))
+ {
+ printf ("%s: test balanced tree\n"
+ "usage: %s TEST-NAME\n"
+ "where TEST-NAME is one of the following:\n",
+ argv[0], argv[0]);
+ for (i = 0; i < N_TESTS; i++)
+ printf (" %s\n %s\n", tests[i].name, tests[i].description);
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < N_TESTS; i++)
+ if (!strcmp (argv[1], tests[i].name))
+ {
+ tests[i].function ();
+ return 0;
+ }
+
+ fprintf (stderr, "unknown test %s; use --help for help\n", argv[1]);
+ return EXIT_FAILURE;
+ }
}
--- /dev/null
+AT_BANNER([Balanced tree (BT) library])
+
+m4_define([CHECK_BT],
+ [AT_SETUP([BT -- $1])
+ AT_CHECK([bt-test $1])
+ AT_CLEANUP])
+
+CHECK_BT([insert-any-remove-any])
+CHECK_BT([insert-any-remove-same])
+CHECK_BT([insert-any-remove-reverse])
+CHECK_BT([random-sequence])
+CHECK_BT([insert-ordered])
+CHECK_BT([find-ge-le])
+CHECK_BT([moved])
+CHECK_BT([changed])
--- /dev/null
+AT_BANNER([floating point formats])
+
+AT_SETUP([floating point format conversions])
+AT_DATA([float-format.txt], [dnl
+# Each of the tests below checks that conversion between
+# floating-point formats works correctly. Comparisons that use ==
+# require that conversion from any format on the line to any other
+# format on the line work losslessly. Comparisons that use => only
+# check that conversions work losslessly in the given direction.
+
+# Key to format names:
+# isl: IEEE single-precision, little endian
+# isb: IEEE single-precision, big endian
+# idl: IEEE double-precision, little endian
+# idb: IEEE double-precision, big endian
+# vf: VAX F
+# vd: VAX D
+# vg: VAX G
+# zs: Z architecture short
+# zl: Z architecture long
+# x: hexadecimal digits
+
+# IEEE special values.
+ 0 == isb(x'00000000')
+x('Infinity') == isb(x'7f800000')
+x('-Infinity') == isb(x'ff800000')
+x('NaN:') => isb(x'7f800001') # NaN requires nonzero fraction.
+x('NaN:e000000000000000') == isb(x'7ff00000') == idb(x'7ffe000000000000')
+x('NaN:5a5a5e0000000000') == isb(x'7fad2d2f') == idb(x'7ff5a5a5e0000000')
+x('NaN:975612abcdef4000') == idb(x'7ff975612abcdef4')
+x('-NaN:e000000000000000') == isb(x'fff00000') == idb(x'fffe000000000000')
+x('-NaN:5a5a5e0000000000') == isb(x'ffad2d2f') == idb(x'fff5a5a5e0000000')
+x('-NaN:975612abcdef4000') == idb(x'fff975612abcdef4')
+
+# PSPP special values.
+x('Missing') == isb(x'ff7fffff') == idb(x'ffefffffffffffff') == isl(x'ffff7fff') == idl(x'ffffffffffffefff') == vf(x'ffffffff') == vd(x'ffffffffffffffff') == vg(x'ffffffffffffffff') == zs(x'ffffffff') == zl(x'ffffffffffffffff')
+x('Lowest') == isb(x'ff7ffffe') == idb(x'ffeffffffffffffe') == isl(x'feff7fff') == idl(x'feffffffffffefff') == vf(x'fffffeff') == vd(x'fffffeffffffffff') == vg(x'fffffeffffffffff') == zs(x'fffffffe') == zl(x'fffffffffffffffe')
+x('Highest') == isb(x'7f7fffff') == idb(x'7fefffffffffffff') == isl(x'ffff7f7f') == idl(x'ffffffffffffef7f') == vf(x'ff7fffff') == vd(x'ffffffffff7fffff') == vg(x'ffffffffff7fffff') == zs(x'7fffffff') == zl(x'7fffffffffffffff')
+
+# From Wikipedia.
+0.15625 == isb(b'00111110001000000000000000000000')
+-118.625 == isb(b'11000010111011010100000000000000')
+
+# http://www.psc.edu/general/software/packages/ieee/ieee.html
+x('NaN:0400000000000000') == isb(b'01111111100000100000000000000000')
+x('-NaN:2225540000000000') == isb(b'11111111100100010001001010101010')
+2 == isb(b'01000000000000000000000000000000')
+6.5 == isb(b'01000000110100000000000000000000')
+-6.5 == isb(b'11000000110100000000000000000000')
+x('.4p-124') == isb(b'00000000100000000000000000000000')
+x('.2p-124') == isb(b'00000000010000000000000000000000')
+
+# Using converter at http://babbage.cs.qc.edu/IEEE-754/Decimal.html
+# plus Emacs 'calc' to convert decimal to hexadecimal
+x('.7b74bc6a7ef9db23p8') => isb(x'42f6e979') # 123.456
+x('.7b74bc6a7ef9db23p8') => idb(x'405edd2f1a9fbe77')
+x('.817427d2d4642004p-12') => isb(x'39017428') # .0001234567
+x('.817427d2d4642004p-12') => idb(x'3f202e84fa5a8c84')
+x('.446c3b15f9926688p168') => isb(x'7f800000') # 1e50; overflow
+x('.446c3b15f9926688p168') => idb(x'4a511b0ec57e649a')
+
+# From multiple editions of the z/Architecture Principles of Operation
+# manual.
+ 1.0 == zs(x'41100000') == isb(x'3f800000')
+ 0.5 == zs(x'40800000') == isb(x'3f000000')
+ x('.4p-4') == zs(x'3f400000') == isb(x'3c800000')
+ 0 == zs(x'00000000') == isb(x'00000000')
+ zs(x'80000000') == isb(x'80000000')
+ -15 == zs(x'c1f00000') == isb(x'c1700000')
+# x('.ffffffp252') == zs(x'7fffffff')
+ x('.3b4p8') == zs(x'423b4000')
+ x('.1p-256') == zs(x'00100000')
+ x('.4p-124') == zs(x'21400000') == isb(x'00800000')
+ x('.8p-148') == zs(x'1b800000') == isb(x'00000001')
+# x('.ffffffp128') == zs(x'60ffffff') == isb(x'7f7fffff')
+ x('.1p-256') == zs(x'00100000')
+ x('.1p-256') => isb(x'00000000') # Underflow to zero.
+ x('.ffffffp248') == zs(x'7effffff')
+ x('.ffffffp248') => isb(x'7f800000') # Overflow to +Infinity.
+
+ x('.4p-1020') => zl(x'0000000000000000') # Underflow to zero.
+ x('.4p-1020') == idb(x'0010000000000000')
+ x('.4p-1072') => zl(x'0000000000000000') # Underflow to zero.
+ x('.4p-1072') => idb(x'0000000000000001')
+x('.fffffffffffff8p1024') => zl(x'7fffffffffffffff') # Overflow to maxval.
+x('.fffffffffffff8p1024') => idb(x'7fefffffffffffff')
+ x('.1p-256') == zl(x'0010000000000000') == idb(x'2fb0000000000000')
+ x('.ffffffffffffffp248') == zl(x'7effffffffffffff')
+ x('.ffffffffffffffp248') => idb(x'4f70000000000000') # Loses precision.
+])
+AT_CHECK(
+ [sed 's/#.*//
+s/^[ ]*//
+s/[ ]*$//
+s/^\(..*\)$/DEBUG FLOAT FORMAT \1./' < float-format.txt > float-format.sps])
+AT_CHECK([pspp --testing-mode -O format=csv float-format.sps])
+AT_CLEANUP
/* PSPP - a program for statistical analysis.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "xalloc.h"
\f
-/* Currently running test. */
-static const char *test_name;
-
/* Exit with a failure code.
(Place a breakpoint on this function while debugging.) */
static void
{
if (!ok)
{
- printf ("Check failed in %s test at %s, line %d\n",
- test_name, __FILE__, line);
+ fprintf (stderr, "%s:%d: check failed\n", __FILE__, line);
check_die ();
}
}
\f
/* Main program. */
-/* Runs TEST_FUNCTION and prints a message about NAME. */
-static void
-run_test (void (*test_function) (void), const char *name)
-{
- test_name = name;
- putchar ('.');
- fflush (stdout);
- test_function ();
-}
+struct test
+ {
+ const char *name;
+ const char *description;
+ void (*function) (void);
+ };
+
+static const struct test tests[] =
+ {
+ {
+ "insert-no-dups-delete-min",
+ "insert (no dups), delete minimum values",
+ test_insert_no_dups_delete_min
+ },
+ {
+ "insert-with-dups-delete-min",
+ "insert with dups, delete minimum values",
+ test_insert_with_dups_delete_min
+ },
+ {
+ "insert-no-dups-delete-random",
+ "insert (no dups), delete in random order",
+ test_insert_no_dups_delete_random
+ },
+ {
+ "inc-dec",
+ "increase and decrease values",
+ test_inc_dec
+ },
+ {
+ "random-insert-delete",
+ "random insertions and deletions",
+ test_random_insert_delete
+ }
+ };
+
+enum { N_TESTS = sizeof tests / sizeof *tests };
int
-main (void)
+main (int argc, char *argv[])
{
- run_test (test_insert_no_dups_delete_min,
- "insert (no dups), delete minimum values");
- run_test (test_insert_with_dups_delete_min,
- "insert with dups, delete minimum values");
- run_test (test_insert_no_dups_delete_random,
- "insert (no dups), delete in random order");
- run_test (test_inc_dec, "increase and decrease values");
- run_test (test_random_insert_delete, "random insertions and deletions");
- putchar ('\n');
-
- return 0;
+ int i;
+
+ if (argc != 2)
+ {
+ fprintf (stderr, "exactly one argument required; use --help for help\n");
+ return EXIT_FAILURE;
+ }
+ else if (!strcmp (argv[1], "--help"))
+ {
+ printf ("%s: test heap library\n"
+ "usage: %s TEST-NAME\n"
+ "where TEST-NAME is one of the following:\n",
+ argv[0], argv[0]);
+ for (i = 0; i < N_TESTS; i++)
+ printf (" %s\n %s\n", tests[i].name, tests[i].description);
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < N_TESTS; i++)
+ if (!strcmp (argv[1], tests[i].name))
+ {
+ tests[i].function ();
+ return 0;
+ }
+
+ fprintf (stderr, "unknown test %s; use --help for help\n", argv[1]);
+ return EXIT_FAILURE;
+ }
}
--- /dev/null
+AT_BANNER([Heap library])
+
+m4_define([CHECK_HEAP],
+ [AT_SETUP([heap -- $1])
+ AT_CHECK([heap-test $1])
+ AT_CLEANUP])
+
+CHECK_HEAP([insert-no-dups-delete-min])
+CHECK_HEAP([insert-with-dups-delete-min])
+CHECK_HEAP([insert-no-dups-delete-random])
+CHECK_HEAP([inc-dec])
+CHECK_HEAP([random-insert-delete])
#include <libpspp/compiler.h>
\f
-/* Currently running test. */
-static const char *test_name;
-
/* Exit with a failure code.
(Place a breakpoint on this function while debugging.) */
static void
{
if (!ok)
{
- printf ("Check failed in %s test at %s, line %d\n",
- test_name, __FILE__, line);
+ fprintf (stderr, "%s:%d: check failed\n", __FILE__, line);
check_die ();
}
}
int i;
#if __GNUC__ == 4 && __GNUC_MINOR__ == 3
- return;
-#endif /* GCC 4.3 */
+ /* This tells the Autotest framework that the test was skipped. */
+ exit (77);
+#endif
hmap_init (&hmap);
elements = xnmalloc (max_elems, sizeof *elements);
int i, j;
#if __GNUC__ == 4 && __GNUC_MINOR__ == 3
- return;
-#endif /* GCC 4.3 */
+ /* This tells the Autotest framework that the test was skipped. */
+ exit (77);
+#endif
hmap_init (&hmap);
e[0] = xnmalloc (max_elems, sizeof *e[0]);
int i;
#if __GNUC__ == 4 && __GNUC_MINOR__ == 3
- return;
-#endif /* GCC 4.3 */
+ /* This tells the Autotest framework that the test was skipped. */
+ exit (77);
+#endif
hmap_init (&a);
hmap_init (&b);
int cnt;
#if __GNUC__ == 4 && __GNUC_MINOR__ == 3
- return;
-#endif /* GCC 4.3 */
+ /* This tells the Autotest framework that the test was skipped. */
+ exit (77);
+#endif
elements = xnmalloc (max_elems, sizeof *elements);
values = xnmalloc (max_elems, sizeof *values);
\f
/* Main program. */
-/* Runs TEST_FUNCTION and prints a message about NAME. */
-static void
-run_test (void (*test_function) (void), const char *name)
-{
- test_name = name;
- putchar ('.');
- fflush (stdout);
- test_function ();
-}
+struct test
+ {
+ const char *name;
+ const char *description;
+ void (*function) (void);
+ };
+
+static const struct test tests[] =
+ {
+ {
+ "insert-any-remove-any-random-hash",
+ "insert any order, delete any order (random hash)",
+ test_insert_any_remove_any_random_hash
+ },
+ {
+ "insert-any-remove-any-identity-hash",
+ "insert any order, delete any order (identity hash)",
+ test_insert_any_remove_any_identity_hash
+ },
+ {
+ "insert-any-remove-any-constant-hash",
+ "insert any order, delete any order (constant hash)",
+ test_insert_any_remove_any_constant_hash
+ },
+
+ {
+ "insert-any-remove-same-random-hash",
+ "insert any order, delete same order (random hash)",
+ test_insert_any_remove_same_random_hash
+ },
+ {
+ "insert-any-remove-same-identity-hash",
+ "insert any order, delete same order (identity hash)",
+ test_insert_any_remove_same_identity_hash
+ },
+ {
+ "insert-any-remove-same-constant-hash",
+ "insert any order, delete same order (constant hash)",
+ test_insert_any_remove_same_constant_hash
+ },
+
+ {
+ "insert-any-remove-reverse-random-hash",
+ "insert any order, delete reverse order (random hash)",
+ test_insert_any_remove_reverse_random_hash
+ },
+ {
+ "insert-any-remove-reverse-identity-hash",
+ "insert any order, delete reverse order (identity hash)",
+ test_insert_any_remove_reverse_identity_hash
+ },
+ {
+ "insert-any-remove-reverse-constant-hash",
+ "insert any order, delete reverse order (constant hash)",
+ test_insert_any_remove_reverse_constant_hash
+ },
+
+ {
+ "random-sequence-random-hash",
+ "insert and delete in random sequence (random hash)",
+ test_random_sequence_random_hash
+ },
+ {
+ "random-sequence-identity-hash",
+ "insert and delete in random sequence (identity hash)",
+ test_random_sequence_identity_hash
+ },
+ {
+ "random-sequence-constant-hash",
+ "insert and delete in random sequence (constant hash)",
+ test_random_sequence_constant_hash
+ },
+
+ {
+ "insert-ordered-random-hash",
+ "insert in ascending order (random hash)",
+ test_insert_ordered_random_hash
+ },
+ {
+ "insert-ordered-identity-hash",
+ "insert in ascending order (identity hash)",
+ test_insert_ordered_identity_hash
+ },
+ {
+ "insert-ordered-constant-hash",
+ "insert in ascending order (constant hash)",
+ test_insert_ordered_constant_hash
+ },
+
+ {
+ "moved-random-hash",
+ "move elements around in memory (random hash)",
+ test_moved_random_hash
+ },
+ {
+ "moved-identity-hash",
+ "move elements around in memory (identity hash)",
+ test_moved_identity_hash
+ },
+ {
+ "moved-constant-hash",
+ "move elements around in memory (constant hash)",
+ test_moved_constant_hash
+ },
+
+ {
+ "changed-random-hash",
+ "change key data in nodes (random hash)",
+ test_changed_random_hash
+ },
+ {
+ "changed-identity-hash",
+ "change key data in nodes (identity hash)",
+ test_changed_identity_hash
+ },
+ {
+ "changed-constant-hash",
+ "change key data in nodes (constant hash)",
+ test_changed_constant_hash
+ },
+
+ {
+ "swap-random-hash",
+ "test swapping tables",
+ test_swap_random_hash
+ },
+ {
+ "clear",
+ "test clearing hash table",
+ test_clear
+ },
+ {
+ "destroy-null",
+ "test destroying null table",
+ test_destroy_null
+ },
+ {
+ "shrink-empty",
+ "test shrinking an empty table",
+ test_shrink_empty
+ },
+ };
+
+enum { N_TESTS = sizeof tests / sizeof *tests };
int
-main (void)
+main (int argc, char *argv[])
{
- run_test (test_insert_any_remove_any_random_hash,
- "insert any order, delete any order (random hash)");
- run_test (test_insert_any_remove_any_identity_hash,
- "insert any order, delete any order (identity hash)");
- run_test (test_insert_any_remove_any_constant_hash,
- "insert any order, delete any order (constant hash)");
-
- run_test (test_insert_any_remove_same_random_hash,
- "insert any order, delete same order (random hash)");
- run_test (test_insert_any_remove_same_identity_hash,
- "insert any order, delete same order (identity hash)");
- run_test (test_insert_any_remove_same_constant_hash,
- "insert any order, delete same order (constant hash)");
-
- run_test (test_insert_any_remove_reverse_random_hash,
- "insert any order, delete reverse order (random hash)");
- run_test (test_insert_any_remove_reverse_identity_hash,
- "insert any order, delete reverse order (identity hash)");
- run_test (test_insert_any_remove_reverse_constant_hash,
- "insert any order, delete reverse order (constant hash)");
-
- run_test (test_random_sequence_random_hash,
- "insert and delete in random sequence (random hash)");
- run_test (test_random_sequence_identity_hash,
- "insert and delete in random sequence (identity hash)");
- run_test (test_random_sequence_constant_hash,
- "insert and delete in random sequence (constant hash)");
-
- run_test (test_insert_ordered_random_hash,
- "insert in ascending order (random hash)");
- run_test (test_insert_ordered_identity_hash,
- "insert in ascending order (identity hash)");
- run_test (test_insert_ordered_constant_hash,
- "insert in ascending order (constant hash)");
-
- run_test (test_moved_random_hash,
- "move elements around in memory (random hash)");
- run_test (test_moved_identity_hash,
- "move elements around in memory (identity hash)");
- run_test (test_moved_constant_hash,
- "move elements around in memory (constant hash)");
-
- run_test (test_changed_random_hash,
- "change key data in nodes (random hash)");
- run_test (test_changed_identity_hash,
- "change key data in nodes (identity hash)");
- run_test (test_changed_constant_hash,
- "change key data in nodes (constant hash)");
-
- run_test (test_swap_random_hash, "test swapping tables");
-
- run_test (test_clear, "test clearing hash table");
-
- run_test (test_destroy_null, "test destroying null table");
- run_test (test_shrink_empty, "test shrinking an empty table");
-
- putchar ('\n');
+ int i;
-#if __GNUC__ == 4 && __GNUC_MINOR__ == 3
- /* We skipped some of the tests, so return a value that
- Automake will interpret as "skipped", instead of one that
- means success. */
- return 77;
-#else
- return 0;
-#endif
+ if (argc != 2)
+ {
+ fprintf (stderr, "exactly one argument required; use --help for help\n");
+ return EXIT_FAILURE;
+ }
+ else if (!strcmp (argv[1], "--help"))
+ {
+ printf ("%s: test hash map\n"
+ "usage: %s TEST-NAME\n"
+ "where TEST-NAME is one of the following:\n",
+ argv[0], argv[0]);
+ for (i = 0; i < N_TESTS; i++)
+ printf (" %s\n %s\n", tests[i].name, tests[i].description);
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < N_TESTS; i++)
+ if (!strcmp (argv[1], tests[i].name))
+ {
+ tests[i].function ();
+ return 0;
+ }
+
+ fprintf (stderr, "unknown test %s; use --help for help\n", argv[1]);
+ return EXIT_FAILURE;
+ }
}
--- /dev/null
+AT_BANNER([Hash map (hmap) library])
+
+m4_define([CHECK_HMAP],
+ [AT_SETUP([hmap -- $1])
+ AT_CHECK([hmap-test $1])
+ AT_CLEANUP])
+
+CHECK_HMAP([insert-any-remove-any-random-hash])
+CHECK_HMAP([insert-any-remove-any-identity-hash])
+CHECK_HMAP([insert-any-remove-any-constant-hash])
+CHECK_HMAP([insert-any-remove-same-random-hash])
+CHECK_HMAP([insert-any-remove-same-identity-hash])
+CHECK_HMAP([insert-any-remove-same-constant-hash])
+CHECK_HMAP([insert-any-remove-reverse-random-hash])
+CHECK_HMAP([insert-any-remove-reverse-identity-hash])
+CHECK_HMAP([insert-any-remove-reverse-constant-hash])
+CHECK_HMAP([random-sequence-random-hash])
+CHECK_HMAP([random-sequence-identity-hash])
+CHECK_HMAP([random-sequence-constant-hash])
+CHECK_HMAP([insert-ordered-random-hash])
+CHECK_HMAP([insert-ordered-identity-hash])
+CHECK_HMAP([insert-ordered-constant-hash])
+CHECK_HMAP([moved-random-hash])
+CHECK_HMAP([moved-identity-hash])
+CHECK_HMAP([moved-constant-hash])
+CHECK_HMAP([changed-random-hash])
+CHECK_HMAP([changed-identity-hash])
+CHECK_HMAP([changed-constant-hash])
+CHECK_HMAP([swap-random-hash])
+CHECK_HMAP([clear])
+CHECK_HMAP([destroy-null])
+CHECK_HMAP([shrink-empty])
#include <libpspp/compiler.h>
\f
-/* Currently running test. */
-static const char *test_name;
-
/* If OK is not true, prints a message about failure on the
current source file and the given LINE and terminates. */
static void
{
if (!ok)
{
- printf ("Check failed in %s test at %s, line %d\n",
- test_name, __FILE__, line);
+ fprintf (stderr, "%s:%d: check failed\n", __FILE__, line);
abort ();
}
}
\f
/* Main program. */
-/* Runs TEST_FUNCTION and prints a message about NAME. */
-static void
-run_test (void (*test_function) (void), const char *name)
-{
- test_name = name;
- putchar ('.');
- fflush (stdout);
- test_function ();
-}
+struct test
+ {
+ const char *name;
+ const char *description;
+ void (*function) (void);
+ };
+
+static const struct test tests[] =
+ {
+ {
+ "insert-any-remove-any-random-hash",
+ "insert any order, delete any order (random hash)",
+ test_insert_any_remove_any_random_hash
+ },
+ {
+ "insert-any-remove-any-identity-hash",
+ "insert any order, delete any order (identity hash)",
+ test_insert_any_remove_any_identity_hash
+ },
+ {
+ "insert-any-remove-any-constant-hash",
+ "insert any order, delete any order (constant hash)",
+ test_insert_any_remove_any_constant_hash
+ },
+ {
+ "insert-any-remove-same-random-hash",
+ "insert any order, delete same order (random hash)",
+ test_insert_any_remove_same_random_hash
+ },
+ {
+ "insert-any-remove-same-identity-hash",
+ "insert any order, delete same order (identity hash)",
+ test_insert_any_remove_same_identity_hash
+ },
+ {
+ "insert-any-remove-same-constant-hash",
+ "insert any order, delete same order (constant hash)",
+ test_insert_any_remove_same_constant_hash
+ },
+ {
+ "insert-any-remove-reverse-random-hash",
+ "insert any order, delete reverse order (random hash)",
+ test_insert_any_remove_reverse_random_hash
+ },
+ {
+ "insert-any-remove-reverse-identity-hash",
+ "insert any order, delete reverse order (identity hash)",
+ test_insert_any_remove_reverse_identity_hash
+ },
+ {
+ "insert-any-remove-reverse-constant-hash",
+ "insert any order, delete reverse order (constant hash)",
+ test_insert_any_remove_reverse_constant_hash
+ },
+ {
+ "random-sequence-random-hash",
+ "insert and delete in random sequence (random hash)",
+ test_random_sequence_random_hash
+ },
+ {
+ "random-sequence-identity-hash",
+ "insert and delete in random sequence (identity hash)",
+ test_random_sequence_identity_hash
+ },
+ {
+ "random-sequence-constant-hash",
+ "insert and delete in random sequence (constant hash)",
+ test_random_sequence_constant_hash
+ },
+ {
+ "insert-ordered-random-hash",
+ "insert in ascending order (random hash)",
+ test_insert_ordered_random_hash
+ },
+ {
+ "insert-ordered-identity-hash",
+ "insert in ascending order (identity hash)",
+ test_insert_ordered_identity_hash
+ },
+ {
+ "insert-ordered-constant-hash",
+ "insert in ascending order (constant hash)",
+ test_insert_ordered_constant_hash
+ },
+ {
+ "moved-random-hash",
+ "move elements around in memory (random hash)",
+ test_moved_random_hash
+ },
+ {
+ "moved-identity-hash",
+ "move elements around in memory (identity hash)",
+ test_moved_identity_hash
+ },
+ {
+ "moved-constant-hash",
+ "move elements around in memory (constant hash)",
+ test_moved_constant_hash
+ },
+ {
+ "changed-random-hash",
+ "change key data in nodes (random hash)",
+ test_changed_random_hash
+ },
+ {
+ "changed-identity-hash",
+ "change key data in nodes (identity hash)",
+ test_changed_identity_hash
+ },
+ {
+ "changed-constant-hash",
+ "change key data in nodes (constant hash)",
+ test_changed_constant_hash
+ },
+ {
+ "change-random-hash",
+ "change and move key data in nodes (random hash)",
+ test_change_random_hash
+ },
+ {
+ "change-identity-hash",
+ "change and move key data in nodes (identity hash)",
+ test_change_identity_hash
+ },
+ {
+ "change-constant-hash",
+ "change and move key data in nodes (constant hash)",
+ test_change_constant_hash
+ },
+ {
+ "swap-random-hash",
+ "test swapping tables",
+ test_swap_random_hash
+ },
+ {
+ "clear",
+ "test clearing hash table",
+ test_clear
+ },
+ {
+ "destroy-null",
+ "test destroying null table",
+ test_destroy_null
+ },
+ {
+ "shrink-empty",
+ "test shrinking an empty table",
+ test_shrink_empty
+ },
+ };
+
+enum { N_TESTS = sizeof tests / sizeof *tests };
int
-main (void)
+main (int argc, char *argv[])
{
- run_test (test_insert_any_remove_any_random_hash,
- "insert any order, delete any order (random hash)");
- run_test (test_insert_any_remove_any_identity_hash,
- "insert any order, delete any order (identity hash)");
- run_test (test_insert_any_remove_any_constant_hash,
- "insert any order, delete any order (constant hash)");
-
- run_test (test_insert_any_remove_same_random_hash,
- "insert any order, delete same order (random hash)");
- run_test (test_insert_any_remove_same_identity_hash,
- "insert any order, delete same order (identity hash)");
- run_test (test_insert_any_remove_same_constant_hash,
- "insert any order, delete same order (constant hash)");
-
- run_test (test_insert_any_remove_reverse_random_hash,
- "insert any order, delete reverse order (random hash)");
- run_test (test_insert_any_remove_reverse_identity_hash,
- "insert any order, delete reverse order (identity hash)");
- run_test (test_insert_any_remove_reverse_constant_hash,
- "insert any order, delete reverse order (constant hash)");
-
- run_test (test_random_sequence_random_hash,
- "insert and delete in random sequence (random hash)");
- run_test (test_random_sequence_identity_hash,
- "insert and delete in random sequence (identity hash)");
- run_test (test_random_sequence_constant_hash,
- "insert and delete in random sequence (constant hash)");
-
- run_test (test_insert_ordered_random_hash,
- "insert in ascending order (random hash)");
- run_test (test_insert_ordered_identity_hash,
- "insert in ascending order (identity hash)");
- run_test (test_insert_ordered_constant_hash,
- "insert in ascending order (constant hash)");
-
- run_test (test_moved_random_hash,
- "move elements around in memory (random hash)");
- run_test (test_moved_identity_hash,
- "move elements around in memory (identity hash)");
- run_test (test_moved_constant_hash,
- "move elements around in memory (constant hash)");
-
- run_test (test_changed_random_hash,
- "change key data in nodes (random hash)");
- run_test (test_changed_identity_hash,
- "change key data in nodes (identity hash)");
- run_test (test_changed_constant_hash,
- "change key data in nodes (constant hash)");
-
- run_test (test_change_random_hash,
- "change and move key data in nodes (random hash)");
- run_test (test_change_identity_hash,
- "change and move key data in nodes (identity hash)");
- run_test (test_change_constant_hash,
- "change and move key data in nodes (constant hash)");
-
- run_test (test_swap_random_hash, "test swapping tables");
-
- run_test (test_clear, "test clearing hash table");
-
- run_test (test_destroy_null, "test destroying null table");
- run_test (test_shrink_empty, "test shrinking an empty table");
-
- putchar ('\n');
-
- return 0;
+ int i;
+
+ if (argc != 2)
+ {
+ fprintf (stderr, "exactly one argument required; use --help for help\n");
+ return EXIT_FAILURE;
+ }
+ else if (!strcmp (argv[1], "--help"))
+ {
+ printf ("%s: test hash map of pointers\n"
+ "usage: %s TEST-NAME\n"
+ "where TEST-NAME is one of the following:\n",
+ argv[0], argv[0]);
+ for (i = 0; i < N_TESTS; i++)
+ printf (" %s\n %s\n", tests[i].name, tests[i].description);
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < N_TESTS; i++)
+ if (!strcmp (argv[1], tests[i].name))
+ {
+ tests[i].function ();
+ return 0;
+ }
+
+ fprintf (stderr, "unknown test %s; use --help for help\n", argv[1]);
+ return EXIT_FAILURE;
+ }
}
--- /dev/null
+AT_BANNER([Hash map of pointers (hmapx) library])
+
+m4_define([CHECK_HMAPX],
+ [AT_SETUP([hmapx -- $1])
+ AT_CHECK([hmapx-test $1])
+ AT_CLEANUP])
+
+CHECK_HMAPX([insert-any-remove-any-random-hash])
+CHECK_HMAPX([insert-any-remove-any-identity-hash])
+CHECK_HMAPX([insert-any-remove-any-constant-hash])
+CHECK_HMAPX([insert-any-remove-same-random-hash])
+CHECK_HMAPX([insert-any-remove-same-identity-hash])
+CHECK_HMAPX([insert-any-remove-same-constant-hash])
+CHECK_HMAPX([insert-any-remove-reverse-random-hash])
+CHECK_HMAPX([insert-any-remove-reverse-identity-hash])
+CHECK_HMAPX([insert-any-remove-reverse-constant-hash])
+CHECK_HMAPX([random-sequence-random-hash])
+CHECK_HMAPX([random-sequence-identity-hash])
+CHECK_HMAPX([random-sequence-constant-hash])
+CHECK_HMAPX([insert-ordered-random-hash])
+CHECK_HMAPX([insert-ordered-identity-hash])
+CHECK_HMAPX([insert-ordered-constant-hash])
+CHECK_HMAPX([moved-random-hash])
+CHECK_HMAPX([moved-identity-hash])
+CHECK_HMAPX([moved-constant-hash])
+CHECK_HMAPX([changed-random-hash])
+CHECK_HMAPX([changed-identity-hash])
+CHECK_HMAPX([changed-constant-hash])
+CHECK_HMAPX([change-random-hash])
+CHECK_HMAPX([change-identity-hash])
+CHECK_HMAPX([change-constant-hash])
+CHECK_HMAPX([swap-random-hash])
+CHECK_HMAPX([clear])
+CHECK_HMAPX([destroy-null])
+CHECK_HMAPX([shrink-empty])
--- /dev/null
+/* PSPP - a program for statistical analysis.
+ Copyright (C) 2010 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "libpspp/i18n.h"
+
+int
+main (int argc, char *argv[])
+{
+ char *s;
+
+ if (argc != 4)
+ {
+ fprintf (stderr,
+ "usage: %s FROM TO STRING\n"
+ "where FROM is the source encoding,\n"
+ " TO is the target encoding,\n"
+ " and STRING is the text to recode.\n",
+ argv[0]);
+ return EXIT_FAILURE;
+ }
+
+ i18n_init ();
+ s = recode_string (argv[2], argv[1], argv[3], -1);
+ puts (s);
+ free (s);
+
+ return 0;
+}
--- /dev/null
+AT_BANNER([i18n routines])
+
+# CHECK_I18N([TITLE], [FROM-CODING], [TO-CODING], [FROM-TEXT], [TO-TEXT])
+#
+# Converts FROM-TEXT from FROM-CODING to TO-CODING and checks that the result
+# is TO-TEXT. The "printf" program is applied to both FROM-TEXT and TO-TEXT
+# to allow for backslash-escapes. (Be aware that hex escapes are not portable;
+# use octal escapes instead.)
+m4_define([CHECK_I18N],
+ [AT_SETUP([convert $1])
+ AT_KEYWORDS([i18n])
+
+ dnl Skip the test if this host doesn't know the source and target encodings.
+ AT_CHECK(
+ [case "$host" in
+ *-*-linux* | *-*-*-gnu*)
+ dnl GNU/Linux always has the encodings we want. We can't ask
+ dnl config.charset about them because it has a special case here
+ dnl too and won't tell us.
+ ;;
+ *)
+ $SHELL $top_srcdir/gl/config.charset "$host" | grep '$2' || exit 77
+ $SHELL $top_srcdir/gl/config.charset "$host" | grep '$3' || exit 77
+ ;;
+ esac
+ ], [0], [ignore])
+ AT_CHECK_UNQUOTED([i18n-test '$2' '$3' `printf '$4'`], [0], [`printf '$5'`
+])
+ AT_CLEANUP])
+
+CHECK_I18N([reflexively], [ASCII], [ASCII], [abc], [abc])
+CHECK_I18N([without any change], [ASCII], [UTF-8], [abc], [abc])
+
+CHECK_I18N([from ISO-8859-1 to UTF-8], [ISO-8859-1], [UTF-8],
+ [\242], [\302\242])
+CHECK_I18N([from UTF-8 to ISO-8859-1], [UTF-8], [ISO-8859-1],
+ [\302\242], [\242])
+
+# 0xc0 == 0300 is invalid in UTF-8
+CHECK_I18N([invalid UTF-8 to ISO-8859-1], [UTF-8], [ISO-8859-1],
+ [xy\300z], [xy?z])
+# 0xc2 == 0302 is the first byte of a 2-byte UTF-8 sequence
+CHECK_I18N([truncated UTF-8 to ISO-8559-1], [UTF-8], [ISO-8859-1],
+ [xy\302], [xy?])
+
+dnl The input to this test is 7 bytes long and the expected output is 9 bytes.
+dnl So it should exercise the E2BIG case
+CHECK_I18N([from ISO-8859-1 to UTF-8 with overflow], [ISO-8859-1], [UTF-8],
+ [Tsch\374\337!], [Tsch\303\274\303\237!])
+
/* PSPP - a program for statistical analysis.
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#define UNUSED
#endif
-/* Currently running test. */
-static const char *test_name;
-
/* Exit with a failure code.
(Place a breakpoint on this function while debugging.) */
static void
{
if (!ok)
{
- printf ("Check failed in %s test at %s, line %d\n",
- test_name, __FILE__, line);
+ fprintf (stderr, "%s:%d: check failed\n", __FILE__, line);
check_die ();
}
}
\f
/* Main program. */
-/* Runs TEST_FUNCTION and prints a message about NAME. */
-static void
-run_test (void (*test_function) (void), const char *name)
-{
- test_name = name;
- putchar ('.');
- fflush (stdout);
- test_function ();
-}
+struct test
+ {
+ const char *name;
+ const char *description;
+ void (*function) (void);
+ };
+
+static const struct test tests[] =
+ {
+ {
+ "push-pop",
+ "push/pop",
+ test_push_pop
+ },
+ {
+ "insert-remove",
+ "insert/remove",
+ test_insert_remove
+ },
+ {
+ "swap",
+ "swap",
+ test_swap
+ },
+ {
+ "swap-range",
+ "swap_range",
+ test_swap_range
+ },
+ {
+ "remove-range",
+ "remove_range",
+ test_remove_range
+ },
+ {
+ "remove-equal",
+ "remove_equal",
+ test_remove_equal
+ },
+ {
+ "remove-if",
+ "remove_if",
+ test_remove_if
+ },
+ {
+ "moved",
+ "moved",
+ test_moved
+ },
+ {
+ "find-equal",
+ "find_equal",
+ test_find_equal
+ },
+ {
+ "find-if",
+ "find_if",
+ test_find_if
+ },
+ {
+ "find-adjacent-equal",
+ "find_adjacent_equal",
+ test_find_adjacent_equal
+ },
+ {
+ "count-range",
+ "count_range",
+ test_count_range
+ },
+ {
+ "count-equal",
+ "count_equal",
+ test_count_equal
+ },
+ {
+ "count-if",
+ "count_if",
+ test_count_if
+ },
+ {
+ "min-max",
+ "min/max",
+ test_min_max
+ },
+ {
+ "lexicographical-compare-3way",
+ "lexicographical_compare_3way",
+ test_lexicographical_compare_3way
+ },
+ {
+ "apply",
+ "apply",
+ test_apply
+ },
+ {
+ "reverse",
+ "reverse",
+ test_reverse
+ },
+ {
+ "permutations-no-dups",
+ "permutations (no dups)",
+ test_permutations_no_dups
+ },
+ {
+ "permutations-with-dups",
+ "permutations (with dups)",
+ test_permutations_with_dups
+ },
+ {
+ "merge-no-dups",
+ "merge (no dups)",
+ test_merge_no_dups
+ },
+ {
+ "merge-with-dups",
+ "merge (with dups)",
+ test_merge_with_dups
+ },
+ {
+ "sort-exhaustive",
+ "sort (exhaustive)",
+ test_sort_exhaustive
+ },
+ {
+ "sort-stable",
+ "sort (stability)",
+ test_sort_stable
+ },
+ {
+ "sort-subset",
+ "sort (subset)",
+ test_sort_subset
+ },
+ {
+ "sort-big",
+ "sort (big)",
+ test_sort_big
+ },
+ {
+ "unique",
+ "unique",
+ test_unique
+ },
+ {
+ "sort-unique",
+ "sort_unique",
+ test_sort_unique
+ },
+ {
+ "insert-ordered",
+ "insert_ordered",
+ test_insert_ordered
+ },
+ {
+ "partition",
+ "partition",
+ test_partition
+ },
+ };
+
+enum { N_TESTS = sizeof tests / sizeof *tests };
int
-main (void)
-{
- run_test (test_push_pop, "push/pop");
- run_test (test_insert_remove, "insert/remove");
- run_test (test_swap, "swap");
- run_test (test_swap_range, "swap_range");
- run_test (test_remove_range, "remove_range");
- run_test (test_remove_equal, "remove_equal");
- run_test (test_remove_if, "remove_if");
- run_test (test_moved, "moved");
- run_test (test_find_equal, "find_equal");
- run_test (test_find_if, "find_if");
- run_test (test_find_adjacent_equal, "find_adjacent_equal");
- run_test (test_count_range, "count_range");
- run_test (test_count_equal, "count_equal");
- run_test (test_count_if, "count_if");
- run_test (test_min_max, "min/max");
- run_test (test_lexicographical_compare_3way, "lexicographical_compare_3way");
- run_test (test_apply, "apply");
- run_test (test_reverse, "reverse");
- run_test (test_permutations_no_dups, "permutations (no dups)");
- run_test (test_permutations_with_dups, "permutations (with dups)");
- run_test (test_merge_no_dups, "merge (no dups)");
- run_test (test_merge_with_dups, "merge (with dups)");
- run_test (test_sort_exhaustive, "sort (exhaustive)");
- run_test (test_sort_stable, "sort (stability)");
- run_test (test_sort_subset, "sort (subset)");
- run_test (test_sort_big, "sort (big)");
- run_test (test_unique, "unique");
- run_test (test_sort_unique, "sort_unique");
- run_test (test_insert_ordered, "insert_ordered");
- run_test (test_partition, "partition");
- putchar ('\n');
-
- return 0;
-}
-
-/*
- Local Variables:
- compile-command: "gcc -Wall -Wstrict-prototypes -Wmissing-prototypes ll.c ll-test.c -o ll-test -g"
- End:
- */
+main (int argc, char *argv[])
+{
+ int i;
+
+ if (argc != 2)
+ {
+ fprintf (stderr, "exactly one argument required; use --help for help\n");
+ return EXIT_FAILURE;
+ }
+ else if (!strcmp (argv[1], "--help"))
+ {
+ printf ("%s: test doubly linked list (ll) library\n"
+ "usage: %s TEST-NAME\n"
+ "where TEST-NAME is one of the following:\n",
+ argv[0], argv[0]);
+ for (i = 0; i < N_TESTS; i++)
+ printf (" %s\n %s\n", tests[i].name, tests[i].description);
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < N_TESTS; i++)
+ if (!strcmp (argv[1], tests[i].name))
+ {
+ tests[i].function ();
+ return 0;
+ }
+
+ fprintf (stderr, "unknown test %s; use --help for help\n", argv[1]);
+ return EXIT_FAILURE;
+ }
+}
--- /dev/null
+AT_BANNER([doubly linked list (ll) library])
+
+m4_define([CHECK_LL],
+ [AT_SETUP([ll -- $1])
+ AT_CHECK([ll-test $1])
+ AT_CLEANUP])
+
+CHECK_LL([push-pop])
+CHECK_LL([insert-remove])
+CHECK_LL([swap])
+CHECK_LL([swap-range])
+CHECK_LL([remove-range])
+CHECK_LL([remove-equal])
+CHECK_LL([remove-if])
+CHECK_LL([moved])
+CHECK_LL([find-equal])
+CHECK_LL([find-if])
+CHECK_LL([find-adjacent-equal])
+CHECK_LL([count-range])
+CHECK_LL([count-equal])
+CHECK_LL([count-if])
+CHECK_LL([min-max])
+CHECK_LL([lexicographical-compare-3way])
+CHECK_LL([apply])
+CHECK_LL([reverse])
+CHECK_LL([permutations-no-dups])
+CHECK_LL([permutations-with-dups])
+CHECK_LL([merge-no-dups])
+CHECK_LL([merge-with-dups])
+CHECK_LL([sort-exhaustive])
+CHECK_LL([sort-stable])
+CHECK_LL([sort-subset])
+CHECK_LL([sort-big])
+CHECK_LL([unique])
+CHECK_LL([sort-unique])
+CHECK_LL([insert-ordered])
+CHECK_LL([partition])
#define UNUSED
#endif
-/* Currently running test. */
-static const char *test_name;
-
/* Exit with a failure code.
(Place a breakpoint on this function while debugging.) */
static void
{
if (!ok)
{
- printf ("Check failed in %s test at %s, line %d\n",
- test_name, __FILE__, line);
+ fprintf (stderr, "%s:%d: check failed\n", __FILE__, line);
check_die ();
}
}
\f
/* Main program. */
-/* Runs TEST_FUNCTION and prints a message about NAME. */
-static void
-run_test (void (*test_function) (void), const char *name)
-{
- test_name = name;
- putchar ('.');
- fflush (stdout);
- test_function ();
-}
+struct test
+ {
+ const char *name;
+ const char *description;
+ void (*function) (void);
+ };
+
+static const struct test tests[] =
+ {
+ {
+ "push-pop",
+ "push/pop",
+ test_push_pop
+ },
+ {
+ "insert-remove",
+ "insert/remove",
+ test_insert_remove
+ },
+ {
+ "swap",
+ "swap",
+ test_swap
+ },
+ {
+ "swap-range",
+ "swap_range",
+ test_swap_range
+ },
+ {
+ "remove-range",
+ "remove_range",
+ test_remove_range
+ },
+ {
+ "remove-equal",
+ "remove_equal",
+ test_remove_equal
+ },
+ {
+ "remove-if",
+ "remove_if",
+ test_remove_if
+ },
+ {
+ "find-equal",
+ "find_equal",
+ test_find_equal
+ },
+ {
+ "find",
+ "find",
+ test_find
+ },
+ {
+ "find-if",
+ "find_if",
+ test_find_if
+ },
+ {
+ "find-adjacent-equal",
+ "find_adjacent_equal",
+ test_find_adjacent_equal
+ },
+ {
+ "count-range",
+ "count_range",
+ test_count_range
+ },
+ {
+ "count-equal",
+ "count_equal",
+ test_count_equal
+ },
+ {
+ "count-if",
+ "count_if",
+ test_count_if
+ },
+ {
+ "min-max",
+ "min/max",
+ test_min_max
+ },
+ {
+ "lexicographical-compare-3way",
+ "lexicographical_compare_3way",
+ test_lexicographical_compare_3way
+ },
+ {
+ "apply",
+ "apply",
+ test_apply
+ },
+ {
+ "destroy",
+ "destroy",
+ test_destroy
+ },
+ {
+ "reverse",
+ "reverse",
+ test_reverse
+ },
+ {
+ "permutations-no-dups",
+ "permutations (no dups)",
+ test_permutations_no_dups
+ },
+ {
+ "permutations-with-dups",
+ "permutations (with dups)",
+ test_permutations_with_dups
+ },
+ {
+ "merge-no-dups",
+ "merge (no dups)",
+ test_merge_no_dups
+ },
+ {
+ "merge-with-dups",
+ "merge (with dups)",
+ test_merge_with_dups
+ },
+ {
+ "sort-exhaustive",
+ "sort (exhaustive)",
+ test_sort_exhaustive
+ },
+ {
+ "sort-stable",
+ "sort (stability)",
+ test_sort_stable
+ },
+ {
+ "sort-subset",
+ "sort (subset)",
+ test_sort_subset
+ },
+ {
+ "sort-big",
+ "sort (big)",
+ test_sort_big
+ },
+ {
+ "unique",
+ "unique",
+ test_unique
+ },
+ {
+ "sort-unique",
+ "sort_unique",
+ test_sort_unique
+ },
+ {
+ "insert-ordered",
+ "insert_ordered",
+ test_insert_ordered
+ },
+ {
+ "partition",
+ "partition",
+ test_partition
+ },
+ {
+ "allocation-failure",
+ "allocation failure",
+ test_allocation_failure
+ },
+ };
+
+enum { N_TESTS = sizeof tests / sizeof *tests };
int
-main (void)
-{
- run_test (test_push_pop, "push/pop");
- run_test (test_insert_remove, "insert/remove");
- run_test (test_swap, "swap");
- run_test (test_swap_range, "swap_range");
- run_test (test_remove_range, "remove_range");
- run_test (test_remove_equal, "remove_equal");
- run_test (test_remove_if, "remove_if");
- run_test (test_find_equal, "find_equal");
- run_test (test_find, "find");
- run_test (test_find_if, "find_if");
- run_test (test_find_adjacent_equal, "find_adjacent_equal");
- run_test (test_count_range, "count_range");
- run_test (test_count_equal, "count_equal");
- run_test (test_count_if, "count_if");
- run_test (test_min_max, "min/max");
- run_test (test_lexicographical_compare_3way, "lexicographical_compare_3way");
- run_test (test_apply, "apply");
- run_test (test_destroy, "destroy");
- run_test (test_reverse, "reverse");
- run_test (test_permutations_no_dups, "permutations (no dups)");
- run_test (test_permutations_with_dups, "permutations (with dups)");
- run_test (test_merge_no_dups, "merge (no dups)");
- run_test (test_merge_with_dups, "merge (with dups)");
- run_test (test_sort_exhaustive, "sort (exhaustive)");
- run_test (test_sort_stable, "sort (stability)");
- run_test (test_sort_subset, "sort (subset)");
- run_test (test_sort_big, "sort (big)");
- run_test (test_unique, "unique");
- run_test (test_sort_unique, "sort_unique");
- run_test (test_insert_ordered, "insert_ordered");
- run_test (test_partition, "partition");
- run_test (test_allocation_failure, "allocation failure");
- putchar ('\n');
-
- return 0;
-}
-
-/*
- Local Variables:
- compile-command: "gcc -Wall -Wstrict-prototypes -Wmissing-prototypes ll.c llx.c llx-test.c -o llx-test -g"
- End:
- */
+main (int argc, char *argv[])
+{
+ int i;
+
+ if (argc != 2)
+ {
+ fprintf (stderr, "exactly one argument required; use --help for help\n");
+ return EXIT_FAILURE;
+ }
+ else if (!strcmp (argv[1], "--help"))
+ {
+ printf ("%s: test doubly linked list of pointers (llx) library\n"
+ "usage: %s TEST-NAME\n"
+ "where TEST-NAME is one of the following:\n",
+ argv[0], argv[0]);
+ for (i = 0; i < N_TESTS; i++)
+ printf (" %s\n %s\n", tests[i].name, tests[i].description);
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < N_TESTS; i++)
+ if (!strcmp (argv[1], tests[i].name))
+ {
+ tests[i].function ();
+ return 0;
+ }
+
+ fprintf (stderr, "unknown test %s; use --help for help\n", argv[1]);
+ return EXIT_FAILURE;
+ }
+}
--- /dev/null
+AT_BANNER([doubly linked list of pointers (llx) library])
+
+m4_define([CHECK_LLX],
+ [AT_SETUP([llx -- $1])
+ AT_CHECK([llx-test $1])
+ AT_CLEANUP])
+
+CHECK_LLX([push-pop])
+CHECK_LLX([insert-remove])
+CHECK_LLX([swap])
+CHECK_LLX([swap-range])
+CHECK_LLX([remove-range])
+CHECK_LLX([remove-equal])
+CHECK_LLX([remove-if])
+CHECK_LLX([find-equal])
+CHECK_LLX([find])
+CHECK_LLX([find-if])
+CHECK_LLX([find-adjacent-equal])
+CHECK_LLX([count-range])
+CHECK_LLX([count-equal])
+CHECK_LLX([count-if])
+CHECK_LLX([min-max])
+CHECK_LLX([lexicographical-compare-3way])
+CHECK_LLX([apply])
+CHECK_LLX([destroy])
+CHECK_LLX([reverse])
+CHECK_LLX([permutations-no-dups])
+CHECK_LLX([permutations-with-dups])
+CHECK_LLX([merge-no-dups])
+CHECK_LLX([merge-with-dups])
+CHECK_LLX([sort-exhaustive])
+CHECK_LLX([sort-stable])
+CHECK_LLX([sort-subset])
+CHECK_LLX([sort-big])
+CHECK_LLX([unique])
+CHECK_LLX([sort-unique])
+CHECK_LLX([insert-ordered])
+CHECK_LLX([partition])
+CHECK_LLX([allocation-failure])
/* PSPP - a program for statistical analysis.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "xalloc.h"
\f
-/* Currently running test. */
-static const char *test_name;
-
/* Exit with a failure code.
(Place a breakpoint on this function while debugging.) */
static void
{
if (!ok)
{
- printf ("Check failed in %s test at %s, line %d\n",
- test_name, __FILE__, line);
+ fprintf (stderr, "%s:%d: check failed\n", __FILE__, line);
check_die ();
}
}
\f
/* Main program. */
-/* Runs TEST_FUNCTION and prints a message about NAME. */
-static void
-run_test (void (*test_function) (void), const char *name)
-{
- test_name = name;
- putchar ('.');
- fflush (stdout);
- test_function ();
-}
+struct test
+ {
+ const char *name;
+ const char *description;
+ void (*function) (void);
+ };
+
+static const struct test tests[] =
+ {
+ {
+ "insert",
+ "insert",
+ test_insert
+ },
+ {
+ "delete-contiguous",
+ "delete from contiguous ranges",
+ test_delete_contiguous
+ },
+ {
+ "delete-gaps",
+ "delete from ranges separated by gaps",
+ test_delete_gaps
+ },
+ };
+
+enum { N_TESTS = sizeof tests / sizeof *tests };
int
-main (void)
+main (int argc, char *argv[])
{
- run_test (test_insert, "insert");
- run_test (test_delete_contiguous, "delete from contiguous ranges");
- run_test (test_delete_gaps, "delete from ranges separated by gaps");
- putchar ('\n');
+ int i;
- return 0;
+ if (argc != 2)
+ {
+ fprintf (stderr, "exactly one argument required; use --help for help\n");
+ return EXIT_FAILURE;
+ }
+ else if (!strcmp (argv[1], "--help"))
+ {
+ printf ("%s: test range map library\n"
+ "usage: %s TEST-NAME\n"
+ "where TEST-NAME is one of the following:\n",
+ argv[0], argv[0]);
+ for (i = 0; i < N_TESTS; i++)
+ printf (" %s\n %s\n", tests[i].name, tests[i].description);
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < N_TESTS; i++)
+ if (!strcmp (argv[1], tests[i].name))
+ {
+ tests[i].function ();
+ return 0;
+ }
+
+ fprintf (stderr, "unknown test %s; use --help for help\n", argv[1]);
+ return EXIT_FAILURE;
+ }
}
--- /dev/null
+AT_BANNER([range map library])
+
+m4_define([CHECK_RANGE_MAP],
+ [AT_SETUP([range-map -- $1])
+ AT_CHECK([range-map-test $1])
+ AT_CLEANUP])
+
+CHECK_RANGE_MAP([insert])
+CHECK_RANGE_MAP([delete-contiguous])
+CHECK_RANGE_MAP([delete-gaps])
/* PSPP - a program for statistical analysis.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "xalloc.h"
\f
-/* Currently running test. */
-static const char *test_name;
-
/* Exit with a failure code.
(Place a breakpoint on this function while debugging.) */
static void
{
if (!ok)
{
- printf ("Check failed in %s test at %s, line %d\n",
- test_name, __FILE__, line);
+ fprintf (stderr, "%s:%d: check failed\n", __FILE__, line);
check_die ();
}
}
\f
/* Main program. */
-/* Runs TEST_FUNCTION and prints a message about NAME. */
-static void
-run_test (void (*test_function) (void), const char *name)
-{
- test_name = name;
- putchar ('.');
- fflush (stdout);
- test_function ();
-}
+struct test
+ {
+ const char *name;
+ const char *description;
+ void (*function) (void);
+ };
+
+static const struct test tests[] =
+ {
+ {
+ "insert",
+ "insert",
+ test_insert
+ },
+ {
+ "delete",
+ "delete",
+ test_delete
+ },
+ {
+ "allocate",
+ "allocate",
+ test_allocate
+ },
+ {
+ "allocate-fully",
+ "allocate_fully",
+ test_allocate_fully
+ },
+ {
+ "pool",
+ "pool",
+ test_pool
+ },
+ {
+ "destroy-null",
+ "destroy null",
+ test_destroy_null
+ },
+ };
+
+enum { N_TESTS = sizeof tests / sizeof *tests };
int
-main (void)
+main (int argc, char *argv[])
{
- run_test (test_insert, "insert");
- run_test (test_delete, "delete");
- run_test (test_allocate, "allocate");
- run_test (test_allocate_fully, "allocate_fully");
- run_test (test_pool, "pool");
- run_test (test_destroy_null, "destroy null");
- putchar ('\n');
-
- return 0;
+ int i;
+
+ if (argc != 2)
+ {
+ fprintf (stderr, "exactly one argument required; use --help for help\n");
+ return EXIT_FAILURE;
+ }
+ else if (!strcmp (argv[1], "--help"))
+ {
+ printf ("%s: test range set library\n"
+ "usage: %s TEST-NAME\n"
+ "where TEST-NAME is one of the following:\n",
+ argv[0], argv[0]);
+ for (i = 0; i < N_TESTS; i++)
+ printf (" %s\n %s\n", tests[i].name, tests[i].description);
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < N_TESTS; i++)
+ if (!strcmp (argv[1], tests[i].name))
+ {
+ tests[i].function ();
+ return 0;
+ }
+
+ fprintf (stderr, "unknown test %s; use --help for help\n", argv[1]);
+ return EXIT_FAILURE;
+ }
}
--- /dev/null
+AT_BANNER([range set library])
+
+m4_define([CHECK_RANGE_SET],
+ [AT_SETUP([range-set -- $1])
+ AT_CHECK([range-set-test $1])
+ AT_CLEANUP])
+
+CHECK_RANGE_SET([insert])
+CHECK_RANGE_SET([delete])
+CHECK_RANGE_SET([allocate])
+CHECK_RANGE_SET([allocate-fully])
+CHECK_RANGE_SET([pool])
+CHECK_RANGE_SET([destroy-null])
/* PSPP - a program for statistical analysis.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#define UNUSED
#endif
-/* Currently running test. */
-static const char *test_name;
-
/* Exit with a failure code.
(Place a breakpoint on this function while debugging.) */
static void
{
if (!ok)
{
- printf ("%s:%d: Check failed in %s test\n",
- __FILE__, line, test_name);
+ fprintf (stderr, "%s:%d: check failed\n", __FILE__, line);
check_die ();
}
}
deletions = xnmalloc (cnt, sizeof *deletions);
for (stride = strides; stride < strides + stride_cnt; stride++)
{
+ printf ("%lu\n", *stride);
for (offset = offsets; offset < offsets + offset_cnt; offset++)
{
int k;
test_insert_delete (insertions, insertions, cnt);
test_insert_delete (insertions, deletions, cnt);
}
- putchar ('.');
- fflush (stdout);
}
free (insertions);
free (deletions);
sparse_array_destroy (spar);
free (has_values);
}
-
+\f
/* Main program. */
-/* Runs TEST_FUNCTION and prints a message about NAME. */
-static void
-run_test (void (*test_function) (void), const char *name)
-{
- test_name = name;
- putchar ('.');
- fflush (stdout);
- test_function ();
-}
+struct test
+ {
+ const char *name;
+ const char *description;
+ void (*function) (void);
+ };
+
+static const struct test tests[] =
+ {
+ {
+ "random-insert-delete",
+ "random insertions and deletions",
+ test_random_insert_delete
+ },
+ {
+ "insert-delete-strides",
+ "insert in ascending order with strides and offset",
+ test_insert_delete_strides
+ },
+ };
+
+enum { N_TESTS = sizeof tests / sizeof *tests };
int
-main (void)
+main (int argc, char *argv[])
{
- run_test (test_random_insert_delete,
- "random insertions and deletions");
- run_test (test_insert_delete_strides,
- "insert in ascending order with strides and offset");
- putchar ('\n');
+ int i;
- return 0;
+ if (argc != 2)
+ {
+ fprintf (stderr, "exactly one argument required; use --help for help\n");
+ return EXIT_FAILURE;
+ }
+ else if (!strcmp (argv[1], "--help"))
+ {
+ printf ("%s: test sparse array library\n"
+ "usage: %s TEST-NAME\n"
+ "where TEST-NAME is one of the following:\n",
+ argv[0], argv[0]);
+ for (i = 0; i < N_TESTS; i++)
+ printf (" %s\n %s\n", tests[i].name, tests[i].description);
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < N_TESTS; i++)
+ if (!strcmp (argv[1], tests[i].name))
+ {
+ tests[i].function ();
+ return 0;
+ }
+
+ fprintf (stderr, "unknown test %s; use --help for help\n", argv[1]);
+ return EXIT_FAILURE;
+ }
}
--- /dev/null
+AT_BANNER([sparse array library])
+
+m4_define([CHECK_SPARSE_ARRAY],
+ [AT_SETUP([sparse array -- $1])
+ AT_KEYWORDS([sparse-array])
+ AT_CHECK([sparse-array-test $1])
+ AT_CLEANUP])
+
+CHECK_SPARSE_ARRAY([random-insert-delete])
+
+AT_SETUP([sparse array -- insert and delete with strides])
+AT_KEYWORDS([sparse-array])
+AT_CHECK([sparse-array-test insert-delete-strides], [0], [dnl
+1
+2
+4
+16
+64
+4096
+262144
+16777216
+3
+5
+17
+67
+4099
+262147
+16777259
+])
+AT_CLEANUP
--- /dev/null
+AT_BANNER([sparse external arrays])
+
+m4_divert_push([PREPARE_TESTS])
+[sparse_xarray_queue_limit () {
+ # Each on-disk sparse_xarray eats up a file descriptor, so for the
+ # tests that involve on-disk sparse_xarrays we need to limit the
+ # maximum length of the queue. Figure out how many file descriptors
+ # we can let the test program open at once.
+ OPEN_MAX=`getconf OPEN_MAX 2>/dev/null`
+ case $OPEN_MAX in
+ [0-9]*)
+ # Divide by 2 because some fds are used by other code.
+ queue_limit=`expr $OPEN_MAX / 2`
+ ;;
+ undefined)
+ # Assume that any system with a dynamic fd limit has a large limit.
+ queue_limit=500
+ ;;
+ *)
+ case `uname -m 2>/dev/null` in
+ CYGWIN*)
+ # Cygwin claims a 256-fd limit as OPEN_MAX in <limits.h>.
+ queue_limit=128
+ ;;
+ MINGW*)
+ # The following email claims that Mingw should have a
+ # 2048-fd limit:
+ # http://www.mail-archive.com/squid-users@squid-cache.org/msg35249.html
+ queue_limit=1024
+ ;;
+ *)
+ # This seems fairly conservative these days.
+ queue_limit=50
+ ;;
+ esac
+ ;;
+ esac
+ echo "$queue_limit"
+}]
+m4_divert_pop([PREPARE_TESTS])
+
+AT_SETUP([in-memory sparse_xarray])
+dnl --values=3 would be a slightly better test but takes much longer.
+AT_CHECK([sparse-xarray-test$EXEEXT \
+ --verbosity=0 --queue-limit=`sparse_xarray_queue_limit` \
+ --columns=3 --max-rows=3 --max-memory-rows=3 --values=2],
+ [0], [ignore], [ignore])
+AT_CLEANUP
+
+m4_define([SPARSE_XARRAY_ON_DISK],
+ [AT_SETUP([on-disk sparse_xarray])
+ AT_CHECK([sparse-xarray-test$EXEEXT \
+ --verbosity=0 --queue-limit=`sparse_xarray_queue_limit` \
+ --columns=2 --max-rows=3 --max-memory-rows=$1 --values=2],
+ [0], [ignore], [ignore])
+ AT_CLEANUP])
+SPARSE_XARRAY_ON_DISK([0])
+SPARSE_XARRAY_ON_DISK([1])
+SPARSE_XARRAY_ON_DISK([2])
+
+AT_SETUP([copying between in-memory sparse_xarrays])
+AT_KEYWORDS([sparse_xarray])
+AT_CHECK([sparse-xarray-test$EXEEXT \
+ --verbosity=0 --queue-limit=`sparse_xarray_queue_limit` \
+ --columns=2 --max-rows=2 --max-memory-rows=2 --values=2 \
+ --xarrays=2 --no-write-rows --no-copy-columns],
+ [0], [ignore], [ignore])
+AT_CLEANUP
+
+m4_define([SPARSE_XARRAY_COPY_DISK],
+ [AT_SETUP([copying between on-disk sparse_xarrays])
+ AT_KEYWORDS([sparse_xarray])
+ limit=`sparse_xarray_queue_limit`
+ AT_CHECK([sparse-xarray-test$EXEEXT \
+ --verbosity=0 --queue-limit=`expr $limit / 2` \
+ --columns=1 --max-rows=2 --max-memory-rows=$max_memory_rows \
+ --values=2 --xarrays=2 --no-write-rows --no-copy-columns],
+ [0], [ignore], [ignore])
+ AT_CLEANUP])
+dnl These parameters are ridiculously low, but it's necessary
+dnl unless we want the tests to take a very long time.
+SPARSE_XARRAY_COPY_DISK([0])
+SPARSE_XARRAY_COPY_DISK([1])
+++ /dev/null
-#!/bin/sh
-
-# This program tests the sparse_xarray abstract data type implementation.
-
-set -e
-
-: ${top_builddir:=.}
-RUN_TEST="${top_builddir}/tests/libpspp/sparse-xarray-test$EXEEXT --verbosity=0"
-
-# Each on-disk sparse_xarray eats up a file descriptor, so for the
-# tests that involve on-disk sparse_xarrays we need to limit the
-# maximum length of the queue. Figure out how many file descriptors
-# we can let the test program open at once.
-OPEN_MAX=`getconf OPEN_MAX 2>/dev/null`
-case $OPEN_MAX in
- [0-9]*)
- # Divide by 2 because some fds are used by other code.
- queue_limit=`expr $OPEN_MAX / 2`
- ;;
- undefined)
- # Assume that any system with a dynamic fd limit has a large limit.
- queue_limit=500
- ;;
- *)
- case `uname -m 2>/dev/null` in
- CYGWIN*)
- # Cygwin claims a 256-fd limit as OPEN_MAX in <limits.h>.
- queue_limit=128
- ;;
- MINGW*)
- # The following email claims that Mingw should have a
- # 2048-fd limit:
- # http://www.mail-archive.com/squid-users@squid-cache.org/msg35249.html
- queue_limit=1024
- ;;
- *)
- # This seems fairly conservative these days.
- queue_limit=50
- ;;
- esac
- ;;
-esac
-
-# Test completely in-memory sparse_xarray. --values=3 would be a
-# slightly better test but takes much longer.
-$RUN_TEST --columns=3 --max-rows=3 --max-memory-rows=3 --values=2
-
-# Test on-disk sparse_xarrays.
-for max_memory_rows in 0 1 2; do
- $RUN_TEST --columns=2 --max-rows=3 --max-memory-rows=$max_memory_rows --values=2 --queue-limit=$queue_limit
-done
-
-# Test copying back and forth between a pair of sparse_xarrays in
-# memory.
-$RUN_TEST --columns=2 --max-rows=2 --max-memory-rows=2 --values=2 --xarrays=2 --no-write-rows --no-copy-columns
-
-# Test copying back and forth between a pair of sparse_xarrays on
-# disk. These parameters are ridiculously low, but it's necessary
-# unless we want the tests to take a very long time.
-for max_memory_rows in 0 1; do
- $RUN_TEST --columns=1 --max-rows=2 --max-memory-rows=$max_memory_rows --values=2 --xarrays=2 --queue-limit=`expr $queue_limit / 2` --no-write-rows --no-copy-columns
-done
/* PSPP - a program for statistical analysis.
- Copyright (C) 2008 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <stdio.h>
#include <stdlib.h>
\f
-/* Currently running test. */
-static const char *test_name;
-
/* Exit with a failure code.
(Place a breakpoint on this function while debugging.) */
static void
}
static void
-test_str_format_26adic (void)
+test_format_26adic (void)
{
check_26adic (0, "");
check_26adic (1, "A");
\f
/* Main program. */
-/* Runs TEST_FUNCTION and prints a message about NAME. */
-static void
-run_test (void (*test_function) (void), const char *name)
-{
- test_name = name;
- putchar ('.');
- fflush (stdout);
- test_function ();
-}
+struct test
+ {
+ const char *name;
+ const char *description;
+ void (*function) (void);
+ };
+
+static const struct test tests[] =
+ {
+ {
+ "format-26adic",
+ "format 26-adic strings",
+ test_format_26adic
+ }
+ };
+
+enum { N_TESTS = sizeof tests / sizeof *tests };
int
-main (void)
+main (int argc, char *argv[])
{
- run_test (test_str_format_26adic, "format 26-adic strings");
- putchar ('\n');
+ int i;
- return 0;
+ if (argc != 2)
+ {
+ fprintf (stderr, "exactly one argument required; use --help for help\n");
+ return EXIT_FAILURE;
+ }
+ else if (!strcmp (argv[1], "--help"))
+ {
+ printf ("%s: test string library\n"
+ "usage: %s TEST-NAME\n"
+ "where TEST-NAME is one of the following:\n",
+ argv[0], argv[0]);
+ for (i = 0; i < N_TESTS; i++)
+ printf (" %s\n %s\n", tests[i].name, tests[i].description);
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < N_TESTS; i++)
+ if (!strcmp (argv[1], tests[i].name))
+ {
+ tests[i].function ();
+ return 0;
+ }
+
+ fprintf (stderr, "unknown test %s; use --help for help\n", argv[1]);
+ return EXIT_FAILURE;
+ }
}
--- /dev/null
+AT_BANNER([string library])
+
+AT_SETUP([26-adic string formatting])
+AT_CHECK([str-test format-26adic])
+AT_CLEANUP
/* PSPP - a program for statistical analysis.
- Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <libpspp/compiler.h>
#include <libpspp/string-set.h>
\f
-/* Currently running test. */
-static const char *test_name;
-
/* Exit with a failure code.
(Place a breakpoint on this function while debugging.) */
static void
{
if (!ok)
{
- printf ("Check failed in %s test at %s, line %d\n",
- test_name, __FILE__, line);
+ fprintf (stderr, "%s:%d: check failed\n", __FILE__, line);
check_die ();
}
}
\f
/* Main program. */
-/* Runs TEST_FUNCTION and prints a message about NAME. */
-static void
-run_test (void (*test_function) (void), const char *name)
-{
- test_name = name;
- putchar ('.');
- fflush (stdout);
- test_function ();
-}
+struct test
+ {
+ const char *name;
+ const char *description;
+ void (*function) (void);
+ };
+
+static const struct test tests[] =
+ {
+ {
+ "insert-any-remove-any",
+ "insert any order, delete any order",
+ test_insert_any_remove_any
+ },
+ {
+ "insert-any-remove-same",
+ "insert any order, delete same order",
+ test_insert_any_remove_same
+ },
+ {
+ "insert-any-remove-reverse",
+ "insert any order, delete reverse order",
+ test_insert_any_remove_reverse
+ },
+ {
+ "random-sequence",
+ "insert and delete in random sequence",
+ test_random_sequence
+ },
+ {
+ "replace",
+ "insert and replace in random sequence",
+ test_replace
+ },
+ {
+ "insert-ordered",
+ "insert in ascending order",
+ test_insert_ordered
+ },
+ {
+ "clear",
+ "clear",
+ test_clear
+ },
+ {
+ "clone",
+ "clone",
+ test_clone
+ },
+ {
+ "swap",
+ "swap",
+ test_swap
+ },
+ {
+ "node-swap-value",
+ "node_swap_value",
+ test_node_swap_value
+ },
+ {
+ "insert-map",
+ "insert_map",
+ test_insert_map
+ },
+ {
+ "replace-map",
+ "replace_map",
+ test_replace_map
+ },
+ {
+ "get-keys-and-values",
+ "get keys and values",
+ test_get_keys_and_values
+ },
+ {
+ "destroy-null",
+ "destroying null table",
+ test_destroy_null
+ },
+ };
+
+enum { N_TESTS = sizeof tests / sizeof *tests };
int
-main (void)
-{
- run_test (test_insert_any_remove_any, "insert any order, delete any order");
- run_test (test_insert_any_remove_same,
- "insert any order, delete same order");
- run_test (test_insert_any_remove_reverse,
- "insert any order, delete reverse order");
- run_test (test_random_sequence, "insert and delete in random sequence");
- run_test (test_replace, "insert and replace in random sequence");
- run_test (test_insert_ordered, "insert in ascending order");
- run_test (test_clear, "clear");
- run_test (test_clone, "clone");
- run_test (test_swap, "swap");
- run_test (test_node_swap_value, "node_swap_value");
- run_test (test_insert_map, "insert_map");
- run_test (test_replace_map, "replace_map");
- run_test (test_get_keys_and_values, "get keys and values");
- run_test (test_destroy_null, "destroying null table");
-
- putchar ('\n');
-
- free_strings ();
-
- return 0;
+main (int argc, char *argv[])
+{
+ int i;
+
+ if (argc != 2)
+ {
+ fprintf (stderr, "exactly one argument required; use --help for help\n");
+ return EXIT_FAILURE;
+ }
+ else if (!strcmp (argv[1], "--help"))
+ {
+ printf ("%s: test string map library\n"
+ "usage: %s TEST-NAME\n"
+ "where TEST-NAME is one of the following:\n",
+ argv[0], argv[0]);
+ for (i = 0; i < N_TESTS; i++)
+ printf (" %s\n %s\n", tests[i].name, tests[i].description);
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < N_TESTS; i++)
+ if (!strcmp (argv[1], tests[i].name))
+ {
+ tests[i].function ();
+ free_strings ();
+ return 0;
+ }
+
+ fprintf (stderr, "unknown test %s; use --help for help\n", argv[1]);
+ return EXIT_FAILURE;
+ }
}
--- /dev/null
+AT_BANNER([string map library])
+
+m4_define([CHECK_STRING_MAP],
+ [AT_SETUP([string map -- $1])
+ AT_KEYWORDS([string-map])
+ AT_CHECK([string-map-test $1])
+ AT_CLEANUP])
+
+CHECK_STRING_MAP([insert-any-remove-any])
+CHECK_STRING_MAP([insert-any-remove-same])
+CHECK_STRING_MAP([insert-any-remove-reverse])
+CHECK_STRING_MAP([random-sequence])
+CHECK_STRING_MAP([replace])
+CHECK_STRING_MAP([insert-ordered])
+CHECK_STRING_MAP([clear])
+CHECK_STRING_MAP([clone])
+CHECK_STRING_MAP([swap])
+CHECK_STRING_MAP([node-swap-value])
+CHECK_STRING_MAP([insert-map])
+CHECK_STRING_MAP([replace-map])
+CHECK_STRING_MAP([get-keys-and-values])
+CHECK_STRING_MAP([destroy-null])
/* PSPP - a program for statistical analysis.
- Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <libpspp/compiler.h>
\f
-/* Currently running test. */
-static const char *test_name;
-
/* Exit with a failure code.
(Place a breakpoint on this function while debugging.) */
static void
{
if (!ok)
{
- printf ("Check failed in %s test at %s, line %d\n",
- test_name, __FILE__, line);
+ fprintf (stderr, "%s:%d: check failed\n", __FILE__, line);
check_die ();
}
}
\f
/* Main program. */
-/* Runs TEST_FUNCTION and prints a message about NAME. */
-static void
-run_test (void (*test_function) (void), const char *name)
-{
- test_name = name;
- putchar ('.');
- fflush (stdout);
- test_function ();
-}
+struct test
+ {
+ const char *name;
+ const char *description;
+ void (*function) (void);
+ };
+
+static const struct test tests[] =
+ {
+ {
+ "insert-any-remove-any",
+ "insert any order, delete any order",
+ test_insert_any_remove_any
+ },
+ {
+ "insert-any-remove-same",
+ "insert any order, delete same order",
+ test_insert_any_remove_same
+ },
+ {
+ "insert-any-remove-reverse",
+ "insert any order, delete reverse order",
+ test_insert_any_remove_reverse
+ },
+ {
+ "random-sequence",
+ "insert and delete in random sequence",
+ test_random_sequence
+ },
+ {
+ "insert-ordered",
+ "insert in ascending order",
+ test_insert_ordered
+ },
+ {
+ "union",
+ "union",
+ test_union
+ },
+ {
+ "union-and-intersection",
+ "union and intersection",
+ test_union_and_intersection
+ },
+ {
+ "intersect",
+ "intersect",
+ test_intersect
+ },
+ {
+ "subtract",
+ "subtract",
+ test_subtract
+ },
+ {
+ "swap",
+ "swap",
+ test_swap
+ },
+ {
+ "clear",
+ "clear",
+ test_clear
+ },
+ {
+ "clone",
+ "clone",
+ test_clone
+ },
+ {
+ "destroy-null",
+ "destroying null table",
+ test_destroy_null
+ },
+ };
+
+enum { N_TESTS = sizeof tests / sizeof *tests };
int
-main (void)
-{
- run_test (test_insert_any_remove_any, "insert any order, delete any order");
- run_test (test_insert_any_remove_same,
- "insert any order, delete same order");
- run_test (test_insert_any_remove_reverse,
- "insert any order, delete reverse order");
- run_test (test_random_sequence, "insert and delete in random sequence");
- run_test (test_insert_ordered, "insert in ascending order");
- run_test (test_union, "union");
- run_test (test_union_and_intersection, "union and intersection");
- run_test (test_intersect, "intersect");
- run_test (test_subtract, "subtract");
- run_test (test_swap, "swap");
- run_test (test_clear, "clear");
- run_test (test_clone, "clone");
- run_test (test_destroy_null, "destroying null table");
-
- putchar ('\n');
-
- free_strings ();
-
- return 0;
+main (int argc, char *argv[])
+{
+ int i;
+
+ if (argc != 2)
+ {
+ fprintf (stderr, "exactly one argument required; use --help for help\n");
+ return EXIT_FAILURE;
+ }
+ else if (!strcmp (argv[1], "--help"))
+ {
+ printf ("%s: test string set library\n"
+ "usage: %s TEST-NAME\n"
+ "where TEST-NAME is one of the following:\n",
+ argv[0], argv[0]);
+ for (i = 0; i < N_TESTS; i++)
+ printf (" %s\n %s\n", tests[i].name, tests[i].description);
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < N_TESTS; i++)
+ if (!strcmp (argv[1], tests[i].name))
+ {
+ tests[i].function ();
+ free_strings ();
+ return 0;
+ }
+
+ fprintf (stderr, "unknown test %s; use --help for help\n", argv[1]);
+ return EXIT_FAILURE;
+ }
}
--- /dev/null
+AT_BANNER([string set library])
+
+m4_define([CHECK_STRING_SET],
+ [AT_SETUP([string set -- $1])
+ AT_KEYWORDS([string-set])
+ AT_CHECK([string-set-test $1])
+ AT_CLEANUP])
+
+CHECK_STRING_SET([insert-any-remove-any])
+CHECK_STRING_SET([insert-any-remove-same])
+CHECK_STRING_SET([insert-any-remove-reverse])
+CHECK_STRING_SET([random-sequence])
+CHECK_STRING_SET([insert-ordered])
+CHECK_STRING_SET([union])
+CHECK_STRING_SET([union-and-intersection])
+CHECK_STRING_SET([intersect])
+CHECK_STRING_SET([subtract])
+CHECK_STRING_SET([swap])
+CHECK_STRING_SET([clear])
+CHECK_STRING_SET([clone])
+CHECK_STRING_SET([destroy-null])
#include "libpspp/string-set.h"
#include "libpspp/stringi-set.h"
\f
-/* Currently running test. */
-static const char *test_name;
-
/* Exit with a failure code.
(Place a breakpoint on this function while debugging.) */
static void
{
if (!ok)
{
- printf ("Check failed in %s test at %s, line %d\n",
- test_name, __FILE__, line);
+ fprintf (stderr, "%s:%d: check failed\n", __FILE__, line);
check_die ();
}
}
\f
/* Main program. */
-/* Runs TEST_FUNCTION and prints a message about NAME. */
-static void
-run_test (void (*test_function) (void), const char *name)
-{
- test_name = name;
- putchar ('.');
- fflush (stdout);
- test_function ();
-}
+struct test
+ {
+ const char *name;
+ const char *description;
+ void (*function) (void);
+ };
+
+static const struct test tests[] =
+ {
+ {
+ "insert-any-remove-any",
+ "insert any order, delete any order",
+ test_insert_any_remove_any
+ },
+ {
+ "insert-any-remove-same",
+ "insert any order, delete same order",
+ test_insert_any_remove_same
+ },
+ {
+ "insert-any-remove-reverse",
+ "insert any order, delete reverse order",
+ test_insert_any_remove_reverse
+ },
+ {
+ "random-sequence",
+ "insert and delete in random sequence",
+ test_random_sequence
+ },
+ {
+ "replace",
+ "insert and replace in random sequence",
+ test_replace
+ },
+ {
+ "insert-ordered",
+ "insert in ascending order",
+ test_insert_ordered
+ },
+ {
+ "clear",
+ "clear",
+ test_clear
+ },
+ {
+ "clone",
+ "clone",
+ test_clone
+ },
+ {
+ "swap",
+ "swap",
+ test_swap
+ },
+ {
+ "node-swap-value",
+ "node_swap_value",
+ test_node_swap_value
+ },
+ {
+ "insert-map",
+ "insert_map",
+ test_insert_map
+ },
+ {
+ "replace-map",
+ "replace_map",
+ test_replace_map
+ },
+ {
+ "get-keys-and-values",
+ "get keys and values",
+ test_get_keys_and_values
+ },
+ {
+ "destroy-null",
+ "destroying null table",
+ test_destroy_null
+ },
+ };
+
+enum { N_TESTS = sizeof tests / sizeof *tests };
int
-main (void)
-{
- run_test (test_insert_any_remove_any, "insert any order, delete any order");
- run_test (test_insert_any_remove_same,
- "insert any order, delete same order");
- run_test (test_insert_any_remove_reverse,
- "insert any order, delete reverse order");
- run_test (test_random_sequence, "insert and delete in random sequence");
- run_test (test_replace, "insert and replace in random sequence");
- run_test (test_insert_ordered, "insert in ascending order");
- run_test (test_clear, "clear");
- run_test (test_clone, "clone");
- run_test (test_swap, "swap");
- run_test (test_node_swap_value, "node_swap_value");
- run_test (test_insert_map, "insert_map");
- run_test (test_replace_map, "replace_map");
- run_test (test_get_keys_and_values, "get keys and values");
- run_test (test_destroy_null, "destroying null table");
-
- putchar ('\n');
-
- free_strings ();
-
- return 0;
+main (int argc, char *argv[])
+{
+ int i;
+
+ if (argc != 2)
+ {
+ fprintf (stderr, "exactly one argument required; use --help for help\n");
+ return EXIT_FAILURE;
+ }
+ else if (!strcmp (argv[1], "--help"))
+ {
+ printf ("%s: test case-insensitive string map library\n"
+ "usage: %s TEST-NAME\n"
+ "where TEST-NAME is one of the following:\n",
+ argv[0], argv[0]);
+ for (i = 0; i < N_TESTS; i++)
+ printf (" %s\n %s\n", tests[i].name, tests[i].description);
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < N_TESTS; i++)
+ if (!strcmp (argv[1], tests[i].name))
+ {
+ tests[i].function ();
+ free_strings ();
+ return 0;
+ }
+
+ fprintf (stderr, "unknown test %s; use --help for help\n", argv[1]);
+ return EXIT_FAILURE;
+ }
}
--- /dev/null
+AT_BANNER([case-insensitive string map library])
+
+m4_define([CHECK_STRINGI_MAP],
+ [AT_SETUP([case-insensitive string map -- $1])
+ AT_KEYWORDS([stringi-map])
+ AT_CHECK([stringi-map-test $1])
+ AT_CLEANUP])
+
+CHECK_STRINGI_MAP([insert-any-remove-any])
+CHECK_STRINGI_MAP([insert-any-remove-same])
+CHECK_STRINGI_MAP([insert-any-remove-reverse])
+CHECK_STRINGI_MAP([random-sequence])
+CHECK_STRINGI_MAP([replace])
+CHECK_STRINGI_MAP([insert-ordered])
+CHECK_STRINGI_MAP([clear])
+CHECK_STRINGI_MAP([clone])
+CHECK_STRINGI_MAP([swap])
+CHECK_STRINGI_MAP([node-swap-value])
+CHECK_STRINGI_MAP([insert-map])
+CHECK_STRINGI_MAP([replace-map])
+CHECK_STRINGI_MAP([get-keys-and-values])
+CHECK_STRINGI_MAP([destroy-null])
#include "libpspp/compiler.h"
#include "libpspp/str.h"
\f
-/* Currently running test. */
-static const char *test_name;
-
/* Exit with a failure code.
(Place a breakpoint on this function while debugging.) */
static void
{
if (!ok)
{
- printf ("Check failed in %s test at %s, line %d\n",
- test_name, __FILE__, line);
+ fprintf (stderr, "%s:%d: check failed\n", __FILE__, line);
check_die ();
}
}
\f
/* Main program. */
-/* Runs TEST_FUNCTION and prints a message about NAME. */
-static void
-run_test (void (*test_function) (void), const char *name)
-{
- test_name = name;
- putchar ('.');
- fflush (stdout);
- test_function ();
-}
+struct test
+ {
+ const char *name;
+ const char *description;
+ void (*function) (void);
+ };
+
+static const struct test tests[] =
+ {
+ {
+ "insert-any-remove-any",
+ "insert any order, delete any order",
+ test_insert_any_remove_any
+ },
+ {
+ "insert-any-remove-same",
+ "insert any order, delete same order",
+ test_insert_any_remove_same
+ },
+ {
+ "insert-any-remove-reverse",
+ "insert any order, delete reverse order",
+ test_insert_any_remove_reverse
+ },
+ {
+ "random-sequence",
+ "insert and delete in random sequence",
+ test_random_sequence
+ },
+ {
+ "insert-ordered",
+ "insert in ascending order",
+ test_insert_ordered
+ },
+ {
+ "union",
+ "union",
+ test_union
+ },
+ {
+ "union-and-intersection",
+ "union and intersection",
+ test_union_and_intersection
+ },
+ {
+ "intersect",
+ "intersect",
+ test_intersect
+ },
+ {
+ "subtract",
+ "subtract",
+ test_subtract
+ },
+ {
+ "swap",
+ "swap",
+ test_swap
+ },
+ {
+ "clear",
+ "clear",
+ test_clear
+ },
+ {
+ "clone",
+ "clone",
+ test_clone
+ },
+ {
+ "destroy-null",
+ "destroying null table",
+ test_destroy_null
+ },
+ };
+
+enum { N_TESTS = sizeof tests / sizeof *tests };
int
-main (void)
-{
- run_test (test_insert_any_remove_any, "insert any order, delete any order");
- run_test (test_insert_any_remove_same,
- "insert any order, delete same order");
- run_test (test_insert_any_remove_reverse,
- "insert any order, delete reverse order");
- run_test (test_random_sequence, "insert and delete in random sequence");
- run_test (test_insert_ordered, "insert in ascending order");
- run_test (test_union, "union");
- run_test (test_union_and_intersection, "union and intersection");
- run_test (test_intersect, "intersect");
- run_test (test_subtract, "subtract");
- run_test (test_swap, "swap");
- run_test (test_clear, "clear");
- run_test (test_clone, "clone");
- run_test (test_destroy_null, "destroying null table");
-
- putchar ('\n');
-
- free_strings ();
-
- return 0;
+main (int argc, char *argv[])
+{
+ int i;
+
+ if (argc != 2)
+ {
+ fprintf (stderr, "exactly one argument required; use --help for help\n");
+ return EXIT_FAILURE;
+ }
+ else if (!strcmp (argv[1], "--help"))
+ {
+ printf ("%s: test case-insensitive string set library\n"
+ "usage: %s TEST-NAME\n"
+ "where TEST-NAME is one of the following:\n",
+ argv[0], argv[0]);
+ for (i = 0; i < N_TESTS; i++)
+ printf (" %s\n %s\n", tests[i].name, tests[i].description);
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < N_TESTS; i++)
+ if (!strcmp (argv[1], tests[i].name))
+ {
+ tests[i].function ();
+ free_strings ();
+ return 0;
+ }
+
+ fprintf (stderr, "unknown test %s; use --help for help\n", argv[1]);
+ return EXIT_FAILURE;
+ }
}
--- /dev/null
+AT_BANNER([case-insensitive string set library])
+
+m4_define([CHECK_STRINGI_SET],
+ [AT_SETUP([case-insensitive string set -- $1])
+ AT_KEYWORDS([stringi-set])
+ AT_CHECK([stringi-set-test $1])
+ AT_CLEANUP])
+
+CHECK_STRINGI_SET([insert-any-remove-any])
+CHECK_STRINGI_SET([insert-any-remove-same])
+CHECK_STRINGI_SET([insert-any-remove-reverse])
+CHECK_STRINGI_SET([random-sequence])
+CHECK_STRINGI_SET([insert-ordered])
+CHECK_STRINGI_SET([union])
+CHECK_STRINGI_SET([union-and-intersection])
+CHECK_STRINGI_SET([intersect])
+CHECK_STRINGI_SET([subtract])
+CHECK_STRINGI_SET([swap])
+CHECK_STRINGI_SET([clear])
+CHECK_STRINGI_SET([clone])
+CHECK_STRINGI_SET([destroy-null])
/* PSPP - a program for statistical analysis.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "xalloc.h"
\f
-/* Currently running test. */
-static const char *test_name;
-
/* Exit with a failure code.
(Place a breakpoint on this function while debugging.) */
static void
{
if (!ok)
{
- printf ("Check failed in %s test at %s, line %d\n",
- test_name, __FILE__, line);
+ fprintf (stderr, "%s:%d: check failed\n", __FILE__, line);
check_die ();
}
}
\f
/* Main program. */
-/* Runs TEST_FUNCTION and prints a message about NAME. */
-static void
-run_test (void (*test_function) (void), const char *name)
-{
- test_name = name;
- putchar ('.');
- fflush (stdout);
- test_function ();
-}
+struct test
+ {
+ const char *name;
+ const char *description;
+ void (*function) (void);
+ };
+
+static const struct test tests[] =
+ {
+ {
+ "insert",
+ "insert",
+ test_insert
+ },
+ {
+ "delete",
+ "delete",
+ test_delete
+ },
+ {
+ "resize",
+ "resize",
+ test_resize
+ },
+ {
+ "splice-out",
+ "splice out",
+ test_splice_out
+ },
+ {
+ "splice-in",
+ "splice in",
+ test_splice_in
+ },
+ };
+
+enum { N_TESTS = sizeof tests / sizeof *tests };
int
-main (void)
+main (int argc, char *argv[])
{
- run_test (test_insert, "insert");
- run_test (test_delete, "delete");
- run_test (test_resize, "resize");
- run_test (test_splice_out, "splice out");
- run_test (test_splice_in, "splice in");
- putchar ('\n');
-
- return 0;
+ int i;
+
+ if (argc != 2)
+ {
+ fprintf (stderr, "exactly one argument required; use --help for help\n");
+ return EXIT_FAILURE;
+ }
+ else if (!strcmp (argv[1], "--help"))
+ {
+ printf ("%s: test tower library\n"
+ "usage: %s TEST-NAME\n"
+ "where TEST-NAME is one of the following:\n",
+ argv[0], argv[0]);
+ for (i = 0; i < N_TESTS; i++)
+ printf (" %s\n %s\n", tests[i].name, tests[i].description);
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < N_TESTS; i++)
+ if (!strcmp (argv[1], tests[i].name))
+ {
+ tests[i].function ();
+ return 0;
+ }
+
+ fprintf (stderr, "unknown test %s; use --help for help\n", argv[1]);
+ return EXIT_FAILURE;
+ }
}
--- /dev/null
+AT_BANNER([tower library])
+
+m4_define([CHECK_TOWER],
+ [AT_SETUP([tower -- $1])
+ AT_CHECK([tower-test $1])
+ AT_CLEANUP])
+
+CHECK_TOWER([insert])
+CHECK_TOWER([delete])
+CHECK_TOWER([resize])
+CHECK_TOWER([splice-out])
+CHECK_TOWER([splice-in])
+++ /dev/null
-7675324663485137890734831064091758592958428152951137532659418752338157675324663485137890734831064091758592958428152951137532658
-8886930894241775423783341867603681475586900279731022668741684555067148886930894241775423783341867603681475586900279731022668746
-4926115079091871527264278522424838562069980278342188725586260041526024926115079091871527264278522424838562069980278342188725589
-8198488920231958758793320014917736896880133221016088440640236265727008198488920231958758793320014917736896880133221016088440641
-4527778987095637298455415166506950647746645120849887640160659505391494527778987095637298455415166506950647746645120849887640166
-2399619670777327606635251150735186059118186910880465190328196246896752399619670777327606635251150735186059118186910880465190325
-1667799691266476994404743989237315394276412079760310706395103299441571667799691266476994404743989237315394276412079760310706394
-1623914684196892316847117011543627119597908599740525246164191508013201623914684196892316847117011543627119597908599740525246168
-3681393233760129489113121829599857288501099123283196628714148965084573681393233760129489113121829599857288501099123283196628710
-6418731145431082994856816505035997982096732150359754547299618487885306418731145431082994856816505035997982096732150359754547297
-2284534083749507716651086429071219765163759829793478587147234341234422284534083749507716651086429071219765163759829793478587149
-6617637452040749181349911788974757522469664838867901014182486697572956617637452040749181349911788974757522469664838867901014185
-9865713582686612007222010782682778269839299871393015436402026985409089865713582686612007222010782682778269839299871393015436406
-1163234537762200807794960252447773098443340762844734350378750440902951163234537762200807794960252447773098443340762844734350377
-9981663637563833300035426136702893989464123526087380834445132807905549981663637563833300035426136702893989464123526087380834449
-6821567746059103565005738960248842198995590602288700476282307110291686821567746059103565005738960248842198995590602288700476284
-0952774952675261545955280805340357545942400156201918638742082134243330952774952675261545955280805340357545942400156201918638748
-1641790193211861509106839217119496865877118406579619492614744114869021641790193211861509106839217119496865877118406579619492615
-3763182871580174789328837194968536876074344562932187960893275881656443763182871580174789328837194968536876074344562932187960891
-2046820753062224045535890932721137819807333757171926425442973439426792046820753062224045535890932721137819807333757171926425441
-7970620091940385928762632764618525899890186135929797170456339589318347970620091940385928762632764618525899890186135929797170458
-4841176017025105774506500896252757076690392034601283834048308843632644841176017025105774506500896252757076690392034601283834045
-6949973797990956291072158123887473582962673878519619834868801568536326949973797990956291072158123887473582962673878519619834868
-1396285996535489440816124700682933874365128786823824758133461156649721396285996535489440816124700682933874365128786823824758138
-0700489524358208358697349450036208378421878800636427151211185320194660700489524358208358697349450036208378421878800636427151218
--- /dev/null
+AT_BANNER([random distributions])
+
+m4_divert_push([PREPARE_TESTS])
+[randist_compare () {
+ cat > compare.pl <<'EOF'
+use strict;
+use warnings 'all';
+
+my ($epsilon) = 1;
+
+open (EXPECTED, '<', $ARGV[0]) or die "$ARGV[0]: open: $!\n";
+open (ACTUAL, '<', $ARGV[1]) or die "$ARGV[1]: open: $!\n";
+
+my ($errors) = 0;
+LINE: for (;;) {
+ my $a = <EXPECTED>;
+ my $b = <ACTUAL>;
+
+ last if !defined $a && !defined $b;
+ die "$ARGV[0]:$.: unexpected end of file\n" if !defined $a;
+ die "$ARGV[1]:$.: unexpected end of file\n" if !defined $b;
+
+ my (@a) = split (' ', $a);
+ my (@b) = split (' ', $b);
+ die "$ARGV[1]:$.: contains ". scalar (@b) . " fields but should "
+ . "contain " . scalar (@a) . "\n"
+ if $#a != $#b;
+ foreach my $i (0...$#a) {
+ die "$ARGV[1]:$.: unexpected number of decimals\n"
+ if count_decimals ($a[$i]) != count_decimals ($b[$i]);
+
+ my ($an) = to_int ($a[$i]);
+ my ($bn) = to_int ($b[$i]);
+ if ($an ne $bn && ($bn < $an - $epsilon || $bn > $an + $epsilon)) {
+ $errors++;
+ if ($errors > 50) {
+ print "$ARGV[1]: Additional differences suppressed.\n";
+ last LINE;
+ }
+ print "$ARGV[1]:$.: Values differ from $ARGV[0]:$.\n";
+ print "Expected:\n", $a;
+ print "Calculated:\n", $b;
+ }
+ }
+}
+exit ($errors > 0);
+
+sub count_decimals {
+ my ($s) = @_;
+ return length (substr ($s, index ($s, '.')));
+}
+
+sub to_int {
+ local ($_) = @_;
+ s/\.//;
+ return $_;
+}
+EOF
+}]
+m4_divert_pop([PREPARE_TESTS])
+
+m4_define([RANDIST_CHECK],
+ [AT_SETUP([random distributions -- $1])
+ randist_compare
+ AT_DATA([$1.in], [$4])
+ AT_DATA([$1.sps], [dnl
+DATA LIST LIST FILE='$1.in' NOTABLE SKIP=1
+ /P $2[]m4_foreach_w([function], [x $3], [ X[]function]).
+NUMERIC x $3 (F10.4).
+COMPUTE x = IDF.$1(P[]m4_foreach_w([variable], [$2], [, variable])).
+m4_foreach_w([function], [$3],
+ [COMPUTE function = function[].$1[](x[]m4_foreach_w([variable], [$2], [, variable])).
+])dnl
+DO IF $CASENUM = 1.
+PRINT OUTFILE='$1.out'/"dnl
+m4_foreach_w([variable], [P $2], [m4_format([%8s ], variable)])dnl
+m4_foreach_w([function], [x $3], [m4_format([%10s ], function)])".
+END IF.
+PRINT OUTFILE='$1.out'/P $2 x $3.
+EXECUTE.
+])
+ AT_CHECK([pspp -O format=csv $1.sps])
+ AT_CHECK([$PERL compare.pl $1.in $1.out])
+ AT_CLEANUP])
+
+RANDIST_CHECK([beta], [a b], [cdf pdf], [dnl
+ P a b x cdf pdf
+ .01 .75 .25 .0107 .0100 .7059
+ .01 .75 .50 .0047 .0100 1.5975
+ .01 .75 1.00 .0022 .0100 3.4812
+ .01 .75 1.50 .0014 .0100 5.4014
+ .01 .75 2.00 .0010 .0100 7.3328
+ .01 .75 2.50 .0008 .0100 9.2691
+ .01 .75 3.00 .0007 .0100 11.2077
+ .01 1.00 .25 .0394 .0100 .2577
+ .01 1.00 .50 .0199 .0100 .5051
+ .01 1.00 1.00 .0100 .0100 1.0000
+ .01 1.00 1.50 .0067 .0100 1.4950
+ .01 1.00 2.00 .0050 .0100 1.9900
+ .01 1.00 2.50 .0040 .0100 2.4850
+ .01 1.00 3.00 .0033 .0100 2.9800
+ .01 1.50 .25 .1343 .0100 .1168
+ .01 1.50 .50 .0808 .0100 .1888
+ .01 1.50 1.00 .0464 .0100 .3232
+ .01 1.50 1.50 .0328 .0100 .4538
+ .01 1.50 2.00 .0255 .0100 .5831
+ .01 1.50 2.50 .0208 .0100 .7118
+ .01 1.50 3.00 .0176 .0100 .8402
+ .10 .75 .25 .2094 .1000 .3968
+ .10 .75 .50 .0985 .1000 .7845
+ .10 .75 1.00 .0464 .1000 1.6158
+ .10 .75 1.50 .0302 .1000 2.4656
+ .10 .75 2.00 .0223 .1000 3.3210
+ .10 .75 2.50 .0177 .1000 4.1787
+ .10 .75 3.00 .0146 .1000 5.0376
+ .10 1.00 .25 .3439 .1000 .3429
+ .10 1.00 .50 .1900 .1000 .5556
+ .10 1.00 1.00 .1000 .1000 1.0000
+ .10 1.00 1.50 .0678 .1000 1.4482
+ .10 1.00 2.00 .0513 .1000 1.8974
+ .10 1.00 2.50 .0413 .1000 2.3469
+ .10 1.00 3.00 .0345 .1000 2.7965
+ .10 1.50 .25 .5280 .1000 .3650
+ .10 1.50 .50 .3514 .1000 .4685
+ .10 1.50 1.00 .2154 .1000 .6962
+ .10 1.50 1.50 .1565 .1000 .9252
+ .10 1.50 2.00 .1231 .1000 1.1537
+ .10 1.50 2.50 .1015 .1000 1.3821
+ .10 1.50 3.00 .0864 .1000 1.6102
+ .20 .75 .25 .4559 .2000 .4324
+ .20 .75 .50 .2372 .2000 .6847
+ .20 .75 1.00 .1170 .2000 1.2825
+ .20 .75 1.50 .0770 .2000 1.9025
+ .20 .75 2.00 .0573 .2000 2.5285
+ .20 .75 2.50 .0456 .2000 3.1569
+ .20 .75 3.00 .0379 .2000 3.7865
+ .20 1.00 .25 .5904 .2000 .4883
+ .20 1.00 .50 .3600 .2000 .6250
+ .20 1.00 1.00 .2000 .2000 1.0000
+ .20 1.00 1.50 .1382 .2000 1.3925
+ .20 1.00 2.00 .1056 .2000 1.7889
+ .20 1.00 2.50 .0854 .2000 2.1867
+ .20 1.00 3.00 .0717 .2000 2.5853
+ .20 1.50 .25 .7324 .2000 .6579
+ .20 1.50 .50 .5280 .2000 .6733
+ .20 1.50 1.00 .3420 .2000 .8772
+ .20 1.50 1.50 .2541 .2000 1.1086
+ .20 1.50 2.00 .2024 .2000 1.3456
+ .20 1.50 2.50 .1683 .2000 1.5847
+ .20 1.50 3.00 .1441 .2000 1.8249
+ .30 .75 .25 .6615 .3000 .5624
+ .30 .75 .50 .3852 .3000 .6756
+ .30 .75 1.00 .2008 .3000 1.1204
+ .30 .75 1.50 .1346 .3000 1.6023
+ .30 .75 2.00 .1010 .3000 2.0929
+ .30 .75 2.50 .0808 .3000 2.5868
+ .30 .75 3.00 .0673 .3000 3.0823
+ .30 1.00 .25 .7599 .3000 .7289
+ .30 1.00 .50 .5100 .3000 .7143
+ .30 1.00 1.00 .3000 .3000 1.0000
+ .30 1.00 1.50 .2116 .3000 1.3319
+ .30 1.00 2.00 .1633 .3000 1.6733
+ .30 1.00 2.50 .1330 .3000 2.0184
+ .30 1.00 3.00 .1121 .3000 2.3651
+ .30 1.50 .25 .8510 .3000 1.1004
+ .30 1.50 .50 .6576 .3000 .8823
+ .30 1.50 1.00 .4481 .3000 1.0041
+ .30 1.50 1.50 .3402 .3000 1.2064
+ .30 1.50 2.00 .2743 .3000 1.4253
+ .30 1.50 2.50 .2298 .3000 1.6503
+ .30 1.50 3.00 .1978 .3000 1.8782
+ .40 .75 .25 .8106 .4000 .8261
+ .40 .75 .50 .5300 .4000 .7134
+ .40 .75 1.00 .2947 .4000 1.0179
+ .40 .75 1.50 .2017 .4000 1.3908
+ .40 .75 2.00 .1530 .4000 1.7776
+ .40 .75 2.50 .1231 .4000 2.1695
+ .40 .75 3.00 .1029 .4000 2.5638
+ .40 1.00 .25 .8704 .4000 1.1574
+ .40 1.00 .50 .6400 .4000 .8333
+ .40 1.00 1.00 .4000 .4000 1.0000
+ .40 1.00 1.50 .2886 .4000 1.2651
+ .40 1.00 2.00 .2254 .4000 1.5492
+ .40 1.00 2.50 .1848 .4000 1.8401
+ .40 1.00 3.00 .1566 .4000 2.1341
+ .40 1.50 .25 .9219 .4000 1.8596
+ .40 1.50 .50 .7581 .4000 1.1269
+ .40 1.50 1.00 .5429 .4000 1.1052
+ .40 1.50 1.50 .4211 .4000 1.2573
+ .40 1.50 2.00 .3438 .4000 1.4428
+ .40 1.50 2.50 .2904 .4000 1.6405
+ .40 1.50 3.00 .2514 .4000 1.8440
+ .50 .75 .25 .9067 .5000 1.3662
+ .50 .75 .50 .6633 .5000 .7969
+ .50 .75 1.00 .3969 .5000 .9449
+ .50 .75 1.50 .2786 .5000 1.2197
+ .50 .75 2.00 .2139 .5000 1.5170
+ .50 .75 2.50 .1734 .5000 1.8224
+ .50 .75 3.00 .1458 .5000 2.1314
+ .50 1.00 .25 .9375 .5000 2.0000
+ .50 1.00 .50 .7500 .5000 1.0000
+ .50 1.00 1.00 .5000 .5000 1.0000
+ .50 1.00 1.50 .3700 .5000 1.1906
+ .50 1.00 2.00 .2929 .5000 1.4142
+ .50 1.00 2.50 .2421 .5000 1.6494
+ .50 1.00 3.00 .2063 .5000 1.8899
+ .50 1.50 .25 .9630 .5000 3.3258
+ .50 1.50 .50 .8368 .5000 1.4416
+ .50 1.50 1.00 .6300 .5000 1.1906
+ .50 1.50 1.50 .5000 .5000 1.2732
+ .50 1.50 2.00 .4136 .5000 1.4142
+ .50 1.50 2.50 .3525 .5000 1.5755
+ .50 1.50 3.00 .3069 .5000 1.7464
+ .60 .75 .25 .9613 .6000 2.6072
+ .60 .75 .50 .7793 .6000 .9454
+ .60 .75 1.00 .5061 .6000 .8892
+ .60 .75 1.50 .3662 .6000 1.0676
+ .60 .75 2.00 .2856 .6000 1.2826
+ .60 .75 2.50 .2337 .6000 1.5099
+ .60 .75 3.00 .1976 .6000 1.7426
+ .60 1.00 .25 .9744 .6000 3.9063
+ .60 1.00 .50 .8400 .6000 1.2500
+ .60 1.00 1.00 .6000 .6000 1.0000
+ .60 1.00 1.50 .4571 .6000 1.1052
+ .60 1.00 2.00 .3675 .6000 1.2649
+ .60 1.00 2.50 .3069 .6000 1.4427
+ .60 1.00 3.00 .2632 .6000 1.6287
+ .60 1.50 .25 .9850 .6000 6.6134
+ .60 1.50 .50 .8978 .6000 1.8869
+ .60 1.50 1.00 .7114 .6000 1.2651
+ .60 1.50 1.50 .5789 .6000 1.2573
+ .60 1.50 2.00 .4860 .6000 1.3438
+ .60 1.50 2.50 .4182 .6000 1.4617
+ .60 1.50 3.00 .3667 .6000 1.5938
+ .70 .75 .25 .9877 .7000 6.1137
+ .70 .75 .50 .8736 .7000 1.2142
+ .70 .75 1.00 .6215 .7000 .8447
+ .70 .75 1.50 .4670 .7000 .9214
+ .70 .75 2.00 .3714 .7000 1.0570
+ .70 .75 2.50 .3075 .7000 1.2110
+ .70 .75 3.00 .2622 .7000 1.3731
+ .70 1.00 .25 .9919 .7000 9.2593
+ .70 1.00 .50 .9100 .7000 1.6667
+ .70 1.00 1.00 .7000 .7000 1.0000
+ .70 1.00 1.50 .5519 .7000 1.0041
+ .70 1.00 2.00 .4523 .7000 1.0954
+ .70 1.00 2.50 .3822 .7000 1.2140
+ .70 1.00 3.00 .3306 .7000 1.3444
+ .70 1.50 .25 .9953 .7000 15.8068
+ .70 1.50 .50 .9434 .7000 2.5994
+ .70 1.50 1.00 .7884 .7000 1.3319
+ .70 1.50 1.50 .6598 .7000 1.2064
+ .70 1.50 2.00 .5635 .7000 1.2287
+ .70 1.50 2.50 .4905 .7000 1.2972
+ .70 1.50 3.00 .4337 .7000 1.3859
+ .80 .75 .25 .9976 .8000 20.5520
+ .80 .75 .50 .9431 .8000 1.7757
+ .80 .75 1.00 .7427 .8000 .8079
+ .80 .75 1.50 .5855 .8000 .7679
+ .80 .75 2.00 .4781 .8000 .8238
+ .80 .75 2.50 .4025 .8000 .9075
+ .80 .75 3.00 .3469 .8000 1.0028
+ .80 1.00 .25 .9984 .8000 31.2500
+ .80 1.00 .50 .9600 .8000 2.5000
+ .80 1.00 1.00 .8000 .8000 1.0000
+ .80 1.00 1.50 .6580 .8000 .8772
+ .80 1.00 2.00 .5528 .8000 .8944
+ .80 1.00 2.50 .4747 .8000 .9518
+ .80 1.00 3.00 .4152 .8000 1.0260
+ .80 1.50 .25 .9991 .8000 53.5108
+ .80 1.50 .50 .9751 .8000 3.9855
+ .80 1.50 1.00 .8618 .8000 1.3925
+ .80 1.50 1.50 .7459 .8000 1.1086
+ .80 1.50 2.00 .6508 .8000 1.0564
+ .80 1.50 2.50 .5748 .8000 1.0706
+ .80 1.50 3.00 .5137 .8000 1.1124
+ .90 .75 .25 .9998 .9000 164.2657
+ .90 .75 .50 .9857 .9000 3.4998
+ .90 .75 1.00 .8689 .9000 .7768
+ .90 .75 1.50 .7336 .9000 .5818
+ .90 .75 2.00 .6239 .9000 .5555
+ .90 .75 2.50 .5392 .9000 .5712
+ .90 .75 3.00 .4734 .9000 .6033
+ .90 1.00 .25 .9999 .9000 250.0000
+ .90 1.00 .50 .9900 .9000 5.0000
+ .90 1.00 1.00 .9000 .9000 1.0000
+ .90 1.00 1.50 .7846 .9000 .6962
+ .90 1.00 2.00 .6838 .9000 .6325
+ .90 1.00 2.50 .6019 .9000 .6280
+ .90 1.00 3.00 .5358 .9000 .6463
+ .90 1.50 .25 .9999 .9000 428.3866
+ .90 1.50 .50 .9938 .9000 8.0723
+ .90 1.50 1.00 .9322 .9000 1.4482
+ .90 1.50 1.50 .8435 .9000 .9252
+ .90 1.50 2.00 .7586 .9000 .7883
+ .90 1.50 2.50 .6847 .9000 .7461
+ .90 1.50 3.00 .6218 .9000 .7400
+ .99 .75 .25 1.0000 .9900 164255.717
+ .99 .75 .50 .9999 .9900 34.8318
+ .99 .75 1.00 .9867 .9900 .7525
+ .99 .75 1.50 .9412 .9900 .2568
+ .99 .75 2.00 .8779 .9900 .1656
+ .99 .75 2.50 .8116 .9900 .1348
+ .99 .75 3.00 .7492 .9900 .1220
+ .99 1.00 .25 1.0000 .9900 249999.999
+ .99 1.00 .50 .9999 .9900 50.0000
+ .99 1.00 1.00 .9900 .9900 1.0000
+ .99 1.00 1.50 .9536 .9900 .3232
+ .99 1.00 2.00 .9000 .9900 .2000
+ .99 1.00 2.50 .8415 .9900 .1577
+ .99 1.00 3.00 .7846 .9900 .1392
+ .99 1.50 .25 1.0000 .9900 428406.592
+ .99 1.50 .50 .9999 .9900 81.0536
+ .99 1.50 1.00 .9933 .9900 1.4950
+ .99 1.50 1.50 .9672 .9900 .4538
+ .99 1.50 2.00 .9260 .9900 .2669
+ .99 1.50 2.50 .8786 .9900 .2020
+ .99 1.50 3.00 .8302 .9900 .1724
+])
+
+RANDIST_CHECK([cauchy], [a b], [cdf pdf], [dnl
+ P a b x cdf pdf
+ .01 -5.00 .50 -20.9103 .0100 .0006
+ .01 -5.00 .75 -28.8654 .0100 .0004
+ .01 -5.00 1.00 -36.8205 .0100 .0003
+ .01 -5.00 1.25 -44.7756 .0100 .0003
+ .01 -5.00 1.50 -52.7308 .0100 .0002
+ .01 -4.00 .50 -19.9103 .0100 .0006
+ .01 -4.00 .75 -27.8654 .0100 .0004
+ .01 -4.00 1.00 -35.8205 .0100 .0003
+ .01 -4.00 1.25 -43.7756 .0100 .0003
+ .01 -4.00 1.50 -51.7308 .0100 .0002
+ .01 -3.00 .50 -18.9103 .0100 .0006
+ .01 -3.00 .75 -26.8654 .0100 .0004
+ .01 -3.00 1.00 -34.8205 .0100 .0003
+ .01 -3.00 1.25 -42.7756 .0100 .0003
+ .01 -3.00 1.50 -50.7308 .0100 .0002
+ .01 -2.00 .50 -17.9103 .0100 .0006
+ .01 -2.00 .75 -25.8654 .0100 .0004
+ .01 -2.00 1.00 -33.8205 .0100 .0003
+ .01 -2.00 1.25 -41.7756 .0100 .0003
+ .01 -2.00 1.50 -49.7308 .0100 .0002
+ .01 -1.00 .50 -16.9103 .0100 .0006
+ .01 -1.00 .75 -24.8654 .0100 .0004
+ .01 -1.00 1.00 -32.8205 .0100 .0003
+ .01 -1.00 1.25 -40.7756 .0100 .0003
+ .01 -1.00 1.50 -48.7308 .0100 .0002
+ .01 .00 .50 -15.9103 .0100 .0006
+ .01 .00 .75 -23.8654 .0100 .0004
+ .01 .00 1.00 -31.8205 .0100 .0003
+ .01 .00 1.25 -39.7756 .0100 .0003
+ .01 .00 1.50 -47.7308 .0100 .0002
+ .01 1.00 .50 -14.9103 .0100 .0006
+ .01 1.00 .75 -22.8654 .0100 .0004
+ .01 1.00 1.00 -30.8205 .0100 .0003
+ .01 1.00 1.25 -38.7756 .0100 .0003
+ .01 1.00 1.50 -46.7308 .0100 .0002
+ .01 2.00 .50 -13.9103 .0100 .0006
+ .01 2.00 .75 -21.8654 .0100 .0004
+ .01 2.00 1.00 -29.8205 .0100 .0003
+ .01 2.00 1.25 -37.7756 .0100 .0003
+ .01 2.00 1.50 -45.7308 .0100 .0002
+ .01 3.00 .50 -12.9103 .0100 .0006
+ .01 3.00 .75 -20.8654 .0100 .0004
+ .01 3.00 1.00 -28.8205 .0100 .0003
+ .01 3.00 1.25 -36.7756 .0100 .0003
+ .01 3.00 1.50 -44.7308 .0100 .0002
+ .01 4.00 .50 -11.9103 .0100 .0006
+ .01 4.00 .75 -19.8654 .0100 .0004
+ .01 4.00 1.00 -27.8205 .0100 .0003
+ .01 4.00 1.25 -35.7756 .0100 .0003
+ .01 4.00 1.50 -43.7308 .0100 .0002
+ .01 5.00 .50 -10.9103 .0100 .0006
+ .01 5.00 .75 -18.8654 .0100 .0004
+ .01 5.00 1.00 -26.8205 .0100 .0003
+ .01 5.00 1.25 -34.7756 .0100 .0003
+ .01 5.00 1.50 -42.7308 .0100 .0002
+ .10 -5.00 .50 -6.5388 .1000 .0608
+ .10 -5.00 .75 -7.3083 .1000 .0405
+ .10 -5.00 1.00 -8.0777 .1000 .0304
+ .10 -5.00 1.25 -8.8471 .1000 .0243
+ .10 -5.00 1.50 -9.6165 .1000 .0203
+ .10 -4.00 .50 -5.5388 .1000 .0608
+ .10 -4.00 .75 -6.3083 .1000 .0405
+ .10 -4.00 1.00 -7.0777 .1000 .0304
+ .10 -4.00 1.25 -7.8471 .1000 .0243
+ .10 -4.00 1.50 -8.6165 .1000 .0203
+ .10 -3.00 .50 -4.5388 .1000 .0608
+ .10 -3.00 .75 -5.3083 .1000 .0405
+ .10 -3.00 1.00 -6.0777 .1000 .0304
+ .10 -3.00 1.25 -6.8471 .1000 .0243
+ .10 -3.00 1.50 -7.6165 .1000 .0203
+ .10 -2.00 .50 -3.5388 .1000 .0608
+ .10 -2.00 .75 -4.3083 .1000 .0405
+ .10 -2.00 1.00 -5.0777 .1000 .0304
+ .10 -2.00 1.25 -5.8471 .1000 .0243
+ .10 -2.00 1.50 -6.6165 .1000 .0203
+ .10 -1.00 .50 -2.5388 .1000 .0608
+ .10 -1.00 .75 -3.3083 .1000 .0405
+ .10 -1.00 1.00 -4.0777 .1000 .0304
+ .10 -1.00 1.25 -4.8471 .1000 .0243
+ .10 -1.00 1.50 -5.6165 .1000 .0203
+ .10 .00 .50 -1.5388 .1000 .0608
+ .10 .00 .75 -2.3083 .1000 .0405
+ .10 .00 1.00 -3.0777 .1000 .0304
+ .10 .00 1.25 -3.8471 .1000 .0243
+ .10 .00 1.50 -4.6165 .1000 .0203
+ .10 1.00 .50 -.5388 .1000 .0608
+ .10 1.00 .75 -1.3083 .1000 .0405
+ .10 1.00 1.00 -2.0777 .1000 .0304
+ .10 1.00 1.25 -2.8471 .1000 .0243
+ .10 1.00 1.50 -3.6165 .1000 .0203
+ .10 2.00 .50 .4612 .1000 .0608
+ .10 2.00 .75 -.3083 .1000 .0405
+ .10 2.00 1.00 -1.0777 .1000 .0304
+ .10 2.00 1.25 -1.8471 .1000 .0243
+ .10 2.00 1.50 -2.6165 .1000 .0203
+ .10 3.00 .50 1.4612 .1000 .0608
+ .10 3.00 .75 .6917 .1000 .0405
+ .10 3.00 1.00 -.0777 .1000 .0304
+ .10 3.00 1.25 -.8471 .1000 .0243
+ .10 3.00 1.50 -1.6165 .1000 .0203
+ .10 4.00 .50 2.4612 .1000 .0608
+ .10 4.00 .75 1.6917 .1000 .0405
+ .10 4.00 1.00 .9223 .1000 .0304
+ .10 4.00 1.25 .1529 .1000 .0243
+ .10 4.00 1.50 -.6165 .1000 .0203
+ .10 5.00 .50 3.4612 .1000 .0608
+ .10 5.00 .75 2.6917 .1000 .0405
+ .10 5.00 1.00 1.9223 .1000 .0304
+ .10 5.00 1.25 1.1529 .1000 .0243
+ .10 5.00 1.50 .3835 .1000 .0203
+ .20 -5.00 .50 -5.6882 .2000 .2199
+ .20 -5.00 .75 -6.0323 .2000 .1466
+ .20 -5.00 1.00 -6.3764 .2000 .1100
+ .20 -5.00 1.25 -6.7205 .2000 .0880
+ .20 -5.00 1.50 -7.0646 .2000 .0733
+ .20 -4.00 .50 -4.6882 .2000 .2199
+ .20 -4.00 .75 -5.0323 .2000 .1466
+ .20 -4.00 1.00 -5.3764 .2000 .1100
+ .20 -4.00 1.25 -5.7205 .2000 .0880
+ .20 -4.00 1.50 -6.0646 .2000 .0733
+ .20 -3.00 .50 -3.6882 .2000 .2199
+ .20 -3.00 .75 -4.0323 .2000 .1466
+ .20 -3.00 1.00 -4.3764 .2000 .1100
+ .20 -3.00 1.25 -4.7205 .2000 .0880
+ .20 -3.00 1.50 -5.0646 .2000 .0733
+ .20 -2.00 .50 -2.6882 .2000 .2199
+ .20 -2.00 .75 -3.0323 .2000 .1466
+ .20 -2.00 1.00 -3.3764 .2000 .1100
+ .20 -2.00 1.25 -3.7205 .2000 .0880
+ .20 -2.00 1.50 -4.0646 .2000 .0733
+ .20 -1.00 .50 -1.6882 .2000 .2199
+ .20 -1.00 .75 -2.0323 .2000 .1466
+ .20 -1.00 1.00 -2.3764 .2000 .1100
+ .20 -1.00 1.25 -2.7205 .2000 .0880
+ .20 -1.00 1.50 -3.0646 .2000 .0733
+ .20 .00 .50 -.6882 .2000 .2199
+ .20 .00 .75 -1.0323 .2000 .1466
+ .20 .00 1.00 -1.3764 .2000 .1100
+ .20 .00 1.25 -1.7205 .2000 .0880
+ .20 .00 1.50 -2.0646 .2000 .0733
+ .20 1.00 .50 .3118 .2000 .2199
+ .20 1.00 .75 -.0323 .2000 .1466
+ .20 1.00 1.00 -.3764 .2000 .1100
+ .20 1.00 1.25 -.7205 .2000 .0880
+ .20 1.00 1.50 -1.0646 .2000 .0733
+ .20 2.00 .50 1.3118 .2000 .2199
+ .20 2.00 .75 .9677 .2000 .1466
+ .20 2.00 1.00 .6236 .2000 .1100
+ .20 2.00 1.25 .2795 .2000 .0880
+ .20 2.00 1.50 -.0646 .2000 .0733
+ .20 3.00 .50 2.3118 .2000 .2199
+ .20 3.00 .75 1.9677 .2000 .1466
+ .20 3.00 1.00 1.6236 .2000 .1100
+ .20 3.00 1.25 1.2795 .2000 .0880
+ .20 3.00 1.50 .9354 .2000 .0733
+ .20 4.00 .50 3.3118 .2000 .2199
+ .20 4.00 .75 2.9677 .2000 .1466
+ .20 4.00 1.00 2.6236 .2000 .1100
+ .20 4.00 1.25 2.2795 .2000 .0880
+ .20 4.00 1.50 1.9354 .2000 .0733
+ .20 5.00 .50 4.3118 .2000 .2199
+ .20 5.00 .75 3.9677 .2000 .1466
+ .20 5.00 1.00 3.6236 .2000 .1100
+ .20 5.00 1.25 3.2795 .2000 .0880
+ .20 5.00 1.50 2.9354 .2000 .0733
+ .30 -5.00 .50 -5.3633 .3000 .4167
+ .30 -5.00 .75 -5.5449 .3000 .2778
+ .30 -5.00 1.00 -5.7265 .3000 .2083
+ .30 -5.00 1.25 -5.9082 .3000 .1667
+ .30 -5.00 1.50 -6.0898 .3000 .1389
+ .30 -4.00 .50 -4.3633 .3000 .4167
+ .30 -4.00 .75 -4.5449 .3000 .2778
+ .30 -4.00 1.00 -4.7265 .3000 .2083
+ .30 -4.00 1.25 -4.9082 .3000 .1667
+ .30 -4.00 1.50 -5.0898 .3000 .1389
+ .30 -3.00 .50 -3.3633 .3000 .4167
+ .30 -3.00 .75 -3.5449 .3000 .2778
+ .30 -3.00 1.00 -3.7265 .3000 .2083
+ .30 -3.00 1.25 -3.9082 .3000 .1667
+ .30 -3.00 1.50 -4.0898 .3000 .1389
+ .30 -2.00 .50 -2.3633 .3000 .4167
+ .30 -2.00 .75 -2.5449 .3000 .2778
+ .30 -2.00 1.00 -2.7265 .3000 .2083
+ .30 -2.00 1.25 -2.9082 .3000 .1667
+ .30 -2.00 1.50 -3.0898 .3000 .1389
+ .30 -1.00 .50 -1.3633 .3000 .4167
+ .30 -1.00 .75 -1.5449 .3000 .2778
+ .30 -1.00 1.00 -1.7265 .3000 .2083
+ .30 -1.00 1.25 -1.9082 .3000 .1667
+ .30 -1.00 1.50 -2.0898 .3000 .1389
+ .30 .00 .50 -.3633 .3000 .4167
+ .30 .00 .75 -.5449 .3000 .2778
+ .30 .00 1.00 -.7265 .3000 .2083
+ .30 .00 1.25 -.9082 .3000 .1667
+ .30 .00 1.50 -1.0898 .3000 .1389
+ .30 1.00 .50 .6367 .3000 .4167
+ .30 1.00 .75 .4551 .3000 .2778
+ .30 1.00 1.00 .2735 .3000 .2083
+ .30 1.00 1.25 .0918 .3000 .1667
+ .30 1.00 1.50 -.0898 .3000 .1389
+ .30 2.00 .50 1.6367 .3000 .4167
+ .30 2.00 .75 1.4551 .3000 .2778
+ .30 2.00 1.00 1.2735 .3000 .2083
+ .30 2.00 1.25 1.0918 .3000 .1667
+ .30 2.00 1.50 .9102 .3000 .1389
+ .30 3.00 .50 2.6367 .3000 .4167
+ .30 3.00 .75 2.4551 .3000 .2778
+ .30 3.00 1.00 2.2735 .3000 .2083
+ .30 3.00 1.25 2.0918 .3000 .1667
+ .30 3.00 1.50 1.9102 .3000 .1389
+ .30 4.00 .50 3.6367 .3000 .4167
+ .30 4.00 .75 3.4551 .3000 .2778
+ .30 4.00 1.00 3.2735 .3000 .2083
+ .30 4.00 1.25 3.0918 .3000 .1667
+ .30 4.00 1.50 2.9102 .3000 .1389
+ .30 5.00 .50 4.6367 .3000 .4167
+ .30 5.00 .75 4.4551 .3000 .2778
+ .30 5.00 1.00 4.2735 .3000 .2083
+ .30 5.00 1.25 4.0918 .3000 .1667
+ .30 5.00 1.50 3.9102 .3000 .1389
+ .40 -5.00 .50 -5.1625 .4000 .5758
+ .40 -5.00 .75 -5.2437 .4000 .3839
+ .40 -5.00 1.00 -5.3249 .4000 .2879
+ .40 -5.00 1.25 -5.4061 .4000 .2303
+ .40 -5.00 1.50 -5.4874 .4000 .1919
+ .40 -4.00 .50 -4.1625 .4000 .5758
+ .40 -4.00 .75 -4.2437 .4000 .3839
+ .40 -4.00 1.00 -4.3249 .4000 .2879
+ .40 -4.00 1.25 -4.4061 .4000 .2303
+ .40 -4.00 1.50 -4.4874 .4000 .1919
+ .40 -3.00 .50 -3.1625 .4000 .5758
+ .40 -3.00 .75 -3.2437 .4000 .3839
+ .40 -3.00 1.00 -3.3249 .4000 .2879
+ .40 -3.00 1.25 -3.4061 .4000 .2303
+ .40 -3.00 1.50 -3.4874 .4000 .1919
+ .40 -2.00 .50 -2.1625 .4000 .5758
+ .40 -2.00 .75 -2.2437 .4000 .3839
+ .40 -2.00 1.00 -2.3249 .4000 .2879
+ .40 -2.00 1.25 -2.4061 .4000 .2303
+ .40 -2.00 1.50 -2.4874 .4000 .1919
+ .40 -1.00 .50 -1.1625 .4000 .5758
+ .40 -1.00 .75 -1.2437 .4000 .3839
+ .40 -1.00 1.00 -1.3249 .4000 .2879
+ .40 -1.00 1.25 -1.4061 .4000 .2303
+ .40 -1.00 1.50 -1.4874 .4000 .1919
+ .40 .00 .50 -.1625 .4000 .5758
+ .40 .00 .75 -.2437 .4000 .3839
+ .40 .00 1.00 -.3249 .4000 .2879
+ .40 .00 1.25 -.4061 .4000 .2303
+ .40 .00 1.50 -.4874 .4000 .1919
+ .40 1.00 .50 .8375 .4000 .5758
+ .40 1.00 .75 .7563 .4000 .3839
+ .40 1.00 1.00 .6751 .4000 .2879
+ .40 1.00 1.25 .5939 .4000 .2303
+ .40 1.00 1.50 .5126 .4000 .1919
+ .40 2.00 .50 1.8375 .4000 .5758
+ .40 2.00 .75 1.7563 .4000 .3839
+ .40 2.00 1.00 1.6751 .4000 .2879
+ .40 2.00 1.25 1.5939 .4000 .2303
+ .40 2.00 1.50 1.5126 .4000 .1919
+ .40 3.00 .50 2.8375 .4000 .5758
+ .40 3.00 .75 2.7563 .4000 .3839
+ .40 3.00 1.00 2.6751 .4000 .2879
+ .40 3.00 1.25 2.5939 .4000 .2303
+ .40 3.00 1.50 2.5126 .4000 .1919
+ .40 4.00 .50 3.8375 .4000 .5758
+ .40 4.00 .75 3.7563 .4000 .3839
+ .40 4.00 1.00 3.6751 .4000 .2879
+ .40 4.00 1.25 3.5939 .4000 .2303
+ .40 4.00 1.50 3.5126 .4000 .1919
+ .40 5.00 .50 4.8375 .4000 .5758
+ .40 5.00 .75 4.7563 .4000 .3839
+ .40 5.00 1.00 4.6751 .4000 .2879
+ .40 5.00 1.25 4.5939 .4000 .2303
+ .40 5.00 1.50 4.5126 .4000 .1919
+ .50 -5.00 .50 -5.0000 .5000 .6366
+ .50 -5.00 .75 -5.0000 .5000 .4244
+ .50 -5.00 1.00 -5.0000 .5000 .3183
+ .50 -5.00 1.25 -5.0000 .5000 .2546
+ .50 -5.00 1.50 -5.0000 .5000 .2122
+ .50 -4.00 .50 -4.0000 .5000 .6366
+ .50 -4.00 .75 -4.0000 .5000 .4244
+ .50 -4.00 1.00 -4.0000 .5000 .3183
+ .50 -4.00 1.25 -4.0000 .5000 .2546
+ .50 -4.00 1.50 -4.0000 .5000 .2122
+ .50 -3.00 .50 -3.0000 .5000 .6366
+ .50 -3.00 .75 -3.0000 .5000 .4244
+ .50 -3.00 1.00 -3.0000 .5000 .3183
+ .50 -3.00 1.25 -3.0000 .5000 .2546
+ .50 -3.00 1.50 -3.0000 .5000 .2122
+ .50 -2.00 .50 -2.0000 .5000 .6366
+ .50 -2.00 .75 -2.0000 .5000 .4244
+ .50 -2.00 1.00 -2.0000 .5000 .3183
+ .50 -2.00 1.25 -2.0000 .5000 .2546
+ .50 -2.00 1.50 -2.0000 .5000 .2122
+ .50 -1.00 .50 -1.0000 .5000 .6366
+ .50 -1.00 .75 -1.0000 .5000 .4244
+ .50 -1.00 1.00 -1.0000 .5000 .3183
+ .50 -1.00 1.25 -1.0000 .5000 .2546
+ .50 -1.00 1.50 -1.0000 .5000 .2122
+ .50 .00 .50 .0000 .5000 .6366
+ .50 .00 .75 .0000 .5000 .4244
+ .50 .00 1.00 .0000 .5000 .3183
+ .50 .00 1.25 .0000 .5000 .2546
+ .50 .00 1.50 .0000 .5000 .2122
+ .50 1.00 .50 1.0000 .5000 .6366
+ .50 1.00 .75 1.0000 .5000 .4244
+ .50 1.00 1.00 1.0000 .5000 .3183
+ .50 1.00 1.25 1.0000 .5000 .2546
+ .50 1.00 1.50 1.0000 .5000 .2122
+ .50 2.00 .50 2.0000 .5000 .6366
+ .50 2.00 .75 2.0000 .5000 .4244
+ .50 2.00 1.00 2.0000 .5000 .3183
+ .50 2.00 1.25 2.0000 .5000 .2546
+ .50 2.00 1.50 2.0000 .5000 .2122
+ .50 3.00 .50 3.0000 .5000 .6366
+ .50 3.00 .75 3.0000 .5000 .4244
+ .50 3.00 1.00 3.0000 .5000 .3183
+ .50 3.00 1.25 3.0000 .5000 .2546
+ .50 3.00 1.50 3.0000 .5000 .2122
+ .50 4.00 .50 4.0000 .5000 .6366
+ .50 4.00 .75 4.0000 .5000 .4244
+ .50 4.00 1.00 4.0000 .5000 .3183
+ .50 4.00 1.25 4.0000 .5000 .2546
+ .50 4.00 1.50 4.0000 .5000 .2122
+ .50 5.00 .50 5.0000 .5000 .6366
+ .50 5.00 .75 5.0000 .5000 .4244
+ .50 5.00 1.00 5.0000 .5000 .3183
+ .50 5.00 1.25 5.0000 .5000 .2546
+ .50 5.00 1.50 5.0000 .5000 .2122
+ .60 -5.00 .50 -4.8375 .6000 .5758
+ .60 -5.00 .75 -4.7563 .6000 .3839
+ .60 -5.00 1.00 -4.6751 .6000 .2879
+ .60 -5.00 1.25 -4.5939 .6000 .2303
+ .60 -5.00 1.50 -4.5126 .6000 .1919
+ .60 -4.00 .50 -3.8375 .6000 .5758
+ .60 -4.00 .75 -3.7563 .6000 .3839
+ .60 -4.00 1.00 -3.6751 .6000 .2879
+ .60 -4.00 1.25 -3.5939 .6000 .2303
+ .60 -4.00 1.50 -3.5126 .6000 .1919
+ .60 -3.00 .50 -2.8375 .6000 .5758
+ .60 -3.00 .75 -2.7563 .6000 .3839
+ .60 -3.00 1.00 -2.6751 .6000 .2879
+ .60 -3.00 1.25 -2.5939 .6000 .2303
+ .60 -3.00 1.50 -2.5126 .6000 .1919
+ .60 -2.00 .50 -1.8375 .6000 .5758
+ .60 -2.00 .75 -1.7563 .6000 .3839
+ .60 -2.00 1.00 -1.6751 .6000 .2879
+ .60 -2.00 1.25 -1.5939 .6000 .2303
+ .60 -2.00 1.50 -1.5126 .6000 .1919
+ .60 -1.00 .50 -.8375 .6000 .5758
+ .60 -1.00 .75 -.7563 .6000 .3839
+ .60 -1.00 1.00 -.6751 .6000 .2879
+ .60 -1.00 1.25 -.5939 .6000 .2303
+ .60 -1.00 1.50 -.5126 .6000 .1919
+ .60 .00 .50 .1625 .6000 .5758
+ .60 .00 .75 .2437 .6000 .3839
+ .60 .00 1.00 .3249 .6000 .2879
+ .60 .00 1.25 .4061 .6000 .2303
+ .60 .00 1.50 .4874 .6000 .1919
+ .60 1.00 .50 1.1625 .6000 .5758
+ .60 1.00 .75 1.2437 .6000 .3839
+ .60 1.00 1.00 1.3249 .6000 .2879
+ .60 1.00 1.25 1.4061 .6000 .2303
+ .60 1.00 1.50 1.4874 .6000 .1919
+ .60 2.00 .50 2.1625 .6000 .5758
+ .60 2.00 .75 2.2437 .6000 .3839
+ .60 2.00 1.00 2.3249 .6000 .2879
+ .60 2.00 1.25 2.4061 .6000 .2303
+ .60 2.00 1.50 2.4874 .6000 .1919
+ .60 3.00 .50 3.1625 .6000 .5758
+ .60 3.00 .75 3.2437 .6000 .3839
+ .60 3.00 1.00 3.3249 .6000 .2879
+ .60 3.00 1.25 3.4061 .6000 .2303
+ .60 3.00 1.50 3.4874 .6000 .1919
+ .60 4.00 .50 4.1625 .6000 .5758
+ .60 4.00 .75 4.2437 .6000 .3839
+ .60 4.00 1.00 4.3249 .6000 .2879
+ .60 4.00 1.25 4.4061 .6000 .2303
+ .60 4.00 1.50 4.4874 .6000 .1919
+ .60 5.00 .50 5.1625 .6000 .5758
+ .60 5.00 .75 5.2437 .6000 .3839
+ .60 5.00 1.00 5.3249 .6000 .2879
+ .60 5.00 1.25 5.4061 .6000 .2303
+ .60 5.00 1.50 5.4874 .6000 .1919
+ .70 -5.00 .50 -4.6367 .7000 .4167
+ .70 -5.00 .75 -4.4551 .7000 .2778
+ .70 -5.00 1.00 -4.2735 .7000 .2083
+ .70 -5.00 1.25 -4.0918 .7000 .1667
+ .70 -5.00 1.50 -3.9102 .7000 .1389
+ .70 -4.00 .50 -3.6367 .7000 .4167
+ .70 -4.00 .75 -3.4551 .7000 .2778
+ .70 -4.00 1.00 -3.2735 .7000 .2083
+ .70 -4.00 1.25 -3.0918 .7000 .1667
+ .70 -4.00 1.50 -2.9102 .7000 .1389
+ .70 -3.00 .50 -2.6367 .7000 .4167
+ .70 -3.00 .75 -2.4551 .7000 .2778
+ .70 -3.00 1.00 -2.2735 .7000 .2083
+ .70 -3.00 1.25 -2.0918 .7000 .1667
+ .70 -3.00 1.50 -1.9102 .7000 .1389
+ .70 -2.00 .50 -1.6367 .7000 .4167
+ .70 -2.00 .75 -1.4551 .7000 .2778
+ .70 -2.00 1.00 -1.2735 .7000 .2083
+ .70 -2.00 1.25 -1.0918 .7000 .1667
+ .70 -2.00 1.50 -.9102 .7000 .1389
+ .70 -1.00 .50 -.6367 .7000 .4167
+ .70 -1.00 .75 -.4551 .7000 .2778
+ .70 -1.00 1.00 -.2735 .7000 .2083
+ .70 -1.00 1.25 -.0918 .7000 .1667
+ .70 -1.00 1.50 .0898 .7000 .1389
+ .70 .00 .50 .3633 .7000 .4167
+ .70 .00 .75 .5449 .7000 .2778
+ .70 .00 1.00 .7265 .7000 .2083
+ .70 .00 1.25 .9082 .7000 .1667
+ .70 .00 1.50 1.0898 .7000 .1389
+ .70 1.00 .50 1.3633 .7000 .4167
+ .70 1.00 .75 1.5449 .7000 .2778
+ .70 1.00 1.00 1.7265 .7000 .2083
+ .70 1.00 1.25 1.9082 .7000 .1667
+ .70 1.00 1.50 2.0898 .7000 .1389
+ .70 2.00 .50 2.3633 .7000 .4167
+ .70 2.00 .75 2.5449 .7000 .2778
+ .70 2.00 1.00 2.7265 .7000 .2083
+ .70 2.00 1.25 2.9082 .7000 .1667
+ .70 2.00 1.50 3.0898 .7000 .1389
+ .70 3.00 .50 3.3633 .7000 .4167
+ .70 3.00 .75 3.5449 .7000 .2778
+ .70 3.00 1.00 3.7265 .7000 .2083
+ .70 3.00 1.25 3.9082 .7000 .1667
+ .70 3.00 1.50 4.0898 .7000 .1389
+ .70 4.00 .50 4.3633 .7000 .4167
+ .70 4.00 .75 4.5449 .7000 .2778
+ .70 4.00 1.00 4.7265 .7000 .2083
+ .70 4.00 1.25 4.9082 .7000 .1667
+ .70 4.00 1.50 5.0898 .7000 .1389
+ .70 5.00 .50 5.3633 .7000 .4167
+ .70 5.00 .75 5.5449 .7000 .2778
+ .70 5.00 1.00 5.7265 .7000 .2083
+ .70 5.00 1.25 5.9082 .7000 .1667
+ .70 5.00 1.50 6.0898 .7000 .1389
+ .80 -5.00 .50 -4.3118 .8000 .2199
+ .80 -5.00 .75 -3.9677 .8000 .1466
+ .80 -5.00 1.00 -3.6236 .8000 .1100
+ .80 -5.00 1.25 -3.2795 .8000 .0880
+ .80 -5.00 1.50 -2.9354 .8000 .0733
+ .80 -4.00 .50 -3.3118 .8000 .2199
+ .80 -4.00 .75 -2.9677 .8000 .1466
+ .80 -4.00 1.00 -2.6236 .8000 .1100
+ .80 -4.00 1.25 -2.2795 .8000 .0880
+ .80 -4.00 1.50 -1.9354 .8000 .0733
+ .80 -3.00 .50 -2.3118 .8000 .2199
+ .80 -3.00 .75 -1.9677 .8000 .1466
+ .80 -3.00 1.00 -1.6236 .8000 .1100
+ .80 -3.00 1.25 -1.2795 .8000 .0880
+ .80 -3.00 1.50 -.9354 .8000 .0733
+ .80 -2.00 .50 -1.3118 .8000 .2199
+ .80 -2.00 .75 -.9677 .8000 .1466
+ .80 -2.00 1.00 -.6236 .8000 .1100
+ .80 -2.00 1.25 -.2795 .8000 .0880
+ .80 -2.00 1.50 .0646 .8000 .0733
+ .80 -1.00 .50 -.3118 .8000 .2199
+ .80 -1.00 .75 .0323 .8000 .1466
+ .80 -1.00 1.00 .3764 .8000 .1100
+ .80 -1.00 1.25 .7205 .8000 .0880
+ .80 -1.00 1.50 1.0646 .8000 .0733
+ .80 .00 .50 .6882 .8000 .2199
+ .80 .00 .75 1.0323 .8000 .1466
+ .80 .00 1.00 1.3764 .8000 .1100
+ .80 .00 1.25 1.7205 .8000 .0880
+ .80 .00 1.50 2.0646 .8000 .0733
+ .80 1.00 .50 1.6882 .8000 .2199
+ .80 1.00 .75 2.0323 .8000 .1466
+ .80 1.00 1.00 2.3764 .8000 .1100
+ .80 1.00 1.25 2.7205 .8000 .0880
+ .80 1.00 1.50 3.0646 .8000 .0733
+ .80 2.00 .50 2.6882 .8000 .2199
+ .80 2.00 .75 3.0323 .8000 .1466
+ .80 2.00 1.00 3.3764 .8000 .1100
+ .80 2.00 1.25 3.7205 .8000 .0880
+ .80 2.00 1.50 4.0646 .8000 .0733
+ .80 3.00 .50 3.6882 .8000 .2199
+ .80 3.00 .75 4.0323 .8000 .1466
+ .80 3.00 1.00 4.3764 .8000 .1100
+ .80 3.00 1.25 4.7205 .8000 .0880
+ .80 3.00 1.50 5.0646 .8000 .0733
+ .80 4.00 .50 4.6882 .8000 .2199
+ .80 4.00 .75 5.0323 .8000 .1466
+ .80 4.00 1.00 5.3764 .8000 .1100
+ .80 4.00 1.25 5.7205 .8000 .0880
+ .80 4.00 1.50 6.0646 .8000 .0733
+ .80 5.00 .50 5.6882 .8000 .2199
+ .80 5.00 .75 6.0323 .8000 .1466
+ .80 5.00 1.00 6.3764 .8000 .1100
+ .80 5.00 1.25 6.7205 .8000 .0880
+ .80 5.00 1.50 7.0646 .8000 .0733
+ .90 -5.00 .50 -3.4612 .9000 .0608
+ .90 -5.00 .75 -2.6917 .9000 .0405
+ .90 -5.00 1.00 -1.9223 .9000 .0304
+ .90 -5.00 1.25 -1.1529 .9000 .0243
+ .90 -5.00 1.50 -.3835 .9000 .0203
+ .90 -4.00 .50 -2.4612 .9000 .0608
+ .90 -4.00 .75 -1.6917 .9000 .0405
+ .90 -4.00 1.00 -.9223 .9000 .0304
+ .90 -4.00 1.25 -.1529 .9000 .0243
+ .90 -4.00 1.50 .6165 .9000 .0203
+ .90 -3.00 .50 -1.4612 .9000 .0608
+ .90 -3.00 .75 -.6917 .9000 .0405
+ .90 -3.00 1.00 .0777 .9000 .0304
+ .90 -3.00 1.25 .8471 .9000 .0243
+ .90 -3.00 1.50 1.6165 .9000 .0203
+ .90 -2.00 .50 -.4612 .9000 .0608
+ .90 -2.00 .75 .3083 .9000 .0405
+ .90 -2.00 1.00 1.0777 .9000 .0304
+ .90 -2.00 1.25 1.8471 .9000 .0243
+ .90 -2.00 1.50 2.6165 .9000 .0203
+ .90 -1.00 .50 .5388 .9000 .0608
+ .90 -1.00 .75 1.3083 .9000 .0405
+ .90 -1.00 1.00 2.0777 .9000 .0304
+ .90 -1.00 1.25 2.8471 .9000 .0243
+ .90 -1.00 1.50 3.6165 .9000 .0203
+ .90 .00 .50 1.5388 .9000 .0608
+ .90 .00 .75 2.3083 .9000 .0405
+ .90 .00 1.00 3.0777 .9000 .0304
+ .90 .00 1.25 3.8471 .9000 .0243
+ .90 .00 1.50 4.6165 .9000 .0203
+ .90 1.00 .50 2.5388 .9000 .0608
+ .90 1.00 .75 3.3083 .9000 .0405
+ .90 1.00 1.00 4.0777 .9000 .0304
+ .90 1.00 1.25 4.8471 .9000 .0243
+ .90 1.00 1.50 5.6165 .9000 .0203
+ .90 2.00 .50 3.5388 .9000 .0608
+ .90 2.00 .75 4.3083 .9000 .0405
+ .90 2.00 1.00 5.0777 .9000 .0304
+ .90 2.00 1.25 5.8471 .9000 .0243
+ .90 2.00 1.50 6.6165 .9000 .0203
+ .90 3.00 .50 4.5388 .9000 .0608
+ .90 3.00 .75 5.3083 .9000 .0405
+ .90 3.00 1.00 6.0777 .9000 .0304
+ .90 3.00 1.25 6.8471 .9000 .0243
+ .90 3.00 1.50 7.6165 .9000 .0203
+ .90 4.00 .50 5.5388 .9000 .0608
+ .90 4.00 .75 6.3083 .9000 .0405
+ .90 4.00 1.00 7.0777 .9000 .0304
+ .90 4.00 1.25 7.8471 .9000 .0243
+ .90 4.00 1.50 8.6165 .9000 .0203
+ .90 5.00 .50 6.5388 .9000 .0608
+ .90 5.00 .75 7.3083 .9000 .0405
+ .90 5.00 1.00 8.0777 .9000 .0304
+ .90 5.00 1.25 8.8471 .9000 .0243
+ .90 5.00 1.50 9.6165 .9000 .0203
+ .99 -5.00 .50 10.9103 .9900 .0006
+ .99 -5.00 .75 18.8654 .9900 .0004
+ .99 -5.00 1.00 26.8205 .9900 .0003
+ .99 -5.00 1.25 34.7756 .9900 .0003
+ .99 -5.00 1.50 42.7308 .9900 .0002
+ .99 -4.00 .50 11.9103 .9900 .0006
+ .99 -4.00 .75 19.8654 .9900 .0004
+ .99 -4.00 1.00 27.8205 .9900 .0003
+ .99 -4.00 1.25 35.7756 .9900 .0003
+ .99 -4.00 1.50 43.7308 .9900 .0002
+ .99 -3.00 .50 12.9103 .9900 .0006
+ .99 -3.00 .75 20.8654 .9900 .0004
+ .99 -3.00 1.00 28.8205 .9900 .0003
+ .99 -3.00 1.25 36.7756 .9900 .0003
+ .99 -3.00 1.50 44.7308 .9900 .0002
+ .99 -2.00 .50 13.9103 .9900 .0006
+ .99 -2.00 .75 21.8654 .9900 .0004
+ .99 -2.00 1.00 29.8205 .9900 .0003
+ .99 -2.00 1.25 37.7756 .9900 .0003
+ .99 -2.00 1.50 45.7308 .9900 .0002
+ .99 -1.00 .50 14.9103 .9900 .0006
+ .99 -1.00 .75 22.8654 .9900 .0004
+ .99 -1.00 1.00 30.8205 .9900 .0003
+ .99 -1.00 1.25 38.7756 .9900 .0003
+ .99 -1.00 1.50 46.7308 .9900 .0002
+ .99 .00 .50 15.9103 .9900 .0006
+ .99 .00 .75 23.8654 .9900 .0004
+ .99 .00 1.00 31.8205 .9900 .0003
+ .99 .00 1.25 39.7756 .9900 .0003
+ .99 .00 1.50 47.7308 .9900 .0002
+ .99 1.00 .50 16.9103 .9900 .0006
+ .99 1.00 .75 24.8654 .9900 .0004
+ .99 1.00 1.00 32.8205 .9900 .0003
+ .99 1.00 1.25 40.7756 .9900 .0003
+ .99 1.00 1.50 48.7308 .9900 .0002
+ .99 2.00 .50 17.9103 .9900 .0006
+ .99 2.00 .75 25.8654 .9900 .0004
+ .99 2.00 1.00 33.8205 .9900 .0003
+ .99 2.00 1.25 41.7756 .9900 .0003
+ .99 2.00 1.50 49.7308 .9900 .0002
+ .99 3.00 .50 18.9103 .9900 .0006
+ .99 3.00 .75 26.8654 .9900 .0004
+ .99 3.00 1.00 34.8205 .9900 .0003
+ .99 3.00 1.25 42.7756 .9900 .0003
+ .99 3.00 1.50 50.7308 .9900 .0002
+ .99 4.00 .50 19.9103 .9900 .0006
+ .99 4.00 .75 27.8654 .9900 .0004
+ .99 4.00 1.00 35.8205 .9900 .0003
+ .99 4.00 1.25 43.7756 .9900 .0003
+ .99 4.00 1.50 51.7308 .9900 .0002
+ .99 5.00 .50 20.9103 .9900 .0006
+ .99 5.00 .75 28.8654 .9900 .0004
+ .99 5.00 1.00 36.8205 .9900 .0003
+ .99 5.00 1.25 44.7756 .9900 .0003
+ .99 5.00 1.50 52.7308 .9900 .0002
+])
+
+RANDIST_CHECK([chisq], [df], [cdf pdf sig], [dnl
+ P df x cdf pdf sig
+ .01 1.00 .0002 .0100 31.8277 .9900
+ .01 2.00 .0201 .0100 .4950 .9900
+ .01 5.00 .5543 .0100 .0416 .9900
+ .01 10.00 2.5582 .0100 .0155 .9900
+ .10 1.00 .0158 .1000 3.1498 .9000
+ .10 2.00 .2107 .1000 .4500 .9000
+ .10 5.00 1.6103 .1000 .1215 .9000
+ .10 10.00 4.8652 .1000 .0641 .9000
+ .20 1.00 .0642 .2000 1.5250 .8000
+ .20 2.00 .4463 .2000 .4000 .8000
+ .20 5.00 2.3425 .2000 .1478 .8000
+ .20 10.00 6.1791 .2000 .0864 .8000
+ .30 1.00 .1485 .3000 .9613 .7000
+ .30 2.00 .7133 .3000 .3500 .7000
+ .30 5.00 2.9999 .3000 .1542 .7000
+ .30 10.00 7.2672 .3000 .0960 .7000
+ .40 1.00 .2750 .4000 .6630 .6000
+ .40 2.00 1.0217 .4000 .3000 .6000
+ .40 5.00 3.6555 .4000 .1494 .6000
+ .40 10.00 8.2955 .4000 .0974 .6000
+ .50 1.00 .4549 .5000 .4711 .5000
+ .50 2.00 1.3863 .5000 .2500 .5000
+ .50 5.00 4.3515 .5000 .1370 .5000
+ .50 10.00 9.3418 .5000 .0929 .5000
+ .60 1.00 .7083 .6000 .3326 .4000
+ .60 2.00 1.8326 .6000 .2000 .4000
+ .60 5.00 5.1319 .6000 .1188 .4000
+ .60 10.00 10.4732 .6000 .0833 .4000
+ .70 1.00 1.0742 .7000 .2250 .3000
+ .70 2.00 2.4079 .7000 .1500 .3000
+ .70 5.00 6.0644 .7000 .0957 .3000
+ .70 10.00 11.7807 .7000 .0694 .3000
+ .80 1.00 1.6424 .8000 .1369 .2000
+ .80 2.00 3.2189 .8000 .1000 .2000
+ .80 5.00 7.2893 .8000 .0684 .2000
+ .80 10.00 13.4420 .8000 .0512 .2000
+ .90 1.00 2.7055 .9000 .0627 .1000
+ .90 2.00 4.6052 .9000 .0500 .1000
+ .90 5.00 9.2364 .9000 .0368 .1000
+ .90 10.00 15.9872 .9000 .0287 .1000
+ .99 1.00 6.6349 .9900 .0056 .0100
+ .99 2.00 9.2103 .9900 .0050 .0100
+ .99 5.00 15.0863 .9900 .0041 .0100
+ .99 10.00 23.2093 .9900 .0034 .0100
+])
+
+RANDIST_CHECK([exp], [a], [cdf pdf], [dnl
+ P a x cdf pdf
+ .01 1.00 .0101 .0100 .9900
+ .01 2.00 .0050 .0100 1.9800
+ .01 5.00 .0020 .0100 4.9500
+ .01 10.00 .0010 .0100 9.9000
+ .10 1.00 .1054 .1000 .9000
+ .10 2.00 .0527 .1000 1.8000
+ .10 5.00 .0211 .1000 4.5000
+ .10 10.00 .0105 .1000 9.0000
+ .20 1.00 .2231 .2000 .8000
+ .20 2.00 .1116 .2000 1.6000
+ .20 5.00 .0446 .2000 4.0000
+ .20 10.00 .0223 .2000 8.0000
+ .30 1.00 .3567 .3000 .7000
+ .30 2.00 .1783 .3000 1.4000
+ .30 5.00 .0713 .3000 3.5000
+ .30 10.00 .0357 .3000 7.0000
+ .40 1.00 .5108 .4000 .6000
+ .40 2.00 .2554 .4000 1.2000
+ .40 5.00 .1022 .4000 3.0000
+ .40 10.00 .0511 .4000 6.0000
+ .50 1.00 .6931 .5000 .5000
+ .50 2.00 .3466 .5000 1.0000
+ .50 5.00 .1386 .5000 2.5000
+ .50 10.00 .0693 .5000 5.0000
+ .60 1.00 .9163 .6000 .4000
+ .60 2.00 .4581 .6000 .8000
+ .60 5.00 .1833 .6000 2.0000
+ .60 10.00 .0916 .6000 4.0000
+ .70 1.00 1.2040 .7000 .3000
+ .70 2.00 .6020 .7000 .6000
+ .70 5.00 .2408 .7000 1.5000
+ .70 10.00 .1204 .7000 3.0000
+ .80 1.00 1.6094 .8000 .2000
+ .80 2.00 .8047 .8000 .4000
+ .80 5.00 .3219 .8000 1.0000
+ .80 10.00 .1609 .8000 2.0000
+ .90 1.00 2.3026 .9000 .1000
+ .90 2.00 1.1513 .9000 .2000
+ .90 5.00 .4605 .9000 .5000
+ .90 10.00 .2303 .9000 1.0000
+ .99 1.00 4.6052 .9900 .0100
+ .99 2.00 2.3026 .9900 .0200
+ .99 5.00 .9210 .9900 .0500
+ .99 10.00 .4605 .9900 .1000
+])
+
+RANDIST_CHECK([f], [df1 df2], [cdf pdf], [dnl
+ P df1 df2 x cdf pdf
+ .01 1.00 1.00 .0002 .0100 20.2576
+ .01 1.00 2.00 .0002 .0100 24.9950
+ .01 1.00 5.00 .0002 .0100 28.8162
+ .01 1.00 10.00 .0002 .0100 30.2774
+ .01 2.00 1.00 .0102 .0100 .9703
+ .01 2.00 2.00 .0101 .0100 .9801
+ .01 2.00 5.00 .0101 .0100 .9860
+ .01 2.00 10.00 .0101 .0100 .9880
+ .01 5.00 1.00 .0615 .0100 .3238
+ .01 5.00 2.00 .0753 .0100 .2793
+ .01 5.00 5.00 .0912 .0100 .2417
+ .01 5.00 10.00 .0995 .0100 .2261
+ .01 10.00 1.00 .0996 .0100 .2704
+ .01 10.00 2.00 .1323 .0100 .2275
+ .01 10.00 5.00 .1774 .0100 .1907
+ .01 10.00 10.00 .2062 .0100 .1747
+ .10 1.00 1.00 .0251 .1000 1.9605
+ .10 1.00 2.00 .0202 .1000 2.4503
+ .10 1.00 5.00 .0175 .1000 2.8421
+ .10 1.00 10.00 .0166 .1000 2.9915
+ .10 2.00 1.00 .1173 .1000 .7290
+ .10 2.00 2.00 .1111 .1000 .8100
+ .10 2.00 5.00 .1076 .1000 .8629
+ .10 2.00 10.00 .1065 .1000 .8812
+ .10 5.00 1.00 .2463 .1000 .5220
+ .10 5.00 2.00 .2646 .1000 .5687
+ .10 5.00 5.00 .2896 .1000 .5934
+ .10 5.00 10.00 .3033 .1000 .6006
+ .10 10.00 1.00 .3044 .1000 .4857
+ .10 10.00 2.00 .3419 .1000 .5396
+ .10 10.00 5.00 .3966 .1000 .5816
+ .10 10.00 10.00 .4306 .1000 .6031
+ .20 1.00 1.00 .1056 .2000 .8861
+ .20 1.00 2.00 .0833 .2000 1.1520
+ .20 1.00 5.00 .0714 .2000 1.3616
+ .20 1.00 10.00 .0677 .2000 1.4410
+ .20 2.00 1.00 .2812 .2000 .5120
+ .20 2.00 2.00 .2500 .2000 .6400
+ .20 2.00 5.00 .2334 .2000 .7317
+ .20 2.00 10.00 .2282 .2000 .7651
+ .20 5.00 1.00 .4591 .2000 .4124
+ .20 5.00 2.00 .4426 .2000 .5362
+ .20 5.00 5.00 .4489 .2000 .6397
+ .20 5.00 10.00 .4563 .2000 .6842
+ .20 10.00 1.00 .5311 .2000 .3893
+ .20 10.00 2.00 .5267 .2000 .5225
+ .20 10.00 5.00 .5547 .2000 .6584
+ .20 10.00 10.00 .5775 .2000 .7343
+ .30 1.00 1.00 .2596 .3000 .4960
+ .30 1.00 2.00 .1978 .3000 .6901
+ .30 1.00 5.00 .1667 .3000 .8428
+ .30 1.00 10.00 .1573 .3000 .9004
+ .30 2.00 1.00 .5204 .3000 .3430
+ .30 2.00 2.00 .4286 .3000 .4900
+ .30 2.00 5.00 .3834 .3000 .6069
+ .30 2.00 10.00 .3697 .3000 .6518
+ .30 5.00 1.00 .7486 .3000 .2880
+ .30 5.00 2.00 .6466 .3000 .4433
+ .30 5.00 5.00 .6094 .3000 .5984
+ .30 5.00 10.00 .6026 .3000 .6729
+ .30 10.00 1.00 .8370 .3000 .2732
+ .30 10.00 2.00 .7346 .3000 .4370
+ .30 10.00 5.00 .7085 .3000 .6313
+ .30 10.00 10.00 .7112 .3000 .7487
+ .40 1.00 1.00 .5279 .4000 .2868
+ .40 1.00 2.00 .3810 .4000 .4410
+ .40 1.00 5.00 .3130 .4000 .5656
+ .40 1.00 10.00 .2933 .4000 .6129
+ .40 2.00 1.00 .8889 .4000 .2160
+ .40 2.00 2.00 .6667 .4000 .3600
+ .40 2.00 5.00 .5668 .4000 .4891
+ .40 2.00 10.00 .5378 .4000 .5417
+ .40 5.00 1.00 1.1826 .4000 .1847
+ .40 5.00 2.00 .9035 .4000 .3396
+ .40 5.00 5.00 .7879 .4000 .5199
+ .40 5.00 10.00 .7573 .4000 .6147
+ .40 10.00 1.00 1.2941 .4000 .1755
+ .40 10.00 2.00 .9944 .4000 .3368
+ .40 10.00 5.00 .8763 .4000 .5572
+ .40 10.00 10.00 .8484 .4000 .7011
+ .50 1.00 1.00 1.0000 .5000 .1592
+ .50 1.00 2.00 .6667 .5000 .2813
+ .50 1.00 5.00 .5281 .5000 .3865
+ .50 1.00 10.00 .4897 .5000 .4274
+ .50 2.00 1.00 1.5000 .5000 .1250
+ .50 2.00 2.00 1.0000 .5000 .2500
+ .50 2.00 5.00 .7988 .5000 .3789
+ .50 2.00 10.00 .7435 .5000 .4353
+ .50 5.00 1.00 1.8937 .5000 .1078
+ .50 5.00 2.00 1.2519 .5000 .2418
+ .50 5.00 5.00 1.0000 .5000 .4244
+ .50 5.00 10.00 .9319 .5000 .5295
+ .50 10.00 1.00 2.0419 .5000 .1025
+ .50 10.00 2.00 1.3450 .5000 .2406
+ .50 10.00 5.00 1.0730 .5000 .4599
+ .50 10.00 10.00 1.0000 .5000 .6152
+ .60 1.00 1.00 1.8944 .6000 .0799
+ .60 1.00 2.00 1.1250 .6000 .1707
+ .60 1.00 5.00 .8456 .6000 .2583
+ .60 1.00 10.00 .7727 .6000 .2939
+ .60 2.00 1.00 2.6250 .6000 .0640
+ .60 2.00 2.00 1.5000 .6000 .1600
+ .60 2.00 5.00 1.1067 .6000 .2773
+ .60 2.00 10.00 1.0056 .6000 .3330
+ .60 5.00 1.00 3.1953 .6000 .0554
+ .60 5.00 2.00 1.7644 .6000 .1571
+ .60 5.00 5.00 1.2692 .6000 .3227
+ .60 5.00 10.00 1.1412 .6000 .4278
+ .60 10.00 1.00 3.4100 .6000 .0527
+ .60 10.00 2.00 1.8593 .6000 .1567
+ .60 10.00 5.00 1.3204 .6000 .3526
+ .60 10.00 10.00 1.1787 .6000 .5047
+ .70 1.00 1.00 3.8518 .7000 .0334
+ .70 1.00 2.00 1.9216 .7000 .0929
+ .70 1.00 5.00 1.3358 .7000 .1614
+ .70 1.00 10.00 1.1948 .7000 .1914
+ .70 2.00 1.00 5.0556 .7000 .0270
+ .70 2.00 2.00 2.3333 .7000 .0900
+ .70 2.00 5.00 1.5466 .7000 .1853
+ .70 2.00 10.00 1.3613 .7000 .2358
+ .70 5.00 1.00 6.0006 .7000 .0234
+ .70 5.00 2.00 2.6084 .7000 .0892
+ .70 5.00 5.00 1.6410 .7000 .2222
+ .70 5.00 10.00 1.4114 .7000 .3169
+ .70 10.00 1.00 6.3579 .7000 .0223
+ .70 10.00 2.00 2.7049 .7000 .0891
+ .70 10.00 5.00 1.6595 .7000 .2443
+ .70 10.00 10.00 1.4061 .7000 .3787
+ .80 1.00 1.00 9.4721 .8000 .0099
+ .80 1.00 2.00 3.5556 .8000 .0405
+ .80 1.00 5.00 2.1782 .8000 .0869
+ .80 1.00 10.00 1.8829 .8000 .1098
+ .80 2.00 1.00 12.0000 .8000 .0080
+ .80 2.00 2.00 4.0000 .8000 .0400
+ .80 2.00 5.00 2.2591 .8000 .1051
+ .80 2.00 10.00 1.8986 .8000 .1450
+ .80 5.00 1.00 14.0084 .8000 .0069
+ .80 5.00 2.00 4.2844 .8000 .0399
+ .80 5.00 5.00 2.2275 .8000 .1289
+ .80 5.00 10.00 1.8027 .8000 .2026
+ .80 10.00 1.00 14.7719 .8000 .0066
+ .80 10.00 2.00 4.3822 .8000 .0398
+ .80 10.00 5.00 2.1914 .8000 .1425
+ .80 10.00 10.00 1.7316 .8000 .2449
+ .90 1.00 1.00 39.8635 .9000 .0012
+ .90 1.00 2.00 8.5263 .9000 .0100
+ .90 1.00 5.00 4.0604 .9000 .0317
+ .90 1.00 10.00 3.2850 .9000 .0450
+ .90 2.00 1.00 49.5000 .9000 .0010
+ .90 2.00 2.00 9.0000 .9000 .0100
+ .90 2.00 5.00 3.7797 .9000 .0398
+ .90 2.00 10.00 2.9245 .9000 .0631
+ .90 5.00 1.00 57.2401 .9000 .0009
+ .90 5.00 2.00 9.2926 .9000 .0100
+ .90 5.00 5.00 3.4530 .9000 .0498
+ .90 5.00 10.00 2.5216 .9000 .0915
+ .90 10.00 1.00 60.1950 .9000 .0008
+ .90 10.00 2.00 9.3916 .9000 .0100
+ .90 10.00 5.00 3.2974 .9000 .0552
+ .90 10.00 10.00 2.3226 .9000 .1118
+ .99 1.00 1.00 4052.1807 .9900 .0000
+ .99 1.00 2.00 98.5025 .9900 .0001
+ .99 1.00 5.00 16.2582 .9900 .0012
+ .99 1.00 10.00 10.0443 .9900 .0027
+ .99 2.00 1.00 4999.5000 .9900 .0000
+ .99 2.00 2.00 99.0000 .9900 .0001
+ .99 2.00 5.00 13.2739 .9900 .0016
+ .99 2.00 10.00 7.5594 .9900 .0040
+ .99 5.00 1.00 5763.6496 .9900 .0000
+ .99 5.00 2.00 99.2993 .9900 .0001
+ .99 5.00 5.00 10.9670 .9900 .0020
+ .99 5.00 10.00 5.6363 .9900 .0060
+ .99 10.00 1.00 6055.8467 .9900 .0000
+ .99 10.00 2.00 99.3992 .9900 .0001
+ .99 10.00 5.00 10.0510 .9900 .0022
+ .99 10.00 10.00 4.8491 .9900 .0074
+])
+
+RANDIST_CHECK([gamma], [a b], [cdf pdf], [dnl
+ P a b x cdf pdf
+ .01 .50 -10.00 . . .
+ .01 .50 -5.00 . . .
+ .01 .50 .00 . . .
+ .01 .50 5.00 .0000 .0100 318.2766
+ .01 .50 10.00 .0000 .0100 636.5531
+ .01 1.00 -10.00 . . .
+ .01 1.00 -5.00 . . .
+ .01 1.00 .00 . . .
+ .01 1.00 5.00 .0020 .0100 4.9500
+ .01 1.00 10.00 .0010 .0100 9.9000
+ .01 2.00 -10.00 . . .
+ .01 2.00 -5.00 . . .
+ .01 2.00 .00 . . .
+ .01 2.00 5.00 .0297 .0100 .6402
+ .01 2.00 10.00 .0149 .0100 1.2805
+ .01 5.00 -10.00 . . .
+ .01 5.00 -5.00 . . .
+ .01 5.00 .00 . . .
+ .01 5.00 5.00 .2558 .0100 .1552
+ .01 5.00 10.00 .1279 .0100 .3104
+ .10 .50 -10.00 . . .
+ .10 .50 -5.00 . . .
+ .10 .50 .00 . . .
+ .10 .50 5.00 .0016 .1000 31.4977
+ .10 .50 10.00 .0008 .1000 62.9955
+ .10 1.00 -10.00 . . .
+ .10 1.00 -5.00 . . .
+ .10 1.00 .00 . . .
+ .10 1.00 5.00 .0211 .1000 4.5000
+ .10 1.00 10.00 .0105 .1000 9.0000
+ .10 2.00 -10.00 . . .
+ .10 2.00 -5.00 . . .
+ .10 2.00 .00 . . .
+ .10 2.00 5.00 .1064 .1000 1.5623
+ .10 2.00 10.00 .0532 .1000 3.1246
+ .10 5.00 -10.00 . . .
+ .10 5.00 -5.00 . . .
+ .10 5.00 .00 . . .
+ .10 5.00 5.00 .4865 .1000 .6406
+ .10 5.00 10.00 .2433 .1000 1.2812
+ .20 .50 -10.00 . . .
+ .20 .50 -5.00 . . .
+ .20 .50 .00 . . .
+ .20 .50 5.00 .0064 .2000 15.2495
+ .20 .50 10.00 .0032 .2000 30.4991
+ .20 1.00 -10.00 . . .
+ .20 1.00 -5.00 . . .
+ .20 1.00 .00 . . .
+ .20 1.00 5.00 .0446 .2000 4.0000
+ .20 1.00 10.00 .0223 .2000 8.0000
+ .20 2.00 -10.00 . . .
+ .20 2.00 -5.00 . . .
+ .20 2.00 .00 . . .
+ .20 2.00 5.00 .1649 .2000 1.8075
+ .20 2.00 10.00 .0824 .2000 3.6150
+ .20 5.00 -10.00 . . .
+ .20 5.00 -5.00 . . .
+ .20 5.00 .00 . . .
+ .20 5.00 5.00 .6179 .2000 .8641
+ .20 5.00 10.00 .3090 .2000 1.7282
+ .30 .50 -10.00 . . .
+ .30 .50 -5.00 . . .
+ .30 .50 .00 . . .
+ .30 .50 5.00 .0148 .3000 9.6128
+ .30 .50 10.00 .0074 .3000 19.2255
+ .30 1.00 -10.00 . . .
+ .30 1.00 -5.00 . . .
+ .30 1.00 .00 . . .
+ .30 1.00 5.00 .0713 .3000 3.5000
+ .30 1.00 10.00 .0357 .3000 7.0000
+ .30 2.00 -10.00 . . .
+ .30 2.00 -5.00 . . .
+ .30 2.00 .00 . . .
+ .30 2.00 5.00 .2195 .3000 1.8312
+ .30 2.00 10.00 .1097 .3000 3.6625
+ .30 5.00 -10.00 . . .
+ .30 5.00 -5.00 . . .
+ .30 5.00 .00 . . .
+ .30 5.00 5.00 .7267 .3000 .9595
+ .30 5.00 10.00 .3634 .3000 1.9190
+ .40 .50 -10.00 . . .
+ .40 .50 -5.00 . . .
+ .40 .50 .00 . . .
+ .40 .50 5.00 .0275 .4000 6.6303
+ .40 .50 10.00 .0137 .4000 13.2606
+ .40 1.00 -10.00 . . .
+ .40 1.00 -5.00 . . .
+ .40 1.00 .00 . . .
+ .40 1.00 5.00 .1022 .4000 3.0000
+ .40 1.00 10.00 .0511 .4000 6.0000
+ .40 2.00 -10.00 . . .
+ .40 2.00 -5.00 . . .
+ .40 2.00 .00 . . .
+ .40 2.00 5.00 .2753 .4000 1.7376
+ .40 2.00 10.00 .1376 .4000 3.4752
+ .40 5.00 -10.00 . . .
+ .40 5.00 -5.00 . . .
+ .40 5.00 .00 . . .
+ .40 5.00 5.00 .8295 .4000 .9742
+ .40 5.00 10.00 .4148 .4000 1.9485
+ .50 .50 -10.00 . . .
+ .50 .50 -5.00 . . .
+ .50 .50 .00 . . .
+ .50 .50 5.00 .0455 .5000 4.7114
+ .50 .50 10.00 .0227 .5000 9.4227
+ .50 1.00 -10.00 . . .
+ .50 1.00 -5.00 . . .
+ .50 1.00 .00 . . .
+ .50 1.00 5.00 .1386 .5000 2.5000
+ .50 1.00 10.00 .0693 .5000 5.0000
+ .50 2.00 -10.00 . . .
+ .50 2.00 -5.00 . . .
+ .50 2.00 .00 . . .
+ .50 2.00 5.00 .3357 .5000 1.5666
+ .50 2.00 10.00 .1678 .5000 3.1332
+ .50 5.00 -10.00 . . .
+ .50 5.00 -5.00 . . .
+ .50 5.00 .00 . . .
+ .50 5.00 5.00 .9342 .5000 .9286
+ .50 5.00 10.00 .4671 .5000 1.8571
+ .60 .50 -10.00 . . .
+ .60 .50 -5.00 . . .
+ .60 .50 .00 . . .
+ .60 .50 5.00 .0708 .6000 3.3265
+ .60 .50 10.00 .0354 .6000 6.6529
+ .60 1.00 -10.00 . . .
+ .60 1.00 -5.00 . . .
+ .60 1.00 .00 . . .
+ .60 1.00 5.00 .1833 .6000 2.0000
+ .60 1.00 10.00 .0916 .6000 4.0000
+ .60 2.00 -10.00 . . .
+ .60 2.00 -5.00 . . .
+ .60 2.00 .00 . . .
+ .60 2.00 5.00 .4045 .6000 1.3383
+ .60 2.00 10.00 .2022 .6000 2.6765
+ .60 5.00 -10.00 . . .
+ .60 5.00 -5.00 . . .
+ .60 5.00 .00 . . .
+ .60 5.00 5.00 1.0473 .6000 .8332
+ .60 5.00 10.00 .5237 .6000 1.6663
+ .70 .50 -10.00 . . .
+ .70 .50 -5.00 . . .
+ .70 .50 .00 . . .
+ .70 .50 5.00 .1074 .7000 2.2496
+ .70 .50 10.00 .0537 .7000 4.4993
+ .70 1.00 -10.00 . . .
+ .70 1.00 -5.00 . . .
+ .70 1.00 .00 . . .
+ .70 1.00 5.00 .2408 .7000 1.5000
+ .70 1.00 10.00 .1204 .7000 3.0000
+ .70 2.00 -10.00 . . .
+ .70 2.00 -5.00 . . .
+ .70 2.00 .00 . . .
+ .70 2.00 5.00 .4878 .7000 1.0639
+ .70 2.00 10.00 .2439 .7000 2.1277
+ .70 5.00 -10.00 . . .
+ .70 5.00 -5.00 . . .
+ .70 5.00 .00 . . .
+ .70 5.00 5.00 1.1781 .7000 .6937
+ .70 5.00 10.00 .5890 .7000 1.3874
+ .80 .50 -10.00 . . .
+ .80 .50 -5.00 . . .
+ .80 .50 .00 . . .
+ .80 .50 5.00 .1642 .8000 1.3694
+ .80 .50 10.00 .0821 .8000 2.7388
+ .80 1.00 -10.00 . . .
+ .80 1.00 -5.00 . . .
+ .80 1.00 .00 . . .
+ .80 1.00 5.00 .3219 .8000 1.0000
+ .80 1.00 10.00 .1609 .8000 2.0000
+ .80 2.00 -10.00 . . .
+ .80 2.00 -5.00 . . .
+ .80 2.00 .00 . . .
+ .80 2.00 5.00 .5989 .8000 .7496
+ .80 2.00 10.00 .2994 .8000 1.4993
+ .80 5.00 -10.00 . . .
+ .80 5.00 -5.00 . . .
+ .80 5.00 .00 . . .
+ .80 5.00 5.00 1.3442 .8000 .5124
+ .80 5.00 10.00 .6721 .8000 1.0248
+ .90 .50 -10.00 . . .
+ .90 .50 -5.00 . . .
+ .90 .50 .00 . . .
+ .90 .50 5.00 .2706 .9000 .6270
+ .90 .50 10.00 .1353 .9000 1.2540
+ .90 1.00 -10.00 . . .
+ .90 1.00 -5.00 . . .
+ .90 1.00 .00 . . .
+ .90 1.00 5.00 .4605 .9000 .5000
+ .90 1.00 10.00 .2303 .9000 1.0000
+ .90 2.00 -10.00 . . .
+ .90 2.00 -5.00 . . .
+ .90 2.00 .00 . . .
+ .90 2.00 5.00 .7779 .9000 .3977
+ .90 2.00 10.00 .3890 .9000 .7955
+ .90 5.00 -10.00 . . .
+ .90 5.00 -5.00 . . .
+ .90 5.00 .00 . . .
+ .90 5.00 5.00 1.5987 .9000 .2872
+ .90 5.00 10.00 .7994 .9000 .5744
+ .99 .50 -10.00 . . .
+ .99 .50 -5.00 . . .
+ .99 .50 .00 . . .
+ .99 .50 5.00 .6635 .9900 .0561
+ .99 .50 10.00 .3317 .9900 .1123
+ .99 1.00 -10.00 . . .
+ .99 1.00 -5.00 . . .
+ .99 1.00 .00 . . .
+ .99 1.00 5.00 .9210 .9900 .0500
+ .99 1.00 10.00 .4605 .9900 .1000
+ .99 2.00 -10.00 . . .
+ .99 2.00 -5.00 . . .
+ .99 2.00 .00 . . .
+ .99 2.00 5.00 1.3277 .9900 .0435
+ .99 2.00 10.00 .6638 .9900 .0869
+ .99 5.00 -10.00 . . .
+ .99 5.00 -5.00 . . .
+ .99 5.00 .00 . . .
+ .99 5.00 5.00 2.3209 .9900 .0345
+ .99 5.00 10.00 1.1605 .9900 .0689
+])
+
+RANDIST_CHECK([laplace], [a b], [cdf pdf], [dnl
+ P a b x cdf pdf
+ .01 -10.00 .50 -11.9560 .0100 .0200
+ .01 -10.00 1.00 -13.9120 .0100 .0100
+ .01 -10.00 2.00 -17.8240 .0100 .0050
+ .01 -10.00 5.00 -29.5601 .0100 .0020
+ .01 -5.00 .50 -6.9560 .0100 .0200
+ .01 -5.00 1.00 -8.9120 .0100 .0100
+ .01 -5.00 2.00 -12.8240 .0100 .0050
+ .01 -5.00 5.00 -24.5601 .0100 .0020
+ .01 .00 .50 -1.9560 .0100 .0200
+ .01 .00 1.00 -3.9120 .0100 .0100
+ .01 .00 2.00 -7.8240 .0100 .0050
+ .01 .00 5.00 -19.5601 .0100 .0020
+ .01 5.00 .50 3.0440 .0100 .0200
+ .01 5.00 1.00 1.0880 .0100 .0100
+ .01 5.00 2.00 -2.8240 .0100 .0050
+ .01 5.00 5.00 -14.5601 .0100 .0020
+ .01 10.00 .50 8.0440 .0100 .0200
+ .01 10.00 1.00 6.0880 .0100 .0100
+ .01 10.00 2.00 2.1760 .0100 .0050
+ .01 10.00 5.00 -9.5601 .0100 .0020
+ .10 -10.00 .50 -10.8047 .1000 .2000
+ .10 -10.00 1.00 -11.6094 .1000 .1000
+ .10 -10.00 2.00 -13.2189 .1000 .0500
+ .10 -10.00 5.00 -18.0472 .1000 .0200
+ .10 -5.00 .50 -5.8047 .1000 .2000
+ .10 -5.00 1.00 -6.6094 .1000 .1000
+ .10 -5.00 2.00 -8.2189 .1000 .0500
+ .10 -5.00 5.00 -13.0472 .1000 .0200
+ .10 .00 .50 -.8047 .1000 .2000
+ .10 .00 1.00 -1.6094 .1000 .1000
+ .10 .00 2.00 -3.2189 .1000 .0500
+ .10 .00 5.00 -8.0472 .1000 .0200
+ .10 5.00 .50 4.1953 .1000 .2000
+ .10 5.00 1.00 3.3906 .1000 .1000
+ .10 5.00 2.00 1.7811 .1000 .0500
+ .10 5.00 5.00 -3.0472 .1000 .0200
+ .10 10.00 .50 9.1953 .1000 .2000
+ .10 10.00 1.00 8.3906 .1000 .1000
+ .10 10.00 2.00 6.7811 .1000 .0500
+ .10 10.00 5.00 1.9528 .1000 .0200
+ .20 -10.00 .50 -10.4581 .2000 .4000
+ .20 -10.00 1.00 -10.9163 .2000 .2000
+ .20 -10.00 2.00 -11.8326 .2000 .1000
+ .20 -10.00 5.00 -14.5815 .2000 .0400
+ .20 -5.00 .50 -5.4581 .2000 .4000
+ .20 -5.00 1.00 -5.9163 .2000 .2000
+ .20 -5.00 2.00 -6.8326 .2000 .1000
+ .20 -5.00 5.00 -9.5815 .2000 .0400
+ .20 .00 .50 -.4581 .2000 .4000
+ .20 .00 1.00 -.9163 .2000 .2000
+ .20 .00 2.00 -1.8326 .2000 .1000
+ .20 .00 5.00 -4.5815 .2000 .0400
+ .20 5.00 .50 4.5419 .2000 .4000
+ .20 5.00 1.00 4.0837 .2000 .2000
+ .20 5.00 2.00 3.1674 .2000 .1000
+ .20 5.00 5.00 .4185 .2000 .0400
+ .20 10.00 .50 9.5419 .2000 .4000
+ .20 10.00 1.00 9.0837 .2000 .2000
+ .20 10.00 2.00 8.1674 .2000 .1000
+ .20 10.00 5.00 5.4185 .2000 .0400
+ .30 -10.00 .50 -10.2554 .3000 .6000
+ .30 -10.00 1.00 -10.5108 .3000 .3000
+ .30 -10.00 2.00 -11.0217 .3000 .1500
+ .30 -10.00 5.00 -12.5541 .3000 .0600
+ .30 -5.00 .50 -5.2554 .3000 .6000
+ .30 -5.00 1.00 -5.5108 .3000 .3000
+ .30 -5.00 2.00 -6.0217 .3000 .1500
+ .30 -5.00 5.00 -7.5541 .3000 .0600
+ .30 .00 .50 -.2554 .3000 .6000
+ .30 .00 1.00 -.5108 .3000 .3000
+ .30 .00 2.00 -1.0217 .3000 .1500
+ .30 .00 5.00 -2.5541 .3000 .0600
+ .30 5.00 .50 4.7446 .3000 .6000
+ .30 5.00 1.00 4.4892 .3000 .3000
+ .30 5.00 2.00 3.9783 .3000 .1500
+ .30 5.00 5.00 2.4459 .3000 .0600
+ .30 10.00 .50 9.7446 .3000 .6000
+ .30 10.00 1.00 9.4892 .3000 .3000
+ .30 10.00 2.00 8.9783 .3000 .1500
+ .30 10.00 5.00 7.4459 .3000 .0600
+ .40 -10.00 .50 -10.1116 .4000 .8000
+ .40 -10.00 1.00 -10.2231 .4000 .4000
+ .40 -10.00 2.00 -10.4463 .4000 .2000
+ .40 -10.00 5.00 -11.1157 .4000 .0800
+ .40 -5.00 .50 -5.1116 .4000 .8000
+ .40 -5.00 1.00 -5.2231 .4000 .4000
+ .40 -5.00 2.00 -5.4463 .4000 .2000
+ .40 -5.00 5.00 -6.1157 .4000 .0800
+ .40 .00 .50 -.1116 .4000 .8000
+ .40 .00 1.00 -.2231 .4000 .4000
+ .40 .00 2.00 -.4463 .4000 .2000
+ .40 .00 5.00 -1.1157 .4000 .0800
+ .40 5.00 .50 4.8884 .4000 .8000
+ .40 5.00 1.00 4.7769 .4000 .4000
+ .40 5.00 2.00 4.5537 .4000 .2000
+ .40 5.00 5.00 3.8843 .4000 .0800
+ .40 10.00 .50 9.8884 .4000 .8000
+ .40 10.00 1.00 9.7769 .4000 .4000
+ .40 10.00 2.00 9.5537 .4000 .2000
+ .40 10.00 5.00 8.8843 .4000 .0800
+ .50 -10.00 .50 -10.0000 .5000 1.0000
+ .50 -10.00 1.00 -10.0000 .5000 .5000
+ .50 -10.00 2.00 -10.0000 .5000 .2500
+ .50 -10.00 5.00 -10.0000 .5000 .1000
+ .50 -5.00 .50 -5.0000 .5000 1.0000
+ .50 -5.00 1.00 -5.0000 .5000 .5000
+ .50 -5.00 2.00 -5.0000 .5000 .2500
+ .50 -5.00 5.00 -5.0000 .5000 .1000
+ .50 .00 .50 .0000 .5000 1.0000
+ .50 .00 1.00 .0000 .5000 .5000
+ .50 .00 2.00 .0000 .5000 .2500
+ .50 .00 5.00 .0000 .5000 .1000
+ .50 5.00 .50 5.0000 .5000 1.0000
+ .50 5.00 1.00 5.0000 .5000 .5000
+ .50 5.00 2.00 5.0000 .5000 .2500
+ .50 5.00 5.00 5.0000 .5000 .1000
+ .50 10.00 .50 10.0000 .5000 1.0000
+ .50 10.00 1.00 10.0000 .5000 .5000
+ .50 10.00 2.00 10.0000 .5000 .2500
+ .50 10.00 5.00 10.0000 .5000 .1000
+ .60 -10.00 .50 -9.8884 .6000 .8000
+ .60 -10.00 1.00 -9.7769 .6000 .4000
+ .60 -10.00 2.00 -9.5537 .6000 .2000
+ .60 -10.00 5.00 -8.8843 .6000 .0800
+ .60 -5.00 .50 -4.8884 .6000 .8000
+ .60 -5.00 1.00 -4.7769 .6000 .4000
+ .60 -5.00 2.00 -4.5537 .6000 .2000
+ .60 -5.00 5.00 -3.8843 .6000 .0800
+ .60 .00 .50 .1116 .6000 .8000
+ .60 .00 1.00 .2231 .6000 .4000
+ .60 .00 2.00 .4463 .6000 .2000
+ .60 .00 5.00 1.1157 .6000 .0800
+ .60 5.00 .50 5.1116 .6000 .8000
+ .60 5.00 1.00 5.2231 .6000 .4000
+ .60 5.00 2.00 5.4463 .6000 .2000
+ .60 5.00 5.00 6.1157 .6000 .0800
+ .60 10.00 .50 10.1116 .6000 .8000
+ .60 10.00 1.00 10.2231 .6000 .4000
+ .60 10.00 2.00 10.4463 .6000 .2000
+ .60 10.00 5.00 11.1157 .6000 .0800
+ .70 -10.00 .50 -9.7446 .7000 .6000
+ .70 -10.00 1.00 -9.4892 .7000 .3000
+ .70 -10.00 2.00 -8.9783 .7000 .1500
+ .70 -10.00 5.00 -7.4459 .7000 .0600
+ .70 -5.00 .50 -4.7446 .7000 .6000
+ .70 -5.00 1.00 -4.4892 .7000 .3000
+ .70 -5.00 2.00 -3.9783 .7000 .1500
+ .70 -5.00 5.00 -2.4459 .7000 .0600
+ .70 .00 .50 .2554 .7000 .6000
+ .70 .00 1.00 .5108 .7000 .3000
+ .70 .00 2.00 1.0217 .7000 .1500
+ .70 .00 5.00 2.5541 .7000 .0600
+ .70 5.00 .50 5.2554 .7000 .6000
+ .70 5.00 1.00 5.5108 .7000 .3000
+ .70 5.00 2.00 6.0217 .7000 .1500
+ .70 5.00 5.00 7.5541 .7000 .0600
+ .70 10.00 .50 10.2554 .7000 .6000
+ .70 10.00 1.00 10.5108 .7000 .3000
+ .70 10.00 2.00 11.0217 .7000 .1500
+ .70 10.00 5.00 12.5541 .7000 .0600
+ .80 -10.00 .50 -9.5419 .8000 .4000
+ .80 -10.00 1.00 -9.0837 .8000 .2000
+ .80 -10.00 2.00 -8.1674 .8000 .1000
+ .80 -10.00 5.00 -5.4185 .8000 .0400
+ .80 -5.00 .50 -4.5419 .8000 .4000
+ .80 -5.00 1.00 -4.0837 .8000 .2000
+ .80 -5.00 2.00 -3.1674 .8000 .1000
+ .80 -5.00 5.00 -.4185 .8000 .0400
+ .80 .00 .50 .4581 .8000 .4000
+ .80 .00 1.00 .9163 .8000 .2000
+ .80 .00 2.00 1.8326 .8000 .1000
+ .80 .00 5.00 4.5815 .8000 .0400
+ .80 5.00 .50 5.4581 .8000 .4000
+ .80 5.00 1.00 5.9163 .8000 .2000
+ .80 5.00 2.00 6.8326 .8000 .1000
+ .80 5.00 5.00 9.5815 .8000 .0400
+ .80 10.00 .50 10.4581 .8000 .4000
+ .80 10.00 1.00 10.9163 .8000 .2000
+ .80 10.00 2.00 11.8326 .8000 .1000
+ .80 10.00 5.00 14.5815 .8000 .0400
+ .90 -10.00 .50 -9.1953 .9000 .2000
+ .90 -10.00 1.00 -8.3906 .9000 .1000
+ .90 -10.00 2.00 -6.7811 .9000 .0500
+ .90 -10.00 5.00 -1.9528 .9000 .0200
+ .90 -5.00 .50 -4.1953 .9000 .2000
+ .90 -5.00 1.00 -3.3906 .9000 .1000
+ .90 -5.00 2.00 -1.7811 .9000 .0500
+ .90 -5.00 5.00 3.0472 .9000 .0200
+ .90 .00 .50 .8047 .9000 .2000
+ .90 .00 1.00 1.6094 .9000 .1000
+ .90 .00 2.00 3.2189 .9000 .0500
+ .90 .00 5.00 8.0472 .9000 .0200
+ .90 5.00 .50 5.8047 .9000 .2000
+ .90 5.00 1.00 6.6094 .9000 .1000
+ .90 5.00 2.00 8.2189 .9000 .0500
+ .90 5.00 5.00 13.0472 .9000 .0200
+ .90 10.00 .50 10.8047 .9000 .2000
+ .90 10.00 1.00 11.6094 .9000 .1000
+ .90 10.00 2.00 13.2189 .9000 .0500
+ .90 10.00 5.00 18.0472 .9000 .0200
+ .99 -10.00 .50 -8.0440 .9900 .0200
+ .99 -10.00 1.00 -6.0880 .9900 .0100
+ .99 -10.00 2.00 -2.1760 .9900 .0050
+ .99 -10.00 5.00 9.5601 .9900 .0020
+ .99 -5.00 .50 -3.0440 .9900 .0200
+ .99 -5.00 1.00 -1.0880 .9900 .0100
+ .99 -5.00 2.00 2.8240 .9900 .0050
+ .99 -5.00 5.00 14.5601 .9900 .0020
+ .99 .00 .50 1.9560 .9900 .0200
+ .99 .00 1.00 3.9120 .9900 .0100
+ .99 .00 2.00 7.8240 .9900 .0050
+ .99 .00 5.00 19.5601 .9900 .0020
+ .99 5.00 .50 6.9560 .9900 .0200
+ .99 5.00 1.00 8.9120 .9900 .0100
+ .99 5.00 2.00 12.8240 .9900 .0050
+ .99 5.00 5.00 24.5601 .9900 .0020
+ .99 10.00 .50 11.9560 .9900 .0200
+ .99 10.00 1.00 13.9120 .9900 .0100
+ .99 10.00 2.00 17.8240 .9900 .0050
+ .99 10.00 5.00 29.5601 .9900 .0020
+])
+
+RANDIST_CHECK([logistic], [a b], [cdf pdf], [dnl
+ P a b x cdf pdf
+ .01 -10.00 .50 -12.2976 .0100 .0198
+ .01 -10.00 1.00 -14.5951 .0100 .0099
+ .01 -10.00 2.00 -19.1902 .0100 .0049
+ .01 -10.00 5.00 -32.9756 .0100 .0020
+ .01 -5.00 .50 -7.2976 .0100 .0198
+ .01 -5.00 1.00 -9.5951 .0100 .0099
+ .01 -5.00 2.00 -14.1902 .0100 .0050
+ .01 -5.00 5.00 -27.9756 .0100 .0020
+ .01 .00 .50 -2.2976 .0100 .0198
+ .01 .00 1.00 -4.5951 .0100 .0099
+ .01 .00 2.00 -9.1902 .0100 .0050
+ .01 .00 5.00 -22.9756 .0100 .0020
+ .01 5.00 .50 2.7024 .0100 .0198
+ .01 5.00 1.00 .4049 .0100 .0099
+ .01 5.00 2.00 -4.1902 .0100 .0050
+ .01 5.00 5.00 -17.9756 .0100 .0020
+ .01 10.00 .50 7.7024 .0100 .0198
+ .01 10.00 1.00 5.4049 .0100 .0099
+ .01 10.00 2.00 .8098 .0100 .0050
+ .01 10.00 5.00 -12.9756 .0100 .0020
+ .10 -10.00 .50 -11.0986 .1000 .1800
+ .10 -10.00 1.00 -12.1972 .1000 .0900
+ .10 -10.00 2.00 -14.3944 .1000 .0450
+ .10 -10.00 5.00 -20.9861 .1000 .0180
+ .10 -5.00 .50 -6.0986 .1000 .1800
+ .10 -5.00 1.00 -7.1972 .1000 .0900
+ .10 -5.00 2.00 -9.3944 .1000 .0450
+ .10 -5.00 5.00 -15.9861 .1000 .0180
+ .10 .00 .50 -1.0986 .1000 .1800
+ .10 .00 1.00 -2.1972 .1000 .0900
+ .10 .00 2.00 -4.3944 .1000 .0450
+ .10 .00 5.00 -10.9861 .1000 .0180
+ .10 5.00 .50 3.9014 .1000 .1800
+ .10 5.00 1.00 2.8028 .1000 .0900
+ .10 5.00 2.00 .6056 .1000 .0450
+ .10 5.00 5.00 -5.9861 .1000 .0180
+ .10 10.00 .50 8.9014 .1000 .1800
+ .10 10.00 1.00 7.8028 .1000 .0900
+ .10 10.00 2.00 5.6056 .1000 .0450
+ .10 10.00 5.00 -.9861 .1000 .0180
+ .20 -10.00 .50 -10.6931 .2000 .3200
+ .20 -10.00 1.00 -11.3863 .2000 .1600
+ .20 -10.00 2.00 -12.7726 .2000 .0800
+ .20 -10.00 5.00 -16.9315 .2000 .0320
+ .20 -5.00 .50 -5.6931 .2000 .3200
+ .20 -5.00 1.00 -6.3863 .2000 .1600
+ .20 -5.00 2.00 -7.7726 .2000 .0800
+ .20 -5.00 5.00 -11.9315 .2000 .0320
+ .20 .00 .50 -.6931 .2000 .3200
+ .20 .00 1.00 -1.3863 .2000 .1600
+ .20 .00 2.00 -2.7726 .2000 .0800
+ .20 .00 5.00 -6.9315 .2000 .0320
+ .20 5.00 .50 4.3069 .2000 .3200
+ .20 5.00 1.00 3.6137 .2000 .1600
+ .20 5.00 2.00 2.2274 .2000 .0800
+ .20 5.00 5.00 -1.9315 .2000 .0320
+ .20 10.00 .50 9.3069 .2000 .3200
+ .20 10.00 1.00 8.6137 .2000 .1600
+ .20 10.00 2.00 7.2274 .2000 .0800
+ .20 10.00 5.00 3.0685 .2000 .0320
+ .30 -10.00 .50 -10.4236 .3000 .4200
+ .30 -10.00 1.00 -10.8473 .3000 .2100
+ .30 -10.00 2.00 -11.6946 .3000 .1050
+ .30 -10.00 5.00 -14.2365 .3000 .0420
+ .30 -5.00 .50 -5.4236 .3000 .4200
+ .30 -5.00 1.00 -5.8473 .3000 .2100
+ .30 -5.00 2.00 -6.6946 .3000 .1050
+ .30 -5.00 5.00 -9.2365 .3000 .0420
+ .30 .00 .50 -.4236 .3000 .4200
+ .30 .00 1.00 -.8473 .3000 .2100
+ .30 .00 2.00 -1.6946 .3000 .1050
+ .30 .00 5.00 -4.2365 .3000 .0420
+ .30 5.00 .50 4.5764 .3000 .4200
+ .30 5.00 1.00 4.1527 .3000 .2100
+ .30 5.00 2.00 3.3054 .3000 .1050
+ .30 5.00 5.00 .7635 .3000 .0420
+ .30 10.00 .50 9.5764 .3000 .4200
+ .30 10.00 1.00 9.1527 .3000 .2100
+ .30 10.00 2.00 8.3054 .3000 .1050
+ .30 10.00 5.00 5.7635 .3000 .0420
+ .40 -10.00 .50 -10.2027 .4000 .4800
+ .40 -10.00 1.00 -10.4055 .4000 .2400
+ .40 -10.00 2.00 -10.8109 .4000 .1200
+ .40 -10.00 5.00 -12.0273 .4000 .0480
+ .40 -5.00 .50 -5.2027 .4000 .4800
+ .40 -5.00 1.00 -5.4055 .4000 .2400
+ .40 -5.00 2.00 -5.8109 .4000 .1200
+ .40 -5.00 5.00 -7.0273 .4000 .0480
+ .40 .00 .50 -.2027 .4000 .4800
+ .40 .00 1.00 -.4055 .4000 .2400
+ .40 .00 2.00 -.8109 .4000 .1200
+ .40 .00 5.00 -2.0273 .4000 .0480
+ .40 5.00 .50 4.7973 .4000 .4800
+ .40 5.00 1.00 4.5945 .4000 .2400
+ .40 5.00 2.00 4.1891 .4000 .1200
+ .40 5.00 5.00 2.9727 .4000 .0480
+ .40 10.00 .50 9.7973 .4000 .4800
+ .40 10.00 1.00 9.5945 .4000 .2400
+ .40 10.00 2.00 9.1891 .4000 .1200
+ .40 10.00 5.00 7.9727 .4000 .0480
+ .50 -10.00 .50 -10.0000 .5000 .5000
+ .50 -10.00 1.00 -10.0000 .5000 .2500
+ .50 -10.00 2.00 -10.0000 .5000 .1250
+ .50 -10.00 5.00 -10.0000 .5000 .0500
+ .50 -5.00 .50 -5.0000 .5000 .5000
+ .50 -5.00 1.00 -5.0000 .5000 .2500
+ .50 -5.00 2.00 -5.0000 .5000 .1250
+ .50 -5.00 5.00 -5.0000 .5000 .0500
+ .50 .00 .50 .0000 .5000 .5000
+ .50 .00 1.00 .0000 .5000 .2500
+ .50 .00 2.00 .0000 .5000 .1250
+ .50 .00 5.00 .0000 .5000 .0500
+ .50 5.00 .50 5.0000 .5000 .5000
+ .50 5.00 1.00 5.0000 .5000 .2500
+ .50 5.00 2.00 5.0000 .5000 .1250
+ .50 5.00 5.00 5.0000 .5000 .0500
+ .50 10.00 .50 10.0000 .5000 .5000
+ .50 10.00 1.00 10.0000 .5000 .2500
+ .50 10.00 2.00 10.0000 .5000 .1250
+ .50 10.00 5.00 10.0000 .5000 .0500
+ .60 -10.00 .50 -9.7973 .6000 .4800
+ .60 -10.00 1.00 -9.5945 .6000 .2400
+ .60 -10.00 2.00 -9.1891 .6000 .1200
+ .60 -10.00 5.00 -7.9727 .6000 .0480
+ .60 -5.00 .50 -4.7973 .6000 .4800
+ .60 -5.00 1.00 -4.5945 .6000 .2400
+ .60 -5.00 2.00 -4.1891 .6000 .1200
+ .60 -5.00 5.00 -2.9727 .6000 .0480
+ .60 .00 .50 .2027 .6000 .4800
+ .60 .00 1.00 .4055 .6000 .2400
+ .60 .00 2.00 .8109 .6000 .1200
+ .60 .00 5.00 2.0273 .6000 .0480
+ .60 5.00 .50 5.2027 .6000 .4800
+ .60 5.00 1.00 5.4055 .6000 .2400
+ .60 5.00 2.00 5.8109 .6000 .1200
+ .60 5.00 5.00 7.0273 .6000 .0480
+ .60 10.00 .50 10.2027 .6000 .4800
+ .60 10.00 1.00 10.4055 .6000 .2400
+ .60 10.00 2.00 10.8109 .6000 .1200
+ .60 10.00 5.00 12.0273 .6000 .0480
+ .70 -10.00 .50 -9.5764 .7000 .4200
+ .70 -10.00 1.00 -9.1527 .7000 .2100
+ .70 -10.00 2.00 -8.3054 .7000 .1050
+ .70 -10.00 5.00 -5.7635 .7000 .0420
+ .70 -5.00 .50 -4.5764 .7000 .4200
+ .70 -5.00 1.00 -4.1527 .7000 .2100
+ .70 -5.00 2.00 -3.3054 .7000 .1050
+ .70 -5.00 5.00 -.7635 .7000 .0420
+ .70 .00 .50 .4236 .7000 .4200
+ .70 .00 1.00 .8473 .7000 .2100
+ .70 .00 2.00 1.6946 .7000 .1050
+ .70 .00 5.00 4.2365 .7000 .0420
+ .70 5.00 .50 5.4236 .7000 .4200
+ .70 5.00 1.00 5.8473 .7000 .2100
+ .70 5.00 2.00 6.6946 .7000 .1050
+ .70 5.00 5.00 9.2365 .7000 .0420
+ .70 10.00 .50 10.4236 .7000 .4200
+ .70 10.00 1.00 10.8473 .7000 .2100
+ .70 10.00 2.00 11.6946 .7000 .1050
+ .70 10.00 5.00 14.2365 .7000 .0420
+ .80 -10.00 .50 -9.3069 .8000 .3200
+ .80 -10.00 1.00 -8.6137 .8000 .1600
+ .80 -10.00 2.00 -7.2274 .8000 .0800
+ .80 -10.00 5.00 -3.0685 .8000 .0320
+ .80 -5.00 .50 -4.3069 .8000 .3200
+ .80 -5.00 1.00 -3.6137 .8000 .1600
+ .80 -5.00 2.00 -2.2274 .8000 .0800
+ .80 -5.00 5.00 1.9315 .8000 .0320
+ .80 .00 .50 .6931 .8000 .3200
+ .80 .00 1.00 1.3863 .8000 .1600
+ .80 .00 2.00 2.7726 .8000 .0800
+ .80 .00 5.00 6.9315 .8000 .0320
+ .80 5.00 .50 5.6931 .8000 .3200
+ .80 5.00 1.00 6.3863 .8000 .1600
+ .80 5.00 2.00 7.7726 .8000 .0800
+ .80 5.00 5.00 11.9315 .8000 .0320
+ .80 10.00 .50 10.6931 .8000 .3200
+ .80 10.00 1.00 11.3863 .8000 .1600
+ .80 10.00 2.00 12.7726 .8000 .0800
+ .80 10.00 5.00 16.9315 .8000 .0320
+ .90 -10.00 .50 -8.9014 .9000 .1800
+ .90 -10.00 1.00 -7.8028 .9000 .0900
+ .90 -10.00 2.00 -5.6056 .9000 .0450
+ .90 -10.00 5.00 .9861 .9000 .0180
+ .90 -5.00 .50 -3.9014 .9000 .1800
+ .90 -5.00 1.00 -2.8028 .9000 .0900
+ .90 -5.00 2.00 -.6056 .9000 .0450
+ .90 -5.00 5.00 5.9861 .9000 .0180
+ .90 .00 .50 1.0986 .9000 .1800
+ .90 .00 1.00 2.1972 .9000 .0900
+ .90 .00 2.00 4.3944 .9000 .0450
+ .90 .00 5.00 10.9861 .9000 .0180
+ .90 5.00 .50 6.0986 .9000 .1800
+ .90 5.00 1.00 7.1972 .9000 .0900
+ .90 5.00 2.00 9.3944 .9000 .0450
+ .90 5.00 5.00 15.9861 .9000 .0180
+ .90 10.00 .50 11.0986 .9000 .1800
+ .90 10.00 1.00 12.1972 .9000 .0900
+ .90 10.00 2.00 14.3944 .9000 .0450
+ .90 10.00 5.00 20.9861 .9000 .0180
+ .99 -10.00 .50 -7.7024 .9900 .0198
+ .99 -10.00 1.00 -5.4049 .9900 .0099
+ .99 -10.00 2.00 -.8098 .9900 .0050
+ .99 -10.00 5.00 12.9756 .9900 .0020
+ .99 -5.00 .50 -2.7024 .9900 .0198
+ .99 -5.00 1.00 -.4049 .9900 .0099
+ .99 -5.00 2.00 4.1902 .9900 .0050
+ .99 -5.00 5.00 17.9756 .9900 .0020
+ .99 .00 .50 2.2976 .9900 .0198
+ .99 .00 1.00 4.5951 .9900 .0099
+ .99 .00 2.00 9.1902 .9900 .0050
+ .99 .00 5.00 22.9756 .9900 .0020
+ .99 5.00 .50 7.2976 .9900 .0198
+ .99 5.00 1.00 9.5951 .9900 .0099
+ .99 5.00 2.00 14.1902 .9900 .0050
+ .99 5.00 5.00 27.9756 .9900 .0020
+ .99 10.00 .50 12.2976 .9900 .0198
+ .99 10.00 1.00 14.5951 .9900 .0099
+ .99 10.00 2.00 19.1902 .9900 .0050
+ .99 10.00 5.00 32.9756 .9900 .0020
+])
+
+RANDIST_CHECK([lnormal], [z s], [cdf pdf], [dnl
+ P z s x cdf pdf
+ .01 .50 .50 .1562 .0100 .3412
+ .01 .50 1.00 .0488 .0100 .5459
+ .01 .50 2.00 .0048 .0100 2.7949
+ .01 .50 5.00 .0000 .0100 1200.5834
+ .01 1.00 .50 .3125 .0100 .1706
+ .01 1.00 1.00 .0977 .0100 .2729
+ .01 1.00 2.00 .0095 .0100 1.3975
+ .01 1.00 5.00 .0000 .0100 600.2917
+ .01 2.00 .50 .6250 .0100 .0853
+ .01 2.00 1.00 .1953 .0100 .1365
+ .01 2.00 2.00 .0191 .0100 .6987
+ .01 2.00 5.00 .0000 .0100 300.1459
+ .01 5.00 .50 1.5625 .0100 .0341
+ .01 5.00 1.00 .4883 .0100 .0546
+ .01 5.00 2.00 .0477 .0100 .2795
+ .01 5.00 5.00 .0000 .0100 120.0583
+ .10 .50 .50 .2634 .1000 1.3324
+ .10 .50 1.00 .1388 .1000 1.2644
+ .10 .50 2.00 .0385 .1000 2.2773
+ .10 .50 5.00 .0008 .1000 42.5782
+ .10 1.00 .50 .5269 .1000 .6662
+ .10 1.00 1.00 .2776 .1000 .6322
+ .10 1.00 2.00 .0771 .1000 1.1386
+ .10 1.00 5.00 .0016 .1000 21.2891
+ .10 2.00 .50 1.0538 .1000 .3331
+ .10 2.00 1.00 .5552 .1000 .3161
+ .10 2.00 2.00 .1541 .1000 .5693
+ .10 2.00 5.00 .0033 .1000 10.6445
+ .10 5.00 .50 2.6344 .1000 .1332
+ .10 5.00 1.00 1.3880 .1000 .1264
+ .10 5.00 2.00 .3853 .1000 .2277
+ .10 5.00 5.00 .0082 .1000 4.2578
+ .20 .50 .50 .3283 .2000 1.7057
+ .20 .50 1.00 .2155 .2000 1.2991
+ .20 .50 2.00 .0929 .2000 1.5070
+ .20 .50 5.00 .0074 .2000 7.5286
+ .20 1.00 .50 .6565 .2000 .8529
+ .20 1.00 1.00 .4310 .2000 .6495
+ .20 1.00 2.00 .1858 .2000 .7535
+ .20 1.00 5.00 .0149 .2000 3.7643
+ .20 2.00 .50 1.3130 .2000 .4264
+ .20 2.00 1.00 .8620 .2000 .3248
+ .20 2.00 2.00 .3715 .2000 .3768
+ .20 2.00 5.00 .0297 .2000 1.8822
+ .20 5.00 .50 3.2826 .2000 .1706
+ .20 5.00 1.00 2.1551 .2000 .1299
+ .20 5.00 2.00 .9289 .2000 .1507
+ .20 5.00 5.00 .0744 .2000 .7529
+ .30 .50 .50 .3847 .3000 1.8077
+ .30 .50 1.00 .2960 .3000 1.1748
+ .30 .50 2.00 .1752 .3000 .9924
+ .30 .50 5.00 .0363 .3000 1.9142
+ .30 1.00 .50 .7694 .3000 .9039
+ .30 1.00 1.00 .5919 .3000 .5874
+ .30 1.00 2.00 .3504 .3000 .4962
+ .30 1.00 5.00 .0727 .3000 .9571
+ .30 2.00 .50 1.5387 .3000 .4519
+ .30 2.00 1.00 1.1838 .3000 .2937
+ .30 2.00 2.00 .7007 .3000 .2481
+ .30 2.00 5.00 .1453 .3000 .4785
+ .30 5.00 .50 3.8468 .3000 .1808
+ .30 5.00 1.00 2.9596 .3000 .1175
+ .30 5.00 2.00 1.7518 .3000 .0992
+ .30 5.00 5.00 .3633 .3000 .1914
+ .40 .50 .50 .4405 .4000 1.7541
+ .40 .50 1.00 .3881 .4000 .9955
+ .40 .50 2.00 .3012 .4000 .6412
+ .40 .50 5.00 .1409 .4000 .5485
+ .40 1.00 .50 .8810 .4000 .8770
+ .40 1.00 1.00 .7762 .4000 .4977
+ .40 1.00 2.00 .6025 .4000 .3206
+ .40 1.00 5.00 .2817 .4000 .2742
+ .40 2.00 .50 1.7620 .4000 .4385
+ .40 2.00 1.00 1.5524 .4000 .2489
+ .40 2.00 2.00 1.2050 .4000 .1603
+ .40 2.00 5.00 .5635 .4000 .1371
+ .40 5.00 .50 4.4051 .4000 .1754
+ .40 5.00 1.00 3.8810 .4000 .0995
+ .40 5.00 2.00 3.0124 .4000 .0641
+ .40 5.00 5.00 1.4087 .4000 .0548
+ .50 .50 .50 .5000 .5000 1.5958
+ .50 .50 1.00 .5000 .5000 .7979
+ .50 .50 2.00 .5000 .5000 .3989
+ .50 .50 5.00 .5000 .5000 .1596
+ .50 1.00 .50 1.0000 .5000 .7979
+ .50 1.00 1.00 1.0000 .5000 .3989
+ .50 1.00 2.00 1.0000 .5000 .1995
+ .50 1.00 5.00 1.0000 .5000 .0798
+ .50 2.00 .50 2.0000 .5000 .3989
+ .50 2.00 1.00 2.0000 .5000 .1995
+ .50 2.00 2.00 2.0000 .5000 .0997
+ .50 2.00 5.00 2.0000 .5000 .0399
+ .50 5.00 .50 5.0000 .5000 .1596
+ .50 5.00 1.00 5.0000 .5000 .0798
+ .50 5.00 2.00 5.0000 .5000 .0399
+ .50 5.00 5.00 5.0000 .5000 .0160
+ .60 .50 .50 .5675 .6000 1.3615
+ .60 .50 1.00 .6442 .6000 .5998
+ .60 .50 2.00 .8299 .6000 .2328
+ .60 .50 5.00 1.7746 .6000 .0435
+ .60 1.00 .50 1.1350 .6000 .6808
+ .60 1.00 1.00 1.2883 .6000 .2999
+ .60 1.00 2.00 1.6598 .6000 .1164
+ .60 1.00 5.00 3.5492 .6000 .0218
+ .60 2.00 .50 2.2701 .6000 .3404
+ .60 2.00 1.00 2.5767 .6000 .1499
+ .60 2.00 2.00 3.3196 .6000 .0582
+ .60 2.00 5.00 7.0985 .6000 .0109
+ .60 5.00 .50 5.6752 .6000 .1362
+ .60 5.00 1.00 6.4417 .6000 .0600
+ .60 5.00 2.00 8.2990 .6000 .0233
+ .60 5.00 5.00 17.7462 .6000 .0044
+ .70 .50 .50 .6499 .7000 1.0700
+ .70 .50 1.00 .8447 .7000 .4116
+ .70 .50 2.00 1.4271 .7000 .1218
+ .70 .50 5.00 6.8816 .7000 .0101
+ .70 1.00 .50 1.2998 .7000 .5350
+ .70 1.00 1.00 1.6894 .7000 .2058
+ .70 1.00 2.00 2.8542 .7000 .0609
+ .70 1.00 5.00 13.7633 .7000 .0051
+ .70 2.00 .50 2.5996 .7000 .2675
+ .70 2.00 1.00 3.3789 .7000 .1029
+ .70 2.00 2.00 5.7085 .7000 .0305
+ .70 2.00 5.00 27.5265 .7000 .0025
+ .70 5.00 .50 6.4989 .7000 .1070
+ .70 5.00 1.00 8.4472 .7000 .0412
+ .70 5.00 2.00 14.2711 .7000 .0122
+ .70 5.00 5.00 68.8163 .7000 .0010
+ .80 .50 .50 .7616 .8000 .7352
+ .80 .50 1.00 1.1601 .8000 .2413
+ .80 .50 2.00 2.6915 .8000 .0520
+ .80 .50 5.00 33.6145 .8000 .0017
+ .80 1.00 .50 1.5232 .8000 .3676
+ .80 1.00 1.00 2.3201 .8000 .1207
+ .80 1.00 2.00 5.3830 .8000 .0260
+ .80 1.00 5.00 67.2291 .8000 .0008
+ .80 2.00 .50 3.0464 .8000 .1838
+ .80 2.00 1.00 4.6403 .8000 .0603
+ .80 2.00 2.00 10.7660 .8000 .0130
+ .80 2.00 5.00 134.4582 .8000 .0004
+ .80 5.00 .50 7.6160 .8000 .0735
+ .80 5.00 1.00 11.6006 .8000 .0241
+ .80 5.00 2.00 26.9149 .8000 .0052
+ .80 5.00 5.00 336.1455 .8000 .0002
+ .90 .50 .50 .9490 .9000 .3699
+ .90 .50 1.00 1.8011 .9000 .0974
+ .90 .50 2.00 6.4880 .9000 .0135
+ .90 .50 5.00 303.2661 .9000 .0001
+ .90 1.00 .50 1.8980 .9000 .1849
+ .90 1.00 1.00 3.6022 .9000 .0487
+ .90 1.00 2.00 12.9760 .9000 .0068
+ .90 1.00 5.00 606.5322 .9000 .0001
+ .90 2.00 .50 3.7959 .9000 .0925
+ .90 2.00 1.00 7.2044 .9000 .0244
+ .90 2.00 2.00 25.9520 .9000 .0034
+ .90 2.00 5.00 1213.0644 .9000 .0000
+ .90 5.00 .50 9.4898 .9000 .0370
+ .90 5.00 1.00 18.0111 .9000 .0097
+ .90 5.00 2.00 64.8801 .9000 .0014
+ .90 5.00 5.00 3032.6610 .9000 .0000
+ .99 .50 .50 1.6000 .9900 .0333
+ .99 .50 1.00 5.1202 .9900 .0052
+ .99 .50 2.00 52.4337 .9900 .0003
+ .99 .50 5.00 56308.0163 .9900 .0000
+ .99 1.00 .50 3.2001 .9900 .0167
+ .99 1.00 1.00 10.2405 .9900 .0026
+ .99 1.00 2.00 104.8673 .9900 .0001
+ .99 1.00 5.00 112616.033 .9900 .0000
+ .99 2.00 .50 6.4001 .9900 .0083
+ .99 2.00 1.00 20.4809 .9900 .0013
+ .99 2.00 2.00 209.7346 .9900 .0001
+ .99 2.00 5.00 225232.065 .9900 .0000
+ .99 5.00 .50 16.0004 .9900 .0033
+ .99 5.00 1.00 51.2024 .9900 .0005
+ .99 5.00 2.00 524.3365 .9900 .0000
+ .99 5.00 5.00 563080.163 .9900 .0000
+])
+
+RANDIST_CHECK([normal], [u s], [cdf pdf], [dnl
+ P u s x cdf pdf
+ .01 -10.00 .50 -11.1632 .0100 .0533
+ .01 -10.00 1.00 -12.3263 .0100 .0267
+ .01 -10.00 2.00 -14.6527 .0100 .0133
+ .01 -10.00 5.00 -21.6317 .0100 .0053
+ .01 -5.00 .50 -6.1632 .0100 .0533
+ .01 -5.00 1.00 -7.3263 .0100 .0267
+ .01 -5.00 2.00 -9.6527 .0100 .0133
+ .01 -5.00 5.00 -16.6317 .0100 .0053
+ .01 .00 .50 -1.1632 .0100 .0533
+ .01 .00 1.00 -2.3263 .0100 .0267
+ .01 .00 2.00 -4.6527 .0100 .0133
+ .01 .00 5.00 -11.6317 .0100 .0053
+ .01 5.00 .50 3.8368 .0100 .0533
+ .01 5.00 1.00 2.6737 .0100 .0267
+ .01 5.00 2.00 .3473 .0100 .0133
+ .01 5.00 5.00 -6.6317 .0100 .0053
+ .01 10.00 .50 8.8368 .0100 .0533
+ .01 10.00 1.00 7.6737 .0100 .0267
+ .01 10.00 2.00 5.3473 .0100 .0133
+ .01 10.00 5.00 -1.6317 .0100 .0053
+ .10 -10.00 .50 -10.6408 .1000 .3510
+ .10 -10.00 1.00 -11.2816 .1000 .1755
+ .10 -10.00 2.00 -12.5631 .1000 .0877
+ .10 -10.00 5.00 -16.4078 .1000 .0351
+ .10 -5.00 .50 -5.6408 .1000 .3510
+ .10 -5.00 1.00 -6.2816 .1000 .1755
+ .10 -5.00 2.00 -7.5631 .1000 .0877
+ .10 -5.00 5.00 -11.4078 .1000 .0351
+ .10 .00 .50 -.6408 .1000 .3510
+ .10 .00 1.00 -1.2816 .1000 .1755
+ .10 .00 2.00 -2.5631 .1000 .0877
+ .10 .00 5.00 -6.4078 .1000 .0351
+ .10 5.00 .50 4.3592 .1000 .3510
+ .10 5.00 1.00 3.7184 .1000 .1755
+ .10 5.00 2.00 2.4369 .1000 .0877
+ .10 5.00 5.00 -1.4078 .1000 .0351
+ .10 10.00 .50 9.3592 .1000 .3510
+ .10 10.00 1.00 8.7184 .1000 .1755
+ .10 10.00 2.00 7.4369 .1000 .0877
+ .10 10.00 5.00 3.5922 .1000 .0351
+ .20 -10.00 .50 -10.4208 .2000 .5599
+ .20 -10.00 1.00 -10.8416 .2000 .2800
+ .20 -10.00 2.00 -11.6832 .2000 .1400
+ .20 -10.00 5.00 -14.2081 .2000 .0560
+ .20 -5.00 .50 -5.4208 .2000 .5599
+ .20 -5.00 1.00 -5.8416 .2000 .2800
+ .20 -5.00 2.00 -6.6832 .2000 .1400
+ .20 -5.00 5.00 -9.2081 .2000 .0560
+ .20 .00 .50 -.4208 .2000 .5599
+ .20 .00 1.00 -.8416 .2000 .2800
+ .20 .00 2.00 -1.6832 .2000 .1400
+ .20 .00 5.00 -4.2081 .2000 .0560
+ .20 5.00 .50 4.5792 .2000 .5599
+ .20 5.00 1.00 4.1584 .2000 .2800
+ .20 5.00 2.00 3.3168 .2000 .1400
+ .20 5.00 5.00 .7919 .2000 .0560
+ .20 10.00 .50 9.5792 .2000 .5599
+ .20 10.00 1.00 9.1584 .2000 .2800
+ .20 10.00 2.00 8.3168 .2000 .1400
+ .20 10.00 5.00 5.7919 .2000 .0560
+ .30 -10.00 .50 -10.2622 .3000 .6954
+ .30 -10.00 1.00 -10.5244 .3000 .3477
+ .30 -10.00 2.00 -11.0488 .3000 .1738
+ .30 -10.00 5.00 -12.6220 .3000 .0695
+ .30 -5.00 .50 -5.2622 .3000 .6954
+ .30 -5.00 1.00 -5.5244 .3000 .3477
+ .30 -5.00 2.00 -6.0488 .3000 .1738
+ .30 -5.00 5.00 -7.6220 .3000 .0695
+ .30 .00 .50 -.2622 .3000 .6954
+ .30 .00 1.00 -.5244 .3000 .3477
+ .30 .00 2.00 -1.0488 .3000 .1738
+ .30 .00 5.00 -2.6220 .3000 .0695
+ .30 5.00 .50 4.7378 .3000 .6954
+ .30 5.00 1.00 4.4756 .3000 .3477
+ .30 5.00 2.00 3.9512 .3000 .1738
+ .30 5.00 5.00 2.3780 .3000 .0695
+ .30 10.00 .50 9.7378 .3000 .6954
+ .30 10.00 1.00 9.4756 .3000 .3477
+ .30 10.00 2.00 8.9512 .3000 .1738
+ .30 10.00 5.00 7.3780 .3000 .0695
+ .40 -10.00 .50 -10.1267 .4000 .7727
+ .40 -10.00 1.00 -10.2533 .4000 .3863
+ .40 -10.00 2.00 -10.5067 .4000 .1932
+ .40 -10.00 5.00 -11.2667 .4000 .0773
+ .40 -5.00 .50 -5.1267 .4000 .7727
+ .40 -5.00 1.00 -5.2533 .4000 .3863
+ .40 -5.00 2.00 -5.5067 .4000 .1932
+ .40 -5.00 5.00 -6.2667 .4000 .0773
+ .40 .00 .50 -.1267 .4000 .7727
+ .40 .00 1.00 -.2533 .4000 .3863
+ .40 .00 2.00 -.5067 .4000 .1932
+ .40 .00 5.00 -1.2667 .4000 .0773
+ .40 5.00 .50 4.8733 .4000 .7727
+ .40 5.00 1.00 4.7467 .4000 .3863
+ .40 5.00 2.00 4.4933 .4000 .1932
+ .40 5.00 5.00 3.7333 .4000 .0773
+ .40 10.00 .50 9.8733 .4000 .7727
+ .40 10.00 1.00 9.7467 .4000 .3863
+ .40 10.00 2.00 9.4933 .4000 .1932
+ .40 10.00 5.00 8.7333 .4000 .0773
+ .50 -10.00 .50 -10.0000 .5000 .7979
+ .50 -10.00 1.00 -10.0000 .5000 .3989
+ .50 -10.00 2.00 -10.0000 .5000 .1995
+ .50 -10.00 5.00 -10.0000 .5000 .0798
+ .50 -5.00 .50 -5.0000 .5000 .7979
+ .50 -5.00 1.00 -5.0000 .5000 .3989
+ .50 -5.00 2.00 -5.0000 .5000 .1995
+ .50 -5.00 5.00 -5.0000 .5000 .0798
+ .50 .00 .50 .0000 .5000 .7979
+ .50 .00 1.00 .0000 .5000 .3989
+ .50 .00 2.00 .0000 .5000 .1995
+ .50 .00 5.00 .0000 .5000 .0798
+ .50 5.00 .50 5.0000 .5000 .7979
+ .50 5.00 1.00 5.0000 .5000 .3989
+ .50 5.00 2.00 5.0000 .5000 .1995
+ .50 5.00 5.00 5.0000 .5000 .0798
+ .50 10.00 .50 10.0000 .5000 .7979
+ .50 10.00 1.00 10.0000 .5000 .3989
+ .50 10.00 2.00 10.0000 .5000 .1995
+ .50 10.00 5.00 10.0000 .5000 .0798
+ .60 -10.00 .50 -9.8733 .6000 .7727
+ .60 -10.00 1.00 -9.7467 .6000 .3863
+ .60 -10.00 2.00 -9.4933 .6000 .1932
+ .60 -10.00 5.00 -8.7333 .6000 .0773
+ .60 -5.00 .50 -4.8733 .6000 .7727
+ .60 -5.00 1.00 -4.7467 .6000 .3863
+ .60 -5.00 2.00 -4.4933 .6000 .1932
+ .60 -5.00 5.00 -3.7333 .6000 .0773
+ .60 .00 .50 .1267 .6000 .7727
+ .60 .00 1.00 .2533 .6000 .3863
+ .60 .00 2.00 .5067 .6000 .1932
+ .60 .00 5.00 1.2667 .6000 .0773
+ .60 5.00 .50 5.1267 .6000 .7727
+ .60 5.00 1.00 5.2533 .6000 .3863
+ .60 5.00 2.00 5.5067 .6000 .1932
+ .60 5.00 5.00 6.2667 .6000 .0773
+ .60 10.00 .50 10.1267 .6000 .7727
+ .60 10.00 1.00 10.2533 .6000 .3863
+ .60 10.00 2.00 10.5067 .6000 .1932
+ .60 10.00 5.00 11.2667 .6000 .0773
+ .70 -10.00 .50 -9.7378 .7000 .6954
+ .70 -10.00 1.00 -9.4756 .7000 .3477
+ .70 -10.00 2.00 -8.9512 .7000 .1738
+ .70 -10.00 5.00 -7.3780 .7000 .0695
+ .70 -5.00 .50 -4.7378 .7000 .6954
+ .70 -5.00 1.00 -4.4756 .7000 .3477
+ .70 -5.00 2.00 -3.9512 .7000 .1738
+ .70 -5.00 5.00 -2.3780 .7000 .0695
+ .70 .00 .50 .2622 .7000 .6954
+ .70 .00 1.00 .5244 .7000 .3477
+ .70 .00 2.00 1.0488 .7000 .1738
+ .70 .00 5.00 2.6220 .7000 .0695
+ .70 5.00 .50 5.2622 .7000 .6954
+ .70 5.00 1.00 5.5244 .7000 .3477
+ .70 5.00 2.00 6.0488 .7000 .1738
+ .70 5.00 5.00 7.6220 .7000 .0695
+ .70 10.00 .50 10.2622 .7000 .6954
+ .70 10.00 1.00 10.5244 .7000 .3477
+ .70 10.00 2.00 11.0488 .7000 .1738
+ .70 10.00 5.00 12.6220 .7000 .0695
+ .80 -10.00 .50 -9.5792 .8000 .5599
+ .80 -10.00 1.00 -9.1584 .8000 .2800
+ .80 -10.00 2.00 -8.3168 .8000 .1400
+ .80 -10.00 5.00 -5.7919 .8000 .0560
+ .80 -5.00 .50 -4.5792 .8000 .5599
+ .80 -5.00 1.00 -4.1584 .8000 .2800
+ .80 -5.00 2.00 -3.3168 .8000 .1400
+ .80 -5.00 5.00 -.7919 .8000 .0560
+ .80 .00 .50 .4208 .8000 .5599
+ .80 .00 1.00 .8416 .8000 .2800
+ .80 .00 2.00 1.6832 .8000 .1400
+ .80 .00 5.00 4.2081 .8000 .0560
+ .80 5.00 .50 5.4208 .8000 .5599
+ .80 5.00 1.00 5.8416 .8000 .2800
+ .80 5.00 2.00 6.6832 .8000 .1400
+ .80 5.00 5.00 9.2081 .8000 .0560
+ .80 10.00 .50 10.4208 .8000 .5599
+ .80 10.00 1.00 10.8416 .8000 .2800
+ .80 10.00 2.00 11.6832 .8000 .1400
+ .80 10.00 5.00 14.2081 .8000 .0560
+ .90 -10.00 .50 -9.3592 .9000 .3510
+ .90 -10.00 1.00 -8.7184 .9000 .1755
+ .90 -10.00 2.00 -7.4369 .9000 .0877
+ .90 -10.00 5.00 -3.5922 .9000 .0351
+ .90 -5.00 .50 -4.3592 .9000 .3510
+ .90 -5.00 1.00 -3.7184 .9000 .1755
+ .90 -5.00 2.00 -2.4369 .9000 .0877
+ .90 -5.00 5.00 1.4078 .9000 .0351
+ .90 .00 .50 .6408 .9000 .3510
+ .90 .00 1.00 1.2816 .9000 .1755
+ .90 .00 2.00 2.5631 .9000 .0877
+ .90 .00 5.00 6.4078 .9000 .0351
+ .90 5.00 .50 5.6408 .9000 .3510
+ .90 5.00 1.00 6.2816 .9000 .1755
+ .90 5.00 2.00 7.5631 .9000 .0877
+ .90 5.00 5.00 11.4078 .9000 .0351
+ .90 10.00 .50 10.6408 .9000 .3510
+ .90 10.00 1.00 11.2816 .9000 .1755
+ .90 10.00 2.00 12.5631 .9000 .0877
+ .90 10.00 5.00 16.4078 .9000 .0351
+ .99 -10.00 .50 -8.8368 .9900 .0533
+ .99 -10.00 1.00 -7.6737 .9900 .0267
+ .99 -10.00 2.00 -5.3473 .9900 .0133
+ .99 -10.00 5.00 1.6317 .9900 .0053
+ .99 -5.00 .50 -3.8368 .9900 .0533
+ .99 -5.00 1.00 -2.6737 .9900 .0267
+ .99 -5.00 2.00 -.3473 .9900 .0133
+ .99 -5.00 5.00 6.6317 .9900 .0053
+ .99 .00 .50 1.1632 .9900 .0533
+ .99 .00 1.00 2.3263 .9900 .0267
+ .99 .00 2.00 4.6527 .9900 .0133
+ .99 .00 5.00 11.6317 .9900 .0053
+ .99 5.00 .50 6.1632 .9900 .0533
+ .99 5.00 1.00 7.3263 .9900 .0267
+ .99 5.00 2.00 9.6527 .9900 .0133
+ .99 5.00 5.00 16.6317 .9900 .0053
+ .99 10.00 .50 11.1632 .9900 .0533
+ .99 10.00 1.00 12.3263 .9900 .0267
+ .99 10.00 2.00 14.6527 .9900 .0133
+ .99 10.00 5.00 21.6317 .9900 .0053
+])
+
+RANDIST_CHECK([pareto], [a b], [cdf pdf], [dnl
+ P a b x cdf pdf
+ .01 1.00 1.00 1.0101 .0100 .9801
+ .01 1.00 2.00 1.0050 .0100 1.9701
+ .01 1.00 5.00 1.0020 .0100 4.9401
+ .01 1.00 10.00 1.0010 .0100 9.8901
+ .01 5.00 1.00 5.0505 .0100 .1960
+ .01 5.00 2.00 5.0252 .0100 .3940
+ .01 5.00 5.00 5.0101 .0100 .9880
+ .01 5.00 10.00 5.0050 .0100 1.9780
+ .01 10.00 1.00 10.1010 .0100 .0980
+ .01 10.00 2.00 10.0504 .0100 .1970
+ .01 10.00 5.00 10.0201 .0100 .4940
+ .01 10.00 10.00 10.0101 .0100 .9890
+ .10 1.00 1.00 1.1111 .1000 .8100
+ .10 1.00 2.00 1.0541 .1000 1.7076
+ .10 1.00 5.00 1.0213 .1000 4.4062
+ .10 1.00 10.00 1.0106 .1000 8.9057
+ .10 5.00 1.00 5.5556 .1000 .1620
+ .10 5.00 2.00 5.2705 .1000 .3415
+ .10 5.00 5.00 5.1065 .1000 .8812
+ .10 5.00 10.00 5.0530 .1000 1.7811
+ .10 10.00 1.00 11.1111 .1000 .0810
+ .10 10.00 2.00 10.5409 .1000 .1708
+ .10 10.00 5.00 10.2130 .1000 .4406
+ .10 10.00 10.00 10.1059 .1000 .8906
+ .20 1.00 1.00 1.2500 .2000 .6400
+ .20 1.00 2.00 1.1180 .2000 1.4311
+ .20 1.00 5.00 1.0456 .2000 3.8254
+ .20 1.00 10.00 1.0226 .2000 7.8235
+ .20 5.00 1.00 6.2500 .2000 .1280
+ .20 5.00 2.00 5.5902 .2000 .2862
+ .20 5.00 5.00 5.2282 .2000 .7651
+ .20 5.00 10.00 5.1128 .2000 1.5647
+ .20 10.00 1.00 12.5000 .2000 .0640
+ .20 10.00 2.00 11.1803 .2000 .1431
+ .20 10.00 5.00 10.4564 .2000 .3825
+ .20 10.00 10.00 10.2257 .2000 .7823
+ .30 1.00 1.00 1.4286 .3000 .4900
+ .30 1.00 2.00 1.1952 .3000 1.1713
+ .30 1.00 5.00 1.0739 .3000 3.2590
+ .30 1.00 10.00 1.0363 .3000 6.7547
+ .30 5.00 1.00 7.1429 .3000 .0980
+ .30 5.00 2.00 5.9761 .3000 .2343
+ .30 5.00 5.00 5.3697 .3000 .6518
+ .30 5.00 10.00 5.1816 .3000 1.3509
+ .30 10.00 1.00 14.2857 .3000 .0490
+ .30 10.00 2.00 11.9523 .3000 .1171
+ .30 10.00 5.00 10.7394 .3000 .3259
+ .30 10.00 10.00 10.3631 .3000 .6755
+ .40 1.00 1.00 1.6667 .4000 .3600
+ .40 1.00 2.00 1.2910 .4000 .9295
+ .40 1.00 5.00 1.1076 .4000 2.7086
+ .40 1.00 10.00 1.0524 .4000 5.7012
+ .40 5.00 1.00 8.3333 .4000 .0720
+ .40 5.00 2.00 6.4550 .4000 .1859
+ .40 5.00 5.00 5.5378 .4000 .5417
+ .40 5.00 10.00 5.2620 .4000 1.1402
+ .40 10.00 1.00 16.6667 .4000 .0360
+ .40 10.00 2.00 12.9099 .4000 .0930
+ .40 10.00 5.00 11.0757 .4000 .2709
+ .40 10.00 10.00 10.5241 .4000 .5701
+ .50 1.00 1.00 2.0000 .5000 .2500
+ .50 1.00 2.00 1.4142 .5000 .7071
+ .50 1.00 5.00 1.1487 .5000 2.1764
+ .50 1.00 10.00 1.0718 .5000 4.6652
+ .50 5.00 1.00 10.0000 .5000 .0500
+ .50 5.00 2.00 7.0711 .5000 .1414
+ .50 5.00 5.00 5.7435 .5000 .4353
+ .50 5.00 10.00 5.3589 .5000 .9330
+ .50 10.00 1.00 20.0000 .5000 .0250
+ .50 10.00 2.00 14.1421 .5000 .0707
+ .50 10.00 5.00 11.4870 .5000 .2176
+ .50 10.00 10.00 10.7177 .5000 .4665
+ .60 1.00 1.00 2.5000 .6000 .1600
+ .60 1.00 2.00 1.5811 .6000 .5060
+ .60 1.00 5.00 1.2011 .6000 1.6651
+ .60 1.00 10.00 1.0960 .6000 3.6498
+ .60 5.00 1.00 12.5000 .6000 .0320
+ .60 5.00 2.00 7.9057 .6000 .1012
+ .60 5.00 5.00 6.0056 .6000 .3330
+ .60 5.00 10.00 5.4798 .6000 .7300
+ .60 10.00 1.00 25.0000 .6000 .0160
+ .60 10.00 2.00 15.8114 .6000 .0506
+ .60 10.00 5.00 12.0112 .6000 .1665
+ .60 10.00 10.00 10.9596 .6000 .3650
+ .70 1.00 1.00 3.3333 .7000 .0900
+ .70 1.00 2.00 1.8257 .7000 .3286
+ .70 1.00 5.00 1.2723 .7000 1.1790
+ .70 1.00 10.00 1.1279 .7000 2.6597
+ .70 5.00 1.00 16.6667 .7000 .0180
+ .70 5.00 2.00 9.1287 .7000 .0657
+ .70 5.00 5.00 6.3613 .7000 .2358
+ .70 5.00 10.00 5.6397 .7000 .5319
+ .70 10.00 1.00 33.3333 .7000 .0090
+ .70 10.00 2.00 18.2574 .7000 .0329
+ .70 10.00 5.00 12.7226 .7000 .1179
+ .70 10.00 10.00 11.2794 .7000 .2660
+ .80 1.00 1.00 5.0000 .8000 .0400
+ .80 1.00 2.00 2.2361 .8000 .1789
+ .80 1.00 5.00 1.3797 .8000 .7248
+ .80 1.00 10.00 1.1746 .8000 1.7027
+ .80 5.00 1.00 25.0000 .8000 .0080
+ .80 5.00 2.00 11.1803 .8000 .0358
+ .80 5.00 5.00 6.8986 .8000 .1450
+ .80 5.00 10.00 5.8731 .8000 .3405
+ .80 10.00 1.00 50.0000 .8000 .0040
+ .80 10.00 2.00 22.3607 .8000 .0179
+ .80 10.00 5.00 13.7973 .8000 .0725
+ .80 10.00 10.00 11.7462 .8000 .1703
+ .90 1.00 1.00 10.0000 .9000 .0100
+ .90 1.00 2.00 3.1623 .9000 .0632
+ .90 1.00 5.00 1.5849 .9000 .3155
+ .90 1.00 10.00 1.2589 .9000 .7943
+ .90 5.00 1.00 50.0000 .9000 .0020
+ .90 5.00 2.00 15.8114 .9000 .0126
+ .90 5.00 5.00 7.9245 .9000 .0631
+ .90 5.00 10.00 6.2946 .9000 .1589
+ .90 10.00 1.00 100.0000 .9000 .0010
+ .90 10.00 2.00 31.6228 .9000 .0063
+ .90 10.00 5.00 15.8489 .9000 .0315
+ .90 10.00 10.00 12.5893 .9000 .0794
+ .99 1.00 1.00 100.0000 .9900 .0001
+ .99 1.00 2.00 10.0000 .9900 .0020
+ .99 1.00 5.00 2.5119 .9900 .0199
+ .99 1.00 10.00 1.5849 .9900 .0631
+ .99 5.00 1.00 500.0000 .9900 .0000
+ .99 5.00 2.00 50.0000 .9900 .0004
+ .99 5.00 5.00 12.5594 .9900 .0040
+ .99 5.00 10.00 7.9245 .9900 .0126
+ .99 10.00 1.00 1000.0000 .9900 .0000
+ .99 10.00 2.00 100.0000 .9900 .0002
+ .99 10.00 5.00 25.1189 .9900 .0020
+ .99 10.00 10.00 15.8489 .9900 .0063
+])
+
+RANDIST_CHECK([t], [df], [cdf pdf], [dnl
+ P df x cdf pdf
+ .01 1.00 -31.8205 .0100 .0003
+ .01 2.00 -6.9646 .0100 .0028
+ .01 3.00 -4.5407 .0100 .0059
+ .01 4.00 -3.7469 .0100 .0087
+ .01 5.00 -3.3649 .0100 .0109
+ .01 10.00 -2.7638 .0100 .0172
+ .01 30.00 -2.4573 .0100 .0231
+ .01 100.00 -2.3642 .0100 .0255
+ .10 1.00 -3.0777 .1000 .0304
+ .10 2.00 -1.8856 .1000 .0764
+ .10 3.00 -1.6377 .1000 .1025
+ .10 4.00 -1.5332 .1000 .1181
+ .10 5.00 -1.4759 .1000 .1283
+ .10 10.00 -1.3722 .1000 .1507
+ .10 30.00 -1.3104 .1000 .1670
+ .10 100.00 -1.2901 .1000 .1729
+ .20 1.00 -1.3764 .2000 .1100
+ .20 2.00 -1.0607 .2000 .1810
+ .20 3.00 -.9785 .2000 .2112
+ .20 4.00 -.9410 .2000 .2275
+ .20 5.00 -.9195 .2000 .2376
+ .20 10.00 -.8791 .2000 .2584
+ .20 30.00 -.8538 .2000 .2727
+ .20 100.00 -.8452 .2000 .2778
+ .30 1.00 -.7265 .3000 .2083
+ .30 2.00 -.6172 .3000 .2722
+ .30 3.00 -.5844 .3000 .2963
+ .30 4.00 -.5686 .3000 .3088
+ .30 5.00 -.5594 .3000 .3164
+ .30 10.00 -.5415 .3000 .3319
+ .30 30.00 -.5300 .3000 .3424
+ .30 100.00 -.5261 .3000 .3461
+ .40 1.00 -.3249 .4000 .2879
+ .40 2.00 -.2887 .4000 .3326
+ .40 3.00 -.2767 .4000 .3495
+ .40 4.00 -.2707 .4000 .3584
+ .40 5.00 -.2672 .4000 .3638
+ .40 10.00 -.2602 .4000 .3749
+ .40 30.00 -.2556 .4000 .3825
+ .40 100.00 -.2540 .4000 .3852
+ .50 1.00 .0000 .5000 .3183
+ .50 2.00 .0000 .5000 .3536
+ .50 3.00 .0000 .5000 .3676
+ .50 4.00 .0000 .5000 .3750
+ .50 5.00 .0000 .5000 .3796
+ .50 10.00 .0000 .5000 .3891
+ .50 30.00 .0000 .5000 .3956
+ .50 100.00 .0000 .5000 .3979
+ .60 1.00 .3249 .6000 .2879
+ .60 2.00 .2887 .6000 .3326
+ .60 3.00 .2767 .6000 .3495
+ .60 4.00 .2707 .6000 .3584
+ .60 5.00 .2672 .6000 .3638
+ .60 10.00 .2602 .6000 .3749
+ .60 30.00 .2556 .6000 .3825
+ .60 100.00 .2540 .6000 .3852
+ .70 1.00 .7265 .7000 .2083
+ .70 2.00 .6172 .7000 .2722
+ .70 3.00 .5844 .7000 .2963
+ .70 4.00 .5686 .7000 .3088
+ .70 5.00 .5594 .7000 .3164
+ .70 10.00 .5415 .7000 .3319
+ .70 30.00 .5300 .7000 .3424
+ .70 100.00 .5261 .7000 .3461
+ .80 1.00 1.3764 .8000 .1100
+ .80 2.00 1.0607 .8000 .1810
+ .80 3.00 .9785 .8000 .2112
+ .80 4.00 .9410 .8000 .2275
+ .80 5.00 .9195 .8000 .2376
+ .80 10.00 .8791 .8000 .2584
+ .80 30.00 .8538 .8000 .2727
+ .80 100.00 .8452 .8000 .2778
+ .90 1.00 3.0777 .9000 .0304
+ .90 2.00 1.8856 .9000 .0764
+ .90 3.00 1.6377 .9000 .1025
+ .90 4.00 1.5332 .9000 .1181
+ .90 5.00 1.4759 .9000 .1283
+ .90 10.00 1.3722 .9000 .1507
+ .90 30.00 1.3104 .9000 .1670
+ .90 100.00 1.2901 .9000 .1729
+ .99 1.00 31.8205 .9900 .0003
+ .99 2.00 6.9646 .9900 .0028
+ .99 3.00 4.5407 .9900 .0059
+ .99 4.00 3.7469 .9900 .0087
+ .99 5.00 3.3649 .9900 .0109
+ .99 10.00 2.7638 .9900 .0172
+ .99 30.00 2.4573 .9900 .0231
+ .99 100.00 2.3642 .9900 .0255
+])
+
+RANDIST_CHECK([uniform], [a b], [cdf pdf], [dnl
+ P a b x cdf pdf
+ .01 -10.00 40.00 -9.5000 .0100 .0200
+ .01 -10.00 41.00 -9.4900 .0100 .0196
+ .01 -10.00 45.00 -9.4500 .0100 .0182
+ .01 -10.00 50.00 -9.4000 .0100 .0167
+ .01 .00 40.00 .4000 .0100 .0250
+ .01 .00 41.00 .4100 .0100 .0244
+ .01 .00 45.00 .4500 .0100 .0222
+ .01 .00 50.00 .5000 .0100 .0200
+ .01 20.00 40.00 20.2000 .0100 .0500
+ .01 20.00 41.00 20.2100 .0100 .0476
+ .01 20.00 45.00 20.2500 .0100 .0400
+ .01 20.00 50.00 20.3000 .0100 .0333
+ .01 30.00 40.00 30.1000 .0100 .1000
+ .01 30.00 41.00 30.1100 .0100 .0909
+ .01 30.00 45.00 30.1500 .0100 .0667
+ .01 30.00 50.00 30.2000 .0100 .0500
+ .10 -10.00 40.00 -5.0000 .1000 .0200
+ .10 -10.00 41.00 -4.9000 .1000 .0196
+ .10 -10.00 45.00 -4.5000 .1000 .0182
+ .10 -10.00 50.00 -4.0000 .1000 .0167
+ .10 .00 40.00 4.0000 .1000 .0250
+ .10 .00 41.00 4.1000 .1000 .0244
+ .10 .00 45.00 4.5000 .1000 .0222
+ .10 .00 50.00 5.0000 .1000 .0200
+ .10 20.00 40.00 22.0000 .1000 .0500
+ .10 20.00 41.00 22.1000 .1000 .0476
+ .10 20.00 45.00 22.5000 .1000 .0400
+ .10 20.00 50.00 23.0000 .1000 .0333
+ .10 30.00 40.00 31.0000 .1000 .1000
+ .10 30.00 41.00 31.1000 .1000 .0909
+ .10 30.00 45.00 31.5000 .1000 .0667
+ .10 30.00 50.00 32.0000 .1000 .0500
+ .20 -10.00 40.00 .0000 .2000 .0200
+ .20 -10.00 41.00 .2000 .2000 .0196
+ .20 -10.00 45.00 1.0000 .2000 .0182
+ .20 -10.00 50.00 2.0000 .2000 .0167
+ .20 .00 40.00 8.0000 .2000 .0250
+ .20 .00 41.00 8.2000 .2000 .0244
+ .20 .00 45.00 9.0000 .2000 .0222
+ .20 .00 50.00 10.0000 .2000 .0200
+ .20 20.00 40.00 24.0000 .2000 .0500
+ .20 20.00 41.00 24.2000 .2000 .0476
+ .20 20.00 45.00 25.0000 .2000 .0400
+ .20 20.00 50.00 26.0000 .2000 .0333
+ .20 30.00 40.00 32.0000 .2000 .1000
+ .20 30.00 41.00 32.2000 .2000 .0909
+ .20 30.00 45.00 33.0000 .2000 .0667
+ .20 30.00 50.00 34.0000 .2000 .0500
+ .30 -10.00 40.00 5.0000 .3000 .0200
+ .30 -10.00 41.00 5.3000 .3000 .0196
+ .30 -10.00 45.00 6.5000 .3000 .0182
+ .30 -10.00 50.00 8.0000 .3000 .0167
+ .30 .00 40.00 12.0000 .3000 .0250
+ .30 .00 41.00 12.3000 .3000 .0244
+ .30 .00 45.00 13.5000 .3000 .0222
+ .30 .00 50.00 15.0000 .3000 .0200
+ .30 20.00 40.00 26.0000 .3000 .0500
+ .30 20.00 41.00 26.3000 .3000 .0476
+ .30 20.00 45.00 27.5000 .3000 .0400
+ .30 20.00 50.00 29.0000 .3000 .0333
+ .30 30.00 40.00 33.0000 .3000 .1000
+ .30 30.00 41.00 33.3000 .3000 .0909
+ .30 30.00 45.00 34.5000 .3000 .0667
+ .30 30.00 50.00 36.0000 .3000 .0500
+ .40 -10.00 40.00 10.0000 .4000 .0200
+ .40 -10.00 41.00 10.4000 .4000 .0196
+ .40 -10.00 45.00 12.0000 .4000 .0182
+ .40 -10.00 50.00 14.0000 .4000 .0167
+ .40 .00 40.00 16.0000 .4000 .0250
+ .40 .00 41.00 16.4000 .4000 .0244
+ .40 .00 45.00 18.0000 .4000 .0222
+ .40 .00 50.00 20.0000 .4000 .0200
+ .40 20.00 40.00 28.0000 .4000 .0500
+ .40 20.00 41.00 28.4000 .4000 .0476
+ .40 20.00 45.00 30.0000 .4000 .0400
+ .40 20.00 50.00 32.0000 .4000 .0333
+ .40 30.00 40.00 34.0000 .4000 .1000
+ .40 30.00 41.00 34.4000 .4000 .0909
+ .40 30.00 45.00 36.0000 .4000 .0667
+ .40 30.00 50.00 38.0000 .4000 .0500
+ .50 -10.00 40.00 15.0000 .5000 .0200
+ .50 -10.00 41.00 15.5000 .5000 .0196
+ .50 -10.00 45.00 17.5000 .5000 .0182
+ .50 -10.00 50.00 20.0000 .5000 .0167
+ .50 .00 40.00 20.0000 .5000 .0250
+ .50 .00 41.00 20.5000 .5000 .0244
+ .50 .00 45.00 22.5000 .5000 .0222
+ .50 .00 50.00 25.0000 .5000 .0200
+ .50 20.00 40.00 30.0000 .5000 .0500
+ .50 20.00 41.00 30.5000 .5000 .0476
+ .50 20.00 45.00 32.5000 .5000 .0400
+ .50 20.00 50.00 35.0000 .5000 .0333
+ .50 30.00 40.00 35.0000 .5000 .1000
+ .50 30.00 41.00 35.5000 .5000 .0909
+ .50 30.00 45.00 37.5000 .5000 .0667
+ .50 30.00 50.00 40.0000 .5000 .0500
+ .60 -10.00 40.00 20.0000 .6000 .0200
+ .60 -10.00 41.00 20.6000 .6000 .0196
+ .60 -10.00 45.00 23.0000 .6000 .0182
+ .60 -10.00 50.00 26.0000 .6000 .0167
+ .60 .00 40.00 24.0000 .6000 .0250
+ .60 .00 41.00 24.6000 .6000 .0244
+ .60 .00 45.00 27.0000 .6000 .0222
+ .60 .00 50.00 30.0000 .6000 .0200
+ .60 20.00 40.00 32.0000 .6000 .0500
+ .60 20.00 41.00 32.6000 .6000 .0476
+ .60 20.00 45.00 35.0000 .6000 .0400
+ .60 20.00 50.00 38.0000 .6000 .0333
+ .60 30.00 40.00 36.0000 .6000 .1000
+ .60 30.00 41.00 36.6000 .6000 .0909
+ .60 30.00 45.00 39.0000 .6000 .0667
+ .60 30.00 50.00 42.0000 .6000 .0500
+ .70 -10.00 40.00 25.0000 .7000 .0200
+ .70 -10.00 41.00 25.7000 .7000 .0196
+ .70 -10.00 45.00 28.5000 .7000 .0182
+ .70 -10.00 50.00 32.0000 .7000 .0167
+ .70 .00 40.00 28.0000 .7000 .0250
+ .70 .00 41.00 28.7000 .7000 .0244
+ .70 .00 45.00 31.5000 .7000 .0222
+ .70 .00 50.00 35.0000 .7000 .0200
+ .70 20.00 40.00 34.0000 .7000 .0500
+ .70 20.00 41.00 34.7000 .7000 .0476
+ .70 20.00 45.00 37.5000 .7000 .0400
+ .70 20.00 50.00 41.0000 .7000 .0333
+ .70 30.00 40.00 37.0000 .7000 .1000
+ .70 30.00 41.00 37.7000 .7000 .0909
+ .70 30.00 45.00 40.5000 .7000 .0667
+ .70 30.00 50.00 44.0000 .7000 .0500
+ .80 -10.00 40.00 30.0000 .8000 .0200
+ .80 -10.00 41.00 30.8000 .8000 .0196
+ .80 -10.00 45.00 34.0000 .8000 .0182
+ .80 -10.00 50.00 38.0000 .8000 .0167
+ .80 .00 40.00 32.0000 .8000 .0250
+ .80 .00 41.00 32.8000 .8000 .0244
+ .80 .00 45.00 36.0000 .8000 .0222
+ .80 .00 50.00 40.0000 .8000 .0200
+ .80 20.00 40.00 36.0000 .8000 .0500
+ .80 20.00 41.00 36.8000 .8000 .0476
+ .80 20.00 45.00 40.0000 .8000 .0400
+ .80 20.00 50.00 44.0000 .8000 .0333
+ .80 30.00 40.00 38.0000 .8000 .1000
+ .80 30.00 41.00 38.8000 .8000 .0909
+ .80 30.00 45.00 42.0000 .8000 .0667
+ .80 30.00 50.00 46.0000 .8000 .0500
+ .90 -10.00 40.00 35.0000 .9000 .0200
+ .90 -10.00 41.00 35.9000 .9000 .0196
+ .90 -10.00 45.00 39.5000 .9000 .0182
+ .90 -10.00 50.00 44.0000 .9000 .0167
+ .90 .00 40.00 36.0000 .9000 .0250
+ .90 .00 41.00 36.9000 .9000 .0244
+ .90 .00 45.00 40.5000 .9000 .0222
+ .90 .00 50.00 45.0000 .9000 .0200
+ .90 20.00 40.00 38.0000 .9000 .0500
+ .90 20.00 41.00 38.9000 .9000 .0476
+ .90 20.00 45.00 42.5000 .9000 .0400
+ .90 20.00 50.00 47.0000 .9000 .0333
+ .90 30.00 40.00 39.0000 .9000 .1000
+ .90 30.00 41.00 39.9000 .9000 .0909
+ .90 30.00 45.00 43.5000 .9000 .0667
+ .90 30.00 50.00 48.0000 .9000 .0500
+ .99 -10.00 40.00 39.5000 .9900 .0200
+ .99 -10.00 41.00 40.4900 .9900 .0196
+ .99 -10.00 45.00 44.4500 .9900 .0182
+ .99 -10.00 50.00 49.4000 .9900 .0167
+ .99 .00 40.00 39.6000 .9900 .0250
+ .99 .00 41.00 40.5900 .9900 .0244
+ .99 .00 45.00 44.5500 .9900 .0222
+ .99 .00 50.00 49.5000 .9900 .0200
+ .99 20.00 40.00 39.8000 .9900 .0500
+ .99 20.00 41.00 40.7900 .9900 .0476
+ .99 20.00 45.00 44.7500 .9900 .0400
+ .99 20.00 50.00 49.7000 .9900 .0333
+ .99 30.00 40.00 39.9000 .9900 .1000
+ .99 30.00 41.00 40.8900 .9900 .0909
+ .99 30.00 45.00 44.8500 .9900 .0667
+ .99 30.00 50.00 49.8000 .9900 .0500
+])
+
+RANDIST_CHECK([weibull], [a b], [cdf pdf], [dnl
+ P a b x cdf pdf
+ .01 .50 1.00 .0050 .0100 1.9800
+ .01 .50 2.00 .0501 .0100 .3970
+ .01 .50 4.00 .1583 .0100 .2514
+ .01 .50 8.00 .2813 .0100 .2829
+ .01 1.00 1.00 .0101 .0100 .9900
+ .01 1.00 2.00 .1003 .0100 .1985
+ .01 1.00 4.00 .3166 .0100 .1257
+ .01 1.00 8.00 .5627 .0100 .1415
+ .01 2.00 1.00 .0201 .0100 .4950
+ .01 2.00 2.00 .2005 .0100 .0992
+ .01 2.00 4.00 .6332 .0100 .0628
+ .01 2.00 8.00 1.1254 .0100 .0707
+ .01 5.00 1.00 .0503 .0100 .1980
+ .01 5.00 2.00 .5013 .0100 .0397
+ .01 5.00 4.00 1.5831 .0100 .0251
+ .01 5.00 8.00 2.8135 .0100 .0283
+ .10 .50 1.00 .0527 .1000 1.8000
+ .10 .50 2.00 .1623 .1000 1.1685
+ .10 .50 4.00 .2849 .1000 1.3315
+ .10 .50 8.00 .3774 .1000 2.0100
+ .10 1.00 1.00 .1054 .1000 .9000
+ .10 1.00 2.00 .3246 .1000 .5843
+ .10 1.00 4.00 .5697 .1000 .6657
+ .10 1.00 8.00 .7548 .1000 1.0050
+ .10 2.00 1.00 .2107 .1000 .4500
+ .10 2.00 2.00 .6492 .1000 .2921
+ .10 2.00 4.00 1.1395 .1000 .3329
+ .10 2.00 8.00 1.5096 .1000 .5025
+ .10 5.00 1.00 .5268 .1000 .1800
+ .10 5.00 2.00 1.6230 .1000 .1169
+ .10 5.00 4.00 2.8487 .1000 .1331
+ .10 5.00 8.00 3.7740 .1000 .2010
+ .20 .50 1.00 .1116 .2000 1.6000
+ .20 .50 2.00 .2362 .2000 1.5116
+ .20 .50 4.00 .3436 .2000 2.0779
+ .20 .50 8.00 .4145 .2000 3.4453
+ .20 1.00 1.00 .2231 .2000 .8000
+ .20 1.00 2.00 .4724 .2000 .7558
+ .20 1.00 4.00 .6873 .2000 1.0389
+ .20 1.00 8.00 .8290 .2000 1.7226
+ .20 2.00 1.00 .4463 .2000 .4000
+ .20 2.00 2.00 .9448 .2000 .3779
+ .20 2.00 4.00 1.3746 .2000 .5195
+ .20 2.00 8.00 1.6581 .2000 .8613
+ .20 5.00 1.00 1.1157 .2000 .1600
+ .20 5.00 2.00 2.3619 .2000 .1512
+ .20 5.00 4.00 3.4365 .2000 .2078
+ .20 5.00 8.00 4.1452 .2000 .3445
+ .30 .50 1.00 .1783 .3000 1.4000
+ .30 .50 2.00 .2986 .3000 1.6722
+ .30 .50 4.00 .3864 .3000 2.5846
+ .30 .50 8.00 .4395 .3000 4.5442
+ .30 1.00 1.00 .3567 .3000 .7000
+ .30 1.00 2.00 .5972 .3000 .8361
+ .30 1.00 4.00 .7728 .3000 1.2923
+ .30 1.00 8.00 .8791 .3000 2.2721
+ .30 2.00 1.00 .7133 .3000 .3500
+ .30 2.00 2.00 1.1944 .3000 .4181
+ .30 2.00 4.00 1.5456 .3000 .6461
+ .30 2.00 8.00 1.7582 .3000 1.1360
+ .30 5.00 1.00 1.7834 .3000 .1400
+ .30 5.00 2.00 2.9861 .3000 .1672
+ .30 5.00 4.00 3.8640 .3000 .2585
+ .30 5.00 8.00 4.3955 .3000 .4544
+ .40 .50 1.00 .2554 .4000 1.2000
+ .40 .50 2.00 .3574 .4000 1.7153
+ .40 .50 4.00 .4227 .4000 2.9003
+ .40 .50 8.00 .4597 .4000 5.3335
+ .40 1.00 1.00 .5108 .4000 .6000
+ .40 1.00 2.00 .7147 .4000 .8577
+ .40 1.00 4.00 .8454 .4000 1.4502
+ .40 1.00 8.00 .9195 .4000 2.6667
+ .40 2.00 1.00 1.0217 .4000 .3000
+ .40 2.00 2.00 1.4294 .4000 .4288
+ .40 2.00 4.00 1.6908 .4000 .7251
+ .40 2.00 8.00 1.8389 .4000 1.3334
+ .40 5.00 1.00 2.5541 .4000 .1200
+ .40 5.00 2.00 3.5736 .4000 .1715
+ .40 5.00 4.00 4.2271 .4000 .2900
+ .40 5.00 8.00 4.5973 .4000 .5333
+ .50 .50 1.00 .3466 .5000 1.0000
+ .50 .50 2.00 .4163 .5000 1.6651
+ .50 .50 4.00 .4562 .5000 3.0386
+ .50 .50 8.00 .4776 .5000 5.8051
+ .50 1.00 1.00 .6931 .5000 .5000
+ .50 1.00 2.00 .8326 .5000 .8326
+ .50 1.00 4.00 .9124 .5000 1.5193
+ .50 1.00 8.00 .9552 .5000 2.9026
+ .50 2.00 1.00 1.3863 .5000 .2500
+ .50 2.00 2.00 1.6651 .5000 .4163
+ .50 2.00 4.00 1.8249 .5000 .7597
+ .50 2.00 8.00 1.9104 .5000 1.4513
+ .50 5.00 1.00 3.4657 .5000 .1000
+ .50 5.00 2.00 4.1628 .5000 .1665
+ .50 5.00 4.00 4.5622 .5000 .3039
+ .50 5.00 8.00 4.7761 .5000 .5805
+ .60 .50 1.00 .4581 .6000 .8000
+ .60 .50 2.00 .4786 .6000 1.5316
+ .60 .50 4.00 .4892 .6000 2.9969
+ .60 .50 8.00 .4946 .6000 5.9287
+ .60 1.00 1.00 .9163 .6000 .4000
+ .60 1.00 2.00 .9572 .6000 .7658
+ .60 1.00 4.00 .9784 .6000 1.4985
+ .60 1.00 8.00 .9891 .6000 2.9643
+ .60 2.00 1.00 1.8326 .6000 .2000
+ .60 2.00 2.00 1.9145 .6000 .3829
+ .60 2.00 4.00 1.9568 .6000 .7492
+ .60 2.00 8.00 1.9783 .6000 1.4822
+ .60 5.00 1.00 4.5815 .6000 .0800
+ .60 5.00 2.00 4.7862 .6000 .1532
+ .60 5.00 4.00 4.8919 .6000 .2997
+ .60 5.00 8.00 4.9457 .6000 .5929
+ .70 .50 1.00 .6020 .7000 .6000
+ .70 .50 2.00 .5486 .7000 1.3167
+ .70 .50 4.00 .5238 .7000 2.7585
+ .70 .50 8.00 .5117 .7000 5.6465
+ .70 1.00 1.00 1.2040 .7000 .3000
+ .70 1.00 2.00 1.0973 .7000 .6584
+ .70 1.00 4.00 1.0475 .7000 1.3793
+ .70 1.00 8.00 1.0235 .7000 2.8233
+ .70 2.00 1.00 2.4079 .7000 .1500
+ .70 2.00 2.00 2.1945 .7000 .3292
+ .70 2.00 4.00 2.0950 .7000 .6896
+ .70 2.00 8.00 2.0469 .7000 1.4116
+ .70 5.00 1.00 6.0199 .7000 .0600
+ .70 5.00 2.00 5.4863 .7000 .1317
+ .70 5.00 4.00 5.2375 .7000 .2759
+ .70 5.00 8.00 5.1174 .7000 .5647
+ .80 .50 1.00 .8047 .8000 .4000
+ .80 .50 2.00 .6343 .8000 1.0149
+ .80 .50 4.00 .5632 .8000 2.2863
+ .80 .50 8.00 .5306 .8000 4.8528
+ .80 1.00 1.00 1.6094 .8000 .2000
+ .80 1.00 2.00 1.2686 .8000 .5075
+ .80 1.00 4.00 1.1263 .8000 1.1431
+ .80 1.00 8.00 1.0613 .8000 2.4264
+ .80 2.00 1.00 3.2189 .8000 .1000
+ .80 2.00 2.00 2.5373 .8000 .2537
+ .80 2.00 4.00 2.2527 .8000 .5716
+ .80 2.00 8.00 2.1226 .8000 1.2132
+ .80 5.00 1.00 8.0472 .8000 .0400
+ .80 5.00 2.00 6.3432 .8000 .1015
+ .80 5.00 4.00 5.6317 .8000 .2286
+ .80 5.00 8.00 5.3065 .8000 .4853
+ .90 .50 1.00 1.1513 .9000 .2000
+ .90 .50 2.00 .7587 .9000 .6070
+ .90 .50 4.00 .6159 .9000 1.4954
+ .90 .50 8.00 .5549 .9000 3.3194
+ .90 1.00 1.00 2.3026 .9000 .1000
+ .90 1.00 2.00 1.5174 .9000 .3035
+ .90 1.00 4.00 1.2318 .9000 .7477
+ .90 1.00 8.00 1.1099 .9000 1.6597
+ .90 2.00 1.00 4.6052 .9000 .0500
+ .90 2.00 2.00 3.0349 .9000 .1517
+ .90 2.00 4.00 2.4637 .9000 .3738
+ .90 2.00 8.00 2.2198 .9000 .8298
+ .90 5.00 1.00 11.5129 .9000 .0200
+ .90 5.00 2.00 7.5871 .9000 .0607
+ .90 5.00 4.00 6.1592 .9000 .1495
+ .90 5.00 8.00 5.5494 .9000 .3319
+ .99 .50 1.00 2.3026 .9900 .0200
+ .99 .50 2.00 1.0730 .9900 .0858
+ .99 .50 4.00 .7325 .9900 .2515
+ .99 .50 8.00 .6052 .9900 .6088
+ .99 1.00 1.00 4.6052 .9900 .0100
+ .99 1.00 2.00 2.1460 .9900 .0429
+ .99 1.00 4.00 1.4649 .9900 .1257
+ .99 1.00 8.00 1.2103 .9900 .3044
+ .99 2.00 1.00 9.2103 .9900 .0050
+ .99 2.00 2.00 4.2919 .9900 .0215
+ .99 2.00 4.00 2.9298 .9900 .0629
+ .99 2.00 8.00 2.4207 .9900 .1522
+ .99 5.00 1.00 23.0259 .9900 .0020
+ .99 5.00 2.00 10.7298 .9900 .0086
+ .99 5.00 4.00 7.3246 .9900 .0251
+ .99 5.00 8.00 6.0517 .9900 .0609
+])
--- /dev/null
+AT_BANNER([output drivers])
+
+m4_define([OUTPUT_UNWRITABLE_DIR],
+ [AT_SETUP([output $1 to unwritable directory])
+ mkdir unwritable
+ chmod u-w unwritable
+ AT_SKIP_IF([: > unwritable/test])
+ AT_DATA([unwritable.sps], [dnl
+data list /x 1.
+begin data.
+1
+2
+3
+end data.
+frequencies x/histogram.
+])
+ dnl PSPP will fail to create the output file. Currently this doesn't cause
+ dnl PSPP's exit status to be nonzero, although this is arguably incorrect.
+ dnl At any rate, PSPP should not crash.
+ AT_CHECK([cd unwritable && pspp -o pspp.$1 ../unwritable.sps], [0],
+ [ignore], [ignore])
+ AT_CLEANUP])
+
+OUTPUT_UNWRITABLE_DIR([csv])
+OUTPUT_UNWRITABLE_DIR([html])
+OUTPUT_UNWRITABLE_DIR([odt])
+OUTPUT_UNWRITABLE_DIR([pdf])
+OUTPUT_UNWRITABLE_DIR([txt])
--- /dev/null
+AT_BANNER([output -- paper sizes])
+
+AT_SETUP([letter default paper size])
+AT_DATA([paper-size.sps], [dnl
+debug paper size ''.
+])
+AT_CHECK([PAPERSIZE=letter pspp --testing-mode -O format=csv paper-size.sps],
+ [0], ["" => 8.5 x 11.0 in, 216 x 279 mm
+])
+AT_CLEANUP
+
+AT_SETUP([a4 default paper size])
+AT_DATA([paper-size.sps], [dnl
+debug paper size ''.
+])
+AT_CHECK([PAPERSIZE=a4 pspp --testing-mode -O format=csv paper-size.sps],
+ [0], ["" => 8.3 x 11.7 in, 210 x 297 mm
+])
+AT_CLEANUP
+
+AT_SETUP([specific paper sizes])
+AT_KEYWORDS([paper size])
+AT_DATA([paper-size.sps], [dnl
+debug paper size 'a4'.
+debug paper size 'letter'.
+debug paper size '10x14in'.
+debug paper size '210x297mm'.
+])
+AT_CHECK([PAPERSIZE=a4 pspp --testing-mode -O format=csv paper-size.sps],
+ [0], [dnl
+"a4" => 8.3 x 11.7 in, 210 x 297 mm
+"letter" => 8.5 x 11.0 in, 216 x 279 mm
+"10x14in" => 10.0 x 14.0 in, 254 x 356 mm
+"210x297mm" => 8.3 x 11.7 in, 210 x 297 mm
+])
+AT_CLEANUP
+
+++ /dev/null
-#!/bin/sh
-
-# This program tests paper size support.
-
-TEMPDIR=/tmp/pspp-tst-$$
-
-# ensure that top_builddir are absolute
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-top_builddir=`cd $top_builddir; pwd`
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-# ensure that top_srcdir is absolute
-top_srcdir=`cd $top_srcdir; pwd`
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- cd /
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="Create File 1"
-cat > paper-size.pspp <<EOF
-debug paper size ''.
-debug paper size 'a4'.
-debug paper size 'letter'.
-debug paper size '10x14in'.
-debug paper size '210x297mm'.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="Run pspp 1"
-PAPERSIZE=letter $SUPERVISOR $PSPP --testing-mode -o pspp.csv paper-size.pspp > paper-size.out
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare results"
-diff -b $TEMPDIR/paper-size.out - <<EOF
-"" => 8.5 x 11.0 in, 216 x 279 mm
-"a4" => 8.3 x 11.7 in, 210 x 297 mm
-"letter" => 8.5 x 11.0 in, 216 x 279 mm
-"10x14in" => 10.0 x 14.0 in, 254 x 356 mm
-"210x297mm" => 8.3 x 11.7 in, 210 x 297 mm
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-activity="Create File 2"
-cat > paper-size-2.pspp <<EOF
-debug paper size ''.
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="Run pspp 2"
-PAPERSIZE=a4 $SUPERVISOR $PSPP --testing-mode -o pspp.csv paper-size-2.pspp > paper-size-2.out
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare results 2"
-diff -b $TEMPDIR/paper-size-2.out - <<EOF
-"" => 8.3 x 11.7 in, 210 x 297 mm
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-pass;
print $PSPP::errstr, "\n";
]])
AT_CHECK([RUN_PERL_MODULE test.pl], [0],
- [[Error opening "no-such-file.sav" for reading as a system file: No such file or directory.
+ [[Error opening `no-such-file.sav' for reading as a system file: No such file or directory.
]],
[[Name "PSPP::errstr" used only once: possible typo at test.pl line 8.
]])
+++ /dev/null
-#!/bin/sh
-
-# This program tests ....
-
-TEMPDIR=/tmp/pspp-tst-$$
-TESTFILE=$TEMPDIR/`basename $0`.sps
-
-# ensure that top_srcdir and top_builddir are absolute
-if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
-if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
-top_srcdir=`cd $top_srcdir; pwd`
-top_builddir=`cd $top_builddir; pwd`
-
-PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT
-
-STAT_CONFIG_PATH=$top_srcdir/config
-export STAT_CONFIG_PATH
-
-LANG=C
-export LANG
-
-
-cleanup()
-{
- if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then
- echo "NOT cleaning $TEMPDIR"
- return ;
- fi
- rm -rf $TEMPDIR
-}
-
-
-fail()
-{
- echo $activity
- echo FAILED
- cleanup;
- exit 1;
-}
-
-
-no_result()
-{
- echo $activity
- echo NO RESULT;
- cleanup;
- exit 2;
-}
-
-pass()
-{
- cleanup;
- exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-put test set up here ...
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run program"
-$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-
-put test here
-
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
--- /dev/null
+AT_BANNER([PSPP terminal UI])
+
+AT_SETUP([nonexistent syntax file crash])
+AT_CHECK([pspp nonexistent], [1],
+ [error: Opening `nonexistent': No such file or directory.
+])
+AT_CLEANUP
+
+AT_SETUP([SIGTERM yields clean shutdown])
+AT_DATA([main.sps], [dnl
+INPUT PROGRAM.
+COMPUTE x = x + 1.
+DO IF x = 10000.
+END CASE.
+ELSE IF x < 0.
+END FILE.
+END IF.
+END INPUT PROGRAM.
+EXECUTE.
+])
+AT_CHECK([pspp main.sps & sleep 1; kill $!; wait $!], [143], [], [ignore])
+AT_CLEANUP
+
+AT_SETUP([SIGSEGV yields error report])
+AT_CHECK([[echo 'host command=["kill -SEGV $PPID"].' | pspp -O format=csv]],
+ [139], [], [stderr])
+AT_DATA([expout], [dnl
+******************************************************
+You have discovered a bug in PSPP. Please report this
+to bug-gnu-pspp@gnu.org. Please include this entire
+message, *plus* several lines of output just above it.
+For the best chance at having the bug fixed, also
+include the syntax file that triggered it and a sample
+of any data file used for input.
+proximate cause: Segmentation Violation
+])
+AT_CHECK([sed '/proximate/q' < stderr], [0], [expout])
+AT_CLEANUP
+++ /dev/null
- 18 1
- 19 7
- 20 26
- 21 76
- 22 57
- 23 58
- 24 38
- 25 38
- 26 30
- 27 21
- 28 23
- 29 24
- 30 23
- 31 14
- 32 21
- 33 21
- 34 14
- 35 14
- 36 17
- 37 11
- 38 16
- 39 14
- 40 15
- 41 14
- 42 14
- 43 8
- 44 15
- 45 10
- 46 12
- 47 13
- 48 13
- 49 5
- 50 5
- 51 3
- 52 7
- 53 6
- 54 2
- 55 2
- 56 2
- 57 3
- 58 1
- 59 3
- 61 1
- 62 3
- 63 1
- 64 1
- 65 2
- 70 1
- 78 1
- 79 1
- 80 1
- 94 1
\ No newline at end of file